28 lines
1.4 KiB
Markdown
28 lines
1.4 KiB
Markdown
# Policy Engine · Simulation Bridge Prep (POLICY-ENGINE-30-002)
|
|
|
|
- **Date:** 2025-11-20
|
|
- **Depends on:** Overlay projection (30-001)
|
|
- **Working directory:** `src/Policy/StellaOps.Policy.Engine`
|
|
|
|
## Simulation request schema
|
|
- `tenant` (string)
|
|
- `rules[]` (string) — ruleIds to simulate; if empty, simulate all active rules.
|
|
- `overlays[]` (optional) — inline `OverlayProjection` objects to test hypothetical changes without persisting.
|
|
- `paths[]` — array of `PathScope` inputs.
|
|
- `mode` (`preview|whatif`) — `preview` returns decisions only; `whatif` also returns delta vs current overlays.
|
|
- `seed` (int, optional) — for deterministic randomization if simulations sample paths.
|
|
|
|
## Response schema
|
|
- `decisions[]` — per PathScope result: `pathScope`, `decision`, `reasons[]`, `ruleId`, `version`, `effectiveAt`.
|
|
- `deltas[]` (only for `whatif`) — entries with `ruleId`, `baselineDecision`, `candidateDecision`, `diffReason`.
|
|
- `metrics` — echo of counters: `evaluated`, `allowed`, `denied`, `warned`, `deferred` for quick UI.
|
|
|
|
## Determinism rules
|
|
- When `seed` absent, use fixed seed `0xC0DEC0DE` for any randomized sampling.
|
|
- Responses ordered by input `paths[]` index, then `ruleId`.
|
|
|
|
## Acceptance for prep completion
|
|
- Simulation schemas are frozen; downstream UI/CLI harnesses can rely on shapes and ordering.
|
|
- Delta semantics clarified to unblock change-event publication (30-003).
|
|
|