@mmerterden/multi-agent-pipeline 20.22.0 → 20.23.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 (49) hide show
  1. package/CHANGELOG.md +29 -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 +52 -49
  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/json-file-lock.mjs +24 -2
  14. package/pipeline/multi-agent-refs/analysis/evidence.md +1 -1
  15. package/pipeline/multi-agent-refs/cross-cli-contract.md +1 -0
  16. package/pipeline/multi-agent-refs/features/analysis-jira.md +5 -0
  17. package/pipeline/multi-agent-refs/features/code-graph.md +40 -3
  18. package/pipeline/multi-agent-refs/features/usage-reporting.md +40 -23
  19. package/pipeline/multi-agent-refs/generate-issue.md +11 -1
  20. package/pipeline/multi-agent-refs/knowledge.md +18 -0
  21. package/pipeline/multi-agent-refs/phases/phase-1-plan.md +2 -2
  22. package/pipeline/schemas/code-graph.schema.json +3 -3
  23. package/pipeline/schemas/prefs.schema.json +26 -4
  24. package/pipeline/scripts/_code-graph.mjs +121 -12
  25. package/pipeline/scripts/_diff-impact.mjs +12 -5
  26. package/pipeline/scripts/_supertypes.mjs +133 -0
  27. package/pipeline/scripts/analysis-story-body.mjs +24 -8
  28. package/pipeline/scripts/capture-flush.sh +4 -1
  29. package/pipeline/scripts/code-graph-rules/android.json +1 -0
  30. package/pipeline/scripts/code-graph-rules/ios.json +5 -0
  31. package/pipeline/scripts/code-graph-rules/node.json +1 -0
  32. package/pipeline/scripts/code-graph-rules/python.json +1 -0
  33. package/pipeline/scripts/git-path.mjs +21 -0
  34. package/pipeline/scripts/graph-affected.mjs +2 -1
  35. package/pipeline/scripts/graph-confirm.mjs +140 -0
  36. package/pipeline/scripts/learnings-ledger.mjs +3 -2
  37. package/pipeline/scripts/product-context.mjs +30 -19
  38. package/pipeline/scripts/symbol-existence-gate.mjs +21 -9
  39. package/pipeline/scripts/test-gap-scan.mjs +4 -1
  40. package/pipeline/scripts/test-strength.mjs +7 -8
  41. package/pipeline/scripts/usage-identity.mjs +1 -1
  42. package/pipeline/scripts/usage-register.mjs +181 -15
  43. package/pipeline/scripts/validate-code-graph.mjs +3 -3
  44. package/pipeline/scripts/valven-gate.mjs +9 -1
  45. package/pipeline/scripts/valven-port.mjs +16 -5
  46. package/pipeline/scripts/valven-split.mjs +6 -4
  47. package/pipeline/skills/.skill-manifest.json +3 -3
  48. package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +3 -3
  49. 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.0",
4
+ "commit": "a64fcccc1e81e70293ec18d96f00b1bfc861dbe0",
5
+ "generatedAt": "2026-10-13T11:40:10.540Z",
6
6
  "algorithm": "sha256",
7
- "fileCount": 1364,
7
+ "fileCount": 1367,
8
8
  "files": {
9
- "CHANGELOG.md": "f5a379e2ae91bb3475d61749b8b192b8cf5ce48d37f1d299f303b9de912acfaa",
9
+ "CHANGELOG.md": "49fd9096d6707758216930437150dcf42cdd5d38ff33019a2bdfef97311782af",
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": "64736478061d3d3af245acd7bc6695e3d96a31910da64622f597bc5831b1ba51",
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": "bc6e1a7d54eb993ef1db3ded8880bc52748f5a4622145c26d5a0311ffd4ff7e1",
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",
@@ -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": "5f6932d2d675c4f7812c6d4c44a8de1bd4c6b07d2ff92a05d8747e811d0f22ad",
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": "009d3f1c9b5dfbbcdc5fd38b2edbea12ec8dead9ab116557288db12a8e44cd46",
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": "fc61b34d6495ae8576ecccf1cf1e4effac2d025644259f30bfc46fafe5de264a",
499
500
  "pipeline/scripts/_fingerprint.mjs": "d8c63b062a3be0e138b6675aa031824fcd96f5517cf0f7b477378913c1db7d73",
500
501
  "pipeline/scripts/_notices.mjs": "1f78037b0849ab3cf8a85ca353ed1610c2895250ac21a1d50ac1fb9732be4300",
501
502
  "pipeline/scripts/_path-match.mjs": "880b27d90351441b4f3c05e1a87ace62cd1caab3ec7a286663efb2176cb69a69",
@@ -507,12 +508,13 @@
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": "d31af077ee670dc68c25dca49b332ebefe44f1ccba3d6d5bd1f534c72609084f",
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",
517
+ "pipeline/scripts/analysis-story-body.mjs": "309cf9f1a9859228d073aff6e7b4a9322bc960d4fe1a21a10ce58521a0c1b641",
516
518
  "pipeline/scripts/analysis-story-tree.mjs": "6c14d66b9718e0b68a7020058cbaeaf2f38f0ea3b1ee72ffa11a0878d8e38f44",
517
519
  "pipeline/scripts/analysis-tickets-writeback.mjs": "8c1f117ac5c6516385e3458462de6bde28c81768853c2d9524118d0155befe8b",
518
520
  "pipeline/scripts/anonymize-findings.mjs": "5d7e042793790c1b924d4d952b4f79b7e5f1dd0a3fe936f1ee16a4fa2ba820dd",
@@ -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": "097cb95842ddbe4ed66c2fee3f87ce3be319eaee79533ee46ba917978ddcd8cd",
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.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",
@@ -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
@@ -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
@@ -3,6 +3,8 @@
3
3
  <!-- toc -->
4
4
  - [Phase 1 Step 2.6 - query before dispatching Explore](#phase-1-step-26---query-before-dispatching-explore)
5
5
  - [Impact of a change, not of a name](#impact-of-a-change-not-of-a-name)
6
+ - [Who implements this](#who-implements-this)
7
+ - [Confirming with a language server](#confirming-with-a-language-server)
6
8
  - [Phase 5 Step 3 - refresh after the branch changed code](#phase-5-step-3---refresh-after-the-branch-changed-code)
7
9
  - [What the report answers that a file-level view cannot](#what-the-report-answers-that-a-file-level-view-cannot)
8
10
  - [The graph is drawable, and one place already asks for it](#the-graph-is-drawable-and-one-place-already-asks-for-it)
@@ -10,8 +12,8 @@
10
12
 
11
13
  A deterministic, LLM-free map of what a repo declares and what refers to what,
12
14
  written to `~/.claude/knowledge/<project>/code-graph.json`. Gated by
13
- `prefs.global.codeGraph.enabled` (default `false`); with it off, Phase 1 and
14
- Phase 5 behave exactly as they did before. Design, trade and measurements:
15
+ `prefs.global.codeGraph.enabled` (default `true`); with it off, no graph is
16
+ built or refreshed (a graph file already on disk is still read). Design, trade and measurements:
15
17
  `docs/adr/0010-own-code-graph.md`.
16
18
 
17
19
  ### Phase 1 Step 2.6 - query before dispatching Explore
@@ -62,7 +64,8 @@ questions and lost narrowly to `grep -lw` on exact type names.
62
64
  `graph-affected --diff <base>` (or `<base>..<head>`, or `--diff-file <path>`)
63
65
  seeds the reverse walk from the change itself. Each hunk maps onto the
64
66
  innermost declaration it touches, through spans derived from indentation
65
- (`endLine`, schema 1.1.0); enclosing declarations are seeded too, because
67
+ (`endLine`, schema 1.1.0; attribute and decorator lines above a declaration,
68
+ multi-line ones included, belong to it); enclosing declarations are seeded too, because
66
69
  references point at types and a method alone has no dependents. The walk
67
70
  continues through what each dependent file declares, so the answer is the full
68
71
  blast radius to `--depth`, and the defining file is never reported as its own
@@ -79,6 +82,40 @@ reads the diff on its old side (`side: "old"`): a graph built on the base
79
82
  checkout maps a branch's diff correctly, and a deleted file still reaches its
80
83
  dependents.
81
84
 
85
+ ### Who implements this
86
+
87
+ `inherits` edges (schema 1.2.0) run from a subtype to each supertype the graph
88
+ defines once: a superclass, the protocols or interfaces it adopts (Swift and
89
+ Kotlin `:` lists, Python bases, TypeScript `extends` / `implements`), and a
90
+ conformance a Swift `extension` adds. `graph-affected "<Protocol>" --kind
91
+ inherits --depth 1` lists its conformers; without `--kind` the walk follows
92
+ them with every other dependency. Production code never gains an edge to a
93
+ type a test file declares, so a fake named after a framework type cannot turn
94
+ into a hub.
95
+
96
+ ### Confirming with a language server
97
+
98
+ The graph joins by name, so a direct dependent can be a file that only uses
99
+ the same word, and a dependent behind an ambiguous name is missing. Where the
100
+ toolkit's `code_references` (≥ v3.22.2) has an index (Swift through sourcekit-lsp, Kotlin
101
+ through kotlin-lsp), check the answer before a decision rests on it: call
102
+ `code_references` with `file` and `symbol` for each changed type (at most five).
103
+ With the Write tool, save the `graph-affected --json` answer as
104
+ `$RUN_DIR/affected.json` and the `code_references` results as a JSON array in
105
+ `$RUN_DIR/references.json` (`$RUN_DIR` is the run's log directory, where
106
+ `agent-state.json` lives), then merge:
107
+
108
+ ```bash
109
+ node $HOME/.claude/scripts/graph-confirm.mjs --affected "$RUN_DIR/affected.json" \
110
+ --references "$RUN_DIR/references.json" --root "$PROJECT_ROOT"
111
+ ```
112
+
113
+ Each direct dependent comes back `confirmed`, `name-only` (a ready semantic
114
+ index did not find it: treat it as a probable false positive) or `unchecked`
115
+ (a deeper ring, or no usable index); `lspOnly` names files the server found
116
+ that the graph missed. An answer with `indexReady: false` or `semantic: false`
117
+ confirms and demotes nothing.
118
+
82
119
  Phase 3 Step 1.75 passes the graph to `diff-risk-score.mjs --graph`, which adds
83
120
  `dependents_reached`: the distinct non-test files two rings out, capped so a
84
121
  hub cannot outweigh a security path. No graph, no signal, nothing fails.