Skip to content

Roadmap status audit: SupersededLine state + full row re-verification - #7104

Merged
briansrls merged 11 commits into
mainfrom
session/merry-swift-639
Jul 23, 2026
Merged

briansrls merged 11 commits into
mainfrom
session/merry-swift-639

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Jul 23, 2026 •

Copy link
Copy Markdown
Contributor

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 } on RoadmapItem

A superseded row names its successor and is: done-for-dependencies (children unblock), never dispatchable (excluded from ready; dispatch button suppressed; direct POST refuses AlreadyDone), Underivable for drift, and rendered distinctly — markdown [x] ~~content~~ **superseded →** successor with no awaiting-sign-off suffix; page status superseded with 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)

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_actuate is a wet-bin-lane row, runs in CI). ROADMAP.md regenerated via generated_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

@gunbai-bot gunbai-bot Bot changed the title UI roadmap structure discussion Roadmap status audit: SupersededLine state + full row re-verification Jul 23, 2026
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review July 23, 2026 04:59
gunbai-bot Bot pushed a commit that referenced this pull request Jul 23, 2026
…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>
@gunbai-bot

gunbai-bot Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

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

@gunbai-bot

gunbai-bot Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

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

@briansrls
briansrls merged commit 9207f64 into main Jul 23, 2026
3 checks passed
@briansrls
briansrls deleted the session/merry-swift-639 branch July 23, 2026 12:33
briansrls pushed a commit that referenced this pull request Jul 23, 2026
…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants