Skip to content

authz: remove module-callable decision authority minting helper #170

Description

@seonghobae

Problem

Fresh exact-head review of PR #65 found a distinct issuance-provenance bypass after #169's direct-constructor repair. AuthorizationDecision(...) was sealed, but module-level _decision(...) remained directly callable. It accepted caller-constructible _RequestSnapshot / _PolicySnapshot values plus allowed=True, entered a temporary decision-issuance ID capability itself, and returned fully issued authority without evaluate_purpose_bound_access(...). Python's leading underscore is a naming convention, not an executable trust boundary.

Test-first repair in #65

RED 7aebe4e4190c8742ed9047db9886778a0f010b42 captured fabricated-snapshot helper issuance. Production 2b522170adfadcc2b3803183482a23cad4efca3c removed _DECISION_ISSUANCE_IDS, made the public constructor permanently non-authoritative, made the legacy helper fail closed, and moved actual issuance under canonical evaluation. Successor 1e0c124ad5a5f24c62d310b7268c5e5ebd7721c8 fixed absence of the global temporary issuance capability as an invariant.

Independent review of that successor then found #171: the decision snapshot registry itself was still consumer-mutable. That is a separate authority-storage capability defect, not evidence that #170 should be closed. #171 RED 98ad797a…/fc4fb5c… and production 3ea988edf6bf50d15765784b8b85725d055f4af5 move backing registry mutation into evaluator-private closure state and expose only a read-only mapping view.

Acceptance

Keep #170 open together with #171 until canonical #65 exact head 3ea988edf6bf50d15765784b8b85725d055f4af5 has fresh terminal Keyverse/People/repository-integrity/security evidence at the owned 100% statement/branch contract and independent current-head review. Predecessor evidence does not transfer. Do not copy owner source into #163/#165 or consume mutable #65 as a released dependency.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions