@mmerterden/multi-agent-pipeline 20.2.0 → 20.2.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.
package/CHANGELOG.md CHANGED
@@ -14,6 +14,17 @@ Internal file-layout changes that don't affect the slash-command surface are sti
14
14
 
15
15
  ---
16
16
 
17
+ ## [20.2.1] - 2026-09-22
18
+
19
+ ### Fixed
20
+
21
+ - **Usage reporting could attribute a run to a work identity.** On a machine with
22
+ more than one identity, the reporting login came from `identities[0]` (or the
23
+ active `gh` account inside a work repo), so a run could land on the panel under
24
+ a corporate account rather than the personal login that owns the ingest token.
25
+ A new `usageLog.reportAs` pins the reporting login and is resolved before
26
+ `identities[0]`, `gh api user` and the OS user.
27
+
17
28
  ## [20.2.0] - 2026-09-21
18
29
 
19
30
  ### 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
- "generatedAt": "2026-09-21",
4
- "version": "20.2.0",
3
+ "generatedAt": "2026-09-22",
4
+ "version": "20.2.1",
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": "20.2.0",
4
- "commit": "87293eaee6c3f722afec380007f18767beb724f9",
5
- "generatedAt": "2026-09-22T07:26:53.620Z",
3
+ "version": "20.2.1",
4
+ "commit": "41268b41863556f67bd2b0203089ff440448c25d",
5
+ "generatedAt": "2026-09-22T07:53:14.582Z",
6
6
  "algorithm": "sha256",
7
7
  "fileCount": 1082,
8
8
  "files": {
9
- "CHANGELOG.md": "db336b74d1cd8a009d6138e1d57d16f8d3e39c17861565cb1b04cc0d8bccf4ae",
9
+ "CHANGELOG.md": "e4981c5d8826bd81bf6146890253c0eddfcd6620b82d52dfaeb99033c3dc8207",
10
10
  "LICENSE": "8d8c51aaf1e1538b180c69965fa038db71be86798cc3e26a143bebfefe16a43e",
11
11
  "README.md": "ec8d6035f973ea42bafdc0661794e0f19d1881bd8b8f3e434b922f75767a2152",
12
12
  "README.tr.md": "8dc75f9402a4c0f81542ff5c7ce9fcc677bbf4ff2785d363753ad17b04843c0c",
@@ -33,7 +33,7 @@
33
33
  "docs/best-practices.md": "aeaaa12d518233cb09577c1dbaee00d62cd26f9f7e0400c681fe38742d6a7ba2",
34
34
  "docs/ecosystem.md": "5cda3cb488cc41a1f9cda01c0d86ae313f7ad034655732184db81739a9698a82",
35
35
  "docs/engineering.md": "550528cd47c7d2c921729c68d0782a00ac8e77a4bdfec479f6749f9c3235d188",
36
- "docs/facts.json": "262f6ccea34985c0c6fe827f20b3da75c4cb40e27049befac09bda99eb1d9547",
36
+ "docs/facts.json": "7ffb2eaffa2feb7e33ea6367fa9a753273ea4ca8c2b0ff992ccb5add27e94038",
37
37
  "docs/features.md": "0143ca5a5415a30d18799f809833b704529ad1417e1b0d4a2753fdbf260e6d94",
38
38
  "docs/performance.md": "bbf2f3922c25dcba0c1a9e69ef420e3871a729af5b35009a49b48a5d3c5cd151",
39
39
  "docs/recovery-guide.md": "1cc014295f8c8ffba1f1c44397b657e925f1bc0e4757217d6e69e8cfb271f3cb",
@@ -60,7 +60,7 @@
60
60
  "install/templates/codex-instructions.md": "dd78eb9553e725c039380457245793a5fc748ae37ebf5ccfe11be5ed5b9a4025",
61
61
  "install/templates/copilot-instructions.md": "d300b3bcb8d81ec1f3937eb388f993c256fda78de83aaad9efe6fe1a0865c065",
62
62
  "install/templates/multi-agent-autopilot.plist.template": "d79de637b17330e720be43b96bfcdd51797bd9ce219eafaa3dd5a8ece96e4814",
63
- "package.json": "15bb23644b17c5b3da4ce6267d60a738fa24514ad1e2542ebb66cd75a88d254d",
63
+ "package.json": "89a7b44461e2ccdfad13b48a415eae6cea91aaf643fae5b4587873f6dcbb209e",
64
64
  "pipeline/agents/android-architect.md": "baa5787b3a4c800dd065e27e05f44462927c9938c8bb676c80f18cb10e2b12c4",
65
65
  "pipeline/agents/backend-architect.md": "a83bd7f8b0a5289a1ef9a9b59d60fc759b8db260606ff2df427cf5ade5db8530",
66
66
  "pipeline/agents/bulk-reader.md": "0b9d415fab2c449d43329d759049af9401255d06b32d57a38c95e684837b19bf",
@@ -235,7 +235,7 @@
235
235
  "pipeline/multi-agent-refs/features/skill-conformance.md": "8e74c2458ad8a5d8356b4093d63cd57f7d2428aa12e9f26a7690fc467a07f382",
236
236
  "pipeline/multi-agent-refs/features/stack-skill-routing.md": "8d45fb7331509411617d2bf5c42e752eaaa7ada24dcf38140f2710b28ab4fc0f",
237
237
  "pipeline/multi-agent-refs/features/url-enrichment.md": "64af9f058ac5e7fbc662acb8839adf0d4cd67ee20db91e8f9a3b7a514bdb3eed",
238
- "pipeline/multi-agent-refs/features/usage-reporting.md": "c65dcdac7ff4ec54578cdfce3b84e818eb122a40fced9bc10a5cdb5650e9e40d",
238
+ "pipeline/multi-agent-refs/features/usage-reporting.md": "833912d61b403e00a8169f6aac58765696744e81445f55215fa95092236d8850",
239
239
  "pipeline/multi-agent-refs/features/verify-by-test.md": "6be89c7020ebdce6903e1f72cb74adeb5c4eb93a5f0e18c0b1b7c0cae619a42a",
240
240
  "pipeline/multi-agent-refs/features/verify.md": "1a6db5e7239eac01e51100353013abd16bf785a7fce88b40139fca27f4166be4",
241
241
  "pipeline/multi-agent-refs/features/visual-evidence.md": "3966efb684af64741b9c5bfe4d74d75c0173fbd6bf87a883beeaf5889c4ae808",
@@ -319,7 +319,7 @@
319
319
  "pipeline/schemas/phases.json": "e063daf30685671cef7eaf2d07f35f49d7671b82e572e78463600db2a0aeea8c",
320
320
  "pipeline/schemas/plan-todos.schema.json": "98fe2b9ba902425f13f067a494113d0c5fe03a2676e2c54fefbb319730214278",
321
321
  "pipeline/schemas/planning-output.schema.json": "af1d8189a82398702f4db3460b3b0c78038d40f6aab210c191e9d491ad5d96e6",
322
- "pipeline/schemas/prefs.schema.json": "75450dd8cebdcb0785e390593256905ac57710cfe65652003986a0d3cca29fdd",
322
+ "pipeline/schemas/prefs.schema.json": "dbb2fb88ffb2cd3ca4bb3c317f51d5ee52d8ddd8c5c145cf1e1207fbfd3702cd",
323
323
  "pipeline/schemas/review-file-exclusions.json": "2e8c44b45d21d2c82fc95aa2bf76ad3fbf2d5c68180c7b2ebf89c4a926688d77",
324
324
  "pipeline/schemas/reviewer-output.schema.json": "5e3421e72a2e26ff65943bfdb7dc9afcfc10edad79a72407ecef6b1fafa40f8c",
325
325
  "pipeline/schemas/route-config.schema.json": "6f606926c257b7ad3d2972e53d0b772714774140c473b9cb8c7cd9e52731020f",
@@ -465,7 +465,7 @@
465
465
  "pipeline/scripts/uninstall.mjs": "adbce77c1136470a767c54517d7aae9c76aeca2dc04f2294e5689a019e91f5e0",
466
466
  "pipeline/scripts/update-check.sh": "327a02306884093d2b93f395d2c297d5dc6b0c59757a740004bfafb13616fef0",
467
467
  "pipeline/scripts/update-issue-progress.sh": "7a77d9e5bd60ffad06f3cc41088e1b1d49b4dc2842f287b7f6ba6023d7bd1a52",
468
- "pipeline/scripts/usage-register.mjs": "72e4460b728c382afb35cc9266059e176155838bd762833d48ae19b99bc864f2",
468
+ "pipeline/scripts/usage-register.mjs": "ca5b4341341a897915781635785e9dc543195735046411818b673c367ae75f98",
469
469
  "pipeline/scripts/usage-report.mjs": "8b2c34e7e4881fb12489035593c79ff4372ee1eecfae483a38e2307a7e9d843d",
470
470
  "pipeline/scripts/validate-analysis-doc.mjs": "ae56b7578ef51e008a99f84eba9def3e0f1dd2bd87a3880f2083aa98b365f7a1",
471
471
  "pipeline/scripts/validate-analysis.mjs": "d2dc9ccf45f6ca2702908761939edd830d18b3b273016a4b449f26fe285d5ea1",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mmerterden/multi-agent-pipeline",
3
- "version": "20.2.0",
3
+ "version": "20.2.1",
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",
@@ -19,9 +19,13 @@ token counts, the credential-health summary. Never prompts, never code, never
19
19
  diffs, never absolute paths. The registration call sends two fields: the
20
20
  reporting user and the short hostname.
21
21
 
22
- The reporting user is the **GitHub login** - `identities[0].username`, then
23
- `gh api user`, then the OS user. Never `identity.name`, which carries a person's
24
- real name and sometimes a corporate title.
22
+ The reporting user is the **GitHub login** - `usageLog.reportAs` when set, then
23
+ `identities[0].username`, then `gh api user`, then the OS user. Never
24
+ `identity.name`, which carries a person's real name and sometimes a corporate
25
+ title. `reportAs` exists for a machine with more than one identity: `identities[0]`
26
+ and the active `gh` account can both be a work account inside a work repo, and the
27
+ panel should attribute the run to the login that owns the ingest token, not to
28
+ whichever account happened to lead the list.
25
29
 
26
30
  ## 2. The token
27
31
 
@@ -1255,6 +1255,10 @@
1255
1255
  "token": {
1256
1256
  "type": "string",
1257
1257
  "description": "Shared ingest token the receiving endpoint validates. May be left empty here and supplied via env MULTI_AGENT_USAGE_TOKEN instead. Local prefs only, never synced."
1258
+ },
1259
+ "reportAs": {
1260
+ "type": "string",
1261
+ "description": "Pins the reporting user (a SCM login) for a machine with more than one identity, where identities[0] or the active gh account may be a work account the usage panel should not attribute the run to. Reporting resolves this first, then identities[0].username, then gh api user, then the OS user. Local prefs only, never synced."
1258
1262
  }
1259
1263
  }
1260
1264
  },
@@ -55,6 +55,8 @@ function readJson(file) {
55
55
 
56
56
  /** The name this machine reports under: the GitHub login, never the git identity. */
57
57
  export function reportingUser(prefs, { env = process.env } = {}) {
58
+ const pinned = prefs?.global?.usageLog?.reportAs;
59
+ if (typeof pinned === "string" && pinned.trim()) return pinned.trim();
58
60
  const declared = prefs?.global?.identities?.[0]?.username;
59
61
  if (typeof declared === "string" && declared.trim()) return declared.trim();
60
62
  try {