PHASE0_DEFERRED.md tracks the two W6 items that couldn't ship in Phase 0:
1. Delete src/pages/TaskView.ts — blocked on uncommitted multi-cycle
context menu changes; resolution path documents how to port to
FluentTaskView before deletion. Assigned to Phase 3 sub-PR D.4.
2. Fold src/utils/settings-migration.ts into the registry — has runtime
callers (repairStatusCycles every load + W1 fallback path) that need
proper relocation, not just delete. Resolution path documents the
four steps. Assigned to Phase 3 sub-PR D.2.
WORKTREE_PLAN.md is the operational follow-up to the v10 plan
(~/.claude/plans/dynamic-mixing-pie.md). Splits Phase 1-4 into 5
worktrees with explicit conflict maps, sequencing diagram, and DoD
subsets per worktree:
Worktree A — Phase 1 banners (parallel to B)
Worktree B — Phase 1 Archiver (parallel to A)
Worktree C — Phase 2 read-only (sequential after A)
Worktree D — Phase 3 cliff cluster (D.1-D.5 sequential within)
Worktree E — Phase 4 cleanup
Identifies the hot zone (src/index.ts and the 14 settings tabs) and
gives strict sequencing rules so multi-developer execution doesn't
collide. Solo-dev path is A→B→C→D.2→D.1→D.3→D.4→D.5→E.
4.5 KiB
Phase 0 Deferred Items
Phase 0 of the v10 refactor (refactor/v10-phase0 branch) completed 10 of 12
DoD items. The remaining 2 are documented here so Phase 3 owners pick them up
in the right sub-PR.
Item 1: Delete src/pages/TaskView.ts
Original DoD criterion: "src/pages/TaskView.ts deleted; file gone;
git grep \"from \\\".*pages/TaskView\\\"\" src/ empty; typecheck passes"
Why deferred: the user has uncommitted modifications in src/pages/TaskView.ts
(enhanced multi-cycle support in the "switch status" context menu). Deleting
the file in Phase 0 would lose those modifications.
Resolution path (assigned to Phase 3 sub-PR D.4 — view consolidation):
- Read the dirty
src/pages/TaskView.tsdiff. The relevant block is the "switch status" submenu builder (around line ~1263-1440 in the dirty version). - Find the equivalent location in
src/pages/FluentTaskView.tsand port the multi-cycle context menu logic. The new code reuses these helpers fromsrc/utils/status-cycle-resolver.ts:findApplicableCycles(currentMark, statusCycles)getAllStatusNamesgetNextStatusPrimarygetAllStatusMarks
- Move
TASK_VIEW_TYPEconstant fromsrc/pages/TaskView.tsto a new filesrc/common/view-types.tsso the constant survives the deletion (stale leaves in user vaults still need to be detached on next load — seesrc/index.ts:1825and:2116). - Update the two import sites of
TASK_VIEW_TYPE:src/index.ts:72(also remove theTaskViewsymbol from this import)src/components/features/fluent/FluentIntegration.ts:13
- Delete the
instanceof TaskViewblock atsrc/index.ts:2119— unreachable since the class is no longer registered. - Delete
src/pages/TaskView.ts. - Run typecheck + integration suite to confirm green.
Item 2: Fold src/utils/settings-migration.ts into the registry
Original DoD criterion: "src/utils/settings-migration.ts deleted; folded into registry; Migration.tombstone.test.ts covers the multi-cycle case"
Why deferred: the file has TWO non-migration runtime callers that need proper relocation, not just deletion:
repairStatusCyclesis called every plugin load atsrc/index.ts:2022migrateSettingsis called from the W1 fallback path atsrc/index.ts:2007
A naive delete would break both. The Phase 0 W1 work bundled the migration
logic into legacy-bundle-0.ts but kept the source file because the runtime
helpers still need a home.
Resolution path (assigned to Phase 3 sub-PR D.2 — command palette rewrite,
since D.2 owns the index.ts import block):
- Move the runtime helpers to
src/utils/status-cycle-resolver.ts(already exists, has the right name):repairStatusCyclesvalidateStatusCyclesortCyclesByPriorityfindDuplicateCycleIds
- Confirm
migrateToMultiCycleis no longer imported anywhere outside ofsrc/utils/migration/steps/legacy-bundle-0.ts. As of Phase 0 it's also imported bysrc/__tests__/migration/legacy-bundle-0.test.ts. Either: (a) movemigrateToMultiCyclebody inline into both call sites and delete the export, OR (b) movemigrateToMultiCycleto a new home likesrc/utils/migration/legacy-helpers.tsand update the two importers. Recommendation: (a) — the body is small (~30 LOC) and inlining removes a moving part. - Update
src/index.ts:110-112to importrepairStatusCyclesfrom its new home (@/utils/status-cycle-resolver). - Remove the W1 fallback in
src/index.ts:2003-2010— the registry has atomic semantics, so the fallback path is dead defense in depth that nobody should ever hit. (If you're worried, leave a single-line warning that the registry returned !ok.) - Delete
src/utils/settings-migration.ts. - Run typecheck + integration suite to confirm green.
When to do this work
Both items belong in the very first sub-PRs of Worktree D (Phase 3, 10.0.0). They are NOT for Phase 1 or Phase 2 — those phases are about adding warnings without touching the underlying view layer.
Why these were deferred (not just dropped)
Both items are real DoD criteria from the plan. Skipping them entirely would mean Phase 0's "no observable behavior change + dead code removed" contract is incomplete. They're deferred to Phase 3 because:
- Item 1 is blocked on user state we can't safely modify in Phase 0
- Item 2 needs a proper home for runtime helpers, which is more refactor than "delete"
Phase 3's natural workflow already touches both areas, so picking them up there is cheap. Tracking them here ensures they don't get lost.