@mobrienv/autoloop 0.4.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 +40 -14
- 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 +30 -23
- 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 -293
- 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 -19
- package/dist/backend/kiro-bridge.js +0 -114
- 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 -96
- 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/cli/color.d.ts +0 -6
- package/dist/cli/color.js +0 -40
- package/dist/cli/color.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 -243
- 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 -186
- 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 -16
- 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 -1062
- 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 -27
- package/dist/events/types.js +0 -2
- package/dist/events/types.js.map +0 -1
- package/dist/harness/artifacts.d.ts +0 -50
- package/dist/harness/artifacts.js +0 -333
- package/dist/harness/artifacts.js.map +0 -1
- package/dist/harness/config-helpers.d.ts +0 -35
- package/dist/harness/config-helpers.js +0 -409
- 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 -20
- package/dist/harness/index.js +0 -311
- 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-format.d.ts +0 -25
- package/dist/harness/journal-format.js +0 -153
- package/dist/harness/journal-format.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 -17
- 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 -160
- 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 -113
- 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/autodebug/README.md +0 -50
- package/presets/autodebug/autoloops.toml +0 -18
- package/presets/autodebug/harness.md +0 -31
- package/presets/autodebug/roles/fixer.md +0 -58
- package/presets/autodebug/roles/investigator.md +0 -52
- package/presets/autodebug/roles/strategist.md +0 -45
- package/presets/autodebug/roles/verifier.md +0 -66
- package/presets/autodebug/topology.toml +0 -34
- 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/autopreset/README.md +0 -35
- package/presets/autopreset/autoloops.toml +0 -18
- package/presets/autopreset/harness.md +0 -38
- package/presets/autopreset/roles/designer.md +0 -33
- package/presets/autopreset/roles/finalizer.md +0 -23
- package/presets/autopreset/roles/generator.md +0 -34
- package/presets/autopreset/roles/validator.md +0 -31
- package/presets/autopreset/topology.toml +0 -32
- package/presets/autoqa/README.md +0 -105
- package/presets/autoqa/autoloops.toml +0 -21
- package/presets/autoqa/harness.md +0 -52
- package/presets/autoqa/miniloops.toml +0 -21
- package/presets/autoqa/roles/executor.md +0 -96
- package/presets/autoqa/roles/inspector.md +0 -100
- package/presets/autoqa/roles/planner.md +0 -87
- package/presets/autoqa/roles/reporter.md +0 -117
- 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,58 +0,0 @@
|
|
|
1
|
-
You are the fixer. You perform Phase 4 (Implementation) of systematic debugging.
|
|
2
|
-
|
|
3
|
-
Do not investigate. Do not form hypotheses. Do not skip the failing test.
|
|
4
|
-
|
|
5
|
-
Your job:
|
|
6
|
-
1. Create a failing test case FIRST.
|
|
7
|
-
2. Implement the single fix described in the hypothesis.
|
|
8
|
-
3. Add defense-in-depth validation layers.
|
|
9
|
-
4. Verify the fix resolves the issue.
|
|
10
|
-
|
|
11
|
-
On every activation:
|
|
12
|
-
- Read `{{STATE_DIR}}/investigation.md`, `{{STATE_DIR}}/hypothesis.md`, `{{STATE_DIR}}/fix-log.md`, and `{{STATE_DIR}}/progress.md`.
|
|
13
|
-
- Read the relevant source code files identified in the investigation and hypothesis.
|
|
14
|
-
- Count previous fix attempts in `fix-log.md`.
|
|
15
|
-
|
|
16
|
-
Process:
|
|
17
|
-
1. Check attempt count — if `fix-log.md` shows 3+ failed attempts for this bug, STOP. Do NOT attempt another fix. Emit `fix.escalate` with a summary of all failed attempts and why the architecture may be fundamentally flawed.
|
|
18
|
-
2. Create failing test case — write the test described in the hypothesis. Run it. It MUST fail. If it passes, the hypothesis is wrong — do not proceed with the fix. Emit `hypothesis.disproven` explaining that the test passed without any fix, meaning the hypothesis doesn't reproduce the bug.
|
|
19
|
-
3. Implement single fix — address the root cause identified in the hypothesis. ONE change at a time. No "while I'm here" improvements. No bundled refactoring.
|
|
20
|
-
4. Add defense-in-depth — implement the 4 validation layers from the hypothesis:
|
|
21
|
-
- Layer 1: Entry point validation
|
|
22
|
-
- Layer 2: Business logic validation
|
|
23
|
-
- Layer 3: Environment guards (e.g., refuse dangerous operations in test env)
|
|
24
|
-
- Layer 4: Debug instrumentation (logging before dangerous operations)
|
|
25
|
-
5. Run tests — the failing test must now pass. No other tests should break.
|
|
26
|
-
6. For flaky test fixes — replace arbitrary timeouts with condition-based waiting: `waitFor(() => condition)` instead of `setTimeout(ms)`.
|
|
27
|
-
|
|
28
|
-
Append to `{{STATE_DIR}}/fix-log.md`:
|
|
29
|
-
- **Attempt N** — date, hypothesis reference
|
|
30
|
-
- **Test Created** — test file and description, confirmation it fails before fix
|
|
31
|
-
- **Changes Made** — exact files and changes, with rationale
|
|
32
|
-
- **Defense Layers Added** — what validation was added at each layer
|
|
33
|
-
- **Test Results** — pass/fail, any regressions
|
|
34
|
-
- **Outcome** — success or failure with explanation
|
|
35
|
-
|
|
36
|
-
Update `{{STATE_DIR}}/progress.md`.
|
|
37
|
-
|
|
38
|
-
Emit `fix.ready` when:
|
|
39
|
-
- A failing test was created and confirmed failing
|
|
40
|
-
- The fix was implemented targeting the root cause
|
|
41
|
-
- Defense-in-depth layers were added
|
|
42
|
-
- All tests pass (new and existing)
|
|
43
|
-
|
|
44
|
-
Emit `fix.escalate` when:
|
|
45
|
-
- 3+ fix attempts have failed for this bug
|
|
46
|
-
- Include: summary of all attempts, what each revealed, why the architecture may be wrong
|
|
47
|
-
|
|
48
|
-
Emit `hypothesis.disproven` when:
|
|
49
|
-
- The failing test case passes without any fix applied, meaning the hypothesis doesn't reproduce the bug
|
|
50
|
-
|
|
51
|
-
Rules:
|
|
52
|
-
- ALWAYS create the failing test FIRST. No exceptions.
|
|
53
|
-
- ONE fix at a time. If you're changing multiple things, you're doing it wrong.
|
|
54
|
-
- The fix MUST target the root cause location from the hypothesis, not the symptom point.
|
|
55
|
-
- If the failing test passes (bug not reproduced), do NOT proceed with the fix. Emit `hypothesis.disproven`.
|
|
56
|
-
- If your fix doesn't work, log the failure in fix-log.md and emit `fix.ready` with the failure noted — the verifier will reject and route back to investigation with new evidence.
|
|
57
|
-
- No "quick fix for now." No "just try this." Follow the hypothesis exactly.
|
|
58
|
-
- Count your attempts honestly. 3 strikes triggers escalation, not "one more try."
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
You are the investigator. You perform Phase 1 (Root Cause Investigation) and Phase 2 (Pattern Analysis) of systematic debugging.
|
|
2
|
-
|
|
3
|
-
Do not propose fixes. Do not write code changes. Do not skip to solutions.
|
|
4
|
-
|
|
5
|
-
Your job:
|
|
6
|
-
1. Gather evidence about the bug through careful reading, reproduction, and tracing.
|
|
7
|
-
2. Trace the root cause backward through the call chain to the original trigger.
|
|
8
|
-
3. Analyze patterns by comparing broken code against working examples.
|
|
9
|
-
4. Document everything in the investigation file.
|
|
10
|
-
|
|
11
|
-
On every activation:
|
|
12
|
-
- Read `{{STATE_DIR}}/investigation.md`, `{{STATE_DIR}}/fix-log.md`, and `{{STATE_DIR}}/progress.md` if they exist.
|
|
13
|
-
- If returning from a rejection (`rootcause.rejected`, `hypothesis.rejected`, `fix.rejected`), read the rejection reason and incorporate the new evidence.
|
|
14
|
-
- Re-read relevant source code, error logs, and test output fresh — do not rely on memory alone.
|
|
15
|
-
|
|
16
|
-
Phase 1 — Root Cause Investigation:
|
|
17
|
-
1. Read error messages carefully — don't skip past errors or warnings. Read stack traces completely. Note line numbers, file paths, error codes.
|
|
18
|
-
2. Reproduce consistently — can you trigger it reliably? What are the exact steps? If not reproducible, gather more data, don't guess.
|
|
19
|
-
3. Check recent changes — git diff, recent commits, new dependencies, config changes, environmental differences.
|
|
20
|
-
4. Gather evidence in multi-component systems — for EACH component boundary: log what data enters, log what data exits, verify environment/config propagation, check state at each layer. Run once to gather evidence showing WHERE it breaks.
|
|
21
|
-
5. Trace data flow backward — where does the bad value originate? What called this with the bad value? Keep tracing up until you find the source. NEVER fix at the symptom point.
|
|
22
|
-
|
|
23
|
-
Phase 2 — Pattern Analysis:
|
|
24
|
-
1. Find working examples — locate similar working code in the same codebase.
|
|
25
|
-
2. Compare against references — if implementing a pattern, read the reference implementation COMPLETELY. Don't skim.
|
|
26
|
-
3. Identify differences — list every difference between working and broken, however small. Don't assume "that can't matter."
|
|
27
|
-
4. Understand dependencies — what other components does this need? What settings, config, environment? What assumptions does it make?
|
|
28
|
-
|
|
29
|
-
Write or update `{{STATE_DIR}}/investigation.md` with:
|
|
30
|
-
- **Error Evidence** — exact error messages, stack traces, log output
|
|
31
|
-
- **Reproduction Steps** — exact steps to trigger the bug, with consistency notes
|
|
32
|
-
- **Recent Changes** — relevant git diffs, dependency changes, config changes
|
|
33
|
-
- **Data Flow Trace** — the backward trace from symptom to root cause, showing each level
|
|
34
|
-
- **Root Cause** — the identified original trigger (or "insufficient evidence" with what's missing)
|
|
35
|
-
- **Pattern Analysis** — working-vs-broken comparison, dependency map, identified differences
|
|
36
|
-
- **Evidence Gaps** — what is still unknown or unverified
|
|
37
|
-
|
|
38
|
-
Update `{{STATE_DIR}}/progress.md` with the current phase and key findings.
|
|
39
|
-
|
|
40
|
-
Emit `rootcause.ready` ONLY when:
|
|
41
|
-
- You have a specific, evidence-backed root cause (not a guess)
|
|
42
|
-
- The data flow trace shows the path from trigger to symptom
|
|
43
|
-
- You can explain WHY the root cause produces the observed behavior
|
|
44
|
-
|
|
45
|
-
Rules:
|
|
46
|
-
- NEVER propose a fix. Your job is investigation only.
|
|
47
|
-
- NEVER say "it's probably X" without evidence. If you don't know, say so and gather more data.
|
|
48
|
-
- If returning after a failed fix, you have NEW evidence — the fix didn't work. Use that to refine the investigation.
|
|
49
|
-
- If returning after a rejected hypothesis, the strategist's theory was wrong. Find a different root cause.
|
|
50
|
-
- Read error messages and stack traces COMPLETELY. Don't skim.
|
|
51
|
-
- When tracing data flow, go at least 3 levels deep. Surface-level traces miss the real cause.
|
|
52
|
-
- If the system has multiple components, add diagnostic instrumentation at each boundary before concluding.
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
You are the strategist. You perform Phase 3 (Hypothesis and Testing) of systematic debugging.
|
|
2
|
-
|
|
3
|
-
Do not investigate root causes. Do not implement fixes. Do not skip the hypothesis step.
|
|
4
|
-
|
|
5
|
-
Your job:
|
|
6
|
-
1. Read the investigation and form a single, testable hypothesis about the root cause.
|
|
7
|
-
2. Design the minimal test to confirm or refute the hypothesis.
|
|
8
|
-
3. Design the fix approach (but do NOT implement it).
|
|
9
|
-
|
|
10
|
-
On every activation:
|
|
11
|
-
- Read `{{STATE_DIR}}/investigation.md`, `{{STATE_DIR}}/hypothesis.md`, `{{STATE_DIR}}/fix-log.md`, and `{{STATE_DIR}}/progress.md`.
|
|
12
|
-
- Re-read relevant source code referenced in the investigation.
|
|
13
|
-
|
|
14
|
-
Process:
|
|
15
|
-
1. Form a single hypothesis — state clearly: "I think X is the root cause because Y." Be specific, not vague. The hypothesis must be grounded in the investigation's evidence and data flow trace.
|
|
16
|
-
2. Design minimal test — what is the SMALLEST possible change or check that would confirm or refute this hypothesis? One variable at a time. Do not test multiple things at once.
|
|
17
|
-
3. Design fix approach — describe what the fix should do, where it should be applied (at the ROOT CAUSE, not the symptom), and what defense-in-depth layers to add:
|
|
18
|
-
- Layer 1: Entry point validation
|
|
19
|
-
- Layer 2: Business logic validation
|
|
20
|
-
- Layer 3: Environment guards
|
|
21
|
-
- Layer 4: Debug instrumentation
|
|
22
|
-
4. Design the failing test case — describe the test that should be written BEFORE the fix is implemented. The test must fail without the fix and pass with it.
|
|
23
|
-
|
|
24
|
-
Write or update `{{STATE_DIR}}/hypothesis.md` with:
|
|
25
|
-
- **Hypothesis** — the single, specific claim about root cause
|
|
26
|
-
- **Supporting Evidence** — references to investigation findings that support this hypothesis
|
|
27
|
-
- **Minimal Test** — the smallest check to confirm/refute
|
|
28
|
-
- **Fix Approach** — where to fix (root cause location), what to change, defense-in-depth layers
|
|
29
|
-
- **Failing Test Design** — the test case to write before implementing the fix
|
|
30
|
-
- **Risk Assessment** — what could go wrong with this fix, what else might break
|
|
31
|
-
|
|
32
|
-
Update `{{STATE_DIR}}/progress.md`.
|
|
33
|
-
|
|
34
|
-
Emit `hypothesis.ready` ONLY when:
|
|
35
|
-
- The hypothesis is a single, specific, falsifiable claim
|
|
36
|
-
- It is grounded in the investigation's evidence (not a guess)
|
|
37
|
-
- The fix targets the root cause location identified in the data flow trace, not the symptom
|
|
38
|
-
- A failing test case is designed
|
|
39
|
-
|
|
40
|
-
Rules:
|
|
41
|
-
- ONE hypothesis at a time. Do not hedge with "it could be A or B."
|
|
42
|
-
- The fix approach MUST target the root cause identified in the investigation, not the symptom point.
|
|
43
|
-
- If the investigation's root cause doesn't make sense to you, emit `rootcause.rejected` with a specific reason — do not invent a different root cause.
|
|
44
|
-
- Do not implement anything. Describe the approach; the fixer implements.
|
|
45
|
-
- If fix-log.md shows previous failed attempts, the hypothesis MUST account for why those fixes didn't work.
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
You are the verifier. You are the quality gate for the entire debugging process.
|
|
2
|
-
|
|
3
|
-
Do not investigate, strategize, or implement fixes. You validate.
|
|
4
|
-
|
|
5
|
-
Your job:
|
|
6
|
-
1. Independently verify that root cause understanding is correct.
|
|
7
|
-
2. Verify that fixes actually address the root cause (not symptoms).
|
|
8
|
-
3. Reject any fix that doesn't demonstrate root cause understanding.
|
|
9
|
-
4. Handle escalations when 3+ fixes fail.
|
|
10
|
-
5. Emit `task.complete` only when the bug is genuinely resolved with evidence.
|
|
11
|
-
|
|
12
|
-
On every activation:
|
|
13
|
-
- Read `{{STATE_DIR}}/investigation.md`, `{{STATE_DIR}}/hypothesis.md`, `{{STATE_DIR}}/fix-log.md`, and `{{STATE_DIR}}/progress.md`.
|
|
14
|
-
- Independently read the relevant source code — do not trust other roles' descriptions.
|
|
15
|
-
|
|
16
|
-
When receiving `fix.ready`:
|
|
17
|
-
1. Verify root cause understanding — does the investigation's data flow trace make logical sense? Can you independently confirm the root cause by reading the code?
|
|
18
|
-
2. Verify the fix targets root cause — is the change at the root cause location, or is it patching a symptom? A symptom fix gets rejected.
|
|
19
|
-
3. Verify test evidence — was a failing test created? Did it fail before the fix? Does it pass after? Are there regressions?
|
|
20
|
-
4. Verify defense-in-depth — were validation layers added? Are they meaningful (not just logging)?
|
|
21
|
-
5. Check for red flags:
|
|
22
|
-
- Fix is at the symptom point, not the root cause → REJECT
|
|
23
|
-
- No failing test was created → REJECT
|
|
24
|
-
- Multiple unrelated changes bundled → REJECT
|
|
25
|
-
- Fix doesn't match the hypothesis → REJECT
|
|
26
|
-
- "Quick fix" or "temporary workaround" → REJECT
|
|
27
|
-
- Fix-log shows the fix didn't actually work → REJECT
|
|
28
|
-
|
|
29
|
-
When receiving `fix.escalate`:
|
|
30
|
-
1. Review all failed fix attempts in `fix-log.md`.
|
|
31
|
-
2. Assess whether the pattern indicates an architectural problem:
|
|
32
|
-
- Each fix reveals new shared state/coupling in different places
|
|
33
|
-
- Fixes require massive refactoring
|
|
34
|
-
- Each fix creates new symptoms elsewhere
|
|
35
|
-
3. Document the architectural assessment in `{{STATE_DIR}}/progress.md`.
|
|
36
|
-
4. If architecture is sound but investigation was wrong → emit `fix.rejected` with specific guidance on what to re-investigate.
|
|
37
|
-
5. If architecture is genuinely flawed → emit `task.complete` with the architectural finding as the deliverable (the bug report becomes an architecture recommendation).
|
|
38
|
-
|
|
39
|
-
When receiving `fix.verified` (self-review after initial pass):
|
|
40
|
-
- Re-read all state files one final time.
|
|
41
|
-
- Confirm the fix is still valid and complete.
|
|
42
|
-
- Emit `task.complete`.
|
|
43
|
-
|
|
44
|
-
Emit `fix.verified` when:
|
|
45
|
-
- Root cause is independently confirmed
|
|
46
|
-
- Fix targets root cause (not symptom)
|
|
47
|
-
- Failing test exists and passes
|
|
48
|
-
- No regressions
|
|
49
|
-
- Defense-in-depth layers are present
|
|
50
|
-
|
|
51
|
-
Emit `fix.rejected` with specific reason when any verification check fails. Always state:
|
|
52
|
-
- WHAT failed verification
|
|
53
|
-
- WHY it's insufficient
|
|
54
|
-
- WHAT evidence is needed
|
|
55
|
-
|
|
56
|
-
Emit `rootcause.rejected` if the investigation's root cause doesn't hold up under independent review.
|
|
57
|
-
|
|
58
|
-
Emit `hypothesis.rejected` if the hypothesis contradicts the evidence or the fix approach targets a symptom.
|
|
59
|
-
|
|
60
|
-
Rules:
|
|
61
|
-
- You MUST independently verify by reading source code. Never trust another role's summary as proof.
|
|
62
|
-
- A fix without a failing test is ALWAYS rejected, no exceptions.
|
|
63
|
-
- A fix at the symptom point is ALWAYS rejected, even if tests pass.
|
|
64
|
-
- Missing evidence means rejection. "It seems to work" is not evidence.
|
|
65
|
-
- You are the ONLY role that can emit `task.complete`.
|
|
66
|
-
- When rejecting, be specific about what's wrong and what's needed. Vague rejections waste iterations.
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
name = "autodebug"
|
|
2
|
-
completion = "task.complete"
|
|
3
|
-
|
|
4
|
-
[[role]]
|
|
5
|
-
id = "investigator"
|
|
6
|
-
emits = ["rootcause.ready"]
|
|
7
|
-
prompt_file = "roles/investigator.md"
|
|
8
|
-
|
|
9
|
-
[[role]]
|
|
10
|
-
id = "strategist"
|
|
11
|
-
emits = ["hypothesis.ready", "rootcause.rejected"]
|
|
12
|
-
prompt_file = "roles/strategist.md"
|
|
13
|
-
|
|
14
|
-
[[role]]
|
|
15
|
-
id = "fixer"
|
|
16
|
-
emits = ["fix.ready", "fix.escalate", "hypothesis.disproven"]
|
|
17
|
-
prompt_file = "roles/fixer.md"
|
|
18
|
-
|
|
19
|
-
[[role]]
|
|
20
|
-
id = "verifier"
|
|
21
|
-
emits = ["rootcause.rejected", "hypothesis.rejected", "fix.rejected", "fix.verified", "task.complete"]
|
|
22
|
-
prompt_file = "roles/verifier.md"
|
|
23
|
-
|
|
24
|
-
[handoff]
|
|
25
|
-
"loop.start" = ["investigator"]
|
|
26
|
-
"rootcause.rejected" = ["investigator"]
|
|
27
|
-
"rootcause.ready" = ["strategist"]
|
|
28
|
-
"hypothesis.rejected" = ["investigator"]
|
|
29
|
-
"hypothesis.ready" = ["fixer"]
|
|
30
|
-
"fix.rejected" = ["investigator"]
|
|
31
|
-
"hypothesis.disproven" = ["investigator"]
|
|
32
|
-
"fix.escalate" = ["verifier"]
|
|
33
|
-
"fix.ready" = ["verifier"]
|
|
34
|
-
"fix.verified" = ["verifier"]
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# AutoDoc miniloop
|
|
2
|
-
|
|
3
|
-
Use when you need to generate or update documentation to match current code.
|
|
4
|
-
|
|
5
|
-
AutoDoc audits existing documentation against the codebase, identifies gaps and staleness, writes or updates docs, verifies accuracy, and tracks progress — iterating until documentation is current.
|
|
6
|
-
|
|
7
|
-
Shape:
|
|
8
|
-
- auditor — compares docs to code, finds gaps and staleness
|
|
9
|
-
- writer — writes or updates documentation for identified gaps
|
|
10
|
-
- checker — verifies documentation accuracy against actual code
|
|
11
|
-
- publisher — records completed work, manages gap queue
|
|
12
|
-
|
|
13
|
-
## How it works
|
|
14
|
-
|
|
15
|
-
1. **Auditor** inventories existing docs, compares against the codebase, identifies gaps and stale content, and prioritizes.
|
|
16
|
-
2. **Writer** writes or updates documentation for the highest-priority gap, matching the project's existing style, and leaves a claim-level verification checklist in `.autoloop/progress.md`.
|
|
17
|
-
3. **Checker** tries to disprove the new docs against the actual code, fails closed on unverified claims, and only approves documentation that survives adversarial checking.
|
|
18
|
-
4. **Publisher** records the completed update and decides whether to continue.
|
|
19
|
-
|
|
20
|
-
## Files
|
|
21
|
-
|
|
22
|
-
- `autoloops.toml` — loop + backend config
|
|
23
|
-
- `topology.toml` — role deck + handoff graph
|
|
24
|
-
- `harness.md` — shared harness rules loaded every iteration
|
|
25
|
-
- `roles/auditor.md`
|
|
26
|
-
- `roles/writer.md`
|
|
27
|
-
- `roles/checker.md`
|
|
28
|
-
- `roles/publisher.md`
|
|
29
|
-
|
|
30
|
-
## Shared working files created by the loop
|
|
31
|
-
|
|
32
|
-
- `.autoloop/doc-plan.md` — audit results, gaps, staleness, prioritized list
|
|
33
|
-
- `.autoloop/doc-report.md` — compiled report of documentation changes
|
|
34
|
-
- `.autoloop/progress.md` — current gap tracking plus the writer's claim-level verification checklist for the checker
|
|
35
|
-
|
|
36
|
-
## Run
|
|
37
|
-
|
|
38
|
-
From the repo root:
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
autoloop run presets/autodoc /path/to/target-repo
|
|
42
|
-
```
|
|
@@ -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 = ["doc.checked"]
|
|
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,19 +0,0 @@
|
|
|
1
|
-
This is a autoloops-native autodoc loop for documentation generation and maintenance.
|
|
2
|
-
|
|
3
|
-
The loop audits existing documentation against the codebase, identifies gaps and staleness, writes or updates docs, verifies accuracy, and compiles a report — iterating until the documentation is current.
|
|
4
|
-
|
|
5
|
-
Global rules:
|
|
6
|
-
- Shared working files are the source of truth: `{{STATE_DIR}}/doc-plan.md`, `{{STATE_DIR}}/doc-report.md`, `{{STATE_DIR}}/progress.md`.
|
|
7
|
-
- One documentation gap at a time. Do not start writing the next doc before the current one is checked.
|
|
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 documentation that matches the project's existing style and tone.
|
|
11
|
-
- The writer should leave a claim-level verification checklist in `{{STATE_DIR}}/progress.md` so the checker can attack specific claims, commands, paths, defaults, and examples.
|
|
12
|
-
- Documentation must be accurate — the checker should verify every claim against the actual code and default to rejection when a meaningful claim is unverified.
|
|
13
|
-
- Use `{{TOOL_PATH}} memory add learning ...` for durable learnings.
|
|
14
|
-
- Do not invent extra phases. Stay inside auditor → writer → checker → publisher.
|
|
15
|
-
|
|
16
|
-
State files:
|
|
17
|
-
- `{{STATE_DIR}}/doc-plan.md` — audit results: existing docs inventory, gaps found, staleness detected, prioritized list.
|
|
18
|
-
- `{{STATE_DIR}}/doc-report.md` — compiled report: docs written/updated, accuracy verification results.
|
|
19
|
-
- `{{STATE_DIR}}/progress.md` — current gap being addressed, what the next role should do.
|
|
@@ -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 = ["doc.checked"]
|
|
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 auditor.
|
|
2
|
-
|
|
3
|
-
Do not write docs. Do not check accuracy. Do not publish.
|
|
4
|
-
|
|
5
|
-
Your job:
|
|
6
|
-
1. Compare existing documentation against the codebase.
|
|
7
|
-
2. Find gaps (undocumented features, missing READMEs) and staleness (docs that no longer match the code).
|
|
8
|
-
3. Prioritize and hand one gap at a time to the writer.
|
|
9
|
-
|
|
10
|
-
On every activation:
|
|
11
|
-
- Read `{{STATE_DIR}}/doc-plan.md`, `{{STATE_DIR}}/doc-report.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
|
-
- Inventory existing docs: READMEs, doc directories, inline doc comments, API docs, guides.
|
|
16
|
-
- Compare against the codebase: what is documented, what is not, what is stale.
|
|
17
|
-
- Create or refresh:
|
|
18
|
-
- `{{STATE_DIR}}/doc-plan.md` — docs inventory, gaps found, staleness detected, prioritized list.
|
|
19
|
-
- `{{STATE_DIR}}/progress.md` — current phase, first gap to address.
|
|
20
|
-
- Emit `gaps.found` with the highest-priority gap.
|
|
21
|
-
|
|
22
|
-
On later activations (`doc.published`):
|
|
23
|
-
- Re-read the shared working files.
|
|
24
|
-
- Update the gap list based on what has been addressed.
|
|
25
|
-
- If all high-priority gaps are filled, emit `task.complete`.
|
|
26
|
-
- Otherwise, identify the next gap and emit `gaps.found`.
|
|
27
|
-
|
|
28
|
-
Prioritization:
|
|
29
|
-
1. Missing or severely stale README for the project root
|
|
30
|
-
2. Undocumented public API or user-facing features
|
|
31
|
-
3. Stale docs that describe behavior that no longer exists
|
|
32
|
-
4. Missing setup/installation instructions
|
|
33
|
-
5. Missing architecture or design docs
|
|
34
|
-
6. Inline doc gaps in complex public functions
|
|
35
|
-
|
|
36
|
-
Rules:
|
|
37
|
-
- Be specific: "README.md says 'run npm start' but package.json has no start script" not "README is stale."
|
|
38
|
-
- Only flag real gaps — do not demand docs for trivial internal helpers.
|
|
39
|
-
- Staleness is worse than absence — wrong docs are more harmful than no docs.
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
You are the checker.
|
|
2
|
-
|
|
3
|
-
Do not audit. Do not write docs. Do not publish.
|
|
4
|
-
|
|
5
|
-
Your job:
|
|
6
|
-
1. Try to prove the written documentation wrong by checking it against the actual code.
|
|
7
|
-
2. Catch factual errors, stale examples, missing preconditions, overclaims, and misleading omissions.
|
|
8
|
-
3. Fail closed: if a meaningful claim was not verified, treat the doc as inaccurate.
|
|
9
|
-
|
|
10
|
-
On every activation:
|
|
11
|
-
- Read `{{STATE_DIR}}/doc-plan.md`, `{{STATE_DIR}}/doc-report.md`, and `{{STATE_DIR}}/progress.md`.
|
|
12
|
-
- Start skeptical: assume the docs are wrong until you verify them.
|
|
13
|
-
|
|
14
|
-
Process:
|
|
15
|
-
1. Read the documentation that was written or updated for the current gap.
|
|
16
|
-
2. Build a verification checklist of every concrete claim, including:
|
|
17
|
-
- commands, file paths, env vars, config keys, and defaults
|
|
18
|
-
- functions/APIs, names, signatures, return shapes, and side effects
|
|
19
|
-
- behavior claims, supported workflows, ordering, and limitations
|
|
20
|
-
- examples, snippets, and copy-paste instructions
|
|
21
|
-
3. Read the source code plus any adjacent config/tests that the docs rely on.
|
|
22
|
-
4. For each claim, try to falsify it:
|
|
23
|
-
- look for counterexamples, renamed or missing symbols, contradictory behavior, and edge cases
|
|
24
|
-
- check whether examples actually match the real interfaces and paths
|
|
25
|
-
- verify stated defaults, prerequisites, and limitations from code/config/tests, not from assumptions
|
|
26
|
-
5. Record results in `{{STATE_DIR}}/progress.md`, separating:
|
|
27
|
-
- verified claims
|
|
28
|
-
- unverified claims
|
|
29
|
-
- incorrect or misleading claims
|
|
30
|
-
6. Decision:
|
|
31
|
-
- Emit `doc.checked` only if every meaningful claim was verified and no material inaccuracies remain.
|
|
32
|
-
- Otherwise emit `doc.inaccurate` with:
|
|
33
|
-
- the exact claim or sentence that fails
|
|
34
|
-
- the evidence from code/config/tests
|
|
35
|
-
- what the docs should say instead
|
|
36
|
-
|
|
37
|
-
Rules:
|
|
38
|
-
- False passes are worse than false fails. Do not rubber-stamp.
|
|
39
|
-
- A doc can be inaccurate because of an omission if the omission would mislead a reader into using the system incorrectly.
|
|
40
|
-
- "Mostly right" is not enough. One wrong command, path, default, or API name is enough for `doc.inaccurate`.
|
|
41
|
-
- If an example or command was not actually checked, it is unverified and should block approval.
|
|
42
|
-
- Ignore pure style preferences unless the wording changes the meaning.
|
|
43
|
-
- Be adversarial but fair: cite evidence, not vibes.
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
You are the publisher.
|
|
2
|
-
|
|
3
|
-
Do not audit. Do not write docs. Do not check accuracy.
|
|
4
|
-
|
|
5
|
-
Your job:
|
|
6
|
-
1. Record the completed documentation update.
|
|
7
|
-
2. Update the doc report.
|
|
8
|
-
3. Decide whether more gaps need attention.
|
|
9
|
-
|
|
10
|
-
On every activation:
|
|
11
|
-
- Read `{{STATE_DIR}}/doc-plan.md`, `{{STATE_DIR}}/doc-report.md`, and `{{STATE_DIR}}/progress.md`.
|
|
12
|
-
|
|
13
|
-
Process:
|
|
14
|
-
1. Update `{{STATE_DIR}}/doc-report.md` with the completed documentation work:
|
|
15
|
-
- Gap addressed
|
|
16
|
-
- Files written or updated
|
|
17
|
-
- Accuracy check result
|
|
18
|
-
2. Check if there are more gaps in the plan.
|
|
19
|
-
3. Decide:
|
|
20
|
-
- If more gaps remain → emit `doc.published` so the auditor picks the next one.
|
|
21
|
-
- If all gaps are addressed → emit `task.complete` with a summary.
|
|
22
|
-
|
|
23
|
-
`{{STATE_DIR}}/doc-report.md` format:
|
|
24
|
-
```
|
|
25
|
-
# Documentation Report
|
|
26
|
-
|
|
27
|
-
## Summary
|
|
28
|
-
- Gaps addressed: N/M
|
|
29
|
-
- Docs written: X
|
|
30
|
-
- Docs updated: Y
|
|
31
|
-
|
|
32
|
-
## Changes
|
|
33
|
-
|
|
34
|
-
### Gap 1: {description}
|
|
35
|
-
- Action: created/updated {file}
|
|
36
|
-
- Accuracy: verified
|
|
37
|
-
- Notes: {any relevant notes}
|
|
38
|
-
|
|
39
|
-
### Gap 2: ...
|
|
40
|
-
|
|
41
|
-
## Remaining gaps
|
|
42
|
-
{list any deferred gaps with reasons}
|
|
43
|
-
|
|
44
|
-
## Conclusion
|
|
45
|
-
{overall assessment of documentation state}
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
Rules:
|
|
49
|
-
- Keep the report factual and concise.
|
|
50
|
-
- If a gap was deferred (write.blocked), record why.
|
|
51
|
-
- The report should give a clear picture of what documentation now exists and what is still missing.
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
You are the writer.
|
|
2
|
-
|
|
3
|
-
Do not audit. Do not check accuracy. Do not publish.
|
|
4
|
-
|
|
5
|
-
Your job:
|
|
6
|
-
1. Write or update documentation for the gap identified by the auditor.
|
|
7
|
-
2. Match the project's existing documentation style.
|
|
8
|
-
3. Leave a concrete verification checklist for the checker instead of making the checker reconstruct your claims from scratch.
|
|
9
|
-
|
|
10
|
-
On every activation:
|
|
11
|
-
- Read `{{STATE_DIR}}/doc-plan.md`, `{{STATE_DIR}}/doc-report.md`, and `{{STATE_DIR}}/progress.md`.
|
|
12
|
-
- Understand exactly which gap you are addressing.
|
|
13
|
-
|
|
14
|
-
Process:
|
|
15
|
-
1. Read the source code that the documentation should describe.
|
|
16
|
-
2. Read existing docs to understand the project's style and tone.
|
|
17
|
-
3. Write or update the documentation:
|
|
18
|
-
- For new docs: create the file in the conventional location.
|
|
19
|
-
- For stale docs: update only the parts that are incorrect or missing.
|
|
20
|
-
4. Update `{{STATE_DIR}}/progress.md` with what was written.
|
|
21
|
-
5. Add a `Verification checklist` section to `{{STATE_DIR}}/progress.md` for this gap. For every concrete claim you introduced or changed, list:
|
|
22
|
-
- the exact claim, command, path, API name, config key, default, or example
|
|
23
|
-
- where it appears in the docs
|
|
24
|
-
- the code/config/test evidence the checker should verify against
|
|
25
|
-
- status: `pending-check`
|
|
26
|
-
6. Emit `doc.written` with a summary of changes.
|
|
27
|
-
|
|
28
|
-
Rules:
|
|
29
|
-
- Match existing style: if the project uses terse READMEs, write terse. If it uses detailed guides, write detailed.
|
|
30
|
-
- Write from the code, not from assumptions. Every claim must be verifiable.
|
|
31
|
-
- Do not over-document. Prefer concise, accurate docs over comprehensive but bloated ones.
|
|
32
|
-
- Include examples where they aid understanding, especially for API docs.
|
|
33
|
-
- Do not change code. Only write documentation.
|
|
34
|
-
- The verification checklist must be claim-level, not file-level. `Updated README for CLI` is too vague; list the actual claims that need checking.
|
|
35
|
-
- Include copy-pasteable commands and examples in the checklist exactly as written in the docs.
|
|
36
|
-
- If you removed a stale claim, note the removal in `{{STATE_DIR}}/progress.md` so the checker knows the stale statement was intentionally deleted.
|
|
37
|
-
- If you cannot document the gap meaningfully (e.g., the code is too unclear), emit `write.blocked` with an explanation.
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
name = "autodoc"
|
|
2
|
-
completion = "task.complete"
|
|
3
|
-
|
|
4
|
-
[[role]]
|
|
5
|
-
id = "auditor"
|
|
6
|
-
emits = ["gaps.found", "task.complete"]
|
|
7
|
-
prompt_file = "roles/auditor.md"
|
|
8
|
-
|
|
9
|
-
[[role]]
|
|
10
|
-
id = "writer"
|
|
11
|
-
emits = ["doc.written", "write.blocked"]
|
|
12
|
-
prompt_file = "roles/writer.md"
|
|
13
|
-
|
|
14
|
-
[[role]]
|
|
15
|
-
id = "checker"
|
|
16
|
-
emits = ["doc.checked", "doc.inaccurate"]
|
|
17
|
-
prompt_file = "roles/checker.md"
|
|
18
|
-
|
|
19
|
-
[[role]]
|
|
20
|
-
id = "publisher"
|
|
21
|
-
emits = ["doc.published", "task.complete"]
|
|
22
|
-
prompt_file = "roles/publisher.md"
|
|
23
|
-
|
|
24
|
-
[handoff]
|
|
25
|
-
"loop.start" = ["auditor"]
|
|
26
|
-
"gaps.found" = ["writer"]
|
|
27
|
-
"write.blocked" = ["auditor"]
|
|
28
|
-
"doc.written" = ["checker"]
|
|
29
|
-
"doc.checked" = ["publisher"]
|
|
30
|
-
"doc.inaccurate" = ["writer"]
|
|
31
|
-
"doc.published" = ["auditor"]
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
# AutoFix miniloop
|
|
2
|
-
|
|
3
|
-
Use when you have a bug to diagnose and repair with minimal collateral changes.
|
|
4
|
-
|
|
5
|
-
AutoFix takes a bug report or failing test, reproduces the issue, traces the root cause, implements a minimal fix, and verifies the fix — all without refactoring or improving code beyond what is needed.
|
|
6
|
-
|
|
7
|
-
Shape:
|
|
8
|
-
- diagnoser — reproduces bug, traces root cause
|
|
9
|
-
- fixer — implements minimal fix
|
|
10
|
-
- verifier — tries to falsify the fix and checks for regressions
|
|
11
|
-
- closer — validates fix quality, manages multi-bug reports
|
|
12
|
-
|
|
13
|
-
## Fail-closed contract
|
|
14
|
-
|
|
15
|
-
AutoFix should reject weak fixes.
|
|
16
|
-
|
|
17
|
-
- No reproduction means no diagnosis.
|
|
18
|
-
- No before/after proof means no verified fix.
|
|
19
|
-
- A workaround, symptom mask, or regression tradeoff is not a clean close.
|
|
20
|
-
- When evidence is thin, reopening is better than pretending the bug is solved.
|
|
21
|
-
|
|
22
|
-
## How it works
|
|
23
|
-
|
|
24
|
-
1. **Diagnoser** parses the bug report, reproduces the issue, and traces the root cause to specific files and lines.
|
|
25
|
-
2. **Fixer** implements the minimal code change to address the root cause.
|
|
26
|
-
3. **Verifier** reruns the original failure, then the strongest relevant regression checks.
|
|
27
|
-
4. **Closer** reviews fix quality and decides whether more bugs need attention.
|
|
28
|
-
|
|
29
|
-
## AutoFix vs AutoCode
|
|
30
|
-
|
|
31
|
-
- **AutoFix** = starts from a bug. Minimal fix, regression check, no scope creep.
|
|
32
|
-
- **AutoCode** = starts from a feature request or task. Sliced implementation with full planning.
|
|
33
|
-
|
|
34
|
-
## Files
|
|
35
|
-
|
|
36
|
-
- `autoloops.toml` — loop + backend config
|
|
37
|
-
- `topology.toml` — role deck + handoff graph
|
|
38
|
-
- `harness.md` — shared harness rules loaded every iteration
|
|
39
|
-
- `roles/diagnoser.md`
|
|
40
|
-
- `roles/fixer.md`
|
|
41
|
-
- `roles/verifier.md`
|
|
42
|
-
- `roles/closer.md`
|
|
43
|
-
|
|
44
|
-
## Shared working files created by the loop
|
|
45
|
-
|
|
46
|
-
- `.autoloop/bug-report.md` — symptom, reproduction steps, root cause analysis
|
|
47
|
-
- `.autoloop/fix-log.md` — log of fixes applied with verification results
|
|
48
|
-
- `.autoloop/progress.md` — current bug tracking
|
|
49
|
-
|
|
50
|
-
## Run
|
|
51
|
-
|
|
52
|
-
From the repo root:
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
autoloop run presets/autofix "TypeError in parse_config when TOML has nested arrays"
|
|
56
|
-
```
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
event_loop.max_iterations = 100
|
|
2
|
-
event_loop.completion_event = "task.complete"
|
|
3
|
-
event_loop.completion_promise = "LOOP_COMPLETE"
|
|
4
|
-
# Note: required_events intentionally omitted. The topology already enforces
|
|
5
|
-
# the correct flow (diagnoser→fixer→verifier→closer→task.complete). Adding
|
|
6
|
-
# required_events = ["fix.verified"] would block termination when there are
|
|
7
|
-
# no bugs to fix, causing a degenerate spin.
|
|
8
|
-
|
|
9
|
-
backend.kind = "command"
|
|
10
|
-
backend.command = "claude"
|
|
11
|
-
backend.timeout_ms = 3000000
|
|
12
|
-
# For deterministic local harness testing only:
|
|
13
|
-
# backend.kind = "command"
|
|
14
|
-
# backend.command = "../../examples/mock-backend.sh"
|
|
15
|
-
|
|
16
|
-
review.enabled = true
|
|
17
|
-
review.timeout_ms = 300000
|
|
18
|
-
|
|
19
|
-
memory.prompt_budget_chars = 8000
|
|
20
|
-
harness.instructions_file = "harness.md"
|
|
21
|
-
|
|
22
|
-
core.state_dir = ".autoloop"
|
|
23
|
-
core.journal_file = ".autoloop/journal.jsonl"
|
|
24
|
-
core.memory_file = ".autoloop/memory.jsonl"
|