Parent
Spec: provenance labels with typed identity — #220 (wayfinder #193, map #182).
What to build
Make each classified datum carry its typed-identity origin. Generalize the proven learned_artifacts::Provenance::ProducedBy lineage pattern so its identity binding widens from source_scope: Ulid to a typed ProvenanceOrigin, and carry that origin on each classified briefcase item alongside its disclosure_class. The binding is immutable and append-only: a later authorization or reconfirmation never rewrites a datum's origin. Existing source_scope lineage and the counterparty-erasure (counterparty_erasure) behaviour are preserved (AD-140).
Promise: Immune system. Users: Bell, Auditor.
Acceptance criteria
Blocked by
Parent
Spec: provenance labels with typed identity — #220 (wayfinder #193, map #182).
What to build
Make each classified datum carry its typed-identity origin. Generalize the proven
learned_artifacts::Provenance::ProducedBylineage pattern so its identity binding widens fromsource_scope: Ulidto a typedProvenanceOrigin, and carry that origin on each classified briefcase item alongside itsdisclosure_class. The binding is immutable and append-only: a later authorization or reconfirmation never rewrites a datum's origin. Existingsource_scopelineage and the counterparty-erasure (counterparty_erasure) behaviour are preserved (AD-140).Promise: Immune system. Users: Bell, Auditor.
Acceptance criteria
ProvenanceOriginalongside itsdisclosure_class.Provenance::ProducedBy's identity binding is expressed as aProvenanceOrigin(generalizingsource_scope: Ulid), preserving the existing producing-scope semantics.counterparty_erasure) invalidation still resolves by producing identity (AD-140); existing erasure tests stay green.scripts/check.shstays green.Blocked by