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.
- package/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +17 -3
- package/CHANGELOG.md +57 -0
- package/README.md +57 -61
- package/agents/a11y-architect.md +168 -0
- package/agents/briefing-officer.md +172 -0
- package/agents/business-model.md +82 -29
- package/agents/code-architect.md +80 -0
- package/agents/code-reviewer.md +256 -0
- package/agents/code-simplifier.md +72 -0
- package/agents/design-brand-guardian.md +312 -53
- package/agents/design-critic.md +144 -0
- package/agents/design-inclusive-visuals-specialist.md +8 -19
- package/agents/design-ui-designer.md +352 -56
- package/agents/design-ux-architect.md +418 -55
- package/agents/design-ux-researcher.md +359 -49
- package/agents/engineering-ai-engineer.md +28 -36
- package/agents/engineering-backend-architect.md +187 -36
- package/agents/engineering-data-engineer.md +227 -43
- package/agents/engineering-devops-automator.md +229 -74
- package/agents/engineering-frontend-developer.md +223 -34
- package/agents/engineering-mobile-app-builder.md +8 -1
- package/agents/engineering-rapid-prototyper.md +45 -11
- package/agents/engineering-security-engineer.md +265 -61
- package/agents/engineering-senior-developer.md +141 -19
- package/agents/engineering-sre.md +86 -0
- package/agents/engineering-technical-writer.md +287 -41
- package/agents/feature-intel.md +111 -0
- package/agents/ios-app-review-guardian.md +21 -2
- package/agents/ios-foundation-models-specialist.md +22 -2
- package/agents/ios-product-reality-auditor.md +292 -0
- package/agents/ios-storekit-specialist.md +11 -2
- package/agents/ios-swift-architect.md +29 -1
- package/agents/ios-swift-search.md +9 -1
- package/agents/ios-swift-ui-design.md +40 -5
- package/agents/marketing-app-store-optimizer.md +248 -64
- package/agents/planner.md +221 -0
- package/agents/pr-test-analyzer.md +64 -0
- package/agents/product-feedback-synthesizer.md +70 -2
- package/agents/product-owner.md +163 -0
- package/agents/product-reality-auditor.md +216 -0
- package/agents/product-spec-writer.md +176 -0
- package/agents/refactor-cleaner.md +110 -0
- package/agents/security-reviewer.md +129 -0
- package/agents/silent-failure-hunter.md +55 -0
- package/agents/swift-build-resolver.md +121 -0
- package/agents/swift-reviewer.md +113 -0
- package/agents/tech-feasibility.md +26 -4
- package/agents/testing-api-tester.md +238 -59
- package/agents/testing-evidence-collector.md +50 -1
- package/agents/testing-performance-benchmarker.md +23 -1
- package/agents/testing-reality-checker.md +7 -1
- package/agents/visual-research.md +118 -0
- package/bin/adapters/cycle-counter-tool.ts +155 -0
- package/bin/adapters/scribe-tool.ts +73 -0
- package/bin/adapters/state-save-tool.ts +130 -0
- package/bin/adapters/write-lease-tool.ts +127 -0
- package/bin/buildanything-runtime.js +15 -0
- package/bin/buildanything-runtime.ts +241 -0
- package/bin/graph-index.js +24 -0
- package/bin/graph-index.ts +340 -0
- package/bin/mcp-servers/graph-mcp.js +26 -0
- package/bin/mcp-servers/graph-mcp.ts +481 -0
- package/bin/mcp-servers/orchestrator-mcp.js +26 -0
- package/bin/mcp-servers/orchestrator-mcp.ts +361 -0
- package/bin/setup.js +312 -76
- package/commands/add-feature.md +2 -0
- package/commands/build.md +994 -265
- package/commands/fix.md +1 -1
- package/commands/idea-sweep.md +2 -2
- package/commands/self-check.md +121 -0
- package/commands/setup.md +61 -9
- package/commands/ux-review.md +5 -5
- package/commands/verify.md +9 -9
- package/docs/migration/agents.yaml +729 -0
- package/docs/migration/phase-graph.yaml +1504 -0
- package/docs/migration/sdk-host-compat.md +18 -0
- package/hooks/compile-writer-owner-cache.ts +171 -0
- package/hooks/design-md-lint +4 -0
- package/hooks/design-md-lint.ts +295 -0
- package/hooks/hooks.json +36 -0
- package/hooks/pre-tool-use +19 -0
- package/hooks/pre-tool-use.ts +807 -0
- package/hooks/record-mode-transitions.ts +235 -0
- package/hooks/session-start +71 -1
- package/hooks/subagent-start +17 -0
- package/hooks/subagent-start.ts +472 -0
- package/hooks/subagent-stop +17 -0
- package/hooks/subagent-stop.ts +153 -0
- package/package.json +26 -4
- package/protocols/agent-prompt-authoring.md +165 -0
- package/protocols/architecture-schema.md +178 -0
- package/protocols/cleanup.md +4 -0
- package/protocols/decision-log.md +135 -0
- package/protocols/design-md-authoring.md +520 -0
- package/protocols/design-md-spec.md +362 -0
- package/protocols/fake-data-detector.md +1 -1
- package/protocols/ios-context.md +10 -11
- package/protocols/ios-fake-data-detector.md +65 -0
- package/protocols/ios-phase-branches.md +299 -39
- package/protocols/launch-readiness.md +262 -0
- package/protocols/metric-loop.md +62 -2
- package/protocols/page-spec-schema.md +234 -0
- package/protocols/product-spec-schema.md +354 -0
- package/protocols/smoke-test.md +9 -1
- package/protocols/sprint-tasks-schema.md +53 -0
- package/protocols/state-schema.json +423 -0
- package/protocols/state-schema.md +202 -0
- package/protocols/verify.md +91 -3
- package/protocols/web-phase-branches.md +395 -75
- package/skills/ios/_VENDORED.md +2 -0
- package/skills/ios/app-store-connect-metadata/SKILL.md +148 -0
- package/skills/ios/asc-privacy-manifest/SKILL.md +350 -0
- package/skills/ios/hig-components-content/SKILL.md +86 -0
- package/skills/ios/hig-components-content/references/activity-views.md +79 -0
- package/skills/ios/hig-components-content/references/charts.md +180 -0
- package/skills/ios/hig-components-content/references/collections.md +48 -0
- package/skills/ios/hig-components-content/references/color-wells.md +42 -0
- package/skills/ios/hig-components-content/references/image-views.md +82 -0
- package/skills/ios/hig-components-content/references/image-wells.md +34 -0
- package/skills/ios/hig-components-content/references/lockups.md +78 -0
- package/skills/ios/hig-components-content/references/web-views.md +36 -0
- package/skills/ios/hig-components-controls/SKILL.md +88 -0
- package/skills/ios/hig-components-controls/references/combo-boxes.md +40 -0
- package/skills/ios/hig-components-controls/references/controls.md +112 -0
- package/skills/ios/hig-components-controls/references/gauges.md +74 -0
- package/skills/ios/hig-components-controls/references/labels.md +92 -0
- package/skills/ios/hig-components-controls/references/pickers.md +128 -0
- package/skills/ios/hig-components-controls/references/rating-indicators.md +38 -0
- package/skills/ios/hig-components-controls/references/segmented-controls.md +94 -0
- package/skills/ios/hig-components-controls/references/sliders.md +92 -0
- package/skills/ios/hig-components-controls/references/steppers.md +40 -0
- package/skills/ios/hig-components-controls/references/text-fields.md +88 -0
- package/skills/ios/hig-components-controls/references/text-views.md +56 -0
- package/skills/ios/hig-components-controls/references/toggles.md +127 -0
- package/skills/ios/hig-components-controls/references/token-fields.md +48 -0
- package/skills/ios/hig-components-controls/references/virtual-keyboards.md +156 -0
- package/skills/ios/hig-components-dialogs/SKILL.md +76 -0
- package/skills/ios/hig-components-dialogs/references/action-sheets.md +74 -0
- package/skills/ios/hig-components-dialogs/references/alerts.md +158 -0
- package/skills/ios/hig-components-dialogs/references/digit-entry-views.md +32 -0
- package/skills/ios/hig-components-dialogs/references/popovers.md +81 -0
- package/skills/ios/hig-components-dialogs/references/sheets.md +157 -0
- package/skills/ios/hig-components-layout/SKILL.md +99 -0
- package/skills/ios/hig-components-layout/references/boxes.md +48 -0
- package/skills/ios/hig-components-layout/references/column-views.md +44 -0
- package/skills/ios/hig-components-layout/references/lists-and-tables.md +99 -0
- package/skills/ios/hig-components-layout/references/ornaments.md +56 -0
- package/skills/ios/hig-components-layout/references/outline-views.md +64 -0
- package/skills/ios/hig-components-layout/references/panels.md +75 -0
- package/skills/ios/hig-components-layout/references/scroll-views.md +123 -0
- package/skills/ios/hig-components-layout/references/sidebars.md +109 -0
- package/skills/ios/hig-components-layout/references/split-views.md +110 -0
- package/skills/ios/hig-components-layout/references/tab-bars.md +173 -0
- package/skills/ios/hig-components-layout/references/tab-views.md +68 -0
- package/skills/ios/hig-components-layout/references/windows.md +188 -0
- package/skills/ios/hig-components-menus/SKILL.md +81 -0
- package/skills/ios/hig-components-menus/references/action-button.md +61 -0
- package/skills/ios/hig-components-menus/references/buttons.md +261 -0
- package/skills/ios/hig-components-menus/references/context-menus.md +105 -0
- package/skills/ios/hig-components-menus/references/disclosure-controls.md +84 -0
- package/skills/ios/hig-components-menus/references/dock-menus.md +40 -0
- package/skills/ios/hig-components-menus/references/edit-menus.md +88 -0
- package/skills/ios/hig-components-menus/references/menus.md +171 -0
- package/skills/ios/hig-components-menus/references/pop-up-buttons.md +70 -0
- package/skills/ios/hig-components-menus/references/pull-down-buttons.md +77 -0
- package/skills/ios/hig-components-menus/references/the-menu-bar.md +303 -0
- package/skills/ios/hig-components-menus/references/toolbars.md +256 -0
- package/skills/ios/hig-components-search/SKILL.md +68 -0
- package/skills/ios/hig-components-search/references/page-controls.md +120 -0
- package/skills/ios/hig-components-search/references/path-controls.md +40 -0
- package/skills/ios/hig-components-search/references/search-fields.md +189 -0
- package/skills/ios/hig-components-status/SKILL.md +80 -0
- package/skills/ios/hig-components-status/references/activity-rings.md +105 -0
- package/skills/ios/hig-components-status/references/progress-indicators.md +116 -0
- package/skills/ios/hig-components-status/references/status-bars.md +38 -0
- package/skills/ios/hig-components-system/SKILL.md +88 -0
- package/skills/ios/hig-components-system/references/app-clips.md +387 -0
- package/skills/ios/hig-components-system/references/app-shortcuts.md +114 -0
- package/skills/ios/hig-components-system/references/complications.md +425 -0
- package/skills/ios/hig-components-system/references/home-screen-quick-actions.md +42 -0
- package/skills/ios/hig-components-system/references/live-activities.md +442 -0
- package/skills/ios/hig-components-system/references/notifications.md +153 -0
- package/skills/ios/hig-components-system/references/top-shelf.md +135 -0
- package/skills/ios/hig-components-system/references/watch-faces.md +40 -0
- package/skills/ios/hig-components-system/references/widgets.md +517 -0
- package/skills/ios/hig-foundations/SKILL.md +98 -0
- package/skills/ios/hig-foundations/references/accessibility.md +291 -0
- package/skills/ios/hig-foundations/references/app-icons.md +210 -0
- package/skills/ios/hig-foundations/references/branding.md +44 -0
- package/skills/ios/hig-foundations/references/color.md +274 -0
- package/skills/ios/hig-foundations/references/dark-mode.md +116 -0
- package/skills/ios/hig-foundations/references/icons.md +263 -0
- package/skills/ios/hig-foundations/references/images.md +176 -0
- package/skills/ios/hig-foundations/references/immersive-experiences.md +174 -0
- package/skills/ios/hig-foundations/references/inclusion.md +189 -0
- package/skills/ios/hig-foundations/references/layout.md +425 -0
- package/skills/ios/hig-foundations/references/materials.md +238 -0
- package/skills/ios/hig-foundations/references/motion.md +103 -0
- package/skills/ios/hig-foundations/references/privacy.md +231 -0
- package/skills/ios/hig-foundations/references/right-to-left.md +206 -0
- package/skills/ios/hig-foundations/references/sf-symbols.md +310 -0
- package/skills/ios/hig-foundations/references/spatial-layout.md +142 -0
- package/skills/ios/hig-foundations/references/typography.md +1146 -0
- package/skills/ios/hig-foundations/references/writing.md +91 -0
- package/skills/ios/hig-inputs/SKILL.md +94 -0
- package/skills/ios/hig-inputs/references/apple-pencil-and-scribble.md +148 -0
- package/skills/ios/hig-inputs/references/camera-control.md +107 -0
- package/skills/ios/hig-inputs/references/digital-crown.md +83 -0
- package/skills/ios/hig-inputs/references/eyes.md +120 -0
- package/skills/ios/hig-inputs/references/focus-and-selection.md +120 -0
- package/skills/ios/hig-inputs/references/game-controls.md +156 -0
- package/skills/ios/hig-inputs/references/gestures.md +208 -0
- package/skills/ios/hig-inputs/references/gyro-and-accelerometer.md +40 -0
- package/skills/ios/hig-inputs/references/keyboards.md +234 -0
- package/skills/ios/hig-inputs/references/nearby-interactions.md +70 -0
- package/skills/ios/hig-inputs/references/pointing-devices.md +237 -0
- package/skills/ios/hig-inputs/references/remotes.md +67 -0
- package/skills/ios/hig-inputs/references/spatial-interactions.md +70 -0
- package/skills/ios/hig-patterns/SKILL.md +104 -0
- package/skills/ios/hig-patterns/references/charting-data.md +81 -0
- package/skills/ios/hig-patterns/references/collaboration-and-sharing.md +86 -0
- package/skills/ios/hig-patterns/references/drag-and-drop.md +134 -0
- package/skills/ios/hig-patterns/references/entering-data.md +69 -0
- package/skills/ios/hig-patterns/references/feedback.md +67 -0
- package/skills/ios/hig-patterns/references/file-management.md +135 -0
- package/skills/ios/hig-patterns/references/going-full-screen.md +79 -0
- package/skills/ios/hig-patterns/references/launching.md +81 -0
- package/skills/ios/hig-patterns/references/live-viewing-apps.md +79 -0
- package/skills/ios/hig-patterns/references/loading.md +59 -0
- package/skills/ios/hig-patterns/references/managing-accounts.md +107 -0
- package/skills/ios/hig-patterns/references/managing-notifications.md +99 -0
- package/skills/ios/hig-patterns/references/modality.md +82 -0
- package/skills/ios/hig-patterns/references/multitasking.md +131 -0
- package/skills/ios/hig-patterns/references/offering-help.md +117 -0
- package/skills/ios/hig-patterns/references/onboarding.md +69 -0
- package/skills/ios/hig-patterns/references/playing-audio.md +124 -0
- package/skills/ios/hig-patterns/references/playing-haptics.md +280 -0
- package/skills/ios/hig-patterns/references/playing-video.md +180 -0
- package/skills/ios/hig-patterns/references/printing.md +50 -0
- package/skills/ios/hig-patterns/references/ratings-and-reviews.md +48 -0
- package/skills/ios/hig-patterns/references/searching.md +70 -0
- package/skills/ios/hig-patterns/references/settings.md +84 -0
- package/skills/ios/hig-patterns/references/undo-and-redo.md +58 -0
- package/skills/ios/hig-patterns/references/workouts.md +76 -0
- package/skills/ios/hig-platforms/SKILL.md +84 -0
- package/skills/ios/hig-platforms/references/designing-for-games.md +159 -0
- package/skills/ios/hig-platforms/references/designing-for-ios.md +66 -0
- package/skills/ios/hig-platforms/references/designing-for-ipados.md +64 -0
- package/skills/ios/hig-platforms/references/designing-for-macos.md +70 -0
- package/skills/ios/hig-platforms/references/designing-for-tvos.md +68 -0
- package/skills/ios/hig-platforms/references/designing-for-visionos.md +85 -0
- package/skills/ios/hig-platforms/references/designing-for-watchos.md +74 -0
- package/skills/ios/hig-project-context/SKILL.md +133 -0
- package/skills/ios/hig-technologies/SKILL.md +107 -0
- package/skills/ios/hig-technologies/references/airplay.md +125 -0
- package/skills/ios/hig-technologies/references/always-on.md +62 -0
- package/skills/ios/hig-technologies/references/apple-pay.md +441 -0
- package/skills/ios/hig-technologies/references/augmented-reality.md +247 -0
- package/skills/ios/hig-technologies/references/carekit.md +224 -0
- package/skills/ios/hig-technologies/references/carplay.md +119 -0
- package/skills/ios/hig-technologies/references/game-center.md +343 -0
- package/skills/ios/hig-technologies/references/generative-ai.md +110 -0
- package/skills/ios/hig-technologies/references/healthkit.md +120 -0
- package/skills/ios/hig-technologies/references/homekit.md +343 -0
- package/skills/ios/hig-technologies/references/icloud.md +52 -0
- package/skills/ios/hig-technologies/references/id-verifier.md +73 -0
- package/skills/ios/hig-technologies/references/imessage-apps-and-stickers.md +105 -0
- package/skills/ios/hig-technologies/references/in-app-purchase.md +263 -0
- package/skills/ios/hig-technologies/references/live-photos.md +54 -0
- package/skills/ios/hig-technologies/references/mac-catalyst.md +216 -0
- package/skills/ios/hig-technologies/references/machine-learning.md +394 -0
- package/skills/ios/hig-technologies/references/maps.md +221 -0
- package/skills/ios/hig-technologies/references/nfc.md +51 -0
- package/skills/ios/hig-technologies/references/photo-editing.md +40 -0
- package/skills/ios/hig-technologies/references/researchkit.md +134 -0
- package/skills/ios/hig-technologies/references/shareplay.md +142 -0
- package/skills/ios/hig-technologies/references/shazamkit.md +47 -0
- package/skills/ios/hig-technologies/references/sign-in-with-apple.md +288 -0
- package/skills/ios/hig-technologies/references/siri.md +523 -0
- package/skills/ios/hig-technologies/references/tap-to-pay-on-iphone.md +208 -0
- package/skills/ios/hig-technologies/references/voiceover.md +90 -0
- package/skills/ios/hig-technologies/references/wallet.md +420 -0
- package/skills/ios/ios-bootstrap/SKILL.md +17 -8
- package/skills/ios/swift-actor-persistence/SKILL.md +143 -0
- package/skills/ios/swift-concurrency-6-2/SKILL.md +216 -0
- package/skills/ios/swift-protocol-di-testing/SKILL.md +190 -0
- package/skills/ios/swiftui-design-tokens/SKILL.md +475 -0
- package/skills/ios/writing-for-interfaces/SKILL.md +75 -0
- package/skills/web/accessibility/SKILL.md +146 -0
- package/skills/web/aceternity-ui/SKILL.md +719 -0
- package/skills/web/aceternity-ui/metadata.json +10 -0
- package/skills/web/api-design/SKILL.md +523 -0
- package/skills/web/chart-accessibility/SKILL.md +332 -0
- package/skills/web/composition-patterns/AGENTS.md +946 -0
- package/skills/web/composition-patterns/README.md +60 -0
- package/skills/web/composition-patterns/SKILL.md +89 -0
- package/skills/web/composition-patterns/metadata.json +11 -0
- package/skills/web/composition-patterns/rules/_sections.md +29 -0
- package/skills/web/composition-patterns/rules/_template.md +24 -0
- package/skills/web/composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
- package/skills/web/composition-patterns/rules/architecture-compound-components.md +112 -0
- package/skills/web/composition-patterns/rules/patterns-children-over-render-props.md +87 -0
- package/skills/web/composition-patterns/rules/patterns-explicit-variants.md +100 -0
- package/skills/web/composition-patterns/rules/react19-no-forwardref.md +42 -0
- package/skills/web/composition-patterns/rules/state-context-interface.md +191 -0
- package/skills/web/composition-patterns/rules/state-decouple-implementation.md +113 -0
- package/skills/web/composition-patterns/rules/state-lift-state.md +125 -0
- package/skills/web/cost-aware-llm-pipeline/SKILL.md +183 -0
- package/skills/web/database-migrations/SKILL.md +429 -0
- package/skills/web/deployment-patterns/SKILL.md +427 -0
- package/skills/web/docker-patterns/SKILL.md +364 -0
- package/skills/web/e2e-testing/SKILL.md +326 -0
- package/skills/web/lighthouse-ci/SKILL.md +361 -0
- package/skills/web/mcp-server-patterns/SKILL.md +69 -0
- package/skills/web/next-best-practices/SKILL.md +153 -0
- package/skills/web/next-best-practices/async-patterns.md +87 -0
- package/skills/web/next-best-practices/bundling.md +180 -0
- package/skills/web/next-best-practices/data-patterns.md +297 -0
- package/skills/web/next-best-practices/debug-tricks.md +105 -0
- package/skills/web/next-best-practices/directives.md +73 -0
- package/skills/web/next-best-practices/error-handling.md +227 -0
- package/skills/web/next-best-practices/file-conventions.md +140 -0
- package/skills/web/next-best-practices/font.md +245 -0
- package/skills/web/next-best-practices/functions.md +108 -0
- package/skills/web/next-best-practices/hydration-error.md +91 -0
- package/skills/web/next-best-practices/image.md +173 -0
- package/skills/web/next-best-practices/metadata.md +301 -0
- package/skills/web/next-best-practices/parallel-routes.md +287 -0
- package/skills/web/next-best-practices/route-handlers.md +146 -0
- package/skills/web/next-best-practices/rsc-boundaries.md +159 -0
- package/skills/web/next-best-practices/runtime-selection.md +39 -0
- package/skills/web/next-best-practices/scripts.md +141 -0
- package/skills/web/next-best-practices/self-hosting.md +371 -0
- package/skills/web/next-best-practices/suspense-boundaries.md +67 -0
- package/skills/web/next-cache-components/SKILL.md +411 -0
- package/skills/web/postgres-best-practices/SKILL.md +14 -0
- package/skills/web/postgres-best-practices/references/schema-design.md +9 -0
- package/skills/web/react-best-practices/AGENTS.md +3810 -0
- package/skills/web/react-best-practices/README.md +123 -0
- package/skills/web/react-best-practices/SKILL.md +149 -0
- package/skills/web/react-best-practices/metadata.json +15 -0
- package/skills/web/react-best-practices/rules/_sections.md +46 -0
- package/skills/web/react-best-practices/rules/_template.md +28 -0
- package/skills/web/react-best-practices/rules/advanced-effect-event-deps.md +56 -0
- package/skills/web/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/skills/web/react-best-practices/rules/advanced-init-once.md +42 -0
- package/skills/web/react-best-practices/rules/advanced-use-latest.md +39 -0
- package/skills/web/react-best-practices/rules/async-api-routes.md +38 -0
- package/skills/web/react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
- package/skills/web/react-best-practices/rules/async-defer-await.md +82 -0
- package/skills/web/react-best-practices/rules/async-dependencies.md +51 -0
- package/skills/web/react-best-practices/rules/async-parallel.md +28 -0
- package/skills/web/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/skills/web/react-best-practices/rules/bundle-analyzable-paths.md +63 -0
- package/skills/web/react-best-practices/rules/bundle-barrel-imports.md +60 -0
- package/skills/web/react-best-practices/rules/bundle-conditional.md +31 -0
- package/skills/web/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/skills/web/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/skills/web/react-best-practices/rules/bundle-preload.md +50 -0
- package/skills/web/react-best-practices/rules/client-event-listeners.md +74 -0
- package/skills/web/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/skills/web/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/skills/web/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/skills/web/react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/skills/web/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/skills/web/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/skills/web/react-best-practices/rules/js-cache-storage.md +70 -0
- package/skills/web/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/skills/web/react-best-practices/rules/js-early-exit.md +50 -0
- package/skills/web/react-best-practices/rules/js-flatmap-filter.md +60 -0
- package/skills/web/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/skills/web/react-best-practices/rules/js-index-maps.md +37 -0
- package/skills/web/react-best-practices/rules/js-length-check-first.md +49 -0
- package/skills/web/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/skills/web/react-best-practices/rules/js-request-idle-callback.md +105 -0
- package/skills/web/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/skills/web/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/skills/web/react-best-practices/rules/rendering-activity.md +26 -0
- package/skills/web/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/skills/web/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/skills/web/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/skills/web/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/skills/web/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/skills/web/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/skills/web/react-best-practices/rules/rendering-resource-hints.md +85 -0
- package/skills/web/react-best-practices/rules/rendering-script-defer-async.md +68 -0
- package/skills/web/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/skills/web/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/skills/web/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/skills/web/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/skills/web/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/skills/web/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/skills/web/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/skills/web/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/skills/web/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/skills/web/react-best-practices/rules/rerender-memo.md +44 -0
- package/skills/web/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/skills/web/react-best-practices/rules/rerender-no-inline-components.md +82 -0
- package/skills/web/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/skills/web/react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
- package/skills/web/react-best-practices/rules/rerender-transitions.md +40 -0
- package/skills/web/react-best-practices/rules/rerender-use-deferred-value.md +59 -0
- package/skills/web/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/skills/web/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/skills/web/react-best-practices/rules/server-auth-actions.md +96 -0
- package/skills/web/react-best-practices/rules/server-cache-lru.md +41 -0
- package/skills/web/react-best-practices/rules/server-cache-react.md +76 -0
- package/skills/web/react-best-practices/rules/server-dedup-props.md +65 -0
- package/skills/web/react-best-practices/rules/server-hoist-static-io.md +149 -0
- package/skills/web/react-best-practices/rules/server-no-shared-module-state.md +50 -0
- package/skills/web/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/skills/web/react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
- package/skills/web/react-best-practices/rules/server-serialization.md +38 -0
- package/skills/web/seo/SKILL.md +154 -0
- package/skills/web/web-design-guidelines/SKILL.md +39 -0
- package/skills/web/zap-scan-config/SKILL.md +444 -0
- package/skills/web/zap-scan-config/assets/.gitkeep +9 -0
- package/skills/web/zap-scan-config/assets/github_action.yml +207 -0
- package/skills/web/zap-scan-config/assets/gitlab_ci.yml +226 -0
- package/skills/web/zap-scan-config/assets/zap_automation.yaml +196 -0
- package/skills/web/zap-scan-config/assets/zap_context.xml +192 -0
- package/skills/web/zap-scan-config/references/EXAMPLE.md +40 -0
- package/skills/web/zap-scan-config/references/api_testing_guide.md +475 -0
- package/skills/web/zap-scan-config/references/authentication_guide.md +431 -0
- package/skills/web/zap-scan-config/references/false_positive_handling.md +427 -0
- package/skills/web/zap-scan-config/references/owasp_mapping.md +255 -0
- package/src/graph/ids.ts +86 -0
- package/src/graph/index.ts +32 -0
- package/src/graph/parser/architecture.ts +603 -0
- package/src/graph/parser/component-manifest.ts +268 -0
- package/src/graph/parser/decisions-jsonl.ts +407 -0
- package/src/graph/parser/design-md-pass2.ts +253 -0
- package/src/graph/parser/design-md.ts +477 -0
- package/src/graph/parser/page-spec.ts +496 -0
- package/src/graph/parser/product-spec.ts +930 -0
- package/src/graph/parser/screenshot.ts +342 -0
- package/src/graph/parser/sprint-tasks.ts +317 -0
- package/src/graph/storage/index.ts +1154 -0
- package/src/graph/types.ts +432 -0
- package/src/graph/util/dhash.ts +84 -0
- package/src/lrr/aggregator.ts +175 -0
- package/src/orchestrator/hooks/context-header.ts +119 -0
- package/src/orchestrator/hooks/token-accounting-emitter.ts +77 -0
- package/src/orchestrator/hooks/token-accounting.ts +112 -0
- package/src/orchestrator/mcp/cycle-counter.ts +130 -0
- package/src/orchestrator/mcp/scribe.ts +294 -0
- package/src/orchestrator/mcp/state-save.ts +149 -0
- package/src/orchestrator/mcp/write-lease.ts +184 -0
- package/src/orchestrator/phase4-shared-context.ts +57 -0
- package/src/orchestrator/schemas/backward-edge.ts +46 -0
- package/agents/agentic-identity-trust.md +0 -121
- package/agents/data-consolidation-agent.md +0 -39
- package/agents/design-image-prompt-engineer.md +0 -105
- package/agents/design-visual-storyteller.md +0 -147
- package/agents/design-whimsy-injector.md +0 -89
- package/agents/engineering-autonomous-optimization-architect.md +0 -105
- package/agents/market-intel.md +0 -35
- package/agents/marketing-instagram-curator.md +0 -111
- package/agents/marketing-reddit-community-builder.md +0 -121
- package/agents/marketing-social-media-strategist.md +0 -74
- package/agents/marketing-tiktok-strategist.md +0 -123
- package/agents/marketing-twitter-engager.md +0 -124
- package/agents/marketing-wechat-official-account.md +0 -143
- package/agents/marketing-xiaohongshu-specialist.md +0 -136
- package/agents/marketing-zhihu-strategist.md +0 -160
- package/agents/product-behavioral-nudge-engine.md +0 -78
- package/agents/project-management-experiment-tracker.md +0 -102
- package/agents/report-distribution-agent.md +0 -43
- package/agents/risk-analysis.md +0 -45
- package/agents/sales-data-extraction-agent.md +0 -46
- package/agents/specialized-cultural-intelligence-strategist.md +0 -65
- package/agents/specialized-developer-advocate.md +0 -146
- package/agents/support-analytics-reporter.md +0 -133
- package/agents/support-executive-summary-generator.md +0 -64
- package/agents/support-finance-tracker.md +0 -145
- package/agents/support-legal-compliance-checker.md +0 -129
- package/agents/support-support-responder.md +0 -91
- package/agents/testing-accessibility-auditor.md +0 -110
- package/agents/testing-test-results-analyzer.md +0 -97
- package/agents/testing-tool-evaluator.md +0 -76
- package/agents/testing-workflow-optimizer.md +0 -99
- package/agents/user-research.md +0 -40
- package/protocols/brainstorm.md +0 -99
- package/protocols/design.md +0 -269
- package/protocols/planning.md +0 -87
- package/skills/ios/ios-hig/SKILL.md +0 -41
- package/skills/ios/ios-hig/references/accessibility.md +0 -81
- package/skills/ios/ios-hig/references/content.md +0 -142
- package/skills/ios/ios-hig/references/feedback.md +0 -123
- package/skills/ios/ios-hig/references/interaction.md +0 -199
- package/skills/ios/ios-hig/references/performance-platform.md +0 -129
- package/skills/ios/ios-hig/references/privacy-permissions.md +0 -181
- 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}
|