Repository navigation
Roadmap status audit: SupersededLine state + full row re-verification - #7104
Conversation
…migration, seed-honesty as GateDeletion bricks The superseded roadmap row 5-collapse-v1 required four prereqs; the cycle-5 three-gate remodel carried forward only the fixed point. Ruling (operator-delegated via the PR #7104 PREREQ-DRIFT flag): the three gates are the interpreter-deletion bar and correctly omit them; the terminal claims (v1_quarantine products-still-build, v1_delete) do require them. hand_queue_drain lands before quarantine (the gunbc CLI is a HAND src/v1 file — products-still-build is unwritable undrained), test_migration and seed_honesty_decision before delete. The seed-honesty witness fail-open defect is flagged as owed regardless of the decision outcome. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
On review 41700's non-blocking observation (empty-string sentinel in item_superseded_by): deliberate match to the module's existing convention — RoadmapNode.owner uses "" for unowned and signoff_by returns "" for Unsigned, with the same guard shape at the consumers. Agreed it's a mild conflation; if a third caller class appears (or the successor pointer grows structure, e.g. node-id vs doc-path vs PR), the right move is a typed Successor coproduct rather than a bool helper, and that lands with the freshness/ordering follow-up rather than this PR. — sent from merry-swift-639 |
…7088 nfr roster sites (5th predict-skip occurrence), record on ts-lying-stamp
|
Review 41743 (and 41700 before it) on the item_superseded_by empty-string sentinel — agreed, and here is the concrete disposition rather than another deferral note: the right fix is a construction wall, not a predicate helper. SupersededLine.by becomes NonEmptyStr so 'superseded with empty successor' is unwritable (the real conflation 41743 identifies: by="" today silently degrades to done-with-no-mark), and the three == "" boolean call sites collapse onto one item_is_superseded predicate beside it. That is a type change to the row model, so it rides the already-planned freshness/ordering follow-up PR (same file, same consumers) instead of restarting this PR's CI cycle for a change both reviews marked non-blocking. If the operator wants it in this PR instead, say so and I'll fold it in. — sent from merry-swift-639 |
…eletion bricks (#7110) * WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit) * Plan cycle-4: chain B DONE, chain A single gate = comprehensive import-closure root fix Delta-first refresh of the v1-deletion plan authority against this session's landings: - witness_family_fanout -> DONE (all 9 families green + trustworthy controls: #6912/#6917/#6918) - new milestone emit_import_closure_root: the multi-layer emit-import peel root-caused into ONE transitive-closure derivation (operator ruling 2026-07-20); FreeMonoid was one layer, not the gate - probe_flip_fanout + deep_module_lanes -> both GATED on emit_import_closure_root (flip wave is NOT orthogonal; it shares the import-closure root and fans out in parallel with deep lanes on cargo-green) - unresolved_error_diagnosis -> diagnosis DONE, partial fix landed #6906 (mid-peel) - ci_floor_cutover -> ledger overlap-started #6915 with a §3 hand-declared-disposition defect to root-cause - rulings recorded: root-cause not face-by-face; cargo-green + witness-green always (no mid-peel merges) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit) * Plan cycle-5: v1_deletion_plan.dag becomes the FULL three-gate roadmap; artifact is its projection Operator: "your job is to get us to a full and confident plan — we can antagonize it — make this a roadmap and the artifact a projection of it." The plan authority now models the three-gate v1-delete bar directly (§3 single authority; the selfhost-dashboard.html artifact projects it, delta-first): - PlanGate enum groups every milestone under Gate 1 (emitter fixed point), Gate 2 (honest frontier), Gate 3 (ledger green), or GateDeletion. - BrickState (Placed|InFlight|Gated) per milestone. - ConfidenceBasis{basis, risk, antagonize} per milestone — the attack surface that makes the plan antagonizable item by item (the confidence-probe lane fills in risk/antagonize). - PlanGateSpec rows carry each gate's name + what it proves. - 23 bricks (was 13): adds generic_t_rendering, the Gate-2 property bricks (typed_frontier/frontier_dispositioned/no_frontier_lies), the Gate-3 ledger bricks (ledger_modeled/ledger_projection + the 3 spine receipts), and emit_representation_mismatch — the E0308 layer (~4400/deep module) the confidence-probe just exposed once generic-T cleared (quiet-bee #6924 residual histogram). Rewired the Gate-1 chain so E0308 sits between the two known roots and the deep-module lanes. NOT "27/27 modules flipped" — the doc string states the bar is emitter fixed point + honest frontier + ledger green; some modules stay SeedRetained by necessity. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit) * Fix parse error in roadmap: in-string braces trigger string interpolation The cycle-5 remodel put literal braces in prose strings (SeedRetained{reason, migration_trigger}). In the seed grammar `{...}` inside a string is interpolation (render.dag escapes them as \{ \}; the seed has ExprStringInterp), so `{reason, migration_trigger}` parsed as an interpolation expression and blew the top-level item parser: "expected item declaration". The known-good cycle-4 file had zero in-string braces. Fix: replaced the 3 occurrences with parens — SeedRetained(reason, migration_trigger). Verified by execution with a discriminating control: v1_src_dag_parse reds the pre-fix version with the exact CI error and greens the fix. Also folds quiet-bee's E0308 type-pair sizing into emit_representation_mismatch: 206 pairs but TOP 5 = 82% (Symbol/String ~2100 = one std fork, FreeMonoid/String ~1038, Vector/FreeMonoid ~150, Optional/Option ~150) — the layer is TRACTABLE (3-4 construction walls at the authority, not 206 one-offs), so Gate-1 depth is now bounded. Risk downgraded from "could dominate Gate 1" accordingly. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit) * Roadmap: wire Gate 3's ledger receipts to gate the cutover (review 40244) cursor/composer-2.5 REQUEST_CHANGES caught a real §3 gap: the prose (ci_floor_cutover lane_state + critical_path_note) says the cutover is gated on the ledger receipts, but no PlanDependency wired ledger_projection / the 3 spine receipts into ci_floor_cutover — they pointed only at v1_delete. So the modeled DAG allowed CI cutover (and transitively quarantine) before Gate 3 completed. Fix: retarget the 4 Gate-3 receipt edges from v1_delete to ci_floor_cutover, so Gate 3 -> ci_floor_cutover -> v1_quarantine -> v1_delete. Now every Gate-3 receipt transitively gates BOTH quarantine and delete (verified by execution: reachability holds for all 4), with no redundant edge (the old direct receipt->v1_delete edges are subsumed by the chain). Updated v1_quarantine and v1_delete lane_state prose to state the transitive gating explicitly, so a reader of the dependency list cannot treat either as reachable without the ledger green. DAG re-verified acyclic (Kahn over all 23 milestones); parse-checked by execution. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit) * WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit) * WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit) * WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit) * WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit) * WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit) * WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit) * WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit) * WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit) * Roadmap convergence: three-gate progress on the srv1 dashboard (authority pages only) + regen golden Render the v1-delete three-gate progress (Gate 1 emitter fixed point · Gate 2 honest frontier · Gate 3 ledger green) driven from gunbc.v1_deletion_plan on the live srv1 roadmap dashboard `/` and `/roadmap` pages — a single authority, no data duplication. Fixes two CI-red witnesses from the first cut: - roadmap_page_keystone_holds: the three-gate section had been spliced into the GENERIC roadmap_page(doc, merged) renderer, so it injected into every doc incl. the empty test doc, breaking the "empty doc -> empty <main>" invariant. Three-gate progress is AUTHORITY content (renders v1_deletion_plan), so route it through the _for_authority variants via a private _impl + main_prefix param (authority output byte-identical). Add witness_authority_shows_three_gate_progress as the positive coverage assertion (authority page HAS it; empty page is the discriminating RED control). - live_deploy_emit_holds / witness_apply_script_matches_committed_golden: regenerate .github/live-deploy-srv1-apply.sh so the embedded server.js dashboard pages carry the three-gate content. Proven green by execution: roadmap_page_keystone_holds PASS, live_deploy_emit_holds PASS. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Resolve #6942 merge: combine dispatch launch-button with three-gate progress + regen golden Belt A (#6942) landed the roadmap launch button + /dispatch client script on the same three dashboard files this branch touches. Combined both in roadmap_page.dag: the _impl/main_prefix three-gate feeds #6942's conditional dispatch_client_script() body path (empty doc still yields a bare <main> with no script). The witness file auto-merged into one roadmap_page_keystone_holds carrying both feature families. Regenerated .github/live-deploy-srv1-apply.sh from the merged sources so it carries three-gate progress AND the dispatch button (the auto-WIP checkpoint had committed the in-progress merge with conflict markers). Proven green by execution on the merged tree: roadmap_page_keystone_holds PASS (three-gate + dispatch + all prior conjuncts), live_deploy_emit_holds PASS (golden matches). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit) * Review 40401 finding 2: three-gate widget renders only the 3 proving gates cursor/composer-2.5 (REQUEST_CHANGES) correctly flagged that three_gate_progress_markup() mapped all of v1_deletion_gates including GateDeletion, rendering 4 rows under the "three gates" heading. GateDeletion is downstream cutover/delete ("proves nothing on its own" per the authority), not one of the three proving gates. Filter to the proving gates via tg_is_bar_gate (GateDeletion => false); the heading is now literally true. Witness asserts Gate 1/Gate 3 render and "Cutover and delete" (GateDeletion's name) does NOT. Regenerated the apply-script golden (cutover_rows=0). roadmap_page_keystone_holds PASS. Finding 1 (exclude the non-bar-brick probe_flip_fanout from Gate 2's count) needs a typed discriminator on PlanMilestone in the plan authority — landing separately pending authority-edit confirmation. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Review 40401 finding 1: typed bar-brick discriminator excludes seed-shrink from gate counts cursor/composer-2.5 correctly flagged that the gate progress counted probe_flip_fanout in Gate 2's denominator even though the authority declares the flip wave "not itself a bar-brick" (seed-shrink beyond the fixed-point minimum) — so Gate 2 could never read 100%. Fix (operator-cleared to edit the authority in this PR): add a typed BrickRole = BarBrick | SeedShrink discriminator on PlanMilestone (v1_deletion_plan.dag); probe_flip_fanout is the one SeedShrink, the other 22 are BarBrick. The projection's tg_gate_bricks now filters to bar-bricks, so tg_gate_total / tg_gate_placed / the remaining list all exclude seed-shrink. Gate 2 reads 3/4, not 3/5. Witness asserts the seed-shrink brick's title ("std_dup-gated modules") does NOT render in the three-gate section (discriminating: removing the filter reds it). Regenerated golden (seedshrink_leak=0). roadmap_page_keystone_holds PASS, live_deploy_emit_holds PASS by execution. Merged main (#6922 plan authority now landed). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit) * Fix host_standup witness stale after #6947 nbd_proxy typed-effect migration declared_gap_steps_carry_interim_realization_authority required every DeclaredGap's interim_realization to cite `ctrl:` OR (`extdeps.` AND `gunbc.`). #6947 (Wave C3, merged to main) correctly migrated the os-install-actuated gap's nbd_proxy realization from the extdeps shell transport (`extdeps.bmc.webui.nbd_proxy_serve ShellProgram`) to a gunbc typed host-effect (`gunbc.host_effect_nbd_proxy_serve`), a more-grounded authority that no longer routes through an extdeps dep. The now-purely- gunbc realization made the `(extdeps. AND gunbc.)` conjunction fail, so the fold returned Bool(false) — a main-inherited CI red (owner session crisp-bat-221 archived; no fix in flight). Relax the over-specific conjunction to the invariant's actual intent: a DeclaredGap must cite >=1 grounded authority — `ctrl:` OR `extdeps.` OR `gunbc.`. Fail-closed property preserved: a gap citing NONE still reds; ModeledCompose arm unchanged. RED proven by CI execution on 3644226 (returned Bool(false)); this greens it. Also restores dag/test/fixture/m4_universal_governed_corpus.dag to origin/main (a phantom auto-WIP edit had crept in during local repro). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess) * WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess) * WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess) * WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess) * WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess) * WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess) * WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess) * Honest frontier refresh 2026-07-22: namespace-terminal trigger refuted by execution; full 21-module probe sweep Operator-directed disentangle: a blocker edge without a named MEASURED reason is removed. - 03_resolve + 03_name_resolve re-declared knowledge_attributed -> execution_measured: 03_resolve = generic-T render class (E0425 cannot find type T; new reason row curated_cargo_probe_generic_type_render), 03_name_resolve = cssl_assemble refuse (unroutable gunbc_plans_md_helpers closure reach). Both triggers -> migrate_when_closure_self_emits_cargo_green (the 04_infer pattern); the migrate_when_namespace_only_resolution_lands trigger no longer appears anywhere. - Full-frontier sweep TSV (21/21 modules, deduped, provenance header): 4 generic-T (03_resolve, 04_infer, 05_eval, fold_lowering), 1 value-qualified (materialization_carriers), 2 render residues (02_parse dotted, 01_tokenize struct-literal-path), 13 HARNESS_REFUSE on ONE root (test_claim_materialization_ladder_witness pulled into compiler closures; + gunbc.plans on 03_name_resolve), 1 false-red (03_normalize, lane shim required). - Verified by execution: frontier compile differential clean (135 pre-existing on entry, 0 added), frontier_classify_unlisted_reason_refuses_holds green, 10/10 compiler_frontier_census witnesses green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess) * WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess) * WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess) * WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess) * WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess) * WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess) * WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess) * Post-merge honest frontier re-sweep (13 modules): generic-T class DEAD, type-ref-import-missing is the successor class on 5 modules (3 unique symbols); 05_eval + 06_translate knowledge_attributed -> execution_measured; emit-shape + struct-literal-body classes named; materialization_carriers advanced off import-closure. Receipts in TSV + honest_frontier_refresh_2026_07_22_post_merge_note Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * review 41418: upgrade compiler_frontier_row_05_emit knowledge_attributed -> execution_measured (TSV row 05_emit E0433 UriScheme landed by the resumed background sweep after the 13-row read) — roster and receipt back to one authority Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess) * Remove scratch rank probe swept in by auto-WIP commit (probe served its purpose: sweep-order ranks verified against frontier authority) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess) * Fix dual-milestone drift: re-base six v1-deletion plan rows on 2026-07-22 execution receipts The plan-milestone rows lagged the frontier/probe carriers (the staleness the operator saw on the freshly deployed srv1 roadmap). Re-based on receipts, both directions — two flips forward, one flip BACK: - generic_t_rendering InFlight -> Placed: class extinct by execution (#7033 + 21-module re-sweep, zero curated_cargo_probe_generic_type_render rows); Phase-2 typed-REFUSE residue named as non-bar hardening. - trigger_renegotiation InFlight -> Placed: the mechanical frontier-row update landed (#7040 trigger refutation + #7058 refresh); no namespace-gated trigger remains on the frontier. - std_dup_assembly_fix Placed -> InFlight (honest-green rule): E0255 resurfaced post type-surface regen as first-error on the curated 4-module baseline — suspected different root (emitter-synthesized std use-lines, #7068 pub-use family). Now the single first-error blocker for the cargo-green fan-out. - emit_import_closure_root: type-surface arm landed (#7057), E0422/E0433 class cleared by execution; representative cargo-green bar still unmet behind E0255. - emit_representation_mismatch: the ~4400-sized layer measured GONE on 04_infer (e0308_all=0); gate premise re-pointed to std_dup + post-clear re-histogram. - deep_module_lanes: gate premise re-based accordingly. Verified by execution: plan closure compiles 0 diagnostics; roadmap_page, roadmap_frontier, roadmap_register witnesses all true; generated_artifact_gate main_wet ExitSuccess with zero drift. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess) * Prereq-drift ruling on 5-collapse-v1: restore HAND-queue drain, test-migration, seed-honesty as GateDeletion bricks The superseded roadmap row 5-collapse-v1 required four prereqs; the cycle-5 three-gate remodel carried forward only the fixed point. Ruling (operator-delegated via the PR #7104 PREREQ-DRIFT flag): the three gates are the interpreter-deletion bar and correctly omit them; the terminal claims (v1_quarantine products-still-build, v1_delete) do require them. hand_queue_drain lands before quarantine (the gunbc CLI is a HAND src/v1 file — products-still-build is unwritable undrained), test_migration and seed_honesty_decision before delete. The seed-honesty witness fail-open defect is flagged as owed regardless of the decision outcome. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess) --------- Co-authored-by: Brian Searls <briansearls1@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: gunbai-bot[bot] <289086189+gunbai-bot[bot]@users.noreply.github.com>
Operator-directed (2026-07-23): the roadmap page led with July-5 rows whose receipts were long refuted; rather than filtering at render time, rows get a first-class status and every row was re-verified.
Model:
SupersededLine { by, content }onRoadmapItemA superseded row names its successor and is: done-for-dependencies (children unblock), never dispatchable (excluded from ready; dispatch button suppressed; direct POST refuses AlreadyDone),
Underivablefor drift, and rendered distinctly — markdown[x] ~~content~~ **superseded →** successorwith no awaiting-sign-off suffix; page statussupersededwith a successor badge, dashed-border style. Legend updated. No render-time filtering anywhere (§5 — a hidden row would be a silent widen; the mark is the state).Audit — all ~95 rows verified against receipts (4 parallel research passes over git history, tree carriers, PR states, CI runs)
5-real-fixpoint,5-emit-on-demand,5-collapse-v1→v1_deletion_plan.dagthree-gate bar (with an explicit prereq-drift flag: HAND-drain / test-migration / seed-honesty absent from the successor bar — needs a deliberate ruling);3-audit-gate-disagreement→ namespace-only lane;shelf-complexity→ live Complexity as a compile citizen: accumulator-copy enrolled as a required root-grain compile lens #6527/complexity enforcement for affected set floor #6540/Wave 1 Gate 1 C1: per-op cost derivation over ^arrow_body_edge — retire the copied-port hand cost registry (single-authority, fail-closed on unpriceable ops, green-by-execution + discriminating RED) #6632 carriers;shelf-shell-tail→ shell→intent arc;shelf-html-dashboard,shelf-session-dashboard→ site-subsumption + conveyor-belt lanes.[x]still waits on operator sign-off per the signoff discipline:5-regen-cutover(regen--verifyrequired in CI + fix(regen): normalize both sides through rustfmt before the self-host gate compares #6957/fix(regen): normalize emitted artifact at production — fix batch-2 self-host gate (follow-up to #6957) #6958 production normalization),5-cargo-green-continuous(continuous by composition),3-audit-affected-set+1-nightly(discovery flip + 4-hourly falsifier + alert), the four zesty-bat T1 vocabulary rows (std.upsert_decision + gunbc domain scopes (roadmap 2-resource-namespace-upsert-a) #6171/std.temporal_effect + gunbc.os_install_deduction T1 vocabulary (roadmap 2-temporal-effect-spine-a, 2-os-install-deduction-a) #6187/fix(srv3): DirectLayout on-ISO autoinstall + os-install reconcile spine (T3/T4) #6193),2-nbd-serve-held-session-lease(Wave C3 (shell→dag): nbd_proxy_serve typed session-lease completion #6947),ts-deploy-tail,ts-dispatch-elevate(Roadmap dispatch go-live receipt: first live end-to-end dispatch on srv1 #7096 go-live),ts-pr-7069,ts-pr-7066,ts-pr-7078(closed unmerged — disposition executed),ts-branches(all 8 dispositioned; fix governor #7073 abandonment needs confirming).5-dissolve-patches(roster regrew 7→25),5-emitted-crate-partition(Wire stage0_crate_plan to the R3 crate-partition: ground interface from frontier + cutover + prove BUILD/regen_verify (crate-partition make-it-real) #6747 landed, HandExplicit interim remains),2-cap-deconflation/1-sched-resource-aware(2026-07-12 adaptive-width ruling deleted their assumed mechanism),2-compile-clean-serial/1-wallclock-measured(scoping landed, profiles void),2-converge-reland(carrier exists; T4 accept remains),2-dispatch-actuator(live; Stop/GET-sessions/redispatch remain),2-stateless-frontend(milestone A landed),2-keyed-delta-fold(accepts a+b met; (c) re-point decision),3-enforcement-intent(substantially landed),1-sccache-falsegreens(residue: sccache local-disk row: content_verified_on_read false, cite upstream + live repro #7031 content-trust + STEP-2).2-host-scaffold-classifier-deforkderives done.Proof
Superseded arms covered in status/emit/spawner/page witnesses with a discriminating control (same fixture: open parent gates the child, superseded parent unblocks it; superseded node renders marked with no dispatch button). 13/13 roadmap+belt suites PASS locally (
roadmap_belt_actuateis a wet-bin-lane row, runs in CI). ROADMAP.md regenerated viagenerated_artifact_gate.dag main_wet; drift gate green by execution.Decisions surfaced, not made here: the 5-collapse-v1 prereq-drift ruling; #7073 abandonment confirmation; the freshness/ordering axes on RoadmapNode (discussed in-session, deliberately not minted in this PR).
🤖 Generated with Claude Code