@mobrienv/autoloop 0.1.4 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/README.md +103 -42
  2. package/bin/autoloop +0 -0
  3. package/dist/agent-map.d.ts +10 -0
  4. package/dist/agent-map.js +58 -0
  5. package/dist/agent-map.js.map +1 -0
  6. package/dist/backend/acp-client.d.ts +38 -0
  7. package/dist/backend/acp-client.js +288 -0
  8. package/dist/backend/acp-client.js.map +1 -0
  9. package/dist/backend/index.d.ts +1 -1
  10. package/dist/backend/index.js +17 -5
  11. package/dist/backend/index.js.map +1 -1
  12. package/dist/backend/kiro-bridge.d.ts +17 -0
  13. package/dist/backend/kiro-bridge.js +80 -0
  14. package/dist/backend/kiro-bridge.js.map +1 -0
  15. package/dist/backend/kiro-worker.d.ts +1 -0
  16. package/dist/backend/kiro-worker.js +83 -0
  17. package/dist/backend/kiro-worker.js.map +1 -0
  18. package/dist/backend/run-command.js +2 -2
  19. package/dist/backend/run-command.js.map +1 -1
  20. package/dist/backend/run-kiro.d.ts +3 -0
  21. package/dist/backend/run-kiro.js +12 -0
  22. package/dist/backend/run-kiro.js.map +1 -0
  23. package/dist/backend/run-pi.js.map +1 -1
  24. package/dist/chains/budget.js +16 -4
  25. package/dist/chains/budget.js.map +1 -1
  26. package/dist/chains/load.d.ts +7 -1
  27. package/dist/chains/load.js +58 -9
  28. package/dist/chains/load.js.map +1 -1
  29. package/dist/chains/render.js +36 -8
  30. package/dist/chains/render.js.map +1 -1
  31. package/dist/chains/run.js +129 -44
  32. package/dist/chains/run.js.map +1 -1
  33. package/dist/chains/types.d.ts +1 -0
  34. package/dist/chains.d.ts +5 -4
  35. package/dist/chains.js +3 -3
  36. package/dist/chains.js.map +1 -1
  37. package/dist/commands/chain.js +6 -4
  38. package/dist/commands/chain.js.map +1 -1
  39. package/dist/commands/config.d.ts +1 -0
  40. package/dist/commands/config.js +74 -0
  41. package/dist/commands/config.js.map +1 -0
  42. package/dist/commands/dashboard.d.ts +1 -0
  43. package/dist/commands/dashboard.js +68 -0
  44. package/dist/commands/dashboard.js.map +1 -0
  45. package/dist/commands/inspect.js +125 -17
  46. package/dist/commands/inspect.js.map +1 -1
  47. package/dist/commands/list.d.ts +1 -1
  48. package/dist/commands/list.js +6 -3
  49. package/dist/commands/list.js.map +1 -1
  50. package/dist/commands/loops.js +11 -11
  51. package/dist/commands/loops.js.map +1 -1
  52. package/dist/commands/memory.js +2 -2
  53. package/dist/commands/memory.js.map +1 -1
  54. package/dist/commands/run.d.ts +1 -1
  55. package/dist/commands/run.js +102 -15
  56. package/dist/commands/run.js.map +1 -1
  57. package/dist/commands/runs.d.ts +1 -0
  58. package/dist/commands/runs.js +50 -0
  59. package/dist/commands/runs.js.map +1 -0
  60. package/dist/commands/task.d.ts +1 -0
  61. package/dist/commands/task.js +74 -0
  62. package/dist/commands/task.js.map +1 -0
  63. package/dist/commands/worktree.d.ts +1 -0
  64. package/dist/commands/worktree.js +162 -0
  65. package/dist/commands/worktree.js.map +1 -0
  66. package/dist/config.d.ts +15 -1
  67. package/dist/config.js +90 -21
  68. package/dist/config.js.map +1 -1
  69. package/dist/dashboard/app.d.ts +12 -0
  70. package/dist/dashboard/app.js +23 -0
  71. package/dist/dashboard/app.js.map +1 -0
  72. package/dist/dashboard/routes/api.d.ts +3 -0
  73. package/dist/dashboard/routes/api.js +103 -0
  74. package/dist/dashboard/routes/api.js.map +1 -0
  75. package/dist/dashboard/routes/pages.d.ts +2 -0
  76. package/dist/dashboard/routes/pages.js +14 -0
  77. package/dist/dashboard/routes/pages.js.map +1 -0
  78. package/dist/dashboard/views/alpine-vendor.d.ts +1 -0
  79. package/dist/dashboard/views/alpine-vendor.js +10 -0
  80. package/dist/dashboard/views/alpine-vendor.js.map +1 -0
  81. package/dist/dashboard/views/shell.d.ts +1 -0
  82. package/dist/dashboard/views/shell.js +714 -0
  83. package/dist/dashboard/views/shell.js.map +1 -0
  84. package/dist/events/decode.js.map +1 -1
  85. package/dist/events/encode.js +2 -2
  86. package/dist/events/encode.js.map +1 -1
  87. package/dist/harness/config-helpers.d.ts +11 -0
  88. package/dist/harness/config-helpers.js +242 -64
  89. package/dist/harness/config-helpers.js.map +1 -1
  90. package/dist/harness/coordination.js +12 -12
  91. package/dist/harness/coordination.js.map +1 -1
  92. package/dist/harness/display.d.ts +4 -3
  93. package/dist/harness/display.js +57 -11
  94. package/dist/harness/display.js.map +1 -1
  95. package/dist/harness/emit.js +31 -13
  96. package/dist/harness/emit.js.map +1 -1
  97. package/dist/harness/index.d.ts +7 -7
  98. package/dist/harness/index.js +151 -35
  99. package/dist/harness/index.js.map +1 -1
  100. package/dist/harness/iteration.d.ts +12 -0
  101. package/dist/harness/iteration.js +66 -64
  102. package/dist/harness/iteration.js.map +1 -1
  103. package/dist/harness/journal.d.ts +17 -0
  104. package/dist/harness/journal.js +74 -5
  105. package/dist/harness/journal.js.map +1 -1
  106. package/dist/harness/metareview.js +30 -15
  107. package/dist/harness/metareview.js.map +1 -1
  108. package/dist/harness/metrics.js +12 -12
  109. package/dist/harness/metrics.js.map +1 -1
  110. package/dist/harness/parallel.d.ts +1 -1
  111. package/dist/harness/parallel.js +141 -62
  112. package/dist/harness/parallel.js.map +1 -1
  113. package/dist/harness/prompt.d.ts +18 -9
  114. package/dist/harness/prompt.js +80 -44
  115. package/dist/harness/prompt.js.map +1 -1
  116. package/dist/harness/scratchpad.js +8 -6
  117. package/dist/harness/scratchpad.js.map +1 -1
  118. package/dist/harness/stop.js +16 -9
  119. package/dist/harness/stop.js.map +1 -1
  120. package/dist/harness/tools.js +39 -13
  121. package/dist/harness/tools.js.map +1 -1
  122. package/dist/harness/types.d.ts +29 -0
  123. package/dist/harness/wave/finalize-wave.d.ts +1 -1
  124. package/dist/harness/wave/finalize-wave.js +36 -9
  125. package/dist/harness/wave/finalize-wave.js.map +1 -1
  126. package/dist/harness/wave/launch-branches.d.ts +2 -2
  127. package/dist/harness/wave/launch-branches.js +147 -51
  128. package/dist/harness/wave/launch-branches.js.map +1 -1
  129. package/dist/harness/wave/parse-objectives.js +4 -1
  130. package/dist/harness/wave/parse-objectives.js.map +1 -1
  131. package/dist/harness/wave.d.ts +2 -2
  132. package/dist/harness/wave.js +89 -28
  133. package/dist/harness/wave.js.map +1 -1
  134. package/dist/isolation/index.d.ts +4 -0
  135. package/dist/isolation/index.js +3 -0
  136. package/dist/isolation/index.js.map +1 -0
  137. package/dist/isolation/resolve.d.ts +39 -0
  138. package/dist/isolation/resolve.js +118 -0
  139. package/dist/isolation/resolve.js.map +1 -0
  140. package/dist/isolation/run-scope.d.ts +21 -0
  141. package/dist/isolation/run-scope.js +50 -0
  142. package/dist/isolation/run-scope.js.map +1 -0
  143. package/dist/json.js +10 -8
  144. package/dist/json.js.map +1 -1
  145. package/dist/loops/health.d.ts +4 -2
  146. package/dist/loops/health.js +73 -25
  147. package/dist/loops/health.js.map +1 -1
  148. package/dist/loops/list.d.ts +2 -2
  149. package/dist/loops/list.js +6 -6
  150. package/dist/loops/list.js.map +1 -1
  151. package/dist/loops/policy.d.ts +6 -0
  152. package/dist/loops/policy.js +41 -0
  153. package/dist/loops/policy.js.map +1 -0
  154. package/dist/loops/render.d.ts +2 -1
  155. package/dist/loops/render.js +24 -11
  156. package/dist/loops/render.js.map +1 -1
  157. package/dist/loops/show.d.ts +2 -2
  158. package/dist/loops/show.js +13 -13
  159. package/dist/loops/show.js.map +1 -1
  160. package/dist/loops/watch.d.ts +7 -1
  161. package/dist/loops/watch.js +82 -16
  162. package/dist/loops/watch.js.map +1 -1
  163. package/dist/main.js +58 -16
  164. package/dist/main.js.map +1 -1
  165. package/dist/markdown.js +11 -11
  166. package/dist/markdown.js.map +1 -1
  167. package/dist/memory-render.js +5 -5
  168. package/dist/memory-render.js.map +1 -1
  169. package/dist/memory.d.ts +1 -2
  170. package/dist/memory.js +44 -40
  171. package/dist/memory.js.map +1 -1
  172. package/dist/pi-adapter.js +11 -11
  173. package/dist/pi-adapter.js.map +1 -1
  174. package/dist/profiles.d.ts +12 -0
  175. package/dist/profiles.js +71 -0
  176. package/dist/profiles.js.map +1 -0
  177. package/dist/registry/derive.js +10 -3
  178. package/dist/registry/derive.js.map +1 -1
  179. package/dist/registry/discover.d.ts +20 -0
  180. package/dist/registry/discover.js +98 -0
  181. package/dist/registry/discover.js.map +1 -0
  182. package/dist/registry/harness.js +8 -2
  183. package/dist/registry/harness.js.map +1 -1
  184. package/dist/registry/index.d.ts +4 -3
  185. package/dist/registry/index.js +3 -2
  186. package/dist/registry/index.js.map +1 -1
  187. package/dist/registry/read.js.map +1 -1
  188. package/dist/registry/rebuild.js +7 -4
  189. package/dist/registry/rebuild.js.map +1 -1
  190. package/dist/registry/types.d.ts +9 -0
  191. package/dist/registry/update.js +1 -1
  192. package/dist/registry/update.js.map +1 -1
  193. package/dist/tasks-render.d.ts +2 -0
  194. package/dist/tasks-render.js +44 -0
  195. package/dist/tasks-render.js.map +1 -0
  196. package/dist/tasks.d.ts +24 -0
  197. package/dist/tasks.js +184 -0
  198. package/dist/tasks.js.map +1 -0
  199. package/dist/testing/mock-backend.js +2 -2
  200. package/dist/testing/mock-backend.js.map +1 -1
  201. package/dist/topology.d.ts +6 -0
  202. package/dist/topology.js +129 -8
  203. package/dist/topology.js.map +1 -1
  204. package/dist/usage.d.ts +1 -0
  205. package/dist/usage.js +56 -11
  206. package/dist/usage.js.map +1 -1
  207. package/dist/utils.d.ts +6 -0
  208. package/dist/utils.js +272 -2
  209. package/dist/utils.js.map +1 -1
  210. package/dist/worktree/clean.d.ts +12 -0
  211. package/dist/worktree/clean.js +98 -0
  212. package/dist/worktree/clean.js.map +1 -0
  213. package/dist/worktree/create.d.ts +14 -0
  214. package/dist/worktree/create.js +71 -0
  215. package/dist/worktree/create.js.map +1 -0
  216. package/dist/worktree/index.d.ts +10 -0
  217. package/dist/worktree/index.js +6 -0
  218. package/dist/worktree/index.js.map +1 -0
  219. package/dist/worktree/list.d.ts +9 -0
  220. package/dist/worktree/list.js +24 -0
  221. package/dist/worktree/list.js.map +1 -0
  222. package/dist/worktree/merge.d.ts +11 -0
  223. package/dist/worktree/merge.js +129 -0
  224. package/dist/worktree/merge.js.map +1 -0
  225. package/dist/worktree/meta.d.ts +17 -0
  226. package/dist/worktree/meta.js +34 -0
  227. package/dist/worktree/meta.js.map +1 -0
  228. package/package.json +24 -4
  229. package/presets/autocode/README.md +1 -1
  230. package/presets/autocode/autoloops.toml +9 -1
  231. package/presets/autocode/harness.md +12 -5
  232. package/presets/autocode/roles/build.md +5 -4
  233. package/presets/autocode/roles/critic.md +2 -2
  234. package/presets/autocode/roles/finalizer.md +2 -2
  235. package/presets/autocode/roles/planner.md +7 -7
  236. package/presets/autodoc/README.md +1 -1
  237. package/presets/autodoc/autoloops.toml +1 -1
  238. package/presets/autodoc/harness.md +6 -6
  239. package/presets/autodoc/roles/auditor.md +3 -3
  240. package/presets/autodoc/roles/checker.md +2 -2
  241. package/presets/autodoc/roles/publisher.md +3 -3
  242. package/presets/autodoc/roles/writer.md +4 -4
  243. package/presets/autofix/README.md +1 -1
  244. package/presets/autofix/autoloops.toml +5 -2
  245. package/presets/autofix/harness.md +8 -7
  246. package/presets/autofix/roles/closer.md +4 -4
  247. package/presets/autofix/roles/diagnoser.md +6 -5
  248. package/presets/autofix/roles/fixer.md +4 -4
  249. package/presets/autofix/roles/verifier.md +2 -2
  250. package/presets/autoideas/README.md +1 -1
  251. package/presets/autoideas/autoloops.toml +1 -1
  252. package/presets/autoideas/harness.md +11 -11
  253. package/presets/autoideas/roles/analyst.md +4 -4
  254. package/presets/autoideas/roles/reviewer.md +3 -3
  255. package/presets/autoideas/roles/scanner.md +3 -3
  256. package/presets/autoideas/roles/synthesizer.md +20 -7
  257. package/presets/automerge/README.md +3 -0
  258. package/presets/automerge/autoloops.toml +12 -0
  259. package/presets/automerge/harness.md +10 -0
  260. package/presets/automerge/miniloops.toml +12 -0
  261. package/presets/automerge/roles/merge.md +10 -0
  262. package/presets/automerge/topology.toml +10 -0
  263. package/presets/autoperf/README.md +1 -1
  264. package/presets/autoperf/autoloops.toml +1 -1
  265. package/presets/autoperf/harness.md +5 -5
  266. package/presets/autoperf/roles/judge.md +3 -3
  267. package/presets/autoperf/roles/measurer.md +4 -4
  268. package/presets/autoperf/roles/optimizer.md +4 -4
  269. package/presets/autoperf/roles/profiler.md +4 -4
  270. package/presets/autopr/README.md +99 -0
  271. package/presets/autopr/autoloops.toml +22 -0
  272. package/presets/autopr/harness.md +27 -0
  273. package/presets/autopr/miniloops.toml +22 -0
  274. package/presets/autopr/roles/collector.md +55 -0
  275. package/presets/autopr/roles/drafter.md +38 -0
  276. package/presets/autopr/roles/publisher.md +28 -0
  277. package/presets/autopr/roles/validator.md +31 -0
  278. package/presets/autopr/topology.toml +32 -0
  279. package/presets/autoqa/README.md +1 -1
  280. package/presets/autoqa/autoloops.toml +1 -1
  281. package/presets/autoqa/harness.md +10 -10
  282. package/presets/autoqa/roles/executor.md +3 -3
  283. package/presets/autoqa/roles/inspector.md +2 -2
  284. package/presets/autoqa/roles/planner.md +6 -6
  285. package/presets/autoqa/roles/reporter.md +9 -9
  286. package/presets/autoresearch/README.md +1 -1
  287. package/presets/autoresearch/autoloops.toml +1 -1
  288. package/presets/autoresearch/harness.md +5 -5
  289. package/presets/autoresearch/roles/benchmarker.md +3 -3
  290. package/presets/autoresearch/roles/evaluator.md +5 -5
  291. package/presets/autoresearch/roles/implementer.md +4 -4
  292. package/presets/autoresearch/roles/strategist.md +6 -6
  293. package/presets/autoreview/README.md +1 -1
  294. package/presets/autoreview/autoloops.toml +1 -1
  295. package/presets/autoreview/harness.md +5 -5
  296. package/presets/autoreview/roles/checker.md +4 -4
  297. package/presets/autoreview/roles/reader.md +5 -5
  298. package/presets/autoreview/roles/suggester.md +4 -4
  299. package/presets/autoreview/roles/summarizer.md +4 -4
  300. package/presets/autosec/README.md +1 -1
  301. package/presets/autosec/autoloops.toml +1 -1
  302. package/presets/autosec/harness.md +5 -5
  303. package/presets/autosec/roles/analyst.md +4 -4
  304. package/presets/autosec/roles/hardener.md +2 -2
  305. package/presets/autosec/roles/reporter.md +4 -4
  306. package/presets/autosec/roles/scanner.md +3 -3
  307. package/presets/autosimplify/README.md +1 -1
  308. package/presets/autosimplify/autoloops.toml +7 -3
  309. package/presets/autosimplify/harness.md +7 -7
  310. package/presets/autosimplify/roles/reviewer.md +3 -3
  311. package/presets/autosimplify/roles/scoper.md +7 -7
  312. package/presets/autosimplify/roles/simplifier.md +4 -4
  313. package/presets/autosimplify/roles/verifier.md +3 -3
  314. package/presets/autospec/README.md +1 -1
  315. package/presets/autospec/autoloops.toml +1 -1
  316. package/presets/autospec/harness.md +6 -6
  317. package/presets/autospec/roles/clarifier.md +4 -3
  318. package/presets/autospec/roles/critic.md +1 -1
  319. package/presets/autospec/roles/designer.md +3 -3
  320. package/presets/autospec/roles/planner.md +2 -2
  321. package/presets/autospec/roles/researcher.md +3 -3
  322. package/presets/autotest/README.md +1 -1
  323. package/presets/autotest/autoloops.toml +1 -1
  324. package/presets/autotest/harness.md +6 -6
  325. package/presets/autotest/roles/assessor.md +3 -3
  326. package/presets/autotest/roles/runner.md +2 -2
  327. package/presets/autotest/roles/surveyor.md +4 -4
  328. package/presets/autotest/roles/writer.md +4 -4
@@ -3,30 +3,30 @@ You are the reporter.
3
3
  Do not inspect the repo. Do not plan. Do not execute commands.
4
4
 
5
5
  Your job:
6
- 1. Compile validation results into `.autoloop/qa-report.md`.
6
+ 1. Compile validation results into `{{STATE_DIR}}/qa-report.md`.
7
7
  2. Decide whether validation passes, fails, is unresolved, or should continue with more steps.
8
8
 
9
9
  On every activation:
10
- - Read `.autoloop/qa-plan.md`, `.autoloop/qa-report.md`, and `.autoloop/progress.md`.
10
+ - Read `{{STATE_DIR}}/qa-plan.md`, `{{STATE_DIR}}/qa-report.md`, and `{{STATE_DIR}}/progress.md`.
11
11
  - Review the executor's latest results.
12
12
  - Start skeptical: the repo is not healthy until the evidence proves it.
13
13
 
14
14
  Process:
15
- 1. Update `.autoloop/qa-report.md` with the latest step's results:
15
+ 1. Update `{{STATE_DIR}}/qa-report.md` with the latest step's results:
16
16
  - Step number and description
17
17
  - Command or inspection action run
18
18
  - Result: PASS / FAIL / BLOCKED / SKIPPED
19
19
  - Key evidence (exit code, error summary, test counts, cited structural evidence, and any plan-defined artifact/verdict fields)
20
20
  2. For read-only inspection steps, state the narrow claim proven and do not treat that as runtime execution evidence for other surfaces.
21
- 3. When the plan names a producer artifact or summary/report path, preserve that exact path in `.autoloop/qa-report.md` and `.autoloop/progress.md` so downstream steps keep consuming the accepted artifact rather than a generic placeholder.
21
+ 3. When the plan names a producer artifact or summary/report path, preserve that exact path in `{{STATE_DIR}}/qa-report.md` and `{{STATE_DIR}}/progress.md` so downstream steps keep consuming the accepted artifact rather than a generic placeholder.
22
22
  4. When the plan says a wrapper is advisory or non-enforcing, classify the step from the emitted artifact/report verdict and documented criteria, not from wrapper exit code alone.
23
- 5. Update `.autoloop/progress.md` to preserve the carry-forward ledger:
23
+ 5. Update `{{STATE_DIR}}/progress.md` to preserve the carry-forward ledger:
24
24
  - Mark the current step's surface/result in the status table.
25
25
  - Preserve previously accepted steps exactly as-is unless the new evidence contradicts them.
26
26
  - Identify the next unfinished planned step, if any, without assigning executor work directly.
27
- - If `.autoloop/qa-plan.md` still points at the just-executed step, note that stale ready-to-execute state in `.autoloop/progress.md` so the planner refreshes it on `qa.continue`.
27
+ - If `{{STATE_DIR}}/qa-plan.md` still points at the just-executed step, note that stale ready-to-execute state in `{{STATE_DIR}}/progress.md` so the planner refreshes it on `qa.continue`.
28
28
  6. Check the plan for remaining steps.
29
- 7. Update `.autoloop/progress.md` so the handoff note matches the reporter role's actual routing powers:
29
+ 7. Update `{{STATE_DIR}}/progress.md` so the handoff note matches the reporter role's actual routing powers:
30
30
  - If continuing, write the next action for the planner, because the reporter hands off with `qa.continue` and the planner chooses the next executable step.
31
31
  - Do not tell the executor to run a new step directly from the reporter turn.
32
32
  - Do not mention executor-only emits or commands as the reporter's handoff.
@@ -36,7 +36,7 @@ Process:
36
36
  - If a critical step failed and more inspection is needed → emit `qa.failed` with which step failed and why it matters.
37
37
  - If all steps are complete but some failed or stayed blocked → emit `task.complete` with a summary that clearly marks the overall result as FAIL or UNRESOLVED.
38
38
 
39
- `.autoloop/qa-report.md` format:
39
+ `{{STATE_DIR}}/qa-report.md` format:
40
40
  ```
41
41
  # QA Report
42
42
 
@@ -68,7 +68,7 @@ Rules:
68
68
  - Be factual. Report what happened, not what should have happened.
69
69
  - Absence of evidence is unresolved, not pass.
70
70
  - Do not use a positive-sounding status to mean “continue”.
71
- - Reporter handoffs are limited to `qa.continue`, `qa.failed`, or `task.complete`. Keep `.autoloop/progress.md` consistent with that routing reality.
71
+ - Reporter handoffs are limited to `qa.continue`, `qa.failed`, or `task.complete`. Keep `{{STATE_DIR}}/progress.md` consistent with that routing reality.
72
72
  - If more work remains, frame the next action as planner work (pick/replan the next step), not executor work.
73
73
  - Do not edit product code, loop runtime code, or other tooling from the reporter role; if the loop itself broke during validation, report that as BLOCKED or UNRESOLVED instead.
74
74
  - The report should be useful to a human reading it cold — include enough context.
@@ -1,6 +1,6 @@
1
1
  # Autoresearch miniloop
2
2
 
3
- An autoloop-native autonomous experiment loop inspired by Ralph's autoresearch preset.
3
+ Use when you need to explore a technical question through iterative experiments and analysis.
4
4
 
5
5
  Shape:
6
6
  - strategist — decides what experiment to try next
@@ -4,7 +4,7 @@ event_loop.completion_promise = "LOOP_COMPLETE"
4
4
  event_loop.required_events = ["experiment.measured"]
5
5
 
6
6
  backend.kind = "command"
7
- backend.command = "/Users/rook/.npm-global/bin/claude"
7
+ backend.command = "claude"
8
8
  backend.timeout_ms = 3000000
9
9
 
10
10
  review.enabled = true
@@ -3,7 +3,7 @@ This is a autoloops-native autoresearch loop inspired by Ralph's autoresearch pr
3
3
  The loop runs autonomous experiments: strategize, implement, measure, evaluate.
4
4
 
5
5
  Global rules:
6
- - Shared working files are the source of truth: `.autoloop/autoresearch.md`, `.autoloop/experiments.jsonl`, and `.autoloop/progress.md`.
6
+ - Shared working files are the source of truth: `{{STATE_DIR}}/autoresearch.md`, `{{STATE_DIR}}/experiments.jsonl`, and `{{STATE_DIR}}/progress.md`.
7
7
  - One experiment at a time. Do not start a new experiment before the current one is evaluated.
8
8
  - Use the event tool instead of prose-only handoffs.
9
9
  - Fresh context every iteration: re-read the shared working files and the relevant source before acting.
@@ -12,13 +12,13 @@ Global rules:
12
12
  - The evaluator makes keep/discard decisions. Other roles do not commit or revert.
13
13
  - False keeps are worse than false discards.
14
14
  - Qualitative wins only count when the rubric was written down before the experiment.
15
- - Use `./.autoloop/autoloops memory add learning ...` for durable learnings.
15
+ - Use `{{TOOL_PATH}} memory add learning ...` for durable learnings.
16
16
  - Do not invent extra phases. Stay inside strategist -> implementer -> benchmarker -> evaluator.
17
17
 
18
18
  State files:
19
- - `.autoloop/autoresearch.md` — running session document: goal, constraints, experiment history summary, current hypothesis.
20
- - `.autoloop/experiments.jsonl` — append-only log. Each line: `{"id":N, "hypothesis":"...", "change":"...", "metric_before":..., "metric_after":..., "verdict":"keep|discard", "reason":"..."}`.
21
- - `.autoloop/progress.md` — current experiment status, what the next role should do.
19
+ - `{{STATE_DIR}}/autoresearch.md` — running session document: goal, constraints, experiment history summary, current hypothesis.
20
+ - `{{STATE_DIR}}/experiments.jsonl` — append-only log. Each line: `{"id":N, "hypothesis":"...", "change":"...", "metric_before":..., "metric_after":..., "verdict":"keep|discard", "reason":"..."}`.
21
+ - `{{STATE_DIR}}/progress.md` — current experiment status, what the next role should do.
22
22
 
23
23
  LLM-as-judge:
24
24
  - The evaluator can invoke `../../scripts/llm-judge.sh` to get a semantic pass/fail verdict.
@@ -3,13 +3,13 @@ You are the benchmarker.
3
3
  Run the measurement command and capture metrics for the current experiment.
4
4
 
5
5
  On every activation:
6
- - Re-read `.autoloop/autoresearch.md`, `.autoloop/experiments.jsonl`, and `.autoloop/progress.md`.
6
+ - Re-read `{{STATE_DIR}}/autoresearch.md`, `{{STATE_DIR}}/experiments.jsonl`, and `{{STATE_DIR}}/progress.md`.
7
7
  - Identify the measurement command or procedure described by the strategist/implementer.
8
8
 
9
9
  Process:
10
10
  1. Run the measurement command exactly as specified.
11
11
  2. Capture the primary metric (and any secondary metrics) from the output.
12
- 3. Record an evidence bundle in `.autoloop/progress.md` (or `.autoloop/logs/` for verbose output):
12
+ 3. Record an evidence bundle in `{{STATE_DIR}}/progress.md` (or `{{STATE_DIR}}/logs/` for verbose output):
13
13
  - exact command
14
14
  - exit status
15
15
  - raw output location
@@ -22,7 +22,7 @@ Process:
22
22
  - delta and direction
23
23
 
24
24
  If the measurement fails or is not runnable:
25
- - Record the error in `.autoloop/progress.md`.
25
+ - Record the error in `{{STATE_DIR}}/progress.md`.
26
26
  - Emit `experiment.blocked` with the failure details.
27
27
 
28
28
  Rules:
@@ -3,13 +3,13 @@ You are the evaluator.
3
3
  Decide whether to keep or discard the current experiment based on measurement results.
4
4
 
5
5
  On every activation:
6
- - Re-read `.autoloop/autoresearch.md`, `.autoloop/experiments.jsonl`, and `.autoloop/progress.md`.
6
+ - Re-read `{{STATE_DIR}}/autoresearch.md`, `{{STATE_DIR}}/experiments.jsonl`, and `{{STATE_DIR}}/progress.md`.
7
7
  - Review the measurement results from the benchmarker.
8
8
  - Start skeptical: assume discard until the evidence proves keep.
9
9
 
10
10
  Process:
11
11
  1. Compare the measured metric against the baseline or previous best.
12
- 2. Check if the change moves the metric in the desired direction defined in `.autoloop/autoresearch.md`.
12
+ 2. Check if the change moves the metric in the desired direction defined in `{{STATE_DIR}}/autoresearch.md`.
13
13
  3. Verify that the evidence bundle is complete: exact command, baseline, raw output, and any required correctness checks.
14
14
  4. Optionally invoke the LLM-as-judge for semantic evaluation:
15
15
  - `echo "<content to evaluate>" | ../../scripts/llm-judge.sh "<criteria>"`
@@ -18,15 +18,15 @@ Process:
18
18
  5. Make the keep/discard decision:
19
19
  - **Keep** only if the primary metric improved meaningfully, the result is not obviously noise, and correctness checks passed.
20
20
  - **Discard** if the metric regressed, the improvement is trivial or ambiguous, the evidence bundle is incomplete, or correctness is unproven.
21
- 6. Append a result line to `.autoloop/experiments.jsonl`:
21
+ 6. Append a result line to `{{STATE_DIR}}/experiments.jsonl`:
22
22
  `{"id":N, "hypothesis":"...", "change":"...", "metric_before":..., "metric_after":..., "verdict":"keep|discard", "reason":"..."}`
23
- 7. Update `.autoloop/progress.md` with the verdict and reasoning.
23
+ 7. Update `{{STATE_DIR}}/progress.md` with the verdict and reasoning.
24
24
  8. Emit `experiment.evaluated` (if kept) or `experiment.discarded` (if reverted).
25
25
 
26
26
  Rules:
27
27
  - Base decisions on evidence, not intuition.
28
28
  - The LLM judge supplements hard metrics; it does not rescue weak numeric evidence.
29
- - Always append to `.autoloop/experiments.jsonl` before emitting.
29
+ - Always append to `{{STATE_DIR}}/experiments.jsonl` before emitting.
30
30
  - Commit or revert before handing off — never leave the tree dirty.
31
31
  - False keeps are worse than false discards.
32
32
  - `held steady with qualitative improvement` is not enough unless that qualitative rubric was written down before the experiment.
@@ -3,20 +3,20 @@ You are the implementer.
3
3
  Execute exactly the experiment described in the latest `experiment.planned` handoff.
4
4
 
5
5
  On every activation:
6
- - Re-read `.autoloop/autoresearch.md`, `.autoloop/experiments.jsonl`, and `.autoloop/progress.md`.
6
+ - Re-read `{{STATE_DIR}}/autoresearch.md`, `{{STATE_DIR}}/experiments.jsonl`, and `{{STATE_DIR}}/progress.md`.
7
7
  - Re-read the source files named in the current experiment plan.
8
- - Update `.autoloop/progress.md` with what you are doing.
8
+ - Update `{{STATE_DIR}}/progress.md` with what you are doing.
9
9
 
10
10
  Process:
11
11
  1. Understand the experiment hypothesis and the planned change.
12
12
  2. Make the smallest code change that tests the hypothesis.
13
- 3. Ensure the change is cleanly reversible (note original state in `.autoloop/progress.md` if needed).
13
+ 3. Ensure the change is cleanly reversible (note original state in `{{STATE_DIR}}/progress.md` if needed).
14
14
  4. Emit `experiment.ready` with:
15
15
  - what changed (files and a one-line summary)
16
16
  - how the benchmarker should measure the result
17
17
 
18
18
  If blocked:
19
- - Record the reason in `.autoloop/progress.md`.
19
+ - Record the reason in `{{STATE_DIR}}/progress.md`.
20
20
  - Emit `experiment.blocked` with a concrete blocker and suggested re-plan.
21
21
 
22
22
  Rules:
@@ -8,23 +8,23 @@ Your job:
8
8
  3. Hand off exactly one experiment to the implementer.
9
9
 
10
10
  On every activation:
11
- - Read `.autoloop/autoresearch.md`, `.autoloop/experiments.jsonl`, and `.autoloop/progress.md` if they exist.
11
+ - Read `{{STATE_DIR}}/autoresearch.md`, `{{STATE_DIR}}/experiments.jsonl`, and `{{STATE_DIR}}/progress.md` if they exist.
12
12
  - Re-read the latest scratchpad/journal context before deciding.
13
13
 
14
14
  On first activation:
15
15
  - Create or refresh:
16
- - `.autoloop/autoresearch.md` — goal, metric to optimize, direction (higher/lower is better), constraints, baseline measurement instructions.
17
- - `.autoloop/experiments.jsonl` — empty file (will be appended to by the evaluator).
18
- - `.autoloop/progress.md` — current experiment status.
16
+ - `{{STATE_DIR}}/autoresearch.md` — goal, metric to optimize, direction (higher/lower is better), constraints, baseline measurement instructions.
17
+ - `{{STATE_DIR}}/experiments.jsonl` — empty file (will be appended to by the evaluator).
18
+ - `{{STATE_DIR}}/progress.md` — current experiment status.
19
19
  - Establish a baseline: describe how the benchmarker should capture the initial metric.
20
- - Write experiment #1's hypothesis and plan into `.autoloop/progress.md`.
20
+ - Write experiment #1's hypothesis and plan into `{{STATE_DIR}}/progress.md`.
21
21
  - Emit `experiment.planned` with the hypothesis and what files to change.
22
22
 
23
23
  On later activations (`experiment.evaluated` or `experiment.discarded`):
24
24
  - Re-read the shared working files and the experiment log.
25
25
  - Analyze what worked and what didn't across all experiments so far.
26
26
  - If the goal is met or no more productive experiments remain, emit `task.complete` only with a log-backed rationale.
27
- - Otherwise, write the next experiment's hypothesis and plan into `.autoloop/progress.md` and emit `experiment.planned`.
27
+ - Otherwise, write the next experiment's hypothesis and plan into `{{STATE_DIR}}/progress.md` and emit `experiment.planned`.
28
28
 
29
29
  Every experiment plan must include:
30
30
  - exact benchmark command
@@ -1,6 +1,6 @@
1
1
  # AutoReview miniloop
2
2
 
3
- An autoloop-native code review loop for PR diffs and change sets.
3
+ Use when you want an automated code review of a PR diff or change set.
4
4
 
5
5
  AutoReview reads changes, checks for issues across correctness, security, style, performance, and maintainability, proposes concrete fixes, and compiles structured review feedback with a clear verdict.
6
6
 
@@ -4,7 +4,7 @@ event_loop.completion_promise = "LOOP_COMPLETE"
4
4
  event_loop.required_events = ["review.checked"]
5
5
 
6
6
  backend.kind = "command"
7
- backend.command = "/Users/rook/.npm-global/bin/claude"
7
+ backend.command = "claude"
8
8
  backend.timeout_ms = 3000000
9
9
  # For deterministic local harness testing only:
10
10
  # backend.kind = "command"
@@ -3,7 +3,7 @@ This is a autoloops-native autoreview loop for code review of PR diffs or change
3
3
  The loop reads changes, checks for issues across multiple dimensions (correctness, security, style, performance), proposes concrete fixes, and compiles structured review feedback.
4
4
 
5
5
  Global rules:
6
- - Shared working files are the source of truth: `.autoloop/review-context.md`, `.autoloop/review-findings.md`, `.autoloop/progress.md`.
6
+ - Shared working files are the source of truth: `{{STATE_DIR}}/review-context.md`, `{{STATE_DIR}}/review-findings.md`, `{{STATE_DIR}}/progress.md`.
7
7
  - One review pass at a time. The reader builds context, then the checker and suggester work through findings.
8
8
  - Use the event tool instead of prose-only handoffs.
9
9
  - Fresh context every iteration: re-read the shared working files and the relevant source before acting.
@@ -11,10 +11,10 @@ Global rules:
11
11
  - Findings should include concrete suggestions when possible, but lack of a ready fix does not invalidate a real finding.
12
12
  - Severity matters: distinguish blocking issues from nits.
13
13
  - If a risky area cannot be verified, block or downgrade confidence instead of handwaving.
14
- - Use `./.autoloop/autoloops memory add learning ...` for durable learnings.
14
+ - Use `{{TOOL_PATH}} memory add learning ...` for durable learnings.
15
15
  - Do not invent extra phases. Stay inside reader → checker → suggester → summarizer.
16
16
 
17
17
  State files:
18
- - `.autoloop/review-context.md` — the diff, affected files, surrounding context, and architectural notes.
19
- - `.autoloop/review-findings.md` — structured findings with severity, location, description, and suggested fix.
20
- - `.autoloop/progress.md` — current review pass, what the next role should do.
18
+ - `{{STATE_DIR}}/review-context.md` — the diff, affected files, surrounding context, and architectural notes.
19
+ - `{{STATE_DIR}}/review-findings.md` — structured findings with severity, location, description, and suggested fix.
20
+ - `{{STATE_DIR}}/progress.md` — current review pass, what the next role should do.
@@ -8,8 +8,8 @@ Your job:
8
8
  3. Hand findings to the suggester.
9
9
 
10
10
  On every activation:
11
- - Read `.autoloop/review-context.md`, `.autoloop/review-findings.md`, and `.autoloop/progress.md`.
12
- - Read the diff and touched code directly. Treat `.autoloop/review-context.md` as a hint, not authority.
11
+ - Read `{{STATE_DIR}}/review-context.md`, `{{STATE_DIR}}/review-findings.md`, and `{{STATE_DIR}}/progress.md`.
12
+ - Read the diff and touched code directly. Treat `{{STATE_DIR}}/review-context.md` as a hint, not authority.
13
13
  - Start skeptical: absence of findings is not approval.
14
14
 
15
15
  Process:
@@ -19,8 +19,8 @@ Process:
19
19
  - **Style**: naming, formatting, idiomatic patterns for the language
20
20
  - **Performance**: unnecessary allocations, N+1 queries, missing indexes, hot-path issues
21
21
  - **Maintainability**: unclear intent, missing error handling, tight coupling
22
- 2. Record a coverage note in `.autoloop/progress.md` for every changed file: reviewed dimensions, not-applicable dimensions, and any blocked areas.
23
- 3. For each finding, record in `.autoloop/review-findings.md`:
22
+ 2. Record a coverage note in `{{STATE_DIR}}/progress.md` for every changed file: reviewed dimensions, not-applicable dimensions, and any blocked areas.
23
+ 3. For each finding, record in `{{STATE_DIR}}/review-findings.md`:
24
24
  - File and line
25
25
  - Dimension (correctness/security/style/performance/maintainability)
26
26
  - Severity (blocking/warning/nit)
@@ -8,7 +8,7 @@ Your job:
8
8
  3. Hand the context to the checker.
9
9
 
10
10
  On every activation:
11
- - Read `.autoloop/review-context.md`, `.autoloop/review-findings.md`, and `.autoloop/progress.md` if they exist.
11
+ - Read `{{STATE_DIR}}/review-context.md`, `{{STATE_DIR}}/review-findings.md`, and `{{STATE_DIR}}/progress.md` if they exist.
12
12
  - Re-read the latest scratchpad/journal context before deciding.
13
13
 
14
14
  On first activation:
@@ -16,8 +16,8 @@ On first activation:
16
16
  - Read the diff and all affected files.
17
17
  - Read surrounding code to understand the architectural context.
18
18
  - Create or refresh:
19
- - `.autoloop/review-context.md` — diff summary, affected files, what each change does, architectural context.
20
- - `.autoloop/progress.md` — review phase, files to check.
19
+ - `{{STATE_DIR}}/review-context.md` — diff summary, affected files, what each change does, architectural context.
20
+ - `{{STATE_DIR}}/progress.md` — review phase, files to check.
21
21
  - Emit `context.built` with a summary of what is being reviewed.
22
22
 
23
23
  On later activations (`review.complete`):
@@ -27,7 +27,7 @@ On later activations (`review.complete`):
27
27
 
28
28
  Rules:
29
29
  - Read the actual code, not just the diff. Understand what the changed lines do in context.
30
- - Build a risk map in `.autoloop/review-context.md`: changed files, adjacent dependencies, trust boundaries, invariants that could break, and missing tests or context.
30
+ - Build a risk map in `{{STATE_DIR}}/review-context.md`: changed files, adjacent dependencies, trust boundaries, invariants that could break, and missing tests or context.
31
31
  - Note any files that the diff touches which interact with other systems — the checker needs this.
32
- - If the diff is large, break it into logical units (e.g., per-file or per-feature) in `.autoloop/review-context.md`.
32
+ - If the diff is large, break it into logical units (e.g., per-file or per-feature) in `{{STATE_DIR}}/review-context.md`.
33
33
  - If context is incomplete, say so explicitly instead of pretending review is ready.
@@ -7,15 +7,15 @@ Your job:
7
7
  2. Provide code suggestions, not just descriptions.
8
8
 
9
9
  On every activation:
10
- - Read `.autoloop/review-context.md`, `.autoloop/review-findings.md`, and `.autoloop/progress.md`.
10
+ - Read `{{STATE_DIR}}/review-context.md`, `{{STATE_DIR}}/review-findings.md`, and `{{STATE_DIR}}/progress.md`.
11
11
 
12
12
  Process:
13
- 1. For each finding in `.autoloop/review-findings.md`:
13
+ 1. For each finding in `{{STATE_DIR}}/review-findings.md`:
14
14
  - Read the relevant source code.
15
15
  - Write a concrete fix: actual code that would resolve the issue.
16
16
  - Add the suggestion to the finding entry.
17
- 2. Update `.autoloop/review-findings.md` with suggestions added to each finding.
18
- 3. Update `.autoloop/progress.md`.
17
+ 2. Update `{{STATE_DIR}}/review-findings.md` with suggestions added to each finding.
18
+ 3. Update `{{STATE_DIR}}/progress.md`.
19
19
  4. Emit `fixes.proposed`.
20
20
 
21
21
  Rules:
@@ -7,19 +7,19 @@ Your job:
7
7
  2. Provide an overall assessment.
8
8
 
9
9
  On every activation:
10
- - Read `.autoloop/review-context.md`, `.autoloop/review-findings.md`, and `.autoloop/progress.md`.
10
+ - Read `{{STATE_DIR}}/review-context.md`, `{{STATE_DIR}}/review-findings.md`, and `{{STATE_DIR}}/progress.md`.
11
11
 
12
12
  Process:
13
- 1. Compile `.autoloop/review-findings.md` into a clean, structured review:
13
+ 1. Compile `{{STATE_DIR}}/review-findings.md` into a clean, structured review:
14
14
  - Group by severity (blocking first, then warnings, then nits)
15
15
  - Include the concrete suggestion for each finding
16
16
  - Add an overall assessment
17
17
  - Add an `Unresolved Risks / Unknowns` section
18
- 2. Update `.autoloop/review-findings.md` with the final compiled review.
18
+ 2. Update `{{STATE_DIR}}/review-findings.md` with the final compiled review.
19
19
  3. Emit `review.complete` if there are more change sets to review.
20
20
  4. Emit `task.complete` if all change sets are reviewed.
21
21
 
22
- `.autoloop/review-findings.md` final format:
22
+ `{{STATE_DIR}}/review-findings.md` final format:
23
23
  ```
24
24
  # Code Review
25
25
 
@@ -1,6 +1,6 @@
1
1
  # AutoSec miniloop
2
2
 
3
- An autoloop-native security audit and hardening loop.
3
+ Use when you want a security audit to find vulnerabilities and harden your code.
4
4
 
5
5
  AutoSec scans a target repo for security vulnerabilities across injection, auth, secrets, dependencies, and configuration. Candidate findings are confirmed or dismissed by an analyst, fixed by a hardener when appropriate, and tracked in a prioritized security report.
6
6
 
@@ -4,7 +4,7 @@ event_loop.completion_promise = "LOOP_COMPLETE"
4
4
  event_loop.required_events = ["findings.reported"]
5
5
 
6
6
  backend.kind = "command"
7
- backend.command = "/Users/rook/.npm-global/bin/claude"
7
+ backend.command = "claude"
8
8
  backend.timeout_ms = 3000000
9
9
  # For deterministic local harness testing only:
10
10
  # backend.kind = "command"
@@ -3,7 +3,7 @@ This is a autoloops-native autosec loop for security audit and hardening.
3
3
  The loop scans a target repo for security vulnerabilities, analyzes and confirms findings, implements fixes or mitigations, and compiles a prioritized security report.
4
4
 
5
5
  Global rules:
6
- - Shared working files are the source of truth: `.autoloop/sec-findings.md`, `.autoloop/sec-report.md`, `.autoloop/progress.md`.
6
+ - Shared working files are the source of truth: `{{STATE_DIR}}/sec-findings.md`, `{{STATE_DIR}}/sec-report.md`, `{{STATE_DIR}}/progress.md`.
7
7
  - One finding at a time. Confirm/dismiss before moving to the next.
8
8
  - Use the event tool instead of prose-only handoffs.
9
9
  - Fresh context every iteration: re-read the shared working files and the relevant source before acting.
@@ -11,10 +11,10 @@ Global rules:
11
11
  - Zero confirmed findings is a valid outcome.
12
12
  - Fixes must not break functionality — verify after hardening.
13
13
  - Missing exploit proof, missing fix verification, or unresolved preconditions should become dismissals or open risks, not confident confirmations.
14
- - Use `./.autoloop/autoloops memory add learning ...` for durable learnings.
14
+ - Use `{{TOOL_PATH}} memory add learning ...` for durable learnings.
15
15
  - Do not invent extra phases. Stay inside scanner → analyst → hardener → reporter.
16
16
 
17
17
  State files:
18
- - `.autoloop/sec-findings.md` — raw findings from scanning: location, type, severity, evidence.
19
- - `.autoloop/sec-report.md` — compiled security report: confirmed findings, fixes applied, remaining risks.
20
- - `.autoloop/progress.md` — current finding being analyzed, what the next role should do.
18
+ - `{{STATE_DIR}}/sec-findings.md` — raw findings from scanning: location, type, severity, evidence.
19
+ - `{{STATE_DIR}}/sec-report.md` — compiled security report: confirmed findings, fixes applied, remaining risks.
20
+ - `{{STATE_DIR}}/progress.md` — current finding being analyzed, what the next role should do.
@@ -8,11 +8,11 @@ Your job:
8
8
  3. Classify confirmed findings by severity and exploitability.
9
9
 
10
10
  On every activation:
11
- - Read `.autoloop/sec-findings.md`, `.autoloop/sec-report.md`, and `.autoloop/progress.md`.
11
+ - Read `{{STATE_DIR}}/sec-findings.md`, `{{STATE_DIR}}/sec-report.md`, and `{{STATE_DIR}}/progress.md`.
12
12
  - Start skeptical: a candidate is not a vulnerability until the evidence proves it.
13
13
 
14
14
  Process:
15
- 1. Take the next unanalyzed finding from `.autoloop/sec-findings.md`.
15
+ 1. Take the next unanalyzed finding from `{{STATE_DIR}}/sec-findings.md`.
16
16
  2. Read the relevant source code and understand the context.
17
17
  3. Determine:
18
18
  - Is this actually exploitable? Under what conditions?
@@ -20,8 +20,8 @@ Process:
20
20
  - What is the attack vector?
21
21
  - What is the impact if exploited?
22
22
  - What mitigation already exists, if any?
23
- 4. Update the finding in `.autoloop/sec-findings.md` with your analysis.
24
- 5. Update `.autoloop/progress.md`.
23
+ 4. Update the finding in `{{STATE_DIR}}/sec-findings.md` with your analysis.
24
+ 5. Update `{{STATE_DIR}}/progress.md`.
25
25
  6. If confirmed → emit `finding.confirmed` with severity and recommended fix approach.
26
26
  7. If false positive or unproven → emit `finding.dismissed` with the reason.
27
27
 
@@ -8,7 +8,7 @@ Your job:
8
8
  3. Verify the vulnerable path is actually closed.
9
9
 
10
10
  On every activation:
11
- - Read `.autoloop/sec-findings.md`, `.autoloop/sec-report.md`, and `.autoloop/progress.md`.
11
+ - Read `{{STATE_DIR}}/sec-findings.md`, `{{STATE_DIR}}/sec-report.md`, and `{{STATE_DIR}}/progress.md`.
12
12
  - Understand the confirmed finding: what is vulnerable, why, and the recommended fix.
13
13
 
14
14
  Process:
@@ -23,7 +23,7 @@ Process:
23
23
  3. Verify the fix:
24
24
  - Run existing tests to check for regressions.
25
25
  - Verify the exploit scenario no longer works, or provide equivalent targeted proof that the vulnerable path is closed.
26
- 4. Update `.autoloop/progress.md` with the fix details and verification evidence.
26
+ 4. Update `{{STATE_DIR}}/progress.md` with the fix details and verification evidence.
27
27
  5. If fix applied and verified → emit `fix.applied`.
28
28
  6. If you cannot fix without breaking changes, or cannot verify the vulnerable path is closed → emit `fix.blocked` with explanation.
29
29
 
@@ -7,17 +7,17 @@ Your job:
7
7
  2. Track the overall security posture.
8
8
 
9
9
  On every activation:
10
- - Read `.autoloop/sec-findings.md`, `.autoloop/sec-report.md`, and `.autoloop/progress.md`.
10
+ - Read `{{STATE_DIR}}/sec-findings.md`, `{{STATE_DIR}}/sec-report.md`, and `{{STATE_DIR}}/progress.md`.
11
11
 
12
12
  Process:
13
- 1. Update `.autoloop/sec-report.md` with the latest finding result:
13
+ 1. Update `{{STATE_DIR}}/sec-report.md` with the latest finding result:
14
14
  - If confirmed and fixed with verification evidence → record the finding and fix.
15
15
  - If confirmed but blocked or weakly verified → record the finding as an open risk.
16
16
  - If dismissed → record the dismissal with reason.
17
- 2. Update `.autoloop/progress.md`.
17
+ 2. Update `{{STATE_DIR}}/progress.md`.
18
18
  3. Emit `report.updated` so the scanner continues with the next category.
19
19
 
20
- `.autoloop/sec-report.md` format:
20
+ `{{STATE_DIR}}/sec-report.md` format:
21
21
  ```
22
22
  # Security Report
23
23
 
@@ -7,7 +7,7 @@ Your job:
7
7
  2. Report raw candidate findings for the analyst to confirm or dismiss.
8
8
 
9
9
  On every activation:
10
- - Read `.autoloop/sec-findings.md`, `.autoloop/sec-report.md`, and `.autoloop/progress.md` if they exist.
10
+ - Read `{{STATE_DIR}}/sec-findings.md`, `{{STATE_DIR}}/sec-report.md`, and `{{STATE_DIR}}/progress.md` if they exist.
11
11
  - Re-read the latest scratchpad/journal context before deciding.
12
12
 
13
13
  On first activation:
@@ -21,8 +21,8 @@ On first activation:
21
21
  - **Data exposure**: sensitive data in logs, error messages, or responses
22
22
  - **Cryptography**: weak algorithms, hardcoded keys, insecure random
23
23
  - Create or refresh:
24
- - `.autoloop/sec-findings.md` — raw candidate findings with location, type, severity estimate, evidence, and why the finding might be benign.
25
- - `.autoloop/progress.md` — current phase, first finding to analyze.
24
+ - `{{STATE_DIR}}/sec-findings.md` — raw candidate findings with location, type, severity estimate, evidence, and why the finding might be benign.
25
+ - `{{STATE_DIR}}/progress.md` — current phase, first finding to analyze.
26
26
  - Emit `findings.reported` with a count and severity breakdown, even if the count is zero.
27
27
 
28
28
  On later activations (`report.updated`):
@@ -1,6 +1,6 @@
1
1
  # AutoSimplify miniloop
2
2
 
3
- An autoloop-native post-implementation cleanup loop inspired by Claude Code's `/simplify` workflow.
3
+ Use after implementation to clean up duplication, reduce complexity, and improve code quality.
4
4
 
5
5
  AutoSimplify inspects recently modified code, identifies reuse/clarity/efficiency improvements, applies behavior-preserving simplifications, and skeptically verifies that the result is actually cleaner.
6
6
 
@@ -1,11 +1,15 @@
1
1
  event_loop.max_iterations = 80
2
2
  event_loop.completion_event = "task.complete"
3
3
  event_loop.completion_promise = "LOOP_COMPLETE"
4
- # Require skeptical verification before completion is considered valid.
5
- event_loop.required_events = ["simplification.verified"]
4
+ # NOTE: required_events removed it blocked the no-op path where scoper
5
+ # emits task.complete without any simplification occurring. The topology
6
+ # already enforces scoper → reviewer → simplifier → verifier flow when
7
+ # changes exist. The harness rule "no-op is valid only when the reviewer
8
+ # and verifier both conclude the scoped code is already appropriately
9
+ # simple" provides the soft guard; metareview catches violations.
6
10
 
7
11
  backend.kind = "command"
8
- backend.command = "/Users/rook/.npm-global/bin/claude"
12
+ backend.command = "claude"
9
13
  backend.timeout_ms = 3000000
10
14
  # For deterministic local harness testing only:
11
15
  # backend.kind = "command"
@@ -1,7 +1,7 @@
1
1
  This is a autoloops-native autosimplify loop inspired by Claude Code's `/simplify` workflow.
2
2
 
3
3
  Global rules:
4
- - Shared working files are the source of truth: `.autoloop/simplify-context.md`, `.autoloop/simplify-plan.md`, and `.autoloop/progress.md`.
4
+ - Shared working files are the source of truth: `{{STATE_DIR}}/simplify-context.md`, `{{STATE_DIR}}/simplify-plan.md`, and `{{STATE_DIR}}/progress.md`.
5
5
  - Scope defaults to the current diff. If there is no diff, fall back to recently modified files. If the user explicitly names files or directories, respect that scope.
6
6
  - Keep only one simplification batch active at a time.
7
7
  - Use the event tool instead of prose-only handoffs.
@@ -9,17 +9,17 @@ Global rules:
9
9
  - Preserve behavior exactly. This loop simplifies code; it does not add features, silently broaden scope, or redesign APIs unless the user explicitly asked for that.
10
10
  - Prefer deleting code, reusing existing helpers, reducing nesting, and making control flow plainer over introducing new abstractions.
11
11
  - Review and simplification should focus on three dimensions: reuse, clarity, and efficiency. Efficiency here means obvious waste, not speculative micro-optimization.
12
- - The simplifier must record exact files changed and exact verification command(s) with outputs in `.autoloop/progress.md` before claiming success.
12
+ - The simplifier must record exact files changed and exact verification command(s) with outputs in `{{STATE_DIR}}/progress.md` before claiming success.
13
13
  - If a simplification batch changes code, commit that batch before handing off. Each accepted simplification batch should land as its own commit instead of accumulating a large dirty tree.
14
14
  - The verifier must independently inspect the actual diff and surrounding code. Another role's summary is not proof.
15
15
  - Missing evidence means rejection, retry, or no-op justification — never silent acceptance.
16
16
  - `no-op` is valid only when the reviewer and verifier both conclude the scoped code is already appropriately simple.
17
- - Use `./.autoloop/autoloops memory add learning ...` for durable learnings.
17
+ - Use `{{TOOL_PATH}} memory add learning ...` for durable learnings.
18
18
  - Do not invent extra phases. Stay inside scoper → reviewer → simplifier → verifier.
19
19
  - Only the scoper may emit `task.complete`.
20
- - Once `.autoloop/progress.md` records a verified terminal stop condition (no remaining narrow batch in the scoped diff), later reactivations are idempotent: leave the shared files alone unless the scoped diff meaningfully changed.
20
+ - Once `{{STATE_DIR}}/progress.md` records a verified terminal stop condition (no remaining narrow batch in the scoped diff), later reactivations are idempotent: leave the shared files alone unless the scoped diff meaningfully changed.
21
21
 
22
22
  State files:
23
- - `.autoloop/simplify-context.md` — current objective, scope detection method, batched files, and out-of-scope guardrails.
24
- - `.autoloop/simplify-plan.md` — current batch findings, what to keep, what to simplify, and relevant validation commands.
25
- - `.autoloop/progress.md` — active batch, edits made, verification evidence, rejected attempts, and next action.
23
+ - `{{STATE_DIR}}/simplify-context.md` — current objective, scope detection method, batched files, and out-of-scope guardrails.
24
+ - `{{STATE_DIR}}/simplify-plan.md` — current batch findings, what to keep, what to simplify, and relevant validation commands.
25
+ - `{{STATE_DIR}}/progress.md` — active batch, edits made, verification evidence, rejected attempts, and next action.
@@ -8,7 +8,7 @@ Your job:
8
8
  3. Keep the plan tightly scoped and behavior-preserving.
9
9
 
10
10
  On every activation:
11
- - Read `.autoloop/simplify-context.md`, `.autoloop/simplify-plan.md`, and `.autoloop/progress.md`.
11
+ - Read `{{STATE_DIR}}/simplify-context.md`, `{{STATE_DIR}}/simplify-plan.md`, and `{{STATE_DIR}}/progress.md`.
12
12
  - Read the actual code and current diff for the active batch. Treat the shared files as hints, not authority.
13
13
 
14
14
  Process:
@@ -16,7 +16,7 @@ Process:
16
16
  - **Reuse**: duplicated logic, hand-rolled helpers, existing utilities not being used
17
17
  - **Clarity**: unnecessary branching, awkward naming, redundant state, needless abstraction, comments that explain obvious code
18
18
  - **Efficiency**: obvious waste, repeated work, overly broad file or collection operations, hot-path clutter
19
- 2. Write or refresh the active batch section in `.autoloop/simplify-plan.md` with:
19
+ 2. Write or refresh the active batch section in `{{STATE_DIR}}/simplify-plan.md` with:
20
20
  - scope
21
21
  - keep-as-is notes
22
22
  - simplification opportunities
@@ -24,7 +24,7 @@ Process:
24
24
  - exact validation commands the simplifier should run
25
25
  - out-of-scope guardrails
26
26
  3. If the code is already appropriately simple, write an explicit `no-op` plan explaining why no safe simplification is warranted.
27
- 4. Update `.autoloop/progress.md` with the current review status.
27
+ 4. Update `{{STATE_DIR}}/progress.md` with the current review status.
28
28
  5. Emit `plan.ready` when the batch has a concrete plan.
29
29
 
30
30
  Emit `review.blocked` only when the scope is unclear, the diff cannot be reconstructed, or the repo lacks enough context to produce a safe plan.