@mmerterden/multi-agent-pipeline 19.1.3 → 19.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +56 -7
- package/README.md +42 -15
- package/README.tr.md +38 -12
- package/docs/ecosystem.md +3 -4
- package/docs/facts.json +3 -3
- package/install/_common.mjs +5 -5
- package/install/_mcp-register.mjs +1 -1
- package/install/_plugin-skills.mjs +3 -4
- package/install/copilot.mjs +5 -5
- package/manifest.json +42 -42
- package/package.json +1 -1
- package/pipeline/commands/multi-agent/setup/SKILL.md +4 -4
- package/pipeline/commands/sim-test.md +4 -4
- package/pipeline/multi-agent-refs/analysis/locked.md +2 -2
- package/pipeline/multi-agent-refs/channels/jira.md +8 -8
- package/pipeline/multi-agent-refs/features/base-branch-evidence.md +2 -2
- package/pipeline/multi-agent-refs/features/scope-check.md +1 -1
- package/pipeline/multi-agent-refs/features/stack-skill-routing.md +1 -1
- package/pipeline/multi-agent-refs/phases/operations.md +1 -1
- package/pipeline/multi-agent-refs/phases/phase-1-plan.md +3 -3
- package/pipeline/multi-agent-refs/rules.md +1 -1
- package/pipeline/scripts/autopilot-runner.mjs +6 -7
- package/pipeline/scripts/build-references.mjs +3 -3
- package/pipeline/scripts/build-stack-plugins.mjs +1 -1
- package/pipeline/scripts/bulk-read.sh +6 -4
- package/pipeline/scripts/doctor.mjs +4 -4
- package/pipeline/scripts/learnings-ledger.mjs +1 -1
- package/pipeline/scripts/match-skills.mjs +4 -4
- package/pipeline/scripts/memory-load.sh +3 -3
- package/pipeline/scripts/plan-coverage-gate.mjs +3 -3
- package/pipeline/scripts/run-aggregator.mjs +2 -2
- package/pipeline/scripts/runs-index.mjs +7 -7
- package/pipeline/scripts/scope-check-gate.mjs +1 -1
- package/pipeline/scripts/smoke-schema-validation.sh +9 -12
- package/pipeline/scripts/usage-report.mjs +5 -5
- package/pipeline/scripts/validate-analysis-doc.mjs +3 -3
- package/pipeline/scripts/write-state.mjs +22 -11
- package/pipeline/skills/.skill-manifest.json +3 -3
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +4 -5
package/manifest.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mmerterden/multi-agent-pipeline",
|
|
3
|
-
"version": "19.1.
|
|
4
|
-
"commit": "
|
|
5
|
-
"generatedAt": "2026-09-
|
|
3
|
+
"version": "19.1.4",
|
|
4
|
+
"commit": "f13a6b27715b704907240b373fd20eb54d921c3e",
|
|
5
|
+
"generatedAt": "2026-09-21T09:27:23.265Z",
|
|
6
6
|
"algorithm": "sha256",
|
|
7
7
|
"fileCount": 1057,
|
|
8
8
|
"files": {
|
|
9
|
-
"CHANGELOG.md": "
|
|
9
|
+
"CHANGELOG.md": "d925ef34f59caeed05e44bd5f53e5ea0f64ea4cca946d3d3ff027bc1b449bdde",
|
|
10
10
|
"LICENSE": "8d8c51aaf1e1538b180c69965fa038db71be86798cc3e26a143bebfefe16a43e",
|
|
11
|
-
"README.md": "
|
|
12
|
-
"README.tr.md": "
|
|
11
|
+
"README.md": "ec1a92a3397ce7ed2665c18636c291ded71f1dbf5d36526232cae62edbbf6f82",
|
|
12
|
+
"README.tr.md": "fa72bdd99b0c80c5e3f976cbd9a71e08b3784eb4ce120ef57995440db1a3cbb1",
|
|
13
13
|
"SECURITY.md": "3fb38c517a8e2c6cea84c871b98a0c91ef3df17379028ba4f1686e07369e4c6e",
|
|
14
14
|
"docs/FIGMA_PIPELINE.md": "24155e13690ade810d99cda6a350051f0810bc971ae341bdef561a0a46f5032a",
|
|
15
15
|
"docs/adr/0001-three-model-triage.md": "79a6f1025469f607a5859add21854052d7433bc213f4aceee2e159b613eeb6a1",
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
"docs/adr/README.md": "4d7ac308a1b41d84c27c9097cc0907e0eadadc4b5776814b6495535049c2d148",
|
|
30
30
|
"docs/architecture.md": "6abbbf037539c9026727f4e237395962ca132f7260a35524a4820f6d6e2b8e88",
|
|
31
31
|
"docs/best-practices.md": "aeaaa12d518233cb09577c1dbaee00d62cd26f9f7e0400c681fe38742d6a7ba2",
|
|
32
|
-
"docs/ecosystem.md": "
|
|
32
|
+
"docs/ecosystem.md": "68a79da4b2582e807b99c0e85cd9a175febafb2202088e003718bc5de732c5ea",
|
|
33
33
|
"docs/engineering.md": "550528cd47c7d2c921729c68d0782a00ac8e77a4bdfec479f6749f9c3235d188",
|
|
34
|
-
"docs/facts.json": "
|
|
34
|
+
"docs/facts.json": "82e1e4b2069f055984064f869098eb4a9446e7e8e528c38650682d3fbecfb73f",
|
|
35
35
|
"docs/features.md": "927e5e54f7b1348ce2cddecb0d11115dc5ae9db20558b12d67932d38b26dad3f",
|
|
36
36
|
"docs/performance.md": "bbf2f3922c25dcba0c1a9e69ef420e3871a729af5b35009a49b48a5d3c5cd151",
|
|
37
37
|
"docs/recovery-guide.md": "1cc014295f8c8ffba1f1c44397b657e925f1bc0e4757217d6e69e8cfb271f3cb",
|
|
@@ -41,24 +41,24 @@
|
|
|
41
41
|
"install.js": "b2d71a926a62c96c994c76735f40dff068c429b5a368005fb62e60972da41c2a",
|
|
42
42
|
"install/_codex-agents.mjs": "ef9364c6b7001f083be24f8bf3ef1658adadc50195c64e46ffdee388a6419fe9",
|
|
43
43
|
"install/_codex-instructions.mjs": "add75ffc0e8d8db0e3bf275b46017a897a4cadb83dc66c7d3affd73bcead20f8",
|
|
44
|
-
"install/_common.mjs": "
|
|
44
|
+
"install/_common.mjs": "fab97294852c79c30dff355f34fefb6d7d859483d03505b586cef84141479c88",
|
|
45
45
|
"install/_copilot-instructions.mjs": "73e4b82b2af0f3e1669f772fa0788dac6b540c131e56d5fe38dcf29be85cc019",
|
|
46
46
|
"install/_dev-only-files.mjs": "8f8327a19fd03f8aaf7c5f739391ea4c97d47a59bb936e9b8cb485a3e59dbfe6",
|
|
47
47
|
"install/_managed-block.mjs": "7328728a7c82744b66218034389fc295d1384311daa5415408afa94be14303d3",
|
|
48
|
-
"install/_mcp-register.mjs": "
|
|
48
|
+
"install/_mcp-register.mjs": "56a785984afbba54aedc3677652ca4ee990d98d45b6599a3937cb656cad53b46",
|
|
49
49
|
"install/_platform-filter.mjs": "8733d7d151e26a89aec5b486e0ac5b5849c0d7cea80d46f28a9a1a61a77c7032",
|
|
50
|
-
"install/_plugin-skills.mjs": "
|
|
50
|
+
"install/_plugin-skills.mjs": "bf287053133f940df0ca434cfc5ee522fd27e80dc7f7e60ccc963ecaabee047a",
|
|
51
51
|
"install/_telemetry.mjs": "5433d753f909beed2c8789272bba05e245482c472f83d3444f58000c4c9a634b",
|
|
52
52
|
"install/_unattended-profile.mjs": "56aa49f3c9b885b4d0bc48597fc2d6c388d5d47767dd4d9d5aa820d7f8111267",
|
|
53
53
|
"install/claude.mjs": "056656e4437803ac7b0538921f3d43452e456d88ebd736d94e5d88cc5e2826b5",
|
|
54
54
|
"install/codex.mjs": "3b41d51552d6f6fd7e62e3fa232f7ef63fae4a0ef53c4b54f9bf20be441c3d1e",
|
|
55
|
-
"install/copilot.mjs": "
|
|
55
|
+
"install/copilot.mjs": "6a494e76e46fd36f03fbc0338ed598f0f1032fe63feef7b7c9b392c0f9fbe2c0",
|
|
56
56
|
"install/index.mjs": "c78d095731de0c281895d0b50dfab05b612802e1d4e05342bc561cd9155513e3",
|
|
57
57
|
"install/templates/claude-hooks.json": "eec51881826222694e79cc70437bbeaf996b49f37ce4c2cd065cce9a3591d1d0",
|
|
58
58
|
"install/templates/codex-instructions.md": "dd78eb9553e725c039380457245793a5fc748ae37ebf5ccfe11be5ed5b9a4025",
|
|
59
59
|
"install/templates/copilot-instructions.md": "18161f2a8c995044aeae69d47200795b8babcf8b80d5e09e8d91dcfb7c841ce2",
|
|
60
60
|
"install/templates/multi-agent-autopilot.plist.template": "d79de637b17330e720be43b96bfcdd51797bd9ce219eafaa3dd5a8ece96e4814",
|
|
61
|
-
"package.json": "
|
|
61
|
+
"package.json": "64e8ac95077d45cace1f6191f8e56375e3b4dc37260392d71668b37d3ab3564c",
|
|
62
62
|
"pipeline/agents/android-architect.md": "baa5787b3a4c800dd065e27e05f44462927c9938c8bb676c80f18cb10e2b12c4",
|
|
63
63
|
"pipeline/agents/backend-architect.md": "a83bd7f8b0a5289a1ef9a9b59d60fc759b8db260606ff2df427cf5ade5db8530",
|
|
64
64
|
"pipeline/agents/bulk-reader.md": "0b9d415fab2c449d43329d759049af9401255d06b32d57a38c95e684837b19bf",
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
"pipeline/commands/multi-agent/save/SKILL.md": "3b4414373f36b487317ebb661119b7caf3d1d0ac775035fdbce826cfc8e969da",
|
|
120
120
|
"pipeline/commands/multi-agent/scan/SKILL.md": "5d326f6929f43164eec5da44ccc44ef6956255b180a09798fdebd99c0fe4ebd0",
|
|
121
121
|
"pipeline/commands/multi-agent/search/SKILL.md": "2ed15dc7d71c7044e0410e8cff192cb795a64d8110fa615903288a7de7eb8565",
|
|
122
|
-
"pipeline/commands/multi-agent/setup/SKILL.md": "
|
|
122
|
+
"pipeline/commands/multi-agent/setup/SKILL.md": "0a77ce3247a7112cb64fe87300a42f5f3e58ee01f3c1cd190622fb32b88e36a9",
|
|
123
123
|
"pipeline/commands/multi-agent/stack/SKILL.md": "70d7e038d47dc0dcde77995f5a1b5ce74e86fabf3127c2d580cccff3eb097c6b",
|
|
124
124
|
"pipeline/commands/multi-agent/status/SKILL.md": "2e682a88c7e0d0cfb5a98cb6fb039c156ae79edf3e020bc158569a7541ee44b4",
|
|
125
125
|
"pipeline/commands/multi-agent/steer/SKILL.md": "891628bc4b215ee68fd4b4507ee2e780a3d38f1a872f6778fcd12ba3d3207a74",
|
|
@@ -134,7 +134,7 @@
|
|
|
134
134
|
"pipeline/commands/multi-agent/uninstall/SKILL.md": "ed5cdb8dc8c47c750e6374bc2add49b2305616f1131386f3377008edacf4fe2f",
|
|
135
135
|
"pipeline/commands/multi-agent/update/SKILL.md": "d938dc180878118abea1213482effe30229860b473e9a947d040576f584ae874",
|
|
136
136
|
"pipeline/commands/security-review.md": "2485ac912eebc61f6470075bd7d9c8bf759a22384514fcc3997a9a674a4766b3",
|
|
137
|
-
"pipeline/commands/sim-test.md": "
|
|
137
|
+
"pipeline/commands/sim-test.md": "17fcefc2030f0ab24b3ee59807dfc11264b34d7455138081996859b1fee8664e",
|
|
138
138
|
"pipeline/lib/_jira-auth.sh": "534080c9f53666f7aadd6fdd998ff98e61cb54c53739006f07eecb6b86d6e210",
|
|
139
139
|
"pipeline/lib/account-resolver.sh": "61e99f28699dcd8f12d66072ea55165ea7d78211bf2ee39bc5d68a96f7d4d491",
|
|
140
140
|
"pipeline/lib/analysis-jira-write.sh": "477e7b4e2aaaa8289ab0cdb315f04c3a9b22beb8f075bbb73b6fa174d6679197",
|
|
@@ -190,7 +190,7 @@
|
|
|
190
190
|
"pipeline/multi-agent-refs/analysis-template.md": "747d272b70c52c6ff8b321eb24c6553d93c144d872f431d7bfcbfe7d6619d2d4",
|
|
191
191
|
"pipeline/multi-agent-refs/analysis/evidence.md": "0550bc0bc9865dcd4a879cb5bf2fad1869f58ea2fa60c906577e421a485e3b26",
|
|
192
192
|
"pipeline/multi-agent-refs/analysis/intake.md": "9b92880a57218cf5e552547d4ddd9ee797603573ecd16617b1fc60b5e03c3564",
|
|
193
|
-
"pipeline/multi-agent-refs/analysis/locked.md": "
|
|
193
|
+
"pipeline/multi-agent-refs/analysis/locked.md": "bd6f199331dcb204e25fddbc0b052d9589b48ff370dd23f4b9fd437d48971946",
|
|
194
194
|
"pipeline/multi-agent-refs/analysis/redesign.md": "ed0b1c6c4157b0063debecad3342a48c83f3b015160cb6f37fbc429167ad18c3",
|
|
195
195
|
"pipeline/multi-agent-refs/analysis/render.md": "19ba156f82d8e42657256657a42b998586b42117e91570f434c230fcccab5a16",
|
|
196
196
|
"pipeline/multi-agent-refs/analysis/resolve.md": "c38a465f15c6140e4a4d42cd0b312c32e306ec7b36df385182da1a6a045dee8e",
|
|
@@ -201,7 +201,7 @@
|
|
|
201
201
|
"pipeline/multi-agent-refs/backend-guide.md": "b8809b06f7feea6a13f9b433a2b9828e39c81ef3ab59edd23c61cf183d80f7b0",
|
|
202
202
|
"pipeline/multi-agent-refs/channels/confluence.md": "1e1d731e9f57efdfe77efab3281d74b7f16e28d3d49699da516225492c551ffc",
|
|
203
203
|
"pipeline/multi-agent-refs/channels/issue-comment.md": "19df6d8d6c23b5ea88687250dc10dd5fa35ba2b2e279efcb000e83622a0664f6",
|
|
204
|
-
"pipeline/multi-agent-refs/channels/jira.md": "
|
|
204
|
+
"pipeline/multi-agent-refs/channels/jira.md": "8d1901758c890a90ac171ecf36566370f6bebdceb48e1387cd1bf11223ea6c8a",
|
|
205
205
|
"pipeline/multi-agent-refs/channels/pr-review-actions.md": "21bf53796ae4ecd59769f9944ad8c7d1cd3a5915b0956be99ec875b847b33c00",
|
|
206
206
|
"pipeline/multi-agent-refs/channels/pr.md": "a6d5244a3bf5cf5f15d961a07972c9917db98c436f1a9cfdfe6c3c3dba7d5b69",
|
|
207
207
|
"pipeline/multi-agent-refs/channels/wiki.md": "ba52c5efaedc067dd8456fe9076af694d7e3dae9bda621f1df65c9159cd422da",
|
|
@@ -212,7 +212,7 @@
|
|
|
212
212
|
"pipeline/multi-agent-refs/cross-cli-contract.md": "6cffb12e1aff14c50b01ba5597bb72a52cc207eae83ef285f76d4f5654e97179",
|
|
213
213
|
"pipeline/multi-agent-refs/features/analysis-jira.md": "5542735d39a96d288cf99d1dfe18ec30270d2777a260c80d74ab6e5121edc9fb",
|
|
214
214
|
"pipeline/multi-agent-refs/features/autopilot-circuit-breaker.md": "1995fb86bee28600c727cd6c94f39da33efd67f2bce3092705b354f4b2cd3aad",
|
|
215
|
-
"pipeline/multi-agent-refs/features/base-branch-evidence.md": "
|
|
215
|
+
"pipeline/multi-agent-refs/features/base-branch-evidence.md": "7b875d61cf11ecc9119b440037be0e849931b0c00f4c102640590f7e59e1646b",
|
|
216
216
|
"pipeline/multi-agent-refs/features/code-graph.md": "dcdeb8f87da55e43d2bef10291e8a8b93ec3f880d995e8346809baa9d3a3011f",
|
|
217
217
|
"pipeline/multi-agent-refs/features/code-intelligence.md": "f115b9e983d8617e64208326a3c858b59b6c5e960caaf35f97ac13b16bfc4c59",
|
|
218
218
|
"pipeline/multi-agent-refs/features/cost-analysis.md": "42f1b90b41ef454f29ccfd3f93c959920f0e74cbca65e140695e9a30d6d90b87",
|
|
@@ -230,10 +230,10 @@
|
|
|
230
230
|
"pipeline/multi-agent-refs/features/review-delta.md": "4fd2c3979c7a42b23350424294e96de43967d51ae86757369cdf7229e648636a",
|
|
231
231
|
"pipeline/multi-agent-refs/features/review-file-set.md": "a751888bce82a8e6970c9abe7f354c5c0704956e5278aeb091b893be0df5c1ef",
|
|
232
232
|
"pipeline/multi-agent-refs/features/review-multi-repo.md": "b0c45a9d67ccb85e7e245604830e40cce6f94d72e026dae980ea61dfe9fd6fc0",
|
|
233
|
-
"pipeline/multi-agent-refs/features/scope-check.md": "
|
|
233
|
+
"pipeline/multi-agent-refs/features/scope-check.md": "4f8844de8137256df4b83a5c54852353df1bbf7387c3f76f42e09058a04153b7",
|
|
234
234
|
"pipeline/multi-agent-refs/features/shadow-git.md": "d020c7b99a993eb11398d08e0518207b990b3ec3807fbcf0926c6cb304777ce9",
|
|
235
235
|
"pipeline/multi-agent-refs/features/skill-conformance.md": "e62c30cd36716f48a836a1372cfbd11e61b7dbc50be01ce0370c3acf5fc01427",
|
|
236
|
-
"pipeline/multi-agent-refs/features/stack-skill-routing.md": "
|
|
236
|
+
"pipeline/multi-agent-refs/features/stack-skill-routing.md": "8d45fb7331509411617d2bf5c42e752eaaa7ada24dcf38140f2710b28ab4fc0f",
|
|
237
237
|
"pipeline/multi-agent-refs/features/url-enrichment.md": "64af9f058ac5e7fbc662acb8839adf0d4cd67ee20db91e8f9a3b7a514bdb3eed",
|
|
238
238
|
"pipeline/multi-agent-refs/features/usage-reporting.md": "c65dcdac7ff4ec54578cdfce3b84e818eb122a40fced9bc10a5cdb5650e9e40d",
|
|
239
239
|
"pipeline/multi-agent-refs/features/verify-by-test.md": "6be89c7020ebdce6903e1f72cb74adeb5c4eb93a5f0e18c0b1b7c0cae619a42a",
|
|
@@ -250,9 +250,9 @@
|
|
|
250
250
|
"pipeline/multi-agent-refs/phases.md": "0f473c60622752eec60631f1c58232b345f938c4018226a012650f706921bbd7",
|
|
251
251
|
"pipeline/multi-agent-refs/phases/log-format.md": "e03a93239ee0f06048c1f22cacfc76d485b53285cbcebd4e2eb034a67f017b22",
|
|
252
252
|
"pipeline/multi-agent-refs/phases/modes.md": "1a735f9bbf6fa34129cbb9374113481ac39d13192e6cfece94895a2989e6c1f7",
|
|
253
|
-
"pipeline/multi-agent-refs/phases/operations.md": "
|
|
253
|
+
"pipeline/multi-agent-refs/phases/operations.md": "dc1628b2974584c0d9b14ff4ab27f9bdfa712621299c66efea92dcd0a4a53a5f",
|
|
254
254
|
"pipeline/multi-agent-refs/phases/phase-0-init.md": "335abcec15efc4da8b793fd4c311e39309000db0b3c6707e2e99ed5a876dc3fe",
|
|
255
|
-
"pipeline/multi-agent-refs/phases/phase-1-plan.md": "
|
|
255
|
+
"pipeline/multi-agent-refs/phases/phase-1-plan.md": "b3044205f1607732c3810153b0a269d87148278073fbf17704f35867f52c195c",
|
|
256
256
|
"pipeline/multi-agent-refs/phases/phase-2-dev.md": "43422b3b924b3083c44b811630286dc04e537fbfbc90a2a7bbefde1943d8cd78",
|
|
257
257
|
"pipeline/multi-agent-refs/phases/phase-3-review.md": "05572e7fbde68702c12721a19421b324d914bd45240e719a848f0a7d4f3a0214",
|
|
258
258
|
"pipeline/multi-agent-refs/phases/phase-4-commit.md": "da5ec29cefe75322dd474697f3f1c3e676b3981d2bdca66f04d0cb9f95db879f",
|
|
@@ -264,7 +264,7 @@
|
|
|
264
264
|
"pipeline/multi-agent-refs/readiness-review.md": "cdaea8291ed085ab938ac6e2a5b611d6ed4792c219e785ef925bf281a12ec5f6",
|
|
265
265
|
"pipeline/multi-agent-refs/refactor/observations.md": "7a63a7043bf1c42a78296ab082b1cace67fbcdf0078fec736fffd9af3147b6ce",
|
|
266
266
|
"pipeline/multi-agent-refs/refactor/toolkit-research.md": "1ef7f36345c5a7d2f6bb8529ef39e9e00865c6ca851aec942891bc2f8a57ea2b",
|
|
267
|
-
"pipeline/multi-agent-refs/rules.md": "
|
|
267
|
+
"pipeline/multi-agent-refs/rules.md": "a5fd1ba3628395e785b37f85aa4f09fd47c860838f6388f84e9016e02c7ceade",
|
|
268
268
|
"pipeline/multi-agent-refs/setup/app-store-connect.md": "6208a8125212e3ef44faf61236c5dd8ec3e8f71817fa477e8cd92415906a0759",
|
|
269
269
|
"pipeline/multi-agent-refs/setup/firebase.md": "a82031c67993762303a7ecd222e2574fbbf8d65dcc6b17e051a8dd53a9e31474",
|
|
270
270
|
"pipeline/multi-agent-refs/setup/repo-discovery.md": "1cee0cc448a6359c04a3b9dca6030ea69636e57b720a4a52169760ffd0559a1e",
|
|
@@ -347,13 +347,13 @@
|
|
|
347
347
|
"pipeline/scripts/autopilot-arming.mjs": "ef51d729c03c099898bd3479763085251896b1a1e2ce5c4336bab946a10522e7",
|
|
348
348
|
"pipeline/scripts/autopilot-intake.mjs": "5ccb1087039a35827c6e6ded0ab12c6a5ec8ce4ce7d52b113ab81414ae9bbad9",
|
|
349
349
|
"pipeline/scripts/autopilot-menubar.swift": "e2004ddc8b2592818b90b9ae75e9d250f83f33f2d56480bd0870ffe8d3ce0180",
|
|
350
|
-
"pipeline/scripts/autopilot-runner.mjs": "
|
|
350
|
+
"pipeline/scripts/autopilot-runner.mjs": "818d11701abea6bf12c13b015a0bf669d724533d522378e931b599f0277e12ba",
|
|
351
351
|
"pipeline/scripts/autopilot-status.sh": "e4643f2bce5bae4634771c414c60bb9b520bb878fdabb534e83206f911579c62",
|
|
352
352
|
"pipeline/scripts/base-branch-candidates.mjs": "c73a02033ed9f10c15b3aaf010432f0d4e429a75eba14731e9a64492e3fe3859",
|
|
353
|
-
"pipeline/scripts/build-references.mjs": "
|
|
353
|
+
"pipeline/scripts/build-references.mjs": "6998a67800e7263e0940a32ee9def5e6e4667a0149f5eae9dadd6ef4b5959fd0",
|
|
354
354
|
"pipeline/scripts/build-skills-index.mjs": "35b7ae8299db6a554064096ea34b476cb231b5f15bbf0dd86dd3b128399e9390",
|
|
355
|
-
"pipeline/scripts/build-stack-plugins.mjs": "
|
|
356
|
-
"pipeline/scripts/bulk-read.sh": "
|
|
355
|
+
"pipeline/scripts/build-stack-plugins.mjs": "b95a618afba167c24ef13ee39401b28b833c454e5c517adf82bd8e99b842a410",
|
|
356
|
+
"pipeline/scripts/bulk-read.sh": "f5f55e229b00b849a84e6b6015e3bba1f0cb59dba5fb011857d1ceaafe7ad614",
|
|
357
357
|
"pipeline/scripts/capture-evidence.sh": "2f7657786e07c17c302b76d4ea6bafe391b65be3dd891901b78019af3a7e38e1",
|
|
358
358
|
"pipeline/scripts/capture-flush.sh": "8fe8e130e59bacaa9f830a80504fc1495766f0cfbd5e7d995f7c19212326b5d5",
|
|
359
359
|
"pipeline/scripts/capture-resume.sh": "8fbe261310c139dd6fc9aa896a7f93953bdf44b5909607c8c16f59aad88e4296",
|
|
@@ -374,7 +374,7 @@
|
|
|
374
374
|
"pipeline/scripts/crush-json.mjs": "303382670f8f170c8c6710202853a2de2915625813cd157185f9be4e2b27258e",
|
|
375
375
|
"pipeline/scripts/diff-explain.mjs": "79137dafe5a3b90a5496611c215669f26d92ab070dc4a71f1d37ed095a49c471",
|
|
376
376
|
"pipeline/scripts/diff-risk-score.mjs": "b3e8da42fea1258162e40f4eb7809074831339b7563874527f7e825f7aa795ca",
|
|
377
|
-
"pipeline/scripts/doctor.mjs": "
|
|
377
|
+
"pipeline/scripts/doctor.mjs": "f1f821d21b37e694c4b1c2cbb3a7f7453d014c84b403f028fcefd0b36b26ddd6",
|
|
378
378
|
"pipeline/scripts/evidence-gate.mjs": "54bd99ad7ead241cdb9b6281994dac31695fd0c7cf92222249803abc1a48f78a",
|
|
379
379
|
"pipeline/scripts/feedback-send.mjs": "8ec3f8fcafbe0de6c916a13a151d009cb804522537621b239a183591dddeec85",
|
|
380
380
|
"pipeline/scripts/finding-fingerprint.mjs": "fa12ab10701db5d2bfff014e41d1cd4c0b2b772aee5fc69205de14b2761b0c83",
|
|
@@ -402,13 +402,13 @@
|
|
|
402
402
|
"pipeline/scripts/keychain.py": "8af71a5b50d3cafa439e270383a3f7d83bb236348544c1ec4522ca3ec8b74df6",
|
|
403
403
|
"pipeline/scripts/learn-from-transcripts.mjs": "337c4cf96728afebd3938276975b41925299485a357c0fe9cc10a22f95811945",
|
|
404
404
|
"pipeline/scripts/learning-curve.mjs": "d574eec427c7f37a7a77a9ef9e2499f50dadc2215a20ae24e31654afd3497f36",
|
|
405
|
-
"pipeline/scripts/learnings-ledger.mjs": "
|
|
405
|
+
"pipeline/scripts/learnings-ledger.mjs": "411bf80329a1c7700e5a523d5f0a7d1d3a716514f9656703bce67e26e71e0bb0",
|
|
406
406
|
"pipeline/scripts/localize-commands.mjs": "36bdc1e4f6f8d4d84150ca5d5fab3f2b54104d1f90903b36170b4dd756454a7f",
|
|
407
407
|
"pipeline/scripts/log-metric.sh": "e3169936284d957537f68634e2dac4f12dcb041943f8dd69dd495325ddabd2e3",
|
|
408
408
|
"pipeline/scripts/make-manifest.mjs": "db692c1bfcc0a7721ffb0b4d9ec57b74fadcaddf2821a32e222a4d4a513c425a",
|
|
409
|
-
"pipeline/scripts/match-skills.mjs": "
|
|
409
|
+
"pipeline/scripts/match-skills.mjs": "dd6c023a623ce6e9999f3eceaacd91f8d0c8ac621e3f025c8949e2203dc05bdf",
|
|
410
410
|
"pipeline/scripts/maturity-followup.mjs": "e26ec6c95b6e30e3e341c4e3baa865a65b3ee4d4367d4282290deabdbfdd70f2",
|
|
411
|
-
"pipeline/scripts/memory-load.sh": "
|
|
411
|
+
"pipeline/scripts/memory-load.sh": "c6a1976372ed033c9f3b55e757e22d05b4ef0d9774bfe185453d8847525b4a89",
|
|
412
412
|
"pipeline/scripts/memory-save.sh": "8caf85d47774f3e4beaed4a78dc730cd24175545f91625c3a393f1613787766b",
|
|
413
413
|
"pipeline/scripts/migrate-prefs.mjs": "3ed67c4ab9d7e1427d084d6626679113d55d02b9fe957b40c7c5485a3572566a",
|
|
414
414
|
"pipeline/scripts/migrate-state.mjs": "b6fb42f56ea56ab10c00e947f013e3aecaeef1aa0d819493eedbef7cdf7d4370",
|
|
@@ -420,7 +420,7 @@
|
|
|
420
420
|
"pipeline/scripts/phase-banner.sh": "acca704968d6263810de5804ea50a96b7aab7472ec98a7149d92b78b380d8fa0",
|
|
421
421
|
"pipeline/scripts/phase-tracker.sh": "c5e1a511656a2b96100ecf21fdf9a77ea42a3e446db5b0eb004e3b7f39c70dac",
|
|
422
422
|
"pipeline/scripts/phase0-exit-gate.mjs": "12eec91c89b0b859f681a0e322563935f9e730990f2f9ae864fd9ff3437bf8d9",
|
|
423
|
-
"pipeline/scripts/plan-coverage-gate.mjs": "
|
|
423
|
+
"pipeline/scripts/plan-coverage-gate.mjs": "ead8936fda3b7ea3a17f25b7f4ee4479ee98e78d28f9ecf11d21e3a5987284e8",
|
|
424
424
|
"pipeline/scripts/pre-commit-check.sh": "b6ed51b072370759c8481d47edd140afd1360c2f442f11acd574e3689292b58c",
|
|
425
425
|
"pipeline/scripts/pre-push-check.sh": "ff98e73d02aa75cfa9411c29c838241e8529e832e1421ca9c25c39aa07bcd968",
|
|
426
426
|
"pipeline/scripts/probe-evidence-capability.sh": "803213d8f566d3c6bda3afc074e99c11477e076894ec340e90ed6d5f7d328a58",
|
|
@@ -435,20 +435,20 @@
|
|
|
435
435
|
"pipeline/scripts/review-file-filter.mjs": "8b1fd9661b8d61b4282a4579ef360f952c827f90520b69ffde4770fdaeaaa05b",
|
|
436
436
|
"pipeline/scripts/review-scope.mjs": "60be90f1dce0a87071695bbedf17eb4e8600b1c742b97aef8cbea41802315b93",
|
|
437
437
|
"pipeline/scripts/routine-registry.mjs": "23973f361c71988a699d33bbc649c3e009a76082962cb1f22bdfcbe6efa85b04",
|
|
438
|
-
"pipeline/scripts/run-aggregator.mjs": "
|
|
438
|
+
"pipeline/scripts/run-aggregator.mjs": "6630242733c662167bb21da7da06298ed0e724aecc135d5fd97d7ed1b9bd02f3",
|
|
439
439
|
"pipeline/scripts/run-metrics.mjs": "6db53f3814a992c1f23beae7a54c84310be5af8e84dbff5a6768a91169152f02",
|
|
440
440
|
"pipeline/scripts/run-ui-tests.sh": "5f1cb05ab0b387f9b89d8f34a0f60182906f0ca27cca4d41926b7217eee86bc5",
|
|
441
|
-
"pipeline/scripts/runs-index.mjs": "
|
|
441
|
+
"pipeline/scripts/runs-index.mjs": "4040e2b381df3411fcf2f170c8c0ad0e2dfad66afd92367e63dc2cc5c3982a4c",
|
|
442
442
|
"pipeline/scripts/scan-agent-config.sh": "41dbd995de799f599dc365ea8cfe55542c48c7387c4f94a596a1e6feec278168",
|
|
443
443
|
"pipeline/scripts/scan-skills.sh": "85765b7ec15af13ade5c9ccedd88329c19b11a627e8df6dccd4839e95361dfb7",
|
|
444
|
-
"pipeline/scripts/scope-check-gate.mjs": "
|
|
444
|
+
"pipeline/scripts/scope-check-gate.mjs": "a71b736b1283b6b99fcca23ae2159e9fb134e1e65dbfec1e66d63a5cc20582f4",
|
|
445
445
|
"pipeline/scripts/scorecard-snapshot.mjs": "320fb2c811e085451d152997e6b5ee54fa0d14d374d9592ac7880443c5d02ae3",
|
|
446
446
|
"pipeline/scripts/search-logs.sh": "af0ce9b75edd359cc93dd678d35b15eb9bb0f14a4b044d8e4d639f8cdb82c76f",
|
|
447
447
|
"pipeline/scripts/sign-skills.sh": "779355dcf8ce383959e9a3c6093f46660a0875e83a805b7a67983acc8551cb59",
|
|
448
448
|
"pipeline/scripts/skill-conformance.mjs": "4adc30335e8a194ac13b23c442559efbd8aa4113356d2094f07b5ac660a94946",
|
|
449
449
|
"pipeline/scripts/skill-siblings.mjs": "b3ea1f8cc059711f1a33a575dd2d63cd16f8922952bd400064ff62e5ddc44de3",
|
|
450
450
|
"pipeline/scripts/smoke-cross-cli-behavior.sh": "4f7eac25003e0c9bb483d475814f1caf6e04cd18ea1543be432df12daeffd9ec",
|
|
451
|
-
"pipeline/scripts/smoke-schema-validation.sh": "
|
|
451
|
+
"pipeline/scripts/smoke-schema-validation.sh": "37519dd51015130b01ed3f92a986794e308f758504df90cef047e54be5c9684a",
|
|
452
452
|
"pipeline/scripts/test-gap-rules/android.json": "367da48a14036a102fb422206fbc877cd52548fe34a6ff8565a503df2421bce5",
|
|
453
453
|
"pipeline/scripts/test-gap-rules/go.json": "1de067f47b13d539ce00d0b0cb32c050a4805c255533cb5af1b1645777125e2f",
|
|
454
454
|
"pipeline/scripts/test-gap-rules/ios.json": "212da713f7274cb3ae051e1ef06f93376f7ff1806487c10b504a4a2da0cf5196",
|
|
@@ -463,8 +463,8 @@
|
|
|
463
463
|
"pipeline/scripts/update-check.sh": "327a02306884093d2b93f395d2c297d5dc6b0c59757a740004bfafb13616fef0",
|
|
464
464
|
"pipeline/scripts/update-issue-progress.sh": "7a77d9e5bd60ffad06f3cc41088e1b1d49b4dc2842f287b7f6ba6023d7bd1a52",
|
|
465
465
|
"pipeline/scripts/usage-register.mjs": "72e4460b728c382afb35cc9266059e176155838bd762833d48ae19b99bc864f2",
|
|
466
|
-
"pipeline/scripts/usage-report.mjs": "
|
|
467
|
-
"pipeline/scripts/validate-analysis-doc.mjs": "
|
|
466
|
+
"pipeline/scripts/usage-report.mjs": "a8e1ba87872530df0a2e6cc86c18ec680dd22e38532bb92566bf44c362f13097",
|
|
467
|
+
"pipeline/scripts/validate-analysis-doc.mjs": "ae56b7578ef51e008a99f84eba9def3e0f1dd2bd87a3880f2083aa98b365f7a1",
|
|
468
468
|
"pipeline/scripts/validate-analysis.mjs": "d2dc9ccf45f6ca2702908761939edd830d18b3b273016a4b449f26fe285d5ea1",
|
|
469
469
|
"pipeline/scripts/validate-code-graph.mjs": "0ceac2f5b59f641334d54dc30bee5265361fb5fe1fc97e2f9791b546efe79941",
|
|
470
470
|
"pipeline/scripts/validate-complaint-doc.mjs": "5a4de279a481a04e96aa1eebce6431e0679ae49a084dfc55541d77c61fad6ecb",
|
|
@@ -479,8 +479,8 @@
|
|
|
479
479
|
"pipeline/scripts/verify.mjs": "2d06091b919fd3db073a0b101ed4752baf08815b974e7a713272f54cab479acb",
|
|
480
480
|
"pipeline/scripts/website-deploy-commit.sh": "523482438b265ca1f1883ec5fb450e803566a1239eaccdc423e12c5426140a84",
|
|
481
481
|
"pipeline/scripts/worktree-finalize.sh": "f905ba69272d32afc75b5deb8406efabfe0865bdeec2e150a521d5a1b0c51b8a",
|
|
482
|
-
"pipeline/scripts/write-state.mjs": "
|
|
483
|
-
"pipeline/skills/.skill-manifest.json": "
|
|
482
|
+
"pipeline/scripts/write-state.mjs": "5552665f05c16edae63f038baee0390d5fa69396535d29e6b46ff87f6182786f",
|
|
483
|
+
"pipeline/skills/.skill-manifest.json": "b98885ef5127339b369e086bf0f4a5dc3808412b4e36f5a21964a283c1790ab6",
|
|
484
484
|
"pipeline/skills/.skills-index.json": "05545f7603267576f614d6eedd0369bfcf5b8d1aadbf4c791295559f930b4bb2",
|
|
485
485
|
"pipeline/skills/shared/README.md": "12692c36caaf2f4567cf21b788dad66e1bc34cae345dc8045e0569834b819414",
|
|
486
486
|
"pipeline/skills/shared/core/apple-archive-compliance/SKILL.md": "6675a53441f2f3bedc82284998f402bd51fa251c7491a595e12c6c4016830337",
|
|
@@ -495,7 +495,7 @@
|
|
|
495
495
|
"pipeline/skills/shared/core/multi-agent-autopilot-status/SKILL.md": "065958fb3ff608d7d0ea36b3eef4614da442742dc69b00799cf1658848cee786",
|
|
496
496
|
"pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md": "7446424d3dd480751358a0e3de917f3d22bb4f1ce6dec1b99217877c6b217e76",
|
|
497
497
|
"pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md": "91b807e8a4a211d88b2f0d6cb30c2ba5cdbb0abf6983fbd3dfeb5778e94a8c1a",
|
|
498
|
-
"pipeline/skills/shared/core/multi-agent-channels/SKILL.md": "
|
|
498
|
+
"pipeline/skills/shared/core/multi-agent-channels/SKILL.md": "e4f59e784d77018326e719632ef371e50e9fb9af61318a7d5bf713c386c0fd3f",
|
|
499
499
|
"pipeline/skills/shared/core/multi-agent-complaint-analysis/SKILL.md": "2fe393b49155155e44f722d4942dec677152bfb012e2337c6521d41d87be1d69",
|
|
500
500
|
"pipeline/skills/shared/core/multi-agent-create-jira/SKILL.md": "b1890c3c60ca3af73108ed83a7fbf35338e261520e0feade5cc9d99ecb6eb878",
|
|
501
501
|
"pipeline/skills/shared/core/multi-agent-design-check/SKILL.md": "28efc8b47d3d3fc052b91c7083870d2e7a3d604f65c5d476b9a21ba382e051e0",
|
|
@@ -547,7 +547,7 @@
|
|
|
547
547
|
"pipeline/skills/shared/core/multi-agent-testflight-validation/SKILL.md": "0f770a279e12a5edf73cb947ca2d128c013c78646d983c3d4bdfe722a4a990ef",
|
|
548
548
|
"pipeline/skills/shared/core/multi-agent-uninstall/SKILL.md": "b7940b4ab305ac8bcdc1798dbc0d56e96018ba6959566657878b6a583dc6183d",
|
|
549
549
|
"pipeline/skills/shared/core/multi-agent-update/SKILL.md": "8a0b089ea5c0d81813dc936d8b9d012f956e6381f71e025ca8878e538a8e9303",
|
|
550
|
-
"pipeline/skills/shared/core/multi-agent/SKILL.md": "
|
|
550
|
+
"pipeline/skills/shared/core/multi-agent/SKILL.md": "7ea676d07cd0104cc929b825463c521aff66047c6dcdfc28e9e37ca3752107da",
|
|
551
551
|
"pipeline/skills/shared/external/NOTICE-dimillian-skills.md": "402a96240476446ac284e1cf7c64ed66a7bc1119e92464bb632e737176aa494a",
|
|
552
552
|
"pipeline/skills/shared/external/NOTICE-swift-ios-skills.md": "a2b150f2ad92ee4564d5bec2681d5b7943e8fddbf5eaab8fcdbece722e626a03",
|
|
553
553
|
"pipeline/skills/shared/external/NOTICE-xcode-build-skills.md": "1c9c1790d3173928dae0964f653583936d0b40cb7a7fe6b732f132b104fef3ef",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mmerterden/multi-agent-pipeline",
|
|
3
|
-
"version": "19.1.
|
|
3
|
+
"version": "19.1.4",
|
|
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",
|
|
@@ -70,10 +70,10 @@ per-field matrix in `$HOME/.claude/multi-agent-refs/rules.md` ("Language Applica
|
|
|
70
70
|
English. Wizard status and the post-setup summary follow `outputLanguage`. External
|
|
71
71
|
payloads remain English.
|
|
72
72
|
|
|
73
|
-
>
|
|
74
|
-
>
|
|
75
|
-
>
|
|
76
|
-
>
|
|
73
|
+
> `promptLanguage` governs only the button and chip chrome, never the question a
|
|
74
|
+
> user reads. Rendering a whole prompt in English "per the fixed
|
|
75
|
+
> `promptLanguage`" contradicts the matrix above and produces half-English
|
|
76
|
+
> pickers on Turkish runs.
|
|
77
77
|
|
|
78
78
|
### Step 0.5 - Dependency check
|
|
79
79
|
|
|
@@ -188,10 +188,10 @@ file can do: the static package audit, the store's own validator, and a policy
|
|
|
188
188
|
review against repo source. It merges both halves into one severity-grouped report
|
|
189
189
|
and offers the `/multi-agent:channels` follow-up.
|
|
190
190
|
|
|
191
|
-
The archive-compliance audit
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
no Gate 3 and no Android parity
|
|
191
|
+
The archive-compliance audit is NOT repeated here. Invoking `ios_app_store_audit`
|
|
192
|
+
with the arguments the store-ready command's Gate 1 already uses would put two
|
|
193
|
+
copies of one call in the tree, which is how a second door opens with no Gate 2,
|
|
194
|
+
no Gate 3 and no Android parity behind it.
|
|
195
195
|
|
|
196
196
|
**No argument (full test):**
|
|
197
197
|
|
|
@@ -46,7 +46,7 @@ behind.
|
|
|
46
46
|
### Full list
|
|
47
47
|
|
|
48
48
|
1. **One feature per run.** Every Figma URL, Confluence page, Jira ID, and Standards source the user supplies belongs to the **same feature**. The command never asks "which feature is this for?" or "which URL is primary?". Mixed inputs covering multiple features are treated as user error: surface the conflict, stop, and ask the user to split into separate runs.
|
|
49
|
-
2. **Section omission rule.** Sections with zero evidence are dropped entirely; no `TBD` placeholder section. **A rendered section keeps its canonical template number**, so the set has gaps and that is correct: `1, 2, 4, 9, 13, 14, 21` is a valid rendered document.
|
|
49
|
+
2. **Section omission rule.** Sections with zero evidence are dropped entirely; no `TBD` placeholder section. **A rendered section keeps its canonical template number**, so the set has gaps and that is correct: `1, 2, 4, 9, 13, 14, 21` is a valid rendered document. Numbering does NOT re-flow sequentially `1..N`: that cannot hold alongside Locked 30, which threads ids across sections BY NUMBER (`Section 15.1 scenario`, `Section 4.4`, `Section 3/5 layout cells`), so a re-flowed document sends every one of those cross-references to the wrong section or to nothing. What IS checked: every rendered number is a real template number, and the numbers ascend without repeating.
|
|
50
50
|
3. **Citation discipline.** Every quoted UI string, endpoint path, error code, or analytics event name in Sections 2-4 must carry an inline citation: `[Figma annotation <nodeId>]` for copy taken from a Dev Mode annotation, `[Figma <nodeId>]` (MCP) or `[figma-export: <project-slug>/<screen-slug>:<nodeId>]` (local source) for design strings; `file:line` for repo evidence; `Confluence:<pageId>:<heading-slug>` for spec text. **Annotation-as-copy precedence:** when the project's `figma-config` has `annotations.enabled` and a node carries a Dev Mode annotation, that annotation is the authoritative copy for the node and the visible text layer is treated as a placeholder; cite the annotation, not the layer text. Never invent copy - blank beats a guess; a node whose annotation has the base language but is missing a target language emits a Section 20 (Risks) row rather than a fabricated value. Uncited quotes are downgraded to `[label TBD - see Open Questions]` and a row is added to Section 7 Risks. Subagent prose and Code Connect snippets are not citations.
|
|
51
51
|
4. **The spec is forward-looking.** Section bodies describe the new feature as drawn / specified. Findings that exist only in legacy code or the existing branch appear as `> Legacy reference: <text> (file:line)` blockquotes inside the relevant section, never as the lead sentence or a primary table row. A legacy-only finding with no forward counterpart goes to Section 7 Risks as a decision item: "current code does X; should the new feature keep, change, or drop this?".
|
|
52
52
|
5. **Output default = Local file.** The Phase 3.5 output picker keeps `Local file` pre-selected. Confluence and Jira outputs are never default-selected (see `analysis-output-confluence-on-request` memory).
|
|
@@ -76,7 +76,7 @@ behind.
|
|
|
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 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`, `/multi-agent:autopilot`, `/multi-agent:local`, `/multi-agent:local-autopilot`, at either depth. 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".
|
|
79
|
-
30. **Business-rule to acceptance-criterion to test traceability (AI + human spine).** The analysis is a development handoff that both an AI implementer and a human reviewer must act on, so it is bound by one shared-ID vocabulary. Every business rule carries a stable id `BR-<slug>-NN` (Section 4.4). Each rule maps to at least one acceptance criterion written Given / When / Then (binary - two readers must not be able to disagree on pass/fail). Each acceptance criterion maps to unit-test scenarios in Section 15.1, one row per case across happy / boundary / error / empty-nil (enumerate at least the failure modes; agents hallucinate error handling when it is omitted). The same ids thread onward: Section 15.6 UI-test flows reference the `BR-` ids and use stable selectors (accessibilityIdentifier / testTag), Section 16 accessibility items reuse those identifiers, Section 11 analytics events cite their triggering rule or story, and Section 3/5 layout cells carry token + Figma node refs. Never invent copy or values (blank beats a guess; a missing source becomes a Section 20 Open Question). **Gate:** a business rule with no acceptance criterion, or an acceptance criterion with no Section 15.1 scenario, fails the dispatch gate. There is no mode clause
|
|
79
|
+
30. **Business-rule to acceptance-criterion to test traceability (AI + human spine).** The analysis is a development handoff that both an AI implementer and a human reviewer must act on, so it is bound by one shared-ID vocabulary. Every business rule carries a stable id `BR-<slug>-NN` (Section 4.4). Each rule maps to at least one acceptance criterion written Given / When / Then (binary - two readers must not be able to disagree on pass/fail). Each acceptance criterion maps to unit-test scenarios in Section 15.1, one row per case across happy / boundary / error / empty-nil (enumerate at least the failure modes; agents hallucinate error handling when it is omitted). The same ids thread onward: Section 15.6 UI-test flows reference the `BR-` ids and use stable selectors (accessibilityIdentifier / testTag), Section 16 accessibility items reuse those identifiers, Section 11 analytics events cite their triggering rule or story, and Section 3/5 layout cells carry token + Figma node refs. Never invent copy or values (blank beats a guess; a missing source becomes a Section 20 Open Question). **Gate:** a business rule with no acceptance criterion, or an acceptance criterion with no Section 15.1 scenario, fails the dispatch gate. There is no mode clause. Suspending the rule for a lighter mode defers the rule-to-test half to "whenever the feature is later analyzed in Full" - a debt nothing tracks and nothing ever paid. Section 15 renders when there is evidence for it and is dropped when there is not, like every other section, and the gate applies to whatever was rendered.
|
|
80
80
|
|
|
81
81
|
31. **Analysis profile selected at intake.** `state.analysisSpec.profile` is `global` (default) or `corporate`, asked once at Phase 0 Step 1b and never re-asked mid-run. `global` renders `$HOME/.claude/multi-agent-refs/analysis-template.md` (23 sections, development handoff). `corporate` renders `$HOME/.claude/multi-agent-refs/analysis-template-corporate.md` (requirements document: `IG -> UC -> FG` spine, three traceability matrices, current-to-target state with impact analysis, then Technical Analysis and Development Analysis). **Both profiles read the same `state.analysisSpec.evidence.*`** - intake, fetching, repo evidence and convention extraction are shared and profile-independent; only the projection differs. This is what keeps the two templates from drifting into two products. One run emits one profile: rendering both from a single run would produce two documents describing the same feature, and the next reader would have to decide which one is current. When only one profile is available (`prefs.global.analysisProfiles` lists one, or the corporate profile has no binding configuration), the step auto-resolves and prints its breadcrumb with the resolution noted, per the picker contract.
|
|
82
82
|
32. **Corporate backbone always renders.** In the `corporate` profile the Locked 2 omission rule is replaced for Part A and the footer: those sections render even with zero evidence, carrying `N/A` when the section is genuinely out of scope for the feature and `EKLENECEK` when evidence is expected but missing. This is the point of a requirements document - a reader has to be able to tell "we considered hardware needs and there are none" from "nobody looked". Every `EKLENECEK` emits a matching Section 20 Risks and Open Questions row naming what is missing and who can answer it; an `EKLENECEK` with no such row fails the dispatch gate, because an unanswered question nobody owns is how a placeholder reaches production. **Missing inputs never block the run**: the corporate source practice of halting until every input arrives is deliberately not adopted - the document is produced with `EKLENECEK` in the gaps and the gaps are raised in Section 20. Part B follows the global omission table unchanged. In the `global` profile Locked 2 applies as written, with no placeholder of any kind.
|
|
@@ -50,9 +50,9 @@ it is the PR body (`channels/pr.md`).
|
|
|
50
50
|
A `gaps[]` entry prints its reason on the line where the artefact would have been (`Düzeltme öncesi: ticket'ta görsel yok`). Never an empty thumbnail, never a silent omission. Contract: `$HOME/.claude/multi-agent-refs/features/visual-evidence.md`.
|
|
51
51
|
|
|
52
52
|
**`test_scenarios`** - one titled scenario per acceptance criterion, each a
|
|
53
|
-
numbered list of steps ending in the expected result. Given/When/Then
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
numbered list of steps ending in the expected result. Not Given/When/Then: it
|
|
54
|
+
reads as translated English to the person who actually runs these, and a tester
|
|
55
|
+
wants a list they can follow with the app open.
|
|
56
56
|
The heading and the text render in `outputLanguage`; this file shows the English
|
|
57
57
|
skeleton:
|
|
58
58
|
|
|
@@ -176,7 +176,7 @@ The parenthesised forms are the ones that actually bite: `(x)` in a comparison t
|
|
|
176
176
|
|
|
177
177
|
The program runs AFTER the markdown conversion above and BEFORE the POST. Order is load-bearing in both directions: run it earlier and the conversion re-introduces sequences behind it; skip it and `{{...}}` monospace does not save you, because Jira parses emoticons inside monospace too.
|
|
178
178
|
|
|
179
|
-
Do not hand-apply this table.
|
|
179
|
+
Do not hand-apply this table. A long comment gives the eye no reason to stop on the `:)` at the end of a selector, so the program applies it or nothing does.
|
|
180
180
|
|
|
181
181
|
Lines outside these patterns pass through verbatim. Multi-paragraph blocks are joined with one blank line.
|
|
182
182
|
|
|
@@ -224,10 +224,10 @@ That script escapes every body unconditionally (`lib/jira-publish.sh:109`) and
|
|
|
224
224
|
passes the token through a `-K` config rather than argv, so neither the escape
|
|
225
225
|
nor the token handling depends on an agent remembering a step.
|
|
226
226
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
selector `hash(into:)` as `hash(into`
|
|
230
|
-
|
|
227
|
+
Not a hand-written `jq` + `curl` pair with the escape as a separate `--check`
|
|
228
|
+
line above it. In that shape the escaper is present, correct, and simply not run
|
|
229
|
+
on the POST path: a Swift selector such as `hash(into:)` renders as `hash(into`
|
|
230
|
+
plus a smiley, because `:)` reaches Jira intact and
|
|
231
231
|
Jira's wiki renderer turned it into an emoticon, which is what section
|
|
232
232
|
*Emoticon escaping* below is about. A defence that has to be invoked by hand is
|
|
233
233
|
a defence that is eventually not invoked.
|
|
@@ -97,8 +97,8 @@ GitHub's analogue is the milestone title, read the same way.
|
|
|
97
97
|
|
|
98
98
|
## 2b. A filter is not a ranking
|
|
99
99
|
|
|
100
|
-
Step 3's rule-5 list
|
|
101
|
-
|
|
100
|
+
Step 3's rule-5 list is NOT narrowed with `grep -E '(develop|release|main|master)'`.
|
|
101
|
+
That is the prefix table this whole feature exists not to have - and worse than a
|
|
102
102
|
table, because it DISCARDS. A repo whose release branches read `stabilise-2.7`
|
|
103
103
|
matched none of the four words, so none of its branches reached the picker, the
|
|
104
104
|
convention-learner had nothing to learn from, and the version on the issue could
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Feature: Scope self-check (Phase 2 Step 3.7)
|
|
2
2
|
|
|
3
|
-
**Pattern**: Phase 3 reconstructs everything from the diff. The one thing it cannot reconstruct is why each file was touched and what was left out on purpose, so Dev states both before the handoff, and a deterministic gate checks the statement against the real diff. The record also carries the code-simplifier rationales (Step 3.6) that
|
|
3
|
+
**Pattern**: Phase 3 reconstructs everything from the diff. The one thing it cannot reconstruct is why each file was touched and what was left out on purpose, so Dev states both before the handoff, and a deterministic gate checks the statement against the real diff. The record also carries the code-simplifier rationales (Step 3.6) that would otherwise be discarded, and it feeds two later consumers: the `<scope-self-check>` block in the Phase 3 reviewer prefix and the PR body in Phase 4.
|
|
4
4
|
|
|
5
5
|
## The record
|
|
6
6
|
|
|
@@ -41,7 +41,7 @@ Nothing enabled is not an error: a repo whose stack was never selected legitimat
|
|
|
41
41
|
no toolkit. Record the no-op with the enabled set that was read, so "none applied" is
|
|
42
42
|
distinguishable from "never looked".
|
|
43
43
|
|
|
44
|
-
**Not enabled is not an error here**, unlike component dispatch: a repo whose stack was never selected legitimately has no toolkit, and halting would make the pipeline unusable there. Record the no-op and continue.
|
|
44
|
+
**Not enabled is not an error here**, unlike component dispatch: a repo whose stack was never selected legitimately has no toolkit, and halting would make the pipeline unusable there. Record the no-op and continue. Every stack now has a toolkit, so "no toolkit" means the stack was never selected, not that none exists for it.
|
|
45
45
|
|
|
46
46
|
Two marketplaces may ship the same toolkit name (a public one and a corporate one). Resolve whichever is enabled and record its **name and version** in the ledger entry, because the routing table and the skill set differ between versions - a finding that cites a skill has to be traceable to the version that defined it.
|
|
47
47
|
|
|
@@ -176,7 +176,7 @@ This keeps orchestrator context lean and enables programmatic routing.
|
|
|
176
176
|
bash $HOME/.claude/scripts/capture-flush.sh --state "$STATE_FILE" --quiet
|
|
177
177
|
```
|
|
178
178
|
|
|
179
|
-
The durable stores
|
|
179
|
+
The durable stores are NOT written only in Phase 5, which is the phase a run is LEAST likely to reach: a run killed in Phase 2 threw away every finding it had established, and the next run on the same repo paid to rediscover it. The flush is idempotent (the second call through writes 0 rows), costs no API tokens, calls no model, and never fails the transition. Phase 5 is now the LAST flush rather than the only one. The trigger is deliberately mechanical - a phase transition, not a model noticing that a moment qualifies.
|
|
180
180
|
- *Compaction trigger.* If conversation context exceeds ~50%, run `/compact` preserving "modified files, plan, open review findings, current phase + sub-step" before continuing. Don't wait for auto-compaction near the limit - it triggers exactly when context is worst and is lossy. After compaction, re-read `agent-state.json` AND the latest `## Handoff` block in `agent-log.md` to re-ground.
|
|
181
181
|
|
|
182
182
|
**Handoff block (v10.8.0)**: the structured artifact the phase-boundary checkpoint appends to `agent-log.md`. Written by the orchestrator from state it already holds - no agent dispatch, no extra LLM call. Cap at ~15 lines; the latest block is authoritative (earlier ones are history). This is the fresh-context re-entry contract: a resume or post-compaction session rebuilds working context from the latest handoff + `agent-state.json` + git log, never from conversation memory.
|
|
@@ -412,9 +412,9 @@ and stored, only invisible.
|
|
|
412
412
|
printf '%s' "$PLAN_JSON" | bash "$HOME/.claude/lib/plan-todos.sh" set "$TASK_ID" -
|
|
413
413
|
```
|
|
414
414
|
|
|
415
|
-
`set` accepts a planning-output document and converts it itself.
|
|
416
|
-
|
|
417
|
-
|
|
415
|
+
`set` accepts a planning-output document and converts it itself. Writing the
|
|
416
|
+
conversion out here too would make the `tasks[]`-to-`todos[]` mapping a thing two
|
|
417
|
+
files define, and the copy in prose is the one nothing tests.
|
|
418
418
|
|
|
419
419
|
Phase 2 (Dev) then iterates with `plan-todos.sh next "$TASK_ID"` until empty, calling `start` before each step and `complete` (with notes) or `fail`/`skip` after. Phase 3 (Review) reads the Todo list to verify all `completed` items map to diff hunks. Phase 5 (Report) renders `list` into the agent-log + PR body.
|
|
420
420
|
|
|
@@ -215,7 +215,7 @@ Per Locked decision 30 of `/multi-agent:analysis` and the parallel rule in `$HOM
|
|
|
215
215
|
|
|
216
216
|
The ban is **Figma**-shaped, not MCP-shaped: the multi-agent-toolkit MCP (simulator, screenshot, xcodebuild, accessibility) is unaffected in every phase, and `smoke-no-mcp-in-dev-phases.sh` agrees - it matches `figma` in the tool name and nothing else. A bare "MCP forbidden" has been read as banning the screenshot and UI-test tools, which is how a run reaches Phase 5 with no evidence.
|
|
217
217
|
|
|
218
|
-
The per-phase matrix (which phase may fetch Figma, and what its sole design source is instead) lives in `rules/figma-pipeline.md` "Phase access matrix". It
|
|
218
|
+
The per-phase matrix (which phase may fetch Figma, and what its sole design source is instead) lives in `rules/figma-pipeline.md` "Phase access matrix". It is not restated here, per this file's own instruction two paragraphs above not to duplicate that rule file. Violation of either copy: `smoke-no-mcp-in-dev-phases.sh` fails the run.
|
|
219
219
|
|
|
220
220
|
Memory: [[mcp-only-in-analysis]]
|
|
221
221
|
|
|
@@ -587,13 +587,12 @@ function main() {
|
|
|
587
587
|
const attempts = readAttempted();
|
|
588
588
|
const breaker = consecutiveFailures(attempts);
|
|
589
589
|
if (BREAKER_LIMIT > 0 && breaker.count >= BREAKER_LIMIT) {
|
|
590
|
-
// HALF-OPEN, not latched. The
|
|
591
|
-
//
|
|
592
|
-
//
|
|
593
|
-
//
|
|
594
|
-
//
|
|
595
|
-
// "one successful attempt clears it"
|
|
596
|
-
// unreachable.
|
|
590
|
+
// HALF-OPEN, not latched. The only writer of attempted.jsonl is downstream
|
|
591
|
+
// of this return, so returning on every tick would mean that once the
|
|
592
|
+
// breaker opened no new attempt could be recorded, the consecutive count
|
|
593
|
+
// could never fall, and the runner would be stopped for good - while the
|
|
594
|
+
// log line promises "until an attempt succeeds" and the feature doc
|
|
595
|
+
// promises "one successful attempt clears it".
|
|
597
596
|
//
|
|
598
597
|
// A breaker that cannot re-close is not a breaker, it is an off switch with
|
|
599
598
|
// a misleading label. So after a cooldown one probe is let through: if the
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
// build-references.mjs - deterministic Section 21 References table for an
|
|
3
3
|
// /multi-agent:analysis document (Locked 33).
|
|
4
4
|
//
|
|
5
|
-
// The references table
|
|
6
|
-
// author remembers consulting, which is a different set from what
|
|
7
|
-
// actually fetched: sources that failed to load vanish silently, scope decisions
|
|
5
|
+
// The references table is built, not written as prose the model fills in. Prose
|
|
6
|
+
// lists what an author remembers consulting, which is a different set from what
|
|
7
|
+
// the run actually fetched: sources that failed to load vanish silently, scope decisions
|
|
8
8
|
// made in conversation never appear, and a Figma link with no node id points at
|
|
9
9
|
// whatever the file looks like today. This turns the table into a projection of
|
|
10
10
|
// `state.analysisSpec.evidence.*` so the two cannot disagree.
|
|
@@ -72,7 +72,7 @@ const PLUGINS_REPO = getArg("--plugins-repo", join(HOME, "multi-agent-plugins"))
|
|
|
72
72
|
// nowhere else: on a CI runner the checkout is under the workspace directory,
|
|
73
73
|
// so --check-routing reported "source not found" and three tests failed on
|
|
74
74
|
// every clean host while passing locally. That is the whole class of bug CI
|
|
75
|
-
// exists to catch,
|
|
75
|
+
// exists to catch, which is why this path is not left to CI alone.
|
|
76
76
|
const PIPE_ROOT = getArg("--pipeline", join(dirname(fileURLToPath(import.meta.url)), "..", ".."));
|
|
77
77
|
const EXTERNAL = join(PIPE_ROOT, "pipeline/skills/shared/external");
|
|
78
78
|
const DRY = args.includes("--dry-run");
|
|
@@ -91,10 +91,12 @@ if command -v jq >/dev/null 2>&1; then
|
|
|
91
91
|
fi
|
|
92
92
|
[ -n "$MODEL" ] || MODEL="${PREF_MODEL:-haiku}"
|
|
93
93
|
|
|
94
|
-
#
|
|
95
|
-
#
|
|
96
|
-
#
|
|
97
|
-
#
|
|
94
|
+
# Routing picks the rung INSIDE the Anthropic ladder. The worker below is the
|
|
95
|
+
# `claude` CLI, which speaks that ladder and nothing else, so a rung on another
|
|
96
|
+
# provider is refused at dispatch rather than returned and failed. Sending this
|
|
97
|
+
# read to a third-party provider would put the file's full text outside the
|
|
98
|
+
# account that owns it, and that is a decision a user makes, not a default.
|
|
99
|
+
# An explicit --model still wins: a caller that named a rung asked for that rung.
|
|
98
100
|
if [ -z "${MODEL_EXPLICIT:-}" ] && [ -x "$HERE/../lib/model-dispatch.sh" ]; then
|
|
99
101
|
MODEL=$("$HERE/../lib/model-dispatch.sh" bulk-read \
|
|
100
102
|
--phase "$PHASE" --default "$MODEL" 2>/dev/null) || MODEL="${PREF_MODEL:-haiku}"
|
|
@@ -1051,10 +1051,10 @@ function main() {
|
|
|
1051
1051
|
process.exitCode = code;
|
|
1052
1052
|
}
|
|
1053
1053
|
|
|
1054
|
-
// Exported so the gate can DRIVE the engine instead of reading it.
|
|
1055
|
-
// downgrade
|
|
1056
|
-
//
|
|
1057
|
-
//
|
|
1054
|
+
// Exported so the gate can DRIVE the engine instead of reading it. Asserting the
|
|
1055
|
+
// BLOCK downgrade with a regex over this file's own source proves nothing: a
|
|
1056
|
+
// comment carrying the same two substrings satisfies it as well as the code does,
|
|
1057
|
+
// so the enforcement could be deleted outright and the gate would stay green.
|
|
1058
1058
|
export { report, results as __results, MAY_BLOCK as __mayBlock };
|
|
1059
1059
|
|
|
1060
1060
|
// realpath on both sides: `import.meta.url` is already resolved, while argv[1]
|
|
@@ -475,7 +475,7 @@ function cmdBrief() {
|
|
|
475
475
|
);
|
|
476
476
|
ordered = fused.slice(0, max).map((x) => pool[x.index]);
|
|
477
477
|
// A task whose words match nothing in the ledger must not silently inject an
|
|
478
|
-
// empty block
|
|
478
|
+
// empty block in place of the newest entries: fall back to recency.
|
|
479
479
|
if (ordered.length === 0) ordered = pool.slice().reverse().slice(0, max);
|
|
480
480
|
}
|
|
481
481
|
|
|
@@ -40,10 +40,10 @@ const here = dirname(fileURLToPath(import.meta.url));
|
|
|
40
40
|
*
|
|
41
41
|
* This script lives in two shapes: `<repo>/pipeline/scripts/` in a checkout, and
|
|
42
42
|
* `~/.claude/scripts/` (or `~/.copilot`, `~/.codex`) once installed. The default
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* installed tree - a path that
|
|
46
|
-
* on every real install while passing
|
|
43
|
+
* is NOT `resolve(here, "..", "..") + "/pipeline/skills/.skills-index.json"`.
|
|
44
|
+
* That is right in a checkout and resolves to `$HOME/pipeline/skills/...` from an
|
|
45
|
+
* installed tree - a path that does not exist. Dynamic skill loading would exit 1
|
|
46
|
+
* on every real install while passing a smoke that runs from the repo.
|
|
47
47
|
*
|
|
48
48
|
* Installed layout is tried first: that is where a user's run happens.
|
|
49
49
|
*/
|