Files
Lap Tran bc7daf8590 Restore archived tasks, fix dashboard scroll-reset, bind ornith, add Playwright smoke test
- **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).
2026-06-26 10:05:18 -04:00

2.1 KiB

DOC_REVIEW: add-loop-runner

Reviewed doc impact for task add-loop-runner.

Doc edits in this task

1. AGENTS.md Build & Test Commands

Add python3 scripts/loop-runner.py --mode tick --loop <name> to the install/run section so harnesses know how to fire a tick. Also add a note under "State Enforcement — Loops (v1)" that the runner is the runtime partner of the brakes layer.

Action: apply small AGENTS.md update.

2. README.md

The "Loop Engineering (beta)" section already mentions the runner's CLI shape (--create-loop, --install-schedule, etc). It should add a one-liner that the actual per-tick engine is loop-runner.py. Action: add one line.

3. CHANGELOG.md

Add an [unreleased] entry for the runner. Action: apply.

4. design/loops/technical.md §8 (Harness Invocation)

Already documents the harness.command shape and the default opencode run. Matches the implementation. No change.

5. prompts/

No loop prompts land in this task (deferred to task 6). No change.

6. config.md

The runner reads loop_mode_eligible from vram_detect.py --loop-mode --json, which task 1 already exposes. No new config field. No change.

7. templates/loops/ci-triage/loop.json

Currently has roles: {implement: null, verify: null, orchestrate: null}. The runner tolerates nulls (calls _invoke_harness with empty prompt path). For a usable ci-triage template, the prompts should be filled in task 6. For task 3, the template remains the minimal stub. No change in task 3.

8. contracts/harness-integration.md

Should mention loop-runner.py --check-gate for harnesses that want to integrate loop awareness. But touching the contract doc is out of scope per the task-2 doc-review precedent; defer to a follow-on doc-rev task. Defer.

Summary

Doc edits in this task:

  • AGENTS.md: 1 paragraph under "State Enforcement — Loops (v1)" referencing loop-runner.py.
  • README.md: 1 sentence in the loop section.
  • CHANGELOG.md: new [unreleased] entry.

No code-doc mismatches found. READY for referee.