@mmerterden/multi-agent-pipeline 16.7.0 → 16.8.0

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
@@ -26,6 +26,26 @@ Internal file-layout changes that don't affect the slash-command surface are sti
26
26
 
27
27
  - **`smoke-website-deploy-identity.sh` (20 assertions).** It runs the script against throwaway repos with real remotes rather than grepping the doc: the happy path lands and pushes, an exported `GIT_AUTHOR_EMAIL` halts with the commit still local, an unchanged tree makes no empty commit, a matching config is preserved while a wrong name is corrected, and missing or non-repository arguments exit 2. Wiring is asserted separately, since a correct script nothing calls is its own failure mode.
28
28
 
29
+ ## [16.8.0] - 2026-08-25
30
+
31
+ Usage reporting answers the question it was built for, and stops carrying what it never should have.
32
+
33
+ ### Changed
34
+
35
+ - **`usageLog.enabled` now defaults to `true`.** Reporting was opt-in and nothing opted in, so the panel showed three runs across eight days and could not distinguish "nobody uses this" from "the pipe is broken" - the sender swallows every error by design. On-by-default is defensible only because of the change below: the payload carries no repository name, no path, no prompt, no diff and no secret. `usageLog.optOut: true` remains the hard escape hatch, and `enabled: false` still silences the emitter completely.
36
+ - **The event carries the command that ran.** `commandOf()` returned `state.mode`, so every row read `full` or `local` and the one question the panel exists to answer - which commands people actually run - had no answer in the data. It now sends the invoked command; `mode` continues to ship separately.
37
+
38
+ ### Fixed
39
+
40
+ - **The repository name is no longer sent.** `rp` carried the raw project name, which put a corporate repository into the maintainer's database - the exact disclosure this telemetry must not make. It now sends a one-way digest: stable, so runs still group per project, and unreadable back into a name. The panel never needed the name, only the ability to tell one project's runs from another's. The row already stored was redacted in place.
41
+
42
+ ## [16.7.1] - 2026-08-25
43
+
44
+ ### Fixed
45
+
46
+ - **The two commands 16.7.0 added were not listed anywhere a user looks.** `/multi-agent:review-analysis` and `/multi-agent:feedback` shipped without an entry in `/multi-agent:help` (either language), in either README, or in the Copilot and Codex help variant - so the release published two commands nobody could discover. Every gate was green through seven rounds and none of them caught it, because no gate asks whether a new command was documented; a command a user cannot find is close to a command that does not exist.
47
+ - Making room for those entries took `help/SKILL.md` past its grandfathered token ceiling (8586 against 8500). The ceiling is governed by a list that only ratchets down, so raising it was not available - and should not have been. The new lines were cut first, and the rest came from the `store-ready` entry, which spent four lines per language on detail that belongs in its own command doc. A help listing is one line per command. Space for the new commands was taken back from an entry that had more than its share rather than borrowed from the budget.
48
+
29
49
  ## [16.7.0] - 2026-08-25
30
50
 
31
51
  Two commands: one that reviews the document instead of the diff, one that lets a user say something went wrong.
package/README.md CHANGED
@@ -77,7 +77,7 @@ The discipline behind all of this - bounded loops, evidence gates, token-budgete
77
77
  | Audit | `/multi-agent:design-check` | Mock-mode vs Figma conformance, local-only |
78
78
  | Audit | `/multi-agent:testflight-validation` | Pre-submission gates for a TestFlight build: static archive audit → Apple's `altool --validate-app` → Review-Guidelines check. Validates only, never uploads |
79
79
 
80
- Helpers: `setup`, `status`, `resume #N`, `kill #N`, `garbage-collect`, `prune-logs`, `purge`, `review`, `test`, `channels`, `stack`, `update`, `sync`, `refactor`, `jira`, `issue`, `analysis`, `create-jira`, `save`, `routines`, `forget`. 53 commands in all - full list: `/multi-agent:help`.
80
+ Helpers: `setup`, `status`, `resume #N`, `kill #N`, `garbage-collect`, `prune-logs`, `purge`, `review`, `test`, `channels`, `stack`, `update`, `sync`, `refactor`, `jira`, `issue`, `analysis`, `review-analysis`, `feedback`, `create-jira`, `save`, `routines`, `forget`. 53 commands in all - full list: `/multi-agent:help`.
81
81
 
82
82
  ## Stacks
83
83
 
package/README.tr.md CHANGED
@@ -76,7 +76,7 @@ Bunun arkasındaki disiplin - sınırlı loop'lar, kanıt kapıları, token-büt
76
76
  | Audit | `/multi-agent:design-check` | Mock-mode vs Figma uygunluğu, yalnızca lokal |
77
77
  | Audit | `/multi-agent:testflight-validation` | TestFlight build için pre-submission kapıları: statik archive denetimi → Apple'ın `altool --validate-app`'i → Review-Guidelines kontrolü. Yalnızca doğrular, asla yüklemez |
78
78
 
79
- Yardımcılar: `setup`, `status`, `resume #N`, `kill #N`, `garbage-collect`, `prune-logs`, `purge`, `review`, `test`, `channels`, `stack`, `update`, `sync`, `refactor`, `jira`, `issue`, `analysis`, `create-jira`, `save`, `routines`, `forget`. Toplam 53 komut - tam liste: `/multi-agent:help`.
79
+ Yardımcılar: `setup`, `status`, `resume #N`, `kill #N`, `garbage-collect`, `prune-logs`, `purge`, `review`, `test`, `channels`, `stack`, `update`, `sync`, `refactor`, `jira`, `issue`, `analysis`, `review-analysis`, `feedback`, `create-jira`, `save`, `routines`, `forget`. Toplam 53 komut - tam liste: `/multi-agent:help`.
80
80
 
81
81
  ## Stack'ler
82
82
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mmerterden/multi-agent-pipeline",
3
- "version": "16.7.0",
3
+ "version": "16.8.0",
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",
@@ -116,11 +116,13 @@ Status & Resume:
116
116
  Post-Hoc & Side-Channel:
117
117
 
118
118
  /multi-agent:channels Post multi-channel report (Jira / Confluence / Wiki / PR description)
119
+ /multi-agent:feedback "msg" Tell the maintainer something broke; only your text is sent
119
120
  /multi-agent:review Parallel review of a PR or branch diff; no URL -> pick open GitHub/Bitbucket PRs
120
121
  /multi-agent:review-jira Grade a Jira issue's pipeline-readiness -> comment the gaps on it
121
122
  /multi-agent:review-issue Grade a GitHub issue's pipeline-readiness -> comment the gaps on it
122
123
  /multi-agent:analysis ["analysis-name"] Feature-spec analysis (Figma + Swagger + Confluence + repos) → per-platform v3 doc (23-section Full / 7-section Lite)
123
124
  /multi-agent:analysis-resolve [doc] Resolve Section 20 open questions of an analysis doc, one at a time with source-labeled candidates
125
+ /multi-agent:review-analysis [doc] Review a written analysis; findings cite the rule they break
124
126
  /multi-agent:complaint-analysis ["run-name"] [--file path] Customer-complaint triage: Graylog evidence per trx/conv id + read-only repo correlation → client/bff root cause + fix plan + dev prompt, or core routing recommendation
125
127
  /multi-agent:build-optimize iOS-only Xcode build perf wrapper → benchmark + analyze + recommend-first .build-benchmark/optimization-plan.md
126
128
  /multi-agent:create-jira ["desc"] [figma-url] [swagger-url] Create a Jira Task/Bug/Story matching team conventions (asks type + mining + active sprint + auto-sizing sections + preview & approval)
@@ -128,10 +130,7 @@ Post-Hoc & Side-Channel:
128
130
  /multi-agent:search Cross-task log search with smart ranking; --semantic queries triage corpus
129
131
  /multi-agent:scan Skill security scan against tiered pattern catalog
130
132
  /multi-agent:refactor Best practices + bug hunt + upstream drift + toolkit MCP research -> one plan, approval, dev + sync
131
- /multi-agent:store-ready [repo] [--archive=|--ipa=|--aab=|--apk=] [--skip-sweep] Pre-submission store readiness,
132
- iOS + Android, local-only. Three symmetric gates per platform: static package audit,
133
- the store's own validator, policy review vs repo source. Plus the running-app sweep.
134
- A skipped gate is never counted as a pass. Validates only, never uploads.
133
+ /multi-agent:store-ready [repo] [--archive=|--ipa=|--aab=|--apk=] [--skip-sweep] Pre-submission store readiness, iOS + Android, local-only: three symmetric gates per platform plus the running-app sweep. A skipped gate is never a pass. Validates only, never uploads.
135
134
  /multi-agent:testflight-validation [repo] [--ipa=|--archive=] iOS-pinned alias of :store-ready, kept because it is
136
135
  the name you reach for when the target is TestFlight. Same three gates, one implementation.
137
136
  /multi-agent:ios-coding-standard [module] Audit an iOS module against the 99-rule coding-standard registry -> remediation
@@ -391,11 +390,13 @@ Status & Resume:
391
390
  Post-Hoc & Side-Channel:
392
391
 
393
392
  /multi-agent:channels Multi-channel rapor gönder (Jira / Confluence / Wiki / PR description)
393
+ /multi-agent:feedback "mesaj" Bakımcıya bir şeyin bozulduğunu bildir; yalnızca yazdığın metin gider
394
394
  /multi-agent:review PR veya branch diff'ini paralel review et; URL yoksa -> açık GitHub/Bitbucket PR'larını seçtir
395
395
  /multi-agent:review-jira Jira maddesinin pipeline'a hazırlığını değerlendir -> eksikleri yorum olarak ekle
396
396
  /multi-agent:review-issue GitHub issue'nun pipeline'a hazırlığını değerlendir -> eksikleri yorum olarak ekle
397
397
  /multi-agent:analysis ["analysis-name"] Feature-spec analizi (Figma + Swagger + Confluence + repolar) → platform başına v3 doküman (23 bölüm Full / 7 bölüm Lite)
398
398
  /multi-agent:analysis-resolve [doc] Analiz dokümanının Bölüm 20 açık sorularını kaynak etiketli adaylarla teker teker çözer
399
+ /multi-agent:review-analysis [doc] Yazılmış analizi review eder; bulgular ihlal edilen kuralı gösterir
399
400
  /multi-agent:complaint-analysis ["run-adı"] [--file yol] Müşteri şikayeti triyajı: trx/conv id ile Graylog kanıtı + salt-okunur repo eşleştirme → client/bff kök neden + fix planı + dev prompt'u, veya core'a yönlendirme önerisi
400
401
  /multi-agent:build-optimize iOS-only Xcode build performance wrapper → benchmark + analiz + recommend-first .build-benchmark/optimization-plan.md
401
402
  /multi-agent:create-jira ["açıklama"] [figma-url] [swagger-url] Takım standartlarına uygun Jira Task/Bug/Story oluştur (tip sorar + convention mining + aktif sprint + auto-sizing bölümler + önizleme & onay)
@@ -403,10 +404,7 @@ Post-Hoc & Side-Channel:
403
404
  /multi-agent:search Task log'larında akıllı arama; --semantic triage corpus'unu sorgular
404
405
  /multi-agent:scan Skill güvenlik taraması (tiered pattern catalog)
405
406
  /multi-agent:refactor Uyarlanmış best-practice + bug avı + upstream-drift + multi-agent-toolkit MCP araştırması -> tek plan, onay, dev + sync
406
- /multi-agent:store-ready [repo] [--archive=|--ipa=|--aab=|--apk=] [--skip-sweep] Yükleme öncesi store hazırlığı,
407
- iOS + Android, yalnızca lokal. Platform başına 3 simetrik kapı: statik paket denetimi,
408
- store'un kendi doğrulayıcısı, kaynağa karşı politika incelemesi. Artı çalışan-app sweep'i.
409
- Atlanan kapı asla pass sayılmaz. Sadece doğrular, asla yüklemez.
407
+ /multi-agent:store-ready [repo] [--archive=|--ipa=|--aab=|--apk=] [--skip-sweep] Yükleme öncesi store hazırlığı, iOS + Android, yalnızca lokal: platform başına 3 simetrik kapı artı çalışan-app sweep'i. Atlanan kapı asla pass sayılmaz. Sadece doğrular, asla yüklemez.
410
408
  /multi-agent:testflight-validation [repo] [--ipa=|--archive=] :store-ready'nin iOS'a sabitlenmiş alias'ı; hedef
411
409
  TestFlight olduğunda akla gelen isim olduğu için korunuyor. Aynı 3 kapı, tek implementasyon.
412
410
  /multi-agent:ios-coding-standard [modül] Bir iOS modülünü 99 kurallık kodlama-standardı registry'sine göre denetler -> düzeltme
@@ -1061,8 +1061,8 @@
1061
1061
  "properties": {
1062
1062
  "enabled": {
1063
1063
  "type": "boolean",
1064
- "default": false,
1065
- "description": "Master switch. When false the emitter exits silently and nothing leaves the machine."
1064
+ "default": true,
1065
+ "description": "Master switch, on by default. The payload carries no repository name, path, prompt, diff or secret - only which command ran, how long, how many tokens, and whether it failed - which is what makes on-by-default defensible. Set false, or optOut true, and the emitter exits silently with nothing leaving the machine."
1066
1066
  },
1067
1067
  "optOut": {
1068
1068
  "type": "boolean",
@@ -26,6 +26,7 @@ import { homedir, platform } from "os";
26
26
  import { dirname, join } from "path";
27
27
  import { fileURLToPath, pathToFileURL } from "url";
28
28
  import { execFileSync } from "child_process";
29
+ import { createHash } from "crypto";
29
30
  import { costUsd } from "./_cost.mjs";
30
31
 
31
32
  const __dirname = dirname(fileURLToPath(import.meta.url));
@@ -272,13 +273,28 @@ function inputType(state) {
272
273
  return "free-text";
273
274
  }
274
275
 
276
+ // The command that was actually invoked (`/multi-agent:analysis`, `:review`,
277
+ // ...). This used to return `state.mode`, so every row read "full" or "local"
278
+ // and the one question the panel exists to answer - which command did people
279
+ // run - had no answer in the data. `mode` still ships separately as `m`.
275
280
  function commandOf(state) {
281
+ const c = state.command;
282
+ if (typeof c === "string" && c.trim()) return c.trim().slice(0, 60);
276
283
  if (state.mode) return state.mode;
277
284
  if (state.onlyDevelop) return "dev";
278
285
  if (state.localMode) return "local";
279
286
  return "full";
280
287
  }
281
288
 
289
+ // A repository name is the user's, not ours. It put a corporate project into
290
+ // the maintainer's database, which is the disclosure this telemetry must not
291
+ // make - and the panel never needed the name, only the ability to tell one
292
+ // project's runs from another's. A digest does that and cannot be read back.
293
+ function projectDigest(name) {
294
+ if (typeof name !== "string" || !name.trim()) return null;
295
+ return `p${createHash("sha256").update(name.trim()).digest("hex").slice(0, 8)}`;
296
+ }
297
+
282
298
  function resolveTracker(state) {
283
299
  const id = state.taskId || state.shortId;
284
300
  if (id == null) return null;
@@ -490,7 +506,7 @@ function buildEvent(state) {
490
506
  lo: Boolean(state.localMode),
491
507
  dev: Boolean(state.onlyDevelop),
492
508
  in: inputType(state),
493
- rp: state.project || null,
509
+ rp: projectDigest(state.project),
494
510
  ph: typeof state.currentPhase === "number" ? state.currentPhase : null,
495
511
  st: state.status || null,
496
512
  hr: state.haltReason || null,
@@ -106,6 +106,8 @@ Utility Commands (dash form on Copilot, colon form on Claude Code):
106
106
  /multi-agent:review Review a PR or branch diff; no URL -> pick open GitHub/Bitbucket PRs
107
107
  /multi-agent:review-jira Grade a Jira issue's pipeline-readiness -> comment the gaps
108
108
  /multi-agent:review-issue Grade a GitHub issue's pipeline-readiness -> comment the gaps
109
+ /multi-agent:review-analysis [doc | page | KEY] Review a written analysis: gates first, then parallel model review; findings cite the rule
110
+ /multi-agent:feedback "msg" Tell the maintainer something broke; only your text is sent, shown before it goes
109
111
  /multi-agent:create-jira ["desc"] [figma-url] [swagger-url] Create a Jira Task/Bug/Story matching team conventions (asks type + preview + approval)
110
112
  /multi-agent:sync Sync ecosystem (Claude + Copilot + website)
111
113
  /multi-agent:setup Keychain tokens + Git identity + language onboarding