Repository navigation
fix: bind plan acceptance to reviewed proposal - #316
Conversation
|
Caution Review failedThe pull request is closed. Walkthrough
Merge Risk:
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
@coderabbitai review |
|
Summary
Follow-up to merged PR #287 for the queued plan-acceptance identity regression. This does not close #245, which is already closed.
Root cause and approach
Acceptance boundaries carried plan ID and version but dropped the proposal fingerprint; Web/TUI text acceptance could also read a proposal only after its worker was queued. Two proposals with the same plan ID/version could therefore let an old acceptance select the replacement. This change snapshots ID/version/fingerprint at CLI, Web, and TUI ingress, carries it through queued execution, and rechecks all three fields before acceptance. The persistence transaction compares the expected proposal identity while atomically committing the Working Plan and acceptance event. Web structured actions and the Go TUI send the fingerprint. Duplicate accepts are idempotent only when the accepted fingerprint matches; stale duplicates return an error.
Validation
full-python-312was skipped by the configured CI selector.fastapi,rich, andrequestsare unavailable.make lintandgit diff --checkpass;make checkstops becauserequestsis unavailable.Risk and limitations
Clients accepting a proposal must send its fingerprint; missing or stale fingerprints are rejected and require refreshing the proposal. Merged as commit
85cbb9f8d37a5d4bdcc0ce664bea2f5a898e9388. The required CI aggregate passed; the full-python-312 job was skipped by the configured CI selector.Summary by CodeRabbit