Thanks — that split is the useful one. FCoP as the coordination protocol (TASK / REPORT / ISSUE / REVIEW, with location as lifecycle) and a separate runtime laying the rails matches how we use probes: the script emits a compact, deterministic projection; the protocol or reviewer should carry a reference to that result plus the review state. The worker may produce the probe output. It must not rewrite the acceptance contract or sign the receipt.
On -AgentSummary: yes. A last-message “tests passed” is another prose self-report. The one-liner is bound to the process exit code, so an agent cannot honestly claim OK while the script failed. That is still evidence, not acceptance. Write-up: One-line script outcomes. Public artefacts: spine-cursor 0.3.2 (spine-agent-probes 0.1.1) and spine-automation 0.1.6.
Where the receipt lives. We keep the whole chain in Git on purpose: inspectability and portability. Done criteria, probe tokens, diffs, and a named acceptor all clone with the repo; a third party can re-run the same probes. We have not moved the acceptance receipt outside the worker’s working tree. Viewing surfaces that live outside Git are not receipts.
The honest gap is the one you named. If the worker can write the tree, it can also rewrite the receipt. Our separation of duties is therefore role and policy (claimant ≠ acceptor; the implementer is not the gate that marks done; push and tag stay a separate VCS role) rather than cryptographic inability to touch the artefact. An out-of-tree or CI-signed receipt is the stronger authority model. At student/solo scale, Git-in-tree plus a named human accept won.
Version the criteria first. We write done criteria into the plan before the trajectory. A later criteria change invalidates an existing review — the old accept applied to a different contract. We still hash the plan plus scoped files as an optional closeout seal; re-verify reports drift if those bytes change. Two limits remain: the seal is optional, and it lives in the same tree, so the worker can rewrite the seal file too. Drift is integrity, not an accept lock.
The probe-shaped analogue is now in the public envelope: optional criteriaHash (SHA-256 of the UTF-8 criteria bytes at probe time) and contractId. Helpers Get-SpineCriteriaHash and Test-SpineProbeCriteriaBinding fail an unbound PREFIX-OK — a summary line alone is not enough. The field does not self-accept; the acceptor still has to run the binding check. Five-field envelopes without those keys stay valid as unbound evidence. Contract § 3.1: agent-summary-probe-contract.md.
Happy to compare notes if you version the FCoP REVIEW record against a criteria hash while a Spine-style probe stays the runtime evidence blob.