@mmerterden/multi-agent-pipeline 11.2.0 → 11.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +2 -2
  3. package/docs/FIGMA_PIPELINE.md +12 -25
  4. package/docs/architecture.md +3 -5
  5. package/docs/features.md +8 -8
  6. package/install/_dev-only-files.mjs +0 -6
  7. package/install/claude.mjs +33 -15
  8. package/install/copilot.mjs +16 -14
  9. package/install/templates/copilot-instructions.md +3 -3
  10. package/package.json +1 -1
  11. package/pipeline/commands/{multi-agent.md → multi-agent/SKILL.md} +39 -39
  12. package/pipeline/commands/multi-agent/{analysis.md → analysis/SKILL.md} +18 -18
  13. package/pipeline/commands/multi-agent/{analysis-resolve.md → analysis-resolve/SKILL.md} +4 -4
  14. package/pipeline/commands/multi-agent/{autopilot.md → autopilot/SKILL.md} +4 -4
  15. package/pipeline/commands/multi-agent/{build-optimize.md → build-optimize/SKILL.md} +1 -1
  16. package/pipeline/commands/multi-agent/{channels.md → channels/SKILL.md} +12 -12
  17. package/pipeline/commands/multi-agent/{dev.md → dev/SKILL.md} +4 -4
  18. package/pipeline/commands/multi-agent/{dev-autopilot.md → dev-autopilot/SKILL.md} +4 -4
  19. package/pipeline/commands/multi-agent/{dev-local.md → dev-local/SKILL.md} +5 -5
  20. package/pipeline/commands/multi-agent/{dev-local-autopilot.md → dev-local-autopilot/SKILL.md} +4 -4
  21. package/pipeline/commands/multi-agent/{finish.md → finish/SKILL.md} +6 -6
  22. package/pipeline/commands/multi-agent/{generate.md → generate/SKILL.md} +3 -3
  23. package/pipeline/commands/multi-agent/{help.md → help/SKILL.md} +4 -4
  24. package/pipeline/commands/multi-agent/{local.md → local/SKILL.md} +5 -5
  25. package/pipeline/commands/multi-agent/{local-autopilot.md → local-autopilot/SKILL.md} +5 -5
  26. package/pipeline/commands/multi-agent/{manual-test.md → manual-test/SKILL.md} +1 -1
  27. package/pipeline/commands/multi-agent/refactor/SKILL.md +257 -0
  28. package/pipeline/commands/multi-agent/{resume.md → resume/SKILL.md} +1 -1
  29. package/pipeline/commands/multi-agent/{review.md → review/SKILL.md} +5 -5
  30. package/pipeline/commands/multi-agent/{setup.md → setup/SKILL.md} +1 -1
  31. package/pipeline/commands/multi-agent/{sync.md → sync/SKILL.md} +20 -58
  32. package/pipeline/{commands/multi-agent → multi-agent-refs}/_account-picker.md +2 -2
  33. package/pipeline/{commands/multi-agent → multi-agent-refs}/_dev-context.md +2 -2
  34. package/pipeline/{commands/multi-agent → multi-agent-refs}/_repo-picker.md +2 -2
  35. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/android-guide.md +1 -1
  36. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/jira.md +1 -1
  37. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/wiki.md +7 -7
  38. package/pipeline/multi-agent-refs/component-dispatch.md +92 -0
  39. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/cross-cli-contract.md +10 -77
  40. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/verify-by-test.md +1 -1
  41. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/generate-issue.md +2 -2
  42. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/issue-jira-triad.md +1 -1
  43. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/keychain.md +1 -1
  44. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/log-format.md +1 -1
  45. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/modes.md +2 -2
  46. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/operations.md +1 -1
  47. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-0-init.md +10 -10
  48. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-1-analysis.md +6 -6
  49. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-2-planning.md +3 -3
  50. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-3-dev.md +10 -10
  51. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-4-review.md +8 -8
  52. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-5-test.md +3 -3
  53. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-6-commit.md +4 -4
  54. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-7-report.md +6 -6
  55. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases.md +12 -12
  56. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/progress-contract.md +4 -4
  57. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/swiftui-guide.md +1 -1
  58. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/tracker-contract.md +3 -3
  59. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/wiki-capture.md +4 -4
  60. package/pipeline/preferences-template.json +17 -1
  61. package/pipeline/rules/figma-pipeline.md +2 -2
  62. package/pipeline/schemas/prefs.schema.json +0 -34
  63. package/pipeline/scripts/README.md +1 -3
  64. package/pipeline/scripts/fixtures/install-layout.tsv +6 -5
  65. package/pipeline/scripts/gen-mode-dispatch.mjs +3 -3
  66. package/pipeline/scripts/phase-banner.sh +2 -2
  67. package/pipeline/scripts/review-scope.mjs +94 -0
  68. package/pipeline/scripts/scan-agent-config.sh +2 -2
  69. package/pipeline/scripts/smoke-agent-log-cost.sh +1 -1
  70. package/pipeline/scripts/smoke-agent-model-routing.sh +4 -4
  71. package/pipeline/scripts/smoke-autopilot-circuit-breaker.sh +2 -2
  72. package/pipeline/scripts/smoke-channels-approval-gate.sh +2 -2
  73. package/pipeline/scripts/smoke-channels-flow.sh +5 -5
  74. package/pipeline/scripts/smoke-clarify.sh +1 -1
  75. package/pipeline/scripts/smoke-commands-skills-parity.sh +3 -3
  76. package/pipeline/scripts/smoke-community-gates.sh +1 -1
  77. package/pipeline/scripts/smoke-compliance-skills.sh +2 -2
  78. package/pipeline/scripts/smoke-cost-summary.sh +1 -1
  79. package/pipeline/scripts/smoke-cross-cli-behavior.sh +17 -43
  80. package/pipeline/scripts/smoke-cross-phase-cohesion.sh +1 -1
  81. package/pipeline/scripts/smoke-dev-critic.sh +1 -1
  82. package/pipeline/scripts/smoke-diff-explain.sh +1 -1
  83. package/pipeline/scripts/smoke-diff-risk.sh +1 -1
  84. package/pipeline/scripts/smoke-evidence-gate.sh +1 -1
  85. package/pipeline/scripts/smoke-figma-dispatch.sh +46 -57
  86. package/pipeline/scripts/smoke-gate-hooks.sh +1 -1
  87. package/pipeline/scripts/smoke-generate-issue.sh +8 -8
  88. package/pipeline/scripts/smoke-handoff-contract.sh +3 -3
  89. package/pipeline/scripts/smoke-identity-isolation.sh +2 -2
  90. package/pipeline/scripts/smoke-intent-guard.sh +1 -1
  91. package/pipeline/scripts/smoke-issue-comment-template.sh +2 -2
  92. package/pipeline/scripts/smoke-issue-jira-triad.sh +4 -4
  93. package/pipeline/scripts/smoke-language-axis.sh +6 -6
  94. package/pipeline/scripts/smoke-learnings-ledger.sh +3 -3
  95. package/pipeline/scripts/smoke-mode-dispatch-drift.sh +16 -16
  96. package/pipeline/scripts/smoke-model-fallback.sh +3 -3
  97. package/pipeline/scripts/smoke-multi-repo-integration.sh +2 -2
  98. package/pipeline/scripts/smoke-multi-repo-worktree.sh +1 -1
  99. package/pipeline/scripts/smoke-no-token-prompt.sh +5 -5
  100. package/pipeline/scripts/smoke-phase-0-multi-repo.sh +1 -1
  101. package/pipeline/scripts/smoke-phase-6-multi.sh +1 -1
  102. package/pipeline/scripts/smoke-phase4-gates.sh +45 -0
  103. package/pipeline/scripts/smoke-plan-approval-gate.sh +5 -5
  104. package/pipeline/scripts/smoke-plan-todos.sh +3 -3
  105. package/pipeline/scripts/smoke-pr-review-actions.sh +3 -3
  106. package/pipeline/scripts/smoke-prefs-language.sh +1 -1
  107. package/pipeline/scripts/smoke-progress-contract.sh +2 -2
  108. package/pipeline/scripts/smoke-push-retry.sh +1 -1
  109. package/pipeline/scripts/smoke-repo-map.sh +2 -2
  110. package/pipeline/scripts/smoke-shadow-git.sh +1 -1
  111. package/pipeline/scripts/smoke-skill-authoring.sh +4 -9
  112. package/pipeline/scripts/smoke-tasklist-ordering.sh +10 -10
  113. package/pipeline/scripts/smoke-test-gap.sh +1 -1
  114. package/pipeline/scripts/smoke-token-budget.sh +1 -1
  115. package/pipeline/scripts/smoke-token-preflight.sh +2 -2
  116. package/pipeline/scripts/smoke-tracker-contract.sh +13 -13
  117. package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +5 -5
  118. package/pipeline/scripts/smoke-triage-memory.sh +2 -2
  119. package/pipeline/scripts/smoke-update-check.sh +1 -1
  120. package/pipeline/scripts/smoke-url-enrichment.sh +2 -2
  121. package/pipeline/scripts/smoke-validator-gates.sh +1 -1
  122. package/pipeline/scripts/smoke-verify-by-test.sh +3 -3
  123. package/pipeline/scripts/smoke-wiki-integration.sh +9 -33
  124. package/pipeline/scripts/smoke-work-summary.sh +1 -1
  125. package/pipeline/scripts/smoke-worktree-path-convention.sh +4 -4
  126. package/pipeline/scripts/test-integrity-gate.mjs +83 -0
  127. package/pipeline/scripts/uninstall.mjs +2 -2
  128. package/pipeline/skills/.skill-manifest.json +40 -160
  129. package/pipeline/skills/.skills-index.json +3 -372
  130. package/pipeline/skills/shared/README.md +1 -1
  131. package/pipeline/skills/shared/core/multi-agent/SKILL.md +1 -1
  132. package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +2 -2
  133. package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +3 -3
  134. package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +1 -1
  135. package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +1 -1
  136. package/pipeline/skills/shared/core/multi-agent-finish/SKILL.md +1 -1
  137. package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +1 -1
  138. package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +116 -51
  139. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +8 -30
  140. package/pipeline/skills/shared/external/compose-components/SKILL.md +14 -14
  141. package/pipeline/skills/skills-index.md +2 -43
  142. package/pipeline/commands/multi-agent/refactor.md +0 -188
  143. package/pipeline/commands/multi-agent/refs/component-dispatch.md +0 -92
  144. package/pipeline/scripts/smoke-existing-discovery-gate.sh +0 -71
  145. package/pipeline/scripts/smoke-figma-android-parity.sh +0 -148
  146. package/pipeline/scripts/smoke-figma-credential-store.sh +0 -105
  147. package/pipeline/scripts/smoke-figma-cross-cli-inventory.sh +0 -177
  148. package/pipeline/scripts/smoke-figma-sync.sh +0 -149
  149. package/pipeline/scripts/smoke-sync-delegation.sh +0 -74
  150. package/pipeline/skills/figma-android/README.md +0 -38
  151. package/pipeline/skills/figma-android/figma-component-code-connect/SKILL.md +0 -62
  152. package/pipeline/skills/figma-android/figma-component-implement/SKILL.md +0 -158
  153. package/pipeline/skills/figma-android/figma-component-test/SKILL.md +0 -120
  154. package/pipeline/skills/figma-android/figma-component-wiki/SKILL.md +0 -35
  155. package/pipeline/skills/figma-android/figma-to-component/SKILL.md +0 -124
  156. package/pipeline/skills/figma-common/README.md +0 -64
  157. package/pipeline/skills/figma-common/figma-bottom-sheets/SKILL.md +0 -152
  158. package/pipeline/skills/figma-common/figma-cli-iterate/SKILL.md +0 -282
  159. package/pipeline/skills/figma-common/figma-cli-iterate-mend/SKILL.md +0 -503
  160. package/pipeline/skills/figma-common/figma-cli-lean-iterate/SKILL.md +0 -288
  161. package/pipeline/skills/figma-common/figma-cli-skip/SKILL.md +0 -362
  162. package/pipeline/skills/figma-common/figma-commit/COMMON_REBASE.md +0 -206
  163. package/pipeline/skills/figma-common/figma-commit/REVIEW.md +0 -337
  164. package/pipeline/skills/figma-common/figma-commit/SKILL.md +0 -216
  165. package/pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md +0 -223
  166. package/pipeline/skills/figma-common/figma-component-start/SKILL.md +0 -251
  167. package/pipeline/skills/figma-common/figma-component-status-update/SKILL.md +0 -78
  168. package/pipeline/skills/figma-common/figma-evolve-component/SKILL.md +0 -61
  169. package/pipeline/skills/figma-common/figma-fix/SKILL.md +0 -321
  170. package/pipeline/skills/figma-common/figma-form-integration/SKILL.md +0 -542
  171. package/pipeline/skills/figma-common/figma-issue/SKILL.md +0 -750
  172. package/pipeline/skills/figma-common/figma-iterate/SKILL.md +0 -208
  173. package/pipeline/skills/figma-common/figma-iteration-commit/SKILL.md +0 -1020
  174. package/pipeline/skills/figma-common/figma-mend/SKILL.md +0 -331
  175. package/pipeline/skills/figma-common/figma-navigation/SKILL.md +0 -156
  176. package/pipeline/skills/figma-common/figma-overlays/SKILL.md +0 -142
  177. package/pipeline/skills/figma-common/figma-price-integration/SKILL.md +0 -398
  178. package/pipeline/skills/figma-common/figma-remote-mcp-auth/SKILL.md +0 -104
  179. package/pipeline/skills/figma-common/figma-review/SKILL.md +0 -400
  180. package/pipeline/skills/figma-common/figma-setup/SKILL.md +0 -514
  181. package/pipeline/skills/figma-common/figma-setup/scripts/fetch-mcp-token.py +0 -592
  182. package/pipeline/skills/figma-common/figma-skip/SKILL.md +0 -129
  183. package/pipeline/skills/figma-common/figma-ui-patterns/SKILL.md +0 -105
  184. package/pipeline/skills/figma-common/figma-ui-patterns/patterns/animated-gradient-border.md +0 -116
  185. package/pipeline/skills/figma-common/figma-utility/SKILL.md +0 -274
  186. package/pipeline/skills/figma-common/figma-utility/scripts/figma-utility.py +0 -808
  187. package/pipeline/skills/figma-common/figma-validate/SKILL.md +0 -633
  188. package/pipeline/skills/figma-common/performance-iteration-commit-all/SKILL.md +0 -716
  189. package/pipeline/skills/figma-common/performance-review-next/SKILL.md +0 -238
  190. package/pipeline/skills/figma-common/performance-start/SKILL.md +0 -430
  191. package/pipeline/skills/figma-common/performance-swiftui/SKILL.md +0 -706
  192. package/pipeline/skills/figma-common/performance-tour/SKILL.md +0 -423
  193. package/pipeline/skills/figma-ios/REVIEW_CHECKLIST.md +0 -67
  194. package/pipeline/skills/figma-ios/figma-component-code-connect/SKILL.md +0 -178
  195. package/pipeline/skills/figma-ios/figma-component-implement/SKILL.md +0 -184
  196. package/pipeline/skills/figma-ios/figma-component-test/SKILL.md +0 -219
  197. package/pipeline/skills/figma-ios/figma-component-wiki/SKILL.md +0 -274
  198. package/pipeline/skills/figma-ios/figma-to-component/SKILL.md +0 -416
  199. package/pipeline/skills/figma-ios/figma-to-component/halt-return-protocol.md +0 -57
  200. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-0-init.md +0 -307
  201. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1-gathering.md +0 -119
  202. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md +0 -174
  203. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md +0 -333
  204. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2a-testing-identifiers.md +0 -368
  205. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2b-localization.md +0 -393
  206. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2c-accessibility.md +0 -617
  207. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2d-analytics.md +0 -352
  208. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3-orchestrator.md +0 -337
  209. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3a-location.md +0 -206
  210. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3b-tokens.md +0 -235
  211. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3c-nested.md +0 -214
  212. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3d-patterns.md +0 -902
  213. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3e-assets.md +0 -156
  214. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3f-utilities.md +0 -175
  215. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3g-property-coverage.md +0 -176
  216. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3h-variant-config.md +0 -333
  217. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4-orchestrator.md +0 -412
  218. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4a-configuration.md +0 -336
  219. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4b-view.md +0 -705
  220. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4c-documentation.md +0 -332
  221. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4d-preview.md +0 -380
  222. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4e-modifiers.md +0 -262
  223. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5-orchestrator.md +0 -482
  224. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5a-viewinspector.md +0 -274
  225. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5b-snapshot.md +0 -636
  226. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5c-unit.md +0 -142
  227. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md +0 -547
  228. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7-wiki.md +0 -39
  229. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-confluence-generate.md +0 -659
  230. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-wiki-generate.md +0 -580
  231. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-8-cleanup.md +0 -51
  232. package/pipeline/skills/figma-ios/figma-to-component/reference/accessibility.md +0 -183
  233. package/pipeline/skills/figma-ios/figma-to-component/reference/analytics-events.md +0 -64
  234. package/pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md +0 -531
  235. package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-api.md +0 -89
  236. package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-xhtml.md +0 -155
  237. package/pipeline/skills/figma-ios/figma-to-component/reference/figma-to-swiftui-effects.md +0 -196
  238. package/pipeline/skills/figma-ios/figma-to-component/reference/halt-return-protocol.md +0 -57
  239. package/pipeline/skills/figma-ios/figma-to-component/reference/localization-naming.md +0 -89
  240. package/pipeline/skills/figma-ios/figma-to-component/reference/macros.md +0 -227
  241. package/pipeline/skills/figma-ios/figma-to-component/reference/missing-tokens.md +0 -157
  242. package/pipeline/skills/figma-ios/figma-to-component/reference/orchestrator-discipline.md +0 -90
  243. package/pipeline/skills/figma-ios/figma-to-component/reference/registry.md +0 -116
  244. package/pipeline/skills/figma-ios/figma-to-component/reference/remote-mcp-script.md +0 -153
  245. package/pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md +0 -130
  246. package/pipeline/skills/figma-ios/figma-to-component/reference/scripts-inventory.md +0 -218
  247. package/pipeline/skills/figma-ios/figma-to-component/reference/snapshot-testing.md +0 -188
  248. package/pipeline/skills/figma-ios/figma-to-component/reference/subcomponent-graph.md +0 -93
  249. package/pipeline/skills/figma-ios/figma-to-component/reference/testing-identifiers-naming.md +0 -98
  250. package/pipeline/skills/figma-ios/figma-to-component/reference/tools.md +0 -261
  251. package/pipeline/skills/figma-ios/figma-to-component/reference/viewinspector.md +0 -147
  252. package/pipeline/skills/figma-ios/figma-to-component/reference/wiki-to-confluence-mapping.md +0 -182
  253. package/pipeline/skills/figma-ios/figma-to-component/scripts/apply-author-login-map.py +0 -185
  254. package/pipeline/skills/figma-ios/figma-to-component/scripts/backfill-status.py +0 -609
  255. package/pipeline/skills/figma-ios/figma-to-component/scripts/build-author-registry.py +0 -332
  256. package/pipeline/skills/figma-ios/figma-to-component/scripts/bulk-sync-issues.py +0 -261
  257. package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-data-gather.py +0 -184
  258. package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-publish.sh +0 -188
  259. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status-upload.py +0 -768
  260. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status.py +0 -191
  261. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-data-gather.py +0 -420
  262. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.example.json +0 -9
  263. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-publish.py +0 -336
  264. package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-subcomponent-graph.py +0 -391
  265. package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-update.py +0 -292
  266. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/__init__.py +0 -1
  267. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/issue_sync_propagate.py +0 -93
  268. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/registry_writer.py +0 -299
  269. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_backfill_status.py +0 -343
  270. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update.py +0 -206
  271. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update_http.py +0 -149
  272. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_phase_clis.py +0 -281
  273. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_registry_writer.py +0 -332
  274. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_issue.py +0 -176
  275. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_review.py +0 -98
  276. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue.py +0 -298
  277. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue_gh.py +0 -195
  278. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py +0 -1298
  279. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase2-finalize.py +0 -228
  280. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase3-scripts.py +0 -1089
  281. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase4-finalize.py +0 -141
  282. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase5-finalize.py +0 -106
  283. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase6-finalize.py +0 -162
  284. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase7-finalize.py +0 -105
  285. package/pipeline/skills/figma-ios/figma-to-component/scripts/register-icons-codeconnect.py +0 -179
  286. package/pipeline/skills/figma-ios/figma-to-component/scripts/remote-mcp-fetch.py +0 -260
  287. package/pipeline/skills/figma-ios/figma-to-component/scripts/resolve-author-logins.py +0 -260
  288. package/pipeline/skills/figma-ios/figma-to-component/scripts/run-uicomponents-tests.sh +0 -86
  289. package/pipeline/skills/figma-ios/figma-to-component/scripts/sidebar-generator.py +0 -321
  290. package/pipeline/skills/figma-ios/figma-to-component/scripts/update-issue-from-registry.py +0 -1470
  291. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase4.sh +0 -176
  292. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase6.sh +0 -147
  293. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase7a.py +0 -629
  294. /package/pipeline/commands/multi-agent/{delete.md → delete/SKILL.md} +0 -0
  295. /package/pipeline/commands/multi-agent/{diff-explain.md → diff-explain/SKILL.md} +0 -0
  296. /package/pipeline/commands/multi-agent/{garbage-collect.md → garbage-collect/SKILL.md} +0 -0
  297. /package/pipeline/commands/multi-agent/{issue.md → issue/SKILL.md} +0 -0
  298. /package/pipeline/commands/multi-agent/{jira.md → jira/SKILL.md} +0 -0
  299. /package/pipeline/commands/multi-agent/{kill.md → kill/SKILL.md} +0 -0
  300. /package/pipeline/commands/multi-agent/{language.md → language/SKILL.md} +0 -0
  301. /package/pipeline/commands/multi-agent/{log.md → log/SKILL.md} +0 -0
  302. /package/pipeline/commands/multi-agent/{prune-logs.md → prune-logs/SKILL.md} +0 -0
  303. /package/pipeline/commands/multi-agent/{purge.md → purge/SKILL.md} +0 -0
  304. /package/pipeline/commands/multi-agent/{scan.md → scan/SKILL.md} +0 -0
  305. /package/pipeline/commands/multi-agent/{search.md → search/SKILL.md} +0 -0
  306. /package/pipeline/commands/multi-agent/{stack.md → stack/SKILL.md} +0 -0
  307. /package/pipeline/commands/multi-agent/{status.md → status/SKILL.md} +0 -0
  308. /package/pipeline/commands/multi-agent/{test.md → test/SKILL.md} +0 -0
  309. /package/pipeline/commands/multi-agent/{update.md → update/SKILL.md} +0 -0
  310. /package/pipeline/{commands/multi-agent → multi-agent-refs}/_input-parser.md +0 -0
  311. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/analysis-template.md +0 -0
  312. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/audit-guide.md +0 -0
  313. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/backend-guide.md +0 -0
  314. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/confluence.md +0 -0
  315. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/issue-comment.md +0 -0
  316. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr-review-actions.md +0 -0
  317. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr.md +0 -0
  318. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/conventions-defaults.md +0 -0
  319. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/autopilot-circuit-breaker.md +0 -0
  320. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/dev-critic.md +0 -0
  321. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/external-context-injection.md +0 -0
  322. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/model-fallback.md +0 -0
  323. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/plan-todos.md +0 -0
  324. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/prior-fix-detection.md +0 -0
  325. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/repo-map.md +0 -0
  326. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/shadow-git.md +0 -0
  327. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/frontend-guide.md +0 -0
  328. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/knowledge.md +0 -0
  329. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/multi-repo-integration-build.md +0 -0
  330. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/picker-contract.md +0 -0
  331. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/rules.md +0 -0
@@ -1,333 +0,0 @@
1
- # PHASE 3H - Variant Property Configuration Analysis
2
-
3
- Analyze how Figma variant/state properties (booleans, instance swaps) map to Swift configuration types.
4
- Detects when Figma's boolean-only exposure is insufficient for a sub-component's actual configuration needs.
5
-
6
- required - always execute this phase.
7
- PARALLEL WITH: Phase 3A, 3B, 3C, 3E, 3F (all read from pass1/ independently)
8
- MUST COMPLETE BEFORE: Phase 3D (which consumes this output)
9
-
10
- ---
11
-
12
- ## PRE-CHECK
13
-
14
- ```
15
- Read: {artifactPath}/pass1/component_properties.json
16
- Read: {artifactPath}/pass1/code_connect_map_response.json
17
- Read: {artifactPath}/IMPLEMENTATION_HISTORY.md
18
- ```
19
-
20
- Extract: `componentName`, `artifactPath`.
21
-
22
- If any required file is missing:
23
-
24
- ```
25
- STATUS: HALT
26
- PHASE: phase-3h
27
- GATE: PRE_CHECK
28
- REASON: Required Phase 1 artifacts missing.
29
- COMPLETED_GATES: []
30
- ARTIFACTS_CREATED: none
31
- USER_ACTION_REQUIRED: Run Phase 1 first to gather Figma data.
32
- ```
33
-
34
- ---
35
-
36
- ## GATE 1: INDEX_CODE_CONNECT_MAP
37
-
38
- Parse `code_connect_map_response.json` and classify every entry:
39
-
40
- | Entry Pattern | Classification |
41
- |---|---|
42
- | `label` = our platform (SwiftUI) AND no `componentName` AND `snippet` matches `Image.xxx` | `ICON` |
43
- | `label` = our platform AND `componentName` present AND `source` URL present | `SUBCOMPONENT` |
44
- | `label` ≠ our platform (e.g., Compose, React) | `CROSS_PLATFORM` - ignore |
45
-
46
- Build a lookup: `{ nodeId → { classification, componentName?, source?, snippet } }`
47
-
48
- If code_connect_map is empty or missing → set `codeConnectAvailable = false`. Continue - all booleans will be `UNCLASSIFIED` and 3D handles them.
49
-
50
- ---
51
-
52
- ## GATE 2: CLASSIFY_BOOLEAN_PROPERTIES
53
-
54
- For each entry in `booleanProperties` from `component_properties.json`, walk this decision tree:
55
-
56
- ### Step 1: Check for paired Instance Swap
57
-
58
- Does a `nestedComponents` entry share the same base name?
59
- - Boolean `"Left Icon"` ↔ nestedComponent `"↪ Left Icon#965:54"` → **paired**
60
-
61
- If paired with INSTANCE_SWAP → go to Step 2.
62
- If not paired → go to Step 3.
63
-
64
- ### Step 2: Resolve paired Bool + InstanceSwap
65
-
66
- Look up the instance swap's nodes in the code_connect_map index (GATE 1):
67
-
68
- | code_connect_map result | Classification | Notes |
69
- |---|---|---|
70
- | Found as `ICON` (`Image.xxx` snippet) | `ICON_BOOLEAN_GATED` | Swift type resolved in GATE 3 |
71
- | Found as `SUBCOMPONENT` (`componentName` + `source`) | `KNOWN_SUBCOMPONENT` | Swift type resolved in GATE 3 |
72
- | Not found in code_connect_map | `UNMAPPED_SUBCOMPONENT` | → **HALT** |
73
-
74
- **Node matching**: The instance swap's `nodeId` from `nestedComponents` is the definition ID. Variant-specific instance IDs appear in code_connect_map. Match by searching for code_connect_map entries whose `data-name` (from surrounding context) corresponds to the instance swap name. If ambiguous, check ALL code_connect_map ICON/SUBCOMPONENT entries - group by snippet pattern and correlate with the instance swap slot.
75
-
76
- ### Step 3: Resolve unpaired Boolean
77
-
78
- **3a. Check for paired Text Slot:**
79
- Does a `textSlots` entry share the same base name?
80
- - Boolean `"Paragraph"` ↔ textSlot `"↪ Paragraph#965:56"` → **paired**
81
-
82
- If paired → classify as `CONTENT_LEAF`.
83
-
84
- **3b. Check code_connect_map for sub-component:**
85
- Are there code_connect_map entries classified as `SUBCOMPONENT` whose `componentName` matches the boolean's semantic meaning?
86
- - Boolean `"Text Link"` → code_connect_map has entries with `componentName: "Textlink"` → **match**
87
-
88
- If matched → classify as `KNOWN_SUBCOMPONENT`.
89
-
90
- **3c. Otherwise:**
91
- Classify as `UNCLASSIFIED`. Phase 3D will determine if this is a section toggle, decorative leaf, or behavioral bool using design_context HTML structure analysis.
92
-
93
- ### Step 4: Check for Repeating Patterns
94
-
95
- Booleans that form a numbered series (e.g., `"List Item 1"`, `"List Item 2"`, ..., `"List Item 5"`) paired with corresponding text slots → classify all as `REPEATING_PATTERN_MEMBER`.
96
-
97
- Their container boolean (e.g., `"List"`) → classify as `REPEATING_PATTERN_CONTAINER`.
98
-
99
- ### Step 5: Check for Paired Action Sub-Component
100
-
101
- For each `KNOWN_SUBCOMPONENT` classified in Step 2 or 3b, determine if the sub-component semantically requires a user action (closure):
102
-
103
- **Signals for action pairing:**
104
- - Sub-component is a button (TurkishButton, IconButton, TextLink, etc.)
105
- - Sub-component is an interactive element (link, toggle, tap target)
106
- - The boolean-gated element in Figma represents a tappable area
107
-
108
- **Signals against action pairing:**
109
- - Sub-component is display-only (badge, label, price section, indicator)
110
- - Sub-component shows information without user interaction
111
-
112
- If action pairing detected → reclassify as `PAIRED_ACTION_SUBCOMPONENT`.
113
-
114
- This classification tells downstream phases that:
115
- 1. The sub-component needs both data (config props) and a closure (action)
116
- 2. These must be paired at the call site - one without the other is nonsensical
117
- 3. A paired modifier pattern is required (not separate config prop + closure)
118
-
119
- ---
120
-
121
- ## GATE 3: RESOLVE_SWIFT_TYPES
122
-
123
- For each classified boolean, determine the Swift type:
124
-
125
- ### ICON_BOOLEAN_GATED
126
-
127
- Analyze whether the icon has a **computed default** that varies by component state:
128
-
129
- - Read the icon `snippet` values from code_connect_map entries across different variant instances
130
- - If ALL entries show the same `Image.xxx` value BUT the icon semantically correlates with a variant enum (e.g., `Image.warningCircle` correlates with `Feedback.warning`), check if the component logically needs different icons per variant state
131
- - If the icon default is **dynamic** (varies by variant state or is computed internally) → `Optional3<Image>`
132
- - `.default` = component computes the icon from its own state
133
- - `.none` = explicitly hidden
134
- - `.some(Image)` = custom override
135
- - If the icon default is **static** (always the same, no variant dependency) → `Image?`
136
- - `nil` = hidden
137
- - `Image(...)` = shown
138
-
139
- **Signals for dynamic default:**
140
- - Icon name contains the variant value (e.g., `warningCircle` + variant `Feedback` has `Warning`)
141
- - Component has multiple feedback/state/type variants that typically drive icon changes
142
- - The old/discarded implementation (if mend mode) used a three-state or computed icon pattern
143
-
144
- **Signals for static default:**
145
- - Icon is generic (e.g., `caretDown`, `chevronRight`) with no variant correlation
146
- - Icon appears in ALL variants identically with no semantic relationship to variant values
147
-
148
- **When uncertain:** Prefer `Optional3<Image>` - it's strictly more expressive than `Image?` and never wrong. The consumer can always use `.default` instead of being forced to know the internal default.
149
-
150
- ### KNOWN_SUBCOMPONENT
151
-
152
- 1. Extract `componentName` and `source` from code_connect_map
153
- 2. Check if `{ComponentName}Configuration.swift` exists in the codebase:
154
- ```
155
- Glob: Sources/UIComponents/**/{ComponentName}Configuration.swift
156
- ```
157
- 3. **Filter sub-component props - static vs dynamic:**
158
-
159
- Read the sub-component's Configuration (or init for SIMPLE). For each property, determine:
160
- - **Dynamic**: Content props that the caller controls (title, text, label, description, icon when context-dependent). These carry meaning unique to each usage.
161
- - **Static**: Styling/layout props that the parent component dictates (style, size, colorTheme, iconPosition). These are internal design decisions - same for every instance of this sub-component within the parent.
162
-
163
- **Rule:** If a prop's value is fixed by the parent's design (e.g., secondary button always uses `style: .ghost, size: .default`) → static. If a prop carries caller-specific content → dynamic.
164
-
165
- 4. Resolve based on dynamic prop count:
166
-
167
- | Dynamic Props | Swift Type | Notes |
168
- |---|---|---|
169
- | 0 | `Bool?` or just the boolean presence | Sub-component is fully static, parent hardcodes everything |
170
- | 1 | Unwrap to the prop type (e.g., `String?`) | Single dynamic prop, nil = hidden |
171
- | 2+ | Mini config struct (e.g., `PriceConfiguration?`) | Multiple dynamic props grouped, nil = hidden |
172
- | Component doesn't exist | **HALT** | Sub-component must be implemented first |
173
-
174
- **Mini config structs** contain ONLY the dynamic props - static props are NOT exposed:
175
- ```swift
176
- // TurkishButton has 6 props, but in BottomActions context only title is dynamic:
177
- // → secondaryButtonTitle: String? (not TurkishButtonConfiguration?)
178
-
179
- // PriceSection has 5 props, 4 are dynamic, 1 (textStyle) is static:
180
- // → priceConfiguration: PriceConfiguration?
181
- // struct PriceConfiguration { label, currency, wholeAmount, decimalAmount }
182
- ```
183
-
184
- Record the static props and their fixed values in the artifact - Phase 4B needs them to hardcode internally.
185
-
186
- ### PAIRED_ACTION_SUBCOMPONENT
187
-
188
- Same prop filtering as KNOWN_SUBCOMPONENT (steps 1-4 above), plus:
189
-
190
- 5. Record that a closure dependency is required alongside the config/prop
191
- 6. The `swiftType` follows the same 0/1/2+ dynamic prop rules
192
- 7. Add `pairedClosure` field to the artifact entry specifying the closure type (e.g., `() -> Void`)
193
-
194
- The pairing is expressed in Phase 4 as a **paired modifier** that binds data + closure at the call site:
195
- ```swift
196
- // 1 dynamic prop + action:
197
- func secondaryButton(_ title: String, action: @escaping () -> Void) -> Self
198
-
199
- // 2+ dynamic props + action:
200
- func actionLink(_ config: ActionLinkConfiguration, action: @escaping () -> Void) -> Self
201
-
202
- // 0 dynamic props + action (fully static sub-component, just needs closure):
203
- func dismissButton(action: @escaping () -> Void) -> Self
204
- ```
205
-
206
- ### CONTENT_LEAF
207
-
208
- Swift type: `String?` - `nil` = hidden. The boolean is dropped (merged into the optional).
209
-
210
- ### REPEATING_PATTERN_MEMBER / REPEATING_PATTERN_CONTAINER
211
-
212
- Swift type: merged into array (e.g., `[String]`, `[ItemRow]`). Empty array = hidden.
213
-
214
- ### UNMAPPED_SUBCOMPONENT
215
-
216
- Swift type: **cannot determine**.
217
-
218
- ```
219
- STATUS: HALT
220
- PHASE: phase-3h
221
- GATE: RESOLVE_SWIFT_TYPES
222
- REASON: Boolean "{boolName}" gates an unmapped sub-component with no code_connect_map entry.
223
- Figma key: {figmaKey}
224
- USER_ACTION_REQUIRED: The sub-component must be implemented and have Code Connect published first.
225
- Then re-run Phase 1 (to get updated code_connect_map) → re-run Phase 3H.
226
- ```
227
-
228
- ### UNCLASSIFIED
229
-
230
- Swift type: deferred to Phase 3D. Output `"swiftType": null, "deferredTo": "3D"`.
231
-
232
- ---
233
-
234
- ## GATE 4: WRITE_ARTIFACTS
235
-
236
- ### `{artifactPath}/pass3/04c_variant_config_analysis.json`
237
-
238
- ```json
239
- {
240
- "componentName": "{componentName}",
241
- "generated": "{ISO_DATE}",
242
- "codeConnectAvailable": true,
243
- "classifications": [
244
- {
245
- "figmaProperty": "{boolean name}",
246
- "figmaKey": "{figmaKey from component_properties}",
247
- "type": "BOOLEAN",
248
- "pairedWith": "{figmaKey of paired instance swap or text slot, or null}",
249
- "pairedType": "INSTANCE_SWAP | TEXT | null",
250
- "classification": "ICON_BOOLEAN_GATED | KNOWN_SUBCOMPONENT | PAIRED_ACTION_SUBCOMPONENT | CONTENT_LEAF | REPEATING_PATTERN_MEMBER | REPEATING_PATTERN_CONTAINER | UNMAPPED_SUBCOMPONENT | UNCLASSIFIED",
251
- "codeConnectSignal": "{what was found in code_connect_map, or 'absent'}",
252
- "subComponent": "{componentName from code_connect_map, if sub-component}",
253
- "configExists": true,
254
- "configType": "{Name}Configuration",
255
- "swiftType": "Optional3<Image> | String? | PriceConfiguration? | Bool | null",
256
- "swiftName": "{suggested Swift property name}",
257
- "dynamicProps": ["{list of dynamic prop names and types, for KNOWN_SUBCOMPONENT / PAIRED_ACTION_SUBCOMPONENT}"],
258
- "staticProps": ["{list of static prop names, values, and types - parent hardcodes these}"],
259
- "pairedClosure": "(() -> Void)? | null - only for PAIRED_ACTION_SUBCOMPONENT",
260
- "rationale": "{why this classification and type were chosen, including static/dynamic reasoning}",
261
- "halt": false,
262
- "deferredTo": null
263
- }
264
- ],
265
- "summary": {
266
- "total": 0,
267
- "iconBooleanGated": 0,
268
- "knownSubComponent": 0,
269
- "pairedActionSubComponent": 0,
270
- "contentLeaf": 0,
271
- "sectionToggle": 0,
272
- "repeatingPattern": 0,
273
- "unmapped": 0,
274
- "unclassified": 0,
275
- "halted": false
276
- }
277
- }
278
- ```
279
-
280
- ### `{artifactPath}/pass3/04c_variant_config_analysis.md`
281
-
282
- Human-readable version with full rationale for each classification. Include:
283
- - The decision tree path taken for each boolean
284
- - code_connect_map evidence (snippet, componentName, source)
285
- - Configuration existence check results
286
- - Dynamic vs static default reasoning for icons
287
- - HALT details for unmapped sub-components
288
-
289
- ---
290
-
291
- ## DOWNSTREAM CONSUMERS
292
-
293
- This output is consumed by:
294
-
295
- | Phase | Artifact Read | Usage |
296
- |---|---|---|
297
- | **3D** (GATE 2: Architecture) | `04c_variant_config_analysis.json` | Uses classifications for section2.2 Sub-Component Detection and section2.3 Property Classification. Does NOT re-classify - consumes directly. Resolves UNCLASSIFIED entries using design_context. |
298
- | **4A** (Configuration) | `04c_variant_config_analysis.json` | Uses `swiftType` for property declarations. Only `dynamicProps` go in config - `staticProps` are omitted. Creates mini config structs for 2+ dynamic props. |
299
- | **4B** (View) | `04c_variant_config_analysis.json` | For KNOWN_SUBCOMPONENT: instantiates sub-component internally with `staticProps` hardcoded. For PAIRED_ACTION_SUBCOMPONENT: generates paired modifier binding data+closure. For ICON with Optional3: switches on `.default`/`.none`/`.some`. |
300
- | **6** (Code Connect) | `04c_variant_config_analysis.json` | For KNOWN_SUBCOMPONENT/PAIRED_ACTION_SUBCOMPONENT: `@FigmaBoolean` maps to `nil`/default-config. For ICON with Optional3: `@FigmaBoolean` maps to `.default`/`.none`. No ternary expressions. |
301
-
302
- ---
303
-
304
- ## VALIDATION CHECKLIST
305
-
306
- ```
307
- [ ] component_properties.json fully parsed (booleans, instance swaps, text slots)
308
- [ ] code_connect_map_response.json indexed and classified (ICON, SUBCOMPONENT, CROSS_PLATFORM)
309
- [ ] Every boolean property has a classification
310
- [ ] All ICON_BOOLEAN_GATED entries have Image? vs Optional3<Image> decision with rationale
311
- [ ] All KNOWN_SUBCOMPONENT entries have dynamicProps/staticProps filtered
312
- [ ] All PAIRED_ACTION_SUBCOMPONENT entries have pairedClosure specified
313
- [ ] All UNMAPPED_SUBCOMPONENT entries have HALT with clear instructions
314
- [ ] UNCLASSIFIED entries are flagged for 3D with deferredTo: "3D"
315
- [ ] Sub-component prop filtering: only dynamic (caller-controlled) props in swiftType, static (design-fixed) recorded separately
316
- [ ] 04c_variant_config_analysis.json written to pass3/
317
- [ ] 04c_variant_config_analysis.md written to pass3/
318
- [ ] Summary counts are correct
319
- ```
320
-
321
- ---
322
-
323
- ## SUCCESS OUTPUT
324
-
325
- ```
326
- STATUS: COMPLETE
327
- PHASE: phase-3h
328
- GATES_PASSED: [PRE_CHECK, INDEX_CODE_CONNECT_MAP, CLASSIFY_BOOLEAN_PROPERTIES, RESOLVE_SWIFT_TYPES, WRITE_ARTIFACTS]
329
- ARTIFACTS_CREATED:
330
- - {artifactPath}/pass3/04c_variant_config_analysis.json
331
- - {artifactPath}/pass3/04c_variant_config_analysis.md
332
- SUMMARY: Classified {total} boolean properties: {iconBooleanGated} icon, {knownSubComponent} sub-component, {pairedActionSubComponent} paired action, {contentLeaf} content leaf, {repeatingPattern} repeating, {unclassified} unclassified (deferred to 3D). Halted: {halted}.
333
- ```