TaskList replaces project_active_work.md (QW-4 2026-05-25)

Rule: For parallel-session coordination in the TT workspace, use native Claude Code TaskList (tt-inherit-v2 list), NOT the file-based project_active_work.md. The file is frozen historical record; the discipline lives in TaskList tools.

Why (per QW-4 of standardisation meta-review 2026-05-25):

  • Atomic operations: File-edit race conditions were a chronic failure mode — 5 race-recoveries in 24h logged in the now-superseded file before the switch. TaskUpdate is atomic; no two sessions can corrupt the same task simultaneously.
  • Cross-device sync: ~/davieshq/docs-personal/claude-tasks/tt-inherit-v2/ is git-tracked + already syncs across Rich’s machines. The memory dir at ~/.claude/projects/-home-richardd-testatetech/memory/ is NOT git-tracked — file-based active-work-log never synced.
  • Queryable: TaskList with status filters; TaskGet by ID; TaskOutput for completion details; TaskList against the in_progress queue shows live claims. The file was grep-search-only.
  • Discipline cleanup: The file accumulated ~30 BATCH-closure parenthetical entries that violated its stated “live claims only” purpose. Closure narratives belong in per-batch memory files + MEMORY.md index; TaskList stays a live-claims register.

How to apply:

Lifecycle eventTool call
Session startTaskList (no args) → see what’s in_progress across other sessions
Before starting workTaskCreate with description: "[area] brief — started <ISO-time>"; status defaults to pending
Claiming workTaskUpdate <id> --status in_progress
Work doneTaskUpdate <id> --status completed (NEVER --status deleted — permanent)
Cross-session conflictSwitch to git worktree per using-git-worktrees skill
Substantive closureAuthor per-batch memory file (project_batch_*.md) + MEMORY.md index entry; do NOT stuff narrative into TaskList description

Where the new convention is documented:

  • ~/testatetech/CLAUDE.md §3 — parent workspace conventions (canonical local-but-not-git-tracked)
  • ~/testatetech/docs-strategy/CLAUDE.md §0a — project conventions (git-tracked at commit 8889b6e)
  • ~/testatetech/docs-strategy/parent-workspace-CLAUDE.md — git-tracked backup of parent CLAUDE.md
  • ~/testatetech/docs-strategy/docs/superpowers/specs/2026-04-28-testatetech-parent-workspace-design.md §3 — authoritative spec with AMENDED 2026-05-25 note
  • 5 per-repo CLAUDE.md tables (code-inherit-{standard,sdk,app,website,test-suite}) — convention table row points at TaskList
  • ~/testatetech/docs-strategy/scripts/session-start-status.sh — SessionStart ceremony now reads tasks JSON to show in_progress queue
  • Global ~/.claude/CLAUDE.md §15 — Richard Tasks convention (the task-list-personal shell helper)

Anti-pattern signals (STOP if you catch yourself doing these):

  • Adding new entries to project_active_work.md (the file is frozen; entries go in TaskList)
  • Putting a long BATCH-closure narrative into a TaskList task description (narrative goes in per-batch memory file)
  • Reading project_active_work.md for “what’s running now” (use TaskList instead)
  • Editing project_active_work.md’s structure or adding sections (it’s an archive; do NOT modify)

Sister disciplines:

Related artefacts (commits + docs):

  • ~/testatetech/docs-strategy/ commit 8889b6e — docs-strategy/CLAUDE.md §0a update (the canonical first commit of QW-4)
  • Memory file project_active_work.md — frontmatter flipped to status: superseded 2026-05-25T15:00 with full migration header

Why this matters strategically:

The standardisation meta-review (2026-05-25) identified ~11 home-made TT systems with potential community-standard replacements. QW-4 was the only one shippable WITHOUT empirical validation (the SOTA candidate — native Claude Code TaskList — was already in production use; no spike needed). The other 4 quick wins (QW-1 yamllint+check-jsonschema; QW-2 AGENTS.md symlinks; QW-3 schema extraction; QW-5 uv lock) await either spike-suite findings or fresh-session execution. QW-4 demonstrates the buy-not-build pattern at the lowest-risk end: replace a TT-custom convention with an already-validated platform-native primitive.