Skip to content

v3.10.1

Choose a tag to compare

@mrbro-bot mrbro-bot released this 17 Aug 06:52
· 301 commits to main since this release
efd0fda

What's new

Bug Fixes

ce:review artifact contract enforcement (#798). Across 24 recorded review runs, only 11 of 19 qualifying runs produced any synthesis artifact and just 5 recorded which reviewers contributed to a merged finding; one run logged 22 findings and 8 named outcomes with no disposition for the other 14. Of 252 findings in the corpus, 60 had blank why_it_matters, 58 had empty evidence, and 3 artifacts were Markdown wearing a .json extension. The root cause: sub-agents wrote artifacts directly and nothing validated what landed. On Pi this never worked at all — every review persona declares tools: Read, Grep, Glob, Bash, which resolves to no write capability, while sub-agents were instructed to write a file anyway.

Persistence now lives in the parent orchestrator. Sub-agents return a single inline payload; the parent validates it against a tightened JSON Schema and writes it. A follow-up review found the original schema's enforcement claim was empirically false — a payload with a 50,000-character field, an absolute path in evidence[], a 10,000-entry array, and injected unknown fields still validated as valid: true. The schema is now fully closed: additionalProperties: false on every object, maxLength/maxItems derived from observed corpus maxima, and path rejection covering absolute POSIX, drive-letter, and UNC forms. The contract is also split into a subAgentReturn shape (forbids forged provenance fields) and a parentRecord shape (requires them).

Three persona descriptions were also corrected: architecture-strategist, pattern-recognition-specialist, and code-simplicity-reviewer live under agents/review/ but are never selected by ce:review — their real consumers are ce-compound, deepen-plan, and ce-plan's deepening workflow. Tests grew from 11 to 35 across the series, pinning each schema constraint at both the rejecting and accepting boundary rather than only asserting valid === false.

Documentation

Captured verification blind spots from the model-defaults wedge — three failure modes that passed every automated gate at the moment they mattered. A new eval case registered at all documented touch points still let an integration test fail because it kept a hand-maintained verbatim copy of runner help text with nothing linking it to the source. A regression gate built to catch reintroduced source-owned defaults checked the model field but not variant, so a variant-only regression would have passed clean. And a dependency field annotated "retained for compatibility" had no reader anywhere, while a commit's hardening rationale was silently erased by the next commit deleting that file — both examples of prose making claims no type, test, or linter evaluates.

Also in this release

  • deps: Update bfra-me/.github to v4.17.0.

Compare

v3.10.0...v3.10.1