@nanobpm/nano-workforce 0.171.4 → 0.171.5

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/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## [0.171.5](https://github.com/nanobpm/nano-workforce/compare/v0.171.4...v0.171.5) (2026-09-01)
2
+
3
+ ### Performance Improvements
4
+
5
+ * **agents:** warm the build cache once, then build module-scoped — never a cold `-am` reactor build ([#682](https://github.com/nanobpm/nano-workforce/issues/682)) ([338057b](https://github.com/nanobpm/nano-workforce/commit/338057b7f65cbf4e61cf4d74efaa596b3422532b)), closes [#681](https://github.com/nanobpm/nano-workforce/issues/681)
6
+
1
7
  ## [0.171.4](https://github.com/nanobpm/nano-workforce/compare/v0.171.3...v0.171.4) (2026-09-01)
2
8
 
3
9
  ### Bug Fixes
@@ -154,6 +154,30 @@ Track a plan the same way you track PRs — its `process_key` is an engine insta
154
154
  can inspect in §5, and the PRs it opens show up in `/status` as ordinary convergence
155
155
  loops.
156
156
 
157
+ ### Build hygiene — implementation agents warm up once, then build module-scoped
158
+
159
+ Implementation and CI-fix agents run on **stateless / ephemeral workers**: the
160
+ workspace, including its build outputs, is thrown away between runs, so each worker pays any
161
+ cold whole-reactor build tax independently. To keep iterations fast, the implementation
162
+ prompts (`resources/prompts/feature.md`, `resources/prompts/fix-ci.md`) instruct every
163
+ agent to, **before iterating on a build in the target repo**:
164
+
165
+ 1. **Read the target repo's own `AGENTS.md` / `CONTRIBUTING.md` build section** — the
166
+ recipe is authored there, never duplicated into nano-workforce (a per-repo copy here
167
+ would rot as the target's build changes).
168
+ 2. **Run the prescribed dependency warm-up once**, right after checkout. For a Maven
169
+ monorepo that ships the fast path (e.g. camunda), that is
170
+ `./mvnw install -Dquickly -T1C` — it installs every reactor SNAPSHOT into `~/.m2`.
171
+ 3. **Then build only the changed module, offline, without `-am`** —
172
+ `./mvnw -Dquickly -o -pl <module> <goals>`. Never run a cold `-am` reactor build per
173
+ iteration.
174
+
175
+ The repo-agnostic infra levers behind this — a host-persisted `~/.m2` and a shared
176
+ remote Maven build cache for JVM-capable worker hosts — live in worker-host config, not
177
+ in per-repo files here. The retro loop (`resources/prompts/retro.md`) promotes any
178
+ durable "warm the cache, then build module-scoped" lesson into the *target repo's*
179
+ `AGENTS.md`, keeping each target's recipe sharp without nano-workforce owning it.
180
+
157
181
  ---
158
182
 
159
183
  ## 3. Answer escalations (unblock a human-in-the-loop wait)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nanobpm/nano-workforce",
3
- "version": "0.171.4",
3
+ "version": "0.171.5",
4
4
  "description": "Nano Workforce — an Agent Graph Orchestration application for Agentic SDLC: durable BPMN processes that coordinate a graph of AI agents across the software delivery lifecycle.",
5
5
  "type": "module",
6
6
  "main": "main.ts",
@@ -91,6 +91,28 @@ against the wrong base will not be merged into the epic.
91
91
  pointing at an issue).
92
92
  5. Clean up any scratch clone/worktree you created outside the commit.
93
93
 
94
+ ## Build hygiene — warm up once, then build module-scoped; never a cold `-am` reactor build
95
+
96
+ Before you iterate on a build in the target repo,
97
+ **read its `AGENTS.md` / `CONTRIBUTING.md` build section** and run the prescribed
98
+ **dependency warm-up exactly once** right after checkout, then scope every
99
+ subsequent build to the module you changed. Do **not** run a cold whole-reactor /
100
+ all-modules build on each iteration — a stateless worker that skips the warm-up
101
+ pays the upstream reactor-compile tax inline on every run, which can block for
102
+ many minutes.
103
+
104
+ - **Warm up once (blocking, right after branching).** For a Maven monorepo that
105
+ ships this fast path (e.g. camunda), that is
106
+ `./mvnw install -Dquickly -T1C` — it installs every reactor SNAPSHOT into
107
+ `~/.m2` so later module builds resolve them instead of recompiling them.
108
+ - **Then build only the changed module, offline, without `-am`.** e.g.
109
+ `./mvnw -Dquickly -o -pl <module> test-compile`. Dropping `-am` after the
110
+ warm-up is what keeps each iteration to seconds; a per-iteration
111
+ `-am <goals>` (e.g. `-am clean test-compile`) re-compiles the upstream modules from source.
112
+ - **The recipe lives in the target repo, not here.** Always defer to that repo's
113
+ own `AGENTS.md` / `CONTRIBUTING.md` build section for the exact commands — the
114
+ Maven lines above are the common case, not a substitute for reading it.
115
+
94
116
  ## Closing keywords vs. scope splits — don't close a broader-scoped parent
95
117
 
96
118
  The convergence loop runs a **scope-integrity classifier** on your PR before it
@@ -50,6 +50,14 @@ the PR's checks yourself (`gh pr checks`, `gh run view`).
50
50
  3. Apply the **minimal, correct** fix. Keep it scoped to what the failing checks
51
51
  demand — do not refactor unrelated code.
52
52
  4. Run the relevant check locally to confirm it now passes.
53
+ **Build module-scoped, not cold.** Before iterating, read the target repo's
54
+ `AGENTS.md` / `CONTRIBUTING.md` build section and run its prescribed
55
+ **dependency warm-up once** (for a Maven monorepo that ships it, e.g. camunda,
56
+ `./mvnw install -Dquickly -T1C`), then scope the build to the changed module
57
+ and drop `-am` (`./mvnw -Dquickly -o -pl <module> <goals>`). Never run a cold
58
+ whole-reactor `-am` build per iteration — a stateless worker that skips the
59
+ warm-up pays the upstream reactor-compile tax inline and can block for many
60
+ minutes.
53
61
  5. Commit (sign off with `-s` if the repo enforces DCO) and push to the branch.
54
62
  6. **Make CI re-validate your fix.** Some repos deliberately run CI only when a
55
63
  PR is *opened* (to keep review cheap), so a follow-up push does **not**
@@ -44,7 +44,11 @@ You have `gh` / git authenticated for the target repository.
44
44
  4. **Choose the right home for each promoted lesson** — the whole point is to make the knowledge
45
45
  *load-bearing*, not just written down:
46
46
  - **`AGENTS.md`** (or `CONTRIBUTING.md`) — a convention, a "before you build, run X", a
47
- non-obvious constraint. The default home.
47
+ non-obvious constraint. The default home. A **build recipe** is the textbook case:
48
+ a durable "warm the dependency cache once, then build module-scoped — never a cold
49
+ whole-reactor build" lesson (e.g. Maven's `./mvnw install -Dquickly -T1C` warm-up,
50
+ then `-pl <module>` without `-am`) belongs in the *target repo's* `AGENTS.md`
51
+ build section, never duplicated into nano-workforce.
48
52
  - **A script** — if the lesson is "always run these steps in this order", encode it as a
49
53
  script (or a `make`/`npm`/`deno task` target) so it can't be forgotten.
50
54
  - **A CI step** — if the lesson is "this class of mistake should never merge", add a guard/gate