Skip to content

[Work model] Add minimal item types and optional parent hierarchy after the model ADR #2087

Description

@Chris0Jeky

Delivery

Completed by #2932 (true archive/restore), #2949 (Task/Epic/Spike), and #2965 (same-board hierarchy). Final hierarchy merge: 86c6f1bdf9914b7809e77183187b8e94659acc39; Required CI 34540544226 passed at reviewed head 2d0fa2116a003bbe72fe5c193f55ffa0448de6c6. The closure receipt records proof, limits and separately tracked follow-ups. Optional confirmed subtree archive is outside the delivered default-detach scope.

Original problem and evidence

Current Card has no work-item type or parent relation: backend/src/Taskdeck.Domain/Entities/Card.cs:6-55 and docs/architecture/DATA_MODEL.md:216-234. Dogfooding needs a small distinction between tasks, epics, and spikes plus parent/child decomposition. Typed arbitrary relations, templates, recurrence, and multi-board placement are separate concepts.

Scope

After the canonical work-model ADR is Accepted:

  • Add the smallest accepted WorkItemType set.
  • Add one optional parent relation on the Card-compatible path.
  • Enforce same-owner/scope rules, cycle prevention, and a documented depth policy.
  • Expose type and parent in API/UI, proposal diff/apply, audit, export/import, deletion, MCP, and realtime.
  • Preserve existing card IDs and default all existing records to the accepted task-compatible type.

Non-goals

  • No typed non-hierarchical relation table.
  • No multiple parents, graph database, or cross-project hierarchy unless explicitly accepted.
  • No templates, recurrence engine, custom fields, work logs, or multi-board canonical item.
  • No Workspace/Project migration in this slice.

Acceptance

  • The issue is not started until the model ADR records the first types and hierarchy boundary.
  • Existing cards migrate deterministically and retain IDs, board/column placement, history, and exports.
  • Parent cycles and forbidden cross-boundary links fail server-side with stable errors.
  • Proposal preview and apply support type/parent changes with exact parity.
  • Deleting/archiving a parent has explicit child behavior and no silent cascade.
  • API, UI, audit, export/import/account deletion, MCP, realtime, migration bootstrap, and rollback tests pass.

Cross-cutting impact

Surface Requirement
Data/migration Reversible EF Core/SQLite migration with safe defaults and indexes
API/UI Backward-compatible DTOs and progressive-disclosure controls
Proposal/review/apply New operations validated in preview and executor
Provenance/audit/actor Parent/type changes and spawned work remain attributable
Permissions/security Server-side scope and cycle validation
Export/import/deletion Round-trip hierarchy and defined parent deletion behavior
MCP/agent Reads and proposal-only writes; no direct agent mutation
Realtime/concurrency Board invalidation and optimistic conflict behavior
Tests Domain, application, API, migration, export, MCP, frontend, and E2E

Dependencies and release

Depends on #2084 and its Accepted canonical work-model ADR. Related to #1947. v0.4, Priority III. ADR-0060 is Accepted; the maintainer clarified true archive/restore and a depth limit of three links/four levels on September 10.

Compatibility and rollback

The migration must retain the current Card contract and provide a tested down path before release.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Priority IIIValuable but unscheduled: residuals, tech-debt, performance, depth work.backendPrimary implementation impact in .NET API/domain/application/infrastructure.dogfoodingFrom real personal/beta use; evidence-grade product feedback (exempt from intake severity bar).featureUser-facing functionality delivery slices (new capabilities or clear product-surface enhancements).frontendPrimary implementation impact in Vue/TypeScript UI and client runtime.

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions