# V1 Block 06 — Task Actions and State Transitions Status: Planned Purpose: Define and implement the safe, low-friction actions available from task cards. ## Chunk 6.1 — Flexible task quick actions Recommended Codex level: medium Tasks: Support these quick actions for flexible task cards: - Done - Push - Backlog - Break up Rules: - Done marks completed. - Push opens simple push destinations. - Backlog moves to unified backlog and does not preserve original schedule order. - Break up starts child task flow; full implementation in Block 07. Acceptance criteria: - Tests cover done and backlog state transitions. - Push destination selection is represented in domain layer. ## Chunk 6.2 — Push destination behavior Recommended Codex level: high Tasks: Implement push destinations: - Next available slot. - Tomorrow/top of queue. - Backlog. Explicitly exclude: - Later today. Acceptance criteria: - Test: next available uses scheduling engine. - Test: tomorrow sets tomorrow/top-of-queue metadata. - Test: backlog clears schedule placement. BREAKPOINT: Stop here. Confirm `high` mode before integrating push behavior. ## Chunk 6.3 — Required task states Recommended Codex level: medium Tasks: Implement required task state meanings: - Done: completed. - Missed: did not happen; visible as missed but not aggressively styled. - Cancel: did not/will not happen; remove from active plan. - No longer relevant: separate from cancelled. Rules: - Critical missed tasks move to backlog. - Required/inflexible missed tasks remain in place/history and are marked missed. - Cancelled and noLongerRelevant are distinct statuses. Acceptance criteria: - Tests cover critical missed to backlog. - Tests cover inflexible missed stays in schedule/history. - Tests cover cancelled vs noLongerRelevant distinction. ## Chunk 6.4 — Surprise task logging Recommended Codex level: high Tasks: Implement `I did something unplanned` behavior: - Create surprise completed task. - Optional fields: time used, project, reward, priority. - Surprise task occupies the time it happened. - Flexible tasks in that time are pushed using normal rules. - Inflexible/critical/locked blocks are not moved. - Inflexible/critical overlaps are reported. - Locked overlaps remain hidden by default unless reveal mode exists. Acceptance criteria: - Test: surprise task creates completed task. - Test: overlapping flexible task is pushed. - Test: overlapping inflexible/critical task is reported, not moved. - Test: locked overlap can be tracked without rendering as task. Commit suggestion: ```text feat(tasks): implement core task actions and transitions ```