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 |
Next macro (recommended order — all gated on human approval; additive, BEGIN..ROLLBACK first)
- [RO] Stand up
v_count_integrityas a read-only view rehearsal (BEGIN..ROLLBACK), validate it equals the doc-02 numbers over the leaf set. - [Đ32 additive]
phantom_countcolumn +fn_count_integrity_check()+ propose pivots PIV-500/30x/31x — rehearse, no COMMIT until ratified. - [EXTEND] populate
pivot_definitions.parent_codeto wire drill-down; add child-pivots. - [council] ratify the phantom definition + register
count_integrity_*/label_missingissue types +event_type_registryrows. - [Đ32]
registry_pinbirth (only if approved). - [Đ28 cleanup] retire frontend gap-math; converge
/knowledge/registriesonto/knowledge/registries-pivot(keep pivot canonical, no 3rd page).