feat: Extends pr-workflow domain - /lane-graphs skill - #107
Draft
MajorLift wants to merge 2 commits into
Draft
Conversation
…cedure Determinism belongs on the envelope and not on the inquiry. Computing a merge-base, checking a probe loaded, verifying a mutation landed where it was aimed — none of that needs judgement, and all of it has been got wrong by hand. Which measurement answers a claim still does. Five nodes per graph, two of which exist only because they were missing when something published anyway: reading the treatment back off disk, and naming the observation it should produce. A run whose mutation silently changed shape, or that went red somewhere other than where it aimed, satisfied every other check. The router contract carries the part that keeps routing honest. A router over enough lanes always finds a best score, so no-match has to be a first-class result rather than a fallback into the nearest lane, and an unrouted read of the mechanism runs regardless of what matched — the catalog is a list of questions someone already thought of, and the findings worth having sit outside it. Three lanes converted from prose: mutation power, base-against-branch, and render delta. Each states its own blind spot in its output, because a green result that does not say what it declined to measure reads as broader than it is.
MajorLift
marked this pull request as draft
August 3, 2026 22:16
…aring a schema
The three .graph.json specs name an `executor` and nothing parses them. A run
could skip a node and still describe itself as having followed the graph,
because nothing held the description to the file — which is the failure the
whole package is about, one level up.
What this can and cannot do is worth being exact about, since overstating it
would reproduce that failure. The check, run and expect fields are natural
language; no interpreter evaluates them and this one does not pretend to. A
node's verdict is supplied by whoever ran it.
What is mechanised is the part that was actually being skipped:
- every node must carry a verdict
- a pass must name its evidence, because a pass with an empty evidence field
is a claim about a run, which is refused everywhere else in this package
- `absent` is a first-class outcome, reported rather than silently dropped
- a ledger entry naming no node in the graph is an error, not ignored
- a graph with an unanswered node cannot report complete
Structural validation refuses a graph missing a baseline or a prediction,
those being the shape of every vacuous run: a treatment applied to nothing, or
a result compared to no stated expectation.
graph-run.mjs <graph.json> validate structure
graph-run.mjs <graph.json> --scaffold emit a blank ledger
graph-run.mjs <graph.json> --ledger <l.json> check a filled-in ledger
Controls: all three graphs validate; blank ledger exit 1; fully answered exit
0; one node silently removed exit 1; pass with empty evidence exit 1; unknown
ledger entry exit 1.
This was referenced Aug 6, 2026
lane-graphs — a router contract and three executable lanespr-workflow domain - lane graphs router contract and lanes
pr-workflow domain - lane graphs router contract and lanespr-workflow domain - /lane-graphs skill
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.
Overview
An evidence lane is a documented procedure for proving one claim about a pull request. This adds
lane-graphs: a router contract, three prose lanes converted to executable graphs, and an interpreter holding runs to them.Five nodes — preconditions, baseline, treatment (read back what was applied), prediction, capture.
mutation-power,base-branch-proofandrender-deltaeach publish adoes_not_coverlist: a deterministic graph fails identically forever and reads as evidence, so naming what it declined to measure is the mitigation.Router contract. No-match is a first-class result — a graph run on a claim it does not measure goes green on a question nobody asked. An unrouted read runs regardless of what matched — the catalog holds only questions someone already thought of.
The interpreter is
scripts/graph-run.mjs. A graph'scheck,runandexpectfields are natural language; nothing evaluates them — verdicts come from whoever ran the node. Mechanized: a verdict per node, evidence on everypass,absentreported not dropped, nocompletewhile a node is unanswered.The three graph files here are temporary — they have moved to a standalone runners repository (
v0.1.0), now the source, kept only until its review lands. Two copies already failed once: four fixes landed on the copy CI read, none reached the copy under review;check-duplicates.shdoes not yet cover the graphs. Also open is layout, not content: whether a graph belongs to the skill or the runners — the contract, node shape and ledger rules do not depend on it.Motivation
Prose lanes are run by hand, and the mechanical parts fail while producing a clean artifact:
$SHA^..$SHArather than the pull request's range measured a twenty-sixth of a change; a probe whose imports did not resolve reported success, measuring nothing; anawk -vescaping bug published a falsification for a line it never wrote; 22 of 27 runs published to already-merged pull requests, median 22 days late.Routing is judgment; execution is not.
Showcase
Controls: three graphs validate and a full ledger exits 0; blank ledger, removed node, evidence-less
pass, unknown ledger entry each exit 1.A lone checkout has dead cross-branch references; they are not defects — the installer resolves one source directory and does not follow
## Related, so forward references across open PRs warn rather than error. It merges clean ontomainwithship-hooks-and-trigger-check,pr-validate-falsifying-testandaudit-skills, 0 lint errors.#44724 (gated benchmark legs), from the evidence showcase: 2 of 17 gate-carrying legs red, 15 green; the 2 re-executed at new timestamps, the 15 inherited. The matrix was not re-run — the inherited legs are the control.