Hardened autonomous loop (plugin 1.1.0)
This release makes the autoresearch loop actually hard to stop and hard to game. It reworks the four hooks into a real loop engine, enforces noise-floor rigor on keep/discard decisions, and locks the eval harness so an experimenting agent can't rewrite its own scorer.
The loop's spine — four hooks
Stophook is now a loop engine + budget valve — continuation uses JSONdecision:block(neverexit 2, which is broken for plugin hooks per anthropics/claude-code#10412), so the loop genuinely resists stopping until the budget is spent or the.autoresearch-offsentinel is set.PreCompact+SessionStarthooks survive compaction — state is snapshotted before compaction and rehydrated on resume, so a long run isn't lost when context is summarized.UserPromptSubmithook carries mid-run steers into the loop as context.- All four hooks honor the
.autoresearch-offkill switch and keep stdout clean (JSON-only where parsed; diagnostics to stderr).
Rigor & safety
- Noise-floor keep/discard — experiments are kept or discarded against the measured noise floor, not raw metric deltas, so run-to-run variance can't masquerade as improvement.
- Locked eval harness —
autoresearch.shand metric-emitting code are off-limits to experiments; an agent can't edit its own scorer to inflate results. ar-log.shappends valid-JSON result lines (jq with a Python fallback) so a stray quote/apostrophe in a description can't corrupt the JSONL state file.
Also
- Reworked
install.sh/uninstall.sh, expandedSKILL.mdandREADME.md, addeddocs/diagram-prompts.mdand a project banner.
Full changelog: v0.2-beta...v1.1.0
Note: git tags jump from
v0.2-betatov1.1.0to align with the plugin's semver (plugin.json), which advanced 1.0.0 → 1.1.0 in this release.