aboutsummaryrefslogtreecommitdiff
path: root/voice/references
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-07-28 21:28:29 -0500
committerCraig Jennings <c@cjennings.net>2026-07-28 21:28:29 -0500
commit80624606b8a60d97d8c7600882ddc35f5225469f (patch)
tree4c4e56089c1293ab75863fe50bafefcf5084565e /voice/references
parent3a933a26c12b6350fa46faf89bf86e99bfab0f30 (diff)
downloadrulesets-80624606b8a60d97d8c7600882ddc35f5225469f.tar.gz
rulesets-80624606b8a60d97d8c7600882ddc35f5225469f.zip
feat(publish): isolate the pre-commit review and loop it to approval
The review already ran before every commit. It ran in the context that wrote the diff, which is the part that didn't work. A self-review checks the change against the author's own model of it and can't check the model, so the errors that survive are the ones that were never in the diff: a scope inherited from whoever reported the problem, a blast radius estimated instead of measured. So the reviewer is now a subagent, on every commit including a one-line one. It gets the diff, a one-line claim of what the change does, and the ticket where one exists. It doesn't get the conversation or my reasoning, because those are the model it exists not to hold. The ticket stays in for the opposite reason: it was written before the work and is the only thing that can contradict my claim about my own diff. Findings loop back to the same reviewer until it approves, rather than to a fresh one that can't tell an addressed finding from one that never existed. Three rounds, or a finding that recurs after being reported fixed, and it stops for a human instead. The unattended callers park the task rather than wait for an answer nobody is awake to give. I gave the stance a substantiation floor. An agent told to attack will manufacture findings to satisfy the instruction, and a manufactured finding costs a round and teaches the author to discount the next review. subagents.md said three separate times not to dispatch work this small, so it now carries an Isolation Override: the size heuristics assume the main thread could do the job equally well, and they lapse when its own context is what makes its answer untrustworthy. Field 2 of the Prompt Contract inverts there. Paste your context in and you hand over the very model you spawned the agent to escape. I wrote it by running it on itself: three rounds and thirteen findings. Two were things I'd have shipped. Withholding the ticket made my own claim self-certifying, and the override reaffirmed the contract field that would have destroyed the isolation.
Diffstat (limited to 'voice/references')
0 files changed, 0 insertions, 0 deletions