@mmerterden/multi-agent-pipeline 20.22.0 → 20.23.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 (51) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/docs/adr/0010-own-code-graph.md +3 -2
  3. package/docs/facts.json +3 -3
  4. package/docs/features.md +2 -2
  5. package/install/_usage-lifecycle.mjs +44 -0
  6. package/install/catalog-history.json +1 -1
  7. package/install/index.mjs +2 -0
  8. package/manifest.json +54 -51
  9. package/package.json +1 -1
  10. package/pipeline/commands/multi-agent/create-jira/SKILL.md +1 -1
  11. package/pipeline/commands/multi-agent/setup/SKILL.md +3 -3
  12. package/pipeline/commands/multi-agent/update/SKILL.md +3 -3
  13. package/pipeline/lib/analysis-jira-write.sh +25 -5
  14. package/pipeline/lib/json-file-lock.mjs +24 -2
  15. package/pipeline/multi-agent-refs/analysis/evidence.md +1 -1
  16. package/pipeline/multi-agent-refs/cross-cli-contract.md +1 -0
  17. package/pipeline/multi-agent-refs/features/analysis-jira.md +13 -2
  18. package/pipeline/multi-agent-refs/features/code-graph.md +40 -3
  19. package/pipeline/multi-agent-refs/features/usage-reporting.md +40 -23
  20. package/pipeline/multi-agent-refs/generate-issue.md +11 -1
  21. package/pipeline/multi-agent-refs/knowledge.md +18 -0
  22. package/pipeline/multi-agent-refs/phases/phase-1-plan.md +2 -2
  23. package/pipeline/schemas/code-graph.schema.json +3 -3
  24. package/pipeline/schemas/prefs.schema.json +29 -6
  25. package/pipeline/scripts/_code-graph.mjs +121 -12
  26. package/pipeline/scripts/_diff-impact.mjs +67 -32
  27. package/pipeline/scripts/_supertypes.mjs +146 -0
  28. package/pipeline/scripts/analysis-story-body.mjs +24 -8
  29. package/pipeline/scripts/analysis-story-tree.mjs +16 -2
  30. package/pipeline/scripts/capture-flush.sh +4 -1
  31. package/pipeline/scripts/code-graph-rules/android.json +1 -0
  32. package/pipeline/scripts/code-graph-rules/ios.json +6 -1
  33. package/pipeline/scripts/code-graph-rules/node.json +1 -0
  34. package/pipeline/scripts/code-graph-rules/python.json +1 -0
  35. package/pipeline/scripts/git-path.mjs +21 -0
  36. package/pipeline/scripts/graph-affected.mjs +2 -1
  37. package/pipeline/scripts/graph-confirm.mjs +140 -0
  38. package/pipeline/scripts/learnings-ledger.mjs +3 -2
  39. package/pipeline/scripts/product-context.mjs +30 -19
  40. package/pipeline/scripts/symbol-existence-gate.mjs +21 -9
  41. package/pipeline/scripts/test-gap-scan.mjs +4 -1
  42. package/pipeline/scripts/test-strength.mjs +7 -8
  43. package/pipeline/scripts/usage-identity.mjs +1 -1
  44. package/pipeline/scripts/usage-register.mjs +181 -15
  45. package/pipeline/scripts/validate-code-graph.mjs +3 -3
  46. package/pipeline/scripts/valven-gate.mjs +9 -1
  47. package/pipeline/scripts/valven-port.mjs +16 -5
  48. package/pipeline/scripts/valven-split.mjs +6 -4
  49. package/pipeline/skills/.skill-manifest.json +3 -3
  50. package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +3 -3
  51. package/pipeline/skills/shared/core/multi-agent-update/SKILL.md +3 -3
package/manifest.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@mmerterden/multi-agent-pipeline",
3
- "version": "20.22.0",
4
- "commit": "03ec5c2c13457c10b8531763fb36cf24a3f50a5a",
5
- "generatedAt": "2026-10-12T23:07:06.881Z",
3
+ "version": "20.23.1",
4
+ "commit": "202735c51f3f1ba48c52d2faff53b4ebca2ce0e9",
5
+ "generatedAt": "2026-10-13T12:42:14.108Z",
6
6
  "algorithm": "sha256",
7
- "fileCount": 1364,
7
+ "fileCount": 1367,
8
8
  "files": {
9
- "CHANGELOG.md": "f5a379e2ae91bb3475d61749b8b192b8cf5ce48d37f1d299f303b9de912acfaa",
9
+ "CHANGELOG.md": "4989a15706727f4056d2f6008d9fb214369b3d9d9437dfcad867e79bedfcd798",
10
10
  "LICENSE": "8d8c51aaf1e1538b180c69965fa038db71be86798cc3e26a143bebfefe16a43e",
11
11
  "README.md": "4cb9fee0aed62bd1467bdc09954e011612b0de6e7895d663f297bc8778e00b2e",
12
12
  "README.tr.md": "f30edbc26e51e311077fbb5b64234e70285db92340e6dadc259cfd673f104326",
@@ -21,7 +21,7 @@
21
21
  "docs/adr/0007-multi-tool-adapter-framework.md": "66943f1461fc6fc77f23eeba54a4ed5f3b570fae10c68910a4d3cb7869d2695a",
22
22
  "docs/adr/0008-installer-modularization-and-secret-leak-defense.md": "16f1818285ea8bfa61b1629656221b645c4cee3158d3c824d9a9dcd115c8e79b",
23
23
  "docs/adr/0009-claude-stack-skills-plugin-only.md": "cd15ec05a52fa659421e66dbb239e6ced1db48c7ecb38b30dbd26be6ad2b08e4",
24
- "docs/adr/0010-own-code-graph.md": "453cae12c76522f583ede9c2cd31b41f8871bb3631ac7844654e448f910ee71b",
24
+ "docs/adr/0010-own-code-graph.md": "9ac652f3ad42a7d055af42a6a836a8e84c0ad3c7b2c05575f781774ee3adec6b",
25
25
  "docs/adr/0011-dormant-ci.md": "48ad4c76652751d8cb9fa9584df4b0ceca0e0b19a9650e18abd7fb92a38199da",
26
26
  "docs/adr/0012-macos-only.md": "680e1cff8ebf583be443470caefc76b4728aa4440480f383a5f22dd980f76601",
27
27
  "docs/adr/0013-lsp-code-intelligence.md": "4ad0bac363a8e9a7f2e548c1866f056308784708ea41e6bf1e8ca91af8f206c8",
@@ -34,8 +34,8 @@
34
34
  "docs/best-practices.md": "f8b75b0d38b5896a6a852bb30a1edddeb24dab8b5b7b1d9313290e1241c72024",
35
35
  "docs/ecosystem.md": "328a56a9f48514bca380d311a8e62246d85ccb18668f873047a883596153395f",
36
36
  "docs/engineering.md": "550528cd47c7d2c921729c68d0782a00ac8e77a4bdfec479f6749f9c3235d188",
37
- "docs/facts.json": "535fb530e718e489bad8a010d7ab2d13b92c005e3ab31cd7cfc95899d348da8e",
38
- "docs/features.md": "17e9971ba14b940a562c99df727150fadc8688d793a8dda4b8204482d51c30a4",
37
+ "docs/facts.json": "0f668242196f9e4ad1fe68871118a8e28da6a9d2598228b2074f1b6760facdcc",
38
+ "docs/features.md": "79a4b5a9722375ea16d7b337148d47bbea2951c8eb7bc8a6e616c9b3ed2c8703",
39
39
  "docs/performance.md": "bbf2f3922c25dcba0c1a9e69ef420e3871a729af5b35009a49b48a5d3c5cd151",
40
40
  "docs/recovery-guide.md": "59a8f1b66b34cb9ff5507b3d54dac3b9915e184aa044d9c758d18cac818d510e",
41
41
  "docs/server-readiness.md": "ea21eee6a08c6fc0f2d1da8058acd5a50c556cea486d3acfe48fc0b23f4581fc",
@@ -52,19 +52,20 @@
52
52
  "install/_plugin-skills.mjs": "2de429260472a7b60bfe800eabc111624fa5f82a175e283481b05e5349dad572",
53
53
  "install/_telemetry.mjs": "5433d753f909beed2c8789272bba05e245482c472f83d3444f58000c4c9a634b",
54
54
  "install/_unattended-profile.mjs": "e1ed82bde35d19105ee12c2a551eb778912b0e5c93ab227fd15c993098d98de0",
55
+ "install/_usage-lifecycle.mjs": "4b010c4e75d6f8e13b58d80a93cc9407f42ccde781c9ed12dcb8e7faf05e526c",
55
56
  "install/_xcode-skills.mjs": "1a7e20f1e6743324b941c5d3ecac9f94c65fff1534ffd9c63b39cbea4f8d101a",
56
- "install/catalog-history.json": "8fcb7fcd3b19c1e9bf9685af6031d6f128717f7efdd81d049a0ff158d2633e26",
57
+ "install/catalog-history.json": "e708368bf9d2b704996ece7e79a2315d91e0244c437eb41c2d339b76399a7cb1",
57
58
  "install/claude.mjs": "106ce353ebc19c8319d057ce342e1f989519510465c798399076b5f3d8727904",
58
59
  "install/codex.mjs": "08925fe9f3ecdf509b37f01105652c847475d20fcde2db0d679b9a7d663ca145",
59
60
  "install/copilot.mjs": "41dc394b8a3ae77cfd194ce0ca9bbcafce9bdce349f1f72eeb86569f993e15fe",
60
- "install/index.mjs": "07ec26ecdd81cc983f146faf4b7095c98edce39c89a6fd83c24ce43229d2d9e7",
61
+ "install/index.mjs": "bc932c5794fd1a4a04e42351b24efa453baec85166a7860cc1dc1bedbd07f2b7",
61
62
  "install/templates/claude-hooks.json": "12d6bb0c3cd7d71b1d2029e2eb4370ca7b5ee55bd88f96b09c927d8119a87be7",
62
63
  "install/templates/codex-instructions.md": "dd78eb9553e725c039380457245793a5fc748ae37ebf5ccfe11be5ed5b9a4025",
63
64
  "install/templates/copilot-instructions.md": "2450ca338960e298a231fde7b0e0a08001cbefc0da94d850a6a686eaee8c9b94",
64
65
  "install/templates/multi-agent-autopilot-awake.plist.template": "ddd25c76c56fcbb38a89de8e35637372d70ace993d6bc487a88ca9cfb702fe1f",
65
66
  "install/templates/multi-agent-autopilot.plist.template": "122c8a61cd927edd99375d6e3da40f1d42bcceed5b6641785c8b28bb930bc77e",
66
67
  "install/unattended-profile-legacy.json": "f52e86b998956f09ad306b1735a6c10b58580d7082d8a55665a4c6bb15c3aa1f",
67
- "package.json": "c98f4e94e6d67e82f3f2656f3e82bbb4f45243aa9e750c5881cc66439ffbbaf9",
68
+ "package.json": "9378b09fd1cc14fce2d55dfc9d0e607728bcbcf09aee276058e760702b7d3b82",
68
69
  "pipeline/agents/android-architect.md": "11fb74543cb0ebcf9525ca6654fe95d53da7229e0bf4a1149b31fd9005abc453",
69
70
  "pipeline/agents/backend-architect.md": "b02a606c301e4714131aed70ae6d16eeb77fbc819a001e2752cff2488d4246de",
70
71
  "pipeline/agents/bulk-reader.md": "6597052cd7d205bac2b1c7633f5232fe1a40730664a913b8eb77efd5a786dc25",
@@ -91,7 +92,7 @@
91
92
  "pipeline/commands/multi-agent/build-optimize/SKILL.md": "e74d6f5be703acef1704092d5fe53485d95fe6c220bb768accaf68ebd212b7c1",
92
93
  "pipeline/commands/multi-agent/channels/SKILL.md": "5c6d54c7153ceba6b19ecd55f2211d5ef0f97c472aac0623729fbe9f2fb9a3c0",
93
94
  "pipeline/commands/multi-agent/complaint-analysis/SKILL.md": "b9ab7b9444cf99f25868d90f050ed96f04ac8cd8ea18d0999376184b067fc2bc",
94
- "pipeline/commands/multi-agent/create-jira/SKILL.md": "603f2e2c66961b9f07bce51b969b2cdaed87b7bf429db89e33c4f0a9d9d6c906",
95
+ "pipeline/commands/multi-agent/create-jira/SKILL.md": "ac3d3e0ab2fb079b7c4107928573912699f68600f922b2f453be49c65317665a",
95
96
  "pipeline/commands/multi-agent/design-check/SKILL.md": "d3cb1b50f2d14cf22a38f4c0db98c852e8ed0586e969f7e6da7c1d65f36554eb",
96
97
  "pipeline/commands/multi-agent/diff-explain/SKILL.md": "9c851d2a9fa05b7bfee6781b6eae31418a1a3fad5587965f0c7fcd5c0657720d",
97
98
  "pipeline/commands/multi-agent/doctor/SKILL.md": "a11ac7274774847ebe8519ed12741da15ef361cbf7e86d8bccdff7bbd3054bd0",
@@ -130,7 +131,7 @@
130
131
  "pipeline/commands/multi-agent/search/SKILL.md": "231f0dd266907423cc45feeadc4170852dc6fd45239e0bee3ee4e08d4d0f5958",
131
132
  "pipeline/commands/multi-agent/security-review/SKILL.md": "dfc2fad484c81169912062391f7ad97500ef113d95741902e5e18e7dd60b6da1",
132
133
  "pipeline/commands/multi-agent/serve/SKILL.md": "e931219d8be258a155a692d23c2b275c2e7e0a761b3f0354c943e26d2ce7b035",
133
- "pipeline/commands/multi-agent/setup/SKILL.md": "825de99f84b31f021c43e7d081b9e8c1d1af763570edc8cb6c81e5de1c42fd0f",
134
+ "pipeline/commands/multi-agent/setup/SKILL.md": "08da72b40f2da40d1e68e9d5a31d27696adaacfe8b0e74724ba31f74922cdbcb",
134
135
  "pipeline/commands/multi-agent/stack/SKILL.md": "26ecb48b28b61250330edb26fdfd014e401992e4f1329c572766ba4e2dc6e35d",
135
136
  "pipeline/commands/multi-agent/status/SKILL.md": "b08338841a5282f8ae2494751001aa31cbf4829146a58ed2c395b1c062b48443",
136
137
  "pipeline/commands/multi-agent/steer/SKILL.md": "07e738c228ba328f717f86e97e7af207df090b16433e28e613d430c3ff0aee3e",
@@ -143,7 +144,7 @@
143
144
  "pipeline/commands/multi-agent/test/SKILL.md": "5a67be2b1ec0321e79f8b7f35be53676e349e55a4f8ca09a07f0de89dadac8c4",
144
145
  "pipeline/commands/multi-agent/testflight-validation/SKILL.md": "38fa8d3d3c8340d025e100c53a70183cbad22665b7ddccbb6102c05986cce489",
145
146
  "pipeline/commands/multi-agent/uninstall/SKILL.md": "b2124820a6e10cdd72be71df2183aad4f8bd8988ec90248c88599c1514f7d9ab",
146
- "pipeline/commands/multi-agent/update/SKILL.md": "4b9ca40382eb2bd06f8b1a483d6232d1e9941d6e6288a21e83fa977482a1bae7",
147
+ "pipeline/commands/multi-agent/update/SKILL.md": "6954f21cb35746f26f2d1a59a6be3fa032c17bdb8745e77fc72170cabd08665f",
147
148
  "pipeline/commands/sim-test.md": "b09038b9511108c77fae5e0c11f8515b5c64eb8b63a77fe8c2ff5907ddd0313a",
148
149
  "pipeline/contract/CHANGELOG.md": "0813f5737219bafad3eb4daf809b9754937fae8533e07caf3850e30b2685662b",
149
150
  "pipeline/contract/README.md": "6239eb0877d70e70d63db74bae3499599b0425c80c71eceb6bb0a981523eaa89",
@@ -168,7 +169,7 @@
168
169
  "pipeline/lib/_jira-auth.sh": "fc468736057f8841d824eb1a4db527442562f8979fea333ebaef5527f4369e9f",
169
170
  "pipeline/lib/account-resolver.sh": "f7bef9beba3f839268509361651be0b1e1f319f2f23821f90ba466fdf185a8f6",
170
171
  "pipeline/lib/agent-model-sync.mjs": "2e0264ca8d8fef761563db219d588fed9067847043f960f68f055c186c20b668",
171
- "pipeline/lib/analysis-jira-write.sh": "d9ad4065d8675db42f3f6248df992842e6f73fa6e5d571dfc5326ba9d37283c6",
172
+ "pipeline/lib/analysis-jira-write.sh": "d38a7665c91a4b65b219381184357a723a43c3daff8fae0bace6f55605f8e5bf",
172
173
  "pipeline/lib/analysis-quality.mjs": "58dec3447178ff05dc0687c256fa5134c909cd485dd22a0932eafc05ba5c9ad8",
173
174
  "pipeline/lib/analysis-sections.mjs": "e31ddf128ef7a6d1b9061896fc2d7cb4b5165202d8e03a46a1e0f9ec906ed01d",
174
175
  "pipeline/lib/ask-choice.sh": "b77282645cf64d016cdebf43d1ee299874a1411f5c51b6ae3b6c580d1bbfe78a",
@@ -202,7 +203,7 @@
202
203
  "pipeline/lib/issue-fetcher.sh": "36f6eb41935fa44072cf3c9a92a5698d4ffd762103eb57f733e65687ab47479e",
203
204
  "pipeline/lib/jira-epic-link.sh": "b5f9ce1067cd8e9f0e547da4e681b71e4ff8c145e9a759fc98f83703dfca4d35",
204
205
  "pipeline/lib/jira-publish.sh": "a32e6a682ae730ddd9c6df64b9ece1fb73c797111c63f5c247d7e733668da6b7",
205
- "pipeline/lib/json-file-lock.mjs": "6ff8d8d7b890fc549e07287eca1e8261b69f930ec523d08fb73786677aa0a45a",
206
+ "pipeline/lib/json-file-lock.mjs": "d8a9075e6fa4fd10d4fb84efd438f92906fb3181455d661ca5fe604c57441524",
206
207
  "pipeline/lib/md2confluence-v3.py": "3677ca47931e4b3d0fd2ce3e11299fc5f6d24799eb8332e37dd60b6c3c4653a2",
207
208
  "pipeline/lib/model-dispatch.sh": "6500a5a7cb6a4c099cf1d01678bc9465a3d4eb1001e1f516dcc5eacd69577158",
208
209
  "pipeline/lib/model-rung.sh": "8cecb4d390f306270713bd162e311dee879995e393970405c9a8f9af11da1727",
@@ -248,7 +249,7 @@
248
249
  "pipeline/multi-agent-refs/_repo-picker.md": "c325e86d00fa5e26893eeafcfae8c809f62e34e2ec643b4b364ac4c6f9caca45",
249
250
  "pipeline/multi-agent-refs/analysis-template-corporate.md": "ffccd6ba4b8db4e1492c5b569dbd14f1953dd8da6a3aa5825e7563506b820779",
250
251
  "pipeline/multi-agent-refs/analysis-template.md": "7062312f153aa9219a1ced9f0b60ac3583b4a2034d9d205cf7144ac9bf70ef17",
251
- "pipeline/multi-agent-refs/analysis/evidence.md": "30033b52c4f298791f21275b8c0382b5d76fc1b6780e4af66753237005de55c9",
252
+ "pipeline/multi-agent-refs/analysis/evidence.md": "b0c216dc8869b729947ac5ecd33d20034b1a90bd8d648028a20ea7214b748658",
252
253
  "pipeline/multi-agent-refs/analysis/intake.md": "f5fb9e16620acb63fa41d14165d04f0fa6f5f7e178250a6f2b5b6d921d176f53",
253
254
  "pipeline/multi-agent-refs/analysis/locked.md": "c914d3da5182bfbb3ba613299cf38f12832fda2f17e1968e5a8fd7b32d867bdf",
254
255
  "pipeline/multi-agent-refs/analysis/redesign.md": "6314fc1e14e05166efbea4819d5b07adb838d0704bde61b4b69cef637f251d58",
@@ -273,7 +274,7 @@
273
274
  "pipeline/multi-agent-refs/component-dispatch.md": "2ab9094aa716397e4840cd48f736c3f4fc3e7c4f9ccc5c7c7c52f9e8b0a28fb5",
274
275
  "pipeline/multi-agent-refs/component-generation.md": "04fdb3fd0f1c129e1df8243184a3225cebd9c4f63511d6015eb356a92eda8891",
275
276
  "pipeline/multi-agent-refs/conventions-defaults.md": "608a05ec6332fc19ee12c0418fbf25165f80e6c06cfee9efed7f27fab185d97d",
276
- "pipeline/multi-agent-refs/cross-cli-contract.md": "a8d5cbbf56862ee2a897e2961b1a7f5adc502765747e639bed43276b9ebd10f8",
277
+ "pipeline/multi-agent-refs/cross-cli-contract.md": "21686f52bc415ac99ab37ac5c67c5083c93d6701ae051e73913f7ca14cafc8ed",
277
278
  "pipeline/multi-agent-refs/design-check/build-launch.md": "0ac64d07ef7389e22f7443f79c70a0a4f8bb87dcff6dbc94c63e034febe194ea",
278
279
  "pipeline/multi-agent-refs/design-check/compare.md": "2a0a89542a8bfefcfeaf1068dd91edb6947392f911f23e8b4857e4ace8fd15d7",
279
280
  "pipeline/multi-agent-refs/design-check/drive-capture.md": "dee4cd6230a401bc9e9dc82fc08109803dd2630c872c5b77a43cf17db062b05f",
@@ -281,14 +282,14 @@
281
282
  "pipeline/multi-agent-refs/design-check/figma-mapping.md": "731b7f19ddee2e67ea5d318e95e3a0d6840fa62c4ad682a25315509ac9ddcbc3",
282
283
  "pipeline/multi-agent-refs/design-check/init-inventory.md": "62defc5ea804f6c8f059a8d512b023791daac59274c0def28cefd7709a7fe862",
283
284
  "pipeline/multi-agent-refs/design-check/mcp-currency-gate.md": "70a96d3135af905989cd1819e6fb37fc44d25df9817b1efcd20121ec6db76d74",
284
- "pipeline/multi-agent-refs/features/analysis-jira.md": "240af52c5e2f1c5512b82cdd60cf9fb61c745c76855e9a0e2ae80cc8c9a80af8",
285
+ "pipeline/multi-agent-refs/features/analysis-jira.md": "fe95a8a2435c0118f804f6ad17ab312d04ffa2ea7e0eab9e00d84c684039c93b",
285
286
  "pipeline/multi-agent-refs/features/analysis-outline.md": "36a917343a7c07ae115aa1e89f825304e5878db931915aefef614d251b167e92",
286
287
  "pipeline/multi-agent-refs/features/analysis-sources.md": "12c8035e6aabf8e8a973b7264edc9a943e6758e79dbc53ae3e9b43c7f998000c",
287
288
  "pipeline/multi-agent-refs/features/assertion-judge.md": "ee9d1f32a5edfc35bf7f97126fa285eaddad6c1ba99724149bcf414c6e318e00",
288
289
  "pipeline/multi-agent-refs/features/autopilot-circuit-breaker.md": "b2bd47d55a2af66da15c5ad8d066ec2990ebf9b3af3c0c38cc48b0ad0210565b",
289
290
  "pipeline/multi-agent-refs/features/autopilot-operations.md": "1883d06b7e4ecc20d957fa0adf029abd22b6c89d1ff6576b74e7f0a56ba884c8",
290
291
  "pipeline/multi-agent-refs/features/base-branch-evidence.md": "7b875d61cf11ecc9119b440037be0e849931b0c00f4c102640590f7e59e1646b",
291
- "pipeline/multi-agent-refs/features/code-graph.md": "0223d6e3117c924b246dd42fbdf91109bd1950464a35092b08b73ce53c1b56eb",
292
+ "pipeline/multi-agent-refs/features/code-graph.md": "35ad666fee9d42177dce56d630418eb7663f1ae5aa21a4bbc99875107bd82467",
292
293
  "pipeline/multi-agent-refs/features/code-intelligence.md": "f115b9e983d8617e64208326a3c858b59b6c5e960caaf35f97ac13b16bfc4c59",
293
294
  "pipeline/multi-agent-refs/features/constitution.md": "2144d1b35ac42a6d64edc292440c9dacdf70c86d190874566e1db9a02244bd77",
294
295
  "pipeline/multi-agent-refs/features/cost-analysis.md": "42f1b90b41ef454f29ccfd3f93c959920f0e74cbca65e140695e9a30d6d90b87",
@@ -324,18 +325,18 @@
324
325
  "pipeline/multi-agent-refs/features/unattended-gates.md": "46b516cac81a4eacf5d58bc3b1613e2266c26f1559be8dac060d1dc6b7d7ca01",
325
326
  "pipeline/multi-agent-refs/features/unattended-security.md": "f0f05ed17bbf26a50fa0f88d890f7ac3ccb8f78f169b9f759e997299fdeb5cac",
326
327
  "pipeline/multi-agent-refs/features/url-enrichment.md": "72e01a799d9fa54b56c762ba404a9f9236adbbf98320e395a96f6b0f5917e76b",
327
- "pipeline/multi-agent-refs/features/usage-reporting.md": "bd8643e804a70d86679e431368e2fff7a8fbe7b121837340e745b1dd221a428d",
328
+ "pipeline/multi-agent-refs/features/usage-reporting.md": "12e8b4ee6170431ea980da829415beeb8dce9381a658b5d70a569ece98799438",
328
329
  "pipeline/multi-agent-refs/features/valven.md": "13b1fb8a3815330f6f970181506ac117e0d1c42761e5a83454edbd0b383ee1a7",
329
330
  "pipeline/multi-agent-refs/features/verify-by-test.md": "b0735adaa7ead797167b8d9ea48a10851a138083c6e638738cc96c66b02a1e37",
330
331
  "pipeline/multi-agent-refs/features/verify.md": "1a6db5e7239eac01e51100353013abd16bf785a7fce88b40139fca27f4166be4",
331
332
  "pipeline/multi-agent-refs/features/visual-evidence.md": "2b6aa2e4ff05c7a1fbe9e0fedfa4b28b9ad01c93a64f1ca6f6cd3e02293866aa",
332
333
  "pipeline/multi-agent-refs/features/worktree-finalize.md": "628f627b94927a9c4a5b0b261fed1f0ffa42d4155390d57b5e56566a26ed8193",
333
- "pipeline/multi-agent-refs/generate-issue.md": "61e762456d2748525fbbea0ee5f9dde863d75d3bb9bbece14a36f6e3c9e82b3d",
334
+ "pipeline/multi-agent-refs/generate-issue.md": "36a3d508bc9ec42b274a3069768a5a3530dea6e607f3cadb228e0ef8bbd0396b",
334
335
  "pipeline/multi-agent-refs/help/en.md": "e47435607e503f9042a06a815bc005d9e0d0965e21d3f50f6fd221b3f14453d8",
335
336
  "pipeline/multi-agent-refs/help/tr.md": "227fc73ff4e6cbc164072b17eee8c1212dc5e17dac841bbbca689c583d739df8",
336
337
  "pipeline/multi-agent-refs/issue-jira-triad.md": "a12f4e3b75badf8a466e0c3531a5f0e12e44a1dd7799522fb03ff11068ce391d",
337
338
  "pipeline/multi-agent-refs/keychain.md": "d2c6a915595f25570dfc5c24ba1d86a133003af517fa348e077da4643664e43c",
338
- "pipeline/multi-agent-refs/knowledge.md": "12a31305d0fcf607be7e9f8fd586af8d3d40079c47425390cd089925bca22dbb",
339
+ "pipeline/multi-agent-refs/knowledge.md": "5ad63befcd85a93dc3295c58aa9153e519601b156629e307814fac5348e7ae66",
339
340
  "pipeline/multi-agent-refs/multi-repo-integration-build.md": "ff4ad08d382d1d31f5c4f3c382cb340058bbe5cb1cffbfef520500cad7b9c05c",
340
341
  "pipeline/multi-agent-refs/orchestrator/operations.md": "7e6e969e3d62eafaf489e0383748529b7798e28a1f7f62f0a71dcd507800752f",
341
342
  "pipeline/multi-agent-refs/orchestrator/phase-0-projects.md": "eb8ff77eadd0daf83c9673a5b396d7869642b5fc3a39d67e5fc3250401e9abad",
@@ -349,7 +350,7 @@
349
350
  "pipeline/multi-agent-refs/phases/modes.md": "0733e20dce458c09f30343db9149fc93bc5a4c9531670b93952f223811dcb1aa",
350
351
  "pipeline/multi-agent-refs/phases/operations.md": "9506a26684abfff1e332d92c2321e840544fd4f049aff9f118731e198dabca94",
351
352
  "pipeline/multi-agent-refs/phases/phase-0-init.md": "b8ac6727242ca0cd4c46cc3f83f048569af320d2bc1223e6b9f2ea84c6570a2e",
352
- "pipeline/multi-agent-refs/phases/phase-1-plan.md": "a8ebd49abb7868e1fb2b0979fbc04c405ddec1bed966acd617b9b8bf714fa8e2",
353
+ "pipeline/multi-agent-refs/phases/phase-1-plan.md": "9cdbac98daf92a759b580f328be3c9cca9e825440bdcea4a5cb6996bfde1de22",
353
354
  "pipeline/multi-agent-refs/phases/phase-2-dev.md": "239749d4af2417f058586987ed64aa29bef7cc4981db8f403fd4a2499ed0925d",
354
355
  "pipeline/multi-agent-refs/phases/phase-3-review.md": "6e2eb55448d33e6cd64d00826a37547b9b33c4cc8c69beb0c020e6e1a210ae0c",
355
356
  "pipeline/multi-agent-refs/phases/phase-4-commit.md": "e0a4f3126f30fe8cee5a765a1220a3e5eaf67d344b0b4f03d0ced7cf1e451144",
@@ -415,7 +416,7 @@
415
416
  "pipeline/schemas/bug-bash-verification.schema.json": "5f9e7033b7d5d966dfa609a7fae79ba17a8bd7393aedbc35d2a782462f80ce01",
416
417
  "pipeline/schemas/bulk-read-output.schema.json": "468d447ee69d5576d16835cdd167a9191bf33d2b6e3af89373907582ef93f49e",
417
418
  "pipeline/schemas/clarify-output.schema.json": "13c3d933d24d9541a97fe7630f97587157c92e420794d6dea359726377c986a6",
418
- "pipeline/schemas/code-graph.schema.json": "821323d94a538b1bdb1e22c2a319cca0f11e9eaf6f166a1e03d4e333a08f3c55",
419
+ "pipeline/schemas/code-graph.schema.json": "8de052e97a5231d5d67abf17cfeb9f2f89198622653b7190388468c90d260679",
419
420
  "pipeline/schemas/command-parameters.schema.json": "739a7ea14d2f17bfe8503bc26e547653e3a11794c26da774205ae4e5510ea533",
420
421
  "pipeline/schemas/complaint-analysis-spec.schema.json": "6dd5c4ebbfcd64408329bf69fc4f6b372e89be651c7ff394ae301b5cd9f6a1f4",
421
422
  "pipeline/schemas/constitution.schema.json": "d40d7da71a36973d4f934aac98b7cb550e4a33af31e9307a57286d31555bf738",
@@ -457,7 +458,7 @@
457
458
  "pipeline/schemas/plan-todos.schema.json": "f1dcf8df338b29bbc1d874addd3408c0841a5f869c0b6075efd9242e3e8552d6",
458
459
  "pipeline/schemas/planning-output.schema.json": "bc6eda32ecd435cf84d846078f9d38347f8f741f8a427cff15913dd6c380d4b8",
459
460
  "pipeline/schemas/pr-request.schema.json": "ae75c4856349d62834802b1189af516bb6fb3d36646831b7ff2fa61d938afcd0",
460
- "pipeline/schemas/prefs.schema.json": "732cae37445f866a13f170e1698e1438a33f19b6162d76342bee23a89739e123",
461
+ "pipeline/schemas/prefs.schema.json": "57701b646d651f6ec6bb3a688da1ad2c3c11bd63a28cf0174b78b717ad2cae62",
461
462
  "pipeline/schemas/repo-profile.schema.json": "1a74ef8330da9a26a5a70955f6f9cbb20eda54a8615efaf86c7993d420a7f04e",
462
463
  "pipeline/schemas/repos.schema.json": "a9bf56f25c66201c170912e3389bd73e4a3f61922410f83e31a6c6ba47aee861",
463
464
  "pipeline/schemas/research-output.schema.json": "54e3ba1b04fdc20fbaa84333b943a8ab95d1395c7b0e0aedc67929184cb49523",
@@ -492,10 +493,10 @@
492
493
  "pipeline/scripts/_autopilot-config.mjs": "0f42d2791f1d71c4aad5a0735ca56fef1ed27d275b72f99d8ca8f95fcb8aa83a",
493
494
  "pipeline/scripts/_autopilot-ops.mjs": "5e84d628482434c8f09dc69601c73ab70e928af15c2f068d998d2f61bd692d1a",
494
495
  "pipeline/scripts/_autopilot-outcomes.mjs": "5b2423814d979ed5c657473290083b296f7245d40507c866e7931b2771001236",
495
- "pipeline/scripts/_code-graph.mjs": "513643c753a033818083f059c06a47d32664822a0cc716cb61fd0071b50c569a",
496
+ "pipeline/scripts/_code-graph.mjs": "6b1848d78cef2000c11fcaaa6f1faaae89365a86a37642aa458db9ad422a4cc1",
496
497
  "pipeline/scripts/_command-contract.mjs": "e97a5c624e0768769da54d4175e9f7655f1de1dcd0832468bc66bf140b0f5a6f",
497
498
  "pipeline/scripts/_cost.mjs": "bdf03835af4719b72e4574f2d5ca827e94f9d80e49527a8e9e200a0aa4ecd7a9",
498
- "pipeline/scripts/_diff-impact.mjs": "49dad7013ec098252418718cd72e398b494928cf68b9f78158ed759147041212",
499
+ "pipeline/scripts/_diff-impact.mjs": "cda016ca6071c741a680a3dbc35bb21926465b296defa4fa3677ce550704198a",
499
500
  "pipeline/scripts/_fingerprint.mjs": "d8c63b062a3be0e138b6675aa031824fcd96f5517cf0f7b477378913c1db7d73",
500
501
  "pipeline/scripts/_notices.mjs": "1f78037b0849ab3cf8a85ca353ed1610c2895250ac21a1d50ac1fb9732be4300",
501
502
  "pipeline/scripts/_path-match.mjs": "880b27d90351441b4f3c05e1a87ace62cd1caab3ec7a286663efb2176cb69a69",
@@ -507,13 +508,14 @@
507
508
  "pipeline/scripts/_smoke-root.sh": "dad129959a4e37a0cd0f4f6c04f6d66c5a43752b2bf33989db9c002eb106b832",
508
509
  "pipeline/scripts/_stack-adapter.mjs": "a754c042d237cd03abf11c6909099a7a3ea798cdd13d49b03787797fd3496cd7",
509
510
  "pipeline/scripts/_stack-routing.mjs": "d1f804d457295e5cc8ad7039e8c29431f0e9f52f4396cc54c1305eb82b9b61e9",
511
+ "pipeline/scripts/_supertypes.mjs": "7bf4bf8fca087ad93a19316fd24bfaae19d05f8a0907edda4c17946fcaf375d8",
510
512
  "pipeline/scripts/agent-guard.py": "ba8f0c08a80d953d339ea69492efb1fbe8db5d364c2bcb2094a9839cf6dcc081",
511
513
  "pipeline/scripts/agent-guard.sh": "5b57cea687754533c673b66a9dd2281ca06d12ef86bdc0d03fa285fc9e7debf8",
512
514
  "pipeline/scripts/aggregate-metrics.mjs": "c324e349993fb154a885263cf6665af0ff656e9c987b455a263dad8b96cca667",
513
515
  "pipeline/scripts/analysis-conform-coverage.mjs": "2b7de99855d1901b1b7803f47d4bb5f75ed5df1b5f4840d55bfc3537e3f65afe",
514
516
  "pipeline/scripts/analysis-sources.mjs": "53d843b0504a6cadd7d4a047331ebc34a2868304fcf791617ad0a215396e35a6",
515
- "pipeline/scripts/analysis-story-body.mjs": "98401872f8378249fc16f52d94b4db807196ed6c7eac73caa8c4f7ecf64a2553",
516
- "pipeline/scripts/analysis-story-tree.mjs": "6c14d66b9718e0b68a7020058cbaeaf2f38f0ea3b1ee72ffa11a0878d8e38f44",
517
+ "pipeline/scripts/analysis-story-body.mjs": "309cf9f1a9859228d073aff6e7b4a9322bc960d4fe1a21a10ce58521a0c1b641",
518
+ "pipeline/scripts/analysis-story-tree.mjs": "5fb7b5978391b1a090db26dae982bb9763177736c2457180a941946d40eb4224",
517
519
  "pipeline/scripts/analysis-tickets-writeback.mjs": "8c1f117ac5c6516385e3458462de6bde28c81768853c2d9524118d0155befe8b",
518
520
  "pipeline/scripts/anonymize-findings.mjs": "5d7e042793790c1b924d4d952b4f79b7e5f1dd0a3fe936f1ee16a4fa2ba820dd",
519
521
  "pipeline/scripts/answer-question.mjs": "b948df9d063f623a7ccd9cc65903c4388018b6b968228f77eb2e229223a61b1c",
@@ -535,17 +537,17 @@
535
537
  "pipeline/scripts/build-stack-plugins.mjs": "bd7b7f9a3983d4daaf5e4468abc79c0f195877a02a390dcccfb529d79e8c39c7",
536
538
  "pipeline/scripts/bulk-read.sh": "eb13ef378768e98a7624dc14c83e0cdc83ac01476567bcca16e390368f5706d0",
537
539
  "pipeline/scripts/capture-evidence.sh": "2f7657786e07c17c302b76d4ea6bafe391b65be3dd891901b78019af3a7e38e1",
538
- "pipeline/scripts/capture-flush.sh": "ea5074dfdf69bef4182bed4a073c8f3a499c0d41f7ec0b6bde87f2870b40c910",
540
+ "pipeline/scripts/capture-flush.sh": "8692ec54afbf7d44d1dc3fa8072076465aae89cfccb5d2feadb3ded3ac74091f",
539
541
  "pipeline/scripts/capture-resume.sh": "4934ff7961e2b8eabcd154ca06dd53c1d4aab03986a39dff287b8c16f5cea7ee",
540
542
  "pipeline/scripts/check-derived-drift.mjs": "6716f1354b5b17d0314e5bbe18d987c5143ffeadd0825ff35d7414b3d7a516ad",
541
543
  "pipeline/scripts/check-read-size.py": "fa094f7fcc3ea830411a55f4acda12ffe5a2323c8fd105033ef238e13bc04c99",
542
544
  "pipeline/scripts/check-read-size.sh": "b5db605ffb3ad2b2b9dc7acfbf4ec7089b3ee8a22a29bf92475231bc66c7c787",
543
545
  "pipeline/scripts/classify-plan-safety.mjs": "d25f21da21dd4ee1ea507fb0df89301715071121b1bd96aca9ef140a4eee896b",
544
- "pipeline/scripts/code-graph-rules/android.json": "c0f62991e9472997cf1a9d6e756215ea996c3c8f2aab792102d3df6fce74982e",
546
+ "pipeline/scripts/code-graph-rules/android.json": "6ba2cc0d496f5c6cc40cca9931e0903da3a64596d939fe2e86367615ec6241c2",
545
547
  "pipeline/scripts/code-graph-rules/go.json": "7d794157675c0d4c71d7ba3d6e538de0e20de6711c652d55844eac11b10e0bdf",
546
- "pipeline/scripts/code-graph-rules/ios.json": "5e4af5e835eb8104cecb19f0fd14d360d1adb2eba6e96b50e780549726635bce",
547
- "pipeline/scripts/code-graph-rules/node.json": "0fc7b3ea058b8e77bba549359916e5ec7bf3b96ae7e4fd676ed7d5ac1e6cd83e",
548
- "pipeline/scripts/code-graph-rules/python.json": "aa1025567d19c8af3e405f2905c702d84c717b4ff84d52baed8ebb42db82d834",
548
+ "pipeline/scripts/code-graph-rules/ios.json": "b2c8acc464158b29c669050e7f13cf1f3445fcc2e8b8fb5c5da80feea78f9d2d",
549
+ "pipeline/scripts/code-graph-rules/node.json": "062d7337519f5a743da6953d2748e95560729715502a665d19025108ceba4845",
550
+ "pipeline/scripts/code-graph-rules/python.json": "91394dc31a9392e8d02cf46797bf39551fbe483aa2e6b34145cd33aa2460eca9",
549
551
  "pipeline/scripts/commands.mjs": "5b20a7d01aa0f205f2605fcfcbdb197bdfeafbdfc1e5164b5ee083ac6ff39cc2",
550
552
  "pipeline/scripts/confluence-readback.mjs": "4b4d190095346e54875de63df5380c143eb8c2f1a6eebb399d5ae884d8668b18",
551
553
  "pipeline/scripts/constitution.mjs": "c1de46e1252a26b301c81ddf3e59cd567d214e5918665c0cd708c69b4b5a37a8",
@@ -574,11 +576,12 @@
574
576
  "pipeline/scripts/gen-facts.mjs": "6ba70f7db881c3e3577a5ce3dcbfda09aa240f728ee577b019f2176d8051fd67",
575
577
  "pipeline/scripts/gen-mode-dispatch.mjs": "41261f7af9026fe19f9f96f314a85d226edd769081c02e5388310cf71a411ba7",
576
578
  "pipeline/scripts/gen-skills-index.mjs": "64606fb3165786ed1488cc368dcbe8f53d2e9402f02578823a31838b9730180d",
577
- "pipeline/scripts/git-path.mjs": "c035624f1ab924039b37e0911f56c6a1fa781ac41dc89fadfdaa4305f4359c12",
579
+ "pipeline/scripts/git-path.mjs": "621bf20d864c95b4fa772afa9dd041903e86165500ad91de1623a47082bf2491",
578
580
  "pipeline/scripts/github-ssh-setup.sh": "5a9e1836d80e4e176806c143a3c8ba4c1b9c4274ed49aac71f33bd40de31968b",
579
581
  "pipeline/scripts/glob-match.mjs": "c01722f2f60ef70838cbfeef55dfb8381b49c358c7a808a5b297a92cdeccf033",
580
- "pipeline/scripts/graph-affected.mjs": "fc57496969bbf1bb7a91051c0e273b029085ce5fe807ad841c2d9c26fa782699",
582
+ "pipeline/scripts/graph-affected.mjs": "7d43588bb1c1d1e1ca212ed482b44233523a81f27af07954cbde1312defc0986",
581
583
  "pipeline/scripts/graph-build.mjs": "b81a0149d0c8ad8a9747dd7c2eecf3cc51195a6b47c23ded09f0bbb30ac60ea8",
584
+ "pipeline/scripts/graph-confirm.mjs": "09f8a9b1de342d2898368bb840c637d52a511bbe763370361521a0c1aefda88f",
582
585
  "pipeline/scripts/graph-mermaid.mjs": "8b68a9123174bd8ef38a64c0e653b8b53e6b1e8bcb4f94db171f66bd32225ee9",
583
586
  "pipeline/scripts/graph-query.mjs": "47f571b6ebb9417b816d75217a48f3b6c705b5109947d640040b16f866254310",
584
587
  "pipeline/scripts/graph-report.mjs": "d76ba06796eabbbb0f9a06929d322fa9cbd580131ca34c3c9d78cabd9772ce6a",
@@ -591,7 +594,7 @@
591
594
  "pipeline/scripts/launch-request.mjs": "826c5ec100cd7def4d55c94894582959c1ce325ffc9527e4b3fe43c89fdd8b10",
592
595
  "pipeline/scripts/learn-from-transcripts.mjs": "337c4cf96728afebd3938276975b41925299485a357c0fe9cc10a22f95811945",
593
596
  "pipeline/scripts/learning-curve.mjs": "d574eec427c7f37a7a77a9ef9e2499f50dadc2215a20ae24e31654afd3497f36",
594
- "pipeline/scripts/learnings-ledger.mjs": "411bf80329a1c7700e5a523d5f0a7d1d3a716514f9656703bce67e26e71e0bb0",
597
+ "pipeline/scripts/learnings-ledger.mjs": "dc1871d10000606766c005228faa2f3c1a6daf72502d78d83e8cd4b86b1ded68",
595
598
  "pipeline/scripts/localize-commands.mjs": "d095d354be4bf5ea7c0a68969c1531421908b195755d591c5012334d821f201e",
596
599
  "pipeline/scripts/log-metric.sh": "f3764017124add197bea5f1176854f115be84d786dc1ece3246f312c2965dcf1",
597
600
  "pipeline/scripts/match-skills.mjs": "dd6c023a623ce6e9999f3eceaacd91f8d0c8ac621e3f025c8949e2203dc05bdf",
@@ -620,7 +623,7 @@
620
623
  "pipeline/scripts/pre-push-check.sh": "4a1554a625df4745a829c0df294db7ce450fbe44fe624e562008e9912be78925",
621
624
  "pipeline/scripts/probe-evidence-capability.sh": "ac74252eed6b773fdbc7ec475a63606925f1ba7b5e7c6f911329f46fd920eae7",
622
625
  "pipeline/scripts/probe-store-key.mjs": "b46dfcf444c95d0bb61de36823314945dacaaacb8f35841d153dcfcde8e4df1a",
623
- "pipeline/scripts/product-context.mjs": "97a19f35ec340f739c8f22b8bed8496b937539221961582aec2ec6b7489f4443",
626
+ "pipeline/scripts/product-context.mjs": "12046a9a27174503f476540b2426fe2c02c3168085d0479060f007dc5eb59379",
624
627
  "pipeline/scripts/prune-logs.sh": "c5587b33104c7253e07be8cce8249b50014c52dfdf232de637811ffdd88e95e4",
625
628
  "pipeline/scripts/purge.sh": "95c60b272ae47209893dba9b17528538592bb5636da47940a02734cd9b4f0ce5",
626
629
  "pipeline/scripts/record-phase.mjs": "041dc262e54f38b66299f45c44db7918812e599a773f5a3dc78cfd09ab5e155e",
@@ -656,15 +659,15 @@
656
659
  "pipeline/scripts/smoke-cross-cli-behavior.sh": "4212e39ab4c2be160cd0b19fcd5d61ace226dcdff57431bf93a15aa28400d587",
657
660
  "pipeline/scripts/smoke-schema-validation.sh": "1898953b68d5ef655502c32679e0883da7038ccd657082b34978e8ba19f217ff",
658
661
  "pipeline/scripts/spec-consistency-gate.mjs": "16a302d61b562cabb754f72a2b65d376e2e39c98f6f68374c50e4015637b1055",
659
- "pipeline/scripts/symbol-existence-gate.mjs": "01cf577a9966cc3eb9ca65ac87ffe18eec7664023c783a0155bb73a4716cb2f9",
662
+ "pipeline/scripts/symbol-existence-gate.mjs": "9b96dddb933981421d693dab9161103fd448c744222cfb29e27f39f903d8a956",
660
663
  "pipeline/scripts/test-gap-rules/android.json": "367da48a14036a102fb422206fbc877cd52548fe34a6ff8565a503df2421bce5",
661
664
  "pipeline/scripts/test-gap-rules/go.json": "1de067f47b13d539ce00d0b0cb32c050a4805c255533cb5af1b1645777125e2f",
662
665
  "pipeline/scripts/test-gap-rules/ios.json": "212da713f7274cb3ae051e1ef06f93376f7ff1806487c10b504a4a2da0cf5196",
663
666
  "pipeline/scripts/test-gap-rules/node.json": "89e3aba9796a0110634c8039fd75054da37b9e8228a9736678962c84c0ed782c",
664
667
  "pipeline/scripts/test-gap-rules/python.json": "f9778276dfbfc8b5db84fbc169e5b03bd3a0c1549a5e40a5d95f436f476486bf",
665
- "pipeline/scripts/test-gap-scan.mjs": "71d21e00fed239213ebc7b9f4205116a5fb6e6824555f8586d352cedde691cf2",
668
+ "pipeline/scripts/test-gap-scan.mjs": "a45331888cfabb2de3eaf309421dc87155d61c8e50acccfaa5bb52bb2edecbb5",
666
669
  "pipeline/scripts/test-integrity-gate.mjs": "c3e8656b05c350adfd01f460372bb01bf25be85328fe45dbe867b990473f5cc1",
667
- "pipeline/scripts/test-strength.mjs": "aa73074afe39db4af6e1a9ebb3651a736f816b7d62eee1e06e1b200632cd490c",
670
+ "pipeline/scripts/test-strength.mjs": "097a2abb5e45d822e2cee66e2f8537616179101eac0ab2bdfbbe11c9d9ea1039",
668
671
  "pipeline/scripts/test-summary.mjs": "a4c945366020e1918213856beb2135a0f688201342a8b2133c8c75bb2b3b0ed3",
669
672
  "pipeline/scripts/token-budget-report.mjs": "508bbc659df478c535c0ecdd3f8611372af8fef0b0932c7b19a247af2b2b9265",
670
673
  "pipeline/scripts/triage-memory.mjs": "2d8541145f1749593ae5728fb4c9eb3001484edb5e4d37be473aeec34d1dbe7c",
@@ -673,12 +676,12 @@
673
676
  "pipeline/scripts/uninstall.mjs": "ba11803733cf3bfcc966f0d4aa2cc5fbed000cb37a251005f067ce0289306233",
674
677
  "pipeline/scripts/update-check.sh": "9c00647e7ca4249414b2e5af08f61705ab5bd2106b6f66ae8ebce8aa143dc957",
675
678
  "pipeline/scripts/update-issue-progress.sh": "ccfef87743e91272e009e396ac07461d2784b2fa84a06c802a582526eeeb9ed9",
676
- "pipeline/scripts/usage-identity.mjs": "1ea8ffb5a52aa5f98a7ea491f12af02d86f711666ac0cc37cac59c70e182aaf4",
677
- "pipeline/scripts/usage-register.mjs": "358bdd13bc9b986618dec5394911beac20d4e07c6c4758e5804ad4b188860ea8",
679
+ "pipeline/scripts/usage-identity.mjs": "ec22fbf6ec3afe694673c224f53677320f8d5151e9fef77f0804c8f1bb35cc95",
680
+ "pipeline/scripts/usage-register.mjs": "897299cbf8f0c446dc3b78034df4e1801b6724d7c70fec1fdef8ad4653a7c4d0",
678
681
  "pipeline/scripts/usage-report.mjs": "bc330b3a5657aa99f4ec19dbf9fcca0590d02166f242b40a51b55ac3c0cc1b83",
679
682
  "pipeline/scripts/validate-analysis-doc.mjs": "3300212d6d7387f4f2f63e2712dad7dacc53d8c133d575a286d3d4bf06bca431",
680
683
  "pipeline/scripts/validate-analysis.mjs": "d2dc9ccf45f6ca2702908761939edd830d18b3b273016a4b449f26fe285d5ea1",
681
- "pipeline/scripts/validate-code-graph.mjs": "80d66905b5b2122824206395b8da5c162ae22191bbe703f48f45c9830e21af87",
684
+ "pipeline/scripts/validate-code-graph.mjs": "3244d074e882a6a1789de362b4b122c396a05ac044f5102dfe85e92e7aca6cc4",
682
685
  "pipeline/scripts/validate-complaint-doc.mjs": "a6ffcab3bbe917c59edc035922393c106454ecea41693c19d3e458adc47d548e",
683
686
  "pipeline/scripts/validate-diff-risk.mjs": "cf53943f71a717fddaacf7426dea9d5eb4e0ec7bdb27bdfb91915176df9fee99",
684
687
  "pipeline/scripts/validate-planning.mjs": "bf8c250c2d18d775a8a7af6e7afa348460646cf0a2e18481b3e4c4ca02694331",
@@ -686,9 +689,9 @@
686
689
  "pipeline/scripts/validate-state.mjs": "ac2cfde75fe216a7549ba476c58f777f27d36e068de3796909926d68de2fb65a",
687
690
  "pipeline/scripts/validate-test-gap.mjs": "14fa89867e49497adb2b88a3290e78d0f263afa74a5b83b062115fc5a22204f7",
688
691
  "pipeline/scripts/validate-triage.mjs": "7cd78686494c4dc003b4cd66817dfe583adbdab536b54da3fbb80c9fa0e1a216",
689
- "pipeline/scripts/valven-gate.mjs": "52852c572f10617f7c71db5bd425b26a019d4107129656d6def7bf579ccc5e76",
690
- "pipeline/scripts/valven-port.mjs": "5b064d67b8a39896f64fdead7aa65ef8ce747cf58cf44bbee90025abe4300247",
691
- "pipeline/scripts/valven-split.mjs": "c5700ee1738bc4a215321a45bc093c325ec132410c32660e72b76f38bea8d0eb",
692
+ "pipeline/scripts/valven-gate.mjs": "1bd10b59fe2e282759942c1a3961facabc4c0c36b1e603aadc9f8ef00b27b513",
693
+ "pipeline/scripts/valven-port.mjs": "e3bfb596e3472c515a041c9408e7369f87919504882869331525d28829bcf388",
694
+ "pipeline/scripts/valven-split.mjs": "2119fce1c109b9388aab3e39b3ba645a61f38182aa7bf64a557930284946a104",
692
695
  "pipeline/scripts/verify-citations.mjs": "e3c6a3edb1d360a9ea8690d35157faa47d312dfdc87595a87350c456cc72319c",
693
696
  "pipeline/scripts/verify-skills.sh": "871fcdfe5567232cd49a4cce4401911a06c8df6ab712d0597e17ce1bf0f63d80",
694
697
  "pipeline/scripts/verify.mjs": "fdc9843dc33b37d08d132617f158b8fe10cc4ab3be5bf31714bf2453ac0f714f",
@@ -698,7 +701,7 @@
698
701
  "pipeline/scripts/worktrees.mjs": "90dfd09b70fffe9b56c331a4ae2692cc248f4898f4ee6aee4239ef0b20888a90",
699
702
  "pipeline/scripts/write-state.mjs": "e1198bf970eace07d3eff22b394808a526e473df65d3d58aa2d5a12cfdac8b49",
700
703
  "pipeline/scripts/write-store-config.mjs": "b994a061f6febb2ca3d396074d8b51d2c1c1f991d3072d321703380da3639a56",
701
- "pipeline/skills/.skill-manifest.json": "a3855be72470070e382c3c45457569cdc8d4bce1efbc163f7d3aacb751018c57",
704
+ "pipeline/skills/.skill-manifest.json": "bae66a65ec530c9ca10931f0fdbda0b562b84eddf55d40d7663695c98b1d9b7d",
702
705
  "pipeline/skills/.skills-index.json": "b2917fa44e273b939549f1c3ab3dd81c26ba8168772bc7644c9fa076116d8a4c",
703
706
  "pipeline/skills/shared/README.md": "928fe4292be729c3b7d7d0898cade8be0dfa868f208e0c6d1fe7b2c6bd6223c5",
704
707
  "pipeline/skills/shared/core/apple-archive-compliance/SKILL.md": "7239fef717ea45b79276bfcc2c3903acd57950b6e00dd6a2a66399c4b09cbd51",
@@ -755,7 +758,7 @@
755
758
  "pipeline/skills/shared/core/multi-agent-search/SKILL.md": "5f5177cd28cbb13583441fb98402cfa251c78e69de693540584e9a1dcc7692cb",
756
759
  "pipeline/skills/shared/core/multi-agent-security-review/SKILL.md": "3c483d5942f2c2b81c0537d4db0b36804c13cabd66fd7fae2972d07a8f239f69",
757
760
  "pipeline/skills/shared/core/multi-agent-serve/SKILL.md": "90e4dd7225e10e670118ed05d0c8a9e346112c4bbbdb24a7fe7c5c334a83e848",
758
- "pipeline/skills/shared/core/multi-agent-setup/SKILL.md": "79a4afa655df12221a25bc386a32e61c38016d2de660dd618b404ca8bb0b28d3",
761
+ "pipeline/skills/shared/core/multi-agent-setup/SKILL.md": "73a1d1d8484d32b6d83107632a84aeced2f230f8581b7d47cad5e2d14e13860a",
759
762
  "pipeline/skills/shared/core/multi-agent-stack/SKILL.md": "ac964cd00dd6ed06512530489d867efbc51d7d7614265f9aa022679325d5defe",
760
763
  "pipeline/skills/shared/core/multi-agent-status/SKILL.md": "444c3773b52e6786e40bc67c8833ea6aecadbcd4459b01127b4aff152157040a",
761
764
  "pipeline/skills/shared/core/multi-agent-steer/SKILL.md": "20f332bd2fe2745da5341f8d8187211fc47c06b4b5f5031e217affee0282ddb5",
@@ -768,7 +771,7 @@
768
771
  "pipeline/skills/shared/core/multi-agent-test/SKILL.md": "538c7e27f1137975127883b249ebd552d07a114fe27aa33b31a0e659c93cd742",
769
772
  "pipeline/skills/shared/core/multi-agent-testflight-validation/SKILL.md": "6bfd1569117bfbacb485d831c0b7f262ebb3a2f9471f6177a646f5ce32c06a25",
770
773
  "pipeline/skills/shared/core/multi-agent-uninstall/SKILL.md": "9dccf78ffc2fb014d83f67d683d395f56f4fad8b5a36b9aa84e6cbd075b58818",
771
- "pipeline/skills/shared/core/multi-agent-update/SKILL.md": "013317432263490a01d081b657928b977012afb78f75a64d278d94d2daa8e894",
774
+ "pipeline/skills/shared/core/multi-agent-update/SKILL.md": "2f9e224e240e1c9053a59066678f869ae36f18c088482488f3bda8fd207148ea",
772
775
  "pipeline/skills/shared/core/multi-agent/SKILL.md": "a39f712426638e7955db9171c950be720f11c861621884e628c81a0b6a49de5d",
773
776
  "pipeline/skills/shared/external/NOTICE-avdlee-swiftui-agent-skill.md": "400842e4653f038fad22509fe3f3d152151120758f5f9b170e6dba59afaf4a48",
774
777
  "pipeline/skills/shared/external/NOTICE-dimillian-skills.md": "f9c3d783fd3563418c18291b90899251e890fd3fa8ee353c8c1fbbe61078526e",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mmerterden/multi-agent-pipeline",
3
- "version": "20.22.0",
3
+ "version": "20.23.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",
@@ -26,7 +26,7 @@ Type is chosen at step [3/12] via AskUserQuestion (never inferred silently). Eac
26
26
  |---|---|---|
27
27
  | `Task` | Detailed Description, Scope, Acceptance Criteria, Test Scenarios | API Contract / Swagger, Design Reference, Screenshots, Notes |
28
28
  | `Bug` | Detailed Description, Steps to Reproduce, Expected Result, Actual Result, Environment | Screenshots / Logs, Regression / Test Scenario, API Contract, Design Reference, Notes |
29
- | `Story` | User Story, Detailed Description, Scope, Acceptance Criteria, Test Scenarios | API Contract / Swagger, Design Reference, Screenshots, Dependencies / Notes |
29
+ | `Story` | User Story, Detailed Description, Scope, Acceptance Criteria, Test Scenarios (each in a coloured wiki panel) | API Contract / Swagger, Design Reference, Screenshots, Dependencies / Notes |
30
30
 
31
31
  ## Flow
32
32
 
@@ -157,9 +157,9 @@ Then, **whether they pasted or skipped**, run:
157
157
  node "$HOME/.claude/scripts/usage-register.mjs" --json
158
158
  ```
159
159
 
160
- If its JSON line says `"needsPersonalAccount":true`, offer once: `gh auth login`,
161
- or an SSH key on the personal account (the "Personal account" step in
162
- `$HOME/.claude/multi-agent-refs/features/usage-reporting.md`).
160
+ If its JSON line says `"needsPersonalAccount":true`, ask once for the person's
161
+ GitHub username (free text; Skip leaves reporting off) and run
162
+ `node "$HOME/.claude/scripts/usage-register.mjs" --login <name> --json`.
163
163
 
164
164
  It maps whatever token exists and switches reporting on, and requests a
165
165
  per-machine write-only one when none resolves, so a machine that runs setup and
@@ -139,9 +139,9 @@ and every later block that needs them starts by sourcing it.
139
139
  reporting off with one status line - never an error. Contract and the data it
140
140
  sends: `$HOME/.claude/multi-agent-refs/features/usage-reporting.md`.
141
141
 
142
- If its JSON line says `"needsPersonalAccount":true`, offer once: `gh auth login`,
143
- or an SSH key on the personal account (the "Personal account" step in
144
- `$HOME/.claude/multi-agent-refs/features/usage-reporting.md`).
142
+ If its JSON line says `"needsPersonalAccount":true`, ask once for the person's
143
+ GitHub username (free text; Skip leaves reporting off) and run
144
+ `node "$HOME/.claude/scripts/usage-register.mjs" --login <name> --json`.
145
145
 
146
146
  6. **Tell the user what the update brought.** Read the notes, then write the summary yourself:
147
147
  ```bash
@@ -239,6 +239,25 @@ if [ -n "${EPIC:-}" ]; then
239
239
  fi
240
240
  fi
241
241
 
242
+ # Discover rather than assume: the types this site marks subtask:true, under
243
+ # whatever names it gave them. Jira Data Center 9 answers only the per-project
244
+ # createmeta; older sites answer only the classic one. Read once per run.
245
+ SITE_SUBTASK_TYPES=""
246
+ SITE_SUBTASK_READ=0
247
+ site_subtask_types() {
248
+ SITE_SUBTASK_READ=1
249
+ SITE_SUBTASK_TYPES="$(jira_api GET "/rest/api/2/issue/createmeta/${PROJECT}/issuetypes?maxResults=100" 2>/dev/null \
250
+ | jq -r '.values[]? | select(.subtask == true) | .name' 2>/dev/null || echo "")"
251
+ [ -n "$SITE_SUBTASK_TYPES" ] || SITE_SUBTASK_TYPES="$(jira_api GET \
252
+ "/rest/api/2/issue/createmeta?projectKeys=${PROJECT}&expand=projects.issuetypes" 2>/dev/null \
253
+ | jq -r '.projects[]?.issuetypes[]? | select(.subtask == true) | .name' 2>/dev/null || echo "")"
254
+ local n
255
+ n="$(printf '%s' "$SITE_SUBTASK_TYPES" | grep -c . || true)"
256
+ if [ "${n:-0}" -gt 1 ]; then
257
+ echo " note ${PROJECT} has ${n} sub-task types ($(printf '%s' "$SITE_SUBTASK_TYPES" | paste -sd, - | sed 's/,/, /g')); using the first. Set issueTree.subtaskIssueType to a name, or to a {role: type} map, to choose." >&2
258
+ fi
259
+ }
260
+
242
261
  RC=0
243
262
  NODES="$(jq -c '.nodes[]' "$PLAN")"
244
263
  while IFS= read -r node; do
@@ -272,12 +291,13 @@ while IFS= read -r node; do
272
291
  [ -n "$sub" ] || continue
273
292
  t_label="$(printf '%s' "$sub" | jq -r '.label')"
274
293
  t_role="$(printf '%s' "$sub" | jq -r '.role')"
275
- t_type="$(jq -r '.prefsUsed.subtaskIssueType // empty' "$PLAN")"
294
+ # A name, or a map from role to name ("*" for any other role).
295
+ t_type="$(jq -r --arg r "$t_role" '.prefsUsed.subtaskIssueType
296
+ | if type == "object" then (.[$r] // .["*"] // empty)
297
+ elif type == "string" then . else empty end' "$PLAN")"
276
298
  if [ -z "$t_type" ] && [ "$DRY" -eq 0 ]; then
277
- # Discover rather than assume: whichever type this site marks subtask:true,
278
- # under whatever name the site gave it.
279
- t_type="$(jira_api GET "/rest/api/2/issue/createmeta?projectKeys=${PROJECT}&expand=projects.issuetypes" \
280
- | jq -r '[.projects[]?.issuetypes[]? | select(.subtask==true) | .name] | first // empty' 2>/dev/null || echo "")"
299
+ [ "$SITE_SUBTASK_READ" -eq 1 ] || site_subtask_types
300
+ t_type="$(printf '%s\n' "$SITE_SUBTASK_TYPES" | head -n 1)"
281
301
  fi
282
302
  [ -n "$t_type" ] || t_type="Sub-task"
283
303
  t_desc="$(printf '%s' "$sub" | jq -r '.description // empty')"
@@ -20,7 +20,9 @@ import {
20
20
  chmodSync,
21
21
  linkSync,
22
22
  lstatSync,
23
+ mkdirSync,
23
24
  readFileSync,
25
+ readlinkSync,
24
26
  realpathSync,
25
27
  renameSync,
26
28
  rmSync,
@@ -28,7 +30,7 @@ import {
28
30
  unlinkSync,
29
31
  writeFileSync,
30
32
  } from "node:fs";
31
- import { basename, dirname, join } from "node:path";
33
+ import { basename, dirname, join, resolve } from "node:path";
32
34
  import { readRegularJson } from "./regular-file.mjs";
33
35
 
34
36
  const DEFAULT_TIMEOUT_MS = 15_000;
@@ -140,11 +142,31 @@ export function withFileLockSync(
140
142
  export function writeJsonAtomicSync(path, data, { mode = 0o600, followSymlink = false } = {}) {
141
143
  let target = path;
142
144
  if (followSymlink) {
145
+ let link = false;
143
146
  try {
144
- if (lstatSync(path).isSymbolicLink()) target = realpathSync(path);
147
+ link = lstatSync(path).isSymbolicLink();
145
148
  } catch {
146
149
  // Missing file: write the path as given.
147
150
  }
151
+ if (link) {
152
+ try {
153
+ target = realpathSync(path);
154
+ } catch {
155
+ // A chain whose last target does not exist yet: follow it to that
156
+ // target and create it, keeping every link.
157
+ for (let hops = 0; hops < 16; hops++) {
158
+ let next;
159
+ try {
160
+ next = lstatSync(target).isSymbolicLink();
161
+ } catch {
162
+ break;
163
+ }
164
+ if (!next) break;
165
+ target = resolve(dirname(target), readlinkSync(target));
166
+ }
167
+ mkdirSync(dirname(target), { recursive: true });
168
+ }
169
+ }
148
170
  }
149
171
  const tmp = join(dirname(target), `.${basename(target)}.${process.pid}.tmp`);
150
172
  rmSync(tmp, { force: true });
@@ -79,7 +79,7 @@ grep -rilE "$slugs" $WHITELIST --include="*.swift" --include="*.kt" --include="*
79
79
 
80
80
  If `wc -l < $CANDIDATES` exceeds 200, record `fetchWarnings += "feature-name too generic; candidate cap hit"` in `repoEvidence[<repo>]`.
81
81
 
82
- **Ranking the candidates (opt-in, `prefs.global.codeGraph.enabled`).** `head -200`
82
+ **Ranking the candidates (`prefs.global.codeGraph.enabled`).** `head -200`
83
83
  truncates in grep's walk order, so the cap drops an arbitrary file rather than the
84
84
  least relevant one - the failure the warning above names and cannot fix. When a
85
85
  graph exists for the repo, rank the set first:
@@ -117,6 +117,7 @@ it does not. Contracts: `features/exploratory-testing.md`,
117
117
  | Research modes and threads | `mode`, `recency`, `domains`, `sources`, `thread_id` on `research_ask`; `arxiv` and `fetch_content` on `research_search` | ≥ v3.20.0 |
118
118
  | Free-model delegation | `llm_delegate`, `llm_providers`; `ESCALATE_TO_CLAUDE`; the `multi-agent-toolkit-llm` CLI (`delegate`, `providers`, `probe`, `usage`) | ≥ v3.21.0 |
119
119
  | Related repositories | `repo_resolve`, `repo_grep`, `repo_read`, `repo_ls`, `repo_log`, `repo_find_keys`; `stale`, `not_found_at_sha` (`features/product-context.md`) | ≥ v3.22.1 |
120
+ | Language-server answers over MCP | `code_references`, `code_definition`, `code_document_symbols`, `code_index_status` as JSON with structured content; `graph-confirm.mjs` reads them (`features/code-graph.md`) | ≥ v3.22.2 |
120
121
 
121
122
  ---
122
123
 
@@ -118,6 +118,11 @@ its label is recorded in the ledger as `exists`, beside its key.
118
118
  | Current vs target | redesign rows that point at the story's section | the same, from the corporate redesign sub-sections |
119
119
  | Links | the analysis page, Figma URLs in the story's sections, Swagger/OpenAPI URLs in References | same |
120
120
 
121
+ Each part sits in a coloured wiki panel with its `h3.` heading first: the user
122
+ story in `{panel:borderColor=#d4d39e}`, the acceptance criteria in
123
+ `{panel:borderColor=#d4a19e}`, current vs target and links in
124
+ `{panel:borderColor=#9eb6d4}`. The `Sources:` line stays outside the panels.
125
+
121
126
  At most 8 criteria. What is missing stays missing and becomes a body warning
122
127
  (no user story, fewer than 2 criteria, no negative criterion); nothing is filled
123
128
  in. Every piece of document text passes `escapeJiraWiki()` before it is placed
@@ -168,9 +173,15 @@ are values the site fills in:
168
173
  - `epicLinkFieldId`, when set, is the site's own field id; otherwise it is
169
174
  discovered
170
175
  - `subtaskIssueType: null` means discover it - `createmeta` returns whichever
171
- type carries `subtask: true`, under whatever name the site gave it. Same rule
172
- as `features/jira-context.md`: the type travels as it comes from Jira and is
176
+ type carries `subtask: true`, under whatever name the site gave it (the
177
+ per-project `createmeta/{project}/issuetypes` first, which is all Jira Data
178
+ Center 9 answers, then the classic form). Same rule as
179
+ `features/jira-context.md`: the type travels as it comes from Jira and is
173
180
  never a matching criterion in code
181
+ - a site with several sub-task types (Analysis Task, Development Task, Test
182
+ Task) names them per role: `subtaskIssueType` as a map from a `subtaskRoles`
183
+ entry to the type, `"*"` for any other role. Without one the first discovered
184
+ type is used and the run prints the types it found
174
185
 
175
186
  The preview prints every field beside the pref key it came from, so a wrong
176
187
  setting is visible before the writes rather than in Jira afterwards.