@mmerterden/multi-agent-pipeline 20.37.0 → 20.37.1

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 (37) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/docs/facts.json +2 -2
  3. package/docs/features.md +1 -1
  4. package/docs/recovery-guide.md +1 -1
  5. package/install/catalog-history.json +1 -1
  6. package/manifest.json +40 -35
  7. package/package.json +1 -1
  8. package/pipeline/commands/multi-agent/manual-test/SKILL.md +12 -7
  9. package/pipeline/multi-agent-refs/audit-guide.md +20 -0
  10. package/pipeline/multi-agent-refs/features/commit-multi-repo.md +63 -0
  11. package/pipeline/multi-agent-refs/features/dev-multi-repo.md +51 -0
  12. package/pipeline/multi-agent-refs/features/test-gap.md +40 -0
  13. package/pipeline/multi-agent-refs/features/worktree-finalize.md +1 -1
  14. package/pipeline/multi-agent-refs/orchestrator/phase-3-user-test.md +12 -9
  15. package/pipeline/multi-agent-refs/phases/phase-1-plan.md +4 -4
  16. package/pipeline/multi-agent-refs/phases/phase-2-dev.md +8 -47
  17. package/pipeline/multi-agent-refs/phases/phase-3-review.md +21 -65
  18. package/pipeline/multi-agent-refs/phases/phase-4-commit.md +9 -59
  19. package/pipeline/multi-agent-refs/phases/phase-5-report.md +0 -31
  20. package/pipeline/multi-agent-refs/rules.md +1 -1
  21. package/pipeline/office/index.html +6 -3
  22. package/pipeline/office/toolkit.json +1 -1
  23. package/pipeline/rules/figma-pipeline.md +6 -3
  24. package/pipeline/schemas/prefs.schema.json +1 -1
  25. package/pipeline/scripts/_memory-policy.mjs +27 -5
  26. package/pipeline/scripts/checkpoint-fold.sh +59 -0
  27. package/pipeline/scripts/gate-ledger.mjs +1 -1
  28. package/pipeline/scripts/office-control.mjs +41 -15
  29. package/pipeline/scripts/offload-ref.sh +1 -1
  30. package/pipeline/scripts/rework-rulings.mjs +5 -3
  31. package/pipeline/scripts/scope-check-gate.mjs +15 -2
  32. package/pipeline/scripts/user-test-handoff.sh +203 -0
  33. package/pipeline/scripts/validate-planning.mjs +5 -3
  34. package/pipeline/scripts/validate-triage.mjs +2 -1
  35. package/pipeline/scripts/write-state.mjs +13 -4
  36. package/pipeline/skills/.skill-manifest.json +2 -2
  37. package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +12 -7
package/CHANGELOG.md CHANGED
@@ -16,6 +16,31 @@ Internal file-layout changes that don't affect the slash-command surface are sti
16
16
 
17
17
  ## [Unreleased]
18
18
 
19
+ ## [20.37.1] - 2026-10-31
20
+
21
+ ### Fixed
22
+
23
+ - `write-state.mjs --replace` applies the same phase-transition refusals as a merge write: leaving Phase 1 without plan approval, leaving Phase 2 without a recorded tracker move, and changing or dropping `sessionId` are refused with exit 6. A state file that does not parse can still be replaced.
24
+ - `validate-triage.mjs` exits 2 when the over-rejection guard trips, even when it also corrected a contradiction; the corrected verdict is still in the result, and Phase 3 acts on it after the human check. `eval-triage.mjs` fails a fixture whose verdict needed correcting.
25
+ - `rework-rulings.mjs` escalates any finding with `foundBy: "security-auditor"` at the rework cap. The triage schema drops the auditor's `security` envelope, so a medium-severity finding without a SEC rule used to be parked.
26
+ - `scope-check-gate.mjs` keeps every line break in shell, Ruby (including `Podfile`, `Gemfile`, `Rakefile` and the fastlane files), TOML, `.envrc`, `Jenkinsfile`, `Vagrantfile` and Dockerfiles or Containerfiles of any suffix when it decides whether a hunk is layout only, so joining two commands onto one line is no longer listed as format-only.
27
+ - `validate-planning.mjs --spec` fails when the named spec cannot be read, instead of warning and skipping the design-value and citation checks.
28
+ - Memory stores stay off when `multi-agent-preferences.json` exists but cannot be parsed, and say so once on stderr; a missing file still means no exclusions.
29
+ - `office-on` stops the server it started whenever the start fails (no ready line, a ready line that is not JSON, a state write error, or a server that dies right after it), and closes the ready file's descriptor. `MA_OFFICE_READY_MS` (a positive integer) overrides the 15 s window.
30
+ - The office world loop cancels its queued animation frame on stop, so hiding and showing the tab no longer adds a render loop.
31
+ - The user test (Phase 3 on Claude Code and Copilot CLI, and `/multi-agent:manual-test`) hands the branch over through `user-test-handoff.sh`. The agent makes the WIP commit itself, so it passes the approval and secret-scan hooks like any commit. `checkout` refuses with nothing moved when the main repo has uncommitted changes (exit 3), or when the worktree or a submodule holds uncommitted work, a commit on no remote branch, an unpushed local branch or a stash (5); a submodule's git dir is removed with the worktree, so all of that would be lost. It then moves every ignored entry of the worktree (the run artefacts under `.pipeline/` and `.multi-agent/`, logs, `.env`, build output) and the main repo's current branch into a hold in the same repository, removes the worktree and checks the branch out. `restore` returns the main repo to the branch it was on, re-adds the worktree, moves the held entries back and keeps anything found at the worktree path aside; it refuses while the user's edits sit on the task branch in the main repo (3) and finishes an interrupted run when called again. Success is judged by where the branch ends up, so a failing post-checkout hook cannot cost the held entries. Both answers to the test start with `restore`, so `manual-test.json` is written into a worktree that exists.
32
+ - Phase 4 folds every checkpoint commit of the run (Phase 2's `wip(...)` commits and the user-test `WIP:` commit) back before the real commit through `checkpoint-fold.sh`, per repository in multi-repo runs. It follows first parents from HEAD and stops at the first commit that is neither, bounded by `origin/<base>` when that ref exists. It undid only one commit before, so Phase 2's checkpoints reached the PR.
33
+ - Phase 2's build log goes through the context-offload filter on every run; only multi-repo builds used it. Offload node ids carry the current phase numbers.
34
+
35
+ ### Changed
36
+
37
+ - Phase docs keep the call and the decision; conditional detail loads on demand. New refs: `features/dev-multi-repo.md` (Phase 2), `features/commit-multi-repo.md` (Phase 4) and `features/test-gap.md` (Phase 3); the Phase 3 evidence flows moved into `audit-guide.md`. TDD token forwarding and the push retry policy stay in the phase docs because every run uses them. Every phase doc now has more room than its usual edit size.
38
+ - Phase 1 and the `autopilotSafetyGate` preference description point at `classify-plan-safety.mjs` for the safety classifier's rules and state its trigger correctly (one signal of weight 30+, two of weight 20+, or a score of 50).
39
+ - Phase 5 no longer describes an `outputQuality` / nested `channels` metrics shape that no writer produces; `log-metric.sh` writes flat key/value details.
40
+ - `rules/figma-pipeline.md` lists the Phase 0 tier probe and Phase 1's analysis half (Step 1.4) as allowed to reach Figma and Phase 1's planning half as not, and says which of those the scope guard enforces.
41
+ - Phase 4's Push-must-succeed policy and Telemetry are their own sections instead of sitting under Multi-Repo Mode, since every run uses them.
42
+ - `smoke-phase-telemetry-ids.sh` checks that every feature ref loaded inside a phase emits under that phase's id.
43
+
19
44
  ## [20.37.0] - 2026-10-31
20
45
 
21
46
  ### Added
package/docs/facts.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$comment": "Generated by pipeline/scripts/gen-facts.mjs. Do not hand-edit: the site reads this, and a number edited here instead of at its source is the drift this file removes.",
3
3
  "generatedAt": "2026-10-31",
4
- "version": "20.37.0",
4
+ "version": "20.37.1",
5
5
  "phaseSchema": 2,
6
6
  "phases": [
7
7
  {
@@ -65,5 +65,5 @@
65
65
  "test": 1
66
66
  },
67
67
  "pluginSkillCount": 261,
68
- "toolkitVersion": "3.27.0"
68
+ "toolkitVersion": "3.27.1"
69
69
  }
package/docs/features.md CHANGED
@@ -237,7 +237,7 @@ After triage returns, output is validated by `validate-triage.mjs`:
237
237
  | ----- | ------------------------------------------------------------ |
238
238
  | **0** | Valid and clean - act on triage output |
239
239
  | **1** | Invalid structure - retry once, then fallback |
240
- | **2** | Over-rejection guard tripped - pause for human |
240
+ | **2** | Over-rejection guard tripped - pause for human; act on `result.corrected` when set |
241
241
  | **3** | Contradiction auto-corrected - proceed with corrected output |
242
242
 
243
243
  ### Bidirectional Approved↔Blocking Auto-Correction
@@ -71,7 +71,7 @@ Path forward:
71
71
  | ---- | ------------------------ | ---------------------------------------------- |
72
72
  | 0 | Valid & clean | Proceed to Phase 4 |
73
73
  | 1 | Invalid JSON / schema | Retry triage ONCE. On second exit-1, fallback: treat ALL raw findings as accepted. |
74
- | 2 | Over-rejection (>80%) | Pause for human confirmation |
74
+ | 2 | Over-rejection (>80%) | Pause for human confirmation; act on `result.corrected` when set |
75
75
  | 3 | Contradiction corrected | Use `result.corrected`, continue |
76
76
 
77
77
  If exit 1 fires twice (fallback path):