Repository navigation
v3.13.3
What's new
Bug Fixes
The ce:review contract specified writing a metadata.json file alongside the review summary, capturing the run ID, branch, HEAD, harness, verdict, and completion time — but no run had ever written it, and nothing in the repository read it. The instructions even described downstream skills falling back to file mtime when the file was absent, documentation for a consumer that was never built.
Investigation found that half of the contract had already collapsed on its own: the run artifact's schema already carries run_id, harness, and verdict, and every real artifact on disk includes a verdict despite the (unwritten) contract placing that field elsewhere. Only branch, HEAD, and the completion timestamp were still homeless, so this fix moves those three fields into the artifact that is actually produced and validated (#842, 476a3b6).
The distinction the original design was reaching for still holds: branch and HEAD are captured at dispatch time, before any autofix lands, while the run artifact is written after the verdict is final — so a reader can tell whether the recorded state describes the checkout in front of them. Only the destination changed, not the semantics.
An earlier attempt to delete the dead metadata.json contract outright was dropped because the supporting evidence was flawed: a claim of zero writes across twenty-six runs counted twenty runs that predated the field's existence. This fix instead rests on two facts that don't depend on that count — there is no reader for the file, and three of its six fields already live elsewhere.