@mmerterden/multi-agent-pipeline 20.21.0 → 20.22.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.
Files changed (41) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/docs/adr/0017-change-impact-from-the-graph.md +69 -0
  3. package/docs/adr/README.md +1 -0
  4. package/docs/ecosystem.md +6 -5
  5. package/docs/facts.json +4 -3
  6. package/install/catalog-history.json +1 -1
  7. package/install/templates/copilot-instructions.md +1 -0
  8. package/manifest.json +44 -40
  9. package/package.json +1 -1
  10. package/pipeline/commands/multi-agent/review/SKILL.md +2 -1
  11. package/pipeline/commands/multi-agent/setup/SKILL.md +6 -15
  12. package/pipeline/multi-agent-refs/_dev-context.md +15 -0
  13. package/pipeline/multi-agent-refs/analysis/evidence.md +5 -3
  14. package/pipeline/multi-agent-refs/analysis/locked.md +1 -1
  15. package/pipeline/multi-agent-refs/cross-cli-contract.md +1 -0
  16. package/pipeline/multi-agent-refs/features/code-graph.md +27 -0
  17. package/pipeline/multi-agent-refs/features/product-context.md +238 -0
  18. package/pipeline/multi-agent-refs/knowledge.md +2 -0
  19. package/pipeline/multi-agent-refs/phases/phase-1-plan.md +7 -12
  20. package/pipeline/multi-agent-refs/phases/phase-2-dev.md +1 -1
  21. package/pipeline/multi-agent-refs/phases/phase-3-review.md +7 -6
  22. package/pipeline/multi-agent-refs/platform-parity.md +23 -9
  23. package/pipeline/multi-agent-refs/setup/token-save-flow.md +24 -0
  24. package/pipeline/schemas/agent-state.schema.json +31 -0
  25. package/pipeline/schemas/analysis-spec.schema.json +14 -0
  26. package/pipeline/schemas/code-graph.schema.json +12 -1
  27. package/pipeline/schemas/diff-risk.schema.json +2 -1
  28. package/pipeline/schemas/prefs.schema.json +58 -0
  29. package/pipeline/scripts/_code-graph.mjs +76 -3
  30. package/pipeline/scripts/_diff-impact.mjs +312 -0
  31. package/pipeline/scripts/capture-flush.sh +58 -3
  32. package/pipeline/scripts/diff-risk-score.mjs +80 -9
  33. package/pipeline/scripts/graph-affected.mjs +167 -36
  34. package/pipeline/scripts/graph-query.mjs +16 -4
  35. package/pipeline/scripts/product-context.mjs +539 -0
  36. package/pipeline/scripts/smoke-cross-cli-behavior.sh +39 -1
  37. package/pipeline/scripts/validate-code-graph.mjs +2 -1
  38. package/pipeline/scripts/validate-diff-risk.mjs +1 -0
  39. package/pipeline/skills/.skill-manifest.json +3 -3
  40. package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +5 -1
  41. package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +8 -6
package/manifest.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@mmerterden/multi-agent-pipeline",
3
- "version": "20.21.0",
4
- "commit": "e2d004d1ef1ce70ca42cd6083052d67ebff6c0c5",
5
- "generatedAt": "2026-10-12T02:43:40.290Z",
3
+ "version": "20.22.0",
4
+ "commit": "03ec5c2c13457c10b8531763fb36cf24a3f50a5a",
5
+ "generatedAt": "2026-10-12T23:07:06.881Z",
6
6
  "algorithm": "sha256",
7
- "fileCount": 1360,
7
+ "fileCount": 1364,
8
8
  "files": {
9
- "CHANGELOG.md": "2c2cac1fda619f849e9002de180cc0f02fbe0ad9ec15f7392cebd434b80ea56f",
9
+ "CHANGELOG.md": "f5a379e2ae91bb3475d61749b8b192b8cf5ce48d37f1d299f303b9de912acfaa",
10
10
  "LICENSE": "8d8c51aaf1e1538b180c69965fa038db71be86798cc3e26a143bebfefe16a43e",
11
11
  "README.md": "4cb9fee0aed62bd1467bdc09954e011612b0de6e7895d663f297bc8778e00b2e",
12
12
  "README.tr.md": "f30edbc26e51e311077fbb5b64234e70285db92340e6dadc259cfd673f104326",
@@ -28,12 +28,13 @@
28
28
  "docs/adr/0014-six-phase-consolidation.md": "83db6bfd0a19800d53af241a72df21525f3bcfb6d4e8d0c8941faae152ee1acd",
29
29
  "docs/adr/0015-one-pipeline-no-depth-answer.md": "cf7b97e92a5b6b7df14067477fa4fa2e8425ea67a14307553343a6359d66e7a6",
30
30
  "docs/adr/0016-the-run-shape-is-asked-not-typed.md": "c8236b9d319f53ba1e5e948608b09c6b0ae21db4d42d3fd5111eef01cbf5dfa8",
31
- "docs/adr/README.md": "6ff58bc97dde4f1d94df60e4e221396a46906682b429ef275fd813cd288956e1",
31
+ "docs/adr/0017-change-impact-from-the-graph.md": "b8fab10ea308f833a8bca7fa566910a24ff4d2af6975b0f6296b217b0783baa6",
32
+ "docs/adr/README.md": "986c3de8dd67853eb978041490baf3b271b4c4d0e113cfdb5230228d6696a22c",
32
33
  "docs/architecture.md": "04fe9630d51646962bc5b660b4c82a8a8199984dc14d993aaf5c147c4c8f6968",
33
34
  "docs/best-practices.md": "f8b75b0d38b5896a6a852bb30a1edddeb24dab8b5b7b1d9313290e1241c72024",
34
- "docs/ecosystem.md": "44f7d2af1c3a655958bfc590d9d3ab10fcb2c9fe2f1558450f996dce0b45393a",
35
+ "docs/ecosystem.md": "328a56a9f48514bca380d311a8e62246d85ccb18668f873047a883596153395f",
35
36
  "docs/engineering.md": "550528cd47c7d2c921729c68d0782a00ac8e77a4bdfec479f6749f9c3235d188",
36
- "docs/facts.json": "8f1a90b5ece44ac36d2a8a58777e63038cddac208a044b092eefd709882524a4",
37
+ "docs/facts.json": "535fb530e718e489bad8a010d7ab2d13b92c005e3ab31cd7cfc95899d348da8e",
37
38
  "docs/features.md": "17e9971ba14b940a562c99df727150fadc8688d793a8dda4b8204482d51c30a4",
38
39
  "docs/performance.md": "bbf2f3922c25dcba0c1a9e69ef420e3871a729af5b35009a49b48a5d3c5cd151",
39
40
  "docs/recovery-guide.md": "59a8f1b66b34cb9ff5507b3d54dac3b9915e184aa044d9c758d18cac818d510e",
@@ -52,18 +53,18 @@
52
53
  "install/_telemetry.mjs": "5433d753f909beed2c8789272bba05e245482c472f83d3444f58000c4c9a634b",
53
54
  "install/_unattended-profile.mjs": "e1ed82bde35d19105ee12c2a551eb778912b0e5c93ab227fd15c993098d98de0",
54
55
  "install/_xcode-skills.mjs": "1a7e20f1e6743324b941c5d3ecac9f94c65fff1534ffd9c63b39cbea4f8d101a",
55
- "install/catalog-history.json": "39c2b310f9b7bd243141442aac55ab09d804ff085be794e0f4a43cce4ebb553c",
56
+ "install/catalog-history.json": "8fcb7fcd3b19c1e9bf9685af6031d6f128717f7efdd81d049a0ff158d2633e26",
56
57
  "install/claude.mjs": "106ce353ebc19c8319d057ce342e1f989519510465c798399076b5f3d8727904",
57
58
  "install/codex.mjs": "08925fe9f3ecdf509b37f01105652c847475d20fcde2db0d679b9a7d663ca145",
58
59
  "install/copilot.mjs": "41dc394b8a3ae77cfd194ce0ca9bbcafce9bdce349f1f72eeb86569f993e15fe",
59
60
  "install/index.mjs": "07ec26ecdd81cc983f146faf4b7095c98edce39c89a6fd83c24ce43229d2d9e7",
60
61
  "install/templates/claude-hooks.json": "12d6bb0c3cd7d71b1d2029e2eb4370ca7b5ee55bd88f96b09c927d8119a87be7",
61
62
  "install/templates/codex-instructions.md": "dd78eb9553e725c039380457245793a5fc748ae37ebf5ccfe11be5ed5b9a4025",
62
- "install/templates/copilot-instructions.md": "f8c34b1daa18cc0285a1d443765c9a799301ce4b853068e275f3e8abd166a2a6",
63
+ "install/templates/copilot-instructions.md": "2450ca338960e298a231fde7b0e0a08001cbefc0da94d850a6a686eaee8c9b94",
63
64
  "install/templates/multi-agent-autopilot-awake.plist.template": "ddd25c76c56fcbb38a89de8e35637372d70ace993d6bc487a88ca9cfb702fe1f",
64
65
  "install/templates/multi-agent-autopilot.plist.template": "122c8a61cd927edd99375d6e3da40f1d42bcceed5b6641785c8b28bb930bc77e",
65
66
  "install/unattended-profile-legacy.json": "f52e86b998956f09ad306b1735a6c10b58580d7082d8a55665a4c6bb15c3aa1f",
66
- "package.json": "72825278361b88c1b2742622d7ff2337a0f8c254467949052c6833793e3b1e89",
67
+ "package.json": "c98f4e94e6d67e82f3f2656f3e82bbb4f45243aa9e750c5881cc66439ffbbaf9",
67
68
  "pipeline/agents/android-architect.md": "11fb74543cb0ebcf9525ca6654fe95d53da7229e0bf4a1149b31fd9005abc453",
68
69
  "pipeline/agents/backend-architect.md": "b02a606c301e4714131aed70ae6d16eeb77fbc819a001e2752cff2488d4246de",
69
70
  "pipeline/agents/bulk-reader.md": "6597052cd7d205bac2b1c7633f5232fe1a40730664a913b8eb77efd5a786dc25",
@@ -117,7 +118,7 @@
117
118
  "pipeline/commands/multi-agent/review-analysis/SKILL.md": "2ba4ee67a56bd5f7041a02fcd227b5475b39f6e6a39b1f693cdf4bd5302c6e17",
118
119
  "pipeline/commands/multi-agent/review-issue/SKILL.md": "7ae7fe774c02114840cc21fb303f98c9a36bc2903f1db4cfc2cebe213ca70f1b",
119
120
  "pipeline/commands/multi-agent/review-jira/SKILL.md": "db8ecc7ec8c7040aac9c71dcf40dae194a76f146ab227833b909b45580b5347a",
120
- "pipeline/commands/multi-agent/review/SKILL.md": "dcbf4370351ed8b52e4cc9bc1167a1c385ef2cbb2a3a634e94b8c23d0e6e1f8d",
121
+ "pipeline/commands/multi-agent/review/SKILL.md": "d151f423115648363edf2a5b6471ecd2c3d0e2f8f67d3d1b430501a41618d11d",
121
122
  "pipeline/commands/multi-agent/route-off/SKILL.md": "aa8b677898b0efde1bd19c50383497da43a83b3b811e36f60695675d845c2de8",
122
123
  "pipeline/commands/multi-agent/route-on/SKILL.md": "009668650f618daafe78db728f82ebac5b3af7fe34600283e18480b01ece572c",
123
124
  "pipeline/commands/multi-agent/route-status/SKILL.md": "feeb453a21f56699df148ae944a6fa6c75dcb1a57061fef736e5c6a7273daf3c",
@@ -129,7 +130,7 @@
129
130
  "pipeline/commands/multi-agent/search/SKILL.md": "231f0dd266907423cc45feeadc4170852dc6fd45239e0bee3ee4e08d4d0f5958",
130
131
  "pipeline/commands/multi-agent/security-review/SKILL.md": "dfc2fad484c81169912062391f7ad97500ef113d95741902e5e18e7dd60b6da1",
131
132
  "pipeline/commands/multi-agent/serve/SKILL.md": "e931219d8be258a155a692d23c2b275c2e7e0a761b3f0354c943e26d2ce7b035",
132
- "pipeline/commands/multi-agent/setup/SKILL.md": "2f55f1ab3d3c2052584e4d189bb3cbaf11f7096da0f55d618b5c7c28df08a71a",
133
+ "pipeline/commands/multi-agent/setup/SKILL.md": "825de99f84b31f021c43e7d081b9e8c1d1af763570edc8cb6c81e5de1c42fd0f",
133
134
  "pipeline/commands/multi-agent/stack/SKILL.md": "26ecb48b28b61250330edb26fdfd014e401992e4f1329c572766ba4e2dc6e35d",
134
135
  "pipeline/commands/multi-agent/status/SKILL.md": "b08338841a5282f8ae2494751001aa31cbf4829146a58ed2c395b1c062b48443",
135
136
  "pipeline/commands/multi-agent/steer/SKILL.md": "07e738c228ba328f717f86e97e7af207df090b16433e28e613d430c3ff0aee3e",
@@ -242,14 +243,14 @@
242
243
  "pipeline/lib/workspace-trust.mjs": "baa33eb4bef709578c554fb6f1c5952d838a3fe154422e7e671ac485e49518dc",
243
244
  "pipeline/lib/xcode-plugin.mjs": "79d1bef0ec5c7909f970ff8772c8422adbaf6217b6f72c44c531a124d1a12fd0",
244
245
  "pipeline/multi-agent-refs/_account-picker.md": "42715ba746e1fc681a57436d72fc643e3f16de023f0409fee8782b013f7a144a",
245
- "pipeline/multi-agent-refs/_dev-context.md": "4d0905cc537c7f8526d3c92cf09bb44d2ab50680470ee0baa2dd5c3b1d0565d5",
246
+ "pipeline/multi-agent-refs/_dev-context.md": "8b6557682da99a2801f568696d75398420786842a87193ad9d70b5bc90146e25",
246
247
  "pipeline/multi-agent-refs/_input-parser.md": "4cf222b1c4a405bd71521f5290f45408cc8a47913a0a39166c68210104e90cc5",
247
248
  "pipeline/multi-agent-refs/_repo-picker.md": "c325e86d00fa5e26893eeafcfae8c809f62e34e2ec643b4b364ac4c6f9caca45",
248
249
  "pipeline/multi-agent-refs/analysis-template-corporate.md": "ffccd6ba4b8db4e1492c5b569dbd14f1953dd8da6a3aa5825e7563506b820779",
249
250
  "pipeline/multi-agent-refs/analysis-template.md": "7062312f153aa9219a1ced9f0b60ac3583b4a2034d9d205cf7144ac9bf70ef17",
250
- "pipeline/multi-agent-refs/analysis/evidence.md": "cac132b0d11b7ebd754fa154678fe7d127ab0faf08decc5829086b8d3e538e4d",
251
+ "pipeline/multi-agent-refs/analysis/evidence.md": "30033b52c4f298791f21275b8c0382b5d76fc1b6780e4af66753237005de55c9",
251
252
  "pipeline/multi-agent-refs/analysis/intake.md": "f5fb9e16620acb63fa41d14165d04f0fa6f5f7e178250a6f2b5b6d921d176f53",
252
- "pipeline/multi-agent-refs/analysis/locked.md": "68c010154e57191075778dbaf81200e1085181acacefef160c76023e665bbe09",
253
+ "pipeline/multi-agent-refs/analysis/locked.md": "c914d3da5182bfbb3ba613299cf38f12832fda2f17e1968e5a8fd7b32d867bdf",
253
254
  "pipeline/multi-agent-refs/analysis/redesign.md": "6314fc1e14e05166efbea4819d5b07adb838d0704bde61b4b69cef637f251d58",
254
255
  "pipeline/multi-agent-refs/analysis/render.md": "a65f2957623c1cef0f61cda4c89626524c703e5fb4070db446a13c091cdb4c5c",
255
256
  "pipeline/multi-agent-refs/analysis/resolve.md": "2e3631a8a9af999e01c66455378020e2134e6ca91bed3a40cd94717da94a34cb",
@@ -272,7 +273,7 @@
272
273
  "pipeline/multi-agent-refs/component-dispatch.md": "2ab9094aa716397e4840cd48f736c3f4fc3e7c4f9ccc5c7c7c52f9e8b0a28fb5",
273
274
  "pipeline/multi-agent-refs/component-generation.md": "04fdb3fd0f1c129e1df8243184a3225cebd9c4f63511d6015eb356a92eda8891",
274
275
  "pipeline/multi-agent-refs/conventions-defaults.md": "608a05ec6332fc19ee12c0418fbf25165f80e6c06cfee9efed7f27fab185d97d",
275
- "pipeline/multi-agent-refs/cross-cli-contract.md": "431d0a6e4f0021937af3cc8a7f994cc04f86136d37c473f12cf919e886e2852b",
276
+ "pipeline/multi-agent-refs/cross-cli-contract.md": "a8d5cbbf56862ee2a897e2961b1a7f5adc502765747e639bed43276b9ebd10f8",
276
277
  "pipeline/multi-agent-refs/design-check/build-launch.md": "0ac64d07ef7389e22f7443f79c70a0a4f8bb87dcff6dbc94c63e034febe194ea",
277
278
  "pipeline/multi-agent-refs/design-check/compare.md": "2a0a89542a8bfefcfeaf1068dd91edb6947392f911f23e8b4857e4ace8fd15d7",
278
279
  "pipeline/multi-agent-refs/design-check/drive-capture.md": "dee4cd6230a401bc9e9dc82fc08109803dd2630c872c5b77a43cf17db062b05f",
@@ -287,7 +288,7 @@
287
288
  "pipeline/multi-agent-refs/features/autopilot-circuit-breaker.md": "b2bd47d55a2af66da15c5ad8d066ec2990ebf9b3af3c0c38cc48b0ad0210565b",
288
289
  "pipeline/multi-agent-refs/features/autopilot-operations.md": "1883d06b7e4ecc20d957fa0adf029abd22b6c89d1ff6576b74e7f0a56ba884c8",
289
290
  "pipeline/multi-agent-refs/features/base-branch-evidence.md": "7b875d61cf11ecc9119b440037be0e849931b0c00f4c102640590f7e59e1646b",
290
- "pipeline/multi-agent-refs/features/code-graph.md": "dcdeb8f87da55e43d2bef10291e8a8b93ec3f880d995e8346809baa9d3a3011f",
291
+ "pipeline/multi-agent-refs/features/code-graph.md": "0223d6e3117c924b246dd42fbdf91109bd1950464a35092b08b73ce53c1b56eb",
291
292
  "pipeline/multi-agent-refs/features/code-intelligence.md": "f115b9e983d8617e64208326a3c858b59b6c5e960caaf35f97ac13b16bfc4c59",
292
293
  "pipeline/multi-agent-refs/features/constitution.md": "2144d1b35ac42a6d64edc292440c9dacdf70c86d190874566e1db9a02244bd77",
293
294
  "pipeline/multi-agent-refs/features/cost-analysis.md": "42f1b90b41ef454f29ccfd3f93c959920f0e74cbca65e140695e9a30d6d90b87",
@@ -305,6 +306,7 @@
305
306
  "pipeline/multi-agent-refs/features/plan-critic.md": "d218c8599d893211480a412d46efdbba4aa48e3b18e8bb0ebfd66782f3b8ebc5",
306
307
  "pipeline/multi-agent-refs/features/plan-todos.md": "8780d80b4541daee2b05080759a0694ef7e6270abe9a4621deb92ec7bac94e8e",
307
308
  "pipeline/multi-agent-refs/features/prior-fix-detection.md": "9bd172fa116b0c334576ee3df2dc478810a7e282422410e045be74ac2299253d",
309
+ "pipeline/multi-agent-refs/features/product-context.md": "6342a9adba460ed3ee50e33bc78974c78258d7f1a56beee6b73ed966c66ce81c",
308
310
  "pipeline/multi-agent-refs/features/repo-map.md": "9102f95d5c819c3bce3dc992cc98c67657e83f1fbc77d2e9b3d16b040bfab9f6",
309
311
  "pipeline/multi-agent-refs/features/repo-profile.md": "6080ba20a4246c448d675d4712c63c16892b0baadca18cebdc6887696edb5e30",
310
312
  "pipeline/multi-agent-refs/features/research.md": "776c9f3b644f8ff355108000b4a7381ff173e38811e8e2a73ef66e756d60c169",
@@ -333,7 +335,7 @@
333
335
  "pipeline/multi-agent-refs/help/tr.md": "227fc73ff4e6cbc164072b17eee8c1212dc5e17dac841bbbca689c583d739df8",
334
336
  "pipeline/multi-agent-refs/issue-jira-triad.md": "a12f4e3b75badf8a466e0c3531a5f0e12e44a1dd7799522fb03ff11068ce391d",
335
337
  "pipeline/multi-agent-refs/keychain.md": "d2c6a915595f25570dfc5c24ba1d86a133003af517fa348e077da4643664e43c",
336
- "pipeline/multi-agent-refs/knowledge.md": "33f6a4cc0ced930d192f32e0f7b2adf785395562f9dedd82ce939306c3d7a0e5",
338
+ "pipeline/multi-agent-refs/knowledge.md": "12a31305d0fcf607be7e9f8fd586af8d3d40079c47425390cd089925bca22dbb",
337
339
  "pipeline/multi-agent-refs/multi-repo-integration-build.md": "ff4ad08d382d1d31f5c4f3c382cb340058bbe5cb1cffbfef520500cad7b9c05c",
338
340
  "pipeline/multi-agent-refs/orchestrator/operations.md": "7e6e969e3d62eafaf489e0383748529b7798e28a1f7f62f0a71dcd507800752f",
339
341
  "pipeline/multi-agent-refs/orchestrator/phase-0-projects.md": "eb8ff77eadd0daf83c9673a5b396d7869642b5fc3a39d67e5fc3250401e9abad",
@@ -347,13 +349,13 @@
347
349
  "pipeline/multi-agent-refs/phases/modes.md": "0733e20dce458c09f30343db9149fc93bc5a4c9531670b93952f223811dcb1aa",
348
350
  "pipeline/multi-agent-refs/phases/operations.md": "9506a26684abfff1e332d92c2321e840544fd4f049aff9f118731e198dabca94",
349
351
  "pipeline/multi-agent-refs/phases/phase-0-init.md": "b8ac6727242ca0cd4c46cc3f83f048569af320d2bc1223e6b9f2ea84c6570a2e",
350
- "pipeline/multi-agent-refs/phases/phase-1-plan.md": "302adb4ae91b844b636e738e364749560f75685ad335bc800d52cf4ff6d4b3af",
351
- "pipeline/multi-agent-refs/phases/phase-2-dev.md": "ebd4c2e6992f286e2215c4deb55199a01804785255afb55e1730d6a4287e96df",
352
- "pipeline/multi-agent-refs/phases/phase-3-review.md": "bb18ce516e11e66cfd73532d8deaaa1c9d7cd7fb5bf274e6c574cc598d08a096",
352
+ "pipeline/multi-agent-refs/phases/phase-1-plan.md": "a8ebd49abb7868e1fb2b0979fbc04c405ddec1bed966acd617b9b8bf714fa8e2",
353
+ "pipeline/multi-agent-refs/phases/phase-2-dev.md": "239749d4af2417f058586987ed64aa29bef7cc4981db8f403fd4a2499ed0925d",
354
+ "pipeline/multi-agent-refs/phases/phase-3-review.md": "6e2eb55448d33e6cd64d00826a37547b9b33c4cc8c69beb0c020e6e1a210ae0c",
353
355
  "pipeline/multi-agent-refs/phases/phase-4-commit.md": "e0a4f3126f30fe8cee5a765a1220a3e5eaf67d344b0b4f03d0ced7cf1e451144",
354
356
  "pipeline/multi-agent-refs/phases/phase-5-report.md": "3d333dc4b072c98eda3f287f884e12de62cda7255b12de7725a72903cefa6016",
355
357
  "pipeline/multi-agent-refs/picker-contract.md": "bf1b3043946e4aa588203060d47d182ca1ee58b10dec27a85a7b74afde3565ed",
356
- "pipeline/multi-agent-refs/platform-parity.md": "43a3836efc359c6b7d30af38d66408d8d18661e72e5165b25bb8e15953e6feaf",
358
+ "pipeline/multi-agent-refs/platform-parity.md": "5ff185f06cd99fa99cbbc32841512090a23c128f0a6adccfc4fc430e75caf46b",
357
359
  "pipeline/multi-agent-refs/progress-contract.md": "d1dc3c117aeb880cd44b3439062e9fe7d5e2042ba00c49fd495f70a6bdc1addc",
358
360
  "pipeline/multi-agent-refs/prompt-assembly.md": "5be25fe3e91ab4f997735907b53c8284fad289c60960e71445e0e8632d2704d1",
359
361
  "pipeline/multi-agent-refs/readiness-review.md": "1413e47dc97a54c0a2bd597f996203f24ee8a356f3d5d8690b42b2dad47ddc40",
@@ -371,7 +373,7 @@
371
373
  "pipeline/multi-agent-refs/setup/google-play.md": "c60117fb8b13c709da93d379064aa0d56869bfde88fc5d5737996b7c1fc02ff7",
372
374
  "pipeline/multi-agent-refs/setup/identity-routing.md": "299870880a1d4f27986d09ce912288472d35cc333382301536ea25bc13289c70",
373
375
  "pipeline/multi-agent-refs/setup/repo-discovery.md": "06944e7b7677d998b6d169fbf5bebcac08c0f5eab808f9f1f3e5b6b2dc6a1f55",
374
- "pipeline/multi-agent-refs/setup/token-save-flow.md": "ed084f3a52a4e840625bd78ea04c9f790b9300e7155521b4efa8dc2f1a5b617a",
376
+ "pipeline/multi-agent-refs/setup/token-save-flow.md": "924c8b793a0088db8c1191977df0ee5c68bf3d6ed41b77741a95149dd949fd25",
375
377
  "pipeline/multi-agent-refs/store-ready/build.md": "a19e09b544a2f00d62d0687c0274a0c029a065dd11cccafd35ac746e37826594",
376
378
  "pipeline/multi-agent-refs/store-ready/gate-1-static.md": "026e1be646820449234d640db91049cfa676792d7a0f64d795b9862dc140010d",
377
379
  "pipeline/multi-agent-refs/store-ready/gate-3-policy.md": "bdd05019001d7f6115fc813295e21fcddae763b815e0ae3069909defbd8ac1e8",
@@ -401,9 +403,9 @@
401
403
  "pipeline/rules/swiftui-qa.md": "8c4afe9e72413e7bdab655f3d17588469e80ac34cb7ad2a690901fc5b6534818",
402
404
  "pipeline/rules/tdd.md": "4c1b3114506aa9794c9bb1e1aee1b1bbb4a993d192342e5697cc00bc2f6ea4a2",
403
405
  "pipeline/rules/testing.md": "695be5520b65451f0aa300a9643df2c05e607ff6ad372201ea34798dc5998bd5",
404
- "pipeline/schemas/agent-state.schema.json": "c5790d53ea138662402f2a391fa24c2ca19e74d09b09e6507dc60689765b2c2f",
406
+ "pipeline/schemas/agent-state.schema.json": "e7c967f9b0034eb261fadc908e80ebafdd389514226ae6b84bc58fe95dcbd354",
405
407
  "pipeline/schemas/analysis-output.schema.json": "41826f4bf7c96778f8cdbcc68531e984087897d438b7b49ac5a93fc29db47916",
406
- "pipeline/schemas/analysis-spec.schema.json": "230e08b931c42534e24f699f77c75a87c95e53b669b33c07930c4abb0c31281b",
408
+ "pipeline/schemas/analysis-spec.schema.json": "43770223266be1c94e2cdea585efb6783043353bc5a374613b554596f46e1bcd",
407
409
  "pipeline/schemas/answer-request.schema.json": "29d4211a2a05a230e0707b171b73341d2e56f6b83edb178b731905211aab4e23",
408
410
  "pipeline/schemas/answer-result.schema.json": "7e998e8dcd48d6152c867fd178c6c1107e97c21d19429e67554e7d7a3aa42a28",
409
411
  "pipeline/schemas/autopilot-config.schema.json": "c183332327520026c02f87f65377a1838e5de9cb9210337e6c4a6aaa7a0706c5",
@@ -413,7 +415,7 @@
413
415
  "pipeline/schemas/bug-bash-verification.schema.json": "5f9e7033b7d5d966dfa609a7fae79ba17a8bd7393aedbc35d2a782462f80ce01",
414
416
  "pipeline/schemas/bulk-read-output.schema.json": "468d447ee69d5576d16835cdd167a9191bf33d2b6e3af89373907582ef93f49e",
415
417
  "pipeline/schemas/clarify-output.schema.json": "13c3d933d24d9541a97fe7630f97587157c92e420794d6dea359726377c986a6",
416
- "pipeline/schemas/code-graph.schema.json": "ec022b4ac1ff1daada79cadc4469b7365f9faebd81d839c40bd931b41222fb4e",
418
+ "pipeline/schemas/code-graph.schema.json": "821323d94a538b1bdb1e22c2a319cca0f11e9eaf6f166a1e03d4e333a08f3c55",
417
419
  "pipeline/schemas/command-parameters.schema.json": "739a7ea14d2f17bfe8503bc26e547653e3a11794c26da774205ae4e5510ea533",
418
420
  "pipeline/schemas/complaint-analysis-spec.schema.json": "6dd5c4ebbfcd64408329bf69fc4f6b372e89be651c7ff394ae301b5cd9f6a1f4",
419
421
  "pipeline/schemas/constitution.schema.json": "d40d7da71a36973d4f934aac98b7cb550e4a33af31e9307a57286d31555bf738",
@@ -422,7 +424,7 @@
422
424
  "pipeline/schemas/criteria-manifest.schema.json": "a741931b1268200f8b9c4bfd470e082722fcc7b55203abeddaec016091679d5b",
423
425
  "pipeline/schemas/design-check-config.schema.json": "2501dc6b2f9198a37fbbfc69aebd38e91192f2157d17f1ec7a12f5d7e14117ea",
424
426
  "pipeline/schemas/dev-critic-output.schema.json": "2797ff79154b57f7539f8ae0181f9bf70e63e5f997b06a4aa05a5917ae50d1c8",
425
- "pipeline/schemas/diff-risk.schema.json": "da4d9133b7e1ccc03e46347224e442636cdf02757b95a77f4fe9d4b747223487",
427
+ "pipeline/schemas/diff-risk.schema.json": "3b4e00bec49f43400161de06936daa08d45571795d8b3286e5f227d67038310e",
426
428
  "pipeline/schemas/explore-run.schema.json": "e5e848fa638b14d0d630893c58746563f1d7a27b2f4cdc83ad0f2e51c97c9083",
427
429
  "pipeline/schemas/figma-project-config.schema.json": "5e2b61e1f165a507d1dc7a1b8b3df71a39a7034534376723b7f835212687d6b5",
428
430
  "pipeline/schemas/gc-request.schema.json": "a7c14b517973dafbc858c07a10cec957af3efc164263752281645180e3d95272",
@@ -455,7 +457,7 @@
455
457
  "pipeline/schemas/plan-todos.schema.json": "f1dcf8df338b29bbc1d874addd3408c0841a5f869c0b6075efd9242e3e8552d6",
456
458
  "pipeline/schemas/planning-output.schema.json": "bc6eda32ecd435cf84d846078f9d38347f8f741f8a427cff15913dd6c380d4b8",
457
459
  "pipeline/schemas/pr-request.schema.json": "ae75c4856349d62834802b1189af516bb6fb3d36646831b7ff2fa61d938afcd0",
458
- "pipeline/schemas/prefs.schema.json": "6beee7dbb67168528cb3d677cf4215c34c48fd97b5354017ef6f23de8662c482",
460
+ "pipeline/schemas/prefs.schema.json": "732cae37445f866a13f170e1698e1438a33f19b6162d76342bee23a89739e123",
459
461
  "pipeline/schemas/repo-profile.schema.json": "1a74ef8330da9a26a5a70955f6f9cbb20eda54a8615efaf86c7993d420a7f04e",
460
462
  "pipeline/schemas/repos.schema.json": "a9bf56f25c66201c170912e3389bd73e4a3f61922410f83e31a6c6ba47aee861",
461
463
  "pipeline/schemas/research-output.schema.json": "54e3ba1b04fdc20fbaa84333b943a8ab95d1395c7b0e0aedc67929184cb49523",
@@ -490,9 +492,10 @@
490
492
  "pipeline/scripts/_autopilot-config.mjs": "0f42d2791f1d71c4aad5a0735ca56fef1ed27d275b72f99d8ca8f95fcb8aa83a",
491
493
  "pipeline/scripts/_autopilot-ops.mjs": "5e84d628482434c8f09dc69601c73ab70e928af15c2f068d998d2f61bd692d1a",
492
494
  "pipeline/scripts/_autopilot-outcomes.mjs": "5b2423814d979ed5c657473290083b296f7245d40507c866e7931b2771001236",
493
- "pipeline/scripts/_code-graph.mjs": "b1b269ef90c8c0c356c9691e0e7b2f0b56a5130a69f9ca2535c9dfcb8c653807",
495
+ "pipeline/scripts/_code-graph.mjs": "513643c753a033818083f059c06a47d32664822a0cc716cb61fd0071b50c569a",
494
496
  "pipeline/scripts/_command-contract.mjs": "e97a5c624e0768769da54d4175e9f7655f1de1dcd0832468bc66bf140b0f5a6f",
495
497
  "pipeline/scripts/_cost.mjs": "bdf03835af4719b72e4574f2d5ca827e94f9d80e49527a8e9e200a0aa4ecd7a9",
498
+ "pipeline/scripts/_diff-impact.mjs": "49dad7013ec098252418718cd72e398b494928cf68b9f78158ed759147041212",
496
499
  "pipeline/scripts/_fingerprint.mjs": "d8c63b062a3be0e138b6675aa031824fcd96f5517cf0f7b477378913c1db7d73",
497
500
  "pipeline/scripts/_notices.mjs": "1f78037b0849ab3cf8a85ca353ed1610c2895250ac21a1d50ac1fb9732be4300",
498
501
  "pipeline/scripts/_path-match.mjs": "880b27d90351441b4f3c05e1a87ace62cd1caab3ec7a286663efb2176cb69a69",
@@ -532,7 +535,7 @@
532
535
  "pipeline/scripts/build-stack-plugins.mjs": "bd7b7f9a3983d4daaf5e4468abc79c0f195877a02a390dcccfb529d79e8c39c7",
533
536
  "pipeline/scripts/bulk-read.sh": "eb13ef378768e98a7624dc14c83e0cdc83ac01476567bcca16e390368f5706d0",
534
537
  "pipeline/scripts/capture-evidence.sh": "2f7657786e07c17c302b76d4ea6bafe391b65be3dd891901b78019af3a7e38e1",
535
- "pipeline/scripts/capture-flush.sh": "291da92a3a708bf2e8e0884d1d6e0a676da83650ee723f7a499a6549e6cd2adc",
538
+ "pipeline/scripts/capture-flush.sh": "ea5074dfdf69bef4182bed4a073c8f3a499c0d41f7ec0b6bde87f2870b40c910",
536
539
  "pipeline/scripts/capture-resume.sh": "4934ff7961e2b8eabcd154ca06dd53c1d4aab03986a39dff287b8c16f5cea7ee",
537
540
  "pipeline/scripts/check-derived-drift.mjs": "6716f1354b5b17d0314e5bbe18d987c5143ffeadd0825ff35d7414b3d7a516ad",
538
541
  "pipeline/scripts/check-read-size.py": "fa094f7fcc3ea830411a55f4acda12ffe5a2323c8fd105033ef238e13bc04c99",
@@ -554,7 +557,7 @@
554
557
  "pipeline/scripts/council-view.mjs": "f904aa3a71fe31f7b02a00c603186e251f66a652950d285e934b591571db56cc",
555
558
  "pipeline/scripts/crush-json.mjs": "303382670f8f170c8c6710202853a2de2915625813cd157185f9be4e2b27258e",
556
559
  "pipeline/scripts/diff-explain.mjs": "194d0635639607cb1af3de064453162e01c0d59dc0c2e187d21d45bae3bc559c",
557
- "pipeline/scripts/diff-risk-score.mjs": "b3e8da42fea1258162e40f4eb7809074831339b7563874527f7e825f7aa795ca",
560
+ "pipeline/scripts/diff-risk-score.mjs": "70bac656acc6154a13cc20a8174101b133531b9d1963f40f16bb162622d0017d",
558
561
  "pipeline/scripts/doctor.mjs": "4905cedb5a71e9890f6b9994d6097d840fccc4afcff2b4fbdc69aefb8017a2cb",
559
562
  "pipeline/scripts/estimate.mjs": "9847e412dd74ac19a5c3b84bed343f79d25f256022b2df98e3eb1296db45ed3a",
560
563
  "pipeline/scripts/evidence-gate.mjs": "347a8d3fa1d17d996de345585c216bd7071f4c1d687999daf6e48881720ea5df",
@@ -574,10 +577,10 @@
574
577
  "pipeline/scripts/git-path.mjs": "c035624f1ab924039b37e0911f56c6a1fa781ac41dc89fadfdaa4305f4359c12",
575
578
  "pipeline/scripts/github-ssh-setup.sh": "5a9e1836d80e4e176806c143a3c8ba4c1b9c4274ed49aac71f33bd40de31968b",
576
579
  "pipeline/scripts/glob-match.mjs": "c01722f2f60ef70838cbfeef55dfb8381b49c358c7a808a5b297a92cdeccf033",
577
- "pipeline/scripts/graph-affected.mjs": "c607abb05bf4ca264b5d8be6d961415ea8d8f22c58794520ce543d8a7d3c49d5",
580
+ "pipeline/scripts/graph-affected.mjs": "fc57496969bbf1bb7a91051c0e273b029085ce5fe807ad841c2d9c26fa782699",
578
581
  "pipeline/scripts/graph-build.mjs": "b81a0149d0c8ad8a9747dd7c2eecf3cc51195a6b47c23ded09f0bbb30ac60ea8",
579
582
  "pipeline/scripts/graph-mermaid.mjs": "8b68a9123174bd8ef38a64c0e653b8b53e6b1e8bcb4f94db171f66bd32225ee9",
580
- "pipeline/scripts/graph-query.mjs": "476ff56bbf0c488ff63b2533e1df3d6c351cae4ac8823de80778e11efee89bd6",
583
+ "pipeline/scripts/graph-query.mjs": "47f571b6ebb9417b816d75217a48f3b6c705b5109947d640040b16f866254310",
581
584
  "pipeline/scripts/graph-report.mjs": "d76ba06796eabbbb0f9a06929d322fa9cbd580131ca34c3c9d78cabd9772ce6a",
582
585
  "pipeline/scripts/issues.mjs": "66c787f1d6be924a61cb8b1504354dd7fb0de89a2afee744aa31435b834ef383",
583
586
  "pipeline/scripts/jira-attach.sh": "50f210e4747446790d40c61be84e06b423c13fb7edf6778d7d383c513f821277",
@@ -617,6 +620,7 @@
617
620
  "pipeline/scripts/pre-push-check.sh": "4a1554a625df4745a829c0df294db7ce450fbe44fe624e562008e9912be78925",
618
621
  "pipeline/scripts/probe-evidence-capability.sh": "ac74252eed6b773fdbc7ec475a63606925f1ba7b5e7c6f911329f46fd920eae7",
619
622
  "pipeline/scripts/probe-store-key.mjs": "b46dfcf444c95d0bb61de36823314945dacaaacb8f35841d153dcfcde8e4df1a",
623
+ "pipeline/scripts/product-context.mjs": "97a19f35ec340f739c8f22b8bed8496b937539221961582aec2ec6b7489f4443",
620
624
  "pipeline/scripts/prune-logs.sh": "c5587b33104c7253e07be8cce8249b50014c52dfdf232de637811ffdd88e95e4",
621
625
  "pipeline/scripts/purge.sh": "95c60b272ae47209893dba9b17528538592bb5636da47940a02734cd9b4f0ce5",
622
626
  "pipeline/scripts/record-phase.mjs": "041dc262e54f38b66299f45c44db7918812e599a773f5a3dc78cfd09ab5e155e",
@@ -649,7 +653,7 @@
649
653
  "pipeline/scripts/skill-candidates.mjs": "800df17b4a4ad8edc700d5d7bfac512ae861b3e20cf27a92a18c9d12729bc6ab",
650
654
  "pipeline/scripts/skill-conformance.mjs": "98081feb69107033191dc236773fce4d0e5aee6307f1ae1e36c68be1d3654859",
651
655
  "pipeline/scripts/skill-siblings.mjs": "5f7cbe1e80db64bc246e6fe899e8a8c03647a55a54047387feaa00923c78c29b",
652
- "pipeline/scripts/smoke-cross-cli-behavior.sh": "045ee8c3b72be48452bbda93b5064b0a019364af7538581d5026fc02a8ab9679",
656
+ "pipeline/scripts/smoke-cross-cli-behavior.sh": "4212e39ab4c2be160cd0b19fcd5d61ace226dcdff57431bf93a15aa28400d587",
653
657
  "pipeline/scripts/smoke-schema-validation.sh": "1898953b68d5ef655502c32679e0883da7038ccd657082b34978e8ba19f217ff",
654
658
  "pipeline/scripts/spec-consistency-gate.mjs": "16a302d61b562cabb754f72a2b65d376e2e39c98f6f68374c50e4015637b1055",
655
659
  "pipeline/scripts/symbol-existence-gate.mjs": "01cf577a9966cc3eb9ca65ac87ffe18eec7664023c783a0155bb73a4716cb2f9",
@@ -674,9 +678,9 @@
674
678
  "pipeline/scripts/usage-report.mjs": "bc330b3a5657aa99f4ec19dbf9fcca0590d02166f242b40a51b55ac3c0cc1b83",
675
679
  "pipeline/scripts/validate-analysis-doc.mjs": "3300212d6d7387f4f2f63e2712dad7dacc53d8c133d575a286d3d4bf06bca431",
676
680
  "pipeline/scripts/validate-analysis.mjs": "d2dc9ccf45f6ca2702908761939edd830d18b3b273016a4b449f26fe285d5ea1",
677
- "pipeline/scripts/validate-code-graph.mjs": "0ceac2f5b59f641334d54dc30bee5265361fb5fe1fc97e2f9791b546efe79941",
681
+ "pipeline/scripts/validate-code-graph.mjs": "80d66905b5b2122824206395b8da5c162ae22191bbe703f48f45c9830e21af87",
678
682
  "pipeline/scripts/validate-complaint-doc.mjs": "a6ffcab3bbe917c59edc035922393c106454ecea41693c19d3e458adc47d548e",
679
- "pipeline/scripts/validate-diff-risk.mjs": "7092757e80f7f7c39d22924e025cd0afeed7604a78f72270719c24999306737e",
683
+ "pipeline/scripts/validate-diff-risk.mjs": "cf53943f71a717fddaacf7426dea9d5eb4e0ec7bdb27bdfb91915176df9fee99",
680
684
  "pipeline/scripts/validate-planning.mjs": "bf8c250c2d18d775a8a7af6e7afa348460646cf0a2e18481b3e4c4ca02694331",
681
685
  "pipeline/scripts/validate-reviewer.mjs": "491fdcd01bd8692419157abfeb91da813505f099ede8cf150557f8aeaad04d86",
682
686
  "pipeline/scripts/validate-state.mjs": "ac2cfde75fe216a7549ba476c58f777f27d36e068de3796909926d68de2fb65a",
@@ -694,7 +698,7 @@
694
698
  "pipeline/scripts/worktrees.mjs": "90dfd09b70fffe9b56c331a4ae2692cc248f4898f4ee6aee4239ef0b20888a90",
695
699
  "pipeline/scripts/write-state.mjs": "e1198bf970eace07d3eff22b394808a526e473df65d3d58aa2d5a12cfdac8b49",
696
700
  "pipeline/scripts/write-store-config.mjs": "b994a061f6febb2ca3d396074d8b51d2c1c1f991d3072d321703380da3639a56",
697
- "pipeline/skills/.skill-manifest.json": "7bc20de35075819d6c43d5bf84376ccfe2b0db1dd06a9efe1d307780ebef01ba",
701
+ "pipeline/skills/.skill-manifest.json": "a3855be72470070e382c3c45457569cdc8d4bce1efbc163f7d3aacb751018c57",
698
702
  "pipeline/skills/.skills-index.json": "b2917fa44e273b939549f1c3ab3dd81c26ba8168772bc7644c9fa076116d8a4c",
699
703
  "pipeline/skills/shared/README.md": "928fe4292be729c3b7d7d0898cade8be0dfa868f208e0c6d1fe7b2c6bd6223c5",
700
704
  "pipeline/skills/shared/core/apple-archive-compliance/SKILL.md": "7239fef717ea45b79276bfcc2c3903acd57950b6e00dd6a2a66399c4b09cbd51",
@@ -739,7 +743,7 @@
739
743
  "pipeline/skills/shared/core/multi-agent-review-analysis/SKILL.md": "6c3428841fa62d7e5f36dd80465b09d6f695a2e89608cbb49a0d44cc3c7d289f",
740
744
  "pipeline/skills/shared/core/multi-agent-review-issue/SKILL.md": "7409755903a3c71c55643001f784c1c044ca153097f8ca6612c54b87f4ebcbb5",
741
745
  "pipeline/skills/shared/core/multi-agent-review-jira/SKILL.md": "a17a1f11fcf6c75640452e53ddddaaf906ff9e3ebfeda73e333f44db02515352",
742
- "pipeline/skills/shared/core/multi-agent-review/SKILL.md": "2b6934d6086a467bdf145b326061ab4b83d5479bfb1a2fb36420ff8012a02e5d",
746
+ "pipeline/skills/shared/core/multi-agent-review/SKILL.md": "1a22618e6d3d9d07b267bd61fc591bb33726e1d7ef8567285401f61bc7be0ad5",
743
747
  "pipeline/skills/shared/core/multi-agent-route-off/SKILL.md": "a30c0b9b73d5101c70c147599273019cf357969c37bc799017a9f6de4b8686a8",
744
748
  "pipeline/skills/shared/core/multi-agent-route-on/SKILL.md": "97c76d711454e6bc9edfd47344bbeab7f73cf72c116cca92cffacdcda7fe96b1",
745
749
  "pipeline/skills/shared/core/multi-agent-route-status/SKILL.md": "869689dbf84edece67168a892a61b51459ff6c15cbf7dafe40c2b774f875b9f0",
@@ -751,7 +755,7 @@
751
755
  "pipeline/skills/shared/core/multi-agent-search/SKILL.md": "5f5177cd28cbb13583441fb98402cfa251c78e69de693540584e9a1dcc7692cb",
752
756
  "pipeline/skills/shared/core/multi-agent-security-review/SKILL.md": "3c483d5942f2c2b81c0537d4db0b36804c13cabd66fd7fae2972d07a8f239f69",
753
757
  "pipeline/skills/shared/core/multi-agent-serve/SKILL.md": "90e4dd7225e10e670118ed05d0c8a9e346112c4bbbdb24a7fe7c5c334a83e848",
754
- "pipeline/skills/shared/core/multi-agent-setup/SKILL.md": "e3523960d5d178125302e5ceeb865902d7b12ea5d615670cddeb4d542fa48035",
758
+ "pipeline/skills/shared/core/multi-agent-setup/SKILL.md": "79a4afa655df12221a25bc386a32e61c38016d2de660dd618b404ca8bb0b28d3",
755
759
  "pipeline/skills/shared/core/multi-agent-stack/SKILL.md": "ac964cd00dd6ed06512530489d867efbc51d7d7614265f9aa022679325d5defe",
756
760
  "pipeline/skills/shared/core/multi-agent-status/SKILL.md": "444c3773b52e6786e40bc67c8833ea6aecadbcd4459b01127b4aff152157040a",
757
761
  "pipeline/skills/shared/core/multi-agent-steer/SKILL.md": "20f332bd2fe2745da5341f8d8187211fc47c06b4b5f5031e217affee0282ddb5",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mmerterden/multi-agent-pipeline",
3
- "version": "20.21.0",
3
+ "version": "20.22.0",
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",
@@ -287,7 +287,8 @@ the diff touches a screen, a service, a request model or a localization file,
287
287
  compare the change against that repo on four axes: endpoints called, parameters
288
288
  sent, business rules around the call, localization keys used.
289
289
 
290
- The counterpart is resolved automatically, in both directions (ios ↔ android),
290
+ In a product, counterparts are its other repos via `product-context.mjs refs`
291
+ and `repo_*`. Otherwise the counterpart is resolved automatically, in both directions (ios ↔ android),
291
292
  from four sources in this order, first hit wins: `--with <path|owner/repo>` (a
292
293
  one-off override, remembered like any other resolution), then a remembered
293
294
  `prefs.projects[<slug>].counterpartRoots[]`, then the primary checkout's sibling
@@ -24,6 +24,10 @@ node "$HOME/.claude/scripts/doctor.mjs"
24
24
 
25
25
  Run it before the first question and again at the end. The first run turns setup from a fixed script into a targeted one: there is no point asking for a token that is already mapped and answering. The second run is the only honest way to end - "setup complete" is a claim, and the doctor's exit code is the evidence for or against it. Report both in `outputLanguage`, and if the second run still shows a BLOCK, say so plainly rather than closing on the word "complete".
26
26
 
27
+ ## Sections
28
+
29
+ `/multi-agent:setup hosts`: the Step 3.5 host prompt per mapped hosted service, then Token Save Flow Step 3.7 per mapped GitHub/Bitbucket token. `accounts`: Step 3.6. `jira-keys`: the Jira key mapping. Tokens are left alone.
30
+
27
31
  ## Setup (Credential Store + Git Identity Onboarding)
28
32
 
29
33
  Uses `$HOME/.claude/lib/credential-store.sh` to read/write secrets in the macOS Keychain (`security`, built in). The pipeline is macOS only (ADR-0012).
@@ -214,7 +218,7 @@ The Step 2 discovery summary is never the end of setup. Immediately after showin
214
218
  Loop rules:
215
219
 
216
220
  - **One prompt per service.** Never collapse the list into a single "add missing tokens now?" yes/no, and never offer one multi-select covering all services: each service has its own source URL, key name, identity binding and host prompt, so each gets its own Token Save Flow pass.
217
- - **Each service pass asks, in order: token → author → host.** Step A/B collect the secret, Step C binds the git identity (author) - Bitbucket and GitHub included; every saved token gets an author - and Step 3.5 asks the host domain inline for hosted services (jira, confluence, bitbucket, fortify, graylog) - plus the Fortify project versions and the optional Graylog test instance. GitHub and Figma skip the host question (fixed domains); `bitbucket_user` skips author binding (username, not a PAT). Never end a service pass with the token saved but the author or a required host unasked.
221
+ - **Each service pass asks, in order: token → author → host → read binding (GitHub, Bitbucket; Token Save Flow Step 3.7).** Step A/B collect the secret, Step C binds the git identity (author) - Bitbucket and GitHub included; every saved token gets an author - and Step 3.5 asks the host domain inline for hosted services (jira, confluence, bitbucket, fortify, graylog) - plus the Fortify project versions and the optional Graylog test instance. GitHub and Figma skip the host question (fixed domains); `bitbucket_user` skips author binding (username, not a PAT). Never end a service pass with the token saved but the author or a required host unasked.
218
222
  - **Skip is per-service.** A Skip answer leaves that service's `keychainMapping` at `null` and the loop continues with the next service. Skips never abort the loop.
219
223
  - **`figma` and `figma_mcp` are distinct credentials for distinct tiers - ask both.** Skipping the PAT does not imply skipping MCP, and vice versa. The `figma_mcp` pass opens with a Remote / Local mode question instead of a clipboard paste (see "Figma MCP Setup" below): Remote generates a `figu_` OAuth token for the current user, Local wires the PAT-based local server.
220
224
  - The loop ends only when every missing service has been asked exactly once; then continue to Step 4 (Verify all).
@@ -257,23 +261,10 @@ Use the global default ({hosts.jira}) or set a per-account host?
257
261
  2) Set per-account host
258
262
  ```
259
263
 
260
- If `2`, prompt for `jiraHost` / `bitbucketHost` / `confluenceHost` (each optional). Save to `prefs.global.accounts[]`:
261
-
262
- ```json
263
- {
264
- "global": {
265
- "accounts": [
266
- { "id": "personal", "jiraHost": "personal.atlassian.net" },
267
- { "id": "client-x", "jiraHost": "client-x.atlassian.net", "bitbucketHost": "bitbucket.client-x.com" }
268
- ]
269
- }
270
- }
271
- ```
264
+ If `2`, prompt for `jiraHost` / `bitbucketHost` / `confluenceHost` (each optional). Save to `prefs.global.accounts[]` as `{ \"id\": \"client-x\", \"jiraHost\": \"client-x.atlassian.net\", \"bitbucketHost\": \"bitbucket.client-x.com\" }`.
272
265
 
273
266
  `account-resolver.sh` reads this on every invocation; per-account override wins over `global.hosts.*`. Skip this step on autopilot - `accounts[]` stays empty until the user opts in via `/multi-agent:setup accounts`.
274
267
 
275
- **Re-run / update**: `/multi-agent:setup accounts` opens the editor for this block without re-running token discovery.
276
-
277
268
  ---
278
269
 
279
270
  ### Step 4 - Verify all
@@ -81,6 +81,21 @@ Selects extra repos the pipeline may touch beyond the primary repo(s) - typica
81
81
  | node $HOME/.claude/scripts/write-state.mjs "$STATE_FILE"
82
82
  ```
83
83
 
84
+ 6. **Product map (once per project, attended only).** If the project has never
85
+ answered, offer to map the product it belongs to, so Phase 1 can read the
86
+ other repositories of it:
87
+ ```bash
88
+ PRIMARY_REMOTE=$(git -C "$REPO_PATH" remote get-url origin)
89
+ node $HOME/.claude/scripts/product-context.mjs needs-mapping --project "$PRIMARY_REPO_NAME" --developed "$PRIMARY_REMOTE"
90
+ ```
91
+ Exit 3 = already answered, or the remote is already in a product: skip. Exit
92
+ 0: list candidates with `repo-cache.sh` and `product-context.mjs suggest`
93
+ (commands in the contract). One multi-select of the suggestions (each with a stack the user sets; no
94
+ stack is guessed from a name), plus "not part of a product". Confirmed →
95
+ `product-context.mjs learn`; declined → `product-context.mjs decline`, which
96
+ stops the offer for good. Autopilot skips this step and uses the map as it
97
+ is. Contract: `$HOME/.claude/multi-agent-refs/features/product-context.md`.
98
+
84
99
  ## Web repos - `webRepos`
85
100
 
86
101
  Web repos are rarely submodules of the app repo, so submodule detection never finds them. `prefs.projects[<key>].webRepos[]` (or the pre-rename `frontendRepos[]`) is the primary source for them and is merged into the candidate list alongside the detected submodules. Only `/multi-agent:analysis` used to read this key, which meant the pipeline's own dev-context picker could not offer a web repo at all.
@@ -29,7 +29,9 @@ For each entry in `state.analysisSpec.contextLinks[]`, fan out by `type`. Entrie
29
29
 
30
30
  **Long sources:** with the free chain on, summarize long confluence/document/jira/generic-doc texts via `llm_delegate` first (`features/free-models.md`).
31
31
 
32
- For each repo in `state.analysisSpec.repos[]`, run parallel greps (lightweight surface scan; the deeper 13-bucket extraction happens in Phase 1b):
32
+ For each repo in `state.analysisSpec.repos[]`, run parallel greps (lightweight surface scan; the deeper 13-bucket extraction happens in Phase 1b).
33
+
34
+ Other repos are read at their latest branch via `repo_*` (`features/product-context.md`), shas in `evidence.repoShas[]`.
33
35
 
34
36
  ```bash
35
37
  # Localization
@@ -204,9 +206,9 @@ Phase 2 Section 20 Risks reads this list and emits one open question per entry.
204
206
 
205
207
  **Fallback source**: when `confidence == "none"` AND `evidence.standards[]` does not contain an explicit rule for that field, the renderer reads `$HOME/.claude/multi-agent-refs/conventions-defaults.md` and applies the platform default.
206
208
 
207
- **Caching (Locked 26)**: compute `evidence_digest = sha256(featureName || sorted(platforms) || options.redesign || hash(evidence.repoEvidence) || hash(evidence.conventions))`. `options.redesign` is a digest input: without it a redesign within a day of a normal run on the same feature reuses that cache, skips Phase 1b, and renders an empty current-behaviour table every redesign check then passes over. Cache key on disk: `/tmp/multi-agent-analysis-cache/<digest>.json` with mtime <= 24h. Cache hit skips Phase 1b and Phase 1c. `--no-cache` flag forces re-run.
209
+ **Caching (Locked 26)**: compute `evidence_digest = sha256(featureName || sorted(platforms) || options.redesign || evidence.repoShas || hash(evidence.repoEvidence) || hash(evidence.conventions))`. `options.redesign` is an input so a redesign never reuses a normal run's cache, which would skip Phase 1b and render an empty current-behaviour table. Cache key on disk: `/tmp/multi-agent-analysis-cache/<digest>.json` with mtime <= 24h. Cache hit skips Phase 1b and Phase 1c. `--no-cache` flag forces re-run.
208
210
 
209
- Phase 1d is not a digest input: community signal changes hourly, so it would invalidate the cache every run and re-run the two costly repo phases the cache skips. A cache hit reuses yesterday's signal rows, the right trade for an advisory tier; `--no-cache` refreshes them.
211
+ Phase 1d is not a digest input: community signal changes hourly and would invalidate the cache, re-running the two costly repo phases, every run. A hit reuses yesterday's advisory rows; `--no-cache` refreshes them.
210
212
 
211
213
  ### Phase 1d - Outside facts (optional, analyst toolkit)
212
214
 
@@ -72,7 +72,7 @@ behind.
72
72
  23. **Convention extraction mandatory (Phase 1c).** After Phase 1b repo evidence, Phase 1c extracts seven pattern groups (folder structure, class naming, UI state model, test method naming, accessibility identifier, localization key, DI registration) per selected repo via `~/.claude/lib/extract-conventions.sh`. Output lands in `state.analysisSpec.evidence.conventions[<repo>]` with confidence levels (high / medium / low / none) and evidence file citations.
73
73
  24. **Pass B cell footnote mandatory.** Every cell Pass B fills in Section 13 (Architecture Plan concept table) and any other per-platform projection carries a footnote of the form `^[<convention-key> <confidence>: <evidence-source>]` pointing back to Phase 1c output. Cells with `confidence: low | none` cite `conventions-defaults.md:C<n>-<platform>` and emit a row in Section 20 Risks ("convention fallback applied"). Footnote-less cells fail the dispatch gate.
74
74
  25. **Pass B preview before render.** Phase 2a presents the resolved convention table to the user before Phase 2b emits any platform file. The user can approve, override individual cells, or cancel. Empty answers do not imply consent (`feedback_no-inferred-defaults-from-empty-answer`); the picker re-asks on empty submit.
75
- 26. **Evidence digest caches Phase 1b and 1c.** `evidence_digest = sha256(featureName || sorted(platforms) || repoEvidence.summary || conventions.summary)`. When the same feature name is invoked again against the same set of repos and the digest matches, Phase 1b and 1c are skipped and the cached `evidence.repoEvidence` / `evidence.conventions` is reused. Cache TTL is 24 hours; manual invalidation via `--no-cache` flag.
75
+ 26. **Evidence digest caches Phase 1b and 1c.** `evidence_digest = sha256(featureName || sorted(platforms) || repoShas || repoEvidence.summary || conventions.summary)`. When the same feature name is invoked again against the same set of repos and the digest matches, Phase 1b and 1c are skipped and the cached `evidence.repoEvidence` / `evidence.conventions` is reused. Cache TTL is 24 hours; manual invalidation via `--no-cache` flag.
76
76
  27. **SwiftUI Preview block mandatory (iOS projection, SwiftUI only).** When the iOS file is produced AND the affected view is a SwiftUI view (detected via `import SwiftUI` + `: View` protocol conformance in `evidence.repoEvidence[<repo>].buckets.uiComponents`), Section 13.6 renders a Preview block table covering at minimum: canonical default (LTR Light), Dark, RTL, Dynamic Type accessibilityLarge, and one error variant. Loading state and edge-case variants are added when distinct from canonical. UIKit-only features (no SwiftUI view artefact) drop Section 13.6 with note `(N/A: UIKit-only feature)`. Preview macro convention (`#Preview` for Swift 5.9+ vs legacy `PreviewProvider`) is read from `evidence.conventions[<repo>].previewMacro`. Each Preview variant listed in Section 13.6 must have a matching row in Section 15.2 Snapshot Tests; a Preview without a snapshot row triggers a Section 20 Risk.
77
77
  28. **Variant usage explicit and bounded.** Section 6 inventory rows list which variants this feature consumes per component (concrete enum case + bool value). New Section 6.X (Variant Usage Matrix) catalogues the full variant axis vs. used subset with a rationale per excluded variant. Sections 13.6 (Preview) and 15.2 (Snapshot) cover only the used subset; expanding the variant set requires updating Section 6.X first.
78
78
  29. **Analysis as self-contained design bridge - no MCP outside analysis phase (BLOCKING, pipeline-wide).** The analysis document is the sole design source for every downstream phase. After Phase 1 of `/multi-agent:analysis` produces `analysis/<feature>-<platform>.md`, Phase 1 Plan, Phase 2 Dev, Phase 3 Review, Phase 4 Commit, and Phase 5 Report consume only the analysis document plus repo Code Connect mappings (`*.figma.swift` / `*.figma.kt`). Calling `mcp__claude_ai_Figma__*`, hitting `api.figma.com`, or fetching a `figma.com/design/...` URL during Phase 2+ is a violation. Applies to every mode that runs Phase 2+ (`/multi-agent` and `/multi-agent:autopilot`), in either workspace. Hard requirement (v9.0.0): Phase 2 Pre-item and Phase 3 Pre-item (BLOCKING) abort the run when the analysis document is missing. Memory: `[[mcp-only-in-analysis]]`. Generic rule rationale and access matrix: see `$HOME/.claude/rules/figma-pipeline.md` "MUST: No MCP outside analysis phase".
@@ -116,6 +116,7 @@ it does not. Contracts: `features/exploratory-testing.md`,
116
116
  | Document fetch and crawl | `web_scrape` (formats, cache, `change_tracking`), `url` / `sitemap` / `include_paths` / `llms_txt` on `web_crawl` and `web_map` | ≥ v3.20.0 |
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
+ | 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 |
119
120
 
120
121
  ---
121
122
 
@@ -2,6 +2,7 @@
2
2
 
3
3
  <!-- toc -->
4
4
  - [Phase 1 Step 2.6 - query before dispatching Explore](#phase-1-step-26---query-before-dispatching-explore)
5
+ - [Impact of a change, not of a name](#impact-of-a-change-not-of-a-name)
5
6
  - [Phase 5 Step 3 - refresh after the branch changed code](#phase-5-step-3---refresh-after-the-branch-changed-code)
6
7
  - [What the report answers that a file-level view cannot](#what-the-report-answers-that-a-file-level-view-cannot)
7
8
  - [The graph is drawable, and one place already asks for it](#the-graph-is-drawable-and-one-place-already-asks-for-it)
@@ -56,6 +57,32 @@ already spells out. Measured on a 4,300-file Swift app at a fixed 30k retrieval
56
57
  budget, it roughly doubled coverage at under half the cost on domain-word
57
58
  questions and lost narrowly to `grep -lw` on exact type names.
58
59
 
60
+ ### Impact of a change, not of a name
61
+
62
+ `graph-affected --diff <base>` (or `<base>..<head>`, or `--diff-file <path>`)
63
+ seeds the reverse walk from the change itself. Each hunk maps onto the
64
+ innermost declaration it touches, through spans derived from indentation
65
+ (`endLine`, schema 1.1.0); enclosing declarations are seeded too, because
66
+ references point at types and a method alone has no dependents. The walk
67
+ continues through what each dependent file declares, so the answer is the full
68
+ blast radius to `--depth`, and the defining file is never reported as its own
69
+ dependent. The JSON names `changedSymbols`, `notIndexed` (changed files the
70
+ graph does not contain), `fileLevel` (files from a pre-1.1.0 graph, seeded
71
+ whole) and `freshness`.
72
+
73
+ `freshness` is how far the graph is behind the tree: files edited since the
74
+ build (by size and mtime against the manifest, uncommitted work included),
75
+ files removed, and whether HEAD moved. `stale: true` means the answer describes
76
+ the tree as it was; say so, or rebuild first. A full build takes seconds.
77
+ Spans are line numbers in the tree the graph was built from, so a stale graph
78
+ reads the diff on its old side (`side: "old"`): a graph built on the base
79
+ checkout maps a branch's diff correctly, and a deleted file still reaches its
80
+ dependents.
81
+
82
+ Phase 3 Step 1.75 passes the graph to `diff-risk-score.mjs --graph`, which adds
83
+ `dependents_reached`: the distinct non-test files two rings out, capped so a
84
+ hub cannot outweigh a security path. No graph, no signal, nothing fails.
85
+
59
86
  ### Phase 5 Step 3 - refresh after the branch changed code
60
87
 
61
88
  Runs when `prefs.global.codeGraph.enabled` and `prefs.global.codeGraph.autoRefresh`