/** * Story A Acceptance Test — PRI-408 * * UNSKIPPABLE end-to-end acceptance test for the Story A production loop: * pain → admitted candidate → understandable principle → validated rule candidate * → awaiting_owner_review → owner edit/approve → activation queued/completed * → active RuleHost record → later comparable OpenClaw tool call changes behavior * → observation evidence persisted → owner rollback * → later comparable call no longer applies rule * * Uses real SQLite stores + production services + production OpenClaw hook adapter. * No mocks of the production path. No "function was called" assertions. No * "success or failure both pass" assertions. No narrative fixtures masquerading * as production paths. * * Coverage matrix (per PRD): * - owner reject: does not activate * - owner edit: old version cannot activate * - approval/artifact lineage mismatch: refused * - duplicate approval completion: idempotent * - feature disabled: zero side effects * - unrelated task: not triggered * - malformed stored JSON: fail loud * - rollback: active reader no longer returns rule * * ERR checklist: * - ERR-001: All parsed JSON treated as unknown, validated at runtime * - ERR-002: Every failure path carries reason + nextAction * - ERR-004/008: Lineage fields from same source, mismatch tested * - ERR-009: Required fields fail loud * - ERR-015: Idempotency state distinguished from current dispatch * - ERR-025: Production-path test, not demo helper */ export {}; //# sourceMappingURL=story-a-acceptance.test.d.ts.map