@mmerterden/multi-agent-pipeline 19.1.1 → 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 CHANGED
@@ -14,6 +14,19 @@ 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
+
17
30
  ## [19.1.1] - 2026-09-21
18
31
 
19
32
  ### Changed
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.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.1",
4
- "commit": "f45e4e1e3b101d0c795794793b6274ddd72d6ded",
5
- "generatedAt": "2026-09-20T20:39:30.640Z",
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": "26f5a11dbe3b8ef1db89e2e2cfa38005709394c11e2be9bd8c9b0122d3f5f40c",
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": "91633e93a671f2d32ce1b1bfb1b797bda6e8430108e2a70e5f662654321de728",
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": "8cf3ab5b8ab1eb0b5449c89fe00412623fa9b20e3afa41fe6868ae6bf3a07e0c",
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": "61fb489841e408c275d4d82769930544b13de9aa61b94656e77238bc9908cb89",
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",
@@ -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": "06ba164a2b869256ddb140d86af6f59129304c142218ccbb98a9b284e32055a7",
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": "22eac6907c5d5e7a774d5d64148645f633863b60335596bb2dcee1020f787e63",
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.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();
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-09-20T20:24:07Z",
3
+ "generatedAt": "2026-09-20T20:46:21Z",
4
4
  "skillCount": 216,
5
5
  "entries": [
6
6
  {