S1 outcome — Remove the snapshot mutation exception
State: resolved 2026-08-23.
Outcome
ADR 072
superseded ADR 045's field placement instead of implementing this plan's
one-field exception. The tracked ingest now owns durable genre. A local
snapshot may contain a provisional capture-time genre, but ingestion records
its closer-reading classification on the report and never edits the snapshot.
This is a stronger boundary than the planned captured-content envelope:
snapshots are whole-file immutable after capture, and snapshot_sha256 covers
the exact bytes that grounded the ingest. The source collection, both source
types, and cp-skill-ingest agree that snapshotting may create the ignored
reading copy while ingestion writes only the tracked report.
Acceptance evidence
- The ingest schema requires
genreandsnapshot_sha256; the snapshot schema makesgenreoptional. cp-skill-ingestcopies no snapshot genre, asks the drafting worker to set genre after reading, and verifies that the snapshot checksum is unchanged across the handoff.- Exact recapture, checksum mismatch, and absent-material behavior are covered by the snapshot resolver tests without any ingest or snapshot rewrite.
- I3 retains one follow-through obligation: its future installed sources template must project this resolved contract.