Add true card archive and restore lifecycle - #2932
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 receipt: fresh correctness review at 3662091 is SHIP with no CRITICAL/HIGH. It verifies atomic lifecycle/dependency revision invalidation, existing/absent graph races, direct/proposal parity and rollback. The prior separate account-export/privacy review at 434a043 is clean; its export implementation is unchanged at this head (diff checked). Reviewers read source/tests and did not independently execute them; exact-head local commands and results are recorded in the PR body and exported logs. #2926 remains the explicitly tracked MEDIUM preview limitation. This is round 1 of the fresh authorised repair cycle, following the preserved park receipt on #2920. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 36620917b7
ℹ️ 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".
|
Final scoped review receipt: cd5ff22, base 3105aed. Independent adversarial verification: SHIP, no CRITICAL/HIGH. Five production lines enforce board write access before lifecycle proposal persistence; 102 MCP/HTTP tests, 28 architecture tests (one skip), 199 current-base Review tests, typecheck and build pass. Earlier full 9,372 backend and 6,465 frontend gates remain evidence for unchanged scope. All four connector findings are disposed: HIGH fixed, MEDIUMs tracked in #2934–#2936. This completes the bounded fix/verification cycle; merge awaits exact-head hosted CI. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cd5ff22915
ℹ️ 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".
|
Current-main interaction qualification: main 8aafe53 produces merge tree 43a06c885d7b6bdc0622b9d2bee79a7433c376dc with reviewed head cd5ff22. Only the already-reviewed #2929 Review warning changes and tests are added (46 insertions/seven deletions). Backend trees remain identical at 1a46c2ef5989262e10bbc7b4ca945629ff978f6b. Scoped independent current-base review: SHIP, no archive preview/apply/read-only interference. #2929 supplies fresh focused201/typecheck/build and green exact-head CI for this base delta; archive's own exact-head CI remains required. No new review cycle or code changes. |
|
Hosted blocker identified, not waived: Smart CI34518130181 fails planner-error because its live base is8aafe53f40c0d8bd21212e34d1a4f5b318a3517d while the fetched PR merge ref c903cca still has parent3105aede0593548edbe13d539efe8537c072919d and headcd5ff229. This matches existing platform issue #2562. Local current-base merge tree43a06c885 is reviewed, but that does not substitute for hosted gate evidence. Coordinator will refresh this branch to current main when an editing slot is free, preserve source commits, and re-prove the affected base before publication. No platform workflow edits or additional product fix batch. |
|
Branch refresh completed through GitHub's expected-head update: fc2a324 merges current main a0d05da into cd5ff22, preserving all source commits. Main also received the coordinator's five canonical-doc/control-rule updates. The resulting frontend tree exactly matches the already-reviewed current-base candidate (3e8d12a612f1da3e3cb993492ab4ac04d1883dee); backend remains1a46c2ef5989262e10bbc7b4ca945629ff978f6b. No runtime code or tests changed beyond the separately qualified #2929 base. Fresh exact-head hosted CI is now the remaining merge gate. Existing source reviews and scoped tests remain applicable; no failure is waived. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: fc2a324dc9
ℹ️ 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".
|
Merge qualification: exact head fc2a324 passes Required CI 34519201055, Extended CI 34519201102, Smart CI 34519196743 and self-test 34519200765. No unresolved review threads. Independent archive correctness, privacy/authority and scoped fix reviews pass; the bounded fix round is complete. Current base a61ed63 adds only the already-verified capture comparison comment/tests and export documentation. A fresh scoped integration review found no archive runtime/authority interaction. Clean merge candidate tree: 4a1125bbfb25073cd1584010d786f1f0f5a6fe1d. Head has aged beyond three minutes. Tracked non-blocking residuals remain in #2926, #2934, #2935, #2936, #2939, #2940, #2941 and #2944; hierarchy #2087 is not implemented by this PR. |
Cards now have an explicit archive/restore lifecycle that preserves their ID, placement, labels, block state and history. Paper and Legacy expose archive controls and an authorized archived-card list; restore uses the original column and fails visibly if its WIP limit or current state prevents restoration.
Active board, search, planning, metrics and forecast reads exclude archived cards. Historical card and Thinking reads remain available without edits. Lifecycle writes require the expected card version, server-authorized board access, audit and realtime invalidation. Concurrent stale card writes now return 409 even for older clients that omit a version; those clients must refresh before retrying.
Proposal operations
archive-lifecycleandrestore-lifecycleuse the same checked lifecycle path. Legacy persistedcard/archive, MCParchive_cardand Chat archive proposals retain their existing Block meaning. New MCP lifecycle tools only create proposals. Board JSON preserves archive state with fresh imported IDs; buffered and streamed account exports include only cards from boards the requester can read.The additive migration defaults existing cards to active and has a tested down path. Archive/restore advances the dependency graph revision in the same transaction, so a graph read while a card was archived cannot later delete its hidden edges through a stale replacement. Failed or conflicting writes roll back card, graph and audit state together.
Verification:
Final authorization repair at cd5ff22:
ADR-0060 records the maintainer's true archive/restore decision and maximum hierarchy depth of three links/four levels. STATUS, testing instructions and current MCP inventory are updated. Hierarchy itself remains #2087. #2926 tracks the non-blocking cumulative multi-card restore-preview/WIP limitation. Existing OUTSTANDING_TASKS.md human release, legal, private-deployment and manual acceptance gates remain open.
Closes #2920
Canonical coordination: MASTERPLAN is leased by #2927; its minimal delivery entry is deferred to the CLAUDE_SYNC_PACKET rather than competing with that edit. The final repair closes the recorded dependency-loss HIGH; the prior parked head is not being merged.
Final connector triage also records MEDIUM follow-ups #2939 (secondary side-effect classification and duplicate proposal audits), #2940 (synthetic-demo archive history) and #2941 (active observation eligibility). Independent source triage found no new CRITICAL/HIGH. The main lifecycle preview remains explicit; old observation fingerprints are rejected after archive changes UpdatedAt.