You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Policies change. A vendor tightens their default spend cap; a parent loosens family-memory access; a regulation forces a new constraint. Without versioning, every change is destructive — old audit events can't be re-evaluated against the new policy, and there's no "what would have happened" sandbox.
This issue ships policy versioning (every policy update creates an immutable version with a timestamp) plus audit replay (given a time window + target policy version, recompute what the decisions WOULD have been).
Per milestones-roadmap.md §5, this is M4 depth: regulator-grade reproducibility + safe policy iteration for vendors.
Scope (M4)
Policy versioning
Every policy update (per-vendor template, per-actor override, system-default) creates a new version
Version metadata: policy_id, version_number, timestamp, actor_who_changed_it, change_summary
Old versions retained immutably; can be referenced by version number
Policy version is recorded on every audit row that the policy applied to
Audit replay endpoint
Endpoint: POST /v1/audit/replay { time_window, target_policy_version, actor_omni? }
For each event in the window: re-evaluate the policy at the target version + report "what would the decision have been?"
Aggregated view: how many events would have flipped under the new policy
Use cases
Vendor evaluating a stricter policy before deploying it: "If I drop the default payment cap from ¥500 to ¥300, how many devices would have hit approval-required last month?"
Parent reviewing "if I had set this limit yesterday, how many requests would have been denied?"
Regulator export with policy version stamp on every event — supports compliance reconstruction
Diff report
For a replay run, a diff report shows:
Total events
Events where decision flipped (was approved → now denied; or vice versa)
Context
Policies change. A vendor tightens their default spend cap; a parent loosens family-memory access; a regulation forces a new constraint. Without versioning, every change is destructive — old audit events can't be re-evaluated against the new policy, and there's no "what would have happened" sandbox.
This issue ships policy versioning (every policy update creates an immutable version with a timestamp) plus audit replay (given a time window + target policy version, recompute what the decisions WOULD have been).
Per
milestones-roadmap.md§5, this is M4 depth: regulator-grade reproducibility + safe policy iteration for vendors.Scope (M4)
Policy versioning
policy_id,version_number,timestamp,actor_who_changed_it,change_summaryAudit replay endpoint
POST /v1/audit/replay { time_window, target_policy_version, actor_omni? }{ event_id, original_decision, simulated_decision, divergence: bool, simulated_reason? }Use cases
Diff report
For a replay run, a diff report shows:
Out of scope (defer)
Acceptance criteria
Risks
References
docs/spec/plans/milestones-roadmap.md§5 (M4 scope)docs/research/agent-iam-strategy.md§5 Phase 4 — audit replay as regulator surfacedocs/arch.md§15 (audit framing)Effort
~1-2 weeks. Sequencing:
Pickup notes for the next agent / developer
milestones-roadmap.md§5 for M4 framingpermission.check, just applied historically./agentkeys-issue-createskill for follow-up issues (e.g., ML-suggested policy changes for M5)