Parent
Spec: provenance labels with typed identity — #220 (wayfinder #193, map #182).
What to build
The proving tracer bullet: make the deterministic egress gate consult the label's typed-identity origin so cross-identity data is blocked end-to-end. The pure disclosure core gains a second ordered stage AFTER the existing disclosure-coverage stage — an origin-vs-recipient closure. An outbound item whose ProvenanceOrigin is a Counterparty other than the bound recipient counterparty (and is not Owner/System/Public) is blocked unless authorized, consulting effectively_allows_provenance_label on the grant. Owner/system/public items pass. The check runs identically on worker-requested and kernel-origin/proactive (Unattended workhorse) dispatch paths. DisclosurePolicyKey/DisclosurePolicy shape is unchanged; the stage is inserted at the core-vs-preparation seam from #205; gate()'s dead EgressClassifier stays deleted (#183) and is not resurrected. No LLM judgment — typed-field/digest comparison only.
Promise: Immune system. Users: Bell, Auditor, Unattended workhorse.
Acceptance criteria
Blocked by
Parent
Spec: provenance labels with typed identity — #220 (wayfinder #193, map #182).
What to build
The proving tracer bullet: make the deterministic egress gate consult the label's typed-identity origin so cross-identity data is blocked end-to-end. The pure disclosure core gains a second ordered stage AFTER the existing disclosure-coverage stage — an origin-vs-recipient closure. An outbound item whose
ProvenanceOriginis aCounterpartyother than the bound recipient counterparty (and is notOwner/System/Public) is blocked unless authorized, consultingeffectively_allows_provenance_labelon the grant. Owner/system/public items pass. The check runs identically on worker-requested and kernel-origin/proactive (Unattended workhorse) dispatch paths.DisclosurePolicyKey/DisclosurePolicyshape is unchanged; the stage is inserted at the core-vs-preparation seam from #205;gate()'s deadEgressClassifierstays deleted (#183) and is not resurrected. No LLM judgment — typed-field/digest comparison only.Promise: Immune system. Users: Bell, Auditor, Unattended workhorse.
Acceptance criteria
DisclosurePolicyKey/DisclosurePolicyshape unchanged.effectively_allows_provenance_labelon the grant for any widening.gate()stays pure; the deadEgressClassifieris not resurrected.disclosure_regression_testscase (X-to-Y blocked; kernel-origin path).Blocked by