You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Closed on 2026-10-05: fixed by #88, not seen in the seven runs played since. The plan and the blueprint no longer say how a commit is written or signed. One occurrence in the 17 runs before the fix, with a cause in three steps.
What was seen
The run handed back on a plan change proposal that has nothing to do with the feature:
Proposal to decide (plan-changes/01.md): the blueprint and plan.md promise a Co-Authored-By: Claude Opus 5.5 line. The commits carry Claude Sonnet 5.5, because the plan runs the executor on Sonnet. The proposal is to change the blueprint (line 98) and plan.md (line 166) so the line names the model that wrote the commit.
How it got there, each step doing what its prompt allows:
The built-in Plan agent, which runs on opus, wrote the commit into the plan with its own attribution: "Commit on feat/overdue-command with the message cli: add the overdue command, ending with the attribution line Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>."
The extractor carried it to the blueprint, under what the developer would not see go by: "The work lands as one commit, cli: add the overdue command, on feat/overdue-command, with a Co-Authored-By: Claude Opus 5.5 line."
The executor, on sonnet, committed with its own line. The reviewer compared the commit with the frozen blueprint, found them apart, and raised a contract break: the blueprint would have to change to stay true.
The delivered code passed its 10 hidden acceptance tests. The developer is asked to decide on the name of a model in a commit trailer.
Sources
Raw data, out of git: .evals/campaign-3/runs/01-overdue-list/run-01/: run.json for the hand back, and in the plan folder of its project plan.md line 166, blueprint.md line 98, reviews/pass-01.md, plan-changes/01.md, journal.jsonl (review-done with breaks: 1).
Searched in the plans and blueprints of the 17 runs of the three campaigns: this is the only one that names an attribution.
Nothing tells the agent that drafts the plan that how a commit is signed is not part of a slice: its template asks for "what it delivers, what it touches, the precedent it copies, what proves it done" (templates/plan.md).
Nothing tells the extractor that the form of a commit is not what "touches their control, their work or their time" means (agents/surface-extractor.md, "The frame").
The reviewer did its job: a blueprint that says something false is a break.
The run was played from the branch of #83, which rewords the extractor: the sentence it adds on the sensitive zones, "say in full only what stands nowhere else", may have helped the line onto the page. One run cannot tell.
Why it matters
A contract break stops the loop and takes a decision of the developer and a new revision. Here it was spent on a line of a commit message, and it will come back whenever a plan names a model and the executor runs on another, which is the default setting.
Next
Tied to the choice of #72. If the chain says nothing of attribution, the fix is narrow: the blueprint never states how commits are written, since the conventions of the host say it. If the chain forbids attribution unless the host asks for it, this goes away with it.
Status
Closed on 2026-10-05: fixed by #88, not seen in the seven runs played since. The plan and the blueprint no longer say how a commit is written or signed. One occurrence in the 17 runs before the fix, with a cause in three steps.
What was seen
The run handed back on a plan change proposal that has nothing to do with the feature:
How it got there, each step doing what its prompt allows:
Planagent, which runs onopus, wrote the commit into the plan with its own attribution: "Commit onfeat/overdue-commandwith the messagecli: add the overdue command, ending with the attribution lineCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>."cli: add the overdue command, onfeat/overdue-command, with aCo-Authored-By: Claude Opus 5.5line."sonnet, committed with its own line. The reviewer compared the commit with the frozen blueprint, found them apart, and raised a contract break: the blueprint would have to change to stay true.The delivered code passed its 10 hidden acceptance tests. The developer is asked to decide on the name of a model in a commit trailer.
Sources
.evals/campaign-3/runs/01-overdue-list/run-01/:run.jsonfor the hand back, and in the plan folder of its projectplan.mdline 166,blueprint.mdline 98,reviews/pass-01.md,plan-changes/01.md,journal.jsonl(review-donewithbreaks: 1).Suspected cause
templates/plan.md).agents/surface-extractor.md, "The frame").The run was played from the branch of #83, which rewords the extractor: the sentence it adds on the sensitive zones, "say in full only what stands nowhere else", may have helped the line onto the page. One run cannot tell.
Why it matters
A contract break stops the loop and takes a decision of the developer and a new revision. Here it was spent on a line of a commit message, and it will come back whenever a plan names a model and the executor runs on another, which is the default setting.
Next
Tied to the choice of #72. If the chain says nothing of attribution, the fix is narrow: the blueprint never states how commits are written, since the conventions of the host say it. If the chain forbids attribution unless the host asks for it, this goes away with it.