Session 253 — SPEC-033 §9 build-factory waves to done

Dates: 2026-07-22 → 2026-07-24 · Branch: feat/arch-canvas → promoted to master · Final suite: 28,232 passed / 0 failed / 0 errors / 0 skipped · 1431/1431 modules · kernel required + gRPC-verified · Goal (SPEC-023): ACHIEVED 10/10 exit criteria.

The arc

The session goal was to drive the staged SPEC-033 §9 build-factory waves (G: B4a/B5/B6/B21; H: B8/B9/B12/B2) to built+tested+committed, then promote feat/arch-canvas to master on a green gated suite. Orchestration pattern throughout: Opus designs/reviews/commits; Sonnet builders implement to settled briefs; every deliverable independently re-verified (parallel per-file pytest fan-out on isolated worker slots) before commit.

What shipped (all on origin/master, tip 8db55892)

Commit Deliverable
7fda4378 B4a.2 — namespace-qualified AST fact ids (ns::{namespace}::…) in the KG syncer; namespace-scoped _clear_project; promote() de-qualifies into trunk via map-projection, 8 edge specs recreated
a3564a66 B8 — decision phase + LLM design authority (factory/decision/), profiles pinned to claude-opus-4-8 / claude-sonnet-5 (user directive: latest models, never 4-6)
5723f7b7 B2 — AST≡design conformance engine (ADR-0008 "structure, not intent"), reusing fastpath classifier surface helpers unmodified
7163ec41 B9 — DAG scheduler: Kahn levels, real git worktree leases, strictly-serial merge queue + re-gate, level-parallel dispatch with duplication/staleness gates, ADR-0019 causal-watermark parking between levels; scripts/factory_pipeline.py CLI; 32 tests
6e22c438 kimi (fleet-executed): 7 incremental table directives on prolog/kg_relevance.pl — first real task through the new IRC bridge
c76ff0be KG enums gap #4 closed per the binding W3 RECONCILE ruling (plan + backlog updated; re-litigation forbidden)
8add3728 ADR-0004 ruling documented — one factory per Neo4j database (see Decisions)
3e5ae72d D13 graph-seam allowlist: promotion store + scheduler need raw neo4j.Bookmarks for ADR-0019 (seam doesn't expose causal bookmarks)
17ca5a9a KG canonical-key alignment (root cause of recurring conformance failures — see below)
a2edbffa Merge of kimi/fireflies-slice: Memgraph drop_chunk_label_schema() teardown hygiene (the 3,379-leaked-labels / 17-min boot-recovery fix), conflict-resolved against the 07-21 shared-fixture restructuring

B5, B6, B21, B12 landed earlier in the session window (wave G) with the same verify-then-commit discipline.

Debugging stories worth keeping

The B9 "flake" that wasn't a scheduler race

One parallel verification run failed test_pipeline_e2e_diamond_stale_duplicate_and_gc ("trunk missing C"). Diagnosis: worker slots must be gwN-format (ORCHESTRATA_WORKER_SLOT=gw1 → NEO4J_URI_GW1); bare 1/2/3 silently falls back to the primary Neo4j, so all three concurrent test files shared one graph — and PromotionStore.gc's graph-wide sweep deleted the sibling run's in-flight namespaces between build and promote. Not a scheduler bug; verified 2× green under correct isolation. This incident produced the ADR-0004 deployment-contract ruling.

Why the kg_schema conformance test kept failing

Every suite run re-created the drift the canonical migration removes:

All four Neo4j instances (.11 primary + .13/.14/.19 workers) were remediated via migrate_neo4j_canonical.py + sweep_test_pollution.py --apply and now conform. Run 3 of the suite then went green with zero modules needing even a solo retry.

Fleet delegation became real

The kimi IRC bot (kimi-irc-bot.service) gained a task-executor bridge: kimi: TASK <desc> [in <dir>] on #agents spawns kimi-cli --print --yolo, posts ack/done/FAILED + output tail; one task at a time, 30-min cap. Transport bug fixed on the way (_irc_send.py ignored argv and bare-nick 433 collisions silently dropped messages — senders now use ${IRC_NICK}-out). First fleet-executed task (Prolog tabling) was delivered, reviewed, and committed.

Decisions made this session

See decisions — ADR-024 (one-factory-per-Neo4j-DB) plus the enforcement of the standing rulings-are-binding rule (gap #4 enums).

Handed off