Decisions owed (Sean)
Merge CH2-3 (CH2, mig 0053)done ✓ f69db7c
A5 oracle (Tests A–D) + invariant regressionCLOSED ✓ · caught skipped-suite, fixed same-line guard, 40/40 green on merged main
Mfg-UI read-site scopeRESOLVED ✓ [B] all stage-reads derive · schedule cut → own sprint
Scheduler — cutover-blocker or fast-follow?RESOLVED ✓ CUTOVER-BLOCKER · #1 mfg-lane successor
Scheduler Slice-1 oracle (EDD-on-install, no migration)approved ✓ · spawns after board
Gates in cutover slice?RESOLVED ✓ [A] gateless EDD ships at cutover · [B] slab+hold gates → Handover-window sprint
FILED follow-on: u_shape only composes at frozen centrepiece dimsCONS-2b + u_shape layout don't generalise · PRODUCT Q: does NCS quote U-benches at arbitrary dims? · not A5's bug
DEPLOY 0040→0053 — DONE ✓2026-06-29 · collision check empty · backup verified · 16 migs clean · schema up to date · only smoke-test pending
Deploy sequence (each gated)pre-flight (local pg_restore + 4 R2 creds) → collision check empty → backup exits 0 (sha256 verify) → railway up → smoke
0050 one-way (TenantRole OPERATOR enum)additive, not failure-prone · 0049 backfills before SET NOT NULL + re-points FKs before DELETE — SAFE · residual: collision check on (tenantId,lower(code))
FILED follow-on: dedup Brisbane-date parsercore owns pure parser · db/normalise imports it + parity test (drift risk)
Job.currentStageId — dual-write [A] vs derive [B]RESOLVED ✓ [B′] derived read-model · ADR owed
A4 follow-up: shape-catalogue-seed-rows.ts dup checkverify not 2nd catalogue source
FILED follow-on: snapshot unitType vs DB LogicalUnitTypereconcile · A4 contract quirk
FILED follow-on: job-stage sign-off still role-literalown sprint · not CH2-3
CH3 hosting [A] Cloudflare Pages + Accessselected ✓
Rotate exposed Cloudflare token + Clerk secret in Drive docbefore minting new
RECONCILE-R1 — filed or owed?gates §30
Draft ADR for B′ derived read-model (docs/adr/)owed · awaiting Sean go