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:
TaskListwith status filters;TaskGetby ID;TaskOutputfor completion details;TaskListagainst 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 event | Tool call |
|---|---|
| Session start | TaskList (no args) → see what’s in_progress across other sessions |
| Before starting work | TaskCreate with description: "[area] brief — started <ISO-time>"; status defaults to pending |
| Claiming work | TaskUpdate <id> --status in_progress |
| Work done | TaskUpdate <id> --status completed (NEVER --status deleted — permanent) |
| Cross-session conflict | Switch to git worktree per using-git-worktrees skill |
| Substantive closure | Author 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 commit8889b6e)~/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 (thetask-list-personalshell 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.mdfor “what’s running now” (useTaskListinstead) - Editing
project_active_work.md’s structure or adding sections (it’s an archive; do NOT modify)
Sister disciplines:
- grep-workspace-before-authoring-substrate (5-item pre-authoring checklist — applies to any new SKILL or convention authoring)
- verify-before-author (verifying-before-author skill — empirical evidence over claims)
- concurrent-burst-race-condition-count-24h (the race-condition discipline; THIS migration directly addresses the file-edit race issue that motivated that memory)
- scorecards-one-at-a-time-optimal-sequence (single-question-at-a-time pattern; applies equally to TaskCreate cadence — claim one task; don’t batch)
Related artefacts (commits + docs):
~/testatetech/docs-strategy/commit8889b6e— docs-strategy/CLAUDE.md §0a update (the canonical first commit of QW-4)- Memory file
project_active_work.md— frontmatter flipped tostatus: superseded2026-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.