Add same-board card hierarchy with explicit child detachment - #2965
Conversation
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. |
|
Independent review, round 1, correctness lens at 5ba1892: SHIP. Reviewed complete-graph validation, archived descendants, board-token ordering, atomic child detachment/audit, proposal pins and readable diff, import remapping/rollback, and nullable migration/down behavior. No confirmed HIGH/CRITICAL or MEDIUM finding in this scope. The reviewer read the pinned source/diff and existing tests; it did not rerun tests. Authorization/privacy/UI review and hosted CI remain pending. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5ba18929f5
ℹ️ 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".
|
Round 1 authority/UI finding: HIGH, fix now. New post-archive/delete child refreshes in cardStore.ts call fetchCards, whose delayed result unconditionally replaces currentBoardCards. Focused execution of the actual store code reproduced board B retaining its identity while receiving board A's card rows and a zeroed B column count. A second probe used the actual resetForLogout and showed old-account rows repopulating the cleared store. No cross-account title rendering in the UI is claimed. Separately, archive success followed by a rejected refresh makes the mutation promise reject even though the write committed. One fix batch will give these derived reads existing board/session/request ownership and keep the committed-write result distinct from refresh failure. The independent graph/database/portability lens found no blocker. The older archive-refresh draft-loss path predates this PR and is being recorded separately, not folded into this fix. Merge remains blocked until the focused regressions, scoped fix review and fresh exact-head CI pass. |
|
Independent scoped round 2 at 3a56a0a: SHIP. The repair reuses generation/cancellation/mutation-epoch guards; failure-message metadata survives joined, queued and successor reads. Stale success/rejection cannot replace the next context, current 403 behavior remains, and delete finishes mutation-owned loading/error cleanup before awaiting the derived read. No confirmed HIGH/CRITICAL finding remains in the fix diff. Verification: twelve red regressions reproduced the defect; final 282 focused tests include 24 assembled-store cases. Typecheck/build/lint pass, and four real-API Chromium journeys pass again at this repair head. The reviewer inspected source, tests and saved receipts without rerunning them; guarded-lane comparisons passed. Earlier backend review stands. #2966–#2969 remain tracked outside this fix. Two normal review rounds are complete; exact-head hosted CI is still pending. |
|
CI cancellation disposition: Smart CI Plan check 103076303128 was cancelled because another waiting smart-ci-control-2965 request superseded it, as its annotation states. Smart CI run 34538747895 completed successfully for repair head 3a56a0a. The cancelled run is not a test-failure verdict. Required CI remains pending; no merge is qualified yet. |
|
Cleanup and next-owner receipt: the clean pushed repair checkout was removed with plain git worktree remove after exporting ignored logs, probes, test-results and isolated synthetic DB files to C:/Users/Public/codex-shell-home/taskdeck-alpha-evidence/2953. Runtime ports 4177/5377 had zero listeners. The remote hierarchy branch remains intact and must not be deleted while the assignment child uses its reviewed head. #2240 has the next sole writer under claim 5626468896; hierarchy must merge first. Main remains 93ca1cd, with unrelated bash.exe.stackdump preserved. |
|
Current-base qualification: integrated main 8b4205f into head 2d0fa21. The only delta from reviewed 3a56a0a is #2954's two processor-manifest validator/test files. Independent guarded read-only review found no hierarchy interaction and preserved the round-2 SHIP disposition; all hierarchy feature and repair files are unchanged. ProcessorManifestValidatorTests: 39 passed. Fresh exact-head CI is pending. This is base qualification, not another feature fix round. |
|
Current-head hierarchy contract/concurrency proof also passes: 17 API tests at 2d0fa21. The temporary review worktree was clean and removed after its ignored-output inventory; test logs are preserved at C:/Users/Public/codex-shell-home/taskdeck-alpha-evidence/2953/{manifest-base-tests,hierarchy-base-tests}.log. No hierarchy branch was deleted; it remains the assignment worktree's stack base. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2d0fa2116a
ℹ️ 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".
Cards can now have one same-board parent, with at most three parent-child links (four levels). Paper and Legacy expose parent selection and removal. Archiving or deleting a parent previews and explicitly confirms every direct-child detachment, including archived children; restore never reattaches them.
Server checks cover permissions, versions, cycles, subtree depth and competing graph writes. Proposal preview and Apply use the same pinned child snapshot and report the derived detachments. The additive migration preserves existing IDs and placement. Board JSON remaps parent IDs using a version-3 envelope; old plain/version-2 imports remain supported.
Validation:
3a56a0abbce598a422612aaf11d764ddd6db797f. Scoped round-2 review and fresh hosted CI are pending.Limits: one hierarchy-affecting operation per board proposal; use separate proposals for successive graph changes. No cascade archive/delete, cross-board parents or typed non-hierarchical links. Developer rollback drops parent metadata; UPGRADING.md documents that loss. Full suites were not repeated after the final narrow corrections or frontend-only review repair; their affected seams received the focused checks above. Non-blocking findings are tracked in #2966 (hand-crafted import with an archived parent), #2967 (archive dialog error placement) and #2968 (canceled delete-preview ordering). Pre-existing archive draft recovery is tracked in #2969.
Closes #2953. Parent delivery is tracked in #2087.
CLAUDE_SYNC_PACKET
canonical truth changes: minimum UPGRADING.md migration/export/rollback note; STATUS and TESTING_GUIDE remain with their existing owners
issue/project changes: #2953 enters Review, Priority III, v0.4; #2087 remains open for delivery reconciliation
architecture/decision impact: implements the accepted ADR-0060 three-link/four-level and detach-on-lifecycle contract
manual validation still needed: independent review and hosted CI; no live screen-reader claim
human actions: OUTSTANDING_TASKS.md remains unchanged