@mmerterden/multi-agent-pipeline 19.0.0 → 19.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +121 -0
- package/README.md +3 -3
- package/docs/ecosystem.md +12 -4
- package/docs/facts.json +20 -4
- package/docs/features.md +1 -1
- package/docs/recovery-guide.md +8 -8
- package/manifest.json +64 -62
- package/package.json +1 -1
- package/pipeline/agents/dev-critic.md +4 -4
- package/pipeline/commands/multi-agent/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/analysis/SKILL.md +6 -6
- package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/resume-local/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/review/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/review-analysis/SKILL.md +1 -1
- package/pipeline/lib/model-dispatch.sh +140 -0
- package/pipeline/lib/outbound-gate.mjs +14 -0
- package/pipeline/multi-agent-refs/_dev-context.md +5 -5
- package/pipeline/multi-agent-refs/analysis/evidence.md +2 -2
- package/pipeline/multi-agent-refs/analysis/intake.md +6 -6
- package/pipeline/multi-agent-refs/analysis/locked.md +27 -0
- package/pipeline/multi-agent-refs/analysis/redesign.md +1 -1
- package/pipeline/multi-agent-refs/analysis/render.md +9 -9
- package/pipeline/multi-agent-refs/analysis/resolve.md +1 -1
- package/pipeline/multi-agent-refs/analysis/review.md +2 -2
- package/pipeline/multi-agent-refs/analysis/synthesis.md +2 -2
- package/pipeline/multi-agent-refs/analysis-template-corporate.md +9 -9
- package/pipeline/multi-agent-refs/analysis-template.md +19 -19
- package/pipeline/multi-agent-refs/component-dispatch.md +5 -5
- package/pipeline/multi-agent-refs/conventions-defaults.md +2 -2
- package/pipeline/multi-agent-refs/features/analysis-jira.md +1 -1
- package/pipeline/multi-agent-refs/features/doctor.md +1 -1
- package/pipeline/multi-agent-refs/features/model-fallback.md +36 -0
- package/pipeline/multi-agent-refs/features/review-multi-repo.md +1 -1
- package/pipeline/multi-agent-refs/features/url-enrichment.md +1 -1
- package/pipeline/multi-agent-refs/phases/phase-1-plan.md +2 -2
- package/pipeline/multi-agent-refs/phases/phase-3-review.md +2 -2
- package/pipeline/preferences-template.json +5 -0
- package/pipeline/rules/figma-pipeline.md +8 -8
- package/pipeline/schemas/analysis-output.schema.json +1 -1
- package/pipeline/schemas/analysis-spec.schema.json +2 -2
- package/pipeline/schemas/figma-project-config.schema.json +1 -1
- package/pipeline/schemas/prefs.schema.json +2 -2
- package/pipeline/schemas/secret-patterns.json +124 -0
- package/pipeline/scripts/build-references.mjs +2 -2
- package/pipeline/scripts/bulk-read.sh +10 -1
- package/pipeline/scripts/cost-table.json +8 -1
- package/pipeline/scripts/doctor.mjs +1 -1
- package/pipeline/scripts/gen-facts.mjs +112 -7
- package/pipeline/scripts/phase-tracker.sh +5 -5
- package/pipeline/scripts/pre-commit-check.sh +30 -1
- package/pipeline/scripts/scan-skills.sh +26 -0
- package/pipeline/scripts/validate-analysis-doc.mjs +201 -26
- package/pipeline/scripts/verify-citations.mjs +1 -1
- package/pipeline/scripts/write-state.mjs +32 -0
- package/pipeline/skills/.skill-manifest.json +5 -5
- package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +6 -6
- package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +6 -6
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +14 -13
- package/pipeline/skills/shared/external/NOTICE-swift-ios-skills.md +1 -1
- package/pipeline/skills/shared/external/signal-community/SKILL.md +8 -1
package/manifest.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mmerterden/multi-agent-pipeline",
|
|
3
|
-
"version": "19.
|
|
4
|
-
"commit": "
|
|
5
|
-
"generatedAt": "2026-09-
|
|
3
|
+
"version": "19.1.1",
|
|
4
|
+
"commit": "f45e4e1e3b101d0c795794793b6274ddd72d6ded",
|
|
5
|
+
"generatedAt": "2026-09-20T20:39:30.640Z",
|
|
6
6
|
"algorithm": "sha256",
|
|
7
|
-
"fileCount":
|
|
7
|
+
"fileCount": 1057,
|
|
8
8
|
"files": {
|
|
9
|
-
"CHANGELOG.md": "
|
|
9
|
+
"CHANGELOG.md": "26f5a11dbe3b8ef1db89e2e2cfa38005709394c11e2be9bd8c9b0122d3f5f40c",
|
|
10
10
|
"LICENSE": "8d8c51aaf1e1538b180c69965fa038db71be86798cc3e26a143bebfefe16a43e",
|
|
11
|
-
"README.md": "
|
|
11
|
+
"README.md": "63cba0443ff6750cf979ca39093f80f414a9ffa72bdf08a196a4fb821520fb5d",
|
|
12
12
|
"README.tr.md": "429823b93ae79e783ac91559251ff741d01b147146fffb6fb30f8a980ca157c2",
|
|
13
13
|
"SECURITY.md": "3fb38c517a8e2c6cea84c871b98a0c91ef3df17379028ba4f1686e07369e4c6e",
|
|
14
14
|
"docs/FIGMA_PIPELINE.md": "24155e13690ade810d99cda6a350051f0810bc971ae341bdef561a0a46f5032a",
|
|
@@ -29,12 +29,12 @@
|
|
|
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": "051520cefee38d34894ef563ab987be15dc47cc9172fc6692ee440a77fa1f2c0",
|
|
33
33
|
"docs/engineering.md": "550528cd47c7d2c921729c68d0782a00ac8e77a4bdfec479f6749f9c3235d188",
|
|
34
|
-
"docs/facts.json": "
|
|
35
|
-
"docs/features.md": "
|
|
34
|
+
"docs/facts.json": "91633e93a671f2d32ce1b1bfb1b797bda6e8430108e2a70e5f662654321de728",
|
|
35
|
+
"docs/features.md": "927e5e54f7b1348ce2cddecb0d11115dc5ae9db20558b12d67932d38b26dad3f",
|
|
36
36
|
"docs/performance.md": "bbf2f3922c25dcba0c1a9e69ef420e3871a729af5b35009a49b48a5d3c5cd151",
|
|
37
|
-
"docs/recovery-guide.md": "
|
|
37
|
+
"docs/recovery-guide.md": "1cc014295f8c8ffba1f1c44397b657e925f1bc0e4757217d6e69e8cfb271f3cb",
|
|
38
38
|
"docs/server-readiness.md": "8f54fd7e20226ba02afcb9cca09a9a6dbdf014a6235c3e6ef71276f7dacdf71d",
|
|
39
39
|
"docs/token-budget-history.md": "8c7f550bf5ba85f107da86ea10d981c3eeee94f6df9e7cbc34376a720fa908b1",
|
|
40
40
|
"index.js": "4d245fa375e21406d77363694cacca3be6c1c48a36adfaa23302c3f9f5170df2",
|
|
@@ -58,12 +58,12 @@
|
|
|
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": "8cf3ab5b8ab1eb0b5449c89fe00412623fa9b20e3afa41fe6868ae6bf3a07e0c",
|
|
62
62
|
"pipeline/agents/android-architect.md": "baa5787b3a4c800dd065e27e05f44462927c9938c8bb676c80f18cb10e2b12c4",
|
|
63
63
|
"pipeline/agents/backend-architect.md": "a83bd7f8b0a5289a1ef9a9b59d60fc759b8db260606ff2df427cf5ade5db8530",
|
|
64
64
|
"pipeline/agents/bulk-reader.md": "0b9d415fab2c449d43329d759049af9401255d06b32d57a38c95e684837b19bf",
|
|
65
65
|
"pipeline/agents/code-reviewer.md": "0181049bea927c6b9835ab8ced268eddd25d27e2b1aa053ad32f67e455378a8d",
|
|
66
|
-
"pipeline/agents/dev-critic.md": "
|
|
66
|
+
"pipeline/agents/dev-critic.md": "2b0a17d58b1570c646fc12e8e182403913493b9f5d4ff933b73651303344836f",
|
|
67
67
|
"pipeline/agents/explorer.md": "9e72db35159b455a21a956375ffa457871131c7234f6ff5ae1e46c97a8112563",
|
|
68
68
|
"pipeline/agents/ios-architect.md": "31d9415e4a6e5daade3246c401f4e5b44627f850313f624b72747c8479c9ff2f",
|
|
69
69
|
"pipeline/agents/security-auditor.md": "68417627d35b398f684983a8e9599bb9eefba026e30d0ef80dd8d765e0ccaa00",
|
|
@@ -72,10 +72,10 @@
|
|
|
72
72
|
"pipeline/commands/archive-guard.md": "16c5d3feaa91950402d62e66adc7fcf519a25d028a9303cb1e9c08af2765c04b",
|
|
73
73
|
"pipeline/commands/deploy.md": "d20f95f3b1d2357c8c92f3047e8fe11eadf539ff13cab9b54f072f0ad697242a",
|
|
74
74
|
"pipeline/commands/figma-to-swiftui.md": "34d52373216100774450950256b5f45402e033029d918de20425356632f26356",
|
|
75
|
-
"pipeline/commands/multi-agent/SKILL.md": "
|
|
75
|
+
"pipeline/commands/multi-agent/SKILL.md": "a0e82e81d68fbbc0a36d7675963e7cbffaad5139831c93997e0846d10b46d735",
|
|
76
76
|
"pipeline/commands/multi-agent/analysis-jira/SKILL.md": "90d6886de50322c902b617ad062890b127b4a5ff9b976295971e0c545b1ffebb",
|
|
77
|
-
"pipeline/commands/multi-agent/analysis-resolve/SKILL.md": "
|
|
78
|
-
"pipeline/commands/multi-agent/analysis/SKILL.md": "
|
|
77
|
+
"pipeline/commands/multi-agent/analysis-resolve/SKILL.md": "35891976a6848ff8d287eaf72fd810928a28a514242a3da597c0c1eea127804c",
|
|
78
|
+
"pipeline/commands/multi-agent/analysis/SKILL.md": "6680c952fd0ecb0b4475046c02c653d1b945ab717ef285d86095b05bf1447d47",
|
|
79
79
|
"pipeline/commands/multi-agent/autopilot-off/SKILL.md": "07e1911534084c911a54c1b8fc940324356a0f1c1bc6b8299a337e799b0e99f2",
|
|
80
80
|
"pipeline/commands/multi-agent/autopilot-on/SKILL.md": "cd0790676f3e6746095c1f643128d76276434af49f2ccf8b5561c605f5d32505",
|
|
81
81
|
"pipeline/commands/multi-agent/autopilot-status/SKILL.md": "cdb5c0ca654383c60239b04dae444ebe7c480989e600a81382ec9649e6e01cfe",
|
|
@@ -106,12 +106,12 @@
|
|
|
106
106
|
"pipeline/commands/multi-agent/prune-prompts/SKILL.md": "534b880334e92d43b123a59c94b56d1007c32f8b44d4d89df1b980a2c14a3d3d",
|
|
107
107
|
"pipeline/commands/multi-agent/purge/SKILL.md": "5d1d9fdae86aa05abd6396f766d0fd3bd549e5a47c44b8486d6ddc1c31be6642",
|
|
108
108
|
"pipeline/commands/multi-agent/refactor/SKILL.md": "41148e385d0b254d56edbce73e942ebcfc32d55117a957ca797991c01d47221c",
|
|
109
|
-
"pipeline/commands/multi-agent/resume-local/SKILL.md": "
|
|
109
|
+
"pipeline/commands/multi-agent/resume-local/SKILL.md": "2b6fbaf8f9de448acb344f58ab6360dd8982704fc13fdf2d06c5e8326370ed07",
|
|
110
110
|
"pipeline/commands/multi-agent/resume/SKILL.md": "6f7ecaa9033085d29593e9878c00afe3ae0e2ecfb40b116b828e8892f9e70af2",
|
|
111
|
-
"pipeline/commands/multi-agent/review-analysis/SKILL.md": "
|
|
111
|
+
"pipeline/commands/multi-agent/review-analysis/SKILL.md": "28595de1d871f4b9b49c4cf2138102b81955a7efd4f30d8138b409babc2e1434",
|
|
112
112
|
"pipeline/commands/multi-agent/review-issue/SKILL.md": "15e469812c747ef2f4d3bc8603e364e9f80062e8a1921da59cea5f1062c443bf",
|
|
113
113
|
"pipeline/commands/multi-agent/review-jira/SKILL.md": "1127f7c47f5738c786a97a55a2708667d642459a5b5f7981b7459ecc6fc4882b",
|
|
114
|
-
"pipeline/commands/multi-agent/review/SKILL.md": "
|
|
114
|
+
"pipeline/commands/multi-agent/review/SKILL.md": "47792bab37794de7881cc156c97397b962fa34245aeda816cf0c340c52da0add",
|
|
115
115
|
"pipeline/commands/multi-agent/route-off/SKILL.md": "70fb9a537161d002fd34b1346363ee1605f6534d9b4d9b38f6d2e9d8d3a0cd38",
|
|
116
116
|
"pipeline/commands/multi-agent/route-on/SKILL.md": "d34436fe71e972fd9e383b23faac76382e6bb64953ce577db454e020c019ed96",
|
|
117
117
|
"pipeline/commands/multi-agent/route-status/SKILL.md": "5a70b5af46907fa5895a93aa011796ecaf1e53e629b766a0ad11677dcae2d0e2",
|
|
@@ -164,9 +164,10 @@
|
|
|
164
164
|
"pipeline/lib/issue-fetcher.sh": "c496ad6b07c0f6c64c69cb6293a0a4f3010b3ce3945a525e602c0d51c665ac67",
|
|
165
165
|
"pipeline/lib/jira-publish.sh": "a32e6a682ae730ddd9c6df64b9ece1fb73c797111c63f5c247d7e733668da6b7",
|
|
166
166
|
"pipeline/lib/md2confluence-v3.py": "3677ca47931e4b3d0fd2ce3e11299fc5f6d24799eb8332e37dd60b6c3c4653a2",
|
|
167
|
+
"pipeline/lib/model-dispatch.sh": "929b665bda7116da219cc9e0f3e0b17b1e73472482293d251803e35822c8daa0",
|
|
167
168
|
"pipeline/lib/model-rung.sh": "befcd1a250a04f9ea9c8dca18c9d8905286330197e54da41ad4fd12b845f604d",
|
|
168
169
|
"pipeline/lib/multi-repo-pipeline.sh": "392b06b4d40924b16a74d85dfceb68a5aeed8a50aed832a5ca92f27e2a5d7e80",
|
|
169
|
-
"pipeline/lib/outbound-gate.mjs": "
|
|
170
|
+
"pipeline/lib/outbound-gate.mjs": "76547f21ca92793f4c59e1dbf91c498278614281607e3ecbeeddbafe7e3a6a56",
|
|
170
171
|
"pipeline/lib/parse-complaints.sh": "b4158499f27adc4fa22120b3d8ee877aaa5dda099762496d4c753257c889d13b",
|
|
171
172
|
"pipeline/lib/phase-schema.mjs": "8fc0c909f129341295cd8ef2ea9e93cecd0ac493c3a8d83e25879f7ff522f1ab",
|
|
172
173
|
"pipeline/lib/plan-todos.sh": "cad15966fe2ea99337511787a0a0851ec0b04f806d4be96f32a6bfa0e0324a4e",
|
|
@@ -182,19 +183,19 @@
|
|
|
182
183
|
"pipeline/lib/submodule-detector.sh": "e2c1a762876c5ae4756818e91f0f0fdd5897cac60decb979651124086e9cab97",
|
|
183
184
|
"pipeline/lib/vercel-deploy.sh": "7890a86f050611e7743e101303f1263527713019824a15aa4dddc09940bb0a65",
|
|
184
185
|
"pipeline/multi-agent-refs/_account-picker.md": "42715ba746e1fc681a57436d72fc643e3f16de023f0409fee8782b013f7a144a",
|
|
185
|
-
"pipeline/multi-agent-refs/_dev-context.md": "
|
|
186
|
+
"pipeline/multi-agent-refs/_dev-context.md": "491ab5e87d7919e23366de6f11ecb3f2cb6cddc5daf9445d2faeb92a615b136b",
|
|
186
187
|
"pipeline/multi-agent-refs/_input-parser.md": "4cf222b1c4a405bd71521f5290f45408cc8a47913a0a39166c68210104e90cc5",
|
|
187
188
|
"pipeline/multi-agent-refs/_repo-picker.md": "c325e86d00fa5e26893eeafcfae8c809f62e34e2ec643b4b364ac4c6f9caca45",
|
|
188
|
-
"pipeline/multi-agent-refs/analysis-template-corporate.md": "
|
|
189
|
-
"pipeline/multi-agent-refs/analysis-template.md": "
|
|
190
|
-
"pipeline/multi-agent-refs/analysis/evidence.md": "
|
|
191
|
-
"pipeline/multi-agent-refs/analysis/intake.md": "
|
|
192
|
-
"pipeline/multi-agent-refs/analysis/locked.md": "
|
|
193
|
-
"pipeline/multi-agent-refs/analysis/redesign.md": "
|
|
194
|
-
"pipeline/multi-agent-refs/analysis/render.md": "
|
|
195
|
-
"pipeline/multi-agent-refs/analysis/resolve.md": "
|
|
196
|
-
"pipeline/multi-agent-refs/analysis/review.md": "
|
|
197
|
-
"pipeline/multi-agent-refs/analysis/synthesis.md": "
|
|
189
|
+
"pipeline/multi-agent-refs/analysis-template-corporate.md": "928cdf3e5948ca7540b14e704cf2e6ecb4864579e519dc148025a372bf103176",
|
|
190
|
+
"pipeline/multi-agent-refs/analysis-template.md": "747d272b70c52c6ff8b321eb24c6553d93c144d872f431d7bfcbfe7d6619d2d4",
|
|
191
|
+
"pipeline/multi-agent-refs/analysis/evidence.md": "0550bc0bc9865dcd4a879cb5bf2fad1869f58ea2fa60c906577e421a485e3b26",
|
|
192
|
+
"pipeline/multi-agent-refs/analysis/intake.md": "9b92880a57218cf5e552547d4ddd9ee797603573ecd16617b1fc60b5e03c3564",
|
|
193
|
+
"pipeline/multi-agent-refs/analysis/locked.md": "d82c7cc3523eba064eb4e5316101bd39cf1be4704dd785fe552c64d6fa4e7e0d",
|
|
194
|
+
"pipeline/multi-agent-refs/analysis/redesign.md": "ed0b1c6c4157b0063debecad3342a48c83f3b015160cb6f37fbc429167ad18c3",
|
|
195
|
+
"pipeline/multi-agent-refs/analysis/render.md": "19ba156f82d8e42657256657a42b998586b42117e91570f434c230fcccab5a16",
|
|
196
|
+
"pipeline/multi-agent-refs/analysis/resolve.md": "c38a465f15c6140e4a4d42cd0b312c32e306ec7b36df385182da1a6a045dee8e",
|
|
197
|
+
"pipeline/multi-agent-refs/analysis/review.md": "169098367ecd97ad31aa82cea6c5e2c44021815628d18d33badb285e225b9b58",
|
|
198
|
+
"pipeline/multi-agent-refs/analysis/synthesis.md": "bfa2b5eb41b2a3bf6233b957a2a4381b84243ac669c6e7b467e31b0192655902",
|
|
198
199
|
"pipeline/multi-agent-refs/android-guide.md": "826ad836028ef1f0bd32110999e78b438dbf0808304367a58a2b45cdeb659bb5",
|
|
199
200
|
"pipeline/multi-agent-refs/audit-guide.md": "03586937e913f3457b1219435de7473973f5f0d085a18484b7c8efce24a4ef59",
|
|
200
201
|
"pipeline/multi-agent-refs/backend-guide.md": "b8809b06f7feea6a13f9b433a2b9828e39c81ef3ab59edd23c61cf183d80f7b0",
|
|
@@ -205,11 +206,11 @@
|
|
|
205
206
|
"pipeline/multi-agent-refs/channels/pr.md": "a6d5244a3bf5cf5f15d961a07972c9917db98c436f1a9cfdfe6c3c3dba7d5b69",
|
|
206
207
|
"pipeline/multi-agent-refs/channels/wiki.md": "ba52c5efaedc067dd8456fe9076af694d7e3dae9bda621f1df65c9159cd422da",
|
|
207
208
|
"pipeline/multi-agent-refs/complaint-analysis-template.md": "dd5f12a8f56ee4dc177fa7bfba4ffe9ad021e5f1b9e661a49031f02dd6e37109",
|
|
208
|
-
"pipeline/multi-agent-refs/component-dispatch.md": "
|
|
209
|
+
"pipeline/multi-agent-refs/component-dispatch.md": "ac9322996b6be8afa646a3158b4444e3636f384eee18643b1e183627c16639c0",
|
|
209
210
|
"pipeline/multi-agent-refs/component-generation.md": "04fdb3fd0f1c129e1df8243184a3225cebd9c4f63511d6015eb356a92eda8891",
|
|
210
|
-
"pipeline/multi-agent-refs/conventions-defaults.md": "
|
|
211
|
+
"pipeline/multi-agent-refs/conventions-defaults.md": "73d40d628b10078eb9d06c99575c23a297ab5bc011f8df05d97802957ad64923",
|
|
211
212
|
"pipeline/multi-agent-refs/cross-cli-contract.md": "6cffb12e1aff14c50b01ba5597bb72a52cc207eae83ef285f76d4f5654e97179",
|
|
212
|
-
"pipeline/multi-agent-refs/features/analysis-jira.md": "
|
|
213
|
+
"pipeline/multi-agent-refs/features/analysis-jira.md": "5542735d39a96d288cf99d1dfe18ec30270d2777a260c80d74ab6e5121edc9fb",
|
|
213
214
|
"pipeline/multi-agent-refs/features/autopilot-circuit-breaker.md": "1995fb86bee28600c727cd6c94f39da33efd67f2bce3092705b354f4b2cd3aad",
|
|
214
215
|
"pipeline/multi-agent-refs/features/base-branch-evidence.md": "d9e5db990aa2c124a3898151689d244d91746a22f711a2bc664098ac3f16930f",
|
|
215
216
|
"pipeline/multi-agent-refs/features/code-graph.md": "dcdeb8f87da55e43d2bef10291e8a8b93ec3f880d995e8346809baa9d3a3011f",
|
|
@@ -217,23 +218,23 @@
|
|
|
217
218
|
"pipeline/multi-agent-refs/features/cost-analysis.md": "42f1b90b41ef454f29ccfd3f93c959920f0e74cbca65e140695e9a30d6d90b87",
|
|
218
219
|
"pipeline/multi-agent-refs/features/design-conformance.md": "8bcc1c9221f39ec8764c6aa20e59f968d6beb777f644c61adf7a38e35af1a9d5",
|
|
219
220
|
"pipeline/multi-agent-refs/features/dev-critic.md": "08e01edef04b5ac216f8f43332126966d33da7b95625e47a8a6cd8ac105b263f",
|
|
220
|
-
"pipeline/multi-agent-refs/features/doctor.md": "
|
|
221
|
+
"pipeline/multi-agent-refs/features/doctor.md": "61fb489841e408c275d4d82769930544b13de9aa61b94656e77238bc9908cb89",
|
|
221
222
|
"pipeline/multi-agent-refs/features/external-context-injection.md": "8fcf5229f92276af7714638602ec4da076f9f3f0a170303e3c1e178f55e39863",
|
|
222
223
|
"pipeline/multi-agent-refs/features/jira-context.md": "6f6fe697451e061909aa125366defbcc0baae5cecd8341bfabbad09011256684",
|
|
223
224
|
"pipeline/multi-agent-refs/features/maturity-followup.md": "2a6166869101b00ea273b92e3fe1ea07b375a0190aaab6b42ff5691db3748eec",
|
|
224
|
-
"pipeline/multi-agent-refs/features/model-fallback.md": "
|
|
225
|
+
"pipeline/multi-agent-refs/features/model-fallback.md": "fb982661127075930450cfff89857c892569e5068b60fab2fb59af2fc5613791",
|
|
225
226
|
"pipeline/multi-agent-refs/features/package-manager.md": "b9e52f798f5dcba43abff1fe5cad8d5d5374058c9a6847c993975c665acab05a",
|
|
226
227
|
"pipeline/multi-agent-refs/features/plan-todos.md": "8780d80b4541daee2b05080759a0694ef7e6270abe9a4621deb92ec7bac94e8e",
|
|
227
228
|
"pipeline/multi-agent-refs/features/prior-fix-detection.md": "f194c444f1685bb103e1aa16164ca6737ba9910b7c8f89874924da950838b074",
|
|
228
229
|
"pipeline/multi-agent-refs/features/repo-map.md": "9102f95d5c819c3bce3dc992cc98c67657e83f1fbc77d2e9b3d16b040bfab9f6",
|
|
229
230
|
"pipeline/multi-agent-refs/features/review-delta.md": "4fd2c3979c7a42b23350424294e96de43967d51ae86757369cdf7229e648636a",
|
|
230
231
|
"pipeline/multi-agent-refs/features/review-file-set.md": "a751888bce82a8e6970c9abe7f354c5c0704956e5278aeb091b893be0df5c1ef",
|
|
231
|
-
"pipeline/multi-agent-refs/features/review-multi-repo.md": "
|
|
232
|
+
"pipeline/multi-agent-refs/features/review-multi-repo.md": "b0c45a9d67ccb85e7e245604830e40cce6f94d72e026dae980ea61dfe9fd6fc0",
|
|
232
233
|
"pipeline/multi-agent-refs/features/scope-check.md": "06bba954280403d17c975c7cf0490cc7fc2f9dc1441def3c0c4d48ac6a02ee6f",
|
|
233
234
|
"pipeline/multi-agent-refs/features/shadow-git.md": "d020c7b99a993eb11398d08e0518207b990b3ec3807fbcf0926c6cb304777ce9",
|
|
234
235
|
"pipeline/multi-agent-refs/features/skill-conformance.md": "e62c30cd36716f48a836a1372cfbd11e61b7dbc50be01ce0370c3acf5fc01427",
|
|
235
236
|
"pipeline/multi-agent-refs/features/stack-skill-routing.md": "e71e5492a00ea07cc9e533f0b72c0423e166c62e20c1bf400ece4527b21a15f9",
|
|
236
|
-
"pipeline/multi-agent-refs/features/url-enrichment.md": "
|
|
237
|
+
"pipeline/multi-agent-refs/features/url-enrichment.md": "64af9f058ac5e7fbc662acb8839adf0d4cd67ee20db91e8f9a3b7a514bdb3eed",
|
|
237
238
|
"pipeline/multi-agent-refs/features/usage-reporting.md": "c65dcdac7ff4ec54578cdfce3b84e818eb122a40fced9bc10a5cdb5650e9e40d",
|
|
238
239
|
"pipeline/multi-agent-refs/features/verify-by-test.md": "6be89c7020ebdce6903e1f72cb74adeb5c4eb93a5f0e18c0b1b7c0cae619a42a",
|
|
239
240
|
"pipeline/multi-agent-refs/features/verify.md": "1a6db5e7239eac01e51100353013abd16bf785a7fce88b40139fca27f4166be4",
|
|
@@ -251,9 +252,9 @@
|
|
|
251
252
|
"pipeline/multi-agent-refs/phases/modes.md": "1a735f9bbf6fa34129cbb9374113481ac39d13192e6cfece94895a2989e6c1f7",
|
|
252
253
|
"pipeline/multi-agent-refs/phases/operations.md": "78ffd2a95ad0d1bb34951e2450888410586ddb366246fe0603c94852d2ef7b81",
|
|
253
254
|
"pipeline/multi-agent-refs/phases/phase-0-init.md": "335abcec15efc4da8b793fd4c311e39309000db0b3c6707e2e99ed5a876dc3fe",
|
|
254
|
-
"pipeline/multi-agent-refs/phases/phase-1-plan.md": "
|
|
255
|
+
"pipeline/multi-agent-refs/phases/phase-1-plan.md": "e624ee4a8bb6ca9fd1da3b45c10a90ea7a2aa7f29883c58d7a0a482025c9197a",
|
|
255
256
|
"pipeline/multi-agent-refs/phases/phase-2-dev.md": "43422b3b924b3083c44b811630286dc04e537fbfbc90a2a7bbefde1943d8cd78",
|
|
256
|
-
"pipeline/multi-agent-refs/phases/phase-3-review.md": "
|
|
257
|
+
"pipeline/multi-agent-refs/phases/phase-3-review.md": "05572e7fbde68702c12721a19421b324d914bd45240e719a848f0a7d4f3a0214",
|
|
257
258
|
"pipeline/multi-agent-refs/phases/phase-4-commit.md": "da5ec29cefe75322dd474697f3f1c3e676b3981d2bdca66f04d0cb9f95db879f",
|
|
258
259
|
"pipeline/multi-agent-refs/phases/phase-5-report.md": "4ca259fea3addc5ce900d82da4d241ef45cfc34f6fd2c233900320c3d3c659f4",
|
|
259
260
|
"pipeline/multi-agent-refs/picker-contract.md": "8be36ac84a1cb0aaec514698f32f8cd54fb3864e71163ee14fea9a49a8af03c1",
|
|
@@ -273,12 +274,12 @@
|
|
|
273
274
|
"pipeline/multi-agent-refs/web-guide.md": "714cba0d92fa45bf71fbff21bb2f09c88534ebf785b3a2ea96d18037e2e7f7f9",
|
|
274
275
|
"pipeline/multi-agent-refs/website-deploy.md": "ce819c8b1ef8e8ec3257611379aaf0ab4678e08e0b58bd88c936e98cb8ead609",
|
|
275
276
|
"pipeline/multi-agent-refs/wiki-capture.md": "a00eac0f1ffa956f8b767508147e6bc2dffb5fd1a32b1e0b0ac4e610775755ed",
|
|
276
|
-
"pipeline/preferences-template.json": "
|
|
277
|
+
"pipeline/preferences-template.json": "d917d01d5a5924e0d9a9394c5f9935046df6d56f0ba3ceee2b7ea31651cb37b0",
|
|
277
278
|
"pipeline/rules/app-store-guidelines.md": "cdfa4f8a2e0e642460bb72517f9f430638d6f09eb4a37898747cb8d55df03405",
|
|
278
279
|
"pipeline/rules/code-review.md": "b18eec5cec31710fe76cdae6f03b53e7403d4f0406274691ab38a4771505a1c5",
|
|
279
280
|
"pipeline/rules/code-style.md": "cd7d8fa872d1d640d143a573a0bdeeb7a9095f62a4d69741a11b4f0cee9d5a48",
|
|
280
281
|
"pipeline/rules/debugging.md": "6ca90aacf1f4bad59000da84a7a8e368eda69af0752ca9ec8e4916408502257a",
|
|
281
|
-
"pipeline/rules/figma-pipeline.md": "
|
|
282
|
+
"pipeline/rules/figma-pipeline.md": "c8a6a1a8bc1dc832622988eeab7291a1e37fee53485e33fa8336215631aae49e",
|
|
282
283
|
"pipeline/rules/git-conventions.md": "200408fb59e19898096aca998381974f23929760c661741dd76813de902386eb",
|
|
283
284
|
"pipeline/rules/kotlin-android.md": "2344356125cbdd49f703144f3eb573d40fd1ce2d4b5ef404d44da13c052c9236",
|
|
284
285
|
"pipeline/rules/outside-the-pipeline.md": "4e80b1435f8a1d3fcd6ad4112dc3caa08ff3c14afc5a5f8ce94e872aa48c4f96",
|
|
@@ -288,8 +289,8 @@
|
|
|
288
289
|
"pipeline/rules/tdd.md": "4c1b3114506aa9794c9bb1e1aee1b1bbb4a993d192342e5697cc00bc2f6ea4a2",
|
|
289
290
|
"pipeline/rules/testing.md": "695be5520b65451f0aa300a9643df2c05e607ff6ad372201ea34798dc5998bd5",
|
|
290
291
|
"pipeline/schemas/agent-state.schema.json": "f8062bf761747b768d1a7bedb31b52855719b6e16bfebc14792c1de8b2975baa",
|
|
291
|
-
"pipeline/schemas/analysis-output.schema.json": "
|
|
292
|
-
"pipeline/schemas/analysis-spec.schema.json": "
|
|
292
|
+
"pipeline/schemas/analysis-output.schema.json": "41826f4bf7c96778f8cdbcc68531e984087897d438b7b49ac5a93fc29db47916",
|
|
293
|
+
"pipeline/schemas/analysis-spec.schema.json": "245b1be914f16d716e354b1125cf392a51f2ba3c3cd504113b5437183e0c57ae",
|
|
293
294
|
"pipeline/schemas/autopilot-config.schema.json": "112aae6e5dfb9cf5874d96652a5f45b4efb9c4edc62e927a751541f865bffbc8",
|
|
294
295
|
"pipeline/schemas/bulk-read-output.schema.json": "468d447ee69d5576d16835cdd167a9191bf33d2b6e3af89373907582ef93f49e",
|
|
295
296
|
"pipeline/schemas/clarify-output.schema.json": "13c3d933d24d9541a97fe7630f97587157c92e420794d6dea359726377c986a6",
|
|
@@ -300,7 +301,7 @@
|
|
|
300
301
|
"pipeline/schemas/design-check-config.schema.json": "b2330db39bfcaa18b6515b5b71d8198017476ca8992a14629c7f889c64f4f2d7",
|
|
301
302
|
"pipeline/schemas/dev-critic-output.schema.json": "2797ff79154b57f7539f8ae0181f9bf70e63e5f997b06a4aa05a5917ae50d1c8",
|
|
302
303
|
"pipeline/schemas/diff-risk.schema.json": "da4d9133b7e1ccc03e46347224e442636cdf02757b95a77f4fe9d4b747223487",
|
|
303
|
-
"pipeline/schemas/figma-project-config.schema.json": "
|
|
304
|
+
"pipeline/schemas/figma-project-config.schema.json": "5e2b61e1f165a507d1dc7a1b8b3df71a39a7034534376723b7f835212687d6b5",
|
|
304
305
|
"pipeline/schemas/learnings-ledger.schema.json": "cb2b0c4c252e27f5256f78db6faead96191b5f9506954c06422eeb7a7d2d95ed",
|
|
305
306
|
"pipeline/schemas/migrations/README.md": "5802791aa6504a1a4e2a685a3ce22ba779d77ef45f9ac5c8121366109c8220cf",
|
|
306
307
|
"pipeline/schemas/migrations/figma-config-1.0.0-to-2.0.0.mjs": "dd25290562ab50d60d825f65b255cc02371628daf7bedd13495d24c6eaffd57d",
|
|
@@ -316,11 +317,12 @@
|
|
|
316
317
|
"pipeline/schemas/phases.json": "b508803f0a65903f952eecc92fe9f883bcca4d9e878f618c1130145d7ea37383",
|
|
317
318
|
"pipeline/schemas/plan-todos.schema.json": "98fe2b9ba902425f13f067a494113d0c5fe03a2676e2c54fefbb319730214278",
|
|
318
319
|
"pipeline/schemas/planning-output.schema.json": "af1d8189a82398702f4db3460b3b0c78038d40f6aab210c191e9d491ad5d96e6",
|
|
319
|
-
"pipeline/schemas/prefs.schema.json": "
|
|
320
|
+
"pipeline/schemas/prefs.schema.json": "1a5e041385d251fb62fa39771ca0a357b9ce2270d39fe0b3dd84c9fc0f4c8f7b",
|
|
320
321
|
"pipeline/schemas/review-file-exclusions.json": "2e8c44b45d21d2c82fc95aa2bf76ad3fbf2d5c68180c7b2ebf89c4a926688d77",
|
|
321
322
|
"pipeline/schemas/reviewer-output.schema.json": "1bc8dd8feb416ea2101457e071d72b5a6ab0aefa7da3d42063bbe1c153755754",
|
|
322
323
|
"pipeline/schemas/route-config.schema.json": "ddade61393ee7c2f5863ca26324af70a1d2153ef7221526878ea07a4d5c9b54c",
|
|
323
324
|
"pipeline/schemas/scope-check.schema.json": "f96973c59372b36b7d68b9ac4b03490e7da8d54acf29a35947f5f610e82b98ea",
|
|
325
|
+
"pipeline/schemas/secret-patterns.json": "d9a7bec7b2ba704b73f2302c3498874c6298cde69bde0f181932c282d3fe0b0e",
|
|
324
326
|
"pipeline/schemas/skill-observation.schema.json": "05f16c6e5055ef99a102b12b578ba841251267d41dd7343f8ab66cd8070180ff",
|
|
325
327
|
"pipeline/schemas/test-gap.schema.json": "175a268fca49a5e7a7388693b3dc397de45217c64fe333f7867ea6372610ad03",
|
|
326
328
|
"pipeline/schemas/token-budget.json": "09b691ae343faf7b9c288a92de6aef2447194a62995cce22c5f2c701ad0b60e2",
|
|
@@ -348,10 +350,10 @@
|
|
|
348
350
|
"pipeline/scripts/autopilot-runner.mjs": "f37e1ecf5075dc4329c520226c56191f663c03e999662e246abf2ae78eac3fa2",
|
|
349
351
|
"pipeline/scripts/autopilot-status.sh": "e4643f2bce5bae4634771c414c60bb9b520bb878fdabb534e83206f911579c62",
|
|
350
352
|
"pipeline/scripts/base-branch-candidates.mjs": "c73a02033ed9f10c15b3aaf010432f0d4e429a75eba14731e9a64492e3fe3859",
|
|
351
|
-
"pipeline/scripts/build-references.mjs": "
|
|
353
|
+
"pipeline/scripts/build-references.mjs": "bf741eff80720cf3d01f20ca13d6371e0f2e6c47f6020d2b7d3bf9af3975929b",
|
|
352
354
|
"pipeline/scripts/build-skills-index.mjs": "35b7ae8299db6a554064096ea34b476cb231b5f15bbf0dd86dd3b128399e9390",
|
|
353
355
|
"pipeline/scripts/build-stack-plugins.mjs": "be327b0c5e91e5fd90572c4e55321396eae0406c5c469bc4eafdf410714ef8d6",
|
|
354
|
-
"pipeline/scripts/bulk-read.sh": "
|
|
356
|
+
"pipeline/scripts/bulk-read.sh": "1f0662e83cc4b38e733993887e94ee64b9e56452dca8313cac7d315beb98b4a3",
|
|
355
357
|
"pipeline/scripts/capture-evidence.sh": "2f7657786e07c17c302b76d4ea6bafe391b65be3dd891901b78019af3a7e38e1",
|
|
356
358
|
"pipeline/scripts/capture-flush.sh": "8fe8e130e59bacaa9f830a80504fc1495766f0cfbd5e7d995f7c19212326b5d5",
|
|
357
359
|
"pipeline/scripts/capture-resume.sh": "8fbe261310c139dd6fc9aa896a7f93953bdf44b5909607c8c16f59aad88e4296",
|
|
@@ -367,12 +369,12 @@
|
|
|
367
369
|
"pipeline/scripts/cost-analyze.mjs": "4cea251c6294e9393642ddb57a25e1f22c76f121c66f25bec4e77c4b74cfa937",
|
|
368
370
|
"pipeline/scripts/cost-budget-check.mjs": "0edc96feccc3fe07f36eefe3b52b611e43ef94178fd257f0f4537a024e2754cd",
|
|
369
371
|
"pipeline/scripts/cost-lib.sh": "64eeb1d4515b802cc9136ef520f93b7a81aa9cc1c1065e81fe522fccf7fd2cb5",
|
|
370
|
-
"pipeline/scripts/cost-table.json": "
|
|
372
|
+
"pipeline/scripts/cost-table.json": "23e48ab21809bc6ad2f2d6f2a9158ccad8fd96ec404badcd74c028a67c60295d",
|
|
371
373
|
"pipeline/scripts/council-view.mjs": "f904aa3a71fe31f7b02a00c603186e251f66a652950d285e934b591571db56cc",
|
|
372
374
|
"pipeline/scripts/crush-json.mjs": "303382670f8f170c8c6710202853a2de2915625813cd157185f9be4e2b27258e",
|
|
373
375
|
"pipeline/scripts/diff-explain.mjs": "79137dafe5a3b90a5496611c215669f26d92ab070dc4a71f1d37ed095a49c471",
|
|
374
376
|
"pipeline/scripts/diff-risk-score.mjs": "b3e8da42fea1258162e40f4eb7809074831339b7563874527f7e825f7aa795ca",
|
|
375
|
-
"pipeline/scripts/doctor.mjs": "
|
|
377
|
+
"pipeline/scripts/doctor.mjs": "06ba164a2b869256ddb140d86af6f59129304c142218ccbb98a9b284e32055a7",
|
|
376
378
|
"pipeline/scripts/evidence-gate.mjs": "54bd99ad7ead241cdb9b6281994dac31695fd0c7cf92222249803abc1a48f78a",
|
|
377
379
|
"pipeline/scripts/feedback-send.mjs": "8ec3f8fcafbe0de6c916a13a151d009cb804522537621b239a183591dddeec85",
|
|
378
380
|
"pipeline/scripts/finding-fingerprint.mjs": "fa12ab10701db5d2bfff014e41d1cd4c0b2b772aee5fc69205de14b2761b0c83",
|
|
@@ -381,7 +383,7 @@
|
|
|
381
383
|
"pipeline/scripts/gc-refs.sh": "dfb8ad7bd7358382c0d773e9e4e3a3ff6ef9e665fe658ba82e23ea3fbdd436db",
|
|
382
384
|
"pipeline/scripts/gc-tmp.sh": "5cf9519c53173e7541a7589425679aa57af2c80f95a3681ae95544a09d57b02f",
|
|
383
385
|
"pipeline/scripts/gc-worktrees.sh": "f6b405306b603797e950274fdf3b732140c3fd45d5d15788374d2e33bc21b534",
|
|
384
|
-
"pipeline/scripts/gen-facts.mjs": "
|
|
386
|
+
"pipeline/scripts/gen-facts.mjs": "e6a92018b563083d42799adf539119383a2a4760212cf82cd29cf9c3ce0ed018",
|
|
385
387
|
"pipeline/scripts/gen-mode-dispatch.mjs": "cd0f8751ea6aa69ecc95fbc7b908340ee4d6d87792d6c7e533f9601cea7c91e7",
|
|
386
388
|
"pipeline/scripts/gen-ref-toc.mjs": "23b4f4fd5e2ad7434433d23c116e056186b0ed27ce008cc01b1bd9a0ef13f4e7",
|
|
387
389
|
"pipeline/scripts/gen-skills-index.mjs": "a6a005977a10ecda0f4f80a05f432fd4cb0fa506cfd933c3c2c2ff876d2ebc29",
|
|
@@ -416,10 +418,10 @@
|
|
|
416
418
|
"pipeline/scripts/output-quality-check.sh": "8cfa31afa79fecf6dfe7dc49f32c7fa92bdc6a390075821db4e1cbc330d1b23b",
|
|
417
419
|
"pipeline/scripts/package-manager.mjs": "211046f0e32a05a0ac977a285892a4ad87e1d1e362573b048c8accd45c706d02",
|
|
418
420
|
"pipeline/scripts/phase-banner.sh": "acca704968d6263810de5804ea50a96b7aab7472ec98a7149d92b78b380d8fa0",
|
|
419
|
-
"pipeline/scripts/phase-tracker.sh": "
|
|
421
|
+
"pipeline/scripts/phase-tracker.sh": "c5e1a511656a2b96100ecf21fdf9a77ea42a3e446db5b0eb004e3b7f39c70dac",
|
|
420
422
|
"pipeline/scripts/phase0-exit-gate.mjs": "12eec91c89b0b859f681a0e322563935f9e730990f2f9ae864fd9ff3437bf8d9",
|
|
421
423
|
"pipeline/scripts/plan-coverage-gate.mjs": "939f34c3eaef6867d5066c260c68ac894fd19d588cb8d2c7c030c428a9443d5f",
|
|
422
|
-
"pipeline/scripts/pre-commit-check.sh": "
|
|
424
|
+
"pipeline/scripts/pre-commit-check.sh": "b6ed51b072370759c8481d47edd140afd1360c2f442f11acd574e3689292b58c",
|
|
423
425
|
"pipeline/scripts/pre-push-check.sh": "ff98e73d02aa75cfa9411c29c838241e8529e832e1421ca9c25c39aa07bcd968",
|
|
424
426
|
"pipeline/scripts/probe-evidence-capability.sh": "803213d8f566d3c6bda3afc074e99c11477e076894ec340e90ed6d5f7d328a58",
|
|
425
427
|
"pipeline/scripts/prune-logs.sh": "c5587b33104c7253e07be8cce8249b50014c52dfdf232de637811ffdd88e95e4",
|
|
@@ -438,7 +440,7 @@
|
|
|
438
440
|
"pipeline/scripts/run-ui-tests.sh": "5f1cb05ab0b387f9b89d8f34a0f60182906f0ca27cca4d41926b7217eee86bc5",
|
|
439
441
|
"pipeline/scripts/runs-index.mjs": "37e751d079062ba3eb2af78eb6b9b23d6f90786b5d4cef3d9502129ab74339b6",
|
|
440
442
|
"pipeline/scripts/scan-agent-config.sh": "41dbd995de799f599dc365ea8cfe55542c48c7387c4f94a596a1e6feec278168",
|
|
441
|
-
"pipeline/scripts/scan-skills.sh": "
|
|
443
|
+
"pipeline/scripts/scan-skills.sh": "85765b7ec15af13ade5c9ccedd88329c19b11a627e8df6dccd4839e95361dfb7",
|
|
442
444
|
"pipeline/scripts/scope-check-gate.mjs": "4fa73110d1bd1f0534f4157fb85fa0834c31b0aedda67b95ca9c033201134710",
|
|
443
445
|
"pipeline/scripts/scorecard-snapshot.mjs": "320fb2c811e085451d152997e6b5ee54fa0d14d374d9592ac7880443c5d02ae3",
|
|
444
446
|
"pipeline/scripts/search-logs.sh": "af0ce9b75edd359cc93dd678d35b15eb9bb0f14a4b044d8e4d639f8cdb82c76f",
|
|
@@ -462,7 +464,7 @@
|
|
|
462
464
|
"pipeline/scripts/update-issue-progress.sh": "7a77d9e5bd60ffad06f3cc41088e1b1d49b4dc2842f287b7f6ba6023d7bd1a52",
|
|
463
465
|
"pipeline/scripts/usage-register.mjs": "72e4460b728c382afb35cc9266059e176155838bd762833d48ae19b99bc864f2",
|
|
464
466
|
"pipeline/scripts/usage-report.mjs": "34a93273103e56a4a917d75dfbe89bb9319a99d10a4532868a35fa9321fedf7f",
|
|
465
|
-
"pipeline/scripts/validate-analysis-doc.mjs": "
|
|
467
|
+
"pipeline/scripts/validate-analysis-doc.mjs": "377747281d530276dbd199e175185105c0814171e4782d86a015b5d6e31a8be0",
|
|
466
468
|
"pipeline/scripts/validate-analysis.mjs": "d2dc9ccf45f6ca2702908761939edd830d18b3b273016a4b449f26fe285d5ea1",
|
|
467
469
|
"pipeline/scripts/validate-code-graph.mjs": "0ceac2f5b59f641334d54dc30bee5265361fb5fe1fc97e2f9791b546efe79941",
|
|
468
470
|
"pipeline/scripts/validate-complaint-doc.mjs": "5a4de279a481a04e96aa1eebce6431e0679ae49a084dfc55541d77c61fad6ecb",
|
|
@@ -472,18 +474,18 @@
|
|
|
472
474
|
"pipeline/scripts/validate-state.mjs": "ac2cfde75fe216a7549ba476c58f777f27d36e068de3796909926d68de2fb65a",
|
|
473
475
|
"pipeline/scripts/validate-test-gap.mjs": "14fa89867e49497adb2b88a3290e78d0f263afa74a5b83b062115fc5a22204f7",
|
|
474
476
|
"pipeline/scripts/validate-triage.mjs": "7cd78686494c4dc003b4cd66817dfe583adbdab536b54da3fbb80c9fa0e1a216",
|
|
475
|
-
"pipeline/scripts/verify-citations.mjs": "
|
|
477
|
+
"pipeline/scripts/verify-citations.mjs": "d4156d8b78bbeaa552d1ac985cea3de962de2d38283267394ccb7ce528a321e9",
|
|
476
478
|
"pipeline/scripts/verify-skills.sh": "871fcdfe5567232cd49a4cce4401911a06c8df6ab712d0597e17ce1bf0f63d80",
|
|
477
479
|
"pipeline/scripts/verify.mjs": "2d06091b919fd3db073a0b101ed4752baf08815b974e7a713272f54cab479acb",
|
|
478
480
|
"pipeline/scripts/website-deploy-commit.sh": "523482438b265ca1f1883ec5fb450e803566a1239eaccdc423e12c5426140a84",
|
|
479
481
|
"pipeline/scripts/worktree-finalize.sh": "f905ba69272d32afc75b5deb8406efabfe0865bdeec2e150a521d5a1b0c51b8a",
|
|
480
|
-
"pipeline/scripts/write-state.mjs": "
|
|
481
|
-
"pipeline/skills/.skill-manifest.json": "
|
|
482
|
+
"pipeline/scripts/write-state.mjs": "1367280057d2b747da55ba62af6f884a647f2675c0bde10c39dc68c84ff7daac",
|
|
483
|
+
"pipeline/skills/.skill-manifest.json": "22eac6907c5d5e7a774d5d64148645f633863b60335596bb2dcee1020f787e63",
|
|
482
484
|
"pipeline/skills/.skills-index.json": "05545f7603267576f614d6eedd0369bfcf5b8d1aadbf4c791295559f930b4bb2",
|
|
483
485
|
"pipeline/skills/shared/README.md": "12692c36caaf2f4567cf21b788dad66e1bc34cae345dc8045e0569834b819414",
|
|
484
|
-
"pipeline/skills/shared/core/apple-archive-compliance/SKILL.md": "
|
|
486
|
+
"pipeline/skills/shared/core/apple-archive-compliance/SKILL.md": "6675a53441f2f3bedc82284998f402bd51fa251c7491a595e12c6c4016830337",
|
|
485
487
|
"pipeline/skills/shared/core/apple-archive-compliance/references/rules.yml": "25129ce6d416242ac04c4032f7561e0c2761ab8bbadf08d9c9f49b573a663389",
|
|
486
|
-
"pipeline/skills/shared/core/google-play-compliance/SKILL.md": "
|
|
488
|
+
"pipeline/skills/shared/core/google-play-compliance/SKILL.md": "2229d7b732b0523142b9c467049931b1d100343c1e318428f49e3fea73fc39ec",
|
|
487
489
|
"pipeline/skills/shared/core/google-play-compliance/references/rules.yml": "21fc058762e7341a8917442f1ab4dc50def59aa3145eea120c474b0d0de6a5c1",
|
|
488
490
|
"pipeline/skills/shared/core/multi-agent-analysis-jira/SKILL.md": "405e3afb02ad00cbcd1eace0ab3659d8d405dc78ec68c46f0836c23a83a43950",
|
|
489
491
|
"pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md": "ad59c484a3a251799101aaebfe1cf50ceb10a2e2a389d89c6d56e67ba331ef79",
|
|
@@ -545,9 +547,9 @@
|
|
|
545
547
|
"pipeline/skills/shared/core/multi-agent-testflight-validation/SKILL.md": "0f770a279e12a5edf73cb947ca2d128c013c78646d983c3d4bdfe722a4a990ef",
|
|
546
548
|
"pipeline/skills/shared/core/multi-agent-uninstall/SKILL.md": "b7940b4ab305ac8bcdc1798dbc0d56e96018ba6959566657878b6a583dc6183d",
|
|
547
549
|
"pipeline/skills/shared/core/multi-agent-update/SKILL.md": "8a0b089ea5c0d81813dc936d8b9d012f956e6381f71e025ca8878e538a8e9303",
|
|
548
|
-
"pipeline/skills/shared/core/multi-agent/SKILL.md": "
|
|
550
|
+
"pipeline/skills/shared/core/multi-agent/SKILL.md": "9ab7af2ffb01f8eb0fae624ae40ea9ff2f6d69ad61544bd266b1b97f60eb4a0f",
|
|
549
551
|
"pipeline/skills/shared/external/NOTICE-dimillian-skills.md": "402a96240476446ac284e1cf7c64ed66a7bc1119e92464bb632e737176aa494a",
|
|
550
|
-
"pipeline/skills/shared/external/NOTICE-swift-ios-skills.md": "
|
|
552
|
+
"pipeline/skills/shared/external/NOTICE-swift-ios-skills.md": "a2b150f2ad92ee4564d5bec2681d5b7943e8fddbf5eaab8fcdbece722e626a03",
|
|
551
553
|
"pipeline/skills/shared/external/NOTICE-xcode-build-skills.md": "1c9c1790d3173928dae0964f653583936d0b40cb7a7fe6b732f132b104fef3ef",
|
|
552
554
|
"pipeline/skills/shared/external/accessibility-compliance-accessibility-audit/SKILL.md": "1230a794f434a19e40a3cb6eb56646c9ee4bbedd9f4d1a27b1eb3609cca85075",
|
|
553
555
|
"pipeline/skills/shared/external/agent-introspection-debugging/SKILL.md": "12f850a911262344eca7356d4f9fdf8445c6e9ec0cb31fa822198bedaa6e3c53",
|
|
@@ -800,7 +802,7 @@
|
|
|
800
802
|
"pipeline/skills/shared/external/shareplay-activities/SKILL.md": "508e3123039bc114e4239e66d86f8d550fe94fc259d827e4985e0aed3ff54090",
|
|
801
803
|
"pipeline/skills/shared/external/shareplay-activities/evals/evals.json": "3e61cb97316f526ea57b2d38cf8d23e36c6e3f6d7e17ab1a031c82a0d1708192",
|
|
802
804
|
"pipeline/skills/shared/external/shareplay-activities/references/shareplay-patterns.md": "1a9a51931d4da4254b9ddc7c8a99207c3ffc70c239b22241ba0866c2bc290d00",
|
|
803
|
-
"pipeline/skills/shared/external/signal-community/SKILL.md": "
|
|
805
|
+
"pipeline/skills/shared/external/signal-community/SKILL.md": "d5989a85c39856e451ce5e5f9dd5a250be02067c56e47b8667a4f2d78014a89c",
|
|
804
806
|
"pipeline/skills/shared/external/skill-creator/SKILL.md": "eafda1555c898ce97109fd0bd67b8c9854c00be8c815ffef5a6fc697ae3a9e1c",
|
|
805
807
|
"pipeline/skills/shared/external/skill-creator/audit.md": "2cc981954c1e7c09a3b852645e92db90313d5873c6698a77511bafe713c0ce0e",
|
|
806
808
|
"pipeline/skills/shared/external/skill-creator/checklist.md": "d0285543628af8a77feaff3e2c2f5ea43092f22575abd8581a8cef66d9aec1f8",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mmerterden/multi-agent-pipeline",
|
|
3
|
-
"version": "19.
|
|
3
|
+
"version": "19.1.1",
|
|
4
4
|
"description": "6-phase AI development pipeline with full orchestration on Claude Code, Copilot CLI and Codex CLI. Analysis, planning, TDD, CLI-aware parallel review with consensus surfacing + Fable triage, default-FAIL evidence gates, secret + intent guards, per-phase cost ledger, persistent learnings memory, wiki generation, commit automation. Token-preserving uninstall.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -6,9 +6,9 @@ preferredModel: sonnet
|
|
|
6
6
|
modelRationale: "Critic tier - deterministic checklist + build/test verification needs reliable JSON output and tool-use, not deep reasoning. Sonnet hits the cost/quality sweet spot. Opus override only when the diff is large (>500 LOC) or touches security-critical paths; orchestrator decides via PHASE_MODEL_OVERRIDE."
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
# Dev Critic Agent - Phase
|
|
9
|
+
# Dev Critic Agent - Phase 2.5
|
|
10
10
|
|
|
11
|
-
You are the in-loop critic for Phase
|
|
11
|
+
You are the in-loop critic for Phase 2 (Dev). The generator (Sonnet/Opus during Phase 2) has just finished its last edit. **You run BEFORE Phase 4**, on the same worktree, against deterministic criteria that already exist on disk. Your job: catch failures the generator would otherwise send into Phase 4 and waste 2-3 reviewer calls + Fable triage on.
|
|
12
12
|
|
|
13
13
|
This is the **evaluator-optimizer pattern** from Anthropic's "Building Effective Agents" - the pattern is most effective "when we have clear evaluation criteria, and when iterative refinement provides measurable value." Phase 3 satisfies both: criteria are written in `rules/*.md`, refinement value is measured by Phase 4 fix-cycles avoided.
|
|
14
14
|
|
|
@@ -16,7 +16,7 @@ This is the **evaluator-optimizer pattern** from Anthropic's "Building Effective
|
|
|
16
16
|
|
|
17
17
|
| Source | What it provides |
|
|
18
18
|
|---|---|
|
|
19
|
-
| Current worktree | Phase
|
|
19
|
+
| Current worktree | Phase 2's final edit set |
|
|
20
20
|
| `git diff origin/<base>...HEAD` | The diff under critique |
|
|
21
21
|
| `rules/code-style.md` | Language/structure rules |
|
|
22
22
|
| `rules/tdd.md` | Test-first contract |
|
|
@@ -126,7 +126,7 @@ Generator MUST fix all `blocking` items. `important` items SHOULD be fixed in ro
|
|
|
126
126
|
## What this agent does NOT do
|
|
127
127
|
|
|
128
128
|
- Does NOT propose architectural changes (that's Phase 1/2's job)
|
|
129
|
-
- Does NOT review for security depth (that's Phase
|
|
129
|
+
- Does NOT review for security depth (that's Phase 3 Reviewer 1 / security-auditor)
|
|
130
130
|
- Does NOT re-explore the codebase (use the existing diff and rules; no new exploration)
|
|
131
131
|
- Does NOT post comments to the PR (this runs in-pipeline; only `post-pr-review.sh` posts)
|
|
132
132
|
|
|
@@ -157,7 +157,7 @@ This command uses lazy loading for token efficiency. Read the relevant sub-file
|
|
|
157
157
|
- `$HOME/.claude/agents/backend-architect.md` - Backend/API architecture review (`preferredModel: fable`)
|
|
158
158
|
- `$HOME/.claude/agents/security-auditor.md` - Security audit (`preferredModel: opus`)
|
|
159
159
|
|
|
160
|
-
**Per-persona model routing:** Before each Agent dispatch, the orchestrator reads `preferredModel` from the persona file and exports `CLAUDE_CODE_SUBAGENT_MODEL` (Claude Code) / passes `--model` (Copilot CLI). Precedence: per-dispatch `PHASE_MODEL_OVERRIDE` > persona `preferredModel` > `fable` (falls back per `$HOME/.claude/multi-agent-refs/features/model-fallback.md`). Full contract: `skills/shared/core/multi-agent/SKILL.md#agent-dispatch--per-persona-model-routing-v610`.
|
|
160
|
+
**Per-persona model routing:** Before each Agent dispatch, the orchestrator reads `preferredModel` from the persona file and exports `CLAUDE_CODE_SUBAGENT_MODEL` (Claude Code) / passes `--model` (Copilot CLI). Precedence: per-dispatch `PHASE_MODEL_OVERRIDE` > a matching `prefs.global.modelRouting` rule (v19.0.0+, consulted only when the phase named no model, and only inside the Anthropic ladder because subagent dispatch belongs to the host) > persona `preferredModel` > `fable` (falls back per `$HOME/.claude/multi-agent-refs/features/model-fallback.md`). Full contract: `skills/shared/core/multi-agent/SKILL.md#agent-dispatch--per-persona-model-routing-v610`.
|
|
161
161
|
|
|
162
162
|
---
|
|
163
163
|
|
|
@@ -28,16 +28,16 @@ Cite a decision as `Locked <n> (<short label>)` so the category is inferable.
|
|
|
28
28
|
|
|
29
29
|
## Profile
|
|
30
30
|
|
|
31
|
-
Phase 0 Step 1b asks which analysis standard the document follows (Locked
|
|
31
|
+
Phase 0 Step 1b asks which analysis standard the document follows (Locked 31), and the answer selects the template. Both profiles read the same evidence: intake, fetching, repo evidence and convention extraction are shared, so the two cannot drift into two products.
|
|
32
32
|
|
|
33
33
|
| Profile | Template | Shape |
|
|
34
34
|
|---|---|---|
|
|
35
35
|
| `global` (default) | `analysis-template.md` | Development handoff, 23 sections. Business rules with Gherkin acceptance criteria, architecture plan, files to add, test plan. Zero-evidence sections drop (Locked 2). |
|
|
36
|
-
| `corporate` | `analysis-template-corporate.md` | Requirements document. `IG -> UC -> FG` spine with three traceability matrices, current and target state with impact analysis, then Technical Analysis and Development Analysis. The Part A backbone always renders, carrying `N/A` or `EKLENECEK` (Locked
|
|
36
|
+
| `corporate` | `analysis-template-corporate.md` | Requirements document. `IG -> UC -> FG` spine with three traceability matrices, current and target state with impact analysis, then Technical Analysis and Development Analysis. The Part A backbone always renders, carrying `N/A` or `EKLENECEK` (Locked 32). |
|
|
37
37
|
|
|
38
38
|
One run emits one profile. A missing input never blocks either profile: the gap is written as `EKLENECEK` and raised as a Section 20 open question rather than halting the run.
|
|
39
39
|
|
|
40
|
-
**Stack is optional** (Locked
|
|
40
|
+
**Stack is optional** (Locked 34). When no platform is selected the run still completes: everything that does not need a target repository renders in full, and only the development layer plus the Pass B projection are skipped, with a Section 20 row recording why. The output is a single file at `~/Desktop/multiAgentAnalysis/<feature-name>/<feature>.md` instead of one per repo: without a repo there is no working tree for the usual `analysis/` path to be relative to, and the current working directory is never written to. The Phase 3.5 picker shows the resolved path and accepts an override.
|
|
41
41
|
|
|
42
42
|
## Template
|
|
43
43
|
|
|
@@ -59,11 +59,11 @@ Full contract: `$HOME/.claude/multi-agent-refs/analysis/evidence.md`. Fetches ev
|
|
|
59
59
|
|
|
60
60
|
### Phase 2, 2a, 2b - Two-pass synthesis
|
|
61
61
|
|
|
62
|
-
Full contract: `$HOME/.claude/multi-agent-refs/analysis/synthesis.md`. Pass A builds the platform-agnostic concept layer; Phase 2a previews the resolved conventions for approval (Locked
|
|
62
|
+
Full contract: `$HOME/.claude/multi-agent-refs/analysis/synthesis.md`. Pass A builds the platform-agnostic concept layer; Phase 2a previews the resolved conventions for approval (Locked 25); Pass B projects each concept onto the selected platform with a footnote per filled cell (Locked 24).
|
|
63
63
|
|
|
64
64
|
### Phases 3, 3.2, 3.3, 3.5, 4, 5 - Render, review, publish, report
|
|
65
65
|
|
|
66
|
-
Full contract: `$HOME/.claude/multi-agent-refs/analysis/render.md`. Renders one markdown file per platform, runs the **required** `ai-common-toolkit:humanizer` pass, gates on `validate-analysis-doc.mjs` and on the `build-references.mjs --check` references coverage gate (Locked
|
|
66
|
+
Full contract: `$HOME/.claude/multi-agent-refs/analysis/render.md`. Renders one markdown file per platform, runs the **required** `ai-common-toolkit:humanizer` pass, gates on `validate-analysis-doc.mjs` and on the `build-references.mjs --check` references coverage gate (Locked 33), asks for the output destination, dispatches to Local / Confluence / Jira (a Jira issue receives a comment unless the user explicitly asks for the description, which is never overwritten without a backup and a confirmation), then reports and stops. The humanizer pass and the validator are required in every mode; a document that skipped either is not shippable.
|
|
67
67
|
|
|
68
68
|
### Resume contract
|
|
69
69
|
|
|
@@ -131,7 +131,7 @@ When `phase == "cancelled_at_pass_b_preview"`:
|
|
|
131
131
|
- The minimum possible output (per per-platform file) is `1. Scope` + `7. Development Plan` (both always-present).
|
|
132
132
|
- If Confluence or Jira POST returns 401 / 403 during Phase 4, surface the error and offer Local fallback (the local drafts in `/tmp/` are still on disk; copying them into the repo working tree is always available).
|
|
133
133
|
- The `analysis/` directory is not in `.gitignore`; the user can `git add analysis/` manually. No auto-commit.
|
|
134
|
-
- **Per-platform file naming**: `analysis/<feature>-<platform>.md`. The `<platform>` slug is lowercase, one of `ios | android | web | backend` for a repo-backed run, or `mobile | web` for the channels a repo-less run derives from its evidence (Locked
|
|
134
|
+
- **Per-platform file naming**: `analysis/<feature>-<platform>.md`. The `<platform>` slug is lowercase, one of `ios | android | web | backend` for a repo-backed run, or `mobile | web` for the channels a repo-less run derives from its evidence (Locked 34). `web` is the pre-`web` spelling and is still read back for older state and documents. The `<feature>` slug preserves the user's feature name with whitespace replaced by `-` (e.g. `User Profile` -> `UserProfile` or `Item-Status` depending on input shape; the renderer trims and de-duplicates dashes).
|
|
135
135
|
- **Standards binding (the Standards question)**: When `evidence.standards[]` is non-empty, every decision in Section 13 (Architecture Plan, corporate Section 17) must cite the binding source in its 13.7 Standards-binding table. The renderer enforces this by failing render if any architectural decision has no `cite:` reference; the user is prompted to either tighten the source or add a Risk row acknowledging the missing citation.
|
|
136
136
|
- **Firebase ingestion (the Firebase question)**: Console URLs are never fetched (auth-gated). Only `:names` and `:schema` inputs feed `evidence.firebase[]`. Section 11 Analytics (corporate Section 13) emits per-platform snippets but the events table itself is shared across all per-platform files (the rules / event vocabulary is one product invariant).
|
|
137
137
|
- **Wiki access fallback chain**: Phase 1 `wiki` fetcher tries (a) `git clone .wiki.git`, (b) `gh api repos/.../contents/<file>.md`, (c) raw `WebFetch` of the page URL. Only after all three fail does the entry land in `fetchErrors[]`.
|
|
@@ -19,7 +19,7 @@ Companion command to `/multi-agent:analysis`. Takes an `analysis/<feature>-<plat
|
|
|
19
19
|
- **Locked 6 (no auto-commit).** The command rewrites the doc file(s) but never runs `git add` or `git commit`.
|
|
20
20
|
- **Locked 7 (humanizer punctuation).** Every fragment this command writes into the doc uses ASCII punctuation only: no em-dash (U+2014), en-dash (U+2013), ellipsis (U+2026), curly quotes, or section sign. Diacritics are preserved verbatim (Turkish letters stay as-is; never ASCII-fold prose). Run the verification grep from `analysis.md` Phase 3 step 3 after the final save.
|
|
21
21
|
- **Locked 24 (Pass B footnote).** When a resolution overrides a convention cell in Section 13 (or any per-platform projection), the cell's footnote is rewritten to `^[user-override: resolved via analysis-resolve <date>]`.
|
|
22
|
-
- **Locked
|
|
22
|
+
- **Locked 29 (no MCP outside analysis phase).** This command makes NO Figma MCP calls, no `api.figma.com` requests, no `figma.com/design/...` fetches. A row that genuinely needs new design information gets only `Defer` plus a printed recommendation to re-run `/multi-agent:analysis` for that input. Repo reads and `~/.claude/lib/extract-conventions.sh` re-runs are allowed (they are local evidence, not design fetches).
|
|
23
23
|
|
|
24
24
|
## Engine
|
|
25
25
|
|
|
@@ -61,6 +61,6 @@ Inherited decisions: `$HOME/.claude/multi-agent-refs/analysis/locked.md`.
|
|
|
61
61
|
|
|
62
62
|
## Notes
|
|
63
63
|
|
|
64
|
-
- This command is downstream-safe: it edits only the analysis doc, so the Locked
|
|
64
|
+
- This command is downstream-safe: it edits only the analysis doc, so the Locked 29 contract (analysis doc as the sole design source for Phase 2+) is strengthened, not weakened - dev phases consume a doc with fewer open holes.
|
|
65
65
|
- The resolver is idempotent over `Karar verildi / Decided` rows: re-running skips them.
|
|
66
66
|
- When the session no longer holds `state.analysisSpec`, everything still works: evidence candidates fall back to what the doc itself cites, and repo candidates come from the Phase 1 subagent.
|
|
@@ -54,7 +54,7 @@ Phases 1-2 (Plan / Dev) are skipped by design - `ship` treats the current bran
|
|
|
54
54
|
|
|
55
55
|
## Phase execution (reuse the existing phase contracts)
|
|
56
56
|
|
|
57
|
-
- **Phase
|
|
57
|
+
- **Phase 3 Review** - run per `$HOME/.claude/multi-agent-refs/phases/phase-3-review.md` against the resolved diff: deterministic gates (Step 1.x), stack-specific parallel reviewers (Fable + Opus + Sonnet on Claude Code; GPT + Opus + Sonnet on Copilot CLI), Fable triage → `triage.accepted`. Blocking/important accepted findings:
|
|
58
58
|
- interactive: present them and ask (`AskUserQuestion`) whether to fix now (loop back through a minimal Phase-3-style TDD fix) or proceed;
|
|
59
59
|
- `autopilot` (or `prefs.global.resumeLocal.autoFix == true`): auto-fix accepted blocking/important findings, then re-review the fix, before advancing.
|
|
60
60
|
- **Phase 3 Verify gate** - the **automated success gate** (this is what "build+test success" means here; the interactive device user-test is `/multi-agent:manual-test`). Stack-aware: build via `figma-config.build` (iOS scheme / Android gradle / detected backend/web build) and run the existing test suite if present (`swift test` / `xcodebuild test` / `./gradlew test` / `pytest` / `npm test` / `vitest`). Require success to advance; on failure, surface logs and (interactive) stop or (autopilot) attempt a bounded fix loop. **If the repo has no tests, report "no tests present" - never fabricate test results.**
|
|
@@ -312,7 +312,7 @@ Per the `$HOME/.claude/multi-agent-refs/tracker-contract.md` tokens contract, af
|
|
|
312
312
|
bash $HOME/.claude/scripts/phase-tracker.sh tokens 4 <input_count> <output_count>
|
|
313
313
|
```
|
|
314
314
|
|
|
315
|
-
Standalone `/multi-agent:review` runs use phase id
|
|
315
|
+
Standalone `/multi-agent:review` runs use phase id 3 (matches Phase 3 Review in the full pipeline) so cost aggregation stays consistent.
|
|
316
316
|
|
|
317
317
|
## Input matrix
|
|
318
318
|
|
|
@@ -23,7 +23,7 @@ Read `$HOME/.claude/multi-agent-refs/analysis/review.md` and execute it:
|
|
|
23
23
|
|
|
24
24
|
## Why it cites Locked decisions
|
|
25
25
|
|
|
26
|
-
The analysis flow already declares 36 Locked decisions and two deterministic validators. A reviewer that says "I would have written this differently" gives the author nothing to act on; one that says "Locked
|
|
26
|
+
The analysis flow already declares 36 Locked decisions and two deterministic validators. A reviewer that says "I would have written this differently" gives the author nothing to act on; one that says "Locked 33: the Confluence page is in the evidence record but not in Section 21" gives them a fix and a reason. Findings that map to no rule are still allowed, but they are marked as judgement, not dressed up as a violation.
|
|
27
27
|
|
|
28
28
|
## What it never does
|
|
29
29
|
|