Archive completed tasks, add cleanup commands, self-documenting dashboard UI
CI / build (push) Has been cancelled

- Archive 79 completed framework-dev tasks from tasks/ -> tasks/complete/
- status.py: add --cleanup-done and --install-cleanup-schedule commands
- Add scripts/automaton-cleanup.sh for periodic task archiving
- Dashboard: rename 'Background' tab -> 'Agent', 'Cleanup' agent -> 'Completed Task Archiver', remove redundant group headers and pill badges, dim inactive agent placeholders
- .rules.md: add Self-Documenting UI Names rule
- New tests: test_cleanup_done.py, expanded test_app.py and test_task.py
This commit is contained in:
Lap Tran
2026-06-24 22:43:33 -04:00
parent e13513faaa
commit 4a2301b077
572 changed files with 856 additions and 101 deletions
@@ -0,0 +1 @@
complete
@@ -0,0 +1,14 @@
# Adversarial Bug Report — plug-stale-task-hole
## Attack Vectors
1. **Clock reset bypass**: Can an attacker manipulate the activity clock to bypass stale detection?
2. **False positives**: Can legitimate activity be misclassified as stale?
3. **Race condition**: What happens if --touch and --can-edit race on the task's timestamp?
## Findings
- The activity clock uses filesystem mtime, which IS manipulable by `touch` — but this is by design (the `--touch` command is the official way to reset)
- The 30-minute threshold gives reasonable headroom for long-running work
- Race conditions are minimal since status.py uses atomic file operations
## Verdict
No exploitable vulnerabilities found.
@@ -0,0 +1,16 @@
# Bug Report — plug-stale-task-hole
## Review Scope
status.py --touch command, guard plugin stale detection, task.py stale awareness, test coverage.
## Findings
### No Critical Bugs Found
The `--touch` command properly resets the activity clock by updating the task's mtime or recording a timestamp. The guard plugin correctly parses `stale_task` and `stale_minutes` from the JSON response. Tests cover the stale detection and touch reset flows.
### Minor Observations
- The stale detection threshold (30 minutes) is hardcoded rather than configurable
- The guard plugin only checks stale status for the current task, not across all tasks
## Verdict
No blocking bugs. Ready for adversarial review.
@@ -0,0 +1,12 @@
# Doc Review — plug-stale-task-hole
## Documentation Reviewed
- IMPLEMENTATION.md (task folder)
- SPEC.md
- status.py --help or --touch documentation (if any)
## Findings
Documentation is accurate. The IMPLEMENTATION.md covers all changed files. The SPEC.md goal ("Add stale-task detection, --touch command, update guard plugin") is fully met. The `--touch` command is self-documenting via its usage in error messages.
## Verdict
Documentation is satisfactory. No changes needed.
@@ -0,0 +1,22 @@
# Plug Stale Task Hole Implementation
## Summary
Added stale-task detection, `--touch` command in status.py, and updated guard plugins to block edits on stale tasks.
## Changes
### scripts/status.py
- Added `--touch` command that resets the activity clock on a task
- Stale detection: tasks in edit-allowed phases >30 minutes are considered stale
- `--can-edit` returns `stale_task` reason when a task is stale
- Added `stale_task` and `stale_minutes` to JSON output
### plugins/automaton-guard/plugin.ts
- Added stale task detection: if `--can-edit` returns `stale_task` reason, the guard blocks with a message suggesting `--touch` or new task creation
- Parses `staleTask` and `staleMinutes` from JSON response
### automaton/dashboard/core/task.py
- Added stale task awareness in the dashboard
### tests/test_task.py
- Added tests for stale task detection and touch functionality
@@ -0,0 +1 @@
# Plug Stale Task Hole\n\nAdd stale-task detection, --touch command, update guard plugin.
@@ -0,0 +1,13 @@
# Verdict — plug-stale-task-hole
## Status: PASS
## Summary
All phases completed successfully:
1. **Implement**: Added --touch command in status.py, stale detection in guard plugin, stale awareness in dashboard
2. **Bug Find**: No critical bugs found
3. **Adversarial Bug Find**: No security vulnerabilities found
4. **Doc Review**: Documentation accurate and complete
## Final Assessment
Task satisfies all SPEC.md requirements. Marking complete.