buildanything 1.8.0 → 2.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.
Files changed (494) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +17 -3
  3. package/CHANGELOG.md +57 -0
  4. package/README.md +57 -61
  5. package/agents/a11y-architect.md +168 -0
  6. package/agents/briefing-officer.md +172 -0
  7. package/agents/business-model.md +82 -29
  8. package/agents/code-architect.md +80 -0
  9. package/agents/code-reviewer.md +256 -0
  10. package/agents/code-simplifier.md +72 -0
  11. package/agents/design-brand-guardian.md +312 -53
  12. package/agents/design-critic.md +144 -0
  13. package/agents/design-inclusive-visuals-specialist.md +8 -19
  14. package/agents/design-ui-designer.md +352 -56
  15. package/agents/design-ux-architect.md +418 -55
  16. package/agents/design-ux-researcher.md +359 -49
  17. package/agents/engineering-ai-engineer.md +28 -36
  18. package/agents/engineering-backend-architect.md +187 -36
  19. package/agents/engineering-data-engineer.md +227 -43
  20. package/agents/engineering-devops-automator.md +229 -74
  21. package/agents/engineering-frontend-developer.md +223 -34
  22. package/agents/engineering-mobile-app-builder.md +8 -1
  23. package/agents/engineering-rapid-prototyper.md +45 -11
  24. package/agents/engineering-security-engineer.md +265 -61
  25. package/agents/engineering-senior-developer.md +141 -19
  26. package/agents/engineering-sre.md +86 -0
  27. package/agents/engineering-technical-writer.md +287 -41
  28. package/agents/feature-intel.md +111 -0
  29. package/agents/ios-app-review-guardian.md +21 -2
  30. package/agents/ios-foundation-models-specialist.md +22 -2
  31. package/agents/ios-product-reality-auditor.md +292 -0
  32. package/agents/ios-storekit-specialist.md +11 -2
  33. package/agents/ios-swift-architect.md +29 -1
  34. package/agents/ios-swift-search.md +9 -1
  35. package/agents/ios-swift-ui-design.md +40 -5
  36. package/agents/marketing-app-store-optimizer.md +248 -64
  37. package/agents/planner.md +221 -0
  38. package/agents/pr-test-analyzer.md +64 -0
  39. package/agents/product-feedback-synthesizer.md +70 -2
  40. package/agents/product-owner.md +163 -0
  41. package/agents/product-reality-auditor.md +216 -0
  42. package/agents/product-spec-writer.md +176 -0
  43. package/agents/refactor-cleaner.md +110 -0
  44. package/agents/security-reviewer.md +129 -0
  45. package/agents/silent-failure-hunter.md +55 -0
  46. package/agents/swift-build-resolver.md +121 -0
  47. package/agents/swift-reviewer.md +113 -0
  48. package/agents/tech-feasibility.md +26 -4
  49. package/agents/testing-api-tester.md +238 -59
  50. package/agents/testing-evidence-collector.md +50 -1
  51. package/agents/testing-performance-benchmarker.md +23 -1
  52. package/agents/testing-reality-checker.md +7 -1
  53. package/agents/visual-research.md +118 -0
  54. package/bin/adapters/cycle-counter-tool.ts +155 -0
  55. package/bin/adapters/scribe-tool.ts +73 -0
  56. package/bin/adapters/state-save-tool.ts +130 -0
  57. package/bin/adapters/write-lease-tool.ts +127 -0
  58. package/bin/buildanything-runtime.js +15 -0
  59. package/bin/buildanything-runtime.ts +241 -0
  60. package/bin/graph-index.js +24 -0
  61. package/bin/graph-index.ts +340 -0
  62. package/bin/mcp-servers/graph-mcp.js +26 -0
  63. package/bin/mcp-servers/graph-mcp.ts +481 -0
  64. package/bin/mcp-servers/orchestrator-mcp.js +26 -0
  65. package/bin/mcp-servers/orchestrator-mcp.ts +361 -0
  66. package/bin/setup.js +312 -76
  67. package/commands/add-feature.md +2 -0
  68. package/commands/build.md +994 -265
  69. package/commands/fix.md +1 -1
  70. package/commands/idea-sweep.md +2 -2
  71. package/commands/self-check.md +121 -0
  72. package/commands/setup.md +61 -9
  73. package/commands/ux-review.md +5 -5
  74. package/commands/verify.md +9 -9
  75. package/docs/migration/agents.yaml +729 -0
  76. package/docs/migration/phase-graph.yaml +1504 -0
  77. package/docs/migration/sdk-host-compat.md +18 -0
  78. package/hooks/compile-writer-owner-cache.ts +171 -0
  79. package/hooks/design-md-lint +4 -0
  80. package/hooks/design-md-lint.ts +295 -0
  81. package/hooks/hooks.json +36 -0
  82. package/hooks/pre-tool-use +19 -0
  83. package/hooks/pre-tool-use.ts +807 -0
  84. package/hooks/record-mode-transitions.ts +235 -0
  85. package/hooks/session-start +71 -1
  86. package/hooks/subagent-start +17 -0
  87. package/hooks/subagent-start.ts +472 -0
  88. package/hooks/subagent-stop +17 -0
  89. package/hooks/subagent-stop.ts +153 -0
  90. package/package.json +26 -4
  91. package/protocols/agent-prompt-authoring.md +165 -0
  92. package/protocols/architecture-schema.md +178 -0
  93. package/protocols/cleanup.md +4 -0
  94. package/protocols/decision-log.md +135 -0
  95. package/protocols/design-md-authoring.md +520 -0
  96. package/protocols/design-md-spec.md +362 -0
  97. package/protocols/fake-data-detector.md +1 -1
  98. package/protocols/ios-context.md +10 -11
  99. package/protocols/ios-fake-data-detector.md +65 -0
  100. package/protocols/ios-phase-branches.md +299 -39
  101. package/protocols/launch-readiness.md +262 -0
  102. package/protocols/metric-loop.md +62 -2
  103. package/protocols/page-spec-schema.md +234 -0
  104. package/protocols/product-spec-schema.md +354 -0
  105. package/protocols/smoke-test.md +9 -1
  106. package/protocols/sprint-tasks-schema.md +53 -0
  107. package/protocols/state-schema.json +423 -0
  108. package/protocols/state-schema.md +202 -0
  109. package/protocols/verify.md +91 -3
  110. package/protocols/web-phase-branches.md +395 -75
  111. package/skills/ios/_VENDORED.md +2 -0
  112. package/skills/ios/app-store-connect-metadata/SKILL.md +148 -0
  113. package/skills/ios/asc-privacy-manifest/SKILL.md +350 -0
  114. package/skills/ios/hig-components-content/SKILL.md +86 -0
  115. package/skills/ios/hig-components-content/references/activity-views.md +79 -0
  116. package/skills/ios/hig-components-content/references/charts.md +180 -0
  117. package/skills/ios/hig-components-content/references/collections.md +48 -0
  118. package/skills/ios/hig-components-content/references/color-wells.md +42 -0
  119. package/skills/ios/hig-components-content/references/image-views.md +82 -0
  120. package/skills/ios/hig-components-content/references/image-wells.md +34 -0
  121. package/skills/ios/hig-components-content/references/lockups.md +78 -0
  122. package/skills/ios/hig-components-content/references/web-views.md +36 -0
  123. package/skills/ios/hig-components-controls/SKILL.md +88 -0
  124. package/skills/ios/hig-components-controls/references/combo-boxes.md +40 -0
  125. package/skills/ios/hig-components-controls/references/controls.md +112 -0
  126. package/skills/ios/hig-components-controls/references/gauges.md +74 -0
  127. package/skills/ios/hig-components-controls/references/labels.md +92 -0
  128. package/skills/ios/hig-components-controls/references/pickers.md +128 -0
  129. package/skills/ios/hig-components-controls/references/rating-indicators.md +38 -0
  130. package/skills/ios/hig-components-controls/references/segmented-controls.md +94 -0
  131. package/skills/ios/hig-components-controls/references/sliders.md +92 -0
  132. package/skills/ios/hig-components-controls/references/steppers.md +40 -0
  133. package/skills/ios/hig-components-controls/references/text-fields.md +88 -0
  134. package/skills/ios/hig-components-controls/references/text-views.md +56 -0
  135. package/skills/ios/hig-components-controls/references/toggles.md +127 -0
  136. package/skills/ios/hig-components-controls/references/token-fields.md +48 -0
  137. package/skills/ios/hig-components-controls/references/virtual-keyboards.md +156 -0
  138. package/skills/ios/hig-components-dialogs/SKILL.md +76 -0
  139. package/skills/ios/hig-components-dialogs/references/action-sheets.md +74 -0
  140. package/skills/ios/hig-components-dialogs/references/alerts.md +158 -0
  141. package/skills/ios/hig-components-dialogs/references/digit-entry-views.md +32 -0
  142. package/skills/ios/hig-components-dialogs/references/popovers.md +81 -0
  143. package/skills/ios/hig-components-dialogs/references/sheets.md +157 -0
  144. package/skills/ios/hig-components-layout/SKILL.md +99 -0
  145. package/skills/ios/hig-components-layout/references/boxes.md +48 -0
  146. package/skills/ios/hig-components-layout/references/column-views.md +44 -0
  147. package/skills/ios/hig-components-layout/references/lists-and-tables.md +99 -0
  148. package/skills/ios/hig-components-layout/references/ornaments.md +56 -0
  149. package/skills/ios/hig-components-layout/references/outline-views.md +64 -0
  150. package/skills/ios/hig-components-layout/references/panels.md +75 -0
  151. package/skills/ios/hig-components-layout/references/scroll-views.md +123 -0
  152. package/skills/ios/hig-components-layout/references/sidebars.md +109 -0
  153. package/skills/ios/hig-components-layout/references/split-views.md +110 -0
  154. package/skills/ios/hig-components-layout/references/tab-bars.md +173 -0
  155. package/skills/ios/hig-components-layout/references/tab-views.md +68 -0
  156. package/skills/ios/hig-components-layout/references/windows.md +188 -0
  157. package/skills/ios/hig-components-menus/SKILL.md +81 -0
  158. package/skills/ios/hig-components-menus/references/action-button.md +61 -0
  159. package/skills/ios/hig-components-menus/references/buttons.md +261 -0
  160. package/skills/ios/hig-components-menus/references/context-menus.md +105 -0
  161. package/skills/ios/hig-components-menus/references/disclosure-controls.md +84 -0
  162. package/skills/ios/hig-components-menus/references/dock-menus.md +40 -0
  163. package/skills/ios/hig-components-menus/references/edit-menus.md +88 -0
  164. package/skills/ios/hig-components-menus/references/menus.md +171 -0
  165. package/skills/ios/hig-components-menus/references/pop-up-buttons.md +70 -0
  166. package/skills/ios/hig-components-menus/references/pull-down-buttons.md +77 -0
  167. package/skills/ios/hig-components-menus/references/the-menu-bar.md +303 -0
  168. package/skills/ios/hig-components-menus/references/toolbars.md +256 -0
  169. package/skills/ios/hig-components-search/SKILL.md +68 -0
  170. package/skills/ios/hig-components-search/references/page-controls.md +120 -0
  171. package/skills/ios/hig-components-search/references/path-controls.md +40 -0
  172. package/skills/ios/hig-components-search/references/search-fields.md +189 -0
  173. package/skills/ios/hig-components-status/SKILL.md +80 -0
  174. package/skills/ios/hig-components-status/references/activity-rings.md +105 -0
  175. package/skills/ios/hig-components-status/references/progress-indicators.md +116 -0
  176. package/skills/ios/hig-components-status/references/status-bars.md +38 -0
  177. package/skills/ios/hig-components-system/SKILL.md +88 -0
  178. package/skills/ios/hig-components-system/references/app-clips.md +387 -0
  179. package/skills/ios/hig-components-system/references/app-shortcuts.md +114 -0
  180. package/skills/ios/hig-components-system/references/complications.md +425 -0
  181. package/skills/ios/hig-components-system/references/home-screen-quick-actions.md +42 -0
  182. package/skills/ios/hig-components-system/references/live-activities.md +442 -0
  183. package/skills/ios/hig-components-system/references/notifications.md +153 -0
  184. package/skills/ios/hig-components-system/references/top-shelf.md +135 -0
  185. package/skills/ios/hig-components-system/references/watch-faces.md +40 -0
  186. package/skills/ios/hig-components-system/references/widgets.md +517 -0
  187. package/skills/ios/hig-foundations/SKILL.md +98 -0
  188. package/skills/ios/hig-foundations/references/accessibility.md +291 -0
  189. package/skills/ios/hig-foundations/references/app-icons.md +210 -0
  190. package/skills/ios/hig-foundations/references/branding.md +44 -0
  191. package/skills/ios/hig-foundations/references/color.md +274 -0
  192. package/skills/ios/hig-foundations/references/dark-mode.md +116 -0
  193. package/skills/ios/hig-foundations/references/icons.md +263 -0
  194. package/skills/ios/hig-foundations/references/images.md +176 -0
  195. package/skills/ios/hig-foundations/references/immersive-experiences.md +174 -0
  196. package/skills/ios/hig-foundations/references/inclusion.md +189 -0
  197. package/skills/ios/hig-foundations/references/layout.md +425 -0
  198. package/skills/ios/hig-foundations/references/materials.md +238 -0
  199. package/skills/ios/hig-foundations/references/motion.md +103 -0
  200. package/skills/ios/hig-foundations/references/privacy.md +231 -0
  201. package/skills/ios/hig-foundations/references/right-to-left.md +206 -0
  202. package/skills/ios/hig-foundations/references/sf-symbols.md +310 -0
  203. package/skills/ios/hig-foundations/references/spatial-layout.md +142 -0
  204. package/skills/ios/hig-foundations/references/typography.md +1146 -0
  205. package/skills/ios/hig-foundations/references/writing.md +91 -0
  206. package/skills/ios/hig-inputs/SKILL.md +94 -0
  207. package/skills/ios/hig-inputs/references/apple-pencil-and-scribble.md +148 -0
  208. package/skills/ios/hig-inputs/references/camera-control.md +107 -0
  209. package/skills/ios/hig-inputs/references/digital-crown.md +83 -0
  210. package/skills/ios/hig-inputs/references/eyes.md +120 -0
  211. package/skills/ios/hig-inputs/references/focus-and-selection.md +120 -0
  212. package/skills/ios/hig-inputs/references/game-controls.md +156 -0
  213. package/skills/ios/hig-inputs/references/gestures.md +208 -0
  214. package/skills/ios/hig-inputs/references/gyro-and-accelerometer.md +40 -0
  215. package/skills/ios/hig-inputs/references/keyboards.md +234 -0
  216. package/skills/ios/hig-inputs/references/nearby-interactions.md +70 -0
  217. package/skills/ios/hig-inputs/references/pointing-devices.md +237 -0
  218. package/skills/ios/hig-inputs/references/remotes.md +67 -0
  219. package/skills/ios/hig-inputs/references/spatial-interactions.md +70 -0
  220. package/skills/ios/hig-patterns/SKILL.md +104 -0
  221. package/skills/ios/hig-patterns/references/charting-data.md +81 -0
  222. package/skills/ios/hig-patterns/references/collaboration-and-sharing.md +86 -0
  223. package/skills/ios/hig-patterns/references/drag-and-drop.md +134 -0
  224. package/skills/ios/hig-patterns/references/entering-data.md +69 -0
  225. package/skills/ios/hig-patterns/references/feedback.md +67 -0
  226. package/skills/ios/hig-patterns/references/file-management.md +135 -0
  227. package/skills/ios/hig-patterns/references/going-full-screen.md +79 -0
  228. package/skills/ios/hig-patterns/references/launching.md +81 -0
  229. package/skills/ios/hig-patterns/references/live-viewing-apps.md +79 -0
  230. package/skills/ios/hig-patterns/references/loading.md +59 -0
  231. package/skills/ios/hig-patterns/references/managing-accounts.md +107 -0
  232. package/skills/ios/hig-patterns/references/managing-notifications.md +99 -0
  233. package/skills/ios/hig-patterns/references/modality.md +82 -0
  234. package/skills/ios/hig-patterns/references/multitasking.md +131 -0
  235. package/skills/ios/hig-patterns/references/offering-help.md +117 -0
  236. package/skills/ios/hig-patterns/references/onboarding.md +69 -0
  237. package/skills/ios/hig-patterns/references/playing-audio.md +124 -0
  238. package/skills/ios/hig-patterns/references/playing-haptics.md +280 -0
  239. package/skills/ios/hig-patterns/references/playing-video.md +180 -0
  240. package/skills/ios/hig-patterns/references/printing.md +50 -0
  241. package/skills/ios/hig-patterns/references/ratings-and-reviews.md +48 -0
  242. package/skills/ios/hig-patterns/references/searching.md +70 -0
  243. package/skills/ios/hig-patterns/references/settings.md +84 -0
  244. package/skills/ios/hig-patterns/references/undo-and-redo.md +58 -0
  245. package/skills/ios/hig-patterns/references/workouts.md +76 -0
  246. package/skills/ios/hig-platforms/SKILL.md +84 -0
  247. package/skills/ios/hig-platforms/references/designing-for-games.md +159 -0
  248. package/skills/ios/hig-platforms/references/designing-for-ios.md +66 -0
  249. package/skills/ios/hig-platforms/references/designing-for-ipados.md +64 -0
  250. package/skills/ios/hig-platforms/references/designing-for-macos.md +70 -0
  251. package/skills/ios/hig-platforms/references/designing-for-tvos.md +68 -0
  252. package/skills/ios/hig-platforms/references/designing-for-visionos.md +85 -0
  253. package/skills/ios/hig-platforms/references/designing-for-watchos.md +74 -0
  254. package/skills/ios/hig-project-context/SKILL.md +133 -0
  255. package/skills/ios/hig-technologies/SKILL.md +107 -0
  256. package/skills/ios/hig-technologies/references/airplay.md +125 -0
  257. package/skills/ios/hig-technologies/references/always-on.md +62 -0
  258. package/skills/ios/hig-technologies/references/apple-pay.md +441 -0
  259. package/skills/ios/hig-technologies/references/augmented-reality.md +247 -0
  260. package/skills/ios/hig-technologies/references/carekit.md +224 -0
  261. package/skills/ios/hig-technologies/references/carplay.md +119 -0
  262. package/skills/ios/hig-technologies/references/game-center.md +343 -0
  263. package/skills/ios/hig-technologies/references/generative-ai.md +110 -0
  264. package/skills/ios/hig-technologies/references/healthkit.md +120 -0
  265. package/skills/ios/hig-technologies/references/homekit.md +343 -0
  266. package/skills/ios/hig-technologies/references/icloud.md +52 -0
  267. package/skills/ios/hig-technologies/references/id-verifier.md +73 -0
  268. package/skills/ios/hig-technologies/references/imessage-apps-and-stickers.md +105 -0
  269. package/skills/ios/hig-technologies/references/in-app-purchase.md +263 -0
  270. package/skills/ios/hig-technologies/references/live-photos.md +54 -0
  271. package/skills/ios/hig-technologies/references/mac-catalyst.md +216 -0
  272. package/skills/ios/hig-technologies/references/machine-learning.md +394 -0
  273. package/skills/ios/hig-technologies/references/maps.md +221 -0
  274. package/skills/ios/hig-technologies/references/nfc.md +51 -0
  275. package/skills/ios/hig-technologies/references/photo-editing.md +40 -0
  276. package/skills/ios/hig-technologies/references/researchkit.md +134 -0
  277. package/skills/ios/hig-technologies/references/shareplay.md +142 -0
  278. package/skills/ios/hig-technologies/references/shazamkit.md +47 -0
  279. package/skills/ios/hig-technologies/references/sign-in-with-apple.md +288 -0
  280. package/skills/ios/hig-technologies/references/siri.md +523 -0
  281. package/skills/ios/hig-technologies/references/tap-to-pay-on-iphone.md +208 -0
  282. package/skills/ios/hig-technologies/references/voiceover.md +90 -0
  283. package/skills/ios/hig-technologies/references/wallet.md +420 -0
  284. package/skills/ios/ios-bootstrap/SKILL.md +17 -8
  285. package/skills/ios/swift-actor-persistence/SKILL.md +143 -0
  286. package/skills/ios/swift-concurrency-6-2/SKILL.md +216 -0
  287. package/skills/ios/swift-protocol-di-testing/SKILL.md +190 -0
  288. package/skills/ios/swiftui-design-tokens/SKILL.md +475 -0
  289. package/skills/ios/writing-for-interfaces/SKILL.md +75 -0
  290. package/skills/web/accessibility/SKILL.md +146 -0
  291. package/skills/web/aceternity-ui/SKILL.md +719 -0
  292. package/skills/web/aceternity-ui/metadata.json +10 -0
  293. package/skills/web/api-design/SKILL.md +523 -0
  294. package/skills/web/chart-accessibility/SKILL.md +332 -0
  295. package/skills/web/composition-patterns/AGENTS.md +946 -0
  296. package/skills/web/composition-patterns/README.md +60 -0
  297. package/skills/web/composition-patterns/SKILL.md +89 -0
  298. package/skills/web/composition-patterns/metadata.json +11 -0
  299. package/skills/web/composition-patterns/rules/_sections.md +29 -0
  300. package/skills/web/composition-patterns/rules/_template.md +24 -0
  301. package/skills/web/composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
  302. package/skills/web/composition-patterns/rules/architecture-compound-components.md +112 -0
  303. package/skills/web/composition-patterns/rules/patterns-children-over-render-props.md +87 -0
  304. package/skills/web/composition-patterns/rules/patterns-explicit-variants.md +100 -0
  305. package/skills/web/composition-patterns/rules/react19-no-forwardref.md +42 -0
  306. package/skills/web/composition-patterns/rules/state-context-interface.md +191 -0
  307. package/skills/web/composition-patterns/rules/state-decouple-implementation.md +113 -0
  308. package/skills/web/composition-patterns/rules/state-lift-state.md +125 -0
  309. package/skills/web/cost-aware-llm-pipeline/SKILL.md +183 -0
  310. package/skills/web/database-migrations/SKILL.md +429 -0
  311. package/skills/web/deployment-patterns/SKILL.md +427 -0
  312. package/skills/web/docker-patterns/SKILL.md +364 -0
  313. package/skills/web/e2e-testing/SKILL.md +326 -0
  314. package/skills/web/lighthouse-ci/SKILL.md +361 -0
  315. package/skills/web/mcp-server-patterns/SKILL.md +69 -0
  316. package/skills/web/next-best-practices/SKILL.md +153 -0
  317. package/skills/web/next-best-practices/async-patterns.md +87 -0
  318. package/skills/web/next-best-practices/bundling.md +180 -0
  319. package/skills/web/next-best-practices/data-patterns.md +297 -0
  320. package/skills/web/next-best-practices/debug-tricks.md +105 -0
  321. package/skills/web/next-best-practices/directives.md +73 -0
  322. package/skills/web/next-best-practices/error-handling.md +227 -0
  323. package/skills/web/next-best-practices/file-conventions.md +140 -0
  324. package/skills/web/next-best-practices/font.md +245 -0
  325. package/skills/web/next-best-practices/functions.md +108 -0
  326. package/skills/web/next-best-practices/hydration-error.md +91 -0
  327. package/skills/web/next-best-practices/image.md +173 -0
  328. package/skills/web/next-best-practices/metadata.md +301 -0
  329. package/skills/web/next-best-practices/parallel-routes.md +287 -0
  330. package/skills/web/next-best-practices/route-handlers.md +146 -0
  331. package/skills/web/next-best-practices/rsc-boundaries.md +159 -0
  332. package/skills/web/next-best-practices/runtime-selection.md +39 -0
  333. package/skills/web/next-best-practices/scripts.md +141 -0
  334. package/skills/web/next-best-practices/self-hosting.md +371 -0
  335. package/skills/web/next-best-practices/suspense-boundaries.md +67 -0
  336. package/skills/web/next-cache-components/SKILL.md +411 -0
  337. package/skills/web/postgres-best-practices/SKILL.md +14 -0
  338. package/skills/web/postgres-best-practices/references/schema-design.md +9 -0
  339. package/skills/web/react-best-practices/AGENTS.md +3810 -0
  340. package/skills/web/react-best-practices/README.md +123 -0
  341. package/skills/web/react-best-practices/SKILL.md +149 -0
  342. package/skills/web/react-best-practices/metadata.json +15 -0
  343. package/skills/web/react-best-practices/rules/_sections.md +46 -0
  344. package/skills/web/react-best-practices/rules/_template.md +28 -0
  345. package/skills/web/react-best-practices/rules/advanced-effect-event-deps.md +56 -0
  346. package/skills/web/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  347. package/skills/web/react-best-practices/rules/advanced-init-once.md +42 -0
  348. package/skills/web/react-best-practices/rules/advanced-use-latest.md +39 -0
  349. package/skills/web/react-best-practices/rules/async-api-routes.md +38 -0
  350. package/skills/web/react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
  351. package/skills/web/react-best-practices/rules/async-defer-await.md +82 -0
  352. package/skills/web/react-best-practices/rules/async-dependencies.md +51 -0
  353. package/skills/web/react-best-practices/rules/async-parallel.md +28 -0
  354. package/skills/web/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  355. package/skills/web/react-best-practices/rules/bundle-analyzable-paths.md +63 -0
  356. package/skills/web/react-best-practices/rules/bundle-barrel-imports.md +60 -0
  357. package/skills/web/react-best-practices/rules/bundle-conditional.md +31 -0
  358. package/skills/web/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  359. package/skills/web/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  360. package/skills/web/react-best-practices/rules/bundle-preload.md +50 -0
  361. package/skills/web/react-best-practices/rules/client-event-listeners.md +74 -0
  362. package/skills/web/react-best-practices/rules/client-localstorage-schema.md +71 -0
  363. package/skills/web/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  364. package/skills/web/react-best-practices/rules/client-swr-dedup.md +56 -0
  365. package/skills/web/react-best-practices/rules/js-batch-dom-css.md +107 -0
  366. package/skills/web/react-best-practices/rules/js-cache-function-results.md +80 -0
  367. package/skills/web/react-best-practices/rules/js-cache-property-access.md +28 -0
  368. package/skills/web/react-best-practices/rules/js-cache-storage.md +70 -0
  369. package/skills/web/react-best-practices/rules/js-combine-iterations.md +32 -0
  370. package/skills/web/react-best-practices/rules/js-early-exit.md +50 -0
  371. package/skills/web/react-best-practices/rules/js-flatmap-filter.md +60 -0
  372. package/skills/web/react-best-practices/rules/js-hoist-regexp.md +45 -0
  373. package/skills/web/react-best-practices/rules/js-index-maps.md +37 -0
  374. package/skills/web/react-best-practices/rules/js-length-check-first.md +49 -0
  375. package/skills/web/react-best-practices/rules/js-min-max-loop.md +82 -0
  376. package/skills/web/react-best-practices/rules/js-request-idle-callback.md +105 -0
  377. package/skills/web/react-best-practices/rules/js-set-map-lookups.md +24 -0
  378. package/skills/web/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  379. package/skills/web/react-best-practices/rules/rendering-activity.md +26 -0
  380. package/skills/web/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  381. package/skills/web/react-best-practices/rules/rendering-conditional-render.md +40 -0
  382. package/skills/web/react-best-practices/rules/rendering-content-visibility.md +38 -0
  383. package/skills/web/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  384. package/skills/web/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  385. package/skills/web/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  386. package/skills/web/react-best-practices/rules/rendering-resource-hints.md +85 -0
  387. package/skills/web/react-best-practices/rules/rendering-script-defer-async.md +68 -0
  388. package/skills/web/react-best-practices/rules/rendering-svg-precision.md +28 -0
  389. package/skills/web/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  390. package/skills/web/react-best-practices/rules/rerender-defer-reads.md +39 -0
  391. package/skills/web/react-best-practices/rules/rerender-dependencies.md +45 -0
  392. package/skills/web/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  393. package/skills/web/react-best-practices/rules/rerender-derived-state.md +29 -0
  394. package/skills/web/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  395. package/skills/web/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  396. package/skills/web/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  397. package/skills/web/react-best-practices/rules/rerender-memo.md +44 -0
  398. package/skills/web/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  399. package/skills/web/react-best-practices/rules/rerender-no-inline-components.md +82 -0
  400. package/skills/web/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  401. package/skills/web/react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
  402. package/skills/web/react-best-practices/rules/rerender-transitions.md +40 -0
  403. package/skills/web/react-best-practices/rules/rerender-use-deferred-value.md +59 -0
  404. package/skills/web/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  405. package/skills/web/react-best-practices/rules/server-after-nonblocking.md +73 -0
  406. package/skills/web/react-best-practices/rules/server-auth-actions.md +96 -0
  407. package/skills/web/react-best-practices/rules/server-cache-lru.md +41 -0
  408. package/skills/web/react-best-practices/rules/server-cache-react.md +76 -0
  409. package/skills/web/react-best-practices/rules/server-dedup-props.md +65 -0
  410. package/skills/web/react-best-practices/rules/server-hoist-static-io.md +149 -0
  411. package/skills/web/react-best-practices/rules/server-no-shared-module-state.md +50 -0
  412. package/skills/web/react-best-practices/rules/server-parallel-fetching.md +83 -0
  413. package/skills/web/react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
  414. package/skills/web/react-best-practices/rules/server-serialization.md +38 -0
  415. package/skills/web/seo/SKILL.md +154 -0
  416. package/skills/web/web-design-guidelines/SKILL.md +39 -0
  417. package/skills/web/zap-scan-config/SKILL.md +444 -0
  418. package/skills/web/zap-scan-config/assets/.gitkeep +9 -0
  419. package/skills/web/zap-scan-config/assets/github_action.yml +207 -0
  420. package/skills/web/zap-scan-config/assets/gitlab_ci.yml +226 -0
  421. package/skills/web/zap-scan-config/assets/zap_automation.yaml +196 -0
  422. package/skills/web/zap-scan-config/assets/zap_context.xml +192 -0
  423. package/skills/web/zap-scan-config/references/EXAMPLE.md +40 -0
  424. package/skills/web/zap-scan-config/references/api_testing_guide.md +475 -0
  425. package/skills/web/zap-scan-config/references/authentication_guide.md +431 -0
  426. package/skills/web/zap-scan-config/references/false_positive_handling.md +427 -0
  427. package/skills/web/zap-scan-config/references/owasp_mapping.md +255 -0
  428. package/src/graph/ids.ts +86 -0
  429. package/src/graph/index.ts +32 -0
  430. package/src/graph/parser/architecture.ts +603 -0
  431. package/src/graph/parser/component-manifest.ts +268 -0
  432. package/src/graph/parser/decisions-jsonl.ts +407 -0
  433. package/src/graph/parser/design-md-pass2.ts +253 -0
  434. package/src/graph/parser/design-md.ts +477 -0
  435. package/src/graph/parser/page-spec.ts +496 -0
  436. package/src/graph/parser/product-spec.ts +930 -0
  437. package/src/graph/parser/screenshot.ts +342 -0
  438. package/src/graph/parser/sprint-tasks.ts +317 -0
  439. package/src/graph/storage/index.ts +1154 -0
  440. package/src/graph/types.ts +432 -0
  441. package/src/graph/util/dhash.ts +84 -0
  442. package/src/lrr/aggregator.ts +175 -0
  443. package/src/orchestrator/hooks/context-header.ts +119 -0
  444. package/src/orchestrator/hooks/token-accounting-emitter.ts +77 -0
  445. package/src/orchestrator/hooks/token-accounting.ts +112 -0
  446. package/src/orchestrator/mcp/cycle-counter.ts +130 -0
  447. package/src/orchestrator/mcp/scribe.ts +294 -0
  448. package/src/orchestrator/mcp/state-save.ts +149 -0
  449. package/src/orchestrator/mcp/write-lease.ts +184 -0
  450. package/src/orchestrator/phase4-shared-context.ts +57 -0
  451. package/src/orchestrator/schemas/backward-edge.ts +46 -0
  452. package/agents/agentic-identity-trust.md +0 -121
  453. package/agents/data-consolidation-agent.md +0 -39
  454. package/agents/design-image-prompt-engineer.md +0 -105
  455. package/agents/design-visual-storyteller.md +0 -147
  456. package/agents/design-whimsy-injector.md +0 -89
  457. package/agents/engineering-autonomous-optimization-architect.md +0 -105
  458. package/agents/market-intel.md +0 -35
  459. package/agents/marketing-instagram-curator.md +0 -111
  460. package/agents/marketing-reddit-community-builder.md +0 -121
  461. package/agents/marketing-social-media-strategist.md +0 -74
  462. package/agents/marketing-tiktok-strategist.md +0 -123
  463. package/agents/marketing-twitter-engager.md +0 -124
  464. package/agents/marketing-wechat-official-account.md +0 -143
  465. package/agents/marketing-xiaohongshu-specialist.md +0 -136
  466. package/agents/marketing-zhihu-strategist.md +0 -160
  467. package/agents/product-behavioral-nudge-engine.md +0 -78
  468. package/agents/project-management-experiment-tracker.md +0 -102
  469. package/agents/report-distribution-agent.md +0 -43
  470. package/agents/risk-analysis.md +0 -45
  471. package/agents/sales-data-extraction-agent.md +0 -46
  472. package/agents/specialized-cultural-intelligence-strategist.md +0 -65
  473. package/agents/specialized-developer-advocate.md +0 -146
  474. package/agents/support-analytics-reporter.md +0 -133
  475. package/agents/support-executive-summary-generator.md +0 -64
  476. package/agents/support-finance-tracker.md +0 -145
  477. package/agents/support-legal-compliance-checker.md +0 -129
  478. package/agents/support-support-responder.md +0 -91
  479. package/agents/testing-accessibility-auditor.md +0 -110
  480. package/agents/testing-test-results-analyzer.md +0 -97
  481. package/agents/testing-tool-evaluator.md +0 -76
  482. package/agents/testing-workflow-optimizer.md +0 -99
  483. package/agents/user-research.md +0 -40
  484. package/protocols/brainstorm.md +0 -99
  485. package/protocols/design.md +0 -269
  486. package/protocols/planning.md +0 -87
  487. package/skills/ios/ios-hig/SKILL.md +0 -41
  488. package/skills/ios/ios-hig/references/accessibility.md +0 -81
  489. package/skills/ios/ios-hig/references/content.md +0 -142
  490. package/skills/ios/ios-hig/references/feedback.md +0 -123
  491. package/skills/ios/ios-hig/references/interaction.md +0 -199
  492. package/skills/ios/ios-hig/references/performance-platform.md +0 -129
  493. package/skills/ios/ios-hig/references/privacy-permissions.md +0 -181
  494. package/skills/ios/ios-hig/references/visual-design.md +0 -84
@@ -0,0 +1,1504 @@
1
+ # Default-deny for unknown paths activates in Stage 2 (Task 2.1.3 of sdk-hybrid migration).
2
+ version: 1
3
+ source_prose: docs/migration/phase-graph.md
4
+ generated_at: 2026-04-18
5
+ policy: |
6
+ Mirror of docs/migration/phase-graph.md. Prose is source of truth until the SDK
7
+ orchestrator flips polarity. If prose changes, this file changes in the same
8
+ commit. A drift-lint script (eval/lint_phase_graph.py — TBD) will fail CI if
9
+ structured data diverges from prose tables.
10
+
11
+ # ---------------------------------------------------------------------------
12
+ # 1. Artifact writer-owner table
13
+ # ---------------------------------------------------------------------------
14
+ artifacts:
15
+ - path: CLAUDE.md
16
+ writer: phase-1
17
+ readers: [all-subagents-auto]
18
+ - path: docs/plans/design-doc.md
19
+ alias: PRD
20
+ writer: phase-1
21
+ readers: [phase-2, phase-3, phase-4, phase-5, phase-6, phase-7]
22
+ - path: docs/plans/architecture.md
23
+ writer: phase-2
24
+ readers: [phase-3, phase-4, phase-5, phase-6, phase-7]
25
+ - path: docs/plans/sprint-tasks.md
26
+ writer: phase-2
27
+ readers: [phase-4, phase-5, phase-6]
28
+ - path: docs/plans/quality-targets.json
29
+ writer: phase-2
30
+ readers: [phase-4, phase-5, phase-6]
31
+ - path: docs/plans/phase-2-contracts/*.md
32
+ writer: phase-2
33
+ readers: [phase-2, phase-3]
34
+ notes: |
35
+ Per-architect post-debate contract files written by the 6 Phase-2.2b
36
+ teammates (backend, frontend, data, security, a11y, perf). Each file
37
+ captures the architect's initial decisions plus any peer-driven
38
+ revisions. Read by the Phase 2.3.1 Implementation Blueprint synthesizer.
39
+ - path: docs/plans/visual-dna-preview.md
40
+ writers: [phase-2, design-brand-guardian, ios-swift-ui-design]
41
+ readers: [phase-2, phase-3]
42
+ notes: |
43
+ Lightweight directional DNA preview surfaced at Gate 2. Web writer is
44
+ design-brand-guardian (protocols/web-phase-branches.md:33); iOS writer
45
+ is ios-swift-ui-design (protocols/ios-phase-branches.md:172). Agent-role
46
+ enforcement fires alongside the phase-2 phase-match so only the two
47
+ legitimate dispatching subagents can write this file. Discarded after
48
+ Gate 2 — Phase 3.0 re-invokes to produce the locked card.
49
+ - path: DESIGN.md
50
+ writers: [phase-3, design-brand-guardian, design-ui-designer, ios-swift-ui-design]
51
+ readers: [phase-3, phase-4, phase-5, phase-6]
52
+ notes: |
53
+ Single design-system artifact at repo root. Web + iOS. Replaces the
54
+ prior visual-dna.md + visual-design-spec.md pair (web) and
55
+ ios-design-board.md (iOS). Authored in two passes:
56
+ Step 3.0 (design-brand-guardian, both platforms) writes Pass 1 —
57
+ Overview, Brand DNA, Rationale, Locked At, References, Do's and Don'ts.
58
+ Pass 2 writer differs by platform: web uses design-ui-designer at
59
+ Step 3.4; iOS uses ios-swift-ui-design at Step 3.2-ios. Pass 2 fills
60
+ YAML tokens (colors, typography, rounded, spacing, components) plus
61
+ the prose for Colors, Typography, Layout, Elevation & Depth, Shapes,
62
+ Components. Format spec is vendored at protocols/design-md-spec.md
63
+ (Apache 2.0). Pipeline contract is in protocols/design-md-authoring.md
64
+ (§9 covers the iOS schema). Agent-role enforcement fires alongside
65
+ the phase-3 phase-match so only the three legitimate authoring
66
+ subagents can write this file.
67
+ - path: docs/plans/component-manifest.md
68
+ platform: web
69
+ writer: phase-3
70
+ readers: [phase-4]
71
+ notes: HARD-GATE import source
72
+ - path: docs/plans/design-references.md
73
+ platform: web
74
+ writer: visual-research
75
+ readers: [phase-3, phase-4, phase-6-brand-guardian]
76
+ notes: |
77
+ Reference paths grouped by DNA axis. Written by the 2 parallel
78
+ visual-research subagents at Step 3.1 (competitive-audit + inspiration-
79
+ mining modes — both append).
80
+ - path: docs/plans/design-references/**
81
+ platform: web
82
+ writer: visual-research
83
+ readers: [phase-3, phase-4, phase-6-brand-guardian]
84
+ notes: |
85
+ Screenshots harvested by visual-research subagents — competitors/,
86
+ inspiration/, plus mode-keyed subdirs. Binary assets referenced from
87
+ design-references.md; gate must cover non-markdown file types.
88
+ - path: docs/plans/dna-persona-check.md
89
+ platform: web
90
+ writer: design-ux-researcher
91
+ readers: [phase-3, phase-3-brand-guardian]
92
+ notes: |
93
+ Step 3.2b persona/DNA cross-check. Mismatches may backward-edge to
94
+ Step 3.0 (DNA re-lock). Agent-role writer pinned to
95
+ design-ux-researcher per protocols/web-phase-branches.md.
96
+ - path: docs/plans/ux-architecture.md
97
+ platform: web
98
+ writer: phase-3
99
+ readers: [phase-3, phase-4, phase-5]
100
+ - path: docs/plans/ux-flow-validation.md
101
+ platform: web
102
+ writer: design-ux-researcher
103
+ readers: [phase-3, phase-4, phase-5]
104
+ notes: |
105
+ Step 3.3b persona-driven flow validation. Flags friction points
106
+ and unnecessary screens before the Visual Design Spec is built.
107
+ - path: docs/plans/inclusive-visuals-audit.md
108
+ platform: web
109
+ writer: phase-3
110
+ readers: [phase-3, phase-5, phase-6]
111
+ - path: docs/plans/a11y-design-review.md
112
+ platform: web
113
+ writers: [phase-3, a11y-architect]
114
+ readers: [phase-5, phase-6-a11y-chapter]
115
+ notes: |
116
+ Phase 3.7 WCAG 2.2 AA design-time review. Written by a11y-architect
117
+ acting as Phase 3 step owner (protocols/web-phase-branches.md:151);
118
+ agent-role enforcement fires alongside the phase-3 phase-match. LRR
119
+ A11y chapter reads this plus the Phase 5 runtime audit per
120
+ protocols/launch-readiness.md.
121
+ - path: docs/plans/page-specs/*.md
122
+ platform: web
123
+ writer: design-ux-architect
124
+ readers: [phase-4, phase-5, phase-6]
125
+ notes: |
126
+ Per-screen wireframes + layout specs written at Step 3.3 by
127
+ design-ux-architect. ASCII wireframes + content hierarchy + key copy
128
+ + responsive behavior + data loading strategy. One file per screen
129
+ from the product-spec Screen Inventory. Follows
130
+ protocols/page-spec-schema.md.
131
+ - path: docs/plans/refs.json
132
+ writers: [phase-2, phase-3]
133
+ readers: [phase-4-briefing-officer]
134
+ notes: |
135
+ Phase 2 Refs Indexer writes the initial anchor index after architecture.md
136
+ lands. Phase 3 extends it after DESIGN.md lands (see
137
+ commands/build.md:167). Both phases are legitimate writers.
138
+ - path: docs/plans/feature-delegation-plan.json
139
+ writer: product-owner
140
+ readers: [orchestrator, briefing-officer]
141
+ notes: |
142
+ Feature delegation plan written by the Product Owner at Step 4.1.
143
+ Contains wave assignments, feature priorities, and acceptance criteria.
144
+ - path: docs/plans/feature-briefs/*.md
145
+ writers: [briefing-officer]
146
+ readers: [orchestrator, phase-4-execution-agents]
147
+ notes: |
148
+ Per-feature briefs written by the Briefing Officer at Step 4.2
149
+ (one per feature per wave). Consumed by the orchestrator-driven
150
+ per-task pipeline during wave execution.
151
+ - path: docs/plans/decisions.jsonl
152
+ writer: orchestrator-scribe
153
+ write_mode: append-only
154
+ readers: [phase-0-resume, phase-5-reality-checker, phase-6-lrr-aggregator]
155
+ hard_gate: Subagents return deviation_row in structured result; they never write this file directly.
156
+ - path: docs/plans/learnings.jsonl
157
+ writers: [phase-5, phase-7]
158
+ readers: [phase-0-learnings-loader, phase-5-reality-sweep]
159
+ - path: docs/plans/evidence/product-reality/{feature_id}/results.json
160
+ platform: web
161
+ writer: product-reality-auditor
162
+ readers: [phase-5-feedback-synthesizer, phase-6-eng-quality]
163
+ notes: |
164
+ Per-feature pass/fail evidence from Track B audit. Schema in
165
+ agents/product-reality-auditor.md.
166
+ - path: docs/plans/evidence/product-reality/{feature_id}/findings.json
167
+ platform: web
168
+ writer: product-reality-auditor
169
+ readers: [phase-5-feedback-synthesizer]
170
+ notes: |
171
+ Per-feature failures with target_phase pre-set by auditor;
172
+ synthesizer validates and passes through.
173
+ - path: docs/plans/evidence/product-reality/{feature_id}/coverage.json
174
+ platform: web
175
+ writer: product-reality-auditor
176
+ readers: [phase-6-eng-quality]
177
+ notes: |
178
+ Per-feature {COVERED|PARTIAL|MISSING} verdict. LRR Eng-Quality
179
+ reads these (one per feature) instead of recomputing.
180
+ - path: docs/plans/evidence/product-reality/{feature_id}/tests-generated.md
181
+ platform: web
182
+ writer: product-reality-auditor
183
+ readers: [phase-5-feedback-synthesizer, phase-6-eng-quality]
184
+ notes: |
185
+ Synthesized agent-browser scripts (one block per check case).
186
+ Provides debug context when results.json shows FAIL.
187
+ - path: docs/plans/evidence/product-reality/{feature_id}/results.json
188
+ platform: ios
189
+ writer: ios-product-reality-auditor
190
+ readers: [phase-5-feedback-synthesizer, phase-6-eng-quality]
191
+ notes: |
192
+ iOS Track B per-feature pass/fail evidence. Same schema as web
193
+ product-reality-auditor but driven by XcodeBuildMCP + Maestro.
194
+ - path: docs/plans/evidence/product-reality/{feature_id}/findings.json
195
+ platform: ios
196
+ writer: ios-product-reality-auditor
197
+ readers: [phase-5-feedback-synthesizer]
198
+ - path: docs/plans/evidence/product-reality/{feature_id}/coverage.json
199
+ platform: ios
200
+ writer: ios-product-reality-auditor
201
+ readers: [phase-6-eng-quality]
202
+ - path: docs/plans/evidence/product-reality/{feature_id}/tests-generated.md
203
+ platform: ios
204
+ writer: ios-product-reality-auditor
205
+ readers: [phase-5-feedback-synthesizer, phase-6-eng-quality]
206
+ notes: |
207
+ Synthesized Maestro YAML flows (one block per check case).
208
+ - path: docs/plans/evidence/track-a/*.json
209
+ writers: [phase-5, testing-api-tester, testing-performance-benchmarker, a11y-architect, engineering-security-engineer]
210
+ readers: [phase-5-feedback-synthesizer, phase-6]
211
+ notes: |
212
+ Track A engineering audit evidence. Web and iOS both write here.
213
+ Per-auditor files: api-contract.json, performance.json,
214
+ accessibility.json, security.json.
215
+ - path: docs/plans/evidence/*.json
216
+ writer: phase-5
217
+ contributors: [phase-4]
218
+ readers: [phase-6, phase-7]
219
+ - path: docs/plans/evidence/*.md
220
+ writers: [phase-5, design-brand-guardian, silent-failure-hunter]
221
+ readers: [phase-5, phase-6, phase-7]
222
+ notes: |
223
+ Top-level evidence markdown (fake-data-audit.md, brand-drift findings
224
+ outside a nested dir, etc.). Matched explicitly because the **/*.md
225
+ glob requires an intermediate directory segment.
226
+ design-brand-guardian is named explicitly as the Phase 5.1 writer of
227
+ brand-drift.md (commands/build.md:806, protocols/web-phase-branches.md:251);
228
+ silent-failure-hunter writes fake-data-audit.md (commands/build.md:984);
229
+ agent-role enforcement fires alongside the phase-5 phase-match.
230
+ - path: docs/plans/evidence/**/*.json
231
+ writers: [phase-4, phase-5, phase-6, ios-product-reality-auditor]
232
+ readers: [phase-6, phase-7]
233
+ notes: |
234
+ Nested per-task / per-run evidence JSON (smoke-test HAR analysis,
235
+ e2e iter-3 results, dogfood classified findings, product-reality
236
+ per-feature results/findings/coverage, maestro run summaries).
237
+ eval-harness baseline/final files are no longer Phase 5 primary
238
+ outputs (Phase 5 restructured into Track A/B as of 2026-05-01) but
239
+ the eval-harness service is still callable ad-hoc from Step 5.5
240
+ fixes. Top-level evidence/*.json kept separate above for the
241
+ phase-5 writer narrowing.
242
+ - path: docs/plans/evidence/**/*.md
243
+ writers: [phase-4, phase-5, ios-product-reality-auditor]
244
+ readers: [phase-5, phase-6, phase-7]
245
+ notes: |
246
+ Nested per-task / per-run evidence markdown (brand-drift.md,
247
+ fake-data-audit.md, dogfood/findings.md, per-task smoke-test notes).
248
+ - path: docs/plans/evidence/**/*.png
249
+ writers: [phase-3, phase-4, phase-5, ios-product-reality-auditor]
250
+ readers: [phase-5, phase-6, phase-7]
251
+ notes: |
252
+ Playwright screenshots, SwiftUI Preview captures, Maestro run captures,
253
+ design-reference screenshots. Written across multiple phases.
254
+ - path: docs/plans/evidence/**/*.{txt,har}
255
+ writers: [phase-4, phase-5]
256
+ readers: [phase-5, phase-6]
257
+ notes: |
258
+ Smoke-test evidence per protocols/smoke-test.md (HAR captures,
259
+ DOM snapshots, uncaught-exception logs).
260
+ - path: docs/plans/evidence/lrr/*.json
261
+ writers: [code-reviewer, security-reviewer, engineering-sre, a11y-architect, design-brand-guardian, pr-test-analyzer]
262
+ readers: [phase-6-aggregator, orchestrator]
263
+ notes: |
264
+ 5 chapter verdict files (one per chapter subagent, aka "chapter-judge"
265
+ role per MIGRATION-PLAN-FINAL §Stage 5) plus 1 sub-verdict file:
266
+ pr-test-analyzer writes eng-quality-coverage.json as a parallel
267
+ sub-dispatch from the Eng-Quality chapter (commands/build.md Step 6.1);
268
+ code-reviewer reads that file and folds its findings into eng-quality.json.
269
+ Aggregator and orchestrator are READ-ONLY on every file in this dir.
270
+ Enforced agent-role match in hooks/pre-tool-use.ts against subagent_type
271
+ staged by subagent-start.
272
+ - path: docs/plans/evidence/lrr-aggregate.json
273
+ writer: phase-6-aggregator
274
+ readers: [phase-7]
275
+ - path: docs/plans/evidence/lrr-incomplete.json
276
+ writer: phase-6-aggregator
277
+ readers: [orchestrator, user]
278
+ notes: File-completeness checkpoint output per protocols/launch-readiness.md Step 1.
279
+ - path: docs/plans/evidence/lrr-routing.json
280
+ writer: phase-6-aggregator
281
+ readers: [orchestrator]
282
+ notes: BLOCK routing via decided_by per commands/build.md Phase 6.2 STEP 4.
283
+ - path: docs/plans/evidence/reality-check-manifest.json
284
+ writer: testing-reality-checker
285
+ readers: [phase-6-aggregator, phase-7]
286
+ notes: |
287
+ Evidence-sweep manifest per commands/build.md Phase 6.0. Reality
288
+ Checker no longer issues combined_verdict (moved to LRR Aggregator).
289
+ - path: docs/plans/.build-state.json
290
+ writer: orchestrator
291
+ write_frequency: every-phase-boundary
292
+ readers: [all-phases, resume-handler]
293
+ - path: docs/plans/.build-state.md
294
+ writer: auto-rendered-view
295
+ readers: [read-only]
296
+ notes: regenerated from .build-state.json on every update
297
+ - path: docs/plans/.task-outputs/[task-id].json
298
+ writer: phase-4
299
+ readers: [phase-5, phase-6]
300
+ - path: docs/plans/build-log.md
301
+ writer: every-phase
302
+ write_mode: append-on-transition
303
+ readers: [user, resume]
304
+ - path: docs/plans/.active-learnings.md
305
+ writer: phase-0
306
+ readers: [phase-4-implementer]
307
+ notes: |
308
+ Top-3 cross-run learnings filtered at Step 0.1d and injected into
309
+ Phase 4 implementer briefings per protocols/decision-log.md.
310
+ - path: docs/plans/ios-verify-report.md
311
+ platform: ios
312
+ writer: phase-5
313
+ readers: [phase-6]
314
+ notes: |
315
+ Written by the /buildanything:verify iOS twin (Phase 5 dispatch).
316
+ Required before Phase 6 on iOS per protocols/ios-phase-branches.md.
317
+ - path: docs/plans/ios-ux-review-report.md
318
+ platform: ios
319
+ writer: phase-5
320
+ readers: [phase-6]
321
+ notes: |
322
+ Written by the /buildanything:ux-review iOS twin (Phase 5 dispatch).
323
+ Required before Phase 6 on iOS per protocols/ios-phase-branches.md.
324
+
325
+ phase_internal_scratch:
326
+ path_glob: docs/plans/phase1-scratch/*.{md,json}
327
+ files:
328
+ - idea-draft.md
329
+ - feature-intel.md
330
+ - tech-feasibility.md
331
+ - ux-research.md
332
+ - business-model.md
333
+ - findings-digest.md
334
+ - suggested-questions.md
335
+ - user-decisions.md
336
+ - prereqs.json
337
+ readers: [phase-1-only, phase-1.6-product-spec]
338
+ notes: |
339
+ SPENT after Step 1.6 (Product Spec). The product spec is the last
340
+ consumer of raw research files. Never read by Phase 3+.
341
+
342
+ # ---------------------------------------------------------------------------
343
+ # 2. Classification matrix
344
+ # ---------------------------------------------------------------------------
345
+ classifications:
346
+ project_type:
347
+ values: [web, ios]
348
+ default: web
349
+ rules:
350
+ - signal: "iOS keywords in prompt (iOS, iPhone, SwiftUI, Xcode, App Store, TestFlight, Apple, SwiftData, HIG, Liquid Glass, watchOS, visionOS)"
351
+ mode: interactive_confirm_or_autonomous_infer
352
+ value: ios
353
+ - signal: ".xcodeproj OR Package.swift OR *.swift in repo"
354
+ mode: auto
355
+ value: ios
356
+ branch_load:
357
+ ios: [protocols/ios-phase-branches.md, protocols/ios-context.md]
358
+ web: [protocols/web-phase-branches.md]
359
+
360
+ ios_features:
361
+ platform: ios
362
+ resolved_at: end-of-phase-2
363
+ flags:
364
+ - widgets
365
+ - liveActivities
366
+ - appIntents
367
+ - foundationModels
368
+ - storekit
369
+ - healthkit
370
+ - push
371
+ - cloudkit
372
+ - siri
373
+ - location
374
+ - background
375
+ - cameraPhoto
376
+ - microphone
377
+ - contacts
378
+ - calendar
379
+ - appleWatch
380
+ gates: [phase-4-skill-bundles, entitlement-generation]
381
+
382
+ # ---------------------------------------------------------------------------
383
+ # 3. Phase graph
384
+ # ---------------------------------------------------------------------------
385
+ phases:
386
+ - id: "0"
387
+ name: Pre-flight
388
+ kind: classify-only
389
+ skip_conditions: []
390
+ steps:
391
+ - id: resume-check
392
+ name: Resume handler
393
+ kind: internal
394
+ fires_on: [--resume, post-compaction-SessionStart-hook]
395
+ writes: []
396
+ reads: [.build-state.json, decisions.jsonl top-5, TodoWrite]
397
+ - id: "0.1"
398
+ name: Read the Room
399
+ kind: classify
400
+ writes_state: context_level
401
+ value_domain: [full-design, decision-brief, partial, raw-idea]
402
+ reads: [$ARGUMENTS, docs/plans/, docs/briefs/]
403
+ - id: "0.1b"
404
+ name: Project Type Classification
405
+ kind: classify
406
+ writes_state: project_type
407
+ value_domain: [web, ios]
408
+ - id: "0.1d"
409
+ name: Learnings Loader
410
+ kind: read
411
+ reads: [learnings.jsonl, ~/.claude/buildanything/learnings.jsonl]
412
+ writes: [docs/plans/.active-learnings.md]
413
+ - id: "0.2"
414
+ name: Initialize
415
+ kind: write
416
+ writes: [docs/plans/.build-state.json, TodoWrite]
417
+ notes:
418
+ - No prereq collection here; stack decision happens in phase 1 step 1.4.
419
+
420
+ - id: "-1"
421
+ name: iOS Bootstrap
422
+ kind: bootstrap
423
+ skip_conditions:
424
+ - project_type != ios
425
+ - .xcodeproj exists
426
+ steps:
427
+ - id: "-1.1"
428
+ name: Environment Check
429
+ kind: internal
430
+ verifies: [Xcode 26.3+, XcodeBuildMCP, apple-docs-mcp, Maestro CLI]
431
+ on_failure: hard-fail
432
+ - id: "-1.2"
433
+ name: Xcode Project Creation
434
+ kind: dispatch-single-internal
435
+ constraints: [iOS 26.0+, Swift 6.2+, SwiftUI, SwiftData, no Tuist, no XcodeGen]
436
+ - id: "-1.2b"
437
+ name: Overwrite Apple template tests
438
+ kind: write
439
+ writes: ["<target>Tests/<target>Tests.swift", "<target>UITests/<target>UITests.swift"]
440
+ notes: inserts AUTOGENERATED HARNESS marker so stub detector treats as MARKER not STUB
441
+ - id: "-1.3"
442
+ name: Bootstrap Verification
443
+ kind: internal
444
+ verifies: [xcode-ok, xcodeproj-exists, mcp-servers-respond, maestro-installed, first-build-launch-succeeded]
445
+ on_failure: HARD-STOP
446
+
447
+ - id: "1"
448
+ name: Discover
449
+ kind: sequential-with-parallel-research
450
+ skip_conditions: [context_level == full-design]
451
+ decision_rows_written: 3
452
+ backward_edges:
453
+ - from: GATE-1-NO
454
+ to: phase-1.step-1.0
455
+ steps:
456
+ - id: "1.0"
457
+ name: Initial Brainstorm
458
+ kind: dispatch-single-internal
459
+ role: brainstorm-facilitator-round-1
460
+ reads: [$ARGUMENTS, conversation]
461
+ writes: [phase1-scratch/idea-draft.md]
462
+ - id: "1.1"
463
+ name: Research (4 parallel)
464
+ kind: dispatch-parallel
465
+ dispatch_mode: single-message
466
+ dispatches:
467
+ - feature-intel
468
+ - tech-feasibility
469
+ - design-ux-researcher
470
+ - business-model
471
+ reads: [idea-draft.md]
472
+ writes:
473
+ - phase1-scratch/feature-intel.md
474
+ - phase1-scratch/tech-feasibility.md
475
+ - phase1-scratch/ux-research.md
476
+ - phase1-scratch/business-model.md
477
+ - id: "1.2"
478
+ name: Research Digest
479
+ kind: dispatch-single-internal
480
+ role: research-synthesizer
481
+ reads: [4-raw-research-files]
482
+ writes: [phase1-scratch/findings-digest.md, phase1-scratch/suggested-questions.md]
483
+ - id: "1.3"
484
+ name: Informed Brainstorm
485
+ kind: dispatch-single-internal
486
+ role: brainstorm-facilitator-round-2
487
+ reads: [phase1-scratch/findings-digest.md, phase1-scratch/suggested-questions.md]
488
+ writes: [phase1-scratch/user-decisions.md]
489
+ - id: "1.4"
490
+ name: Design Doc + CLAUDE.md
491
+ kind: dispatch-single-internal
492
+ role: design-doc-writer
493
+ writes: [docs/plans/design-doc.md, CLAUDE.md]
494
+ hard_gates:
495
+ - CLAUDE.md < 200 lines
496
+ emits_decision_rows: [tech-stack, data-model, scope-boundary]
497
+ - id: GATE-1
498
+ name: Quality Gate 1
499
+ kind: gate
500
+ interactive: user-approves-design
501
+ autonomous: auto-approve
502
+ - id: "1.5"
503
+ name: Prereq Collector
504
+ kind: dispatch-single-internal
505
+ reads: [design-doc.md#tech-stack]
506
+ writes: [phase1-scratch/prereqs.json]
507
+ ios_branch:
508
+ applies_to: phase-1
509
+ changes:
510
+ - prompt_additions: [App Store category landscape, TestFlight constraints, iOS 26 API availability]
511
+ - conditional_dispatch:
512
+ when: AI-or-Foundation-Models-build
513
+ agent: ios-foundation-models-specialist
514
+
515
+ - id: "2"
516
+ name: Plan / Architect
517
+ kind: team-then-sequence
518
+ skip_conditions: []
519
+ decision_rows_written: 4
520
+ backward_edges:
521
+ - from: GATE-2-NO
522
+ to: phase-2
523
+ - from: LRR-BLOCK-decided_by==architect
524
+ to: phase-2
525
+ template: re-entry
526
+ steps:
527
+ - id: "2.1"
528
+ name: Explore existing codebase
529
+ kind: dispatch-single-internal
530
+ conditional_on: existing-code-detected
531
+ - id: "2.2a"
532
+ name: Team create
533
+ kind: internal
534
+ call: 'TeamCreate(team_name: "phase-2-architects")'
535
+ - id: "2.2b"
536
+ name: 6 architects as teammates
537
+ kind: dispatch-team
538
+ dispatch_mode: single-message
539
+ parallel_count: 6
540
+ teammates:
541
+ - slot: backend-architect
542
+ subagent_type: engineering-backend-architect
543
+ domain: services, API contracts, DB schema
544
+ - slot: frontend-architect
545
+ subagent_type: engineering-frontend-developer
546
+ domain: component hierarchy, state mgmt, routing
547
+ - slot: data-engineer
548
+ subagent_type: engineering-data-engineer
549
+ domain: ETL/ELT, schema versioning, query patterns
550
+ - slot: security-engineer
551
+ subagent_type: engineering-security-engineer
552
+ domain: auth model, input validation, threat model
553
+ - slot: accessibility-auditor
554
+ subagent_type: a11y-architect
555
+ domain: WCAG 2.2 AA constraints on component/nav choice
556
+ - slot: performance-benchmarker
557
+ subagent_type: testing-performance-benchmarker
558
+ domain: quality-targets.json, bundle + latency budgets
559
+ cross_check_pairings:
560
+ - [backend, frontend, API contract shape]
561
+ - [security, backend, auth flow]
562
+ - [accessibility, frontend, component patterns]
563
+ - [performance, "backend+data", query shapes]
564
+ - id: "2.2c"
565
+ name: Wait for all idle
566
+ kind: internal
567
+ - id: "2.2d"
568
+ name: Team teardown
569
+ kind: internal
570
+ call: 'TeamDelete("phase-2-architects")'
571
+ - id: "2.3.1"
572
+ name: Implementation Blueprint
573
+ kind: dispatch-single
574
+ subagent_type: code-architect
575
+ reads: [6-post-debate-contracts]
576
+ writes: [architecture.md]
577
+ - id: "2.3.2"
578
+ name: Sprint Breakdown
579
+ kind: dispatch-single
580
+ subagent_type: planner
581
+ writes: [sprint-tasks.md]
582
+ required_fields: [Dependencies, Behavioral Test]
583
+ - id: "2.3.3"
584
+ name: Task DAG Validator
585
+ kind: dispatch-single-internal
586
+ validates: [no-circular-deps, IDs-exist, sizing-consistent, behavioral-tests-present]
587
+ - id: "2.3.4"
588
+ name: Refs Indexer
589
+ kind: dispatch-single-internal
590
+ writes: [refs.json]
591
+ - id: "2.3.loop"
592
+ name: Architecture Metric Loop
593
+ kind: loop
594
+ service: metric-loop
595
+ metric: PRD-coverage + specificity + simplicity
596
+ max_iterations: 3
597
+ - id: GATE-2
598
+ name: Quality Gate 2
599
+ kind: gate
600
+ interactive: approval
601
+ autonomous: auto-approve
602
+ - id: "2.ios-flags"
603
+ name: iOS Feature Flag Resolution
604
+ kind: classify
605
+ platform: ios
606
+ source: protocols/ios-phase-branches.md
607
+ ios_branch:
608
+ applies_to: phase-2
609
+ overrides:
610
+ - description: replaces Backend+Frontend architect dispatches with a single ios-swift-architect dispatch
611
+ covers: [SwiftUI view hierarchy + navigation, SwiftData schema + CloudKit, Swift Concurrency / actor isolation, iOS security (Keychain, entitlements, ATS)]
612
+ - security: engineering-security-engineer
613
+ writes:
614
+ - docs/plans/phase-2-contracts/*.md
615
+ - architecture.md
616
+ - sprint-tasks.md
617
+ - quality-targets.json
618
+ - refs.json
619
+ re_entry_rule: |
620
+ Only the architect whose domain matches decision_row.author re-runs.
621
+ Synthesizer re-runs once. Unaffected domains NOT re-run.
622
+
623
+ - id: "3"
624
+ name: Design
625
+ kind: dna-first-sequence
626
+ skip_conditions:
627
+ - project has no user-facing frontend (CLI tools, pure APIs, backend services)
628
+ backward_edges:
629
+ - from: LRR-BLOCK-decided_by==design-brand-guardian-or-phase-3-writer
630
+ to: phase-3
631
+ precision: re-entry to specific step by decision_row.author
632
+ web_branch:
633
+ source: protocols/web-phase-branches.md
634
+ steps:
635
+ - id: "3.0"
636
+ name: DESIGN.md Pass 1 — Brand DNA + Overview + Do's and Don'ts
637
+ kind: dispatch-single
638
+ subagent_type: design-brand-guardian
639
+ produces: |
640
+ DESIGN.md Pass 1 at repo root — Overview prose + ### Brand DNA
641
+ (7 axis values: Scope, Density, Character, Material, Motion, Type,
642
+ Copy) + Rationale + Locked At + References + Do's and Don'ts.
643
+ Pass 2 sections present as placeholder headings. YAML front
644
+ matter contains version + name only.
645
+ source: protocols/design-md-authoring.md
646
+ format_spec: protocols/design-md-spec.md
647
+ writes: [DESIGN.md]
648
+ - id: "3.1"
649
+ name: Visual Research (2 parallel, Playwright-driven)
650
+ kind: dispatch-parallel
651
+ dispatches:
652
+ - {subagent_type: visual-research, mode: competitive-audit}
653
+ - {subagent_type: visual-research, mode: inspiration-mining}
654
+ - id: "3.2"
655
+ name: Component Library Mapping (HARD-GATE source)
656
+ kind: dispatch-single
657
+ subagent_type: design-ui-designer
658
+ writes: [component-manifest.md]
659
+ - id: "3.2b"
660
+ name: DNA Persona Check
661
+ kind: dispatch-single
662
+ subagent_type: design-ux-researcher
663
+ may_route_to: "3.0"
664
+ - id: "3.3"
665
+ name: UX Architecture + Page Layouts
666
+ kind: dispatch-single
667
+ subagent_type: design-ux-architect
668
+ reads: [product-spec.md, DESIGN.md, component-manifest.md, architecture.md, design-references/]
669
+ writes: [ux-architecture.md, docs/plans/page-specs/*.md]
670
+ notes: |
671
+ Merged Step 3.3 + former Step 3.9 (Option C). Produces both
672
+ UX architecture (flows, navigation, IA) AND per-screen ASCII
673
+ wireframes + structured layout specs together. Flows and layouts
674
+ inform each other. Follows protocols/page-spec-schema.md.
675
+ One file per screen from product-spec Screen Inventory.
676
+ - id: "3.3b"
677
+ name: UX Flow Validation
678
+ kind: dispatch-single
679
+ dispatches: [design-ux-researcher]
680
+ reads: [docs/plans/ux-architecture.md, docs/plans/page-specs/, docs/plans/product-spec.md, docs/plans/design-doc.md, DESIGN.md]
681
+ writes: [docs/plans/ux-flow-validation.md]
682
+ backward_edges:
683
+ - from: critical-flow-issues
684
+ to: phase-3.step-3.3
685
+ - id: "3.4"
686
+ name: DESIGN.md Pass 2 — Tokens + remaining prose
687
+ kind: dispatch-single
688
+ subagent_type: design-ui-designer
689
+ role: writer
690
+ writes: [DESIGN.md]
691
+ contains: [yaml-tokens, colors, typography, layout, elevation, shapes, components, motion-as-h3, component-state-matrix-via-variants]
692
+ source: protocols/design-md-authoring.md
693
+ gate: |
694
+ DESIGN.md lint runs at Step 3.8. broken-refs == 0 is hard-fail.
695
+ Warnings (missing-primary, contrast-ratio WCAG AA, orphaned-tokens,
696
+ missing-typography, section-order) are logged to build-log.md but
697
+ do not block.
698
+ - id: "3.5"
699
+ name: Inclusive Visuals Check
700
+ kind: dispatch-single
701
+ subagent_type: design-inclusive-visuals-specialist
702
+ writes: [inclusive-visuals-audit.md]
703
+ - id: "3.6"
704
+ name: Style Guide Implementation
705
+ kind: loop
706
+ service: metric-loop
707
+ generator: engineering-frontend-developer
708
+ critic: design-critic
709
+ metric: 7-DNA-axes (140) + 5-craft-dims (100) = /240
710
+ target: 195
711
+ approaching_threshold: 163
712
+ max_iterations: 5
713
+ - id: "3.7"
714
+ name: A11y Design Review
715
+ kind: dispatch-single
716
+ subagent_type: a11y-architect
717
+ scope: /design-system + key pages
718
+ - id: "3.8"
719
+ name: Autonomous Quality Gate
720
+ kind: gate
721
+ action: log-summary-to-build-log.md
722
+ user_pause: false
723
+ hard_gates:
724
+ - UI/UX IS THE PRODUCT — do NOT skip this phase.
725
+ - Compositional not reconstructive — every element with a library variant MUST be mapped to that variant in component-manifest.md.
726
+ phase_4_entry_requirements:
727
+ - DESIGN.md (Pass 1 + Pass 2 complete; broken-refs lint == 0)
728
+ - component-manifest.md
729
+ - page-specs/ (at least one file)
730
+ ios_branch:
731
+ source: protocols/ios-phase-branches.md
732
+ steps:
733
+ - id: "3.0"
734
+ name: DESIGN.md Pass 1 — Brand DNA + Overview + Do's and Don'ts (shared with web)
735
+ kind: dispatch-single
736
+ subagent_type: design-brand-guardian
737
+ writes: [DESIGN.md]
738
+ notes: |
739
+ Same dispatch as web Step 3.0. Brand Guardian writes Pass 1
740
+ (Overview + 7-axis Brand DNA + Rationale + Locked At + References
741
+ + Do's and Don'ts). Pass 2 sections are placeholders. iOS-specific
742
+ Material gating (Liquid Glass requires iOS 26+ target) honored.
743
+ - id: "3.1-ios"
744
+ name: Visual research
745
+ kind: dispatch-single
746
+ subagent_type: visual-research
747
+ tooling: agent-browser -p desktop
748
+ sources: [screenlane.com, App Store web listings, Apple HIG pages, SF Symbols browser]
749
+ constraints: [no paid sources]
750
+ - id: "3.2-ios"
751
+ name: DESIGN.md Pass 2 — iOS YAML tokens + remaining prose
752
+ kind: dispatch-single
753
+ subagent_type: ios-swift-ui-design
754
+ role: writer
755
+ writes: [DESIGN.md]
756
+ contains: [yaml-tokens, colors-with-dark-pairs, typography-as-DynamicType-roles, rounded, spacing, components-iOS-vocabulary, motion-as-h3, component-state-matrix-via-variants]
757
+ source: protocols/design-md-authoring.md
758
+ grounded_in: [HIG, Liquid Glass (iOS 26+), SF Symbols, design-references.md]
759
+ - id: "3.3-ios"
760
+ name: UX Architecture + Page Layouts (iOS)
761
+ kind: dispatch-single
762
+ subagent_type: design-ux-architect
763
+ reads: [product-spec.md, DESIGN.md, architecture.md, design-references/]
764
+ writes: [ux-architecture.md, docs/plans/page-specs/*.md]
765
+ notes: |
766
+ iOS page-specs use single mobile-first ASCII wireframes (iPhone 16 Pro
767
+ 393x852), HIG navigation annotations, DESIGN.md component token refs,
768
+ Dynamic Type role declarations, and safe-area handling per screen.
769
+ Same agent as web Step 3.3 — design-ux-architect platform-gates via
770
+ skill bundle.
771
+ - id: "3.3b-ios"
772
+ name: UX Flow Validation (iOS)
773
+ kind: dispatch-single
774
+ dispatches: [design-ux-researcher]
775
+ reads: [docs/plans/ux-architecture.md, docs/plans/page-specs/, docs/plans/product-spec.md, docs/plans/design-doc.md, DESIGN.md]
776
+ writes: [docs/plans/ux-flow-validation.md]
777
+ backward_edges:
778
+ - from: critical-flow-issues
779
+ to: phase-3.step-3.3-ios
780
+ - id: "3.4-ios"
781
+ name: Visual QA loop
782
+ kind: loop
783
+ service: metric-loop
784
+ generator: ios-swift-ui-design
785
+ critic: design-critic
786
+ tooling: XcodeBuildMCP SwiftUI Preview captures
787
+ max_iterations: 3
788
+ - id: "3.8-ios"
789
+ name: DESIGN.md lint gate
790
+ kind: gate
791
+ tooling: hooks/design-md-lint
792
+ rules: |
793
+ broken-refs == 0 hard-fails back to Step 3.2-ios.
794
+ Warnings logged. Plus iOS-specific post-process checks
795
+ (dark-pair rule, Dynamic Type role check, iOS 26 gating)
796
+ per protocols/design-md-authoring.md §9.5.
797
+ phase_4_entry_requirements:
798
+ - DESIGN.md (Pass 1 + Pass 2 complete; broken-refs lint == 0)
799
+ - page-specs/ (at least one file from Step 3.3-ios)
800
+
801
+ - id: "4"
802
+ name: Build
803
+ kind: scaffold-then-parallel-task-batches
804
+ skip_conditions: []
805
+ scaffold:
806
+ steps:
807
+ - id: "4.0.a"
808
+ name: Project scaffolding
809
+ kind: dispatch-single
810
+ web: {subagent_type: engineering-rapid-prototyper}
811
+ ios: {notes: done by Phase -1; XcodeBuildMCP creates Views/ Models/ Services/ Resources/}
812
+ - id: "4.0.b"
813
+ name: Design system setup
814
+ kind: dispatch-single
815
+ web: {subagent_type: engineering-frontend-developer, produces: CSS tokens from DESIGN.md (YAML front matter)}
816
+ ios:
817
+ subagent_type: engineering-senior-developer
818
+ produces: |
819
+ Sources/<target>/DesignTokens.swift per protocols/design-md-authoring.md §9.4
820
+ SwiftUI translator (Color extensions Asset Catalog–backed with -dark pairs,
821
+ Font extensions mapped to Font.TextStyle Dynamic Type roles, Spacing/Radius
822
+ enums as CGFloat constants). Also Resources/Assets.xcassets color sets per
823
+ colors: token with light + dark appearances.
824
+ - id: "4.0.c"
825
+ name: Acceptance test scaffolding
826
+ kind: dispatch-single-internal
827
+ web: {produces: Playwright stubs in tests/e2e/acceptance/ (one per sprint-task Behavioral Test)}
828
+ ios:
829
+ produces: Maestro YAML stubs in maestro/
830
+ hard_gate: "find maestro -name '*.yaml' | wc -l >= 2"
831
+ - id: "4.0.d"
832
+ name: Scaffold metric loop (iOS only)
833
+ kind: loop
834
+ platform: ios
835
+ metric: clean build + @Test pass
836
+ max_iterations: 3
837
+ fix_agent: swift-build-resolver
838
+ - id: "4.0.e"
839
+ name: Verify gate
840
+ kind: gate
841
+ service: verify-protocol
842
+ notes: 7 checks must PASS before Step 4.1
843
+ product_owner_planning:
844
+ steps:
845
+ - id: "4.1"
846
+ name: Product Owner planning
847
+ kind: dispatch-single
848
+ subagent_type: product-owner
849
+ reads: [sprint-tasks.md, architecture.md, design-doc.md]
850
+ writes: [docs/plans/feature-delegation-plan.json]
851
+ writes_state: [feature_delegation_plan_path, current_wave]
852
+ notes: |
853
+ Product Owner decomposes sprint tasks into features, assigns
854
+ wave priorities, and defines acceptance criteria per feature.
855
+ Sets current_wave=1 in build state.
856
+ wave_execution:
857
+ id: "4.2"
858
+ name: Wave execution
859
+ kind: wave-loop
860
+ notes: |
861
+ For each wave in the feature delegation plan:
862
+ 1. Dispatch briefing-officer per feature in the wave (writes feature-briefs/{feature}.md)
863
+ 2. Orchestrator-driven per-task pipeline per feature (unchanged mechanics from prior per_task_flow)
864
+ briefing:
865
+ kind: dispatch-single
866
+ subagent_type: briefing-officer
867
+ reads: [refs.json, feature-delegation-plan.json, task-rows-for-feature]
868
+ writes: [docs/plans/feature-briefs/*.md]
869
+ per_task_flow:
870
+ executes: every task in every dependency-ordered batch within the feature
871
+ parallelism: Independent sibling tasks run in parallel (~30-50% wall-clock saving)
872
+ sub_steps:
873
+ - id: impl
874
+ kind: dispatch-single
875
+ dispatch_table:
876
+ web:
877
+ ui_SM: engineering-frontend-developer
878
+ ui_L: engineering-senior-developer
879
+ backend: engineering-backend-architect OR engineering-senior-developer
880
+ ai_ml: engineering-ai-engineer
881
+ ios:
882
+ ui_planner: ios-swift-ui-design
883
+ ui_impl: [engineering-senior-developer, engineering-mobile-app-builder]
884
+ foundation_models: ios-foundation-models-specialist
885
+ storekit: ios-storekit-specialist
886
+ - id: impl.re-entry
887
+ kind: dispatch-single
888
+ trigger: LRR backward-routing
889
+ inputs: [blocking_finding, prior_output, decision_row]
890
+ constraint: revise ONLY what finding requires
891
+ - id: sec-review
892
+ kind: dispatch-single
893
+ subagent_type: security-reviewer
894
+ conditional_on: [auth, PII, Keychain, credential tasks]
895
+ - id: swift-review
896
+ kind: dispatch-single
897
+ platform: ios
898
+ subagent_type: swift-reviewer
899
+ checklist: [Swift concurrency 6.2, SwiftUI, protocol DI, Foundation Models]
900
+ - id: cleanup
901
+ kind: dispatch-parallel
902
+ parallel_count: 2
903
+ dispatches:
904
+ - code-simplifier
905
+ - refactor-cleaner
906
+ scope: changeset-only
907
+ - id: review
908
+ kind: dispatch-parallel
909
+ parallel_count: 2
910
+ dispatch_mode: single-message
911
+ dispatches:
912
+ - code-reviewer
913
+ - silent-failure-hunter
914
+ confidence_threshold: 80
915
+ - id: metric-loop
916
+ kind: loop
917
+ service: metric-loop
918
+ max_iterations: 5
919
+ notes: THIS IS THE AUTHORITATIVE BEHAVIORAL VERIFICATION
920
+ ui_tooling:
921
+ web: agent-browser
922
+ ios: SwiftUI Preview captures
923
+ - id: smoke
924
+ kind: dispatch-single
925
+ platform: ios
926
+ tooling: Maestro flow against booted simulator
927
+ preconditions: [Maestro CLI installed, flow files exist, booted simulator available]
928
+ on_precondition_fail: BLOCKED
929
+ - id: verify
930
+ kind: gate
931
+ service: verify-protocol
932
+ scope: static-only
933
+ checks: [type-check, lint, build]
934
+ max_fix_attempts: 3
935
+ build_fix:
936
+ ios: swift-build-resolver
937
+ - id: scribe
938
+ kind: internal
939
+ role: orchestrator-scribe
940
+ action: |
941
+ Walks batch_results, collects non-null deviation_row objects, and
942
+ invokes the scribe_decision MCP tool once per row. The MCP is the
943
+ single writer for decisions.jsonl — it allocates D-{phase}-<seq>
944
+ IDs, stamps timestamp + status, validates against
945
+ decisions.schema.json, and atomically appends. The orchestrator
946
+ MUST NOT Write/Edit decisions.jsonl directly and MUST NOT
947
+ pre-compute IDs. .build-state.json.decisions_next_id is
948
+ deprecated under Stage 2 and removed at Stage 4 A7.
949
+ product_owner_acceptance:
950
+ steps:
951
+ - id: "4.3"
952
+ name: Product Owner acceptance
953
+ kind: dispatch-single
954
+ subagent_type: product-owner
955
+ reads: [feature-delegation-plan.json, task-outputs, evidence]
956
+ writes_state: [feature_acceptance, completed_features]
957
+ verdict: ACCEPTED | NEEDS_REVISION
958
+ notes: |
959
+ Product Owner reviews each feature in the completed wave.
960
+ ACCEPTED features are added to completed_features.
961
+ NEEDS_REVISION features are flagged for re-work in a subsequent wave.
962
+ wave_transition:
963
+ steps:
964
+ - id: "4.4"
965
+ name: Wave transition
966
+ kind: internal
967
+ writes_state: [current_wave]
968
+ notes: |
969
+ Increments current_wave. If more waves remain in the feature
970
+ delegation plan, loops back to Step 4.2. If all waves complete
971
+ (all features ACCEPTED), Phase 4 ends.
972
+ hard_gates:
973
+ - decisions.jsonl is orchestrator-scribe ONLY. Subagents return deviation_row objects.
974
+ - "Web compositional: component-manifest.md variants MUST be imported; writing from scratch triggers cleanup revert."
975
+ writes_per_task:
976
+ - source-code
977
+ - docs/plans/.task-outputs/[task-id].json
978
+ backward_edges:
979
+ - from: LRR-NEEDS_WORK-code-level
980
+ to: phase-4.target-feature
981
+ - from: phase-5-dogfood-feedback-synthesizer
982
+ to: phase-4.target-feature
983
+ - from: phase-5-track-b-feedback-synthesizer
984
+ to: phase-1.6-product-spec-writer
985
+ condition: spec-gap finding (target_phase 1, target_task_or_step "1.6")
986
+
987
+ - id: "5"
988
+ name: Audit
989
+ kind: track-a-then-track-b-then-cross-cutting-then-synth
990
+ skip_conditions: []
991
+ precondition: verify-protocol passes
992
+ web_branch:
993
+ steps:
994
+ - id: "5.1"
995
+ name: Track A — Engineering Reality (5 parallel auditors)
996
+ kind: dispatch-parallel
997
+ dispatch_mode: single-message
998
+ parallel_count: 5
999
+ dispatches:
1000
+ - subagent_type: testing-api-tester
1001
+ focus: API validation, edge cases, error responses, auth flows
1002
+ - subagent_type: testing-performance-benchmarker
1003
+ focus: response times, bottlenecks, Per-Scope bundle budgets
1004
+ bundle_budgets:
1005
+ Marketing: 500KB
1006
+ Product: 300KB
1007
+ Dashboard: 400KB
1008
+ Internal: 200KB
1009
+ block_threshold: ">25% over -> auto-blocks LRR SRE"
1010
+ - subagent_type: a11y-architect
1011
+ focus: WCAG 2.2 AA runtime
1012
+ checks: [contrast, keyboard, focus, touch-targets>=44px, reduced-motion]
1013
+ - subagent_type: engineering-security-engineer
1014
+ focus: auth, input validation, data exposure, dependency vulns
1015
+ - subagent_type: design-brand-guardian
1016
+ focus: DNA drift check
1017
+ notes: Phase 5 re-invite, does NOT issue verdict — feeds LRR Brand Guardian chapter
1018
+ notes: |
1019
+ design-ux-researcher (formerly item 5) was REMOVED — its work is
1020
+ subsumed by Track B per-feature audits at Step 5.2.
1021
+ - id: "5.2"
1022
+ name: Track B — Product Reality (parallel per-feature)
1023
+ kind: dispatch-parallel-per-feature
1024
+ dispatch_mode: single-message
1025
+ parallel_count: N (one per feature_id from graph_query_feature)
1026
+ subagent_type: product-reality-auditor
1027
+ feature_enumeration: graph-query-then-file-fallback
1028
+ zero_feature_gate: stop-and-route-to-1.6
1029
+ post_dispatch_verification:
1030
+ - presence-and-json-parseability-of-four-evidence-files
1031
+ - retry_once_with_graph_used_false
1032
+ - synthesize_finding_target_phase_1_step_1.6_on_second_failure
1033
+ writes_per_feature:
1034
+ - docs/plans/evidence/product-reality/{feature_id}/tests-generated.md
1035
+ - docs/plans/evidence/product-reality/{feature_id}/results.json
1036
+ - docs/plans/evidence/product-reality/{feature_id}/findings.json
1037
+ - docs/plans/evidence/product-reality/{feature_id}/coverage.json
1038
+ - docs/plans/evidence/product-reality/{feature_id}/screenshots/
1039
+ - id: "5.2.idx"
1040
+ name: Track B evidence graph index (best-effort)
1041
+ kind: graph-index
1042
+ best_effort: true
1043
+ rationale: hard-gated at Phase 6.0 by file presence + JSON parseability, not by graph index
1044
+ command: "node ${CLAUDE_PLUGIN_ROOT}/bin/graph-index.js docs/plans/evidence/product-reality/"
1045
+ - id: "5.3"
1046
+ name: Cross-cutting (3 parallel, ONE message)
1047
+ kind: dispatch-parallel
1048
+ dispatch_mode: single-message
1049
+ parallel_count: 3
1050
+ dispatches:
1051
+ - e2e-runner:
1052
+ tool: Playwright
1053
+ iterations: 3-mandatory
1054
+ scope: multi-feature User Journeys ONLY (single-feature happy paths covered by Track B at 5.2)
1055
+ - dogfood-runner:
1056
+ tool: agent-browser
1057
+ scope: emergent issues only (do not re-audit per-feature spec coverage)
1058
+ - fake-data-detector
1059
+ - id: "5.4"
1060
+ name: Feedback Synthesizer
1061
+ kind: dispatch-single
1062
+ subagent_type: product-feedback-synthesizer
1063
+ inputs:
1064
+ - docs/plans/evidence/dogfood/findings.md
1065
+ - docs/plans/evidence/product-reality/*/findings.json
1066
+ output: docs/plans/evidence/dogfood/classified-findings.json
1067
+ output_per_finding_fields: [finding_id, source, severity, target_phase, target_task_or_step, description, evidence_ref, related_decision_id]
1068
+ output_footer_fields: [graph_used, re_routed_findings, source_counts]
1069
+ source_discriminator: "dogfood | product-reality"
1070
+ routing_arms: [phase-4-code, phase-3-visual, phase-2-structural, phase-1.6-spec-gap]
1071
+ track_b_handling: validate-pass-through (re-route only if graph rejects)
1072
+ - id: "5.5"
1073
+ name: Fix loop
1074
+ kind: loop
1075
+ max_fix_cycles: 2
1076
+ spec_gap_routing: target_phase 1, target_task_or_step "1.6" -> product-spec-writer (re-triggers Track B for affected feature)
1077
+ ios_branch:
1078
+ replaces: web-6+3
1079
+ mode: track-a-b-crosscutting
1080
+ protocol: protocols/ios-phase-branches.md §Phase 5
1081
+ track_a:
1082
+ - testing-api-tester (API contract via XcodeBuildMCP test runner)
1083
+ - testing-performance-benchmarker (app launch, memory, binary size, scroll jank)
1084
+ - a11y-architect (swift-accessibility skill, XcodeBuildMCP describe_ui)
1085
+ - engineering-security-engineer (swift-security-expert skill, Keychain/ATS/privacy)
1086
+ - design-brand-guardian (simulator screenshots vs DESIGN.md DNA)
1087
+ track_b:
1088
+ agent: ios-product-reality-auditor
1089
+ execution_surface: XcodeBuildMCP + Maestro
1090
+ check_classes: [screen_reachability, state_coverage, transition_firing, rule_enforcement, happy_path, persona_walkthrough, wiring_manifest]
1091
+ crosscutting:
1092
+ - Maestro E2E (3 iterations, multi-device)
1093
+ - iOS Dogfood (XcodeBuildMCP exploratory via ios-debugger-agent)
1094
+ - iOS Fake-Data Detector (protocols/ios-fake-data-detector.md)
1095
+ shared_steps: Steps 5.4-5.5 in commands/build.md (synthesizer + fix loop)
1096
+ required_artifacts:
1097
+ - "docs/plans/evidence/track-a/*.json (5 files)"
1098
+ - docs/plans/evidence/brand-drift.md
1099
+ - "docs/plans/evidence/product-reality/*/results.json (one per feature)"
1100
+ - docs/plans/evidence/e2e/iter-3-results.json
1101
+ - docs/plans/evidence/dogfood/findings.md
1102
+ - docs/plans/evidence/fake-data-audit.md
1103
+ - "maestro/*.yaml (>=1)"
1104
+ - "docs/plans/evidence/maestro-runs/*.png (>=1)"
1105
+ writes:
1106
+ - docs/plans/evidence/*.json
1107
+ - evidence/fake-data-audit.md
1108
+ - evidence/dogfood/classified-findings.json
1109
+ - evidence/product-reality/*/tests-generated.md
1110
+ - evidence/product-reality/*/results.json
1111
+ - evidence/product-reality/*/findings.json
1112
+ - evidence/product-reality/*/coverage.json
1113
+ - "learnings.jsonl (reality sweep PITFALL/PATTERN rows)"
1114
+
1115
+ - id: "6"
1116
+ name: Launch Readiness Review
1117
+ kind: evidence-sweep-then-5-parallel-chapters-then-aggregator
1118
+ skip_conditions: []
1119
+ reality_check:
1120
+ id: "6.0"
1121
+ hard_gate_preconditions:
1122
+ all_projects: [".build-state.json exists + has recent VERIFY:PASS"]
1123
+ web:
1124
+ - e2e/iter-3-results.json
1125
+ - dogfood/findings.md
1126
+ - dogfood/classified-findings.json
1127
+ - fake-data-audit.md
1128
+ - "product-reality/*/coverage.json (one per feature in product-spec; missing = BLOCK)"
1129
+ - "product-reality/*/findings.json (one per feature)"
1130
+ - manifest.json
1131
+ ios:
1132
+ - ios-verify-report.md
1133
+ - ios-ux-review-report.md
1134
+ - maestro/*.yaml (>=1)
1135
+ - maestro-runs/*.png (>=1)
1136
+ - manifest.json
1137
+ dispatch:
1138
+ subagent_type: testing-reality-checker
1139
+ role: evidence-sweep-only
1140
+ evidence_ref_mode: by-PATH-only-never-paste
1141
+ tools: [Read, Glob, Grep]
1142
+ writes:
1143
+ - evidence/reality-check-manifest.json
1144
+ manifest_fields: [file_path, sha256, byte_count, modified_time, verdict_contribution]
1145
+ dissent_log_revisit:
1146
+ reads: decisions.jsonl
1147
+ filter: status==open AND revisit_criterion non-empty
1148
+ action: semantically evaluate criterion vs current evidence
1149
+ on_trigger:
1150
+ - structural-finding
1151
+ - "PITFALL row appended to learnings.jsonl with provenance.decision_id"
1152
+ - flag-for-LRR
1153
+ authority: Reality Checker does NOT issue combined_verdict — moved to LRR Aggregator.
1154
+ chapters:
1155
+ id: "6.1"
1156
+ parallel_count: 5
1157
+ dispatch_mode: single-message
1158
+ panel:
1159
+ - number: 1
1160
+ name: Eng-Quality
1161
+ merged_from: [Engineering, QA, PM]
1162
+ subagent_types:
1163
+ primary: code-reviewer
1164
+ parallel_sub_dispatch: pr-test-analyzer
1165
+ verdicts: [PASS, CONCERNS, BLOCK]
1166
+ extra_fields: [requirements_coverage]
1167
+ follow_up_allowed: false
1168
+ - number: 2
1169
+ name: Security
1170
+ subagent_type: security-reviewer
1171
+ verdicts: [PASS, CONCERNS, BLOCK]
1172
+ follow_up_allowed: true
1173
+ follow_up_caps: {mode: read-only, tool_calls_max: 15, only_if_verdict_would_be: BLOCK}
1174
+ - number: 3
1175
+ name: SRE
1176
+ includes: [Performance]
1177
+ subagent_type: engineering-sre
1178
+ verdicts: [PASS, CONCERNS, BLOCK]
1179
+ auto_block: bundle >25% over Scope budget
1180
+ follow_up_allowed: true
1181
+ follow_up_caps: {mode: read-only, tool_calls_max: 15, only_if_verdict_would_be: BLOCK}
1182
+ - number: 4
1183
+ name: A11y
1184
+ subagent_type: a11y-architect
1185
+ verdict_rules:
1186
+ PASS: 0 Serious + 0 Critical
1187
+ CONCERNS: 1-3 Serious + 0 Critical
1188
+ BLOCK: any Critical OR >3 Serious
1189
+ follow_up_allowed: false
1190
+ status: NEW_SEAT
1191
+ - number: 5
1192
+ name: Brand Guardian
1193
+ replaces: old-Design-mechanical-check
1194
+ subagent_type: design-brand-guardian
1195
+ verdicts: [PASS, CONCERNS, BLOCK]
1196
+ axes: 6 DNA axes + 5 craft dims
1197
+ follow_up_allowed: false
1198
+ every_chapter_writes:
1199
+ path: docs/plans/evidence/lrr/<chapter>.json
1200
+ schema_source: protocols/launch-readiness.md
1201
+ fields: [chapter, verdict, override_blocks_launch, evidence_files_read, findings, follow_up_spawned, follow_up_findings]
1202
+ finding_fields: [severity, description, evidence_ref, related_decision_id]
1203
+ pm_coverage_fold_in:
1204
+ id: "6.1a"
1205
+ location: sub-input of Eng-Quality chapter
1206
+ field: requirements_coverage
1207
+ notes: Chapter count stays 5.
1208
+ aggregator:
1209
+ id: "6.2"
1210
+ kind: internal-inline-role-string
1211
+ sequential: true
1212
+ runs_after: all-5-chapter-files-exist
1213
+ may_self_approve: false
1214
+ must_cite: triggering-rule-number
1215
+ step_1_file_completeness:
1216
+ glob: evidence/lrr/*.json
1217
+ on_missing_or_malformed: [log INCOMPLETE, write evidence/lrr-incomplete.json, STOP]
1218
+ step_2_rules:
1219
+ - id: 1
1220
+ trigger: ANY override_blocks_launch == true
1221
+ verdict: BLOCKED
1222
+ - id: 2
1223
+ trigger: ALL verdicts PASS AND 0 follow-ups
1224
+ verdict: PRODUCTION READY
1225
+ - id: 3
1226
+ trigger: ANY verdict BLOCK (without override)
1227
+ verdict: NEEDS WORK
1228
+ action: route findings to fix loop
1229
+ - id: 4
1230
+ trigger: ANY CONCERNS
1231
+ verdict: NEEDS WORK
1232
+ action: concerns logged
1233
+ - id: 5
1234
+ trigger: follow_up_spawned AND follow_up.confirmed == true
1235
+ action: treat parent chapter as BLOCK
1236
+ - id: 6
1237
+ trigger: contradictions between chapters on typed fields
1238
+ verdict: BLOCKED
1239
+ action: emit cross-chapter contradiction finding
1240
+ step_3_star_rule:
1241
+ symbol: ⭐⭐
1242
+ name: backward routing on BLOCK
1243
+ procedure:
1244
+ - for each BLOCK finding, read related_decision_id
1245
+ - look up row in decisions.jsonl
1246
+ - read decided_by
1247
+ - route BACKWARD to authoring phase
1248
+ known_decided_by:
1249
+ architect: phase-2
1250
+ design-brand-guardian: phase-3
1251
+ implementer: phase-4
1252
+ human: gates-1-and-2
1253
+ step_4_needs_work_classification:
1254
+ code: phase-4
1255
+ structural: phase-2
1256
+ visual: phase-3
1257
+ step_5_ready_writes:
1258
+ path: evidence/lrr-aggregate.json
1259
+ fields: [combined_verdict, chapter_verdicts, triggered_rule, findings, follow_ups_spawned, backward_routing, timestamp]
1260
+ forward_to: phase-7
1261
+ verdict_resolution:
1262
+ PRODUCTION_READY:
1263
+ action: advance-to-phase-7
1264
+ NEEDS_WORK:
1265
+ action: apply lrr-routing.json via re-entry template
1266
+ max_cycles: 2
1267
+ on_cycle_cap:
1268
+ interactive: present-remaining-issues-ask-direction
1269
+ autonomous: log-remaining-proceed-to-7-with-warning
1270
+ BLOCKED:
1271
+ action: apply backward routing
1272
+ never_proceed_to: phase-7
1273
+ hard_gates:
1274
+ - LRR Aggregator is the ONLY agent that may emit combined_verdict.
1275
+ re_entry_template: |
1276
+ INPUT: {blocking_finding, prior_output, decision_row}
1277
+ TASK: Revise prior_output to address blocking_finding ONLY.
1278
+ Do NOT redo unaffected work. Emit new decision_row.
1279
+
1280
+ - id: "7"
1281
+ name: Ship
1282
+ kind: sequential-ship-pipeline
1283
+ skip_conditions: []
1284
+ precondition:
1285
+ gate: verify-protocol
1286
+ checks: 7
1287
+ max_fix_attempts: 2
1288
+ steps:
1289
+ - id: "7.1.1"
1290
+ name: Technical Writer
1291
+ kind: dispatch-single
1292
+ subagent_type: engineering-technical-writer
1293
+ writes: [README, API docs, deploy notes]
1294
+ target_from: PRD
1295
+ - id: "7.1.2"
1296
+ name: Documentation Metric Loop
1297
+ kind: loop
1298
+ service: metric-loop
1299
+ metric: new-dev-can-follow-readme-end-to-end
1300
+ max_iterations: 3
1301
+ - id: "7.1.3"
1302
+ name: App Store Optimizer
1303
+ kind: dispatch-single
1304
+ platform: ios
1305
+ conditional_on: ship
1306
+ subagent_type: marketing-app-store-optimizer
1307
+ skills_granted: [asc-metadata-generator, asc-screenshot-generator, asc-privacy-manifest]
1308
+ also_dispatch: ios-app-review-guardian
1309
+ notes: Review guardian sanity check before TestFlight.
1310
+ - id: "7.1.4"
1311
+ name: Deploy
1312
+ kind: dispatch-single
1313
+ subagent_type: engineering-devops-automator
1314
+ actions: [pre-deploy-checks, execute-deploy, verify-200-at-deploy-URL]
1315
+ - id: "7.1.5"
1316
+ name: Completion Report
1317
+ kind: dispatch-single-internal
1318
+ reads: [lrr-aggregate.json, reality-check-manifest.json]
1319
+ surfaces_before_write: Verification Gap if declared != passing OR stub-flagged > 0
1320
+ ios_ship:
1321
+ optional: true
1322
+ notes: simulator-only is valid end-state; separate from web ship
1323
+ writes:
1324
+ - docs/plans/learnings.jsonl
1325
+
1326
+ # ---------------------------------------------------------------------------
1327
+ # 4. Cross-cutting callable services
1328
+ # ---------------------------------------------------------------------------
1329
+ callable_services:
1330
+ metric_loop:
1331
+ source: protocols/metric-loop.md
1332
+ callers:
1333
+ - phase-2 (architecture)
1334
+ - phase-3.step-3.6 (design critic web)
1335
+ - phase-3.step-3.4-ios (visual QA)
1336
+ - phase-4 (per-task)
1337
+ - phase-4.step-4.0.d (iOS scaffold)
1338
+ - phase-5.step-5.2 (hardening)
1339
+ - phase-7 (documentation)
1340
+ contract:
1341
+ metric_defined_by: orchestrator
1342
+ measure_and_fix_isolation: separate-dispatches-never-share-context
1343
+ fix_input_scope: top-issue + file-paths + acceptance-criteria (NOT full findings)
1344
+ fix_cadence: one fix per iteration; measure impact before next fix
1345
+ findings_persistence: each measurement is fresh; do not accumulate
1346
+ state_tracking: .build-state.json (survives compaction)
1347
+ iter_1_short_circuit: first measurement >= target + 10 -> exit, log exit_reason=short_circuit_iter1
1348
+ exit_conditions: [target-met, iter>=max, stall (2 consecutive delta<=0), short-circuit-iter1]
1349
+ autonomous_stall:
1350
+ accept_at: ">= 60% target (warning)"
1351
+ halt_below: "< 60% OR any CRITICAL remaining"
1352
+
1353
+ verify_protocol:
1354
+ source: protocols/verify.md
1355
+ callers: [phase-2, phase-4-scaffold-gate, phase-4-per-task, phase-5-pre-audit, phase-7-pre-ship]
1356
+ contract:
1357
+ sequential_checks: [Build, Type-Check, Lint, Test, Security, Diff-Review, Artifacts]
1358
+ stop_on: first-FAIL
1359
+ dispatch_mode: INTERNAL-inline role string "Verify scaffolding"
1360
+ phase_4_per_task_scope: static-only (behavioral already done in metric loop)
1361
+
1362
+ decision_log:
1363
+ source: protocols/decision-log.md
1364
+ schema: docs/migration/decisions.schema.json
1365
+ validator: eval/validate_decisions.py
1366
+ writers:
1367
+ - {phase: "1", agent: brainstorm-synthesis, row_count: 3}
1368
+ - {phase: "2.2", agent: architecture-synthesizer, row_count: 4}
1369
+ - {phase: "3", agent: DEFERRED, row_count: 0}
1370
+ - {phase: "4", agent: implementer, condition: deviation-only}
1371
+ readers: [phase-0-resume, phase-5-reality-checker, phase-6-lrr-aggregator]
1372
+ constraints:
1373
+ file: docs/plans/decisions.jsonl
1374
+ mode: append-only
1375
+ writer_authority: orchestrator-scribe-ONLY
1376
+ max_rejected_alternatives_per_row: 3
1377
+ max_sentences_per_reason: 2
1378
+ max_sentences_per_revisit_criterion: 1
1379
+ max_rows_per_phase: 5
1380
+ total_rows_per_build: 15-25
1381
+ linkage:
1382
+ finding_field: related_decision_id
1383
+ location: on-finding-object-inside-chapter-verdict
1384
+
1385
+ learnings:
1386
+ file: learnings.jsonl
1387
+ writers: [phase-5-reality-sweep, phase-7-late-learnings]
1388
+ readers: [phase-0-learnings-loader (step-0.1d), phase-5-reality-sweep]
1389
+ row_schema:
1390
+ - run_id
1391
+ - timestamp
1392
+ - project_type
1393
+ - phase_where_learning_surfaced
1394
+ - metric
1395
+ - top_issue
1396
+ - fix_applied
1397
+ - score_delta
1398
+ - pattern_type: [PITFALL, PATTERN, HEURISTIC]
1399
+ cross_run_injection: phase-4 implementer reads .active-learnings.md (top-3 filtered at phase-0)
1400
+
1401
+ briefing_officer:
1402
+ kind: dispatch-single
1403
+ subagent_type: briefing-officer
1404
+ callable_per: phase-4-feature
1405
+ contract:
1406
+ reads: [refs.json, feature-delegation-plan.json, task-rows-for-feature]
1407
+ writes: [docs/plans/feature-briefs/*.md]
1408
+ mode: refs-not-pastes
1409
+ excluded: [CLAUDE.md (auto-loaded), phase1-scratch (SPENT)]
1410
+ context_map_shape:
1411
+ persona_jtbd: design-doc.md#persona
1412
+ product_scope: design-doc.md#scope
1413
+ visual_tokens: DESIGN.md#tokens
1414
+ component_variants: component-manifest.md#[category]
1415
+ auth_model: architecture.md#auth
1416
+ data_schema: architecture.md#data-model
1417
+ sibling_task_deps: "sprint-tasks.md#[dep-id-1], #[dep-id-2]"
1418
+ prior_decisions: "decisions.jsonl rows [row-id-1], [row-id-2]"
1419
+ quality_targets: quality-targets.json (full file)
1420
+
1421
+ # ---------------------------------------------------------------------------
1422
+ # 5. Backward routing edges
1423
+ # ---------------------------------------------------------------------------
1424
+ backward_routing:
1425
+ - from: GATE-1-NO
1426
+ to: phase-1.step-1.0
1427
+ note: Brainstorm Facilitator r1 with feedback
1428
+ - from: GATE-2-NO
1429
+ to: phase-2
1430
+ note: with user feedback
1431
+ - from: phase-3.step-3.2b-DNA-persona-mismatch
1432
+ to: phase-3.step-3.0
1433
+ note: re-lock DNA
1434
+ - from: phase-5-audit-code-issue
1435
+ to: phase-4.target-feature
1436
+ - from: phase-5-audit-design-issue
1437
+ to: phase-3.target-step
1438
+ - from: phase-5-audit-spec-issue
1439
+ to: phase-2
1440
+ note: re-architect
1441
+ - from: phase-5-dogfood-classified
1442
+ to: target_phase-per-classified-findings.json
1443
+ - from: phase-6-LRR-BLOCK
1444
+ via: star-star-rule
1445
+ to: authoring-phase (per decisions.jsonl.decided_by)
1446
+ - from: phase-6-LRR-NEEDS_WORK-code
1447
+ to: phase-4.target-feature
1448
+ via: related_decision_id
1449
+ - from: phase-6-LRR-NEEDS_WORK-structural
1450
+ to: phase-2-or-phase-3
1451
+ note: by-finding-classification
1452
+
1453
+ re_entry_template: |
1454
+ INPUT: {blocking_finding: {...}, prior_output: <path>, decision_row: <row>}
1455
+ TASK: Revise prior_output to address blocking_finding ONLY.
1456
+ Do NOT redo unaffected work. Emit new decision_row.
1457
+
1458
+ re_entry_rules:
1459
+ phase-2: "Only the architect whose domain matches decision_row.author re-runs. Synthesizer re-runs once."
1460
+ phase-3: "Only the step named by decision_row.author re-runs (DNA lock, component manifest, or visual spec)."
1461
+ phase-4: "Target feature's Briefing Officer re-plans affected task(s). Orchestrator re-executes. Product-level issues route to Product Owner. Does NOT re-run unaffected tasks."
1462
+
1463
+ needs_work_loop_cap:
1464
+ max_cycles: 2
1465
+ on_third_needs_work:
1466
+ interactive: present-all-remaining-issues-ask-direction
1467
+ autonomous: log-remaining-proceed-to-phase-7-with-warning
1468
+
1469
+ # ---------------------------------------------------------------------------
1470
+ # 6. State schema (.build-state.json top-level)
1471
+ # ---------------------------------------------------------------------------
1472
+ state_schema:
1473
+ file: docs/plans/.build-state.json
1474
+ rendered_view: docs/plans/.build-state.md
1475
+ rendered_policy: regenerated-from-json-on-every-update-never-edit-markdown-directly
1476
+ compaction_trigger:
1477
+ check_at: every-phase-boundary
1478
+ field: dispatch_count
1479
+ threshold: 8
1480
+ action: save-all-state-reset-counter-regenerate-markdown-view
1481
+ note: TodoWrite does NOT survive compaction; rebuild from JSON on resume.
1482
+ fields:
1483
+ project_type: {type: enum, values: [web, ios]}
1484
+ ios_features: {type: object, when: project_type==ios, flags_count: 16}
1485
+ phase: {type: integer, range: [0, 7]}
1486
+ step: {type: string, pattern: "X.Y"}
1487
+ input: {type: string, value: $ARGUMENTS}
1488
+ context_level: {type: enum, values: [full-design, decision-brief, partial, raw-idea]}
1489
+ prerequisites: {type: object, populated_at: step-1.5}
1490
+ dispatch_count: {type: integer, reset_after_save: true}
1491
+ last_save_phase: {type: string}
1492
+ autonomous: {type: boolean}
1493
+ session_id: {type: string}
1494
+ session_started: {type: string, format: ISO-8601}
1495
+ completed_tasks: {type: array, items: task-id}
1496
+ metric_loop_scores: {type: array, items: per-loop-per-iter}
1497
+ decisions_next_id: {type: object, pattern: "{phase: next_seq}", example: {"1": 4, "2": 5, "4": 12}}
1498
+ resume_point:
1499
+ type: object
1500
+ fields:
1501
+ phase: {type: integer, range: [0, 7]}
1502
+ step: {type: string}
1503
+ completed_tasks: {type: array}
1504
+ git_branch: {type: string}