Skip to content
Nate G. / Vancouver, WA · US

Field note /

Accepted run, empty patch, real change

In one accepted OpenSpec task run, the saved patch file was empty, although Git showed a 273-byte source change. The saved record still passed its integrity check, because that check only covers the bytes that were saved.

CorrectionAgent-Workflow · saved patch evidenceCollector fix merged · clean-machine release acceptance still blocked

How the finding changed

Belief

The patch saved with an accepted, reviewed run would match the source change that had been made.

Evidence

While testing two independently accepted OpenSpec tasks (OpenSpec is a planning tool), one accepted run held a zero-byte patch.diff. A separate Git diff of the same change was 273 bytes. The run's integrity check still passed.

Contradiction

The patch collector inherited an empty external-diff setting, so Git exited with an error. The collector treated that failure as an empty patch and saved it. The integrity check correctly confirmed the saved bytes were unchanged, but the bytes were wrong.

Correction

Collecting a patch and saving it are now separate steps. The collector turns off external diff helpers, rejects any Git error, timeout, cancellation or truncated output, and saves a patch only when collection finished cleanly. A genuinely empty diff is still valid. A failed collection saves no patch. Earlier saved records were not rewritten.

Current claim boundary

The fix was merged in Agent-Workflow PR #77, after PRs #66, #73 and #75. Its author reported 47 focused tests, 10 installed-product OpenSpec acceptance tests, a real OpenSpec 1.13.2 smoke run and a 393-passing technical release check. These are reported results, not a new independent CI run or a clean-machine release check. Clean-machine release acceptance is still blocked. Two-task integration needs a fresh combined acceptance, and merging or pushing the work remains a separate decision.

Evidence

Visitor analytics: page interactions, source category, browser information, and network IP metadata are recorded in private server logs. No analytics cookies are used. Opt out of future engagement beacons in this browser.