Release notes · 2.7.0 · 3 Oct 2026
Before and after 2.7
Four method ideas from deepseek-harness were tested against the text the compounder already had. Two shipped because they changed what the agent does. Two were dropped because the old text already did the same. The review then caught a severe defect in the new work, fixed before release.
Change explorer
Every passage, before and after
Pick a change and switch between the old text, the new text and the diff. Next to each one: why it changed, and the evidence that kept it or dropped it. Passages are shown as they shipped in 2.7.0.
Proof · /compound refresh
Same project, two texts
A test project with 2 solution docs, 4 decision records and a new lesson that contradicts one decision. The expected outcomes were written in the plan before any run. One subagent got the old /compound text, another the new one.
Limits of this proof: one run per arm, on a project written by the author of the change. Much of the 3/7 is structural, because the old text does not know docs/decisions/ exists. It shows the new route exists and is followed; it is not a measured improvement rate.
/review · panel and tribunal
The work was judged too
Four lenses reviewed the release in parallel. Every SEVERE or MEDIUM finding went to a verifier whose job is to refute it. Only what survived became a fix.
Was it worth it?
What changes for you
"Why X and not Y" used to sit in a feature plan's decisions section that nobody read again. It now has its own address (docs/decisions/), /plan checks it before proposing, and refresh knows when a decision was superseded.
Commit 3573914 was a manual cleanup of session ids, local paths and a private project name. The simplicity reviewer now catches that class in review: 0 of 2 leaks with the old text, 2 of 2 with the new.
The old refresh only asked whether a cited path still existed. The new one classifies by future value: keep what still guides, archive what is finished, delete what only recorded a rename. A library that lies is worse than an empty one.
The "alternate caller" and "single-consumer API" clauses looked good on paper. The A/B showed the old text already caught both cases. They stayed out, so every load of those agents costs fewer tokens.
The first version of the new Step 4 told the agent to rewrite a reversed decision in place, erasing the history the change existed to protect. Two lenses found it independently and the tribunal upheld it.
Each A/B ran once per arm. The /work rule was checked with pytest only. The trade-offs are recorded in the plan's Outcome section, next to the evidence.
The compounder after the models get better
The better the model, the less the compounder teaches and the more it keeps and measures.
The 2.7 work produced data for this. The old text swept decision records on its own initiative, found the caller outside the diff and the single-consumer method. Rules that only teach what the model already does are dead weight. What no model can read from the code is the project's history, the evidence, and the line between what may be published and what may not.