KB-788F

10 — Acceptance Gates (Updated per Both Addenda) + REUSE/EXTEND/WRAP/NEW Classification

5 min read Revision 1
architectureacceptance-gatesreuse-extend-newclassificationdieu-322026-05-31

title: 10 — Acceptance Gates + REUSE/EXTEND/WRAP/NEW Classification date: 2026-05-31

10 — Acceptance Gates + Classification

Acceptance gates (PASS requires ALL — updated per both addenda)

# Gate Status this pack
G1 Orphan/phantom handling is designed (def + detection + pivot dim + severity + cleanup trigger + notification target) ✅ doc 01
G2 Accounting invariant is explicit (total = counted + orphan + phantom); failure ⇒ status=failed + notify, never hidden ✅ doc 02 (+ live FAILED rehearsal)
G3 count>1 ⇒ child-layer rule explicit; depth dynamic, not Nuxt-hardcoded ✅ doc 03
G4 Auto-label threshold/grouping explicit; 50 = MAXIMUM ceiling (per-species, may be smaller); classification starts before lists become unmanageable; reuse existing grouping immediately; pagination ≠ grouping ✅ doc 04
G5 Pin/ghim designed as PG-backed / governed / scoped / counted; not implemented unless approved ✅ doc 05 (propose-only)
G6 No frontend hardcode or disguised hardcode; every count pivot-backed or PIVOT_MISSING ✅ docs 08, 02 (Đ28 anti-example named)
G7 Notification/cleanup trigger contract exists (target + idempotency + signal-not-data) ✅ doc 06
G8 New-object scanner: unknown object ⇒ visible orphan/unmonitored + registration path ✅ doc 07
G9 Node/list contract updated with all addendum fields (incl. 8 threshold fields + pin_state + drill fields) ✅ doc 09
G10 Zero substrate mutation; no number authored ahead of a live result ✅ doc 11

Verdict: PASS (design + read-only rehearsal). One explicit carve-out: phantom = LAW_DEFINITION_GAP (operational definition proposed, article not enacted) and GHOST detection = DEFERRED (needs Qdrant read). Both surfaced, not hidden.

REUSE / EXTEND / WRAP / NEW classification (the build list)

Item Verdict Action
pivot_count/pivot_query/pivot_matrix, pivot_definitions, pivot_results, refresh fns, v_pivot_* views REUSE none
meta_catalog.orphan_count + fn_refresh_orphan_col/dot/species + check_registry_coverage REUSE route to surface
fn_birth_onboarding_full_scan (new-object scanner) REUSE route output to system_issues + surface
label_rules / taxonomy / taxonomy_facets / taxonomy_matrix / entity_labels / species_collection_map / collection_groups (Đ24) REUSE grouping source
system_issues + event_outbox/event_type_registry REUSE notification/cleanup channel
pivot_definitions.parent_code (drill hierarchy) EXTEND populate (data); add child-pivots for un-pivoted dimensions
meta_catalog EXTEND add phantom_count column (additive)
Frontend gap-math in health.get.ts / registries/index.vue WRAP→RETIRE replace with pivot reads + PIVOT_MISSING (Đ28)
v_count_integrity + fn_count_integrity_check() NEW propose (design-only)
PIV-500 grand-total, PIV-30x orphan/phantom/drift, PIV-31x label, PIV-32x pin NEW (PIVOT_MISSING) propose pivot_definitions INSERTs
registry_pin table NEW propose-only, born+registered+governed
Phantom law article NEW (LAW_DEFINITION_GAP) propose to council
  1. [RO] Stand up v_count_integrity as a read-only view rehearsal (BEGIN..ROLLBACK), validate it equals the doc-02 numbers over the leaf set.
  2. [Đ32 additive] phantom_count column + fn_count_integrity_check() + propose pivots PIV-500/30x/31x — rehearse, no COMMIT until ratified.
  3. [EXTEND] populate pivot_definitions.parent_code to wire drill-down; add child-pivots.
  4. [council] ratify the phantom definition + register count_integrity_* / label_missing issue types + event_type_registry rows.
  5. [Đ32] registry_pin birth (only if approved).
  6. [Đ28 cleanup] retire frontend gap-math; converge /knowledge/registries onto /knowledge/registries-pivot (keep pivot canonical, no 3rd page).
Back to Knowledge Hub knowledge/dev/reports/architecture/registries-pivot-os-agency-count-integrity-orphan-phantom-label-pin-rehearsal-2026-05-31/10-acceptance-gates-and-classification.md