- **Restore 82 completed tasks** from tasks/complete/ back to tasks/ top level (all <7 days old per the cleanup policy; premature bulk archive was fixed). - **Dashboard: fix scroll-reset on auto-refresh** — renderBoard rebuilds the board via innerHTML every 2s, destroying each column-body's scrollTop. Now snapshots column-body scrollTop + board.scrollLeft + view.scrollTop before rebuild and restores after (matched by PHASE_GROUPS index). - **Dashboard UI additions** (pre-existing unstaged work): approval section cards, transition buttons, inline artifact editor (textarea for writing missing SPEC/VERDICT/etc from the detail modal). - **Bind ornith as Implement model** — config.md: Model explicit to omlx/Ornith-1.0-35B-4bit-mlx, context window 32768. Interactive autopilot already used ornith via opencode default; now explicit. - **Fix cleanup stub** — automaton-cleanup.sh had a stale --project arg pointing at a pytest temp dir (test isolation leak). Rewired to point at ~/.automaton. - **Fix plist-isolation test** — test asserted host plist doesn't exist, but a real install creates it. Now snapshots mtime before run, asserts unchanged after (only a write during the test counts as bleed). - **New Playwright smoke test** (tests/test_dashboard_ui.py) — 2 tests: board renders tasks, column scroll survives auto-refresh tick. Verified the test fails without the scroll fix (scrollTop resets to 0). Skipped via importorskip when playwright is absent (main CI stays green). - **Clarify SI loop scope in README** — new-project onboarding section documents the framework-scoped self-improvement loop and options (leave/pause/create project loop). - **CHANGELOG** documents all changes including the known model-divergence gap (mde tasks marked complete but per-role model binding was never implemented).
1.8 KiB
BUG_REPORT: fix-install-update-flow
Findings
Bug 1 (LOW): install.sh set -e with || true on loop commands
The set -e flag causes the script to exit on any command failure. The || true on the self-improvement loop commands (lines 87-89) correctly prevents set -e from triggering. However, the || echo "WARNING: ..." on the version check (line 99) also prevents set -e from triggering, which is the intended behavior.
Severity: LOW (no bug -- verified correct) Fix: None needed.
Bug 2 (LOW): update.sh hook copy overwrites existing hooks
In update.sh, the hook installation only runs if [ -f "$HOOK_SRC" ] && [ ! -f "$HOOK_DST" ]. This means existing hooks are NOT overwritten, which is correct -- the user may have custom hooks. But if the user previously had automaton hooks installed via symlink (from the old ln -sf code), those symlinks will persist. The user would need to manually delete them and re-run install-hooks.sh to get copies.
Severity: LOW (migration concern for existing users)
Fix: None needed for v1. The install-hooks.sh script always copies, so users can re-run it to switch from symlinks to copies.
Bug 3 (INFO): README still shows manual git clone before install.sh
The README now shows git clone <your-git-url> ~/.automaton followed by ./install.sh <your-git-url>. The user provides the URL twice: once for the manual clone and once for install.sh. This is slightly redundant but necessary because install.sh needs the URL for its own validation (and potentially for future self-update features). The manual clone is needed because install.sh itself is inside the cloned repo.
Severity: INFO (by design) Fix: None needed.
Summary
No correctness bugs found. Two LOW (one verified correct, one migration concern) and one INFO.
Verdict: CLEAN