KB-53E3

10 — Production Acceptance Suite (Branch I)

5 min read Revision 1
registries-pivotacceptancepivot-onlyno-hardcoderollbackread-only-rundieu28-test42026-05-31

title: 10 — Production Acceptance Suite (Branch I) date: 2026-05-31 status: suite defined; read-only portions RUN this macro

10 — Production Acceptance Suite (Branch I)

13 acceptance tests. Read-only portions executed live this run; mutation-dependent tests specified with their gate. RUN-NOW results below are from live reads / BEGIN..ROLLBACK.

# test method gate result this run
1 pivot-only count every leaf count traces to a pivot or PIVOT_MISSING; no JS sum now (read) PASS-by-design: 21/160 pivot-backed, 139 explicitly PIVOT_MISSING (none silently 0). PIV-500 returns a genuine SUM (engine-proven 2,007,261).
2 no-hardcode scan grep Nuxt source for reduce(+gap/record), Math.abs(gap), hardcoded CAT-*, localStorage pins now (read) legacy FAILS as expected (7 violations, doc 09/12); NEW surface must be 0. Gate is the cutover precondition.
3 drilldown parent_code graph flat→hierarchical, no dangling, count>1 drills, leaf→substrate now (rehearsal) PASS: 37 nodes → 24 roots / 6 parents / 13 children / 0 dangling / depth 3 / cycle-free; leaf PIV-007→dot_tools→CAT-006→File:dot/bin/.
4 orphan/phantom orphan leaf=0; phantom is source_model-aware candidate, never asserted now (read) PASS: orphan(leaf)=0, orphan(meta)=161, phantom_candidate=1 (CAT-006), classification source_model-aware.
5 label grouping ceiling PG-resolved; over-ceiling lists flagged; PIV-311 groups now (rehearsal) PASS: 28/160 over resolved ceiling; PIV-311 = 23 groups Σ726,864.
6 pin PG-backed, scoped, pivot-countable, soft-retire now (rehearsal) PASS: registry_pin 2 rows, scope CHECK valid, active flag; PIV-321 ready.
7 Directus/API read endpoints, no count math, GOOD pattern partial now PARTIAL: GOOD pattern pivot-query.get.ts live (200); 8 new endpoints specified (doc 06); registration gated RG7.
8 UI render-shell 100% counts pivot-traced, 0 client math, honest status (Đ28 Test-4) gated RG8 SPEC (doc 08); preview v2 demonstrates the contract.
9 legacy retirement parity gate + redirect + rollback before cutover gated RG9 PLAN (doc 09); not executed.
10 rollback every rehearsal leaves PRE==POST, idle_in_tx=0 now PASS: display_policy/registry_pin PRE 0 / POST 0, idle 0; six-object/parent_code/pivot bundle rollback-clean (Macro 1, re-confirmed 0 present).
11 performance/load smoke routes respond now (read) PASS w/ note: /knowledge/pivot fast; /knowledge/registries heavy (legacy, ~4.3s/603KB historically) — convergence onto pivot shell is the fix.
12 security/permission reads via read-only role / service token; no client PG creds; read-only API now (read) PASS: live reads as context_pack_readonly; apply-channel workflow_admin rehearsal-only; Directus reads server-side via service token (§0-AV).
13 notification contract count_integrity/phantom/pin/label events defined; idempotent now (read) PASS-by-design: event_type_registry has 0 such types (NEW needed); event_outbox + system_issues.coalesce_key give idempotent emit (doc 05). No event emitted.

Pivot-only acceptance assertion (the headline, Đ28 Test-4)

After RG1–RG8: a test must assert that for the rendered /knowledge/registries-pivot, every displayed number equals either a pivot_results value or is labelled PIVOT_MISSING, and that grep finds zero count math in the shell. Today the contract is proven (PIV-500 SUM, v_count_integrity, v_count_drift, PIV-311) and the legacy surface fails — which is exactly why convergence is needed.

Invariant-closure acceptance (do not assert an absolute)

count_integrity tests must assert closure (Σ drift gaps == leaf net_gap), NOT an absolute net_gap — net_gap fluctuates with the CAT-023 birth race (it moved within this session). Asserting an absolute would be flaky by design.

Verdict

Acceptance suite COMPLETE. All 13 tests defined; 8 ran read-only/rehearsal and PASS; the rest are correctly gated. No unsafe action taken.

Back to Knowledge Hub knowledge/dev/reports/architecture/registries-pivot-macro2-3-combined-ui-api-legacy-acceptance-2026-05-31/10-production-acceptance-suite.md