Skip to content

v3.12.1

Choose a tag to compare

@mrbro-bot mrbro-bot released this 18 Aug 21:11
· 288 commits to main since this release
04272fe

What's new

Bug Fixes

ce-plan: closed two escape hatches in the prior-art survey contract (#809). Both had shipped as known limitations, and neither needed new machinery to close.

The first hatch was in the exemption for plans with no survey section. That exemption exists because every plan written before the contract lacks the section, and without it none of them could execute — so the exemption is load-bearing. But it applied to any plan lacking a section, so a plan authored afterward with the section simply deleted got the same free pass, preserving exactly the duplicate-work outcome the survey exists to prevent. Since every plan already records its own date, the exemption is now conditional on it: a plan dated before the contract keeps the pass, one dated after must carry a survey, and a plan whose date cannot be established stops rather than guessing in either direction. The five states a plan can be in are now enumerated as an explicit partition, each mapped to exactly one branch, replacing prose that review had found self-contradictory.

The second hatch was in the survey itself. Because the agent chooses its own search boundary, one that preferred building something new could select a narrow but defensible scope excluding an existing equivalent, find only weak candidates inside it, and legitimately conclude nothing sufficient existed — every step defensible, the verdict worthless, and invisible because the survey recorded only what it searched, never what it declined to search. A verdict of building new now requires recording the adjacent scopes that were deliberately not searched, each with a reason; an empty list explicitly means no adjacent scope exists. Plan review now asks whether the concern would plausibly live in one of the excluded scopes, turning a private choice into a reviewable claim.

The survey contract's version was bumped alongside the shape change, since making a field conditionally required changes what the contract describes, and leaving the version unchanged would have taught future readers that the field doesn't track shape.

Documentation

solutions: recorded three verification lessons from the prior-art survey work (#808), plus broadened one existing document to match what the round showed.

An exemption must be predicated on the condition that actually makes verification impossible, not on a signal that usually accompanies it. A gate comparing documented plugin hooks against registered ones had exempted any assertion saying "all" or "every" as a proxy for "asserts completeness without enumerating" — but a document claiming all six hooks while listing three matched the proxy, was fully checkable, and passed clean anyway. The predicate now names the real condition: the section enumerates nothing comparable.

A stop condition comparing current state against earlier state requires the contract to record that earlier state. A rule refusing stale survey results had shipped against a schema with no timestamp, revision, or digest, so the check could only ever report that freshness was unknown. The fix specifies the recorded baseline, how current state is computed, and what happens when comparison is impossible, in the same change as the rule.

Design review and literal-text review find different defect classes. Nine specialist reviewers assessed the ce-plan change above and found real defects; an automated reviewer then found that the shipped paragraph contradicted itself, scoping validation to plans that have a section and then treating an absent section as a halt. The design was right and the reviewers were reviewing the design — when prose is the enforcement mechanism, reading the final wording as an executable contract is a separate pass.

The generated-artifact drift document previously covered description edits only. Editing an agent or skill body drifts the Pi export fixtures too, because the export embeds full persona text, and adding a file under a skill's references directory drifts the registry, which records per-component file lists — both invisible to targeted tests by construction. The generator source behind the drift claim was also cited directly.

Compare

v3.12.0...v3.12.1