CI / build (push) Has been cancelled
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.
1.1 KiB
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
- Added
_state_string_to_task_state()helper function that maps state machine phase strings (e.g."implement","code_review:awaiting_approval") toTaskStateenum values. Handles sub-states by splitting on":"and using the base phase. - Modified
determine_task_state()to read the.statefile first. If.stateexists and maps to a validTaskState, that takes precedence. The artifact heuristic is now a fallback for tasks without.statefiles.
Files Changed
automaton/dashboard/core/task.py: Added_state_string_to_task_state()function, modifieddetermine_task_state()to read.statebefore falling back to artifact heuristic
Tests
- Existing tests in
test_task.pycontinue to pass (they test the artifact fallback path since test tasks don't have.statefiles by default) - All 249 tests pass