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.

9files
+370 −20lines
2 of 4proposed rules dropped
5 of 8findings upheld in review

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.

7/7 outcomes matching the answer key
RecordExpectedWhat the agent proposed

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.

4lensescorrectness, security, simplicity, tests
8to the tribunal1 SEVERE, 1 raised by corroboration, 6 MEDIUM
2refutedplausible, false once the code was opened
5upheldfixed or recorded before release; 1 more kept as a suspicion

Was it worth it?

What changes for you

Decisions outlive the plan that made them

"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.

A public repo stays clean without relying on memory

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 library stops growing in one direction

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.

Two rules did not ship, and that counts as a result

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.

A severe defect left before release

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.

What is not proven yet

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.