@mobrienv/autoloop 0.3.0 → 0.7.0
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.
- package/README.md +140 -43
- package/bin/autoloop +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/testing/mock-backend.js +3 -5
- package/dist/testing/mock-backend.js.map +1 -1
- package/package.json +32 -10
- package/plugins/autoloop/.claude-plugin/plugin.json +1 -1
- package/dist/agent-map.d.ts +0 -10
- package/dist/agent-map.js +0 -58
- package/dist/agent-map.js.map +0 -1
- package/dist/backend/acp-client.d.ts +0 -38
- package/dist/backend/acp-client.js +0 -288
- package/dist/backend/acp-client.js.map +0 -1
- package/dist/backend/index.d.ts +0 -10
- package/dist/backend/index.js +0 -71
- package/dist/backend/index.js.map +0 -1
- package/dist/backend/kiro-bridge.d.ts +0 -17
- package/dist/backend/kiro-bridge.js +0 -84
- package/dist/backend/kiro-bridge.js.map +0 -1
- package/dist/backend/kiro-worker.d.ts +0 -1
- package/dist/backend/kiro-worker.js +0 -92
- package/dist/backend/kiro-worker.js.map +0 -1
- package/dist/backend/run-command.d.ts +0 -7
- package/dist/backend/run-command.js +0 -50
- package/dist/backend/run-command.js.map +0 -1
- package/dist/backend/run-kiro.d.ts +0 -3
- package/dist/backend/run-kiro.js +0 -16
- package/dist/backend/run-kiro.js.map +0 -1
- package/dist/backend/run-mock.d.ts +0 -1
- package/dist/backend/run-mock.js +0 -6
- package/dist/backend/run-mock.js.map +0 -1
- package/dist/backend/run-pi.d.ts +0 -5
- package/dist/backend/run-pi.js +0 -5
- package/dist/backend/run-pi.js.map +0 -1
- package/dist/backend/types.d.ts +0 -21
- package/dist/backend/types.js +0 -2
- package/dist/backend/types.js.map +0 -1
- package/dist/chains/budget.d.ts +0 -7
- package/dist/chains/budget.js +0 -54
- package/dist/chains/budget.js.map +0 -1
- package/dist/chains/load.d.ts +0 -18
- package/dist/chains/load.js +0 -129
- package/dist/chains/load.js.map +0 -1
- package/dist/chains/render.d.ts +0 -2
- package/dist/chains/render.js +0 -74
- package/dist/chains/render.js.map +0 -1
- package/dist/chains/run.d.ts +0 -17
- package/dist/chains/run.js +0 -260
- package/dist/chains/run.js.map +0 -1
- package/dist/chains/types.d.ts +0 -38
- package/dist/chains/types.js +0 -2
- package/dist/chains/types.js.map +0 -1
- package/dist/chains.d.ts +0 -6
- package/dist/chains.js +0 -5
- package/dist/chains.js.map +0 -1
- package/dist/commands/chain.d.ts +0 -1
- package/dist/commands/chain.js +0 -53
- package/dist/commands/chain.js.map +0 -1
- package/dist/commands/config.d.ts +0 -1
- package/dist/commands/config.js +0 -74
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/dashboard.d.ts +0 -1
- package/dist/commands/dashboard.js +0 -68
- package/dist/commands/dashboard.js.map +0 -1
- package/dist/commands/guide.d.ts +0 -1
- package/dist/commands/guide.js +0 -33
- package/dist/commands/guide.js.map +0 -1
- package/dist/commands/inspect.d.ts +0 -1
- package/dist/commands/inspect.js +0 -203
- package/dist/commands/inspect.js.map +0 -1
- package/dist/commands/list.d.ts +0 -1
- package/dist/commands/list.js +0 -15
- package/dist/commands/list.js.map +0 -1
- package/dist/commands/loops.d.ts +0 -1
- package/dist/commands/loops.js +0 -72
- package/dist/commands/loops.js.map +0 -1
- package/dist/commands/memory.d.ts +0 -1
- package/dist/commands/memory.js +0 -65
- package/dist/commands/memory.js.map +0 -1
- package/dist/commands/pi-adapter.d.ts +0 -1
- package/dist/commands/pi-adapter.js +0 -6
- package/dist/commands/pi-adapter.js.map +0 -1
- package/dist/commands/run.d.ts +0 -1
- package/dist/commands/run.js +0 -292
- package/dist/commands/run.js.map +0 -1
- package/dist/commands/runs.d.ts +0 -1
- package/dist/commands/runs.js +0 -50
- package/dist/commands/runs.js.map +0 -1
- package/dist/commands/task.d.ts +0 -1
- package/dist/commands/task.js +0 -74
- package/dist/commands/task.js.map +0 -1
- package/dist/commands/worktree.d.ts +0 -1
- package/dist/commands/worktree.js +0 -162
- package/dist/commands/worktree.js.map +0 -1
- package/dist/config.d.ts +0 -31
- package/dist/config.js +0 -261
- package/dist/config.js.map +0 -1
- package/dist/dashboard/app.d.ts +0 -12
- package/dist/dashboard/app.js +0 -23
- package/dist/dashboard/app.js.map +0 -1
- package/dist/dashboard/routes/api.d.ts +0 -3
- package/dist/dashboard/routes/api.js +0 -130
- package/dist/dashboard/routes/api.js.map +0 -1
- package/dist/dashboard/routes/pages.d.ts +0 -2
- package/dist/dashboard/routes/pages.js +0 -14
- package/dist/dashboard/routes/pages.js.map +0 -1
- package/dist/dashboard/views/alpine-vendor.d.ts +0 -1
- package/dist/dashboard/views/alpine-vendor.js +0 -10
- package/dist/dashboard/views/alpine-vendor.js.map +0 -1
- package/dist/dashboard/views/shell.d.ts +0 -1
- package/dist/dashboard/views/shell.js +0 -746
- package/dist/dashboard/views/shell.js.map +0 -1
- package/dist/events/decode.d.ts +0 -2
- package/dist/events/decode.js +0 -45
- package/dist/events/decode.js.map +0 -1
- package/dist/events/encode.d.ts +0 -2
- package/dist/events/encode.js +0 -33
- package/dist/events/encode.js.map +0 -1
- package/dist/events/guards.d.ts +0 -5
- package/dist/events/guards.js +0 -42
- package/dist/events/guards.js.map +0 -1
- package/dist/events/types.d.ts +0 -26
- package/dist/events/types.js +0 -2
- package/dist/events/types.js.map +0 -1
- package/dist/harness/config-helpers.d.ts +0 -35
- package/dist/harness/config-helpers.js +0 -411
- package/dist/harness/config-helpers.js.map +0 -1
- package/dist/harness/coordination.d.ts +0 -1
- package/dist/harness/coordination.js +0 -127
- package/dist/harness/coordination.js.map +0 -1
- package/dist/harness/display.d.ts +0 -21
- package/dist/harness/display.js +0 -176
- package/dist/harness/display.js.map +0 -1
- package/dist/harness/emit.d.ts +0 -15
- package/dist/harness/emit.js +0 -240
- package/dist/harness/emit.js.map +0 -1
- package/dist/harness/index.d.ts +0 -13
- package/dist/harness/index.js +0 -240
- package/dist/harness/index.js.map +0 -1
- package/dist/harness/iteration.d.ts +0 -16
- package/dist/harness/iteration.js +0 -131
- package/dist/harness/iteration.js.map +0 -1
- package/dist/harness/journal.d.ts +0 -31
- package/dist/harness/journal.js +0 -178
- package/dist/harness/journal.js.map +0 -1
- package/dist/harness/metareview.d.ts +0 -4
- package/dist/harness/metareview.js +0 -48
- package/dist/harness/metareview.js.map +0 -1
- package/dist/harness/metrics.d.ts +0 -12
- package/dist/harness/metrics.js +0 -180
- package/dist/harness/metrics.js.map +0 -1
- package/dist/harness/parallel.d.ts +0 -37
- package/dist/harness/parallel.js +0 -237
- package/dist/harness/parallel.js.map +0 -1
- package/dist/harness/prompt.d.ts +0 -46
- package/dist/harness/prompt.js +0 -403
- package/dist/harness/prompt.js.map +0 -1
- package/dist/harness/scratchpad.d.ts +0 -2
- package/dist/harness/scratchpad.js +0 -67
- package/dist/harness/scratchpad.js.map +0 -1
- package/dist/harness/stop.d.ts +0 -5
- package/dist/harness/stop.js +0 -70
- package/dist/harness/stop.js.map +0 -1
- package/dist/harness/tools.d.ts +0 -3
- package/dist/harness/tools.js +0 -65
- package/dist/harness/tools.js.map +0 -1
- package/dist/harness/types.d.ts +0 -110
- package/dist/harness/types.js +0 -2
- package/dist/harness/types.js.map +0 -1
- package/dist/harness/wave/finalize-wave.d.ts +0 -9
- package/dist/harness/wave/finalize-wave.js +0 -87
- package/dist/harness/wave/finalize-wave.js.map +0 -1
- package/dist/harness/wave/launch-branches.d.ts +0 -6
- package/dist/harness/wave/launch-branches.js +0 -314
- package/dist/harness/wave/launch-branches.js.map +0 -1
- package/dist/harness/wave/parse-objectives.d.ts +0 -3
- package/dist/harness/wave/parse-objectives.js +0 -32
- package/dist/harness/wave/parse-objectives.js.map +0 -1
- package/dist/harness/wave/types.d.ts +0 -43
- package/dist/harness/wave/types.js +0 -2
- package/dist/harness/wave/types.js.map +0 -1
- package/dist/harness/wave.d.ts +0 -6
- package/dist/harness/wave.js +0 -159
- package/dist/harness/wave.js.map +0 -1
- package/dist/isolation/index.d.ts +0 -4
- package/dist/isolation/index.js +0 -3
- package/dist/isolation/index.js.map +0 -1
- package/dist/isolation/resolve.d.ts +0 -39
- package/dist/isolation/resolve.js +0 -118
- package/dist/isolation/resolve.js.map +0 -1
- package/dist/isolation/run-scope.d.ts +0 -21
- package/dist/isolation/run-scope.js +0 -50
- package/dist/isolation/run-scope.js.map +0 -1
- package/dist/json.d.ts +0 -8
- package/dist/json.js +0 -82
- package/dist/json.js.map +0 -1
- package/dist/loops/health.d.ts +0 -16
- package/dist/loops/health.js +0 -152
- package/dist/loops/health.js.map +0 -1
- package/dist/loops/list.d.ts +0 -6
- package/dist/loops/list.js +0 -21
- package/dist/loops/list.js.map +0 -1
- package/dist/loops/policy.d.ts +0 -6
- package/dist/loops/policy.js +0 -41
- package/dist/loops/policy.js.map +0 -1
- package/dist/loops/render.d.ts +0 -19
- package/dist/loops/render.js +0 -100
- package/dist/loops/render.js.map +0 -1
- package/dist/loops/show.d.ts +0 -8
- package/dist/loops/show.js +0 -31
- package/dist/loops/show.js.map +0 -1
- package/dist/loops/watch.d.ts +0 -14
- package/dist/loops/watch.js +0 -143
- package/dist/loops/watch.js.map +0 -1
- package/dist/main.d.ts +0 -1
- package/dist/main.js +0 -148
- package/dist/main.js.map +0 -1
- package/dist/markdown.d.ts +0 -10
- package/dist/markdown.js +0 -66
- package/dist/markdown.js.map +0 -1
- package/dist/memory-render.d.ts +0 -6
- package/dist/memory-render.js +0 -81
- package/dist/memory-render.js.map +0 -1
- package/dist/memory.d.ts +0 -22
- package/dist/memory.js +0 -318
- package/dist/memory.js.map +0 -1
- package/dist/pi-adapter.d.ts +0 -1
- package/dist/pi-adapter.js +0 -220
- package/dist/pi-adapter.js.map +0 -1
- package/dist/profiles.d.ts +0 -12
- package/dist/profiles.js +0 -71
- package/dist/profiles.js.map +0 -1
- package/dist/registry/derive.d.ts +0 -8
- package/dist/registry/derive.js +0 -88
- package/dist/registry/derive.js.map +0 -1
- package/dist/registry/discover.d.ts +0 -20
- package/dist/registry/discover.js +0 -98
- package/dist/registry/discover.js.map +0 -1
- package/dist/registry/harness.d.ts +0 -7
- package/dist/registry/harness.js +0 -63
- package/dist/registry/harness.js.map +0 -1
- package/dist/registry/index.d.ts +0 -6
- package/dist/registry/index.js +0 -6
- package/dist/registry/index.js.map +0 -1
- package/dist/registry/read.d.ts +0 -11
- package/dist/registry/read.js +0 -50
- package/dist/registry/read.js.map +0 -1
- package/dist/registry/rebuild.d.ts +0 -5
- package/dist/registry/rebuild.js +0 -22
- package/dist/registry/rebuild.js.map +0 -1
- package/dist/registry/types.d.ts +0 -28
- package/dist/registry/types.js +0 -2
- package/dist/registry/types.js.map +0 -1
- package/dist/registry/update.d.ts +0 -2
- package/dist/registry/update.js +0 -7
- package/dist/registry/update.js.map +0 -1
- package/dist/tasks-render.d.ts +0 -2
- package/dist/tasks-render.js +0 -44
- package/dist/tasks-render.js.map +0 -1
- package/dist/tasks.d.ts +0 -24
- package/dist/tasks.js +0 -184
- package/dist/tasks.js.map +0 -1
- package/dist/topology.d.ts +0 -31
- package/dist/topology.js +0 -309
- package/dist/topology.js.map +0 -1
- package/dist/usage.d.ts +0 -9
- package/dist/usage.js +0 -159
- package/dist/usage.js.map +0 -1
- package/dist/utils.d.ts +0 -21
- package/dist/utils.js +0 -349
- package/dist/utils.js.map +0 -1
- package/dist/worktree/clean.d.ts +0 -12
- package/dist/worktree/clean.js +0 -98
- package/dist/worktree/clean.js.map +0 -1
- package/dist/worktree/create.d.ts +0 -14
- package/dist/worktree/create.js +0 -71
- package/dist/worktree/create.js.map +0 -1
- package/dist/worktree/index.d.ts +0 -10
- package/dist/worktree/index.js +0 -6
- package/dist/worktree/index.js.map +0 -1
- package/dist/worktree/list.d.ts +0 -9
- package/dist/worktree/list.js +0 -24
- package/dist/worktree/list.js.map +0 -1
- package/dist/worktree/merge.d.ts +0 -11
- package/dist/worktree/merge.js +0 -129
- package/dist/worktree/merge.js.map +0 -1
- package/dist/worktree/meta.d.ts +0 -17
- package/dist/worktree/meta.js +0 -34
- package/dist/worktree/meta.js.map +0 -1
- package/presets/autocode/README.md +0 -81
- package/presets/autocode/autoloops.toml +0 -30
- package/presets/autocode/harness.md +0 -26
- package/presets/autocode/miniloops.toml +0 -22
- package/presets/autocode/roles/build.md +0 -34
- package/presets/autocode/roles/critic.md +0 -40
- package/presets/autocode/roles/finalizer.md +0 -43
- package/presets/autocode/roles/planner.md +0 -40
- package/presets/autocode/topology.toml +0 -32
- package/presets/autodoc/README.md +0 -42
- package/presets/autodoc/autoloops.toml +0 -21
- package/presets/autodoc/harness.md +0 -19
- package/presets/autodoc/miniloops.toml +0 -21
- package/presets/autodoc/roles/auditor.md +0 -39
- package/presets/autodoc/roles/checker.md +0 -43
- package/presets/autodoc/roles/publisher.md +0 -51
- package/presets/autodoc/roles/writer.md +0 -37
- package/presets/autodoc/topology.toml +0 -31
- package/presets/autofix/README.md +0 -56
- package/presets/autofix/autoloops.toml +0 -24
- package/presets/autofix/harness.md +0 -25
- package/presets/autofix/miniloops.toml +0 -21
- package/presets/autofix/roles/closer.md +0 -48
- package/presets/autofix/roles/diagnoser.md +0 -43
- package/presets/autofix/roles/fixer.md +0 -28
- package/presets/autofix/roles/verifier.md +0 -31
- package/presets/autofix/topology.toml +0 -33
- package/presets/autoideas/README.md +0 -73
- package/presets/autoideas/autoloops.toml +0 -18
- package/presets/autoideas/harness.md +0 -31
- package/presets/autoideas/miniloops.toml +0 -18
- package/presets/autoideas/roles/analyst.md +0 -32
- package/presets/autoideas/roles/reviewer.md +0 -36
- package/presets/autoideas/roles/scanner.md +0 -26
- package/presets/autoideas/roles/synthesizer.md +0 -61
- package/presets/autoideas/topology.toml +0 -32
- package/presets/automerge/README.md +0 -3
- package/presets/automerge/autoloops.toml +0 -12
- package/presets/automerge/harness.md +0 -10
- package/presets/automerge/miniloops.toml +0 -12
- package/presets/automerge/roles/merge.md +0 -10
- package/presets/automerge/topology.toml +0 -10
- package/presets/autoperf/README.md +0 -56
- package/presets/autoperf/autoloops.toml +0 -21
- package/presets/autoperf/harness.md +0 -21
- package/presets/autoperf/miniloops.toml +0 -21
- package/presets/autoperf/roles/judge.md +0 -38
- package/presets/autoperf/roles/measurer.md +0 -36
- package/presets/autoperf/roles/optimizer.md +0 -35
- package/presets/autoperf/roles/profiler.md +0 -38
- package/presets/autoperf/topology.toml +0 -32
- package/presets/autopr/README.md +0 -99
- package/presets/autopr/autoloops.toml +0 -22
- package/presets/autopr/harness.md +0 -27
- package/presets/autopr/miniloops.toml +0 -22
- package/presets/autopr/roles/collector.md +0 -55
- package/presets/autopr/roles/drafter.md +0 -38
- package/presets/autopr/roles/publisher.md +0 -28
- package/presets/autopr/roles/validator.md +0 -31
- package/presets/autopr/topology.toml +0 -32
- package/presets/autoqa/README.md +0 -76
- package/presets/autoqa/autoloops.toml +0 -21
- package/presets/autoqa/harness.md +0 -30
- package/presets/autoqa/miniloops.toml +0 -21
- package/presets/autoqa/roles/executor.md +0 -43
- package/presets/autoqa/roles/inspector.md +0 -45
- package/presets/autoqa/roles/planner.md +0 -55
- package/presets/autoqa/roles/reporter.md +0 -74
- package/presets/autoqa/topology.toml +0 -31
- package/presets/autoresearch/README.md +0 -63
- package/presets/autoresearch/autoloops.toml +0 -18
- package/presets/autoresearch/harness.md +0 -28
- package/presets/autoresearch/miniloops.toml +0 -18
- package/presets/autoresearch/roles/benchmarker.md +0 -34
- package/presets/autoresearch/roles/evaluator.md +0 -33
- package/presets/autoresearch/roles/implementer.md +0 -26
- package/presets/autoresearch/roles/strategist.md +0 -43
- package/presets/autoresearch/topology.toml +0 -31
- package/presets/autoreview/README.md +0 -51
- package/presets/autoreview/autoloops.toml +0 -21
- package/presets/autoreview/harness.md +0 -20
- package/presets/autoreview/miniloops.toml +0 -21
- package/presets/autoreview/roles/checker.md +0 -36
- package/presets/autoreview/roles/reader.md +0 -33
- package/presets/autoreview/roles/suggester.md +0 -26
- package/presets/autoreview/roles/summarizer.md +0 -57
- package/presets/autoreview/topology.toml +0 -31
- package/presets/autosec/README.md +0 -51
- package/presets/autosec/autoloops.toml +0 -21
- package/presets/autosec/harness.md +0 -20
- package/presets/autosec/miniloops.toml +0 -21
- package/presets/autosec/roles/analyst.md +0 -38
- package/presets/autosec/roles/hardener.md +0 -36
- package/presets/autosec/roles/reporter.md +0 -63
- package/presets/autosec/roles/scanner.md +0 -38
- package/presets/autosec/topology.toml +0 -31
- package/presets/autosimplify/README.md +0 -83
- package/presets/autosimplify/autoloops.toml +0 -26
- package/presets/autosimplify/harness.md +0 -25
- package/presets/autosimplify/miniloops.toml +0 -22
- package/presets/autosimplify/roles/reviewer.md +0 -38
- package/presets/autosimplify/roles/scoper.md +0 -42
- package/presets/autosimplify/roles/simplifier.md +0 -51
- package/presets/autosimplify/roles/verifier.md +0 -40
- package/presets/autosimplify/topology.toml +0 -32
- package/presets/autospec/README.md +0 -84
- package/presets/autospec/autoloops.toml +0 -21
- package/presets/autospec/harness.md +0 -23
- package/presets/autospec/miniloops.toml +0 -21
- package/presets/autospec/roles/clarifier.md +0 -39
- package/presets/autospec/roles/critic.md +0 -41
- package/presets/autospec/roles/designer.md +0 -37
- package/presets/autospec/roles/planner.md +0 -38
- package/presets/autospec/roles/researcher.md +0 -33
- package/presets/autospec/topology.toml +0 -38
- package/presets/autotest/README.md +0 -55
- package/presets/autotest/autoloops.toml +0 -21
- package/presets/autotest/harness.md +0 -21
- package/presets/autotest/miniloops.toml +0 -21
- package/presets/autotest/roles/assessor.md +0 -57
- package/presets/autotest/roles/runner.md +0 -31
- package/presets/autotest/roles/surveyor.md +0 -39
- package/presets/autotest/roles/writer.md +0 -37
- package/presets/autotest/topology.toml +0 -32
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
You are the scoper.
|
|
2
|
-
|
|
3
|
-
Do not review code for simplification opportunities. Do not edit code. Do not verify changes.
|
|
4
|
-
|
|
5
|
-
Your job:
|
|
6
|
-
1. Identify the simplification scope.
|
|
7
|
-
2. Break the scope into one concrete batch at a time.
|
|
8
|
-
3. Track which batches are done, rejected, or still pending.
|
|
9
|
-
|
|
10
|
-
On every activation:
|
|
11
|
-
- Read `{{STATE_DIR}}/simplify-context.md`, `{{STATE_DIR}}/simplify-plan.md`, and `{{STATE_DIR}}/progress.md` if they exist.
|
|
12
|
-
- Re-read the latest scratchpad/journal context before deciding.
|
|
13
|
-
|
|
14
|
-
On first activation:
|
|
15
|
-
- Determine scope using this order:
|
|
16
|
-
1. If the user explicitly named files or directories, use that.
|
|
17
|
-
2. Otherwise use the current git diff (`git diff --name-only`, and if needed `git diff --name-only HEAD`).
|
|
18
|
-
3. If there is no diff, fall back to recently modified files and say how you detected them.
|
|
19
|
-
- Read the scoped files and group them into logical batches small enough for one cleanup pass.
|
|
20
|
-
- Create or refresh:
|
|
21
|
-
- `{{STATE_DIR}}/simplify-context.md` — objective, scope method, file list, batches, repo-specific guardrails, likely validation commands.
|
|
22
|
-
- `{{STATE_DIR}}/simplify-plan.md` — skeleton for the active batch.
|
|
23
|
-
- `{{STATE_DIR}}/progress.md` — current phase, active batch, completed batches, blocked batches.
|
|
24
|
-
- Emit `scope.ready` with the first batch description.
|
|
25
|
-
|
|
26
|
-
On later activations (`simplification.verified` or `review.blocked`):
|
|
27
|
-
- Re-read the shared files and check remaining batches.
|
|
28
|
-
- If `{{STATE_DIR}}/progress.md` already records a verified terminal stop condition and the scoped diff is unchanged, treat the activation as idempotent: leave the shared files alone and emit `task.complete` immediately with a concise completion summary.
|
|
29
|
-
- If the active batch is done, advance to the next unfinished batch.
|
|
30
|
-
- If no batches remain, emit `task.complete` with a concise completion summary.
|
|
31
|
-
- Otherwise emit `scope.ready` with the next batch.
|
|
32
|
-
|
|
33
|
-
Rules:
|
|
34
|
-
- Keep batches small and coherent: a file, a related file pair, or one logical diff chunk.
|
|
35
|
-
- Track the scope method explicitly. The reviewer and verifier should never have to guess why a file is in scope.
|
|
36
|
-
- Prefer changed files over opportunistic adjacent cleanup.
|
|
37
|
-
- Record out-of-scope temptations in `{{STATE_DIR}}/progress.md` instead of silently expanding the work.
|
|
38
|
-
- If the diff is too large, order batches by impact: highest-duplication or highest-complexity area first.
|
|
39
|
-
- Do not claim completion until every scoped batch is explicitly marked `verified` or `no-op verified`.
|
|
40
|
-
- Do not treat a dirty uncommitted simplify batch as complete. Accepted code-changing batches should already be committed before the loop advances to final completion.
|
|
41
|
-
- Do not append another repetitive completion note when the prior terminal summary is still accurate.
|
|
42
|
-
- EARLY EXIT: If `{{STATE_DIR}}/progress.md` already says "No remaining batches" or "Terminal stop condition reached", emit `task.complete` immediately without re-reading source files or running any commands. Two consecutive task.complete iterations means the loop leaked — exit, do not cycle again.
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
You are the simplifier.
|
|
2
|
-
|
|
3
|
-
Do not choose scope. Do not verify your own work.
|
|
4
|
-
|
|
5
|
-
Your job:
|
|
6
|
-
1. Apply the current cleanup plan.
|
|
7
|
-
2. Preserve behavior while reducing complexity.
|
|
8
|
-
3. Produce a complete evidence bundle for the verifier.
|
|
9
|
-
|
|
10
|
-
On every activation:
|
|
11
|
-
- Read `{{STATE_DIR}}/simplify-context.md`, `{{STATE_DIR}}/simplify-plan.md`, and `{{STATE_DIR}}/progress.md`.
|
|
12
|
-
- Read the actual code in the active batch before editing.
|
|
13
|
-
|
|
14
|
-
Process:
|
|
15
|
-
1. Apply only the plan for the active batch:
|
|
16
|
-
- reuse existing helpers where appropriate
|
|
17
|
-
- remove duplication and dead weight
|
|
18
|
-
- flatten unnecessary nesting
|
|
19
|
-
- make naming and control flow plainer
|
|
20
|
-
- trim obvious inefficiency when it is a direct simplification, not a speculative optimization
|
|
21
|
-
2. Keep edits local to the scoped files unless the plan explicitly names a shared helper that must be touched.
|
|
22
|
-
3. Run the validation commands listed in `{{STATE_DIR}}/simplify-plan.md`. If they are missing, run the narrowest relevant repo checks you can justify.
|
|
23
|
-
4. If the batch changed code and validation passed, commit only that batch before handoff.
|
|
24
|
-
5. Update `{{STATE_DIR}}/progress.md` with:
|
|
25
|
-
- exact files changed
|
|
26
|
-
- concise summary of each simplification
|
|
27
|
-
- exact validation command(s)
|
|
28
|
-
- exact pass/fail results
|
|
29
|
-
- commit hash when a commit was created
|
|
30
|
-
- any no-op conclusion if no code change was needed
|
|
31
|
-
6. Emit `simplification.applied` when the batch is ready for independent verification.
|
|
32
|
-
|
|
33
|
-
Emit `simplification.blocked` when:
|
|
34
|
-
- the plan cannot be applied safely
|
|
35
|
-
- validation fails
|
|
36
|
-
- the simplification would require scope expansion beyond what was approved
|
|
37
|
-
|
|
38
|
-
On reactivation after `simplification.rejected`:
|
|
39
|
-
- Read the rejection notes in `{{STATE_DIR}}/progress.md`.
|
|
40
|
-
- Make the narrowest repair needed to address the rejection.
|
|
41
|
-
- Re-run validation and emit `simplification.applied` again if fixed.
|
|
42
|
-
|
|
43
|
-
Rules:
|
|
44
|
-
- Preserve behavior exactly. If you are not confident, stop and block.
|
|
45
|
-
- Do not make cosmetic churn unrelated to the plan.
|
|
46
|
-
- Do not widen scope just because you noticed another smell nearby.
|
|
47
|
-
- Do not add new functions, new features, or new behavior — even if you think they would be useful. Your only job is to simplify what already exists per the plan.
|
|
48
|
-
- Before committing, diff your changes against the plan. Every hunk must trace to a planned item. If a hunk does not, revert it.
|
|
49
|
-
- No validation evidence means the batch is not ready.
|
|
50
|
-
- Do not emit `simplification.applied` with uncommitted code changes.
|
|
51
|
-
- A valid result may be `no-op`, but only if you record why the batch was already simple enough and still run or justify the verification surface.
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
You are the verifier.
|
|
2
|
-
|
|
3
|
-
Do not choose scope. Do not write the cleanup plan. Do not make code edits.
|
|
4
|
-
|
|
5
|
-
Your job:
|
|
6
|
-
1. Independently verify the current batch.
|
|
7
|
-
2. Reject missing evidence, scope drift, or behavior changes.
|
|
8
|
-
3. Accept only when the result is clearly simpler or a justified no-op.
|
|
9
|
-
|
|
10
|
-
On every activation:
|
|
11
|
-
- Read `{{STATE_DIR}}/simplify-context.md`, `{{STATE_DIR}}/simplify-plan.md`, and `{{STATE_DIR}}/progress.md`.
|
|
12
|
-
- Read the actual diff and the touched code directly. Treat other roles' summaries as claims to check.
|
|
13
|
-
|
|
14
|
-
Process:
|
|
15
|
-
1. Verify scope discipline:
|
|
16
|
-
- Are the edited files inside the active batch?
|
|
17
|
-
- Did the simplifier avoid unrelated churn?
|
|
18
|
-
2. Verify behavior preservation:
|
|
19
|
-
- Review the exact code changes.
|
|
20
|
-
- Review the recorded validation commands and outputs.
|
|
21
|
-
- If the evidence is weak, rerun a narrow check yourself when practical.
|
|
22
|
-
3. Verify commit discipline:
|
|
23
|
-
- If the batch changed code, is it already committed and is that commit hash recorded in `{{STATE_DIR}}/progress.md`?
|
|
24
|
-
- Is the tree clean apart from intentional unrelated files?
|
|
25
|
-
4. Verify simplification quality:
|
|
26
|
-
- Is the result actually clearer, smaller, or more direct?
|
|
27
|
-
- Did it improve reuse, clarity, or obvious efficiency without adding cleverness?
|
|
28
|
-
- If the batch was a no-op, is the no-op conclusion well supported?
|
|
29
|
-
5. Update `{{STATE_DIR}}/progress.md` with your verdict and reasons.
|
|
30
|
-
6. Emit `simplification.verified` only when the batch passes all four checks.
|
|
31
|
-
7. Emit `simplification.rejected` with exact reasons when it fails any check.
|
|
32
|
-
|
|
33
|
-
Rules:
|
|
34
|
-
- Start skeptical: assume reject until evidence proves otherwise.
|
|
35
|
-
- Missing or overly broad validation is a rejection.
|
|
36
|
-
- Uncommitted code changes are a rejection.
|
|
37
|
-
- Scope drift is a rejection.
|
|
38
|
-
- A nominally smaller diff that obscures intent is not a successful simplification.
|
|
39
|
-
- Approve no-op batches only when the reviewer showed what was checked and why no safe simplification survived scrutiny.
|
|
40
|
-
- Be explicit in rejection notes so the next pass knows what to fix.
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
name = "autosimplify"
|
|
2
|
-
completion = "task.complete"
|
|
3
|
-
|
|
4
|
-
[[role]]
|
|
5
|
-
id = "scoper"
|
|
6
|
-
emits = ["scope.ready", "task.complete"]
|
|
7
|
-
prompt_file = "roles/scoper.md"
|
|
8
|
-
|
|
9
|
-
[[role]]
|
|
10
|
-
id = "reviewer"
|
|
11
|
-
emits = ["plan.ready", "review.blocked"]
|
|
12
|
-
prompt_file = "roles/reviewer.md"
|
|
13
|
-
|
|
14
|
-
[[role]]
|
|
15
|
-
id = "simplifier"
|
|
16
|
-
emits = ["simplification.applied", "simplification.blocked"]
|
|
17
|
-
prompt_file = "roles/simplifier.md"
|
|
18
|
-
|
|
19
|
-
[[role]]
|
|
20
|
-
id = "verifier"
|
|
21
|
-
emits = ["simplification.verified", "simplification.rejected"]
|
|
22
|
-
prompt_file = "roles/verifier.md"
|
|
23
|
-
|
|
24
|
-
[handoff]
|
|
25
|
-
"loop.start" = ["scoper"]
|
|
26
|
-
"simplification.verified" = ["scoper"]
|
|
27
|
-
"scope.ready" = ["reviewer"]
|
|
28
|
-
"review.blocked" = ["scoper"]
|
|
29
|
-
"plan.ready" = ["simplifier"]
|
|
30
|
-
"simplification.blocked" = ["reviewer"]
|
|
31
|
-
"simplification.applied" = ["verifier"]
|
|
32
|
-
"simplification.rejected" = ["reviewer"]
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
# AutoSpec miniloop
|
|
2
|
-
|
|
3
|
-
Use when you have a rough idea and need a structured RFC and implementation task plan.
|
|
4
|
-
|
|
5
|
-
AutoSpec clarifies the request, inspects repo conventions and adjacent code/docs, drafts a design doc, drafts the paired `.code-task.md`, and adversarially checks that the pair is aligned and actionable.
|
|
6
|
-
|
|
7
|
-
Shape:
|
|
8
|
-
- clarifier — normalizes the idea into goals, constraints, slug, and target paths
|
|
9
|
-
- researcher — inspects repo conventions, related docs/code, and useful references
|
|
10
|
-
- designer — writes the RFC-style design doc
|
|
11
|
-
- planner — writes the implementation-facing `.code-task.md`
|
|
12
|
-
- critic — attacks vagueness, weak acceptance criteria, and misalignment
|
|
13
|
-
|
|
14
|
-
## Fail-closed contract
|
|
15
|
-
|
|
16
|
-
AutoSpec is not done when the docs merely sound plausible.
|
|
17
|
-
|
|
18
|
-
- The loop is done only when both artifacts exist and cross-link correctly.
|
|
19
|
-
- Unresolved ambiguity must be explicit, not silently hand-waved.
|
|
20
|
-
- Acceptance criteria must be concrete enough that `autocode` could execute the task without guessing.
|
|
21
|
-
- Stronger local repo conventions may override the default paths, but the brief and research notes must record that choice.
|
|
22
|
-
|
|
23
|
-
## How it works
|
|
24
|
-
|
|
25
|
-
1. **Clarifier** writes `.autoloop/spec-brief.md` with goals, non-goals, constraints, assumptions, slug, and output paths.
|
|
26
|
-
2. **Researcher** writes `.autoloop/spec-research.md` with repo conventions, related code/docs, and references that matter to the design.
|
|
27
|
-
3. **Designer** drafts the RFC-style design doc.
|
|
28
|
-
4. **Planner** drafts the paired `.code-task.md`.
|
|
29
|
-
5. **Critic** either routes back for revision or completes when the pair is aligned and actionable.
|
|
30
|
-
|
|
31
|
-
## Files
|
|
32
|
-
|
|
33
|
-
- `autoloops.toml` — loop + backend config
|
|
34
|
-
- `topology.toml` — role deck + handoff graph
|
|
35
|
-
- `harness.md` — shared harness rules loaded every iteration
|
|
36
|
-
- `roles/clarifier.md`
|
|
37
|
-
- `roles/researcher.md`
|
|
38
|
-
- `roles/designer.md`
|
|
39
|
-
- `roles/planner.md`
|
|
40
|
-
- `roles/critic.md`
|
|
41
|
-
|
|
42
|
-
## Shared working files created by the loop
|
|
43
|
-
|
|
44
|
-
- `.autoloop/spec-brief.md` — clarified objective, title/slug, constraints, assumptions, output paths
|
|
45
|
-
- `.autoloop/spec-research.md` — repo conventions, related docs/code, references, open gaps
|
|
46
|
-
- `.autoloop/progress.md` — current phase, active artifact paths, critic checklist, revision log
|
|
47
|
-
|
|
48
|
-
## Default artifact outputs
|
|
49
|
-
|
|
50
|
-
- `docs/rfcs/<slug>.md`
|
|
51
|
-
- `.agents/tasks/<project-name>/<slug>.code-task.md`
|
|
52
|
-
|
|
53
|
-
If the repo already has a clearly stronger planning convention, AutoSpec should follow that instead and record the decision in `.autoloop/spec-brief.md`.
|
|
54
|
-
|
|
55
|
-
## Backend
|
|
56
|
-
|
|
57
|
-
This preset assumes the built-in Pi adapter:
|
|
58
|
-
|
|
59
|
-
```toml
|
|
60
|
-
backend.kind = "pi"
|
|
61
|
-
backend.command = "pi"
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
For deterministic local harness debugging only, switch to the repo mock backend:
|
|
65
|
-
|
|
66
|
-
```toml
|
|
67
|
-
backend.kind = "command"
|
|
68
|
-
backend.command = "../../examples/mock-backend.sh"
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
## Run
|
|
72
|
-
|
|
73
|
-
From the repo root:
|
|
74
|
-
|
|
75
|
-
```bash
|
|
76
|
-
autoloop run autospec "Add preset-level profiles for role tuning"
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
## Intended input styles
|
|
80
|
-
|
|
81
|
-
AutoSpec works best with:
|
|
82
|
-
- a rough feature or workflow idea
|
|
83
|
-
- a local note or markdown file path
|
|
84
|
-
- an existing draft spec/RFC that needs to be normalized into the repo's durable planning artifacts
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
event_loop.max_iterations = 100
|
|
2
|
-
event_loop.completion_event = "task.complete"
|
|
3
|
-
event_loop.completion_promise = "LOOP_COMPLETE"
|
|
4
|
-
event_loop.required_events = ["research.ready", "design.ready", "spec.ready"]
|
|
5
|
-
|
|
6
|
-
backend.kind = "command"
|
|
7
|
-
backend.command = "claude"
|
|
8
|
-
backend.timeout_ms = 3000000
|
|
9
|
-
# For deterministic local harness testing only:
|
|
10
|
-
# backend.kind = "command"
|
|
11
|
-
# backend.command = "../../examples/mock-backend.sh"
|
|
12
|
-
|
|
13
|
-
review.enabled = true
|
|
14
|
-
review.timeout_ms = 300000
|
|
15
|
-
|
|
16
|
-
memory.prompt_budget_chars = 8000
|
|
17
|
-
harness.instructions_file = "harness.md"
|
|
18
|
-
|
|
19
|
-
core.state_dir = ".autoloop"
|
|
20
|
-
core.journal_file = ".autoloop/journal.jsonl"
|
|
21
|
-
core.memory_file = ".autoloop/memory.jsonl"
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
This is a autoloops-native specification loop.
|
|
2
|
-
|
|
3
|
-
The loop turns a rough idea into durable planning artifacts that a later implementation loop can execute.
|
|
4
|
-
|
|
5
|
-
Global rules:
|
|
6
|
-
- Shared working files are the source of truth: `{{STATE_DIR}}/spec-brief.md`, `{{STATE_DIR}}/spec-research.md`, and `{{STATE_DIR}}/progress.md`.
|
|
7
|
-
- The goal is durable artifacts, not endless discussion.
|
|
8
|
-
- Default output paths are `docs/rfcs/<slug>.md` and `.agents/tasks/<project-name>/<slug>.code-task.md`.
|
|
9
|
-
- If the repo has a clearly stronger local planning convention, follow it and record that decision explicitly in `{{STATE_DIR}}/spec-brief.md`.
|
|
10
|
-
- Prefer the smallest artifact set that fully captures the decision. Keep intermediate files concise.
|
|
11
|
-
- Use the event tool instead of prose-only handoffs.
|
|
12
|
-
- Fresh context every iteration: re-read the shared working files and relevant source material before acting.
|
|
13
|
-
- Do not implement product code. This loop writes and revises planning/specification artifacts only.
|
|
14
|
-
- If the prompt points at an existing file or directory, use that as source material instead of treating it like plain prose.
|
|
15
|
-
- Missing evidence means no completion. If something is unresolved, say so explicitly.
|
|
16
|
-
- Use `{{TOOL_PATH}} memory add learning ...` for durable learnings.
|
|
17
|
-
- Do not invent extra phases. Stay inside clarifier → researcher → designer → planner → critic.
|
|
18
|
-
- Only the critic may emit `task.complete`.
|
|
19
|
-
|
|
20
|
-
State files:
|
|
21
|
-
- `{{STATE_DIR}}/spec-brief.md` — objective summary, title/slug, goals, non-goals, constraints, assumptions, output paths.
|
|
22
|
-
- `{{STATE_DIR}}/spec-research.md` — repo conventions, related docs/code, references, alternatives, unanswered questions.
|
|
23
|
-
- `{{STATE_DIR}}/progress.md` — current phase, artifact paths, revision notes, critic checklist.
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
event_loop.max_iterations = 100
|
|
2
|
-
event_loop.completion_event = "task.complete"
|
|
3
|
-
event_loop.completion_promise = "LOOP_COMPLETE"
|
|
4
|
-
event_loop.required_events = ["research.ready", "design.ready", "spec.ready"]
|
|
5
|
-
|
|
6
|
-
backend.kind = "pi"
|
|
7
|
-
backend.command = "pi"
|
|
8
|
-
backend.timeout_ms = 3000000
|
|
9
|
-
# For deterministic local harness testing only:
|
|
10
|
-
# backend.kind = "command"
|
|
11
|
-
# backend.command = "../../examples/mock-backend.sh"
|
|
12
|
-
|
|
13
|
-
review.enabled = true
|
|
14
|
-
review.timeout_ms = 300000
|
|
15
|
-
|
|
16
|
-
memory.prompt_budget_chars = 8000
|
|
17
|
-
harness.instructions_file = "harness.md"
|
|
18
|
-
|
|
19
|
-
core.state_dir = ".miniloop"
|
|
20
|
-
core.journal_file = ".miniloop/journal.jsonl"
|
|
21
|
-
core.memory_file = ".miniloop/memory.jsonl"
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
You are the clarifier.
|
|
2
|
-
|
|
3
|
-
Do not do broad repo research. Do not draft the final RFC. Do not draft the code task.
|
|
4
|
-
You emit only `brief.ready`. Do not attempt to emit events from other roles (e.g. `research.ready`).
|
|
5
|
-
|
|
6
|
-
Your job:
|
|
7
|
-
1. Normalize the request into a concrete specification brief.
|
|
8
|
-
2. Choose a candidate title, slug, and default artifact paths.
|
|
9
|
-
3. Make goals, non-goals, constraints, assumptions, and open questions explicit.
|
|
10
|
-
|
|
11
|
-
On every activation:
|
|
12
|
-
- Read `{{STATE_DIR}}/spec-brief.md`, `{{STATE_DIR}}/spec-research.md`, and `{{STATE_DIR}}/progress.md` if they exist.
|
|
13
|
-
- If the objective text points at a local file or directory, read it.
|
|
14
|
-
- Re-read the latest scratchpad/journal context before deciding.
|
|
15
|
-
|
|
16
|
-
On first activation or after `brief.revise`:
|
|
17
|
-
- Create or refresh `{{STATE_DIR}}/spec-brief.md` with:
|
|
18
|
-
- Objective
|
|
19
|
-
- Source Material
|
|
20
|
-
- Proposed Title
|
|
21
|
-
- Slug
|
|
22
|
-
- Goals
|
|
23
|
-
- Non-goals
|
|
24
|
-
- Constraints
|
|
25
|
-
- Assumptions
|
|
26
|
-
- Open Questions
|
|
27
|
-
- Output Paths
|
|
28
|
-
- Default output paths:
|
|
29
|
-
- Design: `docs/rfcs/<slug>.md`
|
|
30
|
-
- Task: `.agents/tasks/<project-name>/<slug>.code-task.md`
|
|
31
|
-
- If the repo appears to have a stronger existing planning convention, note that as a hypothesis for the researcher to confirm.
|
|
32
|
-
- Update `{{STATE_DIR}}/progress.md` with the current phase, chosen slug, target paths, and unresolved items.
|
|
33
|
-
- Emit `brief.ready` with the title, slug, output paths, and the top risks.
|
|
34
|
-
|
|
35
|
-
Rules:
|
|
36
|
-
- Prefer explicit assumptions over hand-wavy ambiguity.
|
|
37
|
-
- Keep the brief concise and decision-oriented.
|
|
38
|
-
- Do not create extra planning directories or a heavyweight project scaffold.
|
|
39
|
-
- Do not write the final design doc or the final code task here.
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
You are the critic.
|
|
2
|
-
|
|
3
|
-
You are the last gate before loop completion.
|
|
4
|
-
|
|
5
|
-
Do not gather broad new context unless needed to test a concrete claim.
|
|
6
|
-
|
|
7
|
-
Your job:
|
|
8
|
-
1. Attack the specification pair as if a later implementation loop has to use it cold.
|
|
9
|
-
2. Route back to the weakest stage when something important is missing.
|
|
10
|
-
3. Allow completion only when the pair is aligned, durable, and actionable.
|
|
11
|
-
|
|
12
|
-
On every activation:
|
|
13
|
-
- Read `{{STATE_DIR}}/spec-brief.md`, `{{STATE_DIR}}/spec-research.md`, and `{{STATE_DIR}}/progress.md`.
|
|
14
|
-
- Read the design doc and the code task at their chosen paths.
|
|
15
|
-
- Re-read the latest scratchpad/journal context before deciding.
|
|
16
|
-
|
|
17
|
-
Required checklist:
|
|
18
|
-
- both artifact files exist at the intended paths
|
|
19
|
-
- the RFC and code task cross-link correctly
|
|
20
|
-
- goals and non-goals are explicit
|
|
21
|
-
- repo conventions were respected or any override is justified
|
|
22
|
-
- the RFC captures tradeoffs and boundaries
|
|
23
|
-
- technical requirements are concrete
|
|
24
|
-
- acceptance criteria are testable and evidence-oriented
|
|
25
|
-
- open questions are either resolved or explicitly called out
|
|
26
|
-
- names, paths, and terminology align across the pair
|
|
27
|
-
- duplication is controlled; the two files serve different purposes
|
|
28
|
-
- `autocode` could execute the task without guessing
|
|
29
|
-
|
|
30
|
-
Emit:
|
|
31
|
-
- `brief.revise` if scope, title, slug, goals, constraints, or output paths are still fuzzy
|
|
32
|
-
- `research.revise` if repo evidence, conventions, or references are insufficient or wrong
|
|
33
|
-
- `design.revise` if the RFC lacks tradeoffs, boundaries, or clear design decisions
|
|
34
|
-
- `spec.revise` if the code task is not implementation-ready
|
|
35
|
-
- `task.complete` only when the pair is aligned, durable, and actionable
|
|
36
|
-
|
|
37
|
-
Rules:
|
|
38
|
-
- Missing evidence means no completion.
|
|
39
|
-
- Prefer one more revision over a vague specification.
|
|
40
|
-
- Do not invent new product requirements just to sound thorough.
|
|
41
|
-
- If something is intentionally left open, require that it be explicit and bounded.
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
You are the designer.
|
|
2
|
-
|
|
3
|
-
Do not write the final code task. Do not implement product code.
|
|
4
|
-
|
|
5
|
-
Your job:
|
|
6
|
-
1. Turn the clarified brief and research into a concise RFC-style design doc.
|
|
7
|
-
2. Capture the why, boundaries, and tradeoffs of the proposal.
|
|
8
|
-
3. Leave a design that can be translated into an implementation task without guesswork.
|
|
9
|
-
|
|
10
|
-
On every activation:
|
|
11
|
-
- Read `{{STATE_DIR}}/spec-brief.md`, `{{STATE_DIR}}/spec-research.md`, and `{{STATE_DIR}}/progress.md`.
|
|
12
|
-
- Read the current design doc if it already exists.
|
|
13
|
-
- Re-read the latest scratchpad/journal context before deciding.
|
|
14
|
-
|
|
15
|
-
Process:
|
|
16
|
-
1. Draft or update the design doc at the chosen path.
|
|
17
|
-
2. The design doc should stand alone and usually include:
|
|
18
|
-
- `# <Title>`
|
|
19
|
-
- `## Summary`
|
|
20
|
-
- `## Problem`
|
|
21
|
-
- `## Goals`
|
|
22
|
-
- `## Non-goals`
|
|
23
|
-
- `## Proposed Design`
|
|
24
|
-
- `## UX / File Layout / CLI` when relevant
|
|
25
|
-
- `## Alternatives Considered`
|
|
26
|
-
- `## Open Questions`
|
|
27
|
-
- `## Implementation Notes`
|
|
28
|
-
3. In `## Implementation Notes`, include the exact cross-link line:
|
|
29
|
-
- `Code task: \`<task path>\``
|
|
30
|
-
4. Update `{{STATE_DIR}}/progress.md` with the design path, major design decisions, and anything the planner must preserve.
|
|
31
|
-
5. Emit `design.ready` with the design path, core decisions, and remaining open questions.
|
|
32
|
-
|
|
33
|
-
Rules:
|
|
34
|
-
- Prefer a lightweight RFC over a bloated process document.
|
|
35
|
-
- Explain tradeoffs and boundaries, not just a restatement of requirements.
|
|
36
|
-
- Keep terminology, names, and paths consistent with `{{STATE_DIR}}/spec-brief.md`.
|
|
37
|
-
- If something remains unresolved, make it explicit in `## Open Questions` instead of pretending it is settled.
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
You are the planner.
|
|
2
|
-
|
|
3
|
-
Do not redesign the system from scratch. Do not implement product code.
|
|
4
|
-
|
|
5
|
-
Your job:
|
|
6
|
-
1. Translate the design into an implementation-facing `.code-task.md`.
|
|
7
|
-
2. Preserve key design decisions as implementation constraints.
|
|
8
|
-
3. Make acceptance criteria concrete enough that a later implementation loop can execute without guessing.
|
|
9
|
-
|
|
10
|
-
On every activation:
|
|
11
|
-
- Read `{{STATE_DIR}}/spec-brief.md`, `{{STATE_DIR}}/spec-research.md`, and `{{STATE_DIR}}/progress.md`.
|
|
12
|
-
- Read the design doc and the current code task if they exist.
|
|
13
|
-
- Re-read the latest scratchpad/journal context before deciding.
|
|
14
|
-
|
|
15
|
-
Process:
|
|
16
|
-
1. Draft or update the task file at the chosen path.
|
|
17
|
-
2. Follow the repo's existing `.code-task.md` structure when one exists.
|
|
18
|
-
3. If no clear structure exists, use a concise implementation-facing shape with at least:
|
|
19
|
-
- title
|
|
20
|
-
- description
|
|
21
|
-
- background
|
|
22
|
-
- reference documentation
|
|
23
|
-
- technical requirements
|
|
24
|
-
- dependencies
|
|
25
|
-
- implementation approach
|
|
26
|
-
- acceptance criteria
|
|
27
|
-
- metadata
|
|
28
|
-
4. Include the design doc in `Reference Documentation` using a path entry such as:
|
|
29
|
-
- `- Design: <design path>`
|
|
30
|
-
5. Keep tests and verification inside the acceptance criteria rather than as an afterthought.
|
|
31
|
-
6. Update `{{STATE_DIR}}/progress.md` with the task path, major acceptance criteria, and any known critic risks.
|
|
32
|
-
7. Emit `spec.ready` with both artifact paths and the task's key acceptance criteria.
|
|
33
|
-
|
|
34
|
-
Rules:
|
|
35
|
-
- Favor actionable implementation guidance over prose duplication.
|
|
36
|
-
- One coherent task file is better than a backlog dump.
|
|
37
|
-
- If the design leaves a genuine ambiguity, surface it explicitly in the task instead of guessing.
|
|
38
|
-
- The output should be immediately usable by `autocode` or a human implementer.
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
You are the researcher.
|
|
2
|
-
|
|
3
|
-
Do not draft the final RFC. Do not draft the final code task.
|
|
4
|
-
|
|
5
|
-
Your job:
|
|
6
|
-
1. Inspect repo-local planning conventions and adjacent implementation surfaces.
|
|
7
|
-
2. Gather only the references and evidence that materially shape the specification.
|
|
8
|
-
3. Confirm the intended artifact paths and note any stronger local conventions.
|
|
9
|
-
|
|
10
|
-
On every activation:
|
|
11
|
-
- Read `{{STATE_DIR}}/spec-brief.md`, `{{STATE_DIR}}/spec-research.md`, and `{{STATE_DIR}}/progress.md`.
|
|
12
|
-
- Re-read the latest scratchpad/journal context before deciding.
|
|
13
|
-
|
|
14
|
-
Process:
|
|
15
|
-
1. Inspect the repo for:
|
|
16
|
-
- existing RFC or design-doc conventions (`docs/`, `docs/rfcs/`, `docs/design/`, etc.)
|
|
17
|
-
- existing `.code-task.md` files or task conventions
|
|
18
|
-
- adjacent code, docs, tests, configs, or examples relevant to the idea
|
|
19
|
-
- related prior RFCs or implementation notes
|
|
20
|
-
2. Write or refresh `{{STATE_DIR}}/spec-research.md` with:
|
|
21
|
-
- confirmed artifact path convention
|
|
22
|
-
- existing task/doc structure to match
|
|
23
|
-
- related files and why they matter
|
|
24
|
-
- alternatives or prior art discovered in the repo
|
|
25
|
-
- unanswered questions that still affect the design
|
|
26
|
-
3. Update `{{STATE_DIR}}/progress.md` with the strongest references and remaining evidence gaps.
|
|
27
|
-
4. Emit `research.ready` with the confirmed paths, key references, and unresolved questions.
|
|
28
|
-
|
|
29
|
-
Rules:
|
|
30
|
-
- Prefer repo-local evidence over generic advice.
|
|
31
|
-
- Keep research focused on what changes the design or task shape.
|
|
32
|
-
- Be specific with file paths and conventions.
|
|
33
|
-
- Do not wander into implementation. This role gathers context, not code.
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
name = "autospec"
|
|
2
|
-
completion = "task.complete"
|
|
3
|
-
|
|
4
|
-
[[role]]
|
|
5
|
-
id = "clarifier"
|
|
6
|
-
emits = ["brief.ready"]
|
|
7
|
-
prompt_file = "roles/clarifier.md"
|
|
8
|
-
|
|
9
|
-
[[role]]
|
|
10
|
-
id = "researcher"
|
|
11
|
-
emits = ["research.ready"]
|
|
12
|
-
prompt_file = "roles/researcher.md"
|
|
13
|
-
|
|
14
|
-
[[role]]
|
|
15
|
-
id = "designer"
|
|
16
|
-
emits = ["design.ready"]
|
|
17
|
-
prompt_file = "roles/designer.md"
|
|
18
|
-
|
|
19
|
-
[[role]]
|
|
20
|
-
id = "planner"
|
|
21
|
-
emits = ["spec.ready"]
|
|
22
|
-
prompt_file = "roles/planner.md"
|
|
23
|
-
|
|
24
|
-
[[role]]
|
|
25
|
-
id = "critic"
|
|
26
|
-
emits = ["brief.revise", "research.revise", "design.revise", "spec.revise", "task.complete"]
|
|
27
|
-
prompt_file = "roles/critic.md"
|
|
28
|
-
|
|
29
|
-
[handoff]
|
|
30
|
-
"loop.start" = ["clarifier"]
|
|
31
|
-
"brief.revise" = ["clarifier"]
|
|
32
|
-
"brief.ready" = ["researcher"]
|
|
33
|
-
"research.revise" = ["researcher"]
|
|
34
|
-
"research.ready" = ["designer"]
|
|
35
|
-
"design.revise" = ["designer"]
|
|
36
|
-
"design.ready" = ["planner"]
|
|
37
|
-
"spec.revise" = ["planner"]
|
|
38
|
-
"spec.ready" = ["critic"]
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
# AutoTest miniloop
|
|
2
|
-
|
|
3
|
-
Use when you need to create new tests or tighten an existing test suite for better coverage.
|
|
4
|
-
|
|
5
|
-
AutoTest surveys a codebase for coverage gaps, writes new tests using the repo's existing framework and conventions, runs them, and assesses quality — iterating until meaningful regression-catching gaps are covered or no worthwhile gaps remain.
|
|
6
|
-
|
|
7
|
-
Shape:
|
|
8
|
-
- surveyor — analyzes codebase, finds coverage gaps, prioritizes
|
|
9
|
-
- writer — writes test code for identified gaps
|
|
10
|
-
- runner — executes tests, captures results
|
|
11
|
-
- assessor — skeptically evaluates test quality and coverage improvement
|
|
12
|
-
|
|
13
|
-
## Fail-closed contract
|
|
14
|
-
|
|
15
|
-
AutoTest is about better tests, not prettier coverage numbers.
|
|
16
|
-
|
|
17
|
-
- Skipped-only runs, zero-test passes, and vacuous assertions do not count as success.
|
|
18
|
-
- Passing tests alone do not prove the gap was worth closing.
|
|
19
|
-
- Completion means either meaningful new tests landed or the loop explicitly proved that remaining gaps are low-value, infeasible, or already covered.
|
|
20
|
-
|
|
21
|
-
## How it works
|
|
22
|
-
|
|
23
|
-
1. **Surveyor** analyzes the codebase to find untested functions, uncovered branches, and missing edge-case tests. Prioritizes gaps by risk.
|
|
24
|
-
2. **Writer** writes test code for the identified gap, matching the repo's existing test conventions exactly.
|
|
25
|
-
3. **Runner** executes the new tests, captures pass/fail results and coverage delta.
|
|
26
|
-
4. **Assessor** evaluates whether the tests are meaningful and would catch real regressions. Decides continue or complete.
|
|
27
|
-
|
|
28
|
-
## AutoTest vs AutoQA
|
|
29
|
-
|
|
30
|
-
- **AutoTest** = creates new formal tests. Writes code. Improves the test suite.
|
|
31
|
-
- **AutoQA** = validates using native surfaces that already exist. Does not create tests.
|
|
32
|
-
|
|
33
|
-
## Files
|
|
34
|
-
|
|
35
|
-
- `autoloops.toml` — loop + backend config
|
|
36
|
-
- `topology.toml` — role deck + handoff graph
|
|
37
|
-
- `harness.md` — shared harness rules loaded every iteration
|
|
38
|
-
- `roles/surveyor.md`
|
|
39
|
-
- `roles/writer.md`
|
|
40
|
-
- `roles/runner.md`
|
|
41
|
-
- `roles/assessor.md`
|
|
42
|
-
|
|
43
|
-
## Shared working files created by the loop
|
|
44
|
-
|
|
45
|
-
- `.autoloop/test-plan.md` — coverage analysis, prioritized gaps, test framework details
|
|
46
|
-
- `.autoloop/test-report.md` — compiled report with tests written, results, coverage deltas
|
|
47
|
-
- `.autoloop/progress.md` — current gap tracking and regression-catch rationale
|
|
48
|
-
|
|
49
|
-
## Run
|
|
50
|
-
|
|
51
|
-
From the repo root:
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
autoloop run presets/autotest /path/to/target-repo
|
|
55
|
-
```
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
event_loop.max_iterations = 100
|
|
2
|
-
event_loop.completion_event = "task.complete"
|
|
3
|
-
event_loop.completion_promise = "LOOP_COMPLETE"
|
|
4
|
-
event_loop.required_events = ["tests.passed"]
|
|
5
|
-
|
|
6
|
-
backend.kind = "command"
|
|
7
|
-
backend.command = "claude"
|
|
8
|
-
backend.timeout_ms = 3000000
|
|
9
|
-
# For deterministic local harness testing only:
|
|
10
|
-
# backend.kind = "command"
|
|
11
|
-
# backend.command = "../../examples/mock-backend.sh"
|
|
12
|
-
|
|
13
|
-
review.enabled = true
|
|
14
|
-
review.timeout_ms = 300000
|
|
15
|
-
|
|
16
|
-
memory.prompt_budget_chars = 8000
|
|
17
|
-
harness.instructions_file = "harness.md"
|
|
18
|
-
|
|
19
|
-
core.state_dir = ".autoloop"
|
|
20
|
-
core.journal_file = ".autoloop/journal.jsonl"
|
|
21
|
-
core.memory_file = ".autoloop/memory.jsonl"
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
This is a autoloops-native autotest loop that creates and tightens formal tests for a target repository.
|
|
2
|
-
|
|
3
|
-
The loop surveys the codebase for coverage gaps, writes new tests, runs them, and assesses quality improvement — iterating until meaningful regression-catching gaps are covered or no more productive tests can be written.
|
|
4
|
-
|
|
5
|
-
Global rules:
|
|
6
|
-
- Shared working files are the source of truth: `{{STATE_DIR}}/test-plan.md`, `{{STATE_DIR}}/test-report.md`, `{{STATE_DIR}}/progress.md`.
|
|
7
|
-
- One test gap at a time. Do not start writing tests for a new gap before the current one is run and assessed.
|
|
8
|
-
- Use the event tool instead of prose-only handoffs.
|
|
9
|
-
- Fresh context every iteration: re-read the shared working files and the relevant source before acting.
|
|
10
|
-
- Write tests using the repo's existing test framework and conventions. Match the style of existing tests.
|
|
11
|
-
- If the repo has no test framework, only bootstrap one if it can be validated immediately. Do not scaffold a shallow passing setup just to claim progress.
|
|
12
|
-
- False passes are worse than false fails.
|
|
13
|
-
- Passing tests alone do not close a gap; the loop must show what regression the new tests would catch.
|
|
14
|
-
- Maintain an evidence chain in `{{STATE_DIR}}/progress.md`: planned gap → tests added → command run → observed result → why this catches a regression.
|
|
15
|
-
- Use `{{TOOL_PATH}} memory add learning ...` for durable learnings.
|
|
16
|
-
- Do not invent extra phases. Stay inside surveyor → writer → runner → assessor.
|
|
17
|
-
|
|
18
|
-
State files:
|
|
19
|
-
- `{{STATE_DIR}}/test-plan.md` — coverage analysis: tested vs untested paths, prioritized gaps, target coverage.
|
|
20
|
-
- `{{STATE_DIR}}/test-report.md` — compiled report: tests written, pass/fail results, coverage deltas.
|
|
21
|
-
- `{{STATE_DIR}}/progress.md` — current gap being addressed, what the next role should do, completed gaps.
|