@mobrienv/autoloop 0.1.4 → 0.2.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 +13 -0
- package/bin/autoloop +0 -0
- package/dist/agent-map.d.ts +10 -0
- package/dist/agent-map.js +58 -0
- package/dist/agent-map.js.map +1 -0
- package/dist/backend/acp-client.d.ts +32 -0
- package/dist/backend/acp-client.js +210 -0
- package/dist/backend/acp-client.js.map +1 -0
- package/dist/backend/index.d.ts +1 -1
- package/dist/backend/index.js +17 -5
- package/dist/backend/index.js.map +1 -1
- package/dist/backend/kiro-bridge.d.ts +17 -0
- package/dist/backend/kiro-bridge.js +80 -0
- package/dist/backend/kiro-bridge.js.map +1 -0
- package/dist/backend/kiro-worker.d.ts +1 -0
- package/dist/backend/kiro-worker.js +83 -0
- package/dist/backend/kiro-worker.js.map +1 -0
- package/dist/backend/run-command.js +2 -2
- package/dist/backend/run-command.js.map +1 -1
- package/dist/backend/run-kiro.d.ts +3 -0
- package/dist/backend/run-kiro.js +12 -0
- package/dist/backend/run-kiro.js.map +1 -0
- package/dist/backend/run-pi.js.map +1 -1
- package/dist/chains/budget.js +16 -4
- package/dist/chains/budget.js.map +1 -1
- package/dist/chains/load.d.ts +7 -1
- package/dist/chains/load.js +58 -9
- package/dist/chains/load.js.map +1 -1
- package/dist/chains/render.js +36 -8
- package/dist/chains/render.js.map +1 -1
- package/dist/chains/run.js +129 -44
- package/dist/chains/run.js.map +1 -1
- package/dist/chains/types.d.ts +1 -0
- package/dist/chains.d.ts +5 -4
- package/dist/chains.js +3 -3
- package/dist/chains.js.map +1 -1
- package/dist/commands/chain.js +6 -4
- package/dist/commands/chain.js.map +1 -1
- package/dist/commands/config.d.ts +1 -0
- package/dist/commands/config.js +74 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/dashboard.d.ts +1 -0
- package/dist/commands/dashboard.js +68 -0
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/commands/inspect.js +125 -17
- package/dist/commands/inspect.js.map +1 -1
- package/dist/commands/list.d.ts +1 -1
- package/dist/commands/list.js +6 -3
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/loops.js +11 -11
- package/dist/commands/loops.js.map +1 -1
- package/dist/commands/memory.js +2 -2
- package/dist/commands/memory.js.map +1 -1
- package/dist/commands/run.d.ts +1 -1
- package/dist/commands/run.js +102 -15
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/runs.d.ts +1 -0
- package/dist/commands/runs.js +50 -0
- package/dist/commands/runs.js.map +1 -0
- package/dist/commands/task.d.ts +1 -0
- package/dist/commands/task.js +74 -0
- package/dist/commands/task.js.map +1 -0
- package/dist/commands/worktree.d.ts +1 -0
- package/dist/commands/worktree.js +162 -0
- package/dist/commands/worktree.js.map +1 -0
- package/dist/config.d.ts +15 -1
- package/dist/config.js +90 -21
- package/dist/config.js.map +1 -1
- package/dist/dashboard/app.d.ts +12 -0
- package/dist/dashboard/app.js +23 -0
- package/dist/dashboard/app.js.map +1 -0
- package/dist/dashboard/routes/api.d.ts +3 -0
- package/dist/dashboard/routes/api.js +103 -0
- package/dist/dashboard/routes/api.js.map +1 -0
- package/dist/dashboard/routes/pages.d.ts +2 -0
- package/dist/dashboard/routes/pages.js +14 -0
- package/dist/dashboard/routes/pages.js.map +1 -0
- package/dist/dashboard/views/alpine-vendor.d.ts +1 -0
- package/dist/dashboard/views/alpine-vendor.js +10 -0
- package/dist/dashboard/views/alpine-vendor.js.map +1 -0
- package/dist/dashboard/views/shell.d.ts +1 -0
- package/dist/dashboard/views/shell.js +714 -0
- package/dist/dashboard/views/shell.js.map +1 -0
- package/dist/events/decode.js.map +1 -1
- package/dist/events/encode.js +2 -2
- package/dist/events/encode.js.map +1 -1
- package/dist/harness/config-helpers.d.ts +11 -0
- package/dist/harness/config-helpers.js +242 -64
- package/dist/harness/config-helpers.js.map +1 -1
- package/dist/harness/coordination.js +12 -12
- package/dist/harness/coordination.js.map +1 -1
- package/dist/harness/display.d.ts +4 -3
- package/dist/harness/display.js +57 -11
- package/dist/harness/display.js.map +1 -1
- package/dist/harness/emit.js +31 -13
- package/dist/harness/emit.js.map +1 -1
- package/dist/harness/index.d.ts +7 -7
- package/dist/harness/index.js +151 -35
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/iteration.d.ts +12 -0
- package/dist/harness/iteration.js +66 -64
- package/dist/harness/iteration.js.map +1 -1
- package/dist/harness/journal.d.ts +17 -0
- package/dist/harness/journal.js +74 -5
- package/dist/harness/journal.js.map +1 -1
- package/dist/harness/metareview.js +30 -15
- package/dist/harness/metareview.js.map +1 -1
- package/dist/harness/metrics.js +12 -12
- package/dist/harness/metrics.js.map +1 -1
- package/dist/harness/parallel.d.ts +1 -1
- package/dist/harness/parallel.js +141 -62
- package/dist/harness/parallel.js.map +1 -1
- package/dist/harness/prompt.d.ts +18 -9
- package/dist/harness/prompt.js +80 -44
- package/dist/harness/prompt.js.map +1 -1
- package/dist/harness/scratchpad.js +8 -6
- package/dist/harness/scratchpad.js.map +1 -1
- package/dist/harness/stop.js +16 -9
- package/dist/harness/stop.js.map +1 -1
- package/dist/harness/tools.js +39 -13
- package/dist/harness/tools.js.map +1 -1
- package/dist/harness/types.d.ts +29 -0
- package/dist/harness/wave/finalize-wave.d.ts +1 -1
- package/dist/harness/wave/finalize-wave.js +36 -9
- package/dist/harness/wave/finalize-wave.js.map +1 -1
- package/dist/harness/wave/launch-branches.d.ts +2 -2
- package/dist/harness/wave/launch-branches.js +147 -51
- package/dist/harness/wave/launch-branches.js.map +1 -1
- package/dist/harness/wave/parse-objectives.js +4 -1
- package/dist/harness/wave/parse-objectives.js.map +1 -1
- package/dist/harness/wave.d.ts +2 -2
- package/dist/harness/wave.js +89 -28
- package/dist/harness/wave.js.map +1 -1
- package/dist/isolation/index.d.ts +4 -0
- package/dist/isolation/index.js +3 -0
- package/dist/isolation/index.js.map +1 -0
- package/dist/isolation/resolve.d.ts +39 -0
- package/dist/isolation/resolve.js +118 -0
- package/dist/isolation/resolve.js.map +1 -0
- package/dist/isolation/run-scope.d.ts +21 -0
- package/dist/isolation/run-scope.js +50 -0
- package/dist/isolation/run-scope.js.map +1 -0
- package/dist/json.js +10 -8
- package/dist/json.js.map +1 -1
- package/dist/loops/health.d.ts +4 -2
- package/dist/loops/health.js +73 -25
- package/dist/loops/health.js.map +1 -1
- package/dist/loops/list.d.ts +2 -2
- package/dist/loops/list.js +6 -6
- package/dist/loops/list.js.map +1 -1
- package/dist/loops/policy.d.ts +6 -0
- package/dist/loops/policy.js +41 -0
- package/dist/loops/policy.js.map +1 -0
- package/dist/loops/render.d.ts +2 -1
- package/dist/loops/render.js +24 -11
- package/dist/loops/render.js.map +1 -1
- package/dist/loops/show.d.ts +2 -2
- package/dist/loops/show.js +13 -13
- package/dist/loops/show.js.map +1 -1
- package/dist/loops/watch.d.ts +7 -1
- package/dist/loops/watch.js +82 -16
- package/dist/loops/watch.js.map +1 -1
- package/dist/main.js +48 -11
- package/dist/main.js.map +1 -1
- package/dist/markdown.js +11 -11
- package/dist/markdown.js.map +1 -1
- package/dist/memory-render.js +5 -5
- package/dist/memory-render.js.map +1 -1
- package/dist/memory.d.ts +1 -2
- package/dist/memory.js +44 -40
- package/dist/memory.js.map +1 -1
- package/dist/pi-adapter.js +11 -11
- package/dist/pi-adapter.js.map +1 -1
- package/dist/profiles.d.ts +12 -0
- package/dist/profiles.js +71 -0
- package/dist/profiles.js.map +1 -0
- package/dist/registry/derive.js +10 -3
- package/dist/registry/derive.js.map +1 -1
- package/dist/registry/discover.d.ts +20 -0
- package/dist/registry/discover.js +98 -0
- package/dist/registry/discover.js.map +1 -0
- package/dist/registry/harness.js +8 -2
- package/dist/registry/harness.js.map +1 -1
- package/dist/registry/index.d.ts +4 -3
- package/dist/registry/index.js +3 -2
- package/dist/registry/index.js.map +1 -1
- package/dist/registry/read.js.map +1 -1
- package/dist/registry/rebuild.js +7 -4
- package/dist/registry/rebuild.js.map +1 -1
- package/dist/registry/types.d.ts +9 -0
- package/dist/registry/update.js +1 -1
- package/dist/registry/update.js.map +1 -1
- package/dist/tasks-render.d.ts +2 -0
- package/dist/tasks-render.js +44 -0
- package/dist/tasks-render.js.map +1 -0
- package/dist/tasks.d.ts +24 -0
- package/dist/tasks.js +184 -0
- package/dist/tasks.js.map +1 -0
- package/dist/testing/mock-backend.js +2 -2
- package/dist/testing/mock-backend.js.map +1 -1
- package/dist/topology.d.ts +6 -0
- package/dist/topology.js +129 -8
- package/dist/topology.js.map +1 -1
- package/dist/usage.d.ts +1 -0
- package/dist/usage.js +56 -11
- package/dist/usage.js.map +1 -1
- package/dist/utils.d.ts +6 -0
- package/dist/utils.js +272 -2
- package/dist/utils.js.map +1 -1
- package/dist/worktree/clean.d.ts +12 -0
- package/dist/worktree/clean.js +98 -0
- package/dist/worktree/clean.js.map +1 -0
- package/dist/worktree/create.d.ts +14 -0
- package/dist/worktree/create.js +71 -0
- package/dist/worktree/create.js.map +1 -0
- package/dist/worktree/index.d.ts +10 -0
- package/dist/worktree/index.js +6 -0
- package/dist/worktree/index.js.map +1 -0
- package/dist/worktree/list.d.ts +9 -0
- package/dist/worktree/list.js +24 -0
- package/dist/worktree/list.js.map +1 -0
- package/dist/worktree/merge.d.ts +11 -0
- package/dist/worktree/merge.js +129 -0
- package/dist/worktree/merge.js.map +1 -0
- package/dist/worktree/meta.d.ts +17 -0
- package/dist/worktree/meta.js +34 -0
- package/dist/worktree/meta.js.map +1 -0
- package/package.json +24 -4
- package/presets/autocode/README.md +1 -1
- package/presets/autocode/autoloops.toml +9 -1
- package/presets/autocode/harness.md +12 -5
- package/presets/autocode/roles/build.md +5 -4
- package/presets/autocode/roles/critic.md +2 -2
- package/presets/autocode/roles/finalizer.md +2 -2
- package/presets/autocode/roles/planner.md +7 -7
- package/presets/autodoc/README.md +1 -1
- package/presets/autodoc/autoloops.toml +1 -1
- package/presets/autodoc/harness.md +6 -6
- package/presets/autodoc/roles/auditor.md +3 -3
- package/presets/autodoc/roles/checker.md +2 -2
- package/presets/autodoc/roles/publisher.md +3 -3
- package/presets/autodoc/roles/writer.md +4 -4
- package/presets/autofix/README.md +1 -1
- package/presets/autofix/autoloops.toml +5 -2
- package/presets/autofix/harness.md +8 -7
- package/presets/autofix/roles/closer.md +4 -4
- package/presets/autofix/roles/diagnoser.md +6 -5
- package/presets/autofix/roles/fixer.md +4 -4
- package/presets/autofix/roles/verifier.md +2 -2
- package/presets/autoideas/README.md +1 -1
- package/presets/autoideas/autoloops.toml +1 -1
- package/presets/autoideas/harness.md +11 -11
- package/presets/autoideas/roles/analyst.md +4 -4
- package/presets/autoideas/roles/reviewer.md +3 -3
- package/presets/autoideas/roles/scanner.md +3 -3
- package/presets/autoideas/roles/synthesizer.md +20 -7
- package/presets/automerge/README.md +3 -0
- package/presets/automerge/autoloops.toml +12 -0
- package/presets/automerge/harness.md +10 -0
- package/presets/automerge/miniloops.toml +12 -0
- package/presets/automerge/roles/merge.md +10 -0
- package/presets/automerge/topology.toml +10 -0
- package/presets/autoperf/README.md +1 -1
- package/presets/autoperf/autoloops.toml +1 -1
- package/presets/autoperf/harness.md +5 -5
- package/presets/autoperf/roles/judge.md +3 -3
- package/presets/autoperf/roles/measurer.md +4 -4
- package/presets/autoperf/roles/optimizer.md +4 -4
- package/presets/autoperf/roles/profiler.md +4 -4
- package/presets/autopr/README.md +99 -0
- package/presets/autopr/autoloops.toml +22 -0
- package/presets/autopr/harness.md +27 -0
- package/presets/autopr/miniloops.toml +22 -0
- package/presets/autopr/roles/collector.md +55 -0
- package/presets/autopr/roles/drafter.md +38 -0
- package/presets/autopr/roles/publisher.md +28 -0
- package/presets/autopr/roles/validator.md +31 -0
- package/presets/autopr/topology.toml +32 -0
- package/presets/autoqa/README.md +1 -1
- package/presets/autoqa/autoloops.toml +1 -1
- package/presets/autoqa/harness.md +10 -10
- package/presets/autoqa/roles/executor.md +3 -3
- package/presets/autoqa/roles/inspector.md +2 -2
- package/presets/autoqa/roles/planner.md +6 -6
- package/presets/autoqa/roles/reporter.md +9 -9
- package/presets/autoresearch/README.md +1 -1
- package/presets/autoresearch/autoloops.toml +1 -1
- package/presets/autoresearch/harness.md +5 -5
- package/presets/autoresearch/roles/benchmarker.md +3 -3
- package/presets/autoresearch/roles/evaluator.md +5 -5
- package/presets/autoresearch/roles/implementer.md +4 -4
- package/presets/autoresearch/roles/strategist.md +6 -6
- package/presets/autoreview/README.md +1 -1
- package/presets/autoreview/autoloops.toml +1 -1
- package/presets/autoreview/harness.md +5 -5
- package/presets/autoreview/roles/checker.md +4 -4
- package/presets/autoreview/roles/reader.md +5 -5
- package/presets/autoreview/roles/suggester.md +4 -4
- package/presets/autoreview/roles/summarizer.md +4 -4
- package/presets/autosec/README.md +1 -1
- package/presets/autosec/autoloops.toml +1 -1
- package/presets/autosec/harness.md +5 -5
- package/presets/autosec/roles/analyst.md +4 -4
- package/presets/autosec/roles/hardener.md +2 -2
- package/presets/autosec/roles/reporter.md +4 -4
- package/presets/autosec/roles/scanner.md +3 -3
- package/presets/autosimplify/README.md +1 -1
- package/presets/autosimplify/autoloops.toml +7 -3
- package/presets/autosimplify/harness.md +7 -7
- package/presets/autosimplify/roles/reviewer.md +3 -3
- package/presets/autosimplify/roles/scoper.md +7 -7
- package/presets/autosimplify/roles/simplifier.md +4 -4
- package/presets/autosimplify/roles/verifier.md +3 -3
- package/presets/autospec/README.md +1 -1
- package/presets/autospec/autoloops.toml +1 -1
- package/presets/autospec/harness.md +6 -6
- package/presets/autospec/roles/clarifier.md +4 -3
- package/presets/autospec/roles/critic.md +1 -1
- package/presets/autospec/roles/designer.md +3 -3
- package/presets/autospec/roles/planner.md +2 -2
- package/presets/autospec/roles/researcher.md +3 -3
- package/presets/autotest/README.md +1 -1
- package/presets/autotest/autoloops.toml +1 -1
- package/presets/autotest/harness.md +6 -6
- package/presets/autotest/roles/assessor.md +3 -3
- package/presets/autotest/roles/runner.md +2 -2
- package/presets/autotest/roles/surveyor.md +4 -4
- package/presets/autotest/roles/writer.md +4 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# AutoSpec miniloop
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Use when you have a rough idea and need a structured RFC and implementation task plan.
|
|
4
4
|
|
|
5
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
6
|
|
|
@@ -4,7 +4,7 @@ event_loop.completion_promise = "LOOP_COMPLETE"
|
|
|
4
4
|
event_loop.required_events = ["research.ready", "design.ready", "spec.ready"]
|
|
5
5
|
|
|
6
6
|
backend.kind = "command"
|
|
7
|
-
backend.command = "
|
|
7
|
+
backend.command = "claude"
|
|
8
8
|
backend.timeout_ms = 3000000
|
|
9
9
|
# For deterministic local harness testing only:
|
|
10
10
|
# backend.kind = "command"
|
|
@@ -3,21 +3,21 @@ This is a autoloops-native specification loop.
|
|
|
3
3
|
The loop turns a rough idea into durable planning artifacts that a later implementation loop can execute.
|
|
4
4
|
|
|
5
5
|
Global rules:
|
|
6
|
-
- Shared working files are the source of truth:
|
|
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
7
|
- The goal is durable artifacts, not endless discussion.
|
|
8
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
|
|
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
10
|
- Prefer the smallest artifact set that fully captures the decision. Keep intermediate files concise.
|
|
11
11
|
- Use the event tool instead of prose-only handoffs.
|
|
12
12
|
- Fresh context every iteration: re-read the shared working files and relevant source material before acting.
|
|
13
13
|
- Do not implement product code. This loop writes and revises planning/specification artifacts only.
|
|
14
14
|
- If the prompt points at an existing file or directory, use that as source material instead of treating it like plain prose.
|
|
15
15
|
- Missing evidence means no completion. If something is unresolved, say so explicitly.
|
|
16
|
-
- Use
|
|
16
|
+
- Use `{{TOOL_PATH}} memory add learning ...` for durable learnings.
|
|
17
17
|
- Do not invent extra phases. Stay inside clarifier → researcher → designer → planner → critic.
|
|
18
18
|
- Only the critic may emit `task.complete`.
|
|
19
19
|
|
|
20
20
|
State files:
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
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,6 +1,7 @@
|
|
|
1
1
|
You are the clarifier.
|
|
2
2
|
|
|
3
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`).
|
|
4
5
|
|
|
5
6
|
Your job:
|
|
6
7
|
1. Normalize the request into a concrete specification brief.
|
|
@@ -8,12 +9,12 @@ Your job:
|
|
|
8
9
|
3. Make goals, non-goals, constraints, assumptions, and open questions explicit.
|
|
9
10
|
|
|
10
11
|
On every activation:
|
|
11
|
-
- Read
|
|
12
|
+
- Read `{{STATE_DIR}}/spec-brief.md`, `{{STATE_DIR}}/spec-research.md`, and `{{STATE_DIR}}/progress.md` if they exist.
|
|
12
13
|
- If the objective text points at a local file or directory, read it.
|
|
13
14
|
- Re-read the latest scratchpad/journal context before deciding.
|
|
14
15
|
|
|
15
16
|
On first activation or after `brief.revise`:
|
|
16
|
-
- Create or refresh
|
|
17
|
+
- Create or refresh `{{STATE_DIR}}/spec-brief.md` with:
|
|
17
18
|
- Objective
|
|
18
19
|
- Source Material
|
|
19
20
|
- Proposed Title
|
|
@@ -28,7 +29,7 @@ On first activation or after `brief.revise`:
|
|
|
28
29
|
- Design: `docs/rfcs/<slug>.md`
|
|
29
30
|
- Task: `.agents/tasks/<project-name>/<slug>.code-task.md`
|
|
30
31
|
- If the repo appears to have a stronger existing planning convention, note that as a hypothesis for the researcher to confirm.
|
|
31
|
-
- Update
|
|
32
|
+
- Update `{{STATE_DIR}}/progress.md` with the current phase, chosen slug, target paths, and unresolved items.
|
|
32
33
|
- Emit `brief.ready` with the title, slug, output paths, and the top risks.
|
|
33
34
|
|
|
34
35
|
Rules:
|
|
@@ -10,7 +10,7 @@ Your job:
|
|
|
10
10
|
3. Allow completion only when the pair is aligned, durable, and actionable.
|
|
11
11
|
|
|
12
12
|
On every activation:
|
|
13
|
-
- Read
|
|
13
|
+
- Read `{{STATE_DIR}}/spec-brief.md`, `{{STATE_DIR}}/spec-research.md`, and `{{STATE_DIR}}/progress.md`.
|
|
14
14
|
- Read the design doc and the code task at their chosen paths.
|
|
15
15
|
- Re-read the latest scratchpad/journal context before deciding.
|
|
16
16
|
|
|
@@ -8,7 +8,7 @@ Your job:
|
|
|
8
8
|
3. Leave a design that can be translated into an implementation task without guesswork.
|
|
9
9
|
|
|
10
10
|
On every activation:
|
|
11
|
-
- Read
|
|
11
|
+
- Read `{{STATE_DIR}}/spec-brief.md`, `{{STATE_DIR}}/spec-research.md`, and `{{STATE_DIR}}/progress.md`.
|
|
12
12
|
- Read the current design doc if it already exists.
|
|
13
13
|
- Re-read the latest scratchpad/journal context before deciding.
|
|
14
14
|
|
|
@@ -27,11 +27,11 @@ Process:
|
|
|
27
27
|
- `## Implementation Notes`
|
|
28
28
|
3. In `## Implementation Notes`, include the exact cross-link line:
|
|
29
29
|
- `Code task: \`<task path>\``
|
|
30
|
-
4. Update
|
|
30
|
+
4. Update `{{STATE_DIR}}/progress.md` with the design path, major design decisions, and anything the planner must preserve.
|
|
31
31
|
5. Emit `design.ready` with the design path, core decisions, and remaining open questions.
|
|
32
32
|
|
|
33
33
|
Rules:
|
|
34
34
|
- Prefer a lightweight RFC over a bloated process document.
|
|
35
35
|
- Explain tradeoffs and boundaries, not just a restatement of requirements.
|
|
36
|
-
- Keep terminology, names, and paths consistent with
|
|
36
|
+
- Keep terminology, names, and paths consistent with `{{STATE_DIR}}/spec-brief.md`.
|
|
37
37
|
- If something remains unresolved, make it explicit in `## Open Questions` instead of pretending it is settled.
|
|
@@ -8,7 +8,7 @@ Your job:
|
|
|
8
8
|
3. Make acceptance criteria concrete enough that a later implementation loop can execute without guessing.
|
|
9
9
|
|
|
10
10
|
On every activation:
|
|
11
|
-
- Read
|
|
11
|
+
- Read `{{STATE_DIR}}/spec-brief.md`, `{{STATE_DIR}}/spec-research.md`, and `{{STATE_DIR}}/progress.md`.
|
|
12
12
|
- Read the design doc and the current code task if they exist.
|
|
13
13
|
- Re-read the latest scratchpad/journal context before deciding.
|
|
14
14
|
|
|
@@ -28,7 +28,7 @@ Process:
|
|
|
28
28
|
4. Include the design doc in `Reference Documentation` using a path entry such as:
|
|
29
29
|
- `- Design: <design path>`
|
|
30
30
|
5. Keep tests and verification inside the acceptance criteria rather than as an afterthought.
|
|
31
|
-
6. Update
|
|
31
|
+
6. Update `{{STATE_DIR}}/progress.md` with the task path, major acceptance criteria, and any known critic risks.
|
|
32
32
|
7. Emit `spec.ready` with both artifact paths and the task's key acceptance criteria.
|
|
33
33
|
|
|
34
34
|
Rules:
|
|
@@ -8,7 +8,7 @@ Your job:
|
|
|
8
8
|
3. Confirm the intended artifact paths and note any stronger local conventions.
|
|
9
9
|
|
|
10
10
|
On every activation:
|
|
11
|
-
- Read
|
|
11
|
+
- Read `{{STATE_DIR}}/spec-brief.md`, `{{STATE_DIR}}/spec-research.md`, and `{{STATE_DIR}}/progress.md`.
|
|
12
12
|
- Re-read the latest scratchpad/journal context before deciding.
|
|
13
13
|
|
|
14
14
|
Process:
|
|
@@ -17,13 +17,13 @@ Process:
|
|
|
17
17
|
- existing `.code-task.md` files or task conventions
|
|
18
18
|
- adjacent code, docs, tests, configs, or examples relevant to the idea
|
|
19
19
|
- related prior RFCs or implementation notes
|
|
20
|
-
2. Write or refresh
|
|
20
|
+
2. Write or refresh `{{STATE_DIR}}/spec-research.md` with:
|
|
21
21
|
- confirmed artifact path convention
|
|
22
22
|
- existing task/doc structure to match
|
|
23
23
|
- related files and why they matter
|
|
24
24
|
- alternatives or prior art discovered in the repo
|
|
25
25
|
- unanswered questions that still affect the design
|
|
26
|
-
3. Update
|
|
26
|
+
3. Update `{{STATE_DIR}}/progress.md` with the strongest references and remaining evidence gaps.
|
|
27
27
|
4. Emit `research.ready` with the confirmed paths, key references, and unresolved questions.
|
|
28
28
|
|
|
29
29
|
Rules:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# AutoTest miniloop
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Use when you need to create new tests or tighten an existing test suite for better coverage.
|
|
4
4
|
|
|
5
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
6
|
|
|
@@ -4,7 +4,7 @@ event_loop.completion_promise = "LOOP_COMPLETE"
|
|
|
4
4
|
event_loop.required_events = ["tests.passed"]
|
|
5
5
|
|
|
6
6
|
backend.kind = "command"
|
|
7
|
-
backend.command = "
|
|
7
|
+
backend.command = "claude"
|
|
8
8
|
backend.timeout_ms = 3000000
|
|
9
9
|
# For deterministic local harness testing only:
|
|
10
10
|
# backend.kind = "command"
|
|
@@ -3,7 +3,7 @@ This is a autoloops-native autotest loop that creates and tightens formal tests
|
|
|
3
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
4
|
|
|
5
5
|
Global rules:
|
|
6
|
-
- Shared working files are the source of truth:
|
|
6
|
+
- Shared working files are the source of truth: `{{STATE_DIR}}/test-plan.md`, `{{STATE_DIR}}/test-report.md`, `{{STATE_DIR}}/progress.md`.
|
|
7
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
8
|
- Use the event tool instead of prose-only handoffs.
|
|
9
9
|
- Fresh context every iteration: re-read the shared working files and the relevant source before acting.
|
|
@@ -11,11 +11,11 @@ Global rules:
|
|
|
11
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
12
|
- False passes are worse than false fails.
|
|
13
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
|
|
15
|
-
- Use
|
|
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
16
|
- Do not invent extra phases. Stay inside surveyor → writer → runner → assessor.
|
|
17
17
|
|
|
18
18
|
State files:
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
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.
|
|
@@ -8,13 +8,13 @@ Your job:
|
|
|
8
8
|
3. Decide whether to continue filling gaps or complete.
|
|
9
9
|
|
|
10
10
|
On every activation:
|
|
11
|
-
- Read
|
|
11
|
+
- Read `{{STATE_DIR}}/test-plan.md`, `{{STATE_DIR}}/test-report.md`, and `{{STATE_DIR}}/progress.md`.
|
|
12
12
|
- Start skeptical: assume the new tests are weak until proven otherwise.
|
|
13
13
|
|
|
14
14
|
Process:
|
|
15
15
|
1. Review the tests that were written — are they meaningful? Do they test real behavior?
|
|
16
16
|
2. Check the test results — did the planned gap actually run and pass? Any flaky signals?
|
|
17
|
-
3. Update
|
|
17
|
+
3. Update `{{STATE_DIR}}/test-report.md` with:
|
|
18
18
|
- Gap addressed
|
|
19
19
|
- Tests written (file, count)
|
|
20
20
|
- Pass/fail results
|
|
@@ -26,7 +26,7 @@ Process:
|
|
|
26
26
|
- If the tests are trivial, redundant, vacuous, skipped, ambiguous, or mostly implementation-detail assertions → emit `coverage.stale` with feedback for the surveyor to pick a better gap.
|
|
27
27
|
- If all planned gaps are addressed → emit `task.complete` with a summary and a remaining-gap ledger.
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
`{{STATE_DIR}}/test-report.md` format:
|
|
30
30
|
```
|
|
31
31
|
# Test Report
|
|
32
32
|
|
|
@@ -8,7 +8,7 @@ Your job:
|
|
|
8
8
|
3. Hand results to the assessor.
|
|
9
9
|
|
|
10
10
|
On every activation:
|
|
11
|
-
- Read
|
|
11
|
+
- Read `{{STATE_DIR}}/test-plan.md` and `{{STATE_DIR}}/progress.md` to know which tests were written.
|
|
12
12
|
|
|
13
13
|
Process:
|
|
14
14
|
1. Run the test suite (or the specific new tests if the framework supports targeted runs).
|
|
@@ -19,7 +19,7 @@ Process:
|
|
|
19
19
|
- which new test files were discovered or executed
|
|
20
20
|
- failure messages and stack traces for any failures
|
|
21
21
|
- coverage delta if a coverage tool is configured
|
|
22
|
-
3. Record results in
|
|
22
|
+
3. Record results in `{{STATE_DIR}}/progress.md`.
|
|
23
23
|
4. If all new tests pass and real tests actually ran → emit `tests.passed`.
|
|
24
24
|
5. If any new tests fail, zero tests ran, all tests were skipped, or discovery is ambiguous → emit `tests.failed` with failure details.
|
|
25
25
|
|
|
@@ -8,7 +8,7 @@ Your job:
|
|
|
8
8
|
3. Hand one gap at a time to the writer.
|
|
9
9
|
|
|
10
10
|
On every activation:
|
|
11
|
-
- Read
|
|
11
|
+
- Read `{{STATE_DIR}}/test-plan.md`, `{{STATE_DIR}}/test-report.md`, and `{{STATE_DIR}}/progress.md` if they exist.
|
|
12
12
|
- Re-read the latest scratchpad/journal context before deciding.
|
|
13
13
|
|
|
14
14
|
On first activation:
|
|
@@ -16,15 +16,15 @@ On first activation:
|
|
|
16
16
|
- Identify untested or under-tested modules, functions, and code paths.
|
|
17
17
|
- If a coverage tool is available (e.g., `coverage`, `nyc`, `cargo-tarpaulin`), run it to get a baseline.
|
|
18
18
|
- Create or refresh:
|
|
19
|
-
-
|
|
20
|
-
-
|
|
19
|
+
- `{{STATE_DIR}}/test-plan.md` — test framework, conventions, coverage baseline, prioritized list of gaps.
|
|
20
|
+
- `{{STATE_DIR}}/progress.md` — current phase, first gap to address.
|
|
21
21
|
- Emit `gaps.identified` with the first gap to fill.
|
|
22
22
|
|
|
23
23
|
On later activations (`coverage.improved` or `coverage.stale`):
|
|
24
24
|
- Re-read the shared working files.
|
|
25
25
|
- Update the gap list based on what has been addressed.
|
|
26
26
|
- If all high-priority gaps are filled or no more productive tests can be written, emit `task.complete` only with an explicit remaining-gap ledger.
|
|
27
|
-
- Otherwise, write the next gap into
|
|
27
|
+
- Otherwise, write the next gap into `{{STATE_DIR}}/progress.md` and emit `gaps.identified`.
|
|
28
28
|
|
|
29
29
|
For each proposed gap, record:
|
|
30
30
|
- exact file/function/branch
|
|
@@ -7,7 +7,7 @@ Your job:
|
|
|
7
7
|
2. Follow the repo's existing test conventions and framework.
|
|
8
8
|
|
|
9
9
|
On every activation:
|
|
10
|
-
- Read
|
|
10
|
+
- Read `{{STATE_DIR}}/test-plan.md`, `{{STATE_DIR}}/test-report.md`, and `{{STATE_DIR}}/progress.md`.
|
|
11
11
|
- Understand exactly which gap you are addressing and what the test conventions are.
|
|
12
12
|
|
|
13
13
|
Process:
|
|
@@ -17,16 +17,16 @@ Process:
|
|
|
17
17
|
- Test error/edge cases mentioned by the surveyor.
|
|
18
18
|
- Test boundary conditions.
|
|
19
19
|
3. Place test files in the repo's conventional test location, matching naming conventions.
|
|
20
|
-
4. Update
|
|
20
|
+
4. Update `{{STATE_DIR}}/progress.md` with what was written.
|
|
21
21
|
5. Emit `tests.written` with a summary of tests added.
|
|
22
22
|
|
|
23
23
|
On `tests.failed` reactivation:
|
|
24
|
-
- Read the failure output from
|
|
24
|
+
- Read the failure output from `{{STATE_DIR}}/progress.md`.
|
|
25
25
|
- Fix the failing tests — do not delete them unless the test logic is wrong (not just the code under test).
|
|
26
26
|
- Emit `tests.written` again.
|
|
27
27
|
|
|
28
28
|
On `write.blocked`:
|
|
29
|
-
- If you cannot write meaningful tests for this gap, explain why in
|
|
29
|
+
- If you cannot write meaningful tests for this gap, explain why in `{{STATE_DIR}}/progress.md`.
|
|
30
30
|
- Emit `write.blocked` so the surveyor can pick a different gap.
|
|
31
31
|
|
|
32
32
|
Rules:
|