@mmerterden/multi-agent-pipeline 15.12.1 → 15.12.2
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
|
@@ -16,6 +16,12 @@ Internal file-layout changes that don't affect the slash-command surface are sti
|
|
|
16
16
|
|
|
17
17
|
## [Unreleased]
|
|
18
18
|
|
|
19
|
+
## [15.12.2] - 2026-08-22
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
- **`grep -P` is banned in shell, and the ban is enforced.** Unlike the other divergences the portability gate tracks, this one has no guarded form: BSD grep has no `-P` at all, so it exits 2 with "invalid option", and the `2>/dev/null` that nearly every check carries turns that error into an empty result, which reads as "found nothing". A check written that way passes on every input including the one it was meant to catch. Two gates in this repo did exactly that, were handed a file with the defect deliberately planted in it, and reported a clean tree. The scan covers every shell file under `scripts/` and `lib/`, not only the shipped ones, because the two that broke were smoke gates that never ship - and a gate that cannot fail is worse than no gate, since it is trusted. The check opens by proving its own detector fires on a planted invocation.
|
|
23
|
+
- **Always-loaded context is back under budget with its designed headroom.** The fixed per-run load had reached 60000 of a 60000 ceiling, so the next edit to either tracked file would have broken the gate. The cause was the pattern the gate exists to catch: `core/multi-agent/SKILL.md` carried a full transcription of the Phase 0 contract, restating all eight steps that `refs/phases/phase-0-init.md` already defines, while its own text said the transcription "does not replace the contract, read the ref". Its citations into that ref had also drifted - `L221` now points at the token pre-check, not the branch picker it claimed. Every rule was verified present in the ref before cutting (per-repo branch picker, shared branch name with per-repo collision, per-repo identity, serial per-repo worktrees). What stays in the always-loaded file is the part that enforces rather than describes: the blocking exit gate and the credential-inventory rule. 2422 bytes reclaimed, load now 57576 of 60000. The ceiling was not raised.
|
|
24
|
+
|
|
19
25
|
## [15.12.1] - 2026-08-22
|
|
20
26
|
|
|
21
27
|
### Fixed
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mmerterden/multi-agent-pipeline",
|
|
3
|
-
"version": "15.12.
|
|
3
|
+
"version": "15.12.2",
|
|
4
4
|
"description": "8-phase AI development pipeline with full orchestration on Claude Code, Copilot CLI and Codex CLI. Analysis, planning, TDD, CLI-aware parallel review with consensus surfacing + Fable triage, default-FAIL evidence gates, secret + intent guards, per-phase cost ledger, persistent learnings memory, wiki generation, commit automation. Token-preserving uninstall.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -320,22 +320,17 @@ Full contract: `refs/tracker-contract.md` section "TaskCreate ordering (strict)"
|
|
|
320
320
|
|
|
321
321
|
### Phase 0: Init
|
|
322
322
|
|
|
323
|
-
> **Contract (strict)** - Phase 0 has **8 sequential interactive steps
|
|
323
|
+
> **Contract (strict)** - Phase 0 has **8 sequential interactive steps**, defined in
|
|
324
|
+
> `refs/phases/phase-0-init.md`. Read it before every Phase 0 run and execute all of
|
|
325
|
+
> them. Do **NOT** short-circuit: even when the input is a Jira ID plus a branch, the
|
|
326
|
+
> prefs load, the multi-repo offer, the branch picker and the branch-name confirm are
|
|
327
|
+
> required UX checkpoints. A run once took a Jira ID and implemented straight onto the
|
|
328
|
+
> local checkout with neither the project nor the branch picker ever shown, and nothing
|
|
329
|
+
> failed, so nothing caught it. The walkthrough below covers input parsing and worktree
|
|
330
|
+
> creation only; it is not the contract.
|
|
324
331
|
>
|
|
325
|
-
>
|
|
326
|
-
>
|
|
327
|
-
> 1. **Bootstrap tracker** - `$HOME/.claude/scripts/phase-tracker.sh init <task-id>` + 8 phase tiles (Step −1)
|
|
328
|
-
> 2. **Load prefs** - read `prefs.global` + `prefs.projects[{name}]`; halt with `/multi-agent:setup` prompt if no keychain mapping (Step 0)
|
|
329
|
-
> 3. **Parse input** - classify + fetch Jira/GitHub issue + extract Figma URL if present (Step 1)
|
|
330
|
-
> 4. **Select project(s) - single OR multi-repo** - present numbered list of repos from `$HOME`. Picker accepts space-separated numbers (`1 3 4`) for multi-select. Component/refactor tasks often span repos (e.g. component repo + consumer app). Surface saved `global.recentGroups` at the top of the list. **Never auto-pick a single repo when the task could touch more than one** - ask the user to confirm single vs multi. (Step 2)
|
|
331
|
-
> 5. **Pick base branch PER REPO** - REQUIRED INTERACTIVE STEP. If one repo selected: run `git ls-remote --heads origin` on that repo, present sorted list (develop* / release/* / main/master first), suggest top of `global.recentBranches[{projectKey}]`. **If multiple repos selected: fire the branch picker separately for each repo** (phase-0-init.md L221: "In multi-repo mode, the prompt fires per-repo"). Users reported this being silently skipped for component work where the correct base is `iteration/develop` - either per-repo prompt missing, or one branch assumed for all repos. Skip only if the user's original input explicitly specified a branch. (Step 3)
|
|
332
|
-
> 6. **Branch name confirm** - `feature/PROJ-{id}-{kebab}` or `bugfix/...` - user confirms or edits. In multi-repo mode the branch name is shared across all selected repos (collision check runs per-repo; any collision applies the suffix to all). (Step 4)
|
|
333
|
-
> 7. **Git identity - per repo** - route via `prefs.global.platformIdentityRouting`; ask if ambiguous. Multi-repo mode resolves identity **per repo independently** (phase-0-init.md L283). (Step 6)
|
|
334
|
-
> 8. **Instruction files + workspace creation - serially per repo** - detect `.instructions/figma/` etc. In multi-repo mode, worktree creation loops per repo serially (phase-0-init.md L308); any failure rolls back previously-created worktrees. Write `agent-state.json` with `state.projects[]` array (scalar `project`/`projectRoot`/`branch` mirror `projects[0]` for back-compat). (Steps 7-8)
|
|
335
|
-
>
|
|
336
|
-
> **Exit gate (BLOCKING).** The contract above was prose only, and a run still took a
|
|
337
|
-
> Jira ID and implemented straight onto the local checkout with no picker shown. Before
|
|
338
|
-
> marking Phase 0 completed:
|
|
332
|
+
> **Exit gate (BLOCKING).** Prose alone did not stop that run. Before marking Phase 0
|
|
333
|
+
> completed:
|
|
339
334
|
>
|
|
340
335
|
> ```bash
|
|
341
336
|
> node "$HOME/.copilot/scripts/phase0-exit-gate.mjs" "$TASK_ID" --input "$USER_INPUT"
|