fix(review): scope fast-path action IDs by run#519
Conversation
Architect reviewNo findings. The change is minimal and ticket-scoped, preserves legacy rows, covers both collision paths, and uses the existing marker rendering flow. Focused tests and the full suite pass (2,758 tests across 66 packages). |
TDD assessment
The legacy-row compatibility checks and both fast paths are otherwise covered without over-mocking. |
Post-TDD architect reviewNo blockers, majors, or minors. Nit: Full suite: 2,761 tests across 66 packages. |
There was a problem hiding this comment.
Automated PR Review
Reviewed commit: 349c45a1d6f4
Profile: codex-rianjs-bot - Posting as: rianjs-bot[bot]
Summary
| Reviewer | Findings |
|---|---|
| go:implementation-tests | 0 |
Reviewer Coverage
| Reviewer | Status | Inspected | Skipped | Constraints |
|---|---|---|---|---|
| go:implementation-tests | complete_constrained | internal/gateio/gateio.go, internal/gateio/gateio_test.go | unavailable | Focused Go test command could not complete because the local compiler invocation mishandled the workspace path containing spaces; review was based on the diff and existing test seams. |
0 PR discussion threads considered. 0 summarized; 0 resolved.
Completed in 1m 07s | unavailable | gpt-5.6-terra | cr 0.10.260
| Field | Value |
|---|---|
| Model | gpt-5.6-terra |
| Reviewers | go:implementation-tests |
| Engine | codex_cli · gpt-5.6-terra |
| Reviewed by | cr · rianjs-bot[bot] |
| Duration | 1m 07s wall · 44s compute |
| Cost | unavailable |
| Tokens | 131.7k in / 1.4k out |
Per-workstream usage
| Workstream | Model | In | Out | Cache read | Cache create | Cost | Duration |
|---|---|---|---|---|---|---|---|
| orchestrator-selection | gpt-5.6-terra | 15.5k | 153 | 10.5k | unavailable | unavailable | 5s |
| go:implementation-tests | gpt-5.6-terra | 84.2k | 1.1k | 54.0k | unavailable | unavailable | 36s |
| orchestrator-rollup | gpt-5.6-terra | 32.1k | 189 | 25.6k | unavailable | unavailable | 2s |
Final architect passNo blockers, majors, minors, or post-review architectural drift at HEAD The prior nit about the two-execution regression remains acknowledged; the test is retained because it covers a distinct post-fix-to-post-fix collision invariant identified by the independent TDD assessment. |
Summary
Root cause
Both fast paths allocated a fresh run but inserted process-wide constant action IDs into
planned_actions, whereaction_idis the table-wide primary key. The first persisted approval override or repair action therefore blocked every later execution of that path in the same ledger.Empirical validation
approval-override-submit-reviewalready posted for PR fix: make review workbenches location-independent and resume-safe #507planned_actions.action_idis the primary keyapprove=true, then failed the insert with SQLite constraint 1555Test plan
go test ./internal/gateio ./internal/ledgergo test ./...: 2,758 tests passed across 66 packagesgolangci-lint run: 0 issuesThe independent GPT-5.6 Sol problem/plan review converged with no blockers or majors. Its compatibility finding was incorporated by asserting the seeded legacy rows remain unchanged.
Note:
make checkcurrently stops on pre-existing merged-maintidy/fmt drift from #517 (github.com/gobwas/globremains marked indirect, plus three unrelated files requirego fmt). Those unrelated changes are intentionally excluded from this PR; the remaining format, lint, test, and build gates passed.Closes #518