KB-745D
60 — SB-10 Candidate-State Rehearsal Results (keystone; no checked-forever boolean; group-grain Δrows=0; entry==exit PASS, 2026-06-01)
5 min read Revision 1
one-roof-governanceimplementation-indexgcossb-10keystonerehearsal-resultsbegin-rollbackgovernance-candidate-stateno-checked-foreverRR-4group-graindelta-rows-zerocanonical-null-correctiondecaying-tripleentry-equals-exitcommit-forbiddenpass2026-06-01
60 — SB-10 Candidate-State Rehearsal Results (R-4, GCOS keystone)
Doc: 60. Role: Live
BEGIN..ROLLBACKrehearsal result for SB-10 (candidate-state store; doc 40 — the convergence keystone). Executes doc 48 Prompt 3. Status: REHEARSAL RESULT — PASS. Author-modeBEGIN..ROLLBACK, ZERO COMMIT, no checked-forever boolean, entry==exit proven. Build NO-GO. Date: 2026-06-01. Entry baseline: doc 57. Depends on SB-12 (snapshot/ruleset) + SB-13 (cursors).
60.1 What was rehearsed
CREATE TABLE governance_candidate_state— GROUP grain (modeled onderived_objects_registry):(group_key, ruleset_version)PK,source_snapshot_ref bigint,candidate_verdict,input_quality_state(doc 33 10 states),recompute_status,dirty/dirty_reason/dirtied_at,scan_time,stale_after,evidence_fingerprint,last_run_id,audit_ref. Deliberately NOis_governed/checkedboolean (RR-4 / doc 40 checked-forever anti-pattern).CREATE TABLE governance_candidate_object— optional, materialized only for the 4 criteria (indep_authoritative|open_finding|exception|high_risk_write);(candidate_key, ruleset_version)PK.CREATE TABLE candidate_scan_run— run ledger.- Demo rows inserted (group/object/run) then rolled back.
60.2 Transcript (verbatim)
===R4_SB10_PRE=== s=(null) o=(null) r=(null)
BEGIN SET SET SET CREATE TABLE x3
===R4_INTX_TABLES_VISIBLE=== governance_candidate_state | governance_candidate_object | candidate_scan_run
===R4_PROVE_NO_CHECKED_FOREVER_BOOLEAN_EXPECT_0_ROWS=== (0 rows)
===R4_CANDIDATE_KEY_COALESCE_SAMPLE===
id | candidate_key
----+-------------------
1 | dot_tools:DOT-004
2 | dot_tools:DOT-005
3 | dot_tools:DOT-006
===R4_GROUP_GRAIN_DELTA0_MANY_CHILDREN_PER_GROUP===
collection_name | children
--------------------+----------
registry_changelog | 20043
entity_labels | 6944
universal_edges | 2375
INSERT 0 1 x3
===R4_INTX_ROWS=== cs=1 | co=1 | cr=1
===R4_VERDICT_DECAYING_TRIPLE_clean_now===
group_key=grp:rehearsal:demo | ruleset_version=gov-rs-rehearsal01 | scan_time=2026-06-01 11:14:27+00 | stale_after=2026-06-08 11:14:27+00 | clean_now=t
ROLLBACK
===R4_SB10_POST=== s=(null) o=(null) r=(null)
Separate-session query_pg after ROLLBACK: all 3 candidate tables NULL.
60.3 The keystone proofs
- No checked-forever boolean (RR-4): grep of
information_schema.columnsfor{is_governed, checked, is_checked, governed, checked_forever}ongovernance_candidate_statereturned 0 rows. The verdict is the decaying triple(source_snapshot, ruleset_version, scan_time); "clean" is computed asrecompute_status='ok' AND NOT dirty AND now() < stale_after(rehearsal showedclean_now=t).dirtyis a transient invalidation flag, not a permanent "checked" memory. - canonical_address NULL-correction (doc 45 C-2):
candidate_key = COALESCE(canonical_address, collection_name||':'||entity_code)resolved todot_tools:DOT-004…(since canonical is NULL in all rows) — confirms the binding key form, notcanonical_address. - Group-grain Δrows=0: a single group (e.g.
registry_changelog) covers 20,043 children;entity_labels6,944;universal_edges2,375. The store holds one group row per(group_key, ruleset_version), never one row per child ⇒ Δtotal rows = 0 at 10^6 scale. Object table materializes only for the 4 criteria. - FK-semantics to SB-12:
ruleset_version+source_snapshot_refcolumns present (hard FK proven in the combined rehearsal, doc 62).
60.4 Entry==Exit
| Object | Pre | In-tx | Post (sep. session) | Equal? |
|---|---|---|---|---|
governance_candidate_state |
NULL | present (1 row) | NULL | ✅ |
governance_candidate_object |
NULL | present (1 row) | NULL | ✅ |
candidate_scan_run |
NULL | present (1 row) | NULL | ✅ |
birth_registry |
unchanged | read-only | unchanged | ✅ |
60.5 Verdict
R-4 SB-10 = PASS. The keystone's three anti-anti-patterns are proven live: no checked-forever boolean, group-grain (Δrows=0), correct candidate-key under the NULL-canonical correction. Reversible/greenfield. Build NO-GO.