Reconstruct the attributed mutation history from the stamps.
derive-changelog (reconstruct mutations)
Intent — A command that reconstructs the document's mutation history from the embedded stamp registry, turning the attribution stamps into a readable, attributed ChangeLog after the fact.
| Summary | Reconstruct the attributed mutation history from the stamps. |
| Target | Product · Provenance & attribution |
| Form | audit-trail |
| Enforcement | Hard (deterministic) · audit record — a reproducible reconstruction from the embedded stamps |
Motivation — the failure it kills
The stamps are embedded in the artifact, but embedded data isn't useful until it can be read back into a coherent history. Without a reader, attribution is present but inert — you have the evidence and no way to assemble it into "pass X made change Y." The failure is attribution that exists but can't be consumed, which shows up exactly when someone needs the history for RCA or user transparency.
Why it's not just "read the stamps by hand" (or "diff input vs output")
Reading raw stamps by hand is tedious and error-prone, and an input-vs-output *diff shows what changed but not who (which pass) or why. derive-changelog reconstructs the attributed* history from the stamp registry: pass → change, each entry carrying its visibility. An attributed reconstruction from provenance answers questions a raw diff cannot. It is the consumer that makes emitting the stamps worthwhile: no reader, no reason to stamp.
Mechanism
derive-changelog reads the embedded stamp registry and emits a ChangeLog JSON: each entry is a mutation attributed to its pass, with its visibility (Debug / Preserved). It runs after remediation against the produced artifact.
Prerequisites
- The stamps must exist and be structured. mutator-stamps is a hard dependency.
- A reader that knows the stamp schema and reconstructs the ordered, attributed history.
Consequences & costs
- Only as complete as the stamps. An attribution gap (which the F10 lint exists to prevent) becomes a hole in the reconstructed history.
- Schema-coupled. It depends on the stamp registry's shape staying stable across versions.
Known uses
- The
derive-changelogcommand (stamp registry → ChangeLog JSON, per pass, with visibility).
Related mechanisms
- Consumer — reads mutator-stamps: it is the read side of the attribution substrate.
- Enabler — of RCA and user-facing change transparency (a human reads the ChangeLog).
- See also (counterpart) — f10-wiring-lint guarantees the stamps this reader depends on are complete.