Provenance — history
The dated record of how Provenance got here, moved out of the spec on 2026-10-20 because a reader does not need it to use the spec today. The spec keeps every section spec-format.md requires and its Deleted: tombstones; everything smaller is in git log -- atoms/provenance.md.
Decisions
Entries that record a round or a migration rather than a turn the pattern took.
-
2026-09-12 — Rewritten in GRACE lang v0.39; nothing but language changed. Chose: labelled rules in fenced blocks, the six actions as a signature block, Invariant 1 through 8 keeping their numbers and their sub-rule numbering, every success effect conditioned on a declared admitted originate / admitted transfer / admitted transform / admitted disclose / admitted archive so no effect binds a refused call (Hard invariant 16), rejection precedence carried by
Operation 11,Operation 16andOperation 27rather than by a WHY note, the seven acceptance areas raised toCheck 1.1 through 7.4, the Non-goals-and-edge-cases prose split into aNon-goal 1 through 22family and five edge-case families (String,Clock semantics,Concurrency,Atomic writes,Correction), the Composition notes prose raised toComposition note 1 through 8with the named compositions moved into the WHY. Over: the prose spec. Because: the migration plan;cites.py --into provenancefound nothing in the corpus citing this atom by label, so the rewrite carried no frozen-number risk. -
2026-09-12 — Id uniqueness and the archived read are stated once. Chose: the former Invariant 9 (no id reuse) is carried by
Identity 15andIdentity 16in the Identity model, and the former archived-chain-admits-a-read invariant byOperation 53on the action surface; the durability invariant took the freed number 9 — a renumbering Hard invariant 26 and Hard invariant 27 forbid, which left Chain of Custody’s citation of Provenance’s ten invariants pointing past the end; council read 95 returned durability to Invariant 10 and tombstoned Invariant 9. Over: keeping both copies for emphasis. Because: Authority 3 — two rules must not claim authority for one proposition, and the identity model is where identity rules sit. Both duplicates were found by the checker, not by a reader. -
2026-09-12 — The transferred entry carries the custodian pair in place of a single custodian reference, not beside it. Chose:
State 4bounded to a non-transferred entry,State 5stating the exclusion,Invariant 7.1andCheck 1.1bounded to match. Over: the rewrite’sEVERY entry MUST carry a custodian_ref, which was mine and wrong. Because: the prose State section said the single field “is replaced by” the pair, and the preserved [Custodian Reference] term entry says so too — a rewritten rule contradicted a term entry the migration carried across byte-identical. Found by GLM on a first council read of this atom; the witness was the untouched half of the document, which is the argument for preserving term entries verbatim through a migration.
Migration notes
- 2026-09-15 — Clock dependence 1 and 2, cut out of Clock semantics and Operation. Whether a guard’s decision may depend on the clock reading, and under what condition — one question, stated in its own family rather than among the rules about what the clock is and what a transition stamps from it. Both rules keep the words they carried as Clock semantics 5 and Operation 57; only the heading changed.
- 2026-09-15 — Capability requirement 1, moved from Operation. What the deployment supplies, which is what the family means. The rule stood under
Operation— one action’s rules — while naming no action, because this spec was migrated before the standard family had a home in an atom; the five atoms migrated a day later put the same obligation here. The words are the words the rule carried (council read 76).