Problem
A live approval-override review failed before posting:
ledger: insert planned action: constraint failed: UNIQUE constraint failed: planned_actions.action_id (1555)
The approval-override and partial-repair fast paths allocate a fresh run, but each inserts a process-wide constant planned-action ID:
approval-override-submit-review
repair-submit-review
The ledger defines planned_actions.action_id as a table-wide primary key, so the first persisted action with either constant prevents the same fast path from running again in that ledger.db, even for a different PR and run.
Empirical evidence
This was reproduced and validated without mutating GitHub or local review data:
Expected behavior
Every planned action must have a globally unique ID. A prior approval override or repair action must not block a later fast-path execution.
Acceptance criteria
- Approval-override planned-action IDs are scoped by their owning run.
- Partial-repair planned-action IDs are scoped by their owning run.
- Existing legacy constant-ID rows remain valid; no ledger migration or purge is required.
- Posted action markers use valid marker-safe IDs.
- Regression tests cover collisions with pre-existing legacy rows for both paths.
- The full test suite passes.
Problem
A live approval-override review failed before posting:
The approval-override and partial-repair fast paths allocate a fresh run, but each inserts a process-wide constant planned-action ID:
approval-override-submit-reviewrepair-submit-reviewThe ledger defines
planned_actions.action_idas a table-wide primary key, so the first persisted action with either constant prevents the same fast path from running again in thatledger.db, even for a different PR and run.Empirical evidence
This was reproduced and validated without mutating GitHub or local review data:
approval-override-submit-reviewalready posted for PR fix: make review workbenches location-independent and resume-safe #507 under run33906726-3fed-45b4-b7a5-e17c6a69d90fon 2026-07-12.PRAGMA table_info(planned_actions)confirmedaction_idis the table primary key, whilerun_idis not part of that key.approve=true, then insertion failed with the unique constraint.Expected behavior
Every planned action must have a globally unique ID. A prior approval override or repair action must not block a later fast-path execution.
Acceptance criteria