Repository navigation
Conversation
Owner membership alone was the wrong visibility rule. The v1 deletion lane's critical path runs through pderive-source-slot-binding, whose prerequisite namespace-canonical-binding lives in a lane the focus hid — so the page rendered the fourth link of the spine as READY with its blocker invisible. Nothing was red; the page lied by omission. That is worse for a dispatched agent than for a person: a worker reads a ready-looking node, starts, and stalls on work the roadmap never mentioned. Visibility is now lane membership UNION the transitive prerequisite closure, reusing std.graph.graph_reverse_reachable_members over the roadmap's own edge relation rather than minting a second walk — the edge is already a dependency edge, reverse reachability from a lane node is exactly its ancestors, and the graph is acyclic by witness so the walk terminates by construction. The closure found FIVE blockers where three were visible by eye: namespace-canonical-binding has its own prerequisites, so the lane was blocked on a namespace sub-chain of three. Manual inspection would have found those one stall at a time, each costing a wasted attempt. Pulled-in rows are named as prerequisites in the notice rather than counted as lane work, so the lane's real size stays honest. THE DISCRIMINATOR IS SYNTHETIC, deliberately (review). An earlier cut asserted count(pulled) > 0 against the live roadmap_focus_selection, which contradicts the carrier's own promise that changing or clearing the focus is a one-row view edit: it fails the moment the focus is NoFocus, or a lane that legitimately has no cross-owner prerequisite — reporting a defect where none exists and making the focus row un-editable in practice. The fixture owns its two lanes and its transitive cross-lane chain, so it holds under any live focus, and it exercises TRANSITIVITY (b3 pulls b2 pulls b1) which is the part manual inspection misses. A companion asserts the no-external-prerequisite case pulls nothing, so the empty result is a tested outcome rather than an untested branch. The notice claim is also strengthened per review: the test named "pulled in and named as such" now actually checks the notice contains every pulled id, which it previously did not. The live-tree invariant is stated conditionally beside the fixture: whatever the current focus is, no visible node may have a hidden prerequisite. That holds under every focus including NoFocus, so it constrains the projection without pinning the selection. Split out of #7417 on review: the identity half needs identity on RoadmapNode, an active/tombstoned lifecycle, and a base-versus-head permanence gate, and is being rebuilt separately. This half is independent of that work. Verified: whole-tree compile 0 blocking errors; ROADMAP.md regenerated from the authority; 104 witnesses green with zero failures across roadmap_focus (12), roadmap_authority, generated_artifact_drift, roadmap_page, doc_reachability (both homes), roadmap_emit and roadmap_document. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
Contributor
Author
|
Superseded by #7440, which consolidates this with the other roadmap-belt PRs. Four branches racing a moving |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Split out of #7417 on review. The identity half is being rebuilt separately (identity on
RoadmapNode, active/tombstoned lifecycle, base-vs-head permanence gate); this half is independent of it.The bug
Owner membership alone was the wrong visibility rule. The v1 deletion lane's critical path runs through
pderive-source-slot-binding, whose prerequisitenamespace-canonical-bindinglives in a lane the focus hid — so the page rendered the fourth link of the spine as ready, with its blocker invisible.Nothing was red. The page lied by omission, which is worse for a dispatched agent than for a person: a worker reads a ready-looking node, starts, and stalls on work the roadmap never mentioned.
The fix
Visibility is lane membership ∪ the transitive prerequisite closure, reusing
std.graph.graph_reverse_reachable_membersover the roadmap's own edge relation rather than minting a second walk — the edge is already a dependency edge, reverse reachability from a lane node is exactly its ancestors, and the graph is acyclic by witness so the walk terminates by construction.The closure found five blockers where three were visible by eye.
namespace-canonical-bindinghas its own prerequisites, so the lane was blocked on a namespace sub-chain of three. Manual inspection would have found those one stall at a time.Pulled-in rows are named as prerequisites in the notice rather than counted as lane work, so the lane's real size stays honest.
The discriminator is synthetic, deliberately
Per review. An earlier cut asserted
count(pulled) > 0against the liveroadmap_focus_selection— which contradicts the carrier's own promise that changing or clearing the focus is a one-row view edit. It fails the moment focus isNoFocus, or a lane that legitimately has no cross-owner prerequisite, reporting a defect where none exists and making the focus row un-editable in practice.The fixture owns its two lanes and its transitive chain, so it holds under any live focus, and it exercises transitivity (
b3pullsb2pullsb1) — the part manual inspection misses.synthetic_closure_pulls_transitive_cross_lane_prerequisitessynthetic_focus_with_no_external_prerequisite_pulls_nothingsynthetic_notice_names_every_pulled_prerequisitesynthetic_visible_set_is_lane_plus_pulledno_visible_node_has_a_hidden_prerequisiteNoFocusValidation
gunbc compile --target dag— 0 blocking errorsROADMAP.mdregenerated from the authorityroadmap_focus(12),roadmap_authority,generated_artifact_drift,roadmap_page,doc_reachability(both homes),roadmap_emit,roadmap_document🤖 Generated with Claude Code