Skip to content

Store: reserve identity audit dimension (AuditEvent.actor + bootstrap/mismatch kinds) #219

Description

@George-RD

Parent

#208 (Spec: deepened Store interface)

Blocked by

#215 (with_audited_effect), #201 (Retype ApprovalRecord.approved_by and add AuditEvent.actor — typed owner identity spec #197)

Deliverables

Fill the reserved identity audit dimension: move owner facts out of reason strings into a typed dimension, without a resolution write path and without persisting raw identifiers.

  • Carry the actor via AuditEvent.actor: Option<PrincipalId> (delivered by Retype ApprovalRecord.approved_by and add AuditEvent.actor #201) instead of the store/identity.rs:245 identity.bound reason string owner={} identity={}.
  • Add audit kinds for bootstrap binding and owner-config-mismatch rejection (beyond the single identity.bound kind), emitted through with_audited_effect.
  • Resolution paths (get_identity, principal_exists) stay read-only — no write path added.
  • Identifiers stay hash-only (identity_identifiers.value_hash); no raw identifier is ever persisted.

Rationale in spec #208 (decision D-007). Aligns to typed-owner-identity spec #197 D-003 (audit actor dimension). Independent of the T6 conn flip.

Verification

./scripts/check.sh green. Test: an identity.bound (and the new kinds) event carries actor = Some(principal_id); resolution remains read-only; no raw identifier appears in any persisted row.

🤖 Generated from spec #208 (wayfinder #189, map #182).

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