2026 industry consensus (researched via fork: RTMs are becoming graphs exposed to agents via MCP) validates what assessor-loop already deferred as premature: a typed risk-graph edge model (addresses / derives-from / discharges / suppresses).
Codify as a generic bespoke skill: link spec → ADR → commit → attestation as a queryable graph, not just forward execution stages. Triggered post-spec/post-ADR.
Ref: cad research fork verdict (2026-07-25) — "pull assessor-loop's deferred risk-graph edge model forward, now."
2026 industry consensus (researched via fork: RTMs are becoming graphs exposed to agents via MCP) validates what assessor-loop already deferred as premature: a typed risk-graph edge model (`addresses` / `derives-from` / `discharges` / `suppresses`).
Codify as a generic bespoke skill: link spec → ADR → commit → attestation as a queryable graph, not just forward execution stages. Triggered post-spec/post-ADR.
Ref: cad research fork verdict (2026-07-25) — "pull assessor-loop's deferred risk-graph edge model forward, now."
Shipped in d6e892a — the graph-query helper #19 called for, plus the skill around it.
What it is
trace.sh <sha> prints what git can prove — commit, files, test files touched, the release containing it, referenced issues as URLs — and then, every time, the four things git cannot prove. That last block is the point; the GREEN run's own accounting was blunt about the split:
the tool did the mechanical 15%. Its real contribution is the "Cannot verify from here" block, which is a checklist, not an output.
Kept in the header as written, because it is true and the alternative is a tool that oversells itself in a skill about not overselling links.
The typed-edge model this issue asked for
addresses / derives-from / discharges / suppresses landed as the chain's link kinds rather than as a graph store: requirement → decision → commit → gate → verification → CI-on-that-sha → release → closure. That is the same edge model expressed as something checkable today, and the RED run demonstrated the shape by hand in sixteen steps before any of it was written.
Step 5 is the reason to have this skill
"Probe the load-bearing claim — try to falsify it." The GREEN run pointed it at a gate I had shipped that morning and broke it: bin/check-session-log grepped the whole file for session_id, so stripping the field from every documented payload and leaving the word once in prose passed cleanly. Fixed in 4d6ebb6 with five cases taken straight from its probes.
That is two gates falsified by probing in one day — the escalation ratchet earlier, this one now. Both were asserted in commit messages, both passed CI, neither did what it said. Steps 1-4 of this skill would have missed both; step 5 found them in one sed each.
The GREEN run also broke my tool
The slug sed relied on a lazy quantifier POSIX ERE does not have ([^/]+?), so .git was swallowed and every emitted URL carried the suffix. Tolerated by Gitea, 404 on GitHub. A traceability tool emitting a malformed evidence URL is the exact failure it exists to prevent.
"Prints every issue it references" was overclaimed. It greps the commit body, so it structurally cannot find the issue that cites the commit — and that is the commoner break. The traced commit's outcome was falsified by #39, filed 90 minutes later, reachable only by searching the tracker for the sha. That is step 6 now.
Step 3 dead-ended. It told you to check which job passed; workflow_run_status returns no jobs. The REST fallback is written out, because a step whose tooling dead-ends is where a trace quietly becomes "the run was green".
The output format did not survive a real trace. It grew four slots, each forced: two requirements differing in kind (a defect report and a standing policy bar — collapsing them hides which was unmet), the gate as an artifact distinct from the test, a RED/GREEN baseline against the parent commit, and the commit's factual claims checked. Without that last slot, "commit → verified" means only "this sha exists".
One line from the skill the run singled out, and which the six-entry GAPS section on an otherwise-exemplary commit bears out: "A trace whose gap section is empty should be suspicious of itself."
Shipped in `d6e892a` — the graph-query helper #19 called for, plus the skill around it.
## What it is
`trace.sh <sha>` prints what git can prove — commit, files, test files touched, the release containing it, referenced issues as URLs — and then, every time, the four things git **cannot** prove. That last block is the point; the GREEN run's own accounting was blunt about the split:
> the tool did the mechanical 15%. Its real contribution is the "Cannot verify from here" block, which is a checklist, not an output.
Kept in the header as written, because it is true and the alternative is a tool that oversells itself in a skill about not overselling links.
## The typed-edge model this issue asked for
`addresses` / `derives-from` / `discharges` / `suppresses` landed as the chain's link *kinds* rather than as a graph store: requirement → decision → commit → gate → verification → CI-on-that-sha → release → closure. That is the same edge model expressed as something checkable today, and the RED run demonstrated the shape by hand in sixteen steps before any of it was written.
## Step 5 is the reason to have this skill
*"Probe the load-bearing claim — try to falsify it."* The GREEN run pointed it at a gate I had shipped that morning and **broke it**: `bin/check-session-log` grepped the whole file for `session_id`, so stripping the field from every documented payload and leaving the word once in prose passed cleanly. Fixed in `4d6ebb6` with five cases taken straight from its probes.
That is two gates falsified by probing in one day — the escalation ratchet earlier, this one now. Both were asserted in commit messages, both passed CI, neither did what it said. Steps 1-4 of this skill would have missed both; step 5 found them in one `sed` each.
## The GREEN run also broke my tool
- **The slug sed relied on a lazy quantifier POSIX ERE does not have** (`[^/]+?`), so `.git` was swallowed and every emitted URL carried the suffix. Tolerated by Gitea, 404 on GitHub. A traceability tool emitting a malformed evidence URL is the exact failure it exists to prevent.
- **"Prints every issue it references" was overclaimed.** It greps the commit body, so it structurally cannot find the issue that cites the *commit* — and that is the commoner break. The traced commit's outcome was falsified by #39, filed 90 minutes later, reachable only by searching the tracker for the sha. That is step 6 now.
- **Step 3 dead-ended.** It told you to check which job passed; `workflow_run_status` returns no jobs. The REST fallback is written out, because a step whose tooling dead-ends is where a trace quietly becomes "the run was green".
- **The output format did not survive a real trace.** It grew four slots, each forced: two requirements differing in kind (a defect report and a standing policy bar — collapsing them hides which was unmet), the gate as an artifact distinct from the test, a RED/GREEN baseline against the parent commit, and the commit's factual claims checked. Without that last slot, "commit → verified" means only "this sha exists".
One line from the skill the run singled out, and which the six-entry GAPS section on an otherwise-exemplary commit bears out: *"A trace whose gap section is empty should be suspicious of itself."*
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
2026 industry consensus (researched via fork: RTMs are becoming graphs exposed to agents via MCP) validates what assessor-loop already deferred as premature: a typed risk-graph edge model (
addresses/derives-from/discharges/suppresses).Codify as a generic bespoke skill: link spec → ADR → commit → attestation as a queryable graph, not just forward execution stages. Triggered post-spec/post-ADR.
Ref: cad research fork verdict (2026-07-25) — "pull assessor-loop's deferred risk-graph edge model forward, now."
Shipped in
d6e892a— the graph-query helper #19 called for, plus the skill around it.What it is
trace.sh <sha>prints what git can prove — commit, files, test files touched, the release containing it, referenced issues as URLs — and then, every time, the four things git cannot prove. That last block is the point; the GREEN run's own accounting was blunt about the split:Kept in the header as written, because it is true and the alternative is a tool that oversells itself in a skill about not overselling links.
The typed-edge model this issue asked for
addresses/derives-from/discharges/suppresseslanded as the chain's link kinds rather than as a graph store: requirement → decision → commit → gate → verification → CI-on-that-sha → release → closure. That is the same edge model expressed as something checkable today, and the RED run demonstrated the shape by hand in sixteen steps before any of it was written.Step 5 is the reason to have this skill
"Probe the load-bearing claim — try to falsify it." The GREEN run pointed it at a gate I had shipped that morning and broke it:
bin/check-session-loggrepped the whole file forsession_id, so stripping the field from every documented payload and leaving the word once in prose passed cleanly. Fixed in4d6ebb6with five cases taken straight from its probes.That is two gates falsified by probing in one day — the escalation ratchet earlier, this one now. Both were asserted in commit messages, both passed CI, neither did what it said. Steps 1-4 of this skill would have missed both; step 5 found them in one
sedeach.The GREEN run also broke my tool
[^/]+?), so.gitwas swallowed and every emitted URL carried the suffix. Tolerated by Gitea, 404 on GitHub. A traceability tool emitting a malformed evidence URL is the exact failure it exists to prevent.workflow_run_statusreturns no jobs. The REST fallback is written out, because a step whose tooling dead-ends is where a trace quietly becomes "the run was green".One line from the skill the run singled out, and which the six-entry GAPS section on an otherwise-exemplary commit bears out: "A trace whose gap section is empty should be suspicious of itself."