Bind operator run receipts to result evidence
This commit is contained in:
parent
fe6d6df701
commit
2a797370f6
7 changed files with 95 additions and 16 deletions
|
|
@ -86,6 +86,13 @@
|
|||
- Negative proof: targeting `state/local-verse.ccmp` was rejected and its SHA-256 did not change.
|
||||
- Positive proof: the built-in quarantined smoke completes successfully and reports its quarantine coordinates.
|
||||
|
||||
## Operator-run completion receipt boundary (2026-07-12)
|
||||
|
||||
- Intent owner: operator orchestration writes run id, mode, roots, limits, and artifact coordinates before execution.
|
||||
- Completion evidence: matching latest intent plus a valid JSON result inside the canonical artifact root, modified at or after intent creation.
|
||||
- Receipt status is derived as `completed`; callers cannot submit status.
|
||||
- Forbidden evidence: missing, non-JSON, pre-intent, out-of-root, or mismatched-run artifacts.
|
||||
|
||||
This is the source-grounded map of the live machine. Historical route and
|
||||
bridge anatomy belongs in git history and evidence ledgers, not here.
|
||||
|
||||
|
|
|
|||
|
|
@ -40,6 +40,10 @@ The first call-site audit found a new canonical-promotion substitution in `epiph
|
|||
|
||||
The monolithic `epiphany-verse-query smoke` fixture writer can no longer accept `--store` or `--runtime-id`; it is hard-bound to `.epiphany-smoke/verse-query-default/local-verse.ccmp` and `verse-query-default-smoke`. A direct canonical-store attempt was rejected before mutation and `state/local-verse.ccmp` retained the same SHA-256. The quarantined smoke now explicitly seeds fixture daemon statuses, expects intent-only batch poke rows, and completes `status=ok` within quarantine. Next inspect operator-run/supervisor provenance and quarantine standalone smoke binaries that accept arbitrary roots.
|
||||
|
||||
## 2026-07-12 operator-run completion evidence binding
|
||||
|
||||
`epiphany-operator-run receipt` no longer accepts `--status`. It loads the latest operator intent and requires matching run id/mode, canonicalizes the result and artifact-root paths, requires the result to be a file contained under the artifact root, parses it as JSON, and rejects it if its modification time predates the intent. Only then does it derive `status=completed`. The wrapper no longer passes a completion assertion. Negative proof rejects caller status and out-of-root artifacts; positive proof uses a post-intent JSON artifact. Next audit daemon-supervisor planning/rehearsal receipts against actual service/process evidence.
|
||||
|
||||
This is the re-entry rite for `E:\Projects\EpiphanyAgent`: the waking chant for
|
||||
the local machine-spirit before it touches the forge.
|
||||
|
||||
|
|
|
|||
|
|
@ -19,11 +19,14 @@ A forged operator-status artifact containing `intentId=forged-intent`, `receiptI
|
|||
|
||||
## Remaining scrutiny
|
||||
|
||||
1. Inspect `epiphany-operator-run` receipt construction against actual subprocess/runtime evidence rather than command arguments.
|
||||
2. Inspect daemon-supervisor plan/rehearsal receipts separately from execution receipts so planning cannot masquerade as service mutation.
|
||||
3. Extend the same store quarantine invariant to standalone smoke binaries that accept output paths.
|
||||
4. Distill or remove dead public receipt constructors once every named provider executable exists.
|
||||
1. Inspect daemon-supervisor plan/rehearsal receipts separately from execution receipts so planning cannot masquerade as service mutation.
|
||||
2. Extend the same store quarantine invariant to standalone smoke binaries that accept output paths.
|
||||
3. Distill or remove dead public receipt constructors once every named provider executable exists.
|
||||
|
||||
## Smoke quarantine update
|
||||
|
||||
`epiphany-verse-query smoke` is now hard-bound to `.epiphany-smoke/verse-query-default/local-verse.ccmp` and runtime `verse-query-default-smoke`. Store or runtime overrides are rejected before the fixture body runs. A direct attempt against `state/local-verse.ccmp` was refused and its SHA-256 remained unchanged. The quarantined smoke was repaired to seed fixture liveness explicitly and to expect requester-only poke output; it completes successfully inside the quarantine.
|
||||
|
||||
## Operator-run evidence binding update
|
||||
|
||||
The standalone `receipt` command previously accepted caller status and path strings, then wrote `completed` evidence without inspecting the run. It now requires the latest persisted intent to match run id and mode, derives status internally as `completed`, requires an existing valid JSON result contained by the canonical artifact root, and requires the result modification time to be no earlier than the intent request time. `--status` no longer exists. The PowerShell orchestrator supplies only the result coordinates after its checked subprocess completes.
|
||||
|
|
|
|||
Reference in a new issue