@mmerterden/multi-agent-pipeline 19.1.0 → 19.1.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 +30 -0
- package/docs/facts.json +1 -1
- package/manifest.json +10 -10
- package/package.json +1 -1
- package/pipeline/multi-agent-refs/features/doctor.md +9 -0
- package/pipeline/preferences-template.json +5 -0
- package/pipeline/scripts/doctor.mjs +39 -0
- package/pipeline/skills/.skill-manifest.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -14,6 +14,36 @@ Internal file-layout changes that don't affect the slash-command surface are sti
|
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
+
## [19.1.2] - 2026-09-21
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
- **`doctor` reports the update policy.** `update-policy` prints the effective
|
|
22
|
+
`updateCheck.enabled`, `.ttlHours` and `.autoUpdate`, and says which of them
|
|
23
|
+
came from the schema rather than from the preferences file. The knob that
|
|
24
|
+
decides whether a run updates itself before it starts was otherwise only
|
|
25
|
+
discoverable by reading the schema. Reported, never written - a preferences
|
|
26
|
+
file is the user's, and a diagnostic that edits one is not a diagnostic.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## [19.1.1] - 2026-09-21
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
|
|
34
|
+
- **`required` floor raised to 19.1.0.** An install below it halts at Phase 0
|
|
35
|
+
Step 0.6, runs the update flow and asks for the command to be re-issued. The
|
|
36
|
+
reason is the write-state window closed in 19.1.0: a writer could report
|
|
37
|
+
success while its update was overwritten, and a floor exists for exactly the
|
|
38
|
+
case where an older install is not behind but wrong.
|
|
39
|
+
- `preferences-template.json` carries the `updateCheck` block explicitly
|
|
40
|
+
(`enabled`, `ttlHours`, `autoUpdate`). The schema defaults were already what
|
|
41
|
+
the phase doc describes and `smoke-update-check.sh` already pins them, but a
|
|
42
|
+
fresh install wrote no block at all, so the knob that decides whether a run
|
|
43
|
+
updates itself was not visible in the file a user opens to change it.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
17
47
|
## [19.1.0] - 2026-09-20
|
|
18
48
|
|
|
19
49
|
Minor: the routing preference 19.0.0 shipped now reaches dispatch, and the
|
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-09-20",
|
|
4
|
-
"version": "19.1.
|
|
4
|
+
"version": "19.1.2",
|
|
5
5
|
"phaseSchema": 2,
|
|
6
6
|
"phases": [
|
|
7
7
|
{
|
package/manifest.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mmerterden/multi-agent-pipeline",
|
|
3
|
-
"version": "19.1.
|
|
4
|
-
"commit": "
|
|
5
|
-
"generatedAt": "2026-09-
|
|
3
|
+
"version": "19.1.2",
|
|
4
|
+
"commit": "074b9a4c2cfd511e61c43582551a8147b0326f20",
|
|
5
|
+
"generatedAt": "2026-09-20T21:00:49.167Z",
|
|
6
6
|
"algorithm": "sha256",
|
|
7
7
|
"fileCount": 1057,
|
|
8
8
|
"files": {
|
|
9
|
-
"CHANGELOG.md": "
|
|
9
|
+
"CHANGELOG.md": "237e1085d742fec90a3ad103f302af3bf9edb41ff554c45385b00df8970b16a0",
|
|
10
10
|
"LICENSE": "8d8c51aaf1e1538b180c69965fa038db71be86798cc3e26a143bebfefe16a43e",
|
|
11
11
|
"README.md": "63cba0443ff6750cf979ca39093f80f414a9ffa72bdf08a196a4fb821520fb5d",
|
|
12
12
|
"README.tr.md": "429823b93ae79e783ac91559251ff741d01b147146fffb6fb30f8a980ca157c2",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"docs/best-practices.md": "aeaaa12d518233cb09577c1dbaee00d62cd26f9f7e0400c681fe38742d6a7ba2",
|
|
32
32
|
"docs/ecosystem.md": "051520cefee38d34894ef563ab987be15dc47cc9172fc6692ee440a77fa1f2c0",
|
|
33
33
|
"docs/engineering.md": "550528cd47c7d2c921729c68d0782a00ac8e77a4bdfec479f6749f9c3235d188",
|
|
34
|
-
"docs/facts.json": "
|
|
34
|
+
"docs/facts.json": "d370370218be4a0b8edc2dff38f6595dcf90879e546add18abac8a60b9c0f6b6",
|
|
35
35
|
"docs/features.md": "927e5e54f7b1348ce2cddecb0d11115dc5ae9db20558b12d67932d38b26dad3f",
|
|
36
36
|
"docs/performance.md": "bbf2f3922c25dcba0c1a9e69ef420e3871a729af5b35009a49b48a5d3c5cd151",
|
|
37
37
|
"docs/recovery-guide.md": "1cc014295f8c8ffba1f1c44397b657e925f1bc0e4757217d6e69e8cfb271f3cb",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"install/templates/codex-instructions.md": "dd78eb9553e725c039380457245793a5fc748ae37ebf5ccfe11be5ed5b9a4025",
|
|
59
59
|
"install/templates/copilot-instructions.md": "18161f2a8c995044aeae69d47200795b8babcf8b80d5e09e8d91dcfb7c841ce2",
|
|
60
60
|
"install/templates/multi-agent-autopilot.plist.template": "d79de637b17330e720be43b96bfcdd51797bd9ce219eafaa3dd5a8ece96e4814",
|
|
61
|
-
"package.json": "
|
|
61
|
+
"package.json": "e5a60cbc1e2626aeed503073d89f6db25873db661589d6dd813c5c8f1af90367",
|
|
62
62
|
"pipeline/agents/android-architect.md": "baa5787b3a4c800dd065e27e05f44462927c9938c8bb676c80f18cb10e2b12c4",
|
|
63
63
|
"pipeline/agents/backend-architect.md": "a83bd7f8b0a5289a1ef9a9b59d60fc759b8db260606ff2df427cf5ade5db8530",
|
|
64
64
|
"pipeline/agents/bulk-reader.md": "0b9d415fab2c449d43329d759049af9401255d06b32d57a38c95e684837b19bf",
|
|
@@ -218,7 +218,7 @@
|
|
|
218
218
|
"pipeline/multi-agent-refs/features/cost-analysis.md": "42f1b90b41ef454f29ccfd3f93c959920f0e74cbca65e140695e9a30d6d90b87",
|
|
219
219
|
"pipeline/multi-agent-refs/features/design-conformance.md": "8bcc1c9221f39ec8764c6aa20e59f968d6beb777f644c61adf7a38e35af1a9d5",
|
|
220
220
|
"pipeline/multi-agent-refs/features/dev-critic.md": "08e01edef04b5ac216f8f43332126966d33da7b95625e47a8a6cd8ac105b263f",
|
|
221
|
-
"pipeline/multi-agent-refs/features/doctor.md": "
|
|
221
|
+
"pipeline/multi-agent-refs/features/doctor.md": "7fb8f00dfca3d44fa256b97f2669d414d27fe73408e9b2c651067f042c8a73b8",
|
|
222
222
|
"pipeline/multi-agent-refs/features/external-context-injection.md": "8fcf5229f92276af7714638602ec4da076f9f3f0a170303e3c1e178f55e39863",
|
|
223
223
|
"pipeline/multi-agent-refs/features/jira-context.md": "6f6fe697451e061909aa125366defbcc0baae5cecd8341bfabbad09011256684",
|
|
224
224
|
"pipeline/multi-agent-refs/features/maturity-followup.md": "2a6166869101b00ea273b92e3fe1ea07b375a0190aaab6b42ff5691db3748eec",
|
|
@@ -274,7 +274,7 @@
|
|
|
274
274
|
"pipeline/multi-agent-refs/web-guide.md": "714cba0d92fa45bf71fbff21bb2f09c88534ebf785b3a2ea96d18037e2e7f7f9",
|
|
275
275
|
"pipeline/multi-agent-refs/website-deploy.md": "ce819c8b1ef8e8ec3257611379aaf0ab4678e08e0b58bd88c936e98cb8ead609",
|
|
276
276
|
"pipeline/multi-agent-refs/wiki-capture.md": "a00eac0f1ffa956f8b767508147e6bc2dffb5fd1a32b1e0b0ac4e610775755ed",
|
|
277
|
-
"pipeline/preferences-template.json": "
|
|
277
|
+
"pipeline/preferences-template.json": "d917d01d5a5924e0d9a9394c5f9935046df6d56f0ba3ceee2b7ea31651cb37b0",
|
|
278
278
|
"pipeline/rules/app-store-guidelines.md": "cdfa4f8a2e0e642460bb72517f9f430638d6f09eb4a37898747cb8d55df03405",
|
|
279
279
|
"pipeline/rules/code-review.md": "b18eec5cec31710fe76cdae6f03b53e7403d4f0406274691ab38a4771505a1c5",
|
|
280
280
|
"pipeline/rules/code-style.md": "cd7d8fa872d1d640d143a573a0bdeeb7a9095f62a4d69741a11b4f0cee9d5a48",
|
|
@@ -374,7 +374,7 @@
|
|
|
374
374
|
"pipeline/scripts/crush-json.mjs": "303382670f8f170c8c6710202853a2de2915625813cd157185f9be4e2b27258e",
|
|
375
375
|
"pipeline/scripts/diff-explain.mjs": "79137dafe5a3b90a5496611c215669f26d92ab070dc4a71f1d37ed095a49c471",
|
|
376
376
|
"pipeline/scripts/diff-risk-score.mjs": "b3e8da42fea1258162e40f4eb7809074831339b7563874527f7e825f7aa795ca",
|
|
377
|
-
"pipeline/scripts/doctor.mjs": "
|
|
377
|
+
"pipeline/scripts/doctor.mjs": "73edeadd54d9cca035bf94b80e7f394da6e0692d3e803da1baa37db76f44e3ce",
|
|
378
378
|
"pipeline/scripts/evidence-gate.mjs": "54bd99ad7ead241cdb9b6281994dac31695fd0c7cf92222249803abc1a48f78a",
|
|
379
379
|
"pipeline/scripts/feedback-send.mjs": "8ec3f8fcafbe0de6c916a13a151d009cb804522537621b239a183591dddeec85",
|
|
380
380
|
"pipeline/scripts/finding-fingerprint.mjs": "fa12ab10701db5d2bfff014e41d1cd4c0b2b772aee5fc69205de14b2761b0c83",
|
|
@@ -480,7 +480,7 @@
|
|
|
480
480
|
"pipeline/scripts/website-deploy-commit.sh": "523482438b265ca1f1883ec5fb450e803566a1239eaccdc423e12c5426140a84",
|
|
481
481
|
"pipeline/scripts/worktree-finalize.sh": "f905ba69272d32afc75b5deb8406efabfe0865bdeec2e150a521d5a1b0c51b8a",
|
|
482
482
|
"pipeline/scripts/write-state.mjs": "1367280057d2b747da55ba62af6f884a647f2675c0bde10c39dc68c84ff7daac",
|
|
483
|
-
"pipeline/skills/.skill-manifest.json": "
|
|
483
|
+
"pipeline/skills/.skill-manifest.json": "e1fa2300f9152fcbf1c8667ba0bc7cee5d0a8125a8e1e0f57d3fc98d2cb4aa35",
|
|
484
484
|
"pipeline/skills/.skills-index.json": "05545f7603267576f614d6eedd0369bfcf5b8d1aadbf4c791295559f930b4bb2",
|
|
485
485
|
"pipeline/skills/shared/README.md": "12692c36caaf2f4567cf21b788dad66e1bc34cae345dc8045e0569834b819414",
|
|
486
486
|
"pipeline/skills/shared/core/apple-archive-compliance/SKILL.md": "6675a53441f2f3bedc82284998f402bd51fa251c7491a595e12c6c4016830337",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mmerterden/multi-agent-pipeline",
|
|
3
|
-
"version": "19.1.
|
|
3
|
+
"version": "19.1.2",
|
|
4
4
|
"description": "6-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",
|
|
@@ -126,6 +126,15 @@ The installed `.pipeline-version` matches the package version resolved from the
|
|
|
126
126
|
checkout or the published package. WARN on a mismatch: the run works, it just
|
|
127
127
|
is not the version the user thinks they have.
|
|
128
128
|
|
|
129
|
+
### update-policy
|
|
130
|
+
|
|
131
|
+
Whether a run updates itself before it starts, read the way the run reads it:
|
|
132
|
+
`updateCheck.enabled`, `.ttlHours` and `.autoUpdate`. The schema defaults all
|
|
133
|
+
three, so a preferences file that omits them behaves exactly like one that sets
|
|
134
|
+
them - which is why they are worth reporting. INFO when a value comes from the
|
|
135
|
+
schema rather than from the file, so the policy is legible in the place somebody
|
|
136
|
+
would change it. Reported, never written: a preferences file is the user's.
|
|
137
|
+
|
|
129
138
|
### script-surface
|
|
130
139
|
|
|
131
140
|
Every script a shipped command names by path exists in the installed tree. BLOCK:
|
|
@@ -80,6 +80,7 @@ const CHECK_IDS = [
|
|
|
80
80
|
"host-platform",
|
|
81
81
|
"install-present",
|
|
82
82
|
"install-version",
|
|
83
|
+
"update-policy",
|
|
83
84
|
"script-surface",
|
|
84
85
|
"skill-siblings",
|
|
85
86
|
"state-writable",
|
|
@@ -240,6 +241,43 @@ function checkInstallVersion() {
|
|
|
240
241
|
ok("install-version");
|
|
241
242
|
}
|
|
242
243
|
|
|
244
|
+
// Whether a run updates itself before it starts, read the way the run reads it.
|
|
245
|
+
//
|
|
246
|
+
// The schema defaults `enabled`, `ttlHours` and `autoUpdate`, so a preferences
|
|
247
|
+
// file with no `updateCheck` block behaves exactly like one that sets all three
|
|
248
|
+
// - and that is the problem this reports. The setting that decides whether a
|
|
249
|
+
// run silently updates itself is then invisible in the file somebody opens to
|
|
250
|
+
// change it, and the only way to learn the answer is to read the schema.
|
|
251
|
+
//
|
|
252
|
+
// Reported, never written. A preferences file is the user's, and a diagnostic
|
|
253
|
+
// that edits one is not a diagnostic.
|
|
254
|
+
function checkUpdatePolicy() {
|
|
255
|
+
const prefs = readJson(join(CLAUDE, "multi-agent-preferences.json"));
|
|
256
|
+
if (!prefs) {
|
|
257
|
+
skip("update-policy", "no preferences file to read");
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
const uc = prefs.global?.updateCheck;
|
|
261
|
+
const effective = {
|
|
262
|
+
enabled: uc?.enabled ?? true,
|
|
263
|
+
ttlHours: uc?.ttlHours ?? 24,
|
|
264
|
+
autoUpdate: uc?.autoUpdate ?? true,
|
|
265
|
+
};
|
|
266
|
+
const spelled = uc && typeof uc === "object" ? Object.keys(uc) : [];
|
|
267
|
+
const missing = ["enabled", "ttlHours", "autoUpdate"].filter((k) => !spelled.includes(k));
|
|
268
|
+
const summary = `enabled=${effective.enabled}, autoUpdate=${effective.autoUpdate}, ttlHours=${effective.ttlHours}`;
|
|
269
|
+
if (missing.length === 0) {
|
|
270
|
+
ok("update-policy");
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
report(
|
|
274
|
+
"update-policy",
|
|
275
|
+
"INFO",
|
|
276
|
+
`${summary} - ${missing.join(", ")} come from the schema, not from your preferences file`,
|
|
277
|
+
"set global.updateCheck in ~/.claude/multi-agent-preferences.json to make the policy explicit",
|
|
278
|
+
);
|
|
279
|
+
}
|
|
280
|
+
|
|
243
281
|
function checkScriptSurface() {
|
|
244
282
|
const cmdDir = join(CLAUDE, "commands", "multi-agent");
|
|
245
283
|
if (!existsSync(cmdDir)) {
|
|
@@ -957,6 +995,7 @@ function main() {
|
|
|
957
995
|
}
|
|
958
996
|
|
|
959
997
|
checkInstallVersion();
|
|
998
|
+
checkUpdatePolicy();
|
|
960
999
|
checkScriptSurface();
|
|
961
1000
|
checkSkillSiblings();
|
|
962
1001
|
checkStateWritable();
|