#000012 Phase 1c: branch-set persistence — fork_score_branches table + CLI
Phase 1a scores one (parent, child) fork at a time; Phase 1b is the consensus paper. Neither persists multiple candidate branches at the same checkpoint — and #000037 §12 Trigger 1 ("ForkScore regularly receives ≥4 candidate branches per checkpoint") gates the multi- branch path of the Prometheus-Σ controller on this data existing. Phase 1c lands the missing seam. Schema (arborist/store.py): _migrate_fork_score_branches creates the sibling table with PK (branch_set_id, branch_id) + indexes on branch_set_id and parent_root. Sibling — never enters audit_events.event_hash preimage, so re-scoring or back-filling cannot break the audit chain. Helpers (arborist/substrate/fork_score.py): persist_branch_score upserts one row via ON CONFLICT (branch_set_id, branch_id) DO UPDATE so re-scoring the same fork under the same checkpoint is a clean overwrite, not a duplicate. branch_set_density(conn, branch_set_id) returns the count of distinct branches recorded under a checkpoint — the function the #000037 §12 Trigger 1 probe reads. ESTIMATOR_VERSION = "fork-score-v1" pins the producer generation on every persisted row. CLI (arborist/cli.py): arborist substrate score gains six new flags (--branch-set, --branch-id, --parent-root, --child-root, --persist-shard, --weights-id). Default off — --branch-set absent preserves Phase 1a pure-function semantics for every existing caller. When present, requires --parent-root and either --branch-id or --child-root; missing inputs return exit code 2. Tests (tests/test_fork_score.py, count 18 → 23): migration creates the table + both indexes; persist writes one row carrying parent/child roots + verdict + weights_id + estimator_version; upsert on the PK refreshes child_root + weights_id + recorded_at without duplicating; branch_set_density counts per-checkpoint and ignores cross-set rows; breakdown_blob round-trips as canonical JSON whose values sum to the persisted score. Status sync: #000012 §7 Phase 1c flipped from "proposed, not yet open" to "landed 2026-05-10" with the original proposal preserved below as design log. TICKETS row 117 mirror-updated. AUTOCOUNT counters in #000012 + cookbook bumped 18 → 23 plus the cookbook's fork_score.py LOC row refreshed (298 → 386 module, 403 → 609 tests, density 1.35 → 1.58). End-to-end smoke verified: arborist substrate score writes a fork_score_branches row with the expected schema (verdict / weights_id / estimator_version) and the row survives a clean SQLite read.
This commit is contained in:
parent
7676af8fb1
commit
d53115efd7
7 changed files with 460 additions and 5 deletions
|
|
@ -125,7 +125,7 @@ Newest first. Update on every open/close.
|
|||
| #000015 | π* domain library + cross-domain composition | closed · landed 2026-05-07 | 2026-05-07 | — |
|
||||
| #000014 | SelfModel: schema, falsification, integration | closed · landed 2026-05-07 | 2026-05-07 | — |
|
||||
| #000013 | Spatial-temporal substrate (Merkle-AGI v7-W) | closed · landed 2026-05-09 (substrate paper + frontier catalog + namespace stub) | 2026-05-07 | — |
|
||||
| #000012 | Selection & consensus protocol (Merkle-AGI v8) | in progress · Phase 1a (ForkScore) landed 2026-05-08; Phase 1b (consensus paper, `docs/_source/merkle-agi-v8-consensus.rst` 834 lines) landed 2026-05-10; Phase 1c (branch-set persistence) remains proposed-not-opened | 2026-05-07 | — |
|
||||
| #000012 | Selection & consensus protocol (Merkle-AGI v8) | in progress · Phase 1a (ForkScore) landed 2026-05-08; Phase 1b (consensus paper, `docs/_source/merkle-agi-v8-consensus.rst` 834 lines) landed 2026-05-10; Phase 1c (branch-set persistence — `fork_score_branches` sibling table, `persist_branch_score` + `branch_set_density`, 6 new CLI flags on `arborist substrate score`, default-off) landed 2026-05-10 — feeds #000037 §12 Trigger 1 | 2026-05-07 | — |
|
||||
| #000011 | SOFT_PREFLIGHT_HINT model-assisted sidecar | closed · landed 2026-05-04 (zero-shot full impl) | 2026-05-04 | D1 (preserves) |
|
||||
| #000010 | Meta-Cognition Preflight Guard (M0 / MCTL) | closed · landed 2026-05-03 (Phases 1–4); DAG binding shipped via #000009 | 2026-05-03 | D1, D3 |
|
||||
| #000009 | Preflight run-DAG node binding (#000008+#000010) | closed · re-landed 2026-05-04 (§8 corrections: reject-path DAG, nested CTI clauses) | 2026-05-03 | D3, D4 |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue