diff --git a/docs/15-milestones.md b/docs/15-milestones.md index 8717205..07443ba 100644 --- a/docs/15-milestones.md +++ b/docs/15-milestones.md @@ -12,9 +12,9 @@ bullets into issues. Each bullet is scoped to concrete files. (PyPI); machine-readable registry at `schemas/index.json`. - [x] Conformance harness: every schema well-formed, refs resolve, valid/invalid fixtures per schema (`tests/conformance.py`). -- [ ] Publish `@wasmagent/protocol@0.1.0` to npm and `wasmagent-protocol==0.1.0` +- [x] Publish `@wasmagent/protocol@0.1.0` to npm and `wasmagent-protocol==0.1.0` to PyPI; record both in the org release ledger. -- [ ] Strip local schema copies from `wasmagent-js` (`packages/compliance/schemas/`, +- [x] Strip local schema copies from `wasmagent-js` (`packages/compliance/schemas/`, `packages/core/src/ranking/schemas/rollout-wire.schema.json`) and depend on the npm package. - [ ] Strip local schema copies from `trace-pipeline` (`schemas/*.schema.json`) @@ -25,7 +25,7 @@ bullets into issues. Each bullet is scoped to concrete files. - [ ] Migrate `wasmagent-proxy` Rust `aep-core` types to generate from / validate against `schemas/aep/aep-record.schema.json`. -- [ ] Point `wasmagent-train-replay` `EpochEvidenceBundle` at the shared AEP +- [x] Point `wasmagent-train-replay` `EpochEvidenceBundle` at the shared AEP record schema for its evidence envelope. - [ ] Map `open-agent-audit` `schemas/v0.1/*` adapter onto the canonical AEP record; document the version-skew adapter. @@ -40,3 +40,20 @@ bullets into issues. Each bullet is scoped to concrete files. Python `TypedDict`s so consumers get types, not just validation. - [ ] Add a conformance test suite consumers can run against their own emitters (`aep-conformance` fixtures published in the package). + +## Milestone 4 — Evidence types beyond execution + +AEP today covers execution evidence (`aep-record`). Memory / Replay / Checkpoint +/ Artifact each enter the protocol as a **new evidence record under AEP** sharing +one signature envelope — not a rename to "ARP" (rejected: dilutes the provable +positioning and forces an org-wide breaking rename). Each bullet below is a +single self-contained schema deliverable; land one only after the runtime +feature it describes is real (protocol is sedimented, not designed up front). + +- [ ] Add `schemas/aep/evidence-envelope.schema.json` — shared base (schema_version, signature{alg,key_id,sig}, trace_id, created_at_ms) that every evidence record `$ref`s; register in `schemas/index.json` with a valid+invalid fixture under `tests/fixtures/`. +- [ ] Refactor `schemas/aep/aep-record.schema.json` to `$ref` the shared `evidence-envelope` for its signature/version fields; keep field set identical (no breaking change), add fixture proving equivalence. +- [ ] Add `schemas/aep/memory-evidence.schema.json` — tamper-evident memory read/write record (keys: mem_ref, op enum[read,write], digest, prior_digest, timestamp_ms); register in index + valid/invalid fixtures. +- [ ] Add `schemas/aep/replay-evidence.schema.json` — deterministic-replay attestation (keys: run_id, seed, input_digests[], output_digest, engine_version); register in index + valid/invalid fixtures. +- [ ] Add `schemas/aep/checkpoint-evidence.schema.json` — signed checkpoint/fork record (keys: checkpoint_id, parent_run_id, fork_of, state_digest, created_at_ms); register in index + valid/invalid fixtures. +- [ ] Add `schemas/aep/artifact-attestation.schema.json` — produced-artifact provenance (keys: artifact_uri, digest, produced_by_run_id, tool_name, signature); register in index + valid/invalid fixtures. +- [ ] Update README + `docs/CONTRACT-CHANGE-PROCESS.md` to list the new evidence types and their consumer repos once each ships.