Skip to content

Add true card archive and restore lifecycle - #2932

Merged
Chris0Jeky merged 10 commits into
mainfrom
issue-2920/card-archive
Sep 10, 2026
Merged

Chris0Jeky merged 10 commits into
mainfrom
issue-2920/card-archive

Conversation

@Chris0Jeky

@Chris0Jeky Chris0Jeky commented Sep 10, 2026

Copy link
Copy Markdown
Owner

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-lifecycle and restore-lifecycle use the same checked lifecycle path. Legacy persisted card/archive, MCP archive_card and 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:

  • Red-first lifecycle and dependency regressions, including existing and absent dependency graphs; final repair seam: 20 passing tests.
  • Full frontend: 419 files, 6,465 passing tests and three existing skips; typecheck and build pass. Scoped lint passed on the unchanged lifecycle frontend.
  • Chromium: Paper and Legacy archive/history/restore journeys pass using synthetic Mock state, with stable identity and placement. No manual screen-reader or visual acceptance claimed.
  • Full backend: 9,372 passing tests, five existing skips, zero failures at 3662091.
  • Independent correctness review of the repaired head is clean. The separate account-export privacy review is clean on its unchanged scope. Final scoped authorization review is clean at cd5ff22. Hosted exact-head qualification remains required.

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.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 10, 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-10T19:18:55.884155Z fc2a324 New commits
ℹ️ 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 moved this from Pending to Review in Taskdeck Execution Sep 10, 2026

Copy link
Copy Markdown
Owner Author

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.

@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: 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".

Comment thread backend/src/Taskdeck.Api/Mcp/WriteTools.cs
Comment thread backend/src/Taskdeck.Application/Services/CardService.cs
Comment thread backend/src/Taskdeck.Domain/Entities/Card.cs
Comment thread frontend/taskdeck-web/src/views/overhaul/ThinkingWorkspaceView.vue

Copy link
Copy Markdown
Owner Author

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.

@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: 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".

Comment thread frontend/taskdeck-web/src/views/BoardView.vue
Comment thread backend/src/Taskdeck.Infrastructure/Repositories/CardRepository.cs

Copy link
Copy Markdown
Owner Author

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.

Copy link
Copy Markdown
Owner Author

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.

Copy link
Copy Markdown
Owner Author

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.

@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: 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".

Comment thread backend/src/Taskdeck.Domain/Entities/Column.cs

Copy link
Copy Markdown
Owner Author

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.

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.

[Work model] Add a reversible Card archive/restore lifecycle before hierarchy

1 participant