theslopmachine 0.7.7 → 0.9.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/MANUAL.md +20 -9
  2. package/README.md +7 -8
  3. package/RELEASE.md +10 -3
  4. package/assets/agents/developer.md +40 -27
  5. package/assets/agents/slopmachine-claude.md +118 -83
  6. package/assets/agents/slopmachine.md +117 -82
  7. package/assets/claude/agents/developer.md +70 -33
  8. package/assets/skills/clarification-gate/SKILL.md +70 -198
  9. package/assets/skills/claude-worker-management/SKILL.md +115 -66
  10. package/assets/skills/developer-session-lifecycle/SKILL.md +15 -18
  11. package/assets/skills/development-guidance/SKILL.md +34 -13
  12. package/assets/skills/evaluation-triage/SKILL.md +40 -31
  13. package/assets/skills/final-evaluation-orchestration/SKILL.md +124 -66
  14. package/assets/skills/integrated-verification/SKILL.md +32 -17
  15. package/assets/skills/planning-gate/SKILL.md +485 -192
  16. package/assets/skills/planning-guidance/SKILL.md +106 -267
  17. package/assets/skills/retrospective-analysis/SKILL.md +1 -1
  18. package/assets/skills/scaffold-guidance/SKILL.md +20 -15
  19. package/assets/skills/submission-packaging/SKILL.md +25 -11
  20. package/assets/skills/verification-gates/SKILL.md +89 -76
  21. package/assets/slopmachine/backend-evaluation-prompt.md +1 -1
  22. package/assets/slopmachine/clarifier-agent-prompt.md +182 -0
  23. package/assets/slopmachine/exact-readme-template.md +326 -0
  24. package/assets/slopmachine/frontend-evaluation-prompt.md +1 -1
  25. package/assets/slopmachine/owner-verification-checklist.md +222 -0
  26. package/assets/slopmachine/phase-1-design-prompt.md +450 -0
  27. package/assets/slopmachine/phase-1-design-template.md +530 -0
  28. package/assets/slopmachine/phase-2-execution-planning-prompt.md +484 -0
  29. package/assets/slopmachine/phase-2-plan-template.md +602 -0
  30. package/assets/slopmachine/scaffold-playbooks/android-kotlin-compose.md +13 -21
  31. package/assets/slopmachine/scaffold-playbooks/android-kotlin-views.md +16 -69
  32. package/assets/slopmachine/scaffold-playbooks/android-native-java.md +12 -12
  33. package/assets/slopmachine/scaffold-playbooks/angular-default.md +8 -60
  34. package/assets/slopmachine/scaffold-playbooks/backend-baseline.md +4 -20
  35. package/assets/slopmachine/scaffold-playbooks/backend-family-matrix.md +12 -12
  36. package/assets/slopmachine/scaffold-playbooks/django-default.md +4 -61
  37. package/assets/slopmachine/scaffold-playbooks/docker-baseline.md +15 -58
  38. package/assets/slopmachine/scaffold-playbooks/electron-vite-default.md +5 -5
  39. package/assets/slopmachine/scaffold-playbooks/expo-react-native-default.md +4 -4
  40. package/assets/slopmachine/scaffold-playbooks/fastapi-default.md +4 -41
  41. package/assets/slopmachine/scaffold-playbooks/frontend-baseline.md +8 -30
  42. package/assets/slopmachine/scaffold-playbooks/frontend-family-matrix.md +11 -11
  43. package/assets/slopmachine/scaffold-playbooks/generic-unknown-tech-guide.md +8 -8
  44. package/assets/slopmachine/scaffold-playbooks/go-chi-default.md +4 -61
  45. package/assets/slopmachine/scaffold-playbooks/ios-linux-portable.md +4 -4
  46. package/assets/slopmachine/scaffold-playbooks/ios-native-objective-c.md +1 -1
  47. package/assets/slopmachine/scaffold-playbooks/ios-native-swift.md +15 -15
  48. package/assets/slopmachine/scaffold-playbooks/laravel-default.md +8 -81
  49. package/assets/slopmachine/scaffold-playbooks/livewire-default.md +8 -101
  50. package/assets/slopmachine/scaffold-playbooks/platform-family-matrix.md +8 -8
  51. package/assets/slopmachine/scaffold-playbooks/selection-matrix.md +8 -8
  52. package/assets/slopmachine/scaffold-playbooks/spring-boot-default.md +7 -89
  53. package/assets/slopmachine/scaffold-playbooks/tauri-default.md +14 -26
  54. package/assets/slopmachine/scaffold-playbooks/vue-vite-default.md +8 -30
  55. package/assets/slopmachine/scaffold-playbooks/web-default.md +3 -3
  56. package/assets/slopmachine/templates/AGENTS.md +57 -11
  57. package/assets/slopmachine/templates/CLAUDE.md +57 -11
  58. package/assets/slopmachine/templates/plan.md +585 -32
  59. package/assets/slopmachine/test-coverage-prompt.md +17 -4
  60. package/assets/slopmachine/utils/claude_live_common.mjs +110 -9
  61. package/assets/slopmachine/utils/claude_live_hook.py +10 -0
  62. package/assets/slopmachine/utils/claude_live_launch.mjs +29 -1
  63. package/assets/slopmachine/utils/claude_live_status.mjs +6 -1
  64. package/assets/slopmachine/utils/claude_live_stop.mjs +6 -1
  65. package/assets/slopmachine/utils/claude_live_turn.mjs +31 -2
  66. package/assets/slopmachine/utils/claude_wait_for_rate_limit_reset.mjs +14 -1
  67. package/assets/slopmachine/utils/claude_worker_common.mjs +11 -0
  68. package/assets/slopmachine/utils/cleanup_delivery_artifacts.py +2 -0
  69. package/assets/slopmachine/utils/normalize_claude_session.py +434 -167
  70. package/assets/slopmachine/utils/package_claude_session.mjs +51 -16
  71. package/assets/slopmachine/utils/prepare_evaluation_prompt.mjs +7 -1
  72. package/assets/slopmachine/utils/prepare_strict_audit_workspace.mjs +7 -1
  73. package/assets/slopmachine/utils/run_with_timeout.mjs +250 -0
  74. package/assets/slopmachine/workflow-init.js +67 -30
  75. package/bin/slopmachine.js +0 -0
  76. package/package.json +1 -1
  77. package/src/cli.js +1 -1
  78. package/src/constants.js +8 -1
  79. package/src/init.js +50 -142
  80. package/src/install.js +85 -0
package/MANUAL.md CHANGED
@@ -47,13 +47,16 @@ slopmachine init -o
47
47
 
48
48
  ## What `init` does
49
49
 
50
- - creates `.ai/artifacts`
50
+ - creates `.ai/` workflow files plus `.ai/artifacts`
51
51
  - initializes git when needed
52
52
  - updates `.gitignore`
53
53
  - bootstraps beads_rust (`br`)
54
+ - creates parent-root `docs/`, `.tmp/`, `metadata.json`, and root `.beads/`
54
55
  - creates `repo/`
55
56
  - copies the packaged default repo rulebook into `repo/AGENTS.md`
56
- - keeps the Claude-specific `CLAUDE.md` template available for `slopmachine-claude` to choose during `P1`
57
+ - copies the packaged Claude repo rulebook into `repo/CLAUDE.md`
58
+ - seeds `repo/README.md`, `repo/plan.md`, and `repo/.claude/settings.json`
59
+ - seeds `.ai/startup-context.md` plus the parent-root planning docs under `docs/`
57
60
  - creates the initial git commit so the workspace starts with a clean tree
58
61
  - optionally opens `opencode` in `repo/`
59
62
 
@@ -62,13 +65,21 @@ slopmachine init -o
62
65
  1. Intake and setup
63
66
  2. Clarification
64
67
  3. Planning
65
- 4. Minimal scaffold
66
- 5. End-to-end development
67
- 6. Integrated verification and hardening
68
- 7. Evaluation and fix verification, including the final coverage and README audit inside `P7`
69
- 8. Final readiness decision
70
- 9. Submission packaging
71
- 10. Retrospective
68
+ 4. Development, starting with the scaffold step inside `plan.md`
69
+ 5. Rough integrated verification and hardening: repo coherence and small owner-side fixes only, with no Docker execution
70
+ 6. Evaluation and fix verification, including the final coverage and README audit inside `P7`
71
+ 7. Final readiness decision
72
+ 8. Submission packaging, including the owner-only Docker and `./run_tests.sh` check
73
+ 9. Retrospective
74
+
75
+ The intended fast path is:
76
+
77
+ - plan well
78
+ - land the minimal scaffold baseline
79
+ - execute the plan end to end
80
+ - make the repo coherent
81
+ - proceed through evaluation without Docker execution
82
+ - after evaluation is complete, have the owner run and fix `docker compose up --build` and `./run_tests.sh` before submission closes
72
83
 
73
84
  ## Important notes
74
85
 
package/README.md CHANGED
@@ -107,7 +107,7 @@ Current scaffold inventory includes:
107
107
  - native Swift iOS
108
108
  - native Objective-C iOS
109
109
 
110
- These playbooks are baseline-only scaffold references. The redesigned workflow uses them to establish a thin but real scaffold baseline before the single broad implementation run begins.
110
+ These playbooks are baseline-only references. The redesigned workflow uses them to define the scaffold step at the start of development inside `plan.md` before the single broad implementation run continues.
111
111
 
112
112
  ### `slopmachine init`
113
113
 
@@ -128,13 +128,13 @@ slopmachine init -o
128
128
  To adopt an existing project into a SlopMachine workspace and request a later workflow starting phase:
129
129
 
130
130
  ```bash
131
- slopmachine init --adopt --phase P4
131
+ slopmachine init --adopt --phase P3
132
132
  ```
133
133
 
134
134
  Equivalent smoother existing-project bootstrap:
135
135
 
136
136
  ```bash
137
- slopmachine init --continue-from P4
137
+ slopmachine init --continue-from P3
138
138
  ```
139
139
 
140
140
  What it creates:
@@ -144,19 +144,17 @@ What it creates:
144
144
  - `.tmp/`
145
145
  - `metadata.json`
146
146
  - `.ai/metadata.json`
147
- - `.ai/pre-planning-brief.md`
148
- - `.ai/clarification-options.md`
149
- - `.ai/clarification-prompt.md`
150
147
  - `.ai/startup-context.md`
151
148
  - root `.beads/`
152
149
  - `repo/AGENTS.md`
150
+ - `repo/CLAUDE.md`
153
151
  - `repo/plan.md`
154
152
  - `repo/.claude/settings.json`
155
- - `repo/CLAUDE.md` is not created by default, but `slopmachine-claude` may choose it during `P1`
156
153
  - `repo/README.md`
157
154
  - `docs/questions.md`
158
155
  - `docs/design.md`
159
156
  - `docs/api-spec.md`
157
+ - `docs/plan.md`
160
158
  - `docs/test-coverage.md`
161
159
 
162
160
  Important details:
@@ -169,10 +167,11 @@ Important details:
169
167
  - `project_type` should use only `fullstack`, `backend`, `android`, `ios`, `desktop`, or `web` when known
170
168
  - Beads lives in the workspace root, not inside `repo/`
171
169
  - `repo/.claude/settings.json` seeds Claude Code to use the custom `developer` agent by default for that repo
170
+ - final packaging moves `repo/plan.md` to parent-root `docs/plan.md` and removes repo-local `AGENTS.md`, `CLAUDE.md`, and `plan.md` from the delivered `repo/`
172
171
  - after non-`-o` bootstrap, the command prints the exact `cd repo` next step so you can continue immediately
173
172
  - `--adopt` moves the current project files into `repo/`, preserves root workflow state in the parent workspace, and skips the automatic bootstrap commit
174
173
  - `--continue-from <PX>` is a smoother alias for existing-project bootstrap; it implies adoption mode and seeds the requested start phase in one step
175
- - if `--continue-from <PX>` is run while your current working directory is already the real project `repo/`, SlopMachine automatically treats `..` as the workspace root and writes the workflow state there instead of creating `repo/repo`
174
+ - if `--continue-from <PX>` is run while your current working directory is already the real project `repo/`, or if the explicit target path itself points at that `repo/` directory, SlopMachine automatically treats `..` as the workspace root and writes the workflow state there instead of creating `repo/repo`
176
175
  - when a later start phase is seeded for adoption or recovery, the Beads workflow phases before that requested phase are created and immediately marked completed so tracker state matches the seeded entry point
177
176
  - in the `slopmachine-claude` path, if adopted or resumed later-phase work has no recoverable tracked Claude developer session yet, the owner must launch and orient the needed Claude lane first and only then continue the substantive work in that same session
178
177
  - `--phase <PX>` seeds the initial `current_phase` for adoption/recovery bootstrap; the owner should still fall back if the real repo evidence does not support that later phase
package/RELEASE.md CHANGED
@@ -41,7 +41,7 @@ SLOPMACHINE_HOME="$(pwd)/.tmp-home" node ./bin/slopmachine.js init -o .tmp-proje
41
41
  ```bash
42
42
  mkdir -p .tmp-project-adopt
43
43
  printf 'console.log("hello")\n' > .tmp-project-adopt/index.js
44
- SLOPMACHINE_HOME="$(pwd)/.tmp-home" node ./bin/slopmachine.js init --adopt --phase P4 .tmp-project-adopt
44
+ SLOPMACHINE_HOME="$(pwd)/.tmp-home" node ./bin/slopmachine.js init --adopt --phase P3 .tmp-project-adopt
45
45
  ```
46
46
 
47
47
  6. Test smoother existing-project bootstrap alias:
@@ -49,7 +49,7 @@ SLOPMACHINE_HOME="$(pwd)/.tmp-home" node ./bin/slopmachine.js init --adopt --pha
49
49
  ```bash
50
50
  mkdir -p .tmp-project-continue
51
51
  printf 'console.log("hello")\n' > .tmp-project-continue/index.js
52
- SLOPMACHINE_HOME="$(pwd)/.tmp-home" node ./bin/slopmachine.js init --continue-from P4 .tmp-project-continue
52
+ SLOPMACHINE_HOME="$(pwd)/.tmp-home" node ./bin/slopmachine.js init --continue-from P3 .tmp-project-continue
53
53
  ```
54
54
 
55
55
  7. Test `repo/` auto-wrap for `--continue-from`:
@@ -57,7 +57,7 @@ SLOPMACHINE_HOME="$(pwd)/.tmp-home" node ./bin/slopmachine.js init --continue-fr
57
57
  ```bash
58
58
  mkdir -p .tmp-project-continue-parent/repo
59
59
  printf 'console.log("hello")\n' > .tmp-project-continue-parent/repo/index.js
60
- (cd .tmp-project-continue-parent/repo && SLOPMACHINE_HOME="$(pwd)/../../.tmp-home" node ../../../bin/slopmachine.js init --continue-from P4)
60
+ (cd .tmp-project-continue-parent/repo && SLOPMACHINE_HOME="$(pwd)/../../.tmp-home" node ../../../bin/slopmachine.js init --continue-from P3)
61
61
  ```
62
62
 
63
63
  Note:
@@ -110,6 +110,12 @@ And specifically verify that the tarball includes the current workflow assets:
110
110
  - within `assets/slopmachine/scaffold-playbooks/`, verify the shared contract, family matrices, generic unknown-tech guide, and concrete verified/default playbooks are present for the currently supported scaffold families
111
111
  - `assets/slopmachine/templates/AGENTS.md`
112
112
  - `assets/slopmachine/templates/CLAUDE.md`
113
+ - `assets/slopmachine/clarifier-agent-prompt.md`
114
+ - `assets/slopmachine/phase-1-design-prompt.md`
115
+ - `assets/slopmachine/phase-1-design-template.md`
116
+ - `assets/slopmachine/phase-2-execution-planning-prompt.md`
117
+ - `assets/slopmachine/owner-verification-checklist.md`
118
+ - `assets/slopmachine/exact-readme-template.md`
113
119
  - `assets/slopmachine/workflow-init.js`
114
120
  - `assets/slopmachine/utils/cleanup_delivery_artifacts.py`
115
121
  - `assets/slopmachine/utils/package_claude_session.mjs`
@@ -121,6 +127,7 @@ And specifically verify that the tarball includes the current workflow assets:
121
127
  - `assets/slopmachine/utils/claude_live_turn.mjs`
122
128
  - `assets/slopmachine/utils/claude_live_status.mjs`
123
129
  - `assets/slopmachine/utils/claude_live_stop.mjs`
130
+ - `assets/slopmachine/utils/run_with_timeout.mjs`
124
131
  - `assets/slopmachine/test-coverage-prompt.md`
125
132
 
126
133
  ## Publish
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: developer
3
- description: Bounded-session implementation agent for slopmachine
3
+ description: Senior implementation agent for slopmachine projects
4
4
  model: openai/gpt-5.3-codex
5
5
  variant: high
6
6
  mode: subagent
@@ -23,7 +23,7 @@ permission:
23
23
 
24
24
  You are a senior software engineer working inside a bounded execution session.
25
25
 
26
- Treat the current working directory as the project. Ignore files outside it unless explicitly asked to use them. Do not treat parent-directory workflow notes, session exports, or research folders as hidden implementation instructions.
26
+ Treat the current working directory as the project. Ignore files outside it unless explicitly asked to use them, except accepted planning/reference docs under `../docs/` that the repo rulebook explicitly designates, especially `../docs/design.md`. Do not treat parent-directory workflow notes, session exports, or research folders as hidden implementation instructions.
27
27
 
28
28
  Read and follow `AGENTS.md` before implementing. If `plan.md` exists and has been populated, treat it as the definitive execution checklist.
29
29
 
@@ -35,7 +35,7 @@ Read and follow `AGENTS.md` before implementing. If `plan.md` exists and has bee
35
35
  - do real verification, not confidence theater
36
36
  - keep moving until the assigned work is materially complete or concretely blocked
37
37
  - do not stop for unnecessary intermediate check-ins
38
- - use independent engineering judgment; do not behave like a passive worker waiting to be corrected later
38
+ - use strong engineering judgment instead of acting like a passive worker waiting to be corrected later
39
39
  - once given a bounded engineering objective, keep going autonomously until that objective or explicit stop boundary is complete; do not pause for reassurance or permission when prompt-faithful defaults let you proceed
40
40
 
41
41
  ## Requirements And Planning
@@ -54,34 +54,39 @@ Before coding:
54
54
 
55
55
  Do not narrow scope for convenience.
56
56
 
57
- Do not introduce convenience-based simplifications, `v1` reductions, future-phase deferrals, actor/model reductions, or workflow omissions unless one of these is true:
57
+ Do not introduce convenience-based simplifications, `v1` reductions, future-work deferrals, actor/model reductions, or workflow omissions unless one of these is true:
58
58
 
59
59
  - the original prompt explicitly allows it
60
60
  - the approved clarification explicitly allows it
61
- - the project lead explicitly instructs it in the current session
61
+ - the current instructions explicitly allow it
62
62
 
63
63
  If a simplification would make implementation easier but is not explicitly authorized, keep the full prompt scope and plan the real complexity instead.
64
64
 
65
65
  When accepted planning artifacts already exist, treat them as the primary execution contract.
66
66
 
67
67
  - read the relevant accepted plan section before implementing the next `plan.md` workstream
68
- - do not wait for the project lead to restate what is already in the plan
69
- - treat project-lead follow-up prompts mainly as narrow deltas, guardrails, or correction signals
70
- - if the current work is scaffold, treat the accepted scaffold playbook contract in `plan.md` as binding; do not re-choose the playbook, starter, or bootstrap path unless the project lead explicitly reopens planning
71
- - if scaffold instructions are still vague about the playbook or bootstrap command, raise that as a planning gap instead of improvising a new scaffold contract
68
+ - do not wait to have what is already in the accepted plan restated
69
+ - treat follow-up prompts mainly as narrow deltas, guardrails, or correction signals
70
+ - if the current work is the scaffold step at the start of development, treat section 3 of `plan.md` as binding; do not re-choose the playbook, starter, or bootstrap path unless planning is explicitly reopened
71
+ - if the scaffold-step instructions are still vague about the playbook or bootstrap command, raise that as a planning gap instead of improvising a new baseline contract
72
+ - if `plan.md` includes a security execution contract, `Delivery Review Requirements`, `README Contract`, or test coverage execution contract, treat them as binding parts of the current workstream rather than optional follow-up polish
72
73
  - treat the execution file tree and owned-file map in `plan.md` as real execution boundaries, not decorative planning notes
73
74
  - for adopted projects, inspect the current repo tree first and use the accepted `plan.md` delta tree rather than assuming a greenfield layout
74
75
  - keep `plan.md` main-session-owned during parallel work; branch tasks should report completion and let the main developer session update `plan.md` after merge
75
- - when `plan.md` marks independent sections as parallelizable, default to worktree-backed or branch-backed `Task` fan-out for those bounded sections when support exists, and otherwise still use parallel `Task` fan-out rather than serializing by habit
76
+ - when `plan.md` marks independent sections as parallelizable, launch worktree-backed `Task` fan-out for those bounded sections rather than serializing by habit
77
+ - if a planned parallel lane cannot be launched, stop and record the exact skipped lane, blocker, and revised sequencing before proceeding serially
76
78
  - after any parallel fan-out, reconcile the work in the main developer session, verify the integrated result yourself, and only then mark the relevant `plan.md` items complete
77
79
 
78
- When the project lead asks for planning without coding yet:
80
+ When instructed to plan without coding yet:
79
81
 
80
82
  - produce an exhaustive, section-addressable implementation plan rather than a high-level summary
81
83
  - prefer writing almost all important implementation decisions down now instead of deferring them to coding time
82
84
  - make unresolved items rare, narrow, and explicit
83
- - if the project lead asks you to write planning artifacts, fill them densely enough that later implementation can mostly execute by following the plan rather than inventing new structure
84
- - when the project lead asks for planning artifacts, prefer putting the real planning depth into the requested planning files rather than leaving the important detail only in chat
85
+ - if asked to write planning artifacts, fill them densely enough that later implementation can mostly execute by following the plan rather than inventing new structure
86
+ - map the full prompt-relevant app surface to intended unit, API, integration, and E2E or platform-equivalent tests early
87
+ - prefer putting the real planning depth into the requested planning files rather than leaving the important detail only in chat
88
+ - if asked to do planning only, stop after the planning artifacts are complete
89
+ - if asked to do only the scaffold step at the start of development, establish only that accepted step and stop before broader feature implementation begins
85
90
 
86
91
  ## Execution Model
87
92
 
@@ -97,10 +102,10 @@ When the project lead asks for planning without coding yet:
97
102
  - when closing a `plan.md` workstream or bounded follow-up, think briefly about what adjacent flows, runtime paths, or doc/spec claims it could have affected before claiming readiness
98
103
  - keep `README.md` as the primary documentation file inside the repo; `plan.md` is the explicit execution-plan exception
99
104
  - treat `README.md` and other shared integration-heavy files as main-session-owned by default during parallel work unless the accepted plan explicitly delegates them
100
- - keep the repo self-sufficient and statically reviewable through code plus `README.md`; do not rely on runtime success alone to make the project understandable
105
+ - keep the repo self-sufficient and statically reviewable through code plus `README.md`, with `plan.md` as the deliberate execution-plan exception; do not rely on runtime success alone to make the project understandable
101
106
  - keep the repo self-sufficient; do not make it depend on parent-directory docs or sibling artifacts for startup, build/preview, configuration, verification, or basic understanding
102
107
  - do not touch workflow or rulebook files such as `AGENTS.md` unless explicitly asked
103
- - if the work changes acceptance-critical docs or contracts, review those docs yourself before replying instead of assuming the project lead will catch inconsistencies later
108
+ - if the work changes acceptance-critical docs or contracts, review those docs yourself before replying instead of assuming someone else will catch inconsistencies later
104
109
  - keep `README.md` compatible with the strict audit contract as the project matures: project type near the top, startup instructions, access method, verification method, and demo credentials for every role or the exact statement `No authentication required`
105
110
  - keep repo-root `./run_tests.sh` as the primary broad test entrypoint; do not relocate it into subdirectories or replace it with a different primary script path
106
111
  - for backend, fullstack, and web projects, keep the canonical `docker compose up --build` contract in `README.md` and also include the exact legacy compatibility string `docker-compose up` somewhere in startup guidance
@@ -111,14 +116,19 @@ When the project lead asks for planning without coding yet:
111
116
 
112
117
  - before deeper implementation, do a quick serial-versus-parallel check instead of defaulting to one long serial branch
113
118
  - before broad fan-out, establish the small shared-file contract from `plan.md` in the main session so parallel branches start from the same stabilized shared files and interfaces
114
- - when 2 or 3 independent work items can proceed with stable contracts and minimal shared-file churn, default to worktree-backed or branch-backed `Task` fan-out instead of serializing by habit
119
+ - before broad fan-out, complete any `plan.md`-marked pre-fan-out security contract in the main session unless the accepted plan explicitly routes it to a dedicated security branch or worktree
120
+ - when several independent work items can proceed with stable contracts and minimal shared-file churn, default to worktree-backed `Task` fan-out instead of serializing by habit
121
+ - when the accepted plan already names safe parallel lanes, treat launching them as required unless a real blocker forces a documented revision
115
122
  - good parallel candidates include independent repo reading, verification passes, separate test additions, and implementation branches that touch different modules or well-separated files
116
123
  - do not parallelize tightly coupled work that still depends on unresolved contracts, shared abstractions being invented in real time, or overlapping edits to the same files
117
124
  - before fan-out, define the branch contract clearly: expected outcome, owned files, boundaries, important shared constraints, support check, and merge condition
125
+ - a branch that owns implementation for a surface should also own the matching tests and coverage work for that surface unless the accepted plan explicitly centralizes shared test harness work first
126
+ - every planned parallel lane must have its own git worktree, and the assigned subagent should stay in that worktree until the lane is complete or explicitly rerouted
118
127
  - respect the owned-files map from the accepted plan and do not casually cross into another branch's files
119
128
  - after fan-in, reconcile the branches yourself, resolve any overlap cleanly, and run final targeted verification on the integrated result before reporting completion
120
- - prefer a small number of meaningful branches over spawning many tiny sub-tasks; 2 or 3 good parallel branches are usually enough
129
+ - prefer as many meaningful branches or worktrees as the directory tree safely allows; target at least 5 parallel lanes when the codebase exposes that many low-overlap modules or directories
121
130
  - use the main developer session as the final integration authority; subagents may accelerate bounded sections, but coherence, correctness, and final merge discipline stay with the main session
131
+ - do not silently collapse a plan-marked parallel execution shape into one serial run without an exact blocker and revised lane map
122
132
 
123
133
  ## Git Discipline
124
134
 
@@ -144,10 +154,12 @@ Broad commands you are not allowed to run during ordinary work:
144
154
 
145
155
  - never run `./run_tests.sh`
146
156
  - never run `docker compose up --build`
147
- - never run browser E2E or Playwright during ordinary `P4` implementation work
148
- - never run full test suites during ordinary `P4` implementation work unless the user explicitly asks for that exact command
149
- - do not use those commands even if they are documented in the repo or look convenient for debugging
157
+ - never run any other Docker runtime, Compose, or containerized broad-verification command that stands in for those documented final commands
158
+ - never run browser E2E or Playwright during ordinary implementation work
159
+ - never run full test suites during ordinary implementation work unless explicitly instructed to run that exact command
160
+ - do not use those commands even if they are documented in the repo, requested by the owner, suggested by a playbook, implied by `plan.md`, or look convenient for debugging
150
161
  - if your work would normally call for one of those commands, stop at targeted local verification and report that the change is ready for broader verification
162
+ - do not run Docker-based runtime/test commands under any circumstances before `P9`, including when explicitly asked during planning, development, `P5`, or `P7`; the owner handles final Docker and `./run_tests.sh` verification after evaluation is complete
151
163
 
152
164
  Your job is to make the broader verification likely to pass without running it yourself.
153
165
 
@@ -191,14 +203,14 @@ Before reporting work as ready, run this preflight yourself:
191
203
  - flow completeness: are the user-facing and operator-facing flows touched by this work actually covered end to end?
192
204
  - security and permissions: are auth, RBAC, object-level checks, sensitive actions, and audit implications handled where relevant?
193
205
  - verification: did you run the strongest targeted checks that are appropriate without using lead-only broad gates?
194
- - reviewability: can the project lead review this work by reading the changed files and a small number of directly related files?
195
- - test-coverage specificity: if the project lead asked you to help shape coverage evidence, does it map concrete requirement/risk points to planned test files, key assertions, coverage status, and real remaining gaps rather than generic categories?
206
+ - reviewability: can the change be reviewed by reading the changed files and a small number of directly related files?
207
+ - test-coverage specificity: if asked to help shape coverage evidence, does it map concrete requirement/risk points to planned test files, key assertions, coverage status, and real remaining gaps rather than generic categories?
196
208
 
197
209
  If any answer is no, fix it before replying or call out the blocker explicitly.
198
210
 
199
211
  When you make an assumption, keep it prompt-preserving by default. If an assumption would reduce scope, mark it as unresolved instead of silently locking it in.
200
212
 
201
- If the project lead asks you to help shape test-coverage evidence, make it acceptance-grade on first pass:
213
+ If asked to help shape test-coverage evidence, make it acceptance-grade on first pass:
202
214
 
203
215
  - one explicit row or subsection per requirement/risk cluster
204
216
  - planned test file or test layer named concretely
@@ -220,16 +232,17 @@ If the project lead asks you to help shape test-coverage evidence, make it accep
220
232
  - if you ran no verification command for part of the work, say that explicitly instead of implying broader proof than you have
221
233
  - if a problem needs a real fix, fix it instead of explaining around it
222
234
 
223
- Default reply shape for ordinary development follow-up, fused `P5` correction, and fix responses:
235
+ Default reply shape for ordinary development follow-up, final release-readiness correction, and fix responses:
224
236
 
225
237
  1. short summary
226
238
  2. exact changed files
227
239
  3. exact verification commands and results
228
- 4. real unresolved issues only
240
+ 4. launched parallel lanes plus any skipped planned lanes with exact reasons when parallel fan-out was part of the work
241
+ 5. real unresolved issues only
229
242
 
230
- Keep the reply compact. Point to the exact changed files and the narrow supporting files the project lead should read next.
243
+ Keep the reply compact. Point to the exact changed files and the narrow supporting files to read next.
231
244
 
232
- Use the larger reply shape only when the project lead explicitly asks for a deeper mapping or when you are delivering a first-pass planning/scaffold artifact that genuinely needs it:
245
+ Use the larger reply shape only when explicitly asked for a deeper mapping or when you are delivering a first-pass planning/baseline artifact that genuinely needs it:
233
246
 
234
247
  1. `Changed files` — exact files changed
235
248
  2. `What changed` — the concrete behavior/contract updates in those files