@yemi33/minions 0.1.1035 → 0.1.1037

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,5 +1,88 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.1037 (2026-04-16)
4
+
5
+ ### Features
6
+ - Doc-chat performance — debounced persistence, session TTL, smart disk reads (#1164)
7
+ - split getStatus() into fast/slow state tiers with separate TTLs (#1170)
8
+ - Cache _countWorktrees() with 30s TTL (#1166)
9
+ - Pre-cache gzipped status buffer alongside JSON cache (#1171)
10
+ - parallelize ADO and GitHub PR polling with Promise.allSettled (#1172)
11
+ - route implement items to dedicated implement playbook (#1115)
12
+
13
+ ### Fixes
14
+ - allow test tasks to create PRs when files are modified
15
+ - sidecar oversized dispatch prompts to prevent dashboard OOM (closes #1167) (#1183)
16
+ - use locked write for failed-with-PR reconciliation in cleanup.js (#1169)
17
+ - prevent test from corrupting live meeting state
18
+ - scheduler enabled field falsy check treats undefined as disabled (#1160)
19
+ - update branch-dedup tests to use canonical PR IDs after merge with master (#1146)
20
+ - auto-review not firing for manually-linked PRs with autoObserve=true
21
+ - mark PR abandoned on 404 instead of silently retrying each tick
22
+ - replace undefined PROJECTS with config.projects in checkWatches (#1108)
23
+ - write permission for publish workflow
24
+ - run tests inline and post check runs for publish PRs
25
+ - add maxBuffer to all GitHub CLI spawns + paginate PR list (#1130)
26
+ - add required CI checks for PRs + update publish for auto-merge
27
+ - revert to PR merge now that stale status check is removed
28
+ - guard live review check against undefined vote/state values (#1132)
29
+ - push version bump directly to master instead of via PR
30
+ - add push-triggered CI for chore/publish branches
31
+ - publish workflow chore PRs failing to merge
32
+ - harden KB ordering
33
+ - harden audited state transitions
34
+
35
+ ### Other
36
+ - docs(sched-weekly-docs-cleanup-1776355200664): weekly documentation cleanup (#1181)
37
+ - [E2E] Dashboard & engine perf: gzip cache, tiered status, lock backoff, polling parallelization (#1174)
38
+ - Fix doc chat session isolation
39
+ - test(pipeline): add unit tests for CRUD, stage execution, run lifecycle (#1162)
40
+ - chore: test publish after removing stale status check
41
+ - chore: trigger publish test
42
+ - chore: test publish workflow fix
43
+ - chore: trigger publish workflow test
44
+
45
+ ## 0.1.1036 (2026-04-16)
46
+
47
+ ### Features
48
+ - Doc-chat performance — debounced persistence, session TTL, smart disk reads (#1164)
49
+ - split getStatus() into fast/slow state tiers with separate TTLs (#1170)
50
+ - Cache _countWorktrees() with 30s TTL (#1166)
51
+ - Pre-cache gzipped status buffer alongside JSON cache (#1171)
52
+ - parallelize ADO and GitHub PR polling with Promise.allSettled (#1172)
53
+ - route implement items to dedicated implement playbook (#1115)
54
+
55
+ ### Fixes
56
+ - allow test tasks to create PRs when files are modified
57
+ - sidecar oversized dispatch prompts to prevent dashboard OOM (closes #1167) (#1183)
58
+ - use locked write for failed-with-PR reconciliation in cleanup.js (#1169)
59
+ - prevent test from corrupting live meeting state
60
+ - scheduler enabled field falsy check treats undefined as disabled (#1160)
61
+ - update branch-dedup tests to use canonical PR IDs after merge with master (#1146)
62
+ - auto-review not firing for manually-linked PRs with autoObserve=true
63
+ - mark PR abandoned on 404 instead of silently retrying each tick
64
+ - replace undefined PROJECTS with config.projects in checkWatches (#1108)
65
+ - write permission for publish workflow
66
+ - run tests inline and post check runs for publish PRs
67
+ - add maxBuffer to all GitHub CLI spawns + paginate PR list (#1130)
68
+ - add required CI checks for PRs + update publish for auto-merge
69
+ - revert to PR merge now that stale status check is removed
70
+ - guard live review check against undefined vote/state values (#1132)
71
+ - push version bump directly to master instead of via PR
72
+ - add push-triggered CI for chore/publish branches
73
+ - publish workflow chore PRs failing to merge
74
+ - harden KB ordering
75
+ - harden audited state transitions
76
+
77
+ ### Other
78
+ - [E2E] Dashboard & engine perf: gzip cache, tiered status, lock backoff, polling parallelization (#1174)
79
+ - Fix doc chat session isolation
80
+ - test(pipeline): add unit tests for CRUD, stage execution, run lifecycle (#1162)
81
+ - chore: test publish after removing stale status check
82
+ - chore: trigger publish test
83
+ - chore: test publish workflow fix
84
+ - chore: trigger publish workflow test
85
+
3
86
  ## 0.1.1035 (2026-04-16)
4
87
 
5
88
  ### Features
@@ -14,7 +14,7 @@
14
14
  - Creating the structured PRD in JSON format
15
15
  - Gap analysis: what was built vs. what the codebase instructions describe vs. what's missing
16
16
  - Feature inventory: cataloguing existing agent capabilities, then identifying what's absent
17
- - Producing `docs/prd-gaps.json` with structured feature records
17
+ - Producing PRD JSON files in `{{team_root}}/prd/` with structured feature records (one file per plan; filename matches the source plan slug)
18
18
  - Flagging unknowns and ambiguities in the requirements
19
19
 
20
20
  ## PRD JSON Output Format
@@ -43,7 +43,7 @@
43
43
  - Read Dallas's build summary from `{{team_root}}/notes/inbox/dallas-build-*.md`
44
44
  - Cross-reference against all `docs/`, agent `CLAUDE.md` files, and prototype instructions
45
45
  - Be exhaustive on missing features — better to over-document than under-document
46
- - Output the JSON to `docs/prd-gaps.json`
46
+ - Output the JSON to `{{team_root}}/prd/<plan-slug>.json` (the engine's `materializePlansAsWorkItems()` reads from that directory)
47
47
 
48
48
  ## Boundaries
49
49
 
@@ -37,13 +37,13 @@ Skips PRs where `status !== "active"`.
37
37
 
38
38
  ### Source 2: PRD Gap Analysis (via `materializePlansAsWorkItems`)
39
39
 
40
- PRD items flow through `materializePlansAsWorkItems()`, which scans `~/.minions/prd/*.json` for PRD files with `missing`/`planned` items and creates work items in the target project's queue.
40
+ PRD items flow through `materializePlansAsWorkItems()`, which scans `~/.minions/prd/*.json` for PRD files with `missing` / `updated` / `planned` items and creates work items in the target project's queue.
41
41
 
42
- **Reads:** `<project>/docs/prd-gaps.json` (or custom path from `workSources.prd.path`)
42
+ **Reads:** `~/.minions/prd/*.json` — the central PRD directory. (Legacy `<project>/docs/prd-gaps.json` paths are no longer scanned.)
43
43
 
44
44
  | Item State | Action | Dispatch Type |
45
45
  |------------|--------|---------------|
46
- | `status: "missing"` or `"planned"` | Queue implementation | `implement` |
46
+ | `status: "missing"` or `"updated"` | Queue implementation (re-opens any existing done WI) | `implement` |
47
47
  | `estimated_complexity: "large"` | Routes to `implement:large` (prefers Rebecca) | `implement:large` |
48
48
 
49
49
  ### Source 3: Per-Project Work Items (`discoverFromWorkItems`)
@@ -165,14 +165,19 @@ Item found
165
165
  `resolveAgent()` parses `routing.md` to pick the right agent:
166
166
 
167
167
  ```
168
- routing.md table:
168
+ routing.md table (see the file for the authoritative list):
169
169
  implement → dallas (fallback: ralph)
170
170
  implement:large → rebecca (fallback: dallas)
171
171
  review → ripley (fallback: lambert)
172
- fix → _author_ (fallback: dallas) ← routes to PR author
173
- analyze lambert (fallback: rebecca)
172
+ fix → _author_ (fallback: _any_) ← routes to PR author, any idle as fallback
173
+ plan ripley (fallback: rebecca)
174
+ plan-to-prd → lambert (fallback: rebecca)
174
175
  explore → ripley (fallback: rebecca)
175
176
  test → dallas (fallback: ralph)
177
+ ask → ripley (fallback: rebecca)
178
+ verify → dallas (fallback: ralph)
179
+ decompose → ripley (fallback: rebecca)
180
+ meeting → ripley (fallback: lambert)
176
181
  ```
177
182
 
178
183
  Resolution order:
@@ -216,7 +221,7 @@ git worktree add <rootDir>/../worktrees/<branch> -b <branch> <mainBranch>
216
221
  ```
217
222
  - Branch names are sanitized (alphanumeric, dots, hyphens, slashes only, max 200 chars)
218
223
  - If worktree fails for implement/fix → item marked as error, moved to completed
219
- - If worktree fails for review/analyze → falls back to rootDir (read-only tasks)
224
+ - If worktree fails for review/explore/ask → falls back to rootDir (read-only tasks)
220
225
 
221
226
  ### 3. Render Playbook
222
227
  ```
@@ -291,8 +296,8 @@ The dashboard exposes a unified input box at `http://localhost:7331` that parses
291
296
  | `@agent` | Assigns to a specific agent (sets `item.agent`) |
292
297
  | `@everyone` | Fan-out to all agents (sets `scope: 'fan-out'`) |
293
298
  | `!high` / `!low` | Sets priority (default: medium) |
294
- | `/decide` | Creates a decision (appended to `notes.md`) |
295
- | `/prd` | Creates a PRD item (appended to `prd-gaps.json`) |
299
+ | `/note` | Writes a note to `notes/inbox/` for consolidation into `notes.md` |
300
+ | `/plan` | Creates a plan draft (appended to `plans/`) |
296
301
  | `#project` | Targets a specific project queue |
297
302
 
298
303
  Work type is auto-detected from keywords (fix, explore, test, review → implement as fallback). The `@agent` assignment flows through to the engine: `item.agent || resolveAgent(workType, config)`.
@@ -305,20 +310,20 @@ Work type is auto-detected from keywords (fix, explore, test, review → impleme
305
310
 
306
311
  ┌──────────┼──────────┐
307
312
  ▼ ▼ ▼
308
- work-items decisions prd-gaps
309
- .json .md .json
313
+ work-items notes/ plans/
314
+ .json inbox/*.md *.md
310
315
 
311
316
  Per-project sources: Central engine: Agents:
312
317
 
313
318
  work-items.json ──┐
314
- prd-gaps.json ────┤
315
319
  pull-requests.json┤ discoverWork() dispatch.json
316
320
  docs/**/*.md (specs)┤ (each tick) ┌──────────┐
317
321
  │ │ │ pending │
318
322
  ~/.minions/ │ │ │ active │
319
323
  work-items.json ┤ │ │ completed │
320
- plans/*.md ─────┘ └─────┬────┘
321
- addToDispatch()─────────┘
324
+ prd/*.json ─────┤ └─────┬────┘
325
+ plans/*.md ─────┘ ▼ │
326
+ addToDispatch()────────┘
322
327
 
323
328
  ADO REST API ─── pollPrBuildStatus() ──► pull-requests.json
324
329
  (every 6min) (buildStatus field) │
@@ -390,20 +395,12 @@ All discovery behavior is controlled via `config.json`:
390
395
  "name": "MyProject",
391
396
  "localPath": "C:/Users/you/MyProject",
392
397
  "workSources": {
393
- "prd": {
394
- "enabled": true,
395
- "path": "docs/prd-gaps.json",
396
- "itemFilter": { "status": ["missing", "planned"] },
397
- "cooldownMinutes": 30
398
- },
399
398
  "pullRequests": {
400
399
  "enabled": true,
401
- "path": "projects/<name>/pull-requests.json",
402
400
  "cooldownMinutes": 30
403
401
  },
404
402
  "workItems": {
405
403
  "enabled": true,
406
- "path": "projects/<name>/work-items.json",
407
404
  "cooldownMinutes": 0
408
405
  }
409
406
  }
@@ -11,9 +11,9 @@ Click the **CC** button in the top-right header of the dashboard. A slide-out ch
11
11
  CC maintains a true multi-turn session using Claude CLI's `--resume` flag. Unlike a typical stateless API call, each message resumes the same conversation — Claude retains full history including tool calls, intermediate reasoning, and file contents from prior turns.
12
12
 
13
13
  **Session lifecycle:**
14
- - **Created** on first message (or after expiry/new-session)
14
+ - **Created** on first message (or after the system prompt changes, or when you click **New Session**)
15
15
  - **Resumed** on subsequent messages via `--resume <sessionId>`
16
- - **Expires** after 2 hours of inactivity
16
+ - **Invalidated** only when the CC system prompt changes — detected by hashing `CC_STATIC_SYSTEM_PROMPT` into `_ccPromptHash` and comparing on each call. There is no time-based expiry and no turn cap (`CC_SESSION_MAX_TURNS = Infinity`).
17
17
  - **Persisted** to `engine/cc-session.json` — survives dashboard restarts
18
18
  - **Frontend messages** saved to `localStorage` — survive page refresh
19
19
 
@@ -108,7 +108,7 @@ User message (CC panel, doc modal, or steer)
108
108
 
109
109
  POST /api/command-center (or /api/doc-chat, /api/steer-document)
110
110
 
111
- ├── Validate session (expiry check)
111
+ ├── Validate session (prompt-hash check — invalidate if `_ccPromptHash` drifted)
112
112
  ├── Build dynamic state preamble (buildCCStatePreamble)
113
113
  ├── callLLM() with sessionId (resume) or without (new)
114
114
  │ model: sonnet
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.1035",
3
+ "version": "0.1.1037",
4
4
  "description": "Multi-agent AI dev team that runs from ~/.minions/ — five autonomous agents share a single engine, dashboard, and knowledge base",
5
5
  "bin": {
6
6
  "minions": "bin/minions.js"
package/playbooks/test.md CHANGED
@@ -17,14 +17,15 @@ Team root: {{team_root}}
17
17
 
18
18
  ## Instructions
19
19
 
20
- This is a **test/build/run task**. Your goal is to build, run, test, or verify something — NOT to create new features or PRs.
20
+ This is a **test/build/run task**. Your goal is to build, run, test, or verify something.
21
21
 
22
22
  1. **Navigate** to the correct project directory
23
23
  2. You are already in the correct working directory. If you need a specific branch, use `git checkout` — do NOT create additional worktrees.
24
24
  3. **Build** the project — follow the repo's build instructions (check CLAUDE.md, package.json, README)
25
25
  4. **Run** if the task asks for it (e.g., `yarn start`, `yarn dev`, docker-compose, etc.)
26
26
  5. **Test** if the task asks for it (e.g., `yarn test`, `pytest`, etc.)
27
- 6. **Report results** what worked, what failed, build output, test results, localhost URL if running
27
+ 6. **Write tests** if the task asks you to add or improve test coverage commit and open a PR when done
28
+ 7. **Report results** — what worked, what failed, build output, test results, localhost URL if running
28
29
 
29
30
  ## Working Style
30
31
 
@@ -32,9 +33,9 @@ Use subagents only for genuinely parallel, independent tasks. For building, test
32
33
 
33
34
  ## Rules
34
35
 
35
- - **Do NOT create pull requests** this is a test/verification task only
36
- - **Do NOT push commits** unless the task explicitly asks you to fix something
37
- - **Do NOT modify code** unless the task explicitly asks for a fix
36
+ - **Do NOT modify production code** unless the task explicitly asks for a fix
37
+ - **Create a PR** if the task involves writing or modifying files (new tests, test fixes, etc.) — follow the same PR conventions as implement tasks
38
+ - **Do NOT push or create a PR** for pure build/run/verify tasks that make no file changes
38
39
  - Use PowerShell for build commands on Windows if applicable
39
40
  - If a build or test fails, report the error clearly — don't try to fix it unless asked
40
41
  - If running a local server, report the URL (e.g., http://localhost:3000)
@@ -66,6 +67,6 @@ Include:
66
67
 
67
68
  ## When to Stop
68
69
 
69
- Your task is complete once you have run the tests, written findings to the inbox file, and (if applicable) created a PR with new tests. Stop after writing findings.
70
+ Your task is complete once you have run the tests, written findings to the inbox file, and (if the task involved file changes) created and submitted a PR. Stop after writing findings.
70
71
 
71
72
  Do NOT remove worktrees — the engine handles cleanup automatically.
@@ -1,32 +0,0 @@
1
- # Verification: Fix silent state-loss bugs in dispatch persistence, lifecycle races, and checkpoint handling
2
-
3
- **Plan:** minions-2026-04-01-5.json
4
- **Date:** 2026-04-11
5
- **Verified by:** Ripley
6
-
7
- ## Results Summary
8
-
9
- | Item | PR | Verdict |
10
- |------|-----|---------|
11
- | P-b3c9e4f6: needs-human-review skip filter | PR-55 (merged) | PASS |
12
- | P-f7a2d8e1: dispatch persistence gate | PR-57 (merged) | PASS |
13
- | P-d5e1a7b3: TOCTOU races in lifecycle | PR-56 (merged) | PASS |
14
- | P-a8f4c2d9: fan-out checkpoint handling | PR-58 (merged) | REGRESSION |
15
- | P-e6b0d3a5: checkpoint cleanup + _pendingReason | PR-60 (merged) | REGRESSION |
16
- | P-c1d7f9e8: resolveWiPath export | PR-59 (closed) | NOT MERGED |
17
-
18
- **Tests:** 1463 passed, 0 failed, 2 skipped
19
-
20
- ## Regressions
21
-
22
- Two items (P-a8f4c2d9, P-e6b0d3a5) were correctly merged but their changes were
23
- subsequently lost during engine.js refactors that rewrote `discoverCentralWorkItems`
24
- to use a mutations Map pattern. The original direct-item-mutation code was not carried
25
- forward.
26
-
27
- Affected features:
28
- 1. Fan-out checkpoint.json reading (engine.js:2484-2487 missing `worktreePath`)
29
- 2. Checkpoint file deletion after consumption (no `unlinkSync` calls remain)
30
- 3. `_pendingReason` clearing on fan-out/single-agent dispatch
31
-
32
- See full report in `prd/guides/verify-minions-2026-04-01-5.md` (runtime, gitignored).