Skip to content

Egress origin-closure stage: block cross-identity data deterministically #227

Description

@George-RD

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

  • The deterministic core runs an origin-vs-recipient stage after disclosure-coverage; DisclosurePolicyKey/DisclosurePolicy shape unchanged.
  • An item originating from counterparty X is BLOCKED from egress to counterparty Y; owner/system/public origins pass.
  • The stage consults effectively_allows_provenance_label on the grant for any widening.
  • Worker-requested and kernel-origin/proactive dispatches hit the identical check (no second ungated path).
  • gate() stays pure; the dead EgressClassifier is not resurrected.
  • Table-driven core unit tests over origin × recipient × sensitivity × egress × policy × caveat, plus a production-entering disclosure_regression_tests case (X-to-Y blocked; kernel-origin path).

Blocked by

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentFully specified, ready for an AFK agent

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions