Skip to content

ROADMAP slice-2 step-2: emit a section from the work-DAG model + §2 delete redundant box enum - #5508

Merged
briansrls merged 15 commits into
mainfrom
session/quiet-hawk-47
Jun 22, 2026
Merged

briansrls merged 15 commits into
mainfrom
session/quiet-hawk-47

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Jun 22, 2026 •

Copy link
Copy Markdown
Contributor

Slice-2 step-2: emit a ROADMAP section from the work-DAG model

Third slice of inverting the hand-maintained ROADMAP (docs/plans/invert-hand-maintained.md).
Builds the roadmap-specific projection emit(roadmap_work_model, Markdown) on top of the
authorities that already landed:

gunbc.roadmap_emit.project_roadmap_section(title, nodes, edges, merged) -> MarkdownDocument composes
these into an H2 section whose task-list items render each line's box. The checkbox is the
DONE-authority decision (plan §6.1): a CompletesIff line's box is derived from the merged-PR
set (the inversion — generated, never hand-toggled); a HandChecked line renders its authored box
(the honest DecodeFidelity residue, §5). Children nest one indent level (fuel-bounded, §4).

SCAFFOLD-marked: the dsl serializer fold on the v1 seed, in the same shape as
expected_ci_yml = serialize_yaml(project_workflow_to_yaml(…)). Dissolution trigger = the eventual v2
Markdown TargetModel (§4 one-grammar-both-ways), at which point the projection emits v2 Nodes.

§2: deleted the redundant box enum (not just renamed it)

roadmap_status previously modeled the box as a 2-variant enum (Done | Todo), which collided with
std.markdown.CheckboxState = Checked | Unchecked (two same-named types → the resolver drops both
constructor sets). The enum was only ever consumed as a Bool by the projection, so it was a redundant
second representation. Deleted it (net concepts shrink > rename): completion is now a plain
Bool (RoadmapStatusEntry.claimed_done; predicate prs_all_merged), std.markdown.CheckboxState
is the project's sole checkbox type, and the Bool→glyph map lives in the emit layer
(task_item_with) so roadmap_status stays medium-agnostic. Deleted: CompletionState,
derive_checkbox, checkbox_done, test checkbox_is_done. claimed_done is kept on the entry so
slice-1's drift gate still works for CompletesIff lines (it dissolves into the emit wall later, plan §7).

Proof by execution

dsl/test/claim/roadmap_emit_test.dag (auto-enrolled in the CI floor) is discriminating: the H2
heading renders, a HandChecked parent renders its authored box + plan-doc link, and a CompletesIff
child renders a derived [x] when its PR is in the merged set / [ ] when not — flip the merged set
and the box flips. All three roadmap witness suites (status / model / emit) run green.

🤖 Generated with Claude Code

briansrls and others added 14 commits June 21, 2026 21:48
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…r + witness

Re-homed the consolidated, witness-verified slice-1 (orig bold-bee-822 #5489) onto the
surviving session branch. Checkbox is DERIVED from PR merge-state (extdeps.github.pulls
merged_at, the §3 authority); status_drifted = committed box ≠ derived. Discriminating
witness green by execution. Host-fed gate edge + emit are follow-on slices.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…tion

A blanket 'cited-PR-merged + box [ ] ⇒ drift' rule false-positives on partial-evidence
lines (ROADMAP §0 rust-gate cites merged #5456, correctly [ ]) — a fail-closed-but-wrong
gate (§5). Model now splits CompletesIff (derivable + gated) from HandChecked (honest
un-derivable residue, never gated). Added the decisive non-tautology witness: a HandChecked
line citing a merged PR while [ ] evaluates GREEN (RED under the blanket rule). Tightened the
ROADMAP sub-line + recorded the boundary in plan §5.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Addresses the non-blocking review note (claude-opus-4-7): CheckboxState is a fieldless sum
with working structural ==/!= (as code_change_workflow.dag already uses), so the hand-rolled
equality was needless §2 redundancy. Witness still green by execution.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…DAG authority model

Per parent (warm-lark-306): the slice-1 completes-iff binding IS the first row of the work-DAG
authority model; slice-2 (emit(work_model, Markdown)) widens it rather than re-coining a parallel
completion edge (§3).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…P line

A roadmap line = RoadmapNode { node: ProcessNodeId, line: RoadmapStatusEntry, carrier },
composing existing authorities (no re-coin, §2/§3): identity+deps from ctrl.process_algebra
decomposition (RoadmapParent = TopLevel|UnderParent), status from slice-1 RoadmapStatusEntry,
title+plan-doc carrier as host-fed presentation. Dangling-link wall via carrier_resolves.
Discriminating witness green by execution; perturbation-proven on the carrier wall + parent lookup.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
# Conflicts:
#	docs/plans/invert-hand-maintained.md
# Conflicts:
#	docs/plans/invert-hand-maintained.md
@gunbai-bot gunbai-bot Bot changed the title Invert hand-maintained docs - generate ROADMAP from .dag authority plus drift-gate, starting with the PR-to-checkbox status slice ROADMAP slice-2 step-2: emit a section from the work-DAG model + §2 delete redundant box enum Jun 22, 2026
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review June 22, 2026 00:16
@briansrls
briansrls merged commit 37a127f into main Jun 22, 2026
1 check passed
@briansrls
briansrls deleted the session/quiet-hawk-47 branch June 22, 2026 05:35
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.

1 participant