Skip to content

Reconcile archive and restore after Paper card reselection - #3082

Merged
Chris0Jeky merged 4 commits into
mainfrom
codex/3060-archive-settlement-reselection
Sep 12, 2026
Merged

Chris0Jeky merged 4 commits into
mainfrom
codex/3060-archive-settlement-reselection

Conversation

@Chris0Jeky

@Chris0Jeky Chris0Jeky commented Sep 12, 2026

Copy link
Copy Markdown
Owner

Switching Paper inspector A to B and back while A's archive or restore request was pending left the replacement inspector with the old lifecycle state after success. Its next action could submit a redundant request and receive a version conflict. The selected matching inspector now receives the committed lifecycle and updatedAt before the shared pending lock is released, while preserving newer local draft edits.

The focused regression covers both archive and restore, success and failure, unrelated selection, focus, event suppression and the returned draft. Seven cases pass; the two stale lifecycle directions failed before the fix. One independent Terra review is clean. The implementation's three source blobs are unchanged from reviewed cddd7c1 after incorporating recovery integration #3081. STATUS and MASTERPLAN record the candidate.

Combined frontend qualification: 6,909 passed, three existing skips, 445 files; full lint, typecheck and production build pass. The first source-only full-suite attempt was interrupted without a conclusion; the completed combined run provides the final result. The tested runtime tree is unchanged at the published head. No new backend, browser, physical-device or screen-reader acceptance is claimed for this frontend slice.

Recovery integration #3081 landed as 96f4b7c. This branch includes that delivered main base with no additional runtime or test changes; the PR diff is limited to the archive fix, its regression and the two progress records. Exact-head/base ci-required.yml remains required before merge. The bounded review confirmed a MEDIUM follow-up: after a late restore, form and assignment saves still retain old write baselines and can receive a 409 while preserving the draft. This is tracked in #3083 with explicit committed-version acceptance. Broader #3023 draft work and parked #3057 permission work remain separate. Existing human actions in OUTSTANDING_TASKS.md are unchanged.

Closes #3060

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 12, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-12T22:23:19.589869Z 29a3142 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@Chris0Jeky Chris0Jeky left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Independent Terra review: CLEAN at cddd7c1 against main160818440214a18c60392576452e28e9e283bc76.

The successful inactive keyed-child callback delivers the committed card before releasing shared pending ownership. The CardModal host accepts reconciliation only for the current matching board/card, preserves the selected form draft, and supplies the committed updatedAt to the replacement action. Stale-parent event and permission suppression remain in the existing paths.

The focused tests cover archive/restore success/failure across A-to-B-to-A, lock release, committed lifecycle/version, unrelated B, event/close suppression, focus and newer local A drafts. No realistic changed-seam HIGH/CRITICAL finding was identified. Review did not run tests, build, browser, hosted CI or inspect parked PR3072. These remain separate qualification evidence.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 29a3142a93

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread frontend/taskdeck-web/src/components/board/CardModal.vue
@Chris0Jeky Chris0Jeky moved this from Pending to Review in Taskdeck Execution Sep 12, 2026
@Chris0Jeky
Chris0Jeky merged commit 2cdc452 into main Sep 12, 2026
38 checks passed
@Chris0Jeky
Chris0Jeky deleted the codex/3060-archive-settlement-reselection branch September 12, 2026 22:49
@github-project-automation github-project-automation Bot moved this from Review to Done in Taskdeck Execution Sep 12, 2026
@Chris0Jeky

Copy link
Copy Markdown
Owner Author

Delivered as merge commit 2cdc452. Required ci-required.yml run34722482168 succeeded at final head29a3142a93c3851a56c85dd382bd06242452a750 against base96f4b7cc259487b3bcdd97c2d4da057a1f78c44f; every hosted check was successful. Full frontend qualification passed 6,909 tests with 3 existing skips, lint, typecheck and build.

Issue3060 is closed; issue and PR project items are Done / Priority IV. First post-merge review reconciliation confirms the only thread is resolved after tracking its MEDIUM residual in #3083. No fix is claimed for that separate form/assignment write-version follow-up. The clean delivered worktree was removed with plain git worktree remove after checking ancestry, ignored outputs and running processes. QA evidence remains in C:/td0912-evidence/3060-archive-settlement. Existing human actions are unchanged.

Copy link
Copy Markdown
Owner Author

Fresh post-merge review on current main found no additional correctness blocker in this archive/restore settlement slice.

The implementation captures the committed card identity, routes an inactive-context completion through onInactiveCommit before the shared pending lock is released, and lets CardModal adopt only a completion for the same board/card identity. Card reselection, close/reopen, and ID changes clear the retained completion, while the archive action key follows the committed updatedAt, so a late settlement does not overwrite another card's modal state or leave the action locked to a stale version.

The older form/assignment-version concern remains correctly separated as #3083; this review does not broaden #3082 to claim that follow-up is solved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Reconcile archive settlement after Paper card reselection

1 participant