Skip to content

Add typed card relations through reviewed proposals - #3066

Merged
Chris0Jeky merged 66 commits into
mainfrom
codex/2092-typed-links-integration
Sep 12, 2026
Merged

Chris0Jeky merged 66 commits into
mainfrom
codex/2092-typed-links-integration

Conversation

@Chris0Jeky

@Chris0Jeky Chris0Jeky commented Sep 12, 2026

Copy link
Copy Markdown
Owner

Card dependencies currently represent only prerequisites. This change adds same-board association, prerequisite, duplicate and origin relations over one canonical graph. The shared Paper/Legacy thinking deck displays incoming and outgoing context and creates proposals for additions/removals; reviewed Apply is the typed write boundary.

The implementation includes canonical relates-to/blocks/duplicates/spawned-from edges, depends-on inversion, independent directed cycle checks, active endpoint validation, uniqueness and a shared 500-edge limit. A common revision protects empty graphs and archived links. Hard deletion removes incident links atomically; the legacy dependency editor preserves other relation kinds and archived edges.

API reads, MCP read/proposal tools and chat producers retain caller revisions and authenticated provenance. Relations do not alter authority, lifecycle, hierarchy, assignments or estimates. Board JSON v5 remaps imported endpoints to fresh card IDs, validates the exact legacy compatibility projection, and is included in authorized buffered/streaming account exports. Developer rollback reconstructs current dependencies and explicitly loses other relation metadata.

Validation:

  • Focused domain, SQLite migration/concurrency, legacy API, proposal/producer and portability tests pass. Independent storage and application reviews are clean after one bounded graph-preview/deferred-event correction.
  • Full backend: 9,779 passed, 34 existing skips and four fixture failures. Three tests still read the old export shape; a preview fixture lacked its graph repository. The test-only correction passes all 180 tests in those three classes; the broad run was not repeated afterward.
  • Full frontend: 6,866 passed and three existing skips, plus lint/typecheck/build. The final numeric proposal-enum correction passes 22 focused tests.
  • Real API + SQLite + Chromium: both Paper/Legacy journeys pass (27.6 seconds), exercising reviewed add/remove, direction, stale approval rejection, legacy dependency preservation, Viewer/archived read-only states and 390px layout. The inherited card-create correction separately passes 50 store tests and both estimate journeys (53.4 seconds).
  • Final integration with the estimate no-op version guard passes all 36 combined API tests across relation reads/proposals/persistence and estimate proposals (17 seconds). Both repository guard sets are retained.
  • The controlled executor concurrency failure proves rollback and zero early buffered events; actual competing-context storage checks are separate. It does not simulate an external SQLite writer after the final transaction read. Preceding proposal-create events remain the bounded follow-up Defer proposal create events until later relation writes commit #3073.

The bounded hosted follow-up replaces account-wide relation retention with deterministic, no-tracking pages. Both endpoints must belong to the same authorized board; archived endpoints remain exportable. All 11 streaming Application tests and nine SQLite persistence tests pass, including page boundaries, unauthorized/cross-board exclusion and an empty EF tracker. Independent fix review is clean. The existing non-snapshot export contract is unchanged.

The original hosted E2E gate passed 240 tests with 13 skips but failed an outdated dependency-export assertion (expected v2, actual v5), followed by a teardown timeout. The corrected assertion passes the complete focused real API/SQLite/Chromium dependency and import journey (49.0 seconds); all import, navigation, mobile and accessibility checks remain intact. The subsequent hosted run must prove its global teardown.

This PR is based on main and includes delivered estimate54e4c0a86 and archive44d041ca7 merges. Only concurrent STATUS/MASTERPLAN records needed resolution when integrating archive delivery; backend files are unchanged. The final main base requires fresh hosted qualification. The final LAN correction reuses the existing UUID fallback for both proposal IDs. The original code fails before POST when randomUUID is absent; all four API-wrapper tests pass after the fix, with lint and bounded review clean. Physical-device LAN acceptance is not claimed. Buffered export size and refresh-control feedback remain separate #3069/#3070 follow-ups. The exact final hosted gate is required before merge. Generic web draft-admission parity remains #3061. The older-reader estimate export boundary remains #3065 pending its exact combined-path proof. Physical-device, screen-reader, skipped PostgreSQL/Docker, provider, release and hosting acceptance remain in OUTSTANDING_TASKS.md.

Contract, upgrade, capability, STATUS and MASTERPLAN records are included. Finished source commits are preserved; 32 local evidence files were copied and hash-verified to C:/td0912-evidence/finished-typed-source-artifacts before their five source worktrees were removed. Local traces and synthetic test databases are not public attachments.

Chat contract correction: normal short IDs now resolve to unambiguous active-board cards, while full GUID forms retain exact active-board lookup. Chat exposes and registers the authorized graph/revision reader, preserving the caller-observed revision in proposals. UUID-only and omitted-registration controls fail the two short-ID cases and registry case respectively. Restored-source final checks pass 91 Application cases and one API registry case. The narrow review found a compact-GUID regression, corrected in c3fd508 atop f323a66; root verified the three-line lookup correction and test evidence. The earlier compile-only and stale-control-DLL runs are retained as unsuccessful attempts, not green proof. A new hosted head is required. Proposal-create event timing (#3073) and relation-delete applier attribution (#3074) are tracked separately.

The final candidate includes delivered main9a8c14c6bd385f5607633462060f9d11fc57c05a (#3064), merged in1f5f5a115b8d2b1e8f647b77accab9355742ae70. Only STATUS/MASTERPLAN required conflict resolution, preserving both records. Backend files are identical to the corrected chat head; the delivered CardModal and assignment-save test blobs match main exactly. All61 focused archive/relation tests pass on the combined base. Final hosted qualification must use this main base. Noncanonical short-prefix validation (#3076) and navigation copy during relation requests (#3077) are tracked non-blocking follow-ups.

Closes #2092

@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: 88a161938b

ℹ️ 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/api/cardRelationsApi.ts Outdated
Comment thread backend/src/Taskdeck.Application/Services/DataExportService.cs
Comment thread frontend/taskdeck-web/src/components/thinking/CardRelations.vue

@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: 00c1a174d5

ℹ️ 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.Application/Services/Tools/ProposeCardRelationExecutors.cs Outdated

@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: 62807b0cef

ℹ️ 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.Application/Services/CardService.cs

@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: da2ebf3083

ℹ️ 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/thinking/ThinkingDeckPanel.vue

@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: 7c66104b39

ℹ️ 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/api/cardRelationsApi.ts
@Chris0Jeky
Chris0Jeky merged commit 1608184 into main Sep 12, 2026
37 of 38 checks passed
@Chris0Jeky
Chris0Jeky deleted the codex/2092-typed-links-integration branch September 12, 2026 21:30
@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

Merged as 1608184 after required run34718378428 passed at reviewed head7c66104b3900a7d9bb44153b299f714e86d34cdd against main9a8c14c6b. The remaining failure rollup was a cancelled Smart CI Plan; no failed required check was bypassed.

Issue2092 is confirmed closed, the issue and PR project items are Done with Priority II, and the first post-merge review-thread check is clear. PR3071 now targets main; its parent branch is retained. The remaining recovery integration preserves this delivered feature and will qualify the remaining source PRs together.

All source/test/browser evidence and limitations remain in STATUS and C:/td0912-evidence. Existing human actions in OUTSTANDING_TASKS.md remain unchanged. This is a project delivery, with no release or deployment claim.

@Chris0Jeky

Copy link
Copy Markdown
Owner Author

The delivered typed-relations worktree has been removed with plain git worktree remove after clean/ignored inventory and merged-source ancestry checks. All nine QA files were copied and SHA256-verified at C:/td0912-evidence/delivered-typed-relations/estimate-export-version-qa; the SQLite database and its WAL/SHM were preserved together. The branch remains available, and PR3071's main retarget is confirmed. No unfinished or automatically blocked worktree was removed.

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 minimal typed work-item links

1 participant