{
	"schema": "grainulator.handoff-example.v1",
	"recordedAt": "2026-09-07T22:51:12.551Z",
	"compilerVersion": "0.2.1",
	"provenance": "Generated by scripts/record-handoff.mjs using the local evidence compiler and output guard. Synthetic release claims; real compiler and guard results. No model was called, no brief was written, and no release was published.",
	"reproduction": "node scripts/record-handoff.mjs",
	"scope": "The guard validates compilation freshness for an output path when the host invokes it. It does not verify the truth of claims or enforce a release gate on its own.",
	"stages": [
		{
			"id": "checked",
			"title": "The handoff is checked",
			"explanation": "The compiler records which evidence it checked. The output guard allows the brief because that evidence still matches.",
			"claim": "The migration regression check passed.",
			"decision": {
				"allow": true
			},
			"inputHash": "sha256:7acf59d65eb1262ef38963d080ff784bc43376fb9d24049b57033b78fe070683",
			"compiledHash": "sha256:7acf59d65eb1262ef38963d080ff784bc43376fb9d24049b57033b78fe070683",
			"compilationStatus": "ready"
		},
		{
			"id": "changed",
			"title": "The evidence changes",
			"explanation": "A later check fails. The file timestamp is preserved, reproducing the old bug. The new guard checks the content and blocks the stale handoff.",
			"claim": "The migration regression check failed after the latest change.",
			"decision": {
				"allow": false,
				"reason": "BLOCKED: Compilation is stale or uncertified. Run grainulator compile."
			},
			"inputHash": "sha256:cddc03f3ff55ba3acb894e2bae14434cb332c12896e36cae3aad6b66afc9b63a",
			"compiledHash": "sha256:7acf59d65eb1262ef38963d080ff784bc43376fb9d24049b57033b78fe070683",
			"compilationStatus": "ready"
		},
		{
			"id": "rechecked",
			"title": "The brief can reflect the failure",
			"explanation": "Recompiling binds the brief to the changed evidence. This permits writing an accurate brief; it does not approve the release or make the failed check pass.",
			"claim": "The migration regression check failed after the latest change.",
			"decision": {
				"allow": true
			},
			"inputHash": "sha256:cddc03f3ff55ba3acb894e2bae14434cb332c12896e36cae3aad6b66afc9b63a",
			"compiledHash": "sha256:cddc03f3ff55ba3acb894e2bae14434cb332c12896e36cae3aad6b66afc9b63a",
			"compilationStatus": "ready"
		}
	]
}
