Files
automaton/tasks/fix-dashboard-read-state/IMPLEMENTATION.md
T
Lap Tran 81ccf548e5
CI / build (push) Has been cancelled
Fix 10 audit bugs: path prefix matching, verdict parsing, CORS, stale-task detection, phase mapping
Batch 1 (High severity):
- Bug 1: --audit cat3 now checks .automaton/tasks/ paths
- Bug 4: Verdict PASS/FAIL uses structured ## Status: line parsing
- Bug 5: register-guards.sh checks .json/.jsonc, writes plugin key, strips comments
- Bug 7: --can-edit/--scope-check path prefix uses os.sep boundary

Batch 2 (Medium/Low severity):
- Bug 2: migrate-project.sh find command parentheses for -prune binding
- Bug 3: vram_detect model prefix matching with known-suffix whitelist
- Bug 6: dashboard reads .state file before artifact heuristic fallback
- Bug 8: removed wildcard CORS, added security headers (nosniff, DENY)
- Bug 9: stale-task detection uses .state.lastedit instead of .state mtime
- Bug 10: TEST_PLAN.md maps to test_design (was implement)

249 tests pass (up from 235). All 10 tasks driven through full workflow to completion.
2026-06-22 10:40:58 -04:00

1.1 KiB

Implementation: fix-dashboard-read-state

Bug

Dashboard's determine_task_state() in task.py inferred task phase from artifact filenames only, ignoring the .state file. This caused the dashboard to show incorrect states when the .state file (source of truth) disagreed with the artifact heuristic.

Fix

  1. Added _state_string_to_task_state() helper function that maps state machine phase strings (e.g. "implement", "code_review:awaiting_approval") to TaskState enum values. Handles sub-states by splitting on ":" and using the base phase.
  2. Modified determine_task_state() to read the .state file first. If .state exists and maps to a valid TaskState, that takes precedence. The artifact heuristic is now a fallback for tasks without .state files.

Files Changed

  • automaton/dashboard/core/task.py: Added _state_string_to_task_state() function, modified determine_task_state() to read .state before falling back to artifact heuristic

Tests

  • Existing tests in test_task.py continue to pass (they test the artifact fallback path since test tasks don't have .state files by default)
  • All 249 tests pass