Parent roadmap: #127
Parent phase: #269
Parent epic: #270
Goal
Add stable snapshot ids to recommendations and action packets so every later explanation can refer to one durable decision artifact.
Requirements
- Assign a deterministic or durably persisted snapshot id when a recommendation is created.
- Thread the snapshot id through API, MCP, and control-panel packet shapes where recommendations are already returned.
- Keep this focused on the id/envelope only; do not implement provenance, counterfactuals, or replay UI here.
Acceptance criteria
- Every recommendation emitted by the supported agent path has a snapshot id.
- Existing callers can continue reading recommendations while new callers can key off the snapshot id.
- Public output exposes only the snapshot id and public-safe envelope fields.
- This is not an autonomous PR bot and not public scoring.
Validation expected
- Unit fixtures for snapshot id creation and packet serialization.
- Public/private boundary coverage for the id envelope.
- npm run test:ci.
Parent roadmap: #127
Parent phase: #269
Parent epic: #270
Goal
Add stable snapshot ids to recommendations and action packets so every later explanation can refer to one durable decision artifact.
Requirements
Acceptance criteria
Validation expected