v0.5.4
A small release. One change alters what an installed graph does; the other is
a recorded negative result.
backlog-batch lane A stops on findings and repairs them (#151, #152)
review-style and review-security pass on either verdict, by design —
a review's job is to judge, not to be clean. What that left behind: three
shipped graphs put a PR-opening node downstream of those reviews, so a review
that found a real defect still opened the pull request, and the ledger printed
PASS.
The fix uses no new mechanism. A feedback arc (ADR 0010) fires only on the
declaring node's judgment failure, so while the fragment passed FINDINGS:
nothing in the failure grammar could reach it. backlog-batch lane A now
narrows review-a's check to CLEAN and carries feedback: { rerun: dev-a, max: 1 }, so findings buy one bounded repair round instead of a PR.
For a user with these graphs installed, lane A is the only thing that runs
differently: a FINDINGS: review now shows node_retried and feedback round 1/1 rather than a failure, and the defect ends up fixed rather than quoted
in a PR body. Worst case is 8 executions, not 6 — e2e-a inherits
retry: { max: 1 } from the e2e-verify fragment while dev-a and review-a
declare none.
Three graphs deliberately did not change. dev-review-pr and self-dev
cannot carry the arc: their two reviews fan out from e2e, so any loop body
takes a side exit — verified against the real binary, not reasoned about. Lane
B stays advisory by choice, and the review fragments now say what a caller
must do to gate, and why a fragment cannot do it for them.
Two suggestions were declined with the code behind them: a companion
review-style-strict fragment would need a full prompt copy (a fragment cannot
use: a fragment), and a with: { on_findings: ... } substitution point would
break all five existing callers, since substitution defaults are deferred in v1.
The operator's lane corpus had nothing to extract (#150)
75 hand-written lanes, measured: the repeated part is worktree, cwd,
depends_on and id — exactly the fields ADR 0013 makes a load error inside a
fragment. The one prose candidate declared neither half of the verdict
convention nor a grant, so extracting it would have been designing a new node
and calling it an extraction.
The finding that mattered points the other way: across those 75 lanes,
result_matches appears 0 times on any pr node and use: 0 times.
That corpus was never a source of shapes for graphs/ — it was a consumer that
had never adopted the four fragments already shipped.
Also recorded: ADR 0013's own similarity metric (longest common suffix)
understates convergence for prompts that diverge mid-body.
Install: go install github.com/jitokim/oh-my-graph/cmd/oh-my-graph@v0.5.4
Full changelog: https://github.com/jitokim/oh-my-graph/blob/v0.5.4/CHANGELOG.md