buildanything 2.0.0 → 2.1.2
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 +1 -1
- package/.claude-plugin/plugin.json +9 -1
- package/README.md +57 -61
- package/agents/a11y-architect.md +2 -0
- package/agents/briefing-officer.md +172 -0
- package/agents/business-model.md +14 -12
- package/agents/code-architect.md +6 -1
- package/agents/code-reviewer.md +3 -2
- package/agents/code-simplifier.md +12 -4
- package/agents/design-brand-guardian.md +19 -0
- package/agents/design-critic.md +16 -11
- package/agents/design-inclusive-visuals-specialist.md +2 -0
- package/agents/design-ui-designer.md +17 -0
- package/agents/design-ux-architect.md +15 -0
- package/agents/design-ux-researcher.md +102 -7
- package/agents/engineering-ai-engineer.md +2 -0
- package/agents/engineering-backend-architect.md +2 -0
- package/agents/engineering-data-engineer.md +2 -0
- package/agents/engineering-devops-automator.md +2 -0
- package/agents/engineering-frontend-developer.md +13 -0
- package/agents/engineering-mobile-app-builder.md +2 -0
- package/agents/engineering-rapid-prototyper.md +15 -2
- package/agents/engineering-security-engineer.md +2 -0
- package/agents/engineering-senior-developer.md +13 -0
- package/agents/engineering-sre.md +2 -0
- package/agents/engineering-technical-writer.md +2 -0
- package/agents/feature-intel.md +8 -7
- package/agents/ios-app-review-guardian.md +2 -0
- package/agents/ios-foundation-models-specialist.md +2 -0
- package/agents/ios-product-reality-auditor.md +292 -0
- package/agents/ios-storekit-specialist.md +2 -0
- package/agents/ios-swift-architect.md +1 -0
- package/agents/ios-swift-search.md +1 -0
- package/agents/ios-swift-ui-design.md +7 -4
- package/agents/marketing-app-store-optimizer.md +2 -0
- package/agents/planner.md +6 -1
- package/agents/pr-test-analyzer.md +3 -2
- package/agents/product-feedback-synthesizer.md +62 -0
- 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 +9 -1
- package/agents/security-reviewer.md +2 -1
- package/agents/silent-failure-hunter.md +2 -1
- package/agents/swift-build-resolver.md +2 -0
- package/agents/swift-reviewer.md +2 -1
- package/agents/tech-feasibility.md +5 -3
- package/agents/testing-api-tester.md +2 -0
- package/agents/testing-evidence-collector.md +24 -0
- package/agents/testing-performance-benchmarker.md +2 -0
- package/agents/testing-reality-checker.md +2 -1
- package/agents/visual-research.md +7 -5
- package/bin/adapters/scribe-tool.ts +4 -2
- package/bin/adapters/write-lease-tool.ts +1 -1
- package/bin/buildanything-runtime.ts +20 -107
- 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 +272 -111
- package/commands/build.md +424 -177
- package/commands/idea-sweep.md +2 -2
- package/commands/setup.md +15 -4
- package/commands/ux-review.md +3 -3
- package/commands/verify.md +3 -0
- package/docs/migration/phase-graph.yaml +573 -157
- package/hooks/design-md-lint +4 -0
- package/hooks/design-md-lint.ts +295 -0
- package/hooks/pre-tool-use.ts +37 -6
- package/hooks/record-mode-transitions.ts +63 -6
- package/hooks/subagent-start.ts +3 -2
- package/package.json +3 -1
- package/protocols/agent-prompt-authoring.md +165 -0
- package/protocols/architecture-schema.md +10 -3
- package/protocols/cleanup.md +4 -0
- package/protocols/decision-log.md +8 -4
- 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-fake-data-detector.md +65 -0
- package/protocols/ios-phase-branches.md +128 -43
- package/protocols/launch-readiness.md +9 -5
- package/protocols/metric-loop.md +1 -1
- package/protocols/page-spec-schema.md +234 -0
- package/protocols/product-spec-schema.md +354 -0
- package/protocols/sprint-tasks-schema.md +53 -0
- package/protocols/state-schema.json +38 -3
- package/protocols/state-schema.md +32 -2
- package/protocols/verify.md +29 -1
- package/protocols/web-phase-branches.md +246 -76
- package/skills/ios/ios-bootstrap/SKILL.md +1 -1
- 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 +105 -10
- package/src/orchestrator/hooks/context-header.ts +34 -10
- package/src/orchestrator/hooks/token-accounting.ts +25 -14
- package/src/orchestrator/mcp/cycle-counter.ts +2 -1
- package/src/orchestrator/mcp/scribe.ts +27 -16
- package/src/orchestrator/mcp/write-lease.ts +30 -13
- package/src/orchestrator/phase4-shared-context.ts +20 -4
- package/protocols/visual-dna.md +0 -185
|
@@ -28,27 +28,126 @@ artifacts:
|
|
|
28
28
|
- path: docs/plans/quality-targets.json
|
|
29
29
|
writer: phase-2
|
|
30
30
|
readers: [phase-4, phase-5, phase-6]
|
|
31
|
-
- path: docs/plans/
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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.
|
|
39
67
|
- path: docs/plans/component-manifest.md
|
|
40
68
|
platform: web
|
|
41
69
|
writer: phase-3
|
|
42
70
|
readers: [phase-4]
|
|
43
71
|
notes: HARD-GATE import source
|
|
44
|
-
- path: docs/plans/
|
|
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
|
|
45
97
|
platform: web
|
|
46
98
|
writer: phase-3
|
|
47
|
-
readers: [phase-3, phase-4, phase-5
|
|
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.
|
|
48
131
|
- path: docs/plans/refs.json
|
|
49
|
-
|
|
50
|
-
extended_by: phase-3
|
|
132
|
+
writers: [phase-2, phase-3]
|
|
51
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.
|
|
52
151
|
- path: docs/plans/decisions.jsonl
|
|
53
152
|
writer: orchestrator-scribe
|
|
54
153
|
write_mode: append-only
|
|
@@ -57,21 +156,136 @@ artifacts:
|
|
|
57
156
|
- path: docs/plans/learnings.jsonl
|
|
58
157
|
writers: [phase-5, phase-7]
|
|
59
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.
|
|
60
215
|
- path: docs/plans/evidence/*.json
|
|
61
216
|
writer: phase-5
|
|
62
217
|
contributors: [phase-4]
|
|
63
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).
|
|
64
260
|
- path: docs/plans/evidence/lrr/*.json
|
|
65
|
-
writers: [code-reviewer, security-reviewer, engineering-sre, a11y-architect, design-brand-guardian]
|
|
261
|
+
writers: [code-reviewer, security-reviewer, engineering-sre, a11y-architect, design-brand-guardian, pr-test-analyzer]
|
|
66
262
|
readers: [phase-6-aggregator, orchestrator]
|
|
67
263
|
notes: |
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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.
|
|
72
272
|
- path: docs/plans/evidence/lrr-aggregate.json
|
|
73
273
|
writer: phase-6-aggregator
|
|
74
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).
|
|
75
289
|
- path: docs/plans/.build-state.json
|
|
76
290
|
writer: orchestrator
|
|
77
291
|
write_frequency: every-phase-boundary
|
|
@@ -87,6 +301,26 @@ artifacts:
|
|
|
87
301
|
writer: every-phase
|
|
88
302
|
write_mode: append-on-transition
|
|
89
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.
|
|
90
324
|
|
|
91
325
|
phase_internal_scratch:
|
|
92
326
|
path_glob: docs/plans/phase1-scratch/*.{md,json}
|
|
@@ -100,8 +334,10 @@ phase_internal_scratch:
|
|
|
100
334
|
- suggested-questions.md
|
|
101
335
|
- user-decisions.md
|
|
102
336
|
- prereqs.json
|
|
103
|
-
readers: [phase-1-only]
|
|
104
|
-
notes:
|
|
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+.
|
|
105
341
|
|
|
106
342
|
# ---------------------------------------------------------------------------
|
|
107
343
|
# 2. Classification matrix
|
|
@@ -397,11 +633,18 @@ phases:
|
|
|
397
633
|
source: protocols/web-phase-branches.md
|
|
398
634
|
steps:
|
|
399
635
|
- id: "3.0"
|
|
400
|
-
name:
|
|
636
|
+
name: DESIGN.md Pass 1 — Brand DNA + Overview + Do's and Don'ts
|
|
401
637
|
kind: dispatch-single
|
|
402
638
|
subagent_type: design-brand-guardian
|
|
403
|
-
produces:
|
|
404
|
-
|
|
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]
|
|
405
648
|
- id: "3.1"
|
|
406
649
|
name: Visual Research (2 parallel, Playwright-driven)
|
|
407
650
|
kind: dispatch-parallel
|
|
@@ -419,17 +662,39 @@ phases:
|
|
|
419
662
|
subagent_type: design-ux-researcher
|
|
420
663
|
may_route_to: "3.0"
|
|
421
664
|
- id: "3.3"
|
|
422
|
-
name: UX Architecture
|
|
665
|
+
name: UX Architecture + Page Layouts
|
|
423
666
|
kind: dispatch-single
|
|
424
667
|
subagent_type: design-ux-architect
|
|
425
|
-
|
|
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
|
|
426
685
|
- id: "3.4"
|
|
427
|
-
name:
|
|
686
|
+
name: DESIGN.md Pass 2 — Tokens + remaining prose
|
|
428
687
|
kind: dispatch-single
|
|
429
688
|
subagent_type: design-ui-designer
|
|
430
689
|
role: writer
|
|
431
|
-
writes: [
|
|
432
|
-
contains: [tokens,
|
|
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.
|
|
433
698
|
- id: "3.5"
|
|
434
699
|
name: Inclusive Visuals Check
|
|
435
700
|
kind: dispatch-single
|
|
@@ -441,8 +706,9 @@ phases:
|
|
|
441
706
|
service: metric-loop
|
|
442
707
|
generator: engineering-frontend-developer
|
|
443
708
|
critic: design-critic
|
|
444
|
-
metric:
|
|
445
|
-
target:
|
|
709
|
+
metric: 7-DNA-axes (140) + 5-craft-dims (100) = /240
|
|
710
|
+
target: 195
|
|
711
|
+
approaching_threshold: 163
|
|
446
712
|
max_iterations: 5
|
|
447
713
|
- id: "3.7"
|
|
448
714
|
name: A11y Design Review
|
|
@@ -458,12 +724,22 @@ phases:
|
|
|
458
724
|
- UI/UX IS THE PRODUCT — do NOT skip this phase.
|
|
459
725
|
- Compositional not reconstructive — every element with a library variant MUST be mapped to that variant in component-manifest.md.
|
|
460
726
|
phase_4_entry_requirements:
|
|
461
|
-
-
|
|
462
|
-
- visual-design-spec.md
|
|
727
|
+
- DESIGN.md (Pass 1 + Pass 2 complete; broken-refs lint == 0)
|
|
463
728
|
- component-manifest.md
|
|
729
|
+
- page-specs/ (at least one file)
|
|
464
730
|
ios_branch:
|
|
465
731
|
source: protocols/ios-phase-branches.md
|
|
466
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.
|
|
467
743
|
- id: "3.1-ios"
|
|
468
744
|
name: Visual research
|
|
469
745
|
kind: dispatch-single
|
|
@@ -472,11 +748,35 @@ phases:
|
|
|
472
748
|
sources: [screenlane.com, App Store web listings, Apple HIG pages, SF Symbols browser]
|
|
473
749
|
constraints: [no paid sources]
|
|
474
750
|
- id: "3.2-ios"
|
|
475
|
-
name: iOS
|
|
751
|
+
name: DESIGN.md Pass 2 — iOS YAML tokens + remaining prose
|
|
476
752
|
kind: dispatch-single
|
|
477
753
|
subagent_type: ios-swift-ui-design
|
|
478
|
-
|
|
479
|
-
|
|
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
|
|
480
780
|
- id: "3.4-ios"
|
|
481
781
|
name: Visual QA loop
|
|
482
782
|
kind: loop
|
|
@@ -485,8 +785,18 @@ phases:
|
|
|
485
785
|
critic: design-critic
|
|
486
786
|
tooling: XcodeBuildMCP SwiftUI Preview captures
|
|
487
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.
|
|
488
797
|
phase_4_entry_requirements:
|
|
489
|
-
-
|
|
798
|
+
- DESIGN.md (Pass 1 + Pass 2 complete; broken-refs lint == 0)
|
|
799
|
+
- page-specs/ (at least one file from Step 3.3-ios)
|
|
490
800
|
|
|
491
801
|
- id: "4"
|
|
492
802
|
name: Build
|
|
@@ -502,8 +812,15 @@ phases:
|
|
|
502
812
|
- id: "4.0.b"
|
|
503
813
|
name: Design system setup
|
|
504
814
|
kind: dispatch-single
|
|
505
|
-
web: {subagent_type: engineering-frontend-developer, produces: CSS tokens from
|
|
506
|
-
ios:
|
|
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.
|
|
507
824
|
- id: "4.0.c"
|
|
508
825
|
name: Acceptance test scaffolding
|
|
509
826
|
kind: dispatch-single-internal
|
|
@@ -523,91 +840,135 @@ phases:
|
|
|
523
840
|
kind: gate
|
|
524
841
|
service: verify-protocol
|
|
525
842
|
notes: 7 checks must PASS before Step 4.1
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
- id: briefing
|
|
531
|
-
kind: dispatch-single
|
|
532
|
-
subagent_type: briefing-officer-internal
|
|
533
|
-
reads: [refs.json, task-row]
|
|
534
|
-
writes: ~40-line CONTEXT MAP
|
|
535
|
-
- id: impl
|
|
536
|
-
kind: dispatch-single
|
|
537
|
-
dispatch_table:
|
|
538
|
-
web:
|
|
539
|
-
ui_SM: engineering-frontend-developer
|
|
540
|
-
ui_L: engineering-senior-developer
|
|
541
|
-
backend: engineering-backend-architect OR engineering-senior-developer
|
|
542
|
-
ai_ml: engineering-ai-engineer
|
|
543
|
-
ios:
|
|
544
|
-
ui_planner: ios-swift-ui-design
|
|
545
|
-
ui_impl: [engineering-senior-developer, engineering-mobile-app-builder]
|
|
546
|
-
foundation_models: ios-foundation-models-specialist
|
|
547
|
-
storekit: ios-storekit-specialist
|
|
548
|
-
- id: impl.re-entry
|
|
549
|
-
kind: dispatch-single
|
|
550
|
-
trigger: LRR backward-routing
|
|
551
|
-
inputs: [blocking_finding, prior_output, decision_row]
|
|
552
|
-
constraint: revise ONLY what finding requires
|
|
553
|
-
- id: sec-review
|
|
554
|
-
kind: dispatch-single
|
|
555
|
-
subagent_type: security-reviewer
|
|
556
|
-
conditional_on: [auth, PII, Keychain, credential tasks]
|
|
557
|
-
- id: swift-review
|
|
843
|
+
product_owner_planning:
|
|
844
|
+
steps:
|
|
845
|
+
- id: "4.1"
|
|
846
|
+
name: Product Owner planning
|
|
558
847
|
kind: dispatch-single
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
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
|
|
586
953
|
kind: dispatch-single
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
- id: scribe
|
|
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
|
|
600
966
|
kind: internal
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
IDs, stamps timestamp + status, validates against
|
|
607
|
-
decisions.schema.json, and atomically appends. The orchestrator
|
|
608
|
-
MUST NOT Write/Edit decisions.jsonl directly and MUST NOT
|
|
609
|
-
pre-compute IDs. .build-state.json.decisions_next_id is
|
|
610
|
-
deprecated under Stage 2 and removed at Stage 4 A7.
|
|
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.
|
|
611
972
|
hard_gates:
|
|
612
973
|
- decisions.jsonl is orchestrator-scribe ONLY. Subagents return deviation_row objects.
|
|
613
974
|
- "Web compositional: component-manifest.md variants MUST be imported; writing from scratch triggers cleanup revert."
|
|
@@ -616,22 +977,25 @@ phases:
|
|
|
616
977
|
- docs/plans/.task-outputs/[task-id].json
|
|
617
978
|
backward_edges:
|
|
618
979
|
- from: LRR-NEEDS_WORK-code-level
|
|
619
|
-
to: phase-4.target-
|
|
980
|
+
to: phase-4.target-feature
|
|
620
981
|
- from: phase-5-dogfood-feedback-synthesizer
|
|
621
|
-
to: phase-4.target-
|
|
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")
|
|
622
986
|
|
|
623
987
|
- id: "5"
|
|
624
988
|
name: Audit
|
|
625
|
-
kind:
|
|
989
|
+
kind: track-a-then-track-b-then-cross-cutting-then-synth
|
|
626
990
|
skip_conditions: []
|
|
627
991
|
precondition: verify-protocol passes
|
|
628
992
|
web_branch:
|
|
629
993
|
steps:
|
|
630
994
|
- id: "5.1"
|
|
631
|
-
name:
|
|
995
|
+
name: Track A — Engineering Reality (5 parallel auditors)
|
|
632
996
|
kind: dispatch-parallel
|
|
633
997
|
dispatch_mode: single-message
|
|
634
|
-
parallel_count:
|
|
998
|
+
parallel_count: 5
|
|
635
999
|
dispatches:
|
|
636
1000
|
- subagent_type: testing-api-tester
|
|
637
1001
|
focus: API validation, edge cases, error responses, auth flows
|
|
@@ -648,53 +1012,104 @@ phases:
|
|
|
648
1012
|
checks: [contrast, keyboard, focus, touch-targets>=44px, reduced-motion]
|
|
649
1013
|
- subagent_type: engineering-security-engineer
|
|
650
1014
|
focus: auth, input validation, data exposure, dependency vulns
|
|
651
|
-
- subagent_type: design-ux-researcher
|
|
652
|
-
focus: loading/error/empty states, mobile@375px, form validation, visual consistency vs style guide
|
|
653
1015
|
- subagent_type: design-brand-guardian
|
|
654
1016
|
focus: DNA drift check
|
|
655
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.
|
|
656
1021
|
- id: "5.2"
|
|
657
|
-
name:
|
|
658
|
-
kind:
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
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/"
|
|
667
1045
|
- id: "5.3"
|
|
668
|
-
name:
|
|
1046
|
+
name: Cross-cutting (3 parallel, ONE message)
|
|
669
1047
|
kind: dispatch-parallel
|
|
670
1048
|
dispatch_mode: single-message
|
|
671
1049
|
parallel_count: 3
|
|
672
1050
|
dispatches:
|
|
673
|
-
- e2e-runner:
|
|
674
|
-
|
|
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)
|
|
675
1058
|
- fake-data-detector
|
|
676
1059
|
- id: "5.4"
|
|
677
1060
|
name: Feedback Synthesizer
|
|
678
1061
|
kind: dispatch-single
|
|
679
1062
|
subagent_type: product-feedback-synthesizer
|
|
680
|
-
|
|
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
|
|
681
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)
|
|
682
1077
|
ios_branch:
|
|
683
1078
|
replaces: web-6+3
|
|
684
|
-
mode:
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
-
|
|
688
|
-
-
|
|
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)
|
|
689
1096
|
required_artifacts:
|
|
690
|
-
- docs/plans/
|
|
691
|
-
- docs/plans/
|
|
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
|
|
692
1103
|
- "maestro/*.yaml (>=1)"
|
|
693
1104
|
- "docs/plans/evidence/maestro-runs/*.png (>=1)"
|
|
694
1105
|
writes:
|
|
695
1106
|
- docs/plans/evidence/*.json
|
|
696
1107
|
- evidence/fake-data-audit.md
|
|
697
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
|
|
698
1113
|
- "learnings.jsonl (reality sweep PITFALL/PATTERN rows)"
|
|
699
1114
|
|
|
700
1115
|
- id: "6"
|
|
@@ -706,12 +1121,12 @@ phases:
|
|
|
706
1121
|
hard_gate_preconditions:
|
|
707
1122
|
all_projects: [".build-state.json exists + has recent VERIFY:PASS"]
|
|
708
1123
|
web:
|
|
709
|
-
- eval-harness/baseline.json
|
|
710
|
-
- eval-harness/final.json
|
|
711
1124
|
- e2e/iter-3-results.json
|
|
712
1125
|
- dogfood/findings.md
|
|
713
1126
|
- dogfood/classified-findings.json
|
|
714
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)"
|
|
715
1130
|
- manifest.json
|
|
716
1131
|
ios:
|
|
717
1132
|
- ios-verify-report.md
|
|
@@ -984,17 +1399,18 @@ callable_services:
|
|
|
984
1399
|
cross_run_injection: phase-4 implementer reads .active-learnings.md (top-3 filtered at phase-0)
|
|
985
1400
|
|
|
986
1401
|
briefing_officer:
|
|
987
|
-
kind:
|
|
988
|
-
|
|
1402
|
+
kind: dispatch-single
|
|
1403
|
+
subagent_type: briefing-officer
|
|
1404
|
+
callable_per: phase-4-feature
|
|
989
1405
|
contract:
|
|
990
|
-
reads: [refs.json, task-
|
|
991
|
-
writes:
|
|
1406
|
+
reads: [refs.json, feature-delegation-plan.json, task-rows-for-feature]
|
|
1407
|
+
writes: [docs/plans/feature-briefs/*.md]
|
|
992
1408
|
mode: refs-not-pastes
|
|
993
1409
|
excluded: [CLAUDE.md (auto-loaded), phase1-scratch (SPENT)]
|
|
994
1410
|
context_map_shape:
|
|
995
1411
|
persona_jtbd: design-doc.md#persona
|
|
996
1412
|
product_scope: design-doc.md#scope
|
|
997
|
-
visual_tokens:
|
|
1413
|
+
visual_tokens: DESIGN.md#tokens
|
|
998
1414
|
component_variants: component-manifest.md#[category]
|
|
999
1415
|
auth_model: architecture.md#auth
|
|
1000
1416
|
data_schema: architecture.md#data-model
|
|
@@ -1016,7 +1432,7 @@ backward_routing:
|
|
|
1016
1432
|
to: phase-3.step-3.0
|
|
1017
1433
|
note: re-lock DNA
|
|
1018
1434
|
- from: phase-5-audit-code-issue
|
|
1019
|
-
to: phase-4.target-
|
|
1435
|
+
to: phase-4.target-feature
|
|
1020
1436
|
- from: phase-5-audit-design-issue
|
|
1021
1437
|
to: phase-3.target-step
|
|
1022
1438
|
- from: phase-5-audit-spec-issue
|
|
@@ -1028,7 +1444,7 @@ backward_routing:
|
|
|
1028
1444
|
via: star-star-rule
|
|
1029
1445
|
to: authoring-phase (per decisions.jsonl.decided_by)
|
|
1030
1446
|
- from: phase-6-LRR-NEEDS_WORK-code
|
|
1031
|
-
to: phase-4.target-
|
|
1447
|
+
to: phase-4.target-feature
|
|
1032
1448
|
via: related_decision_id
|
|
1033
1449
|
- from: phase-6-LRR-NEEDS_WORK-structural
|
|
1034
1450
|
to: phase-2-or-phase-3
|
|
@@ -1042,7 +1458,7 @@ re_entry_template: |
|
|
|
1042
1458
|
re_entry_rules:
|
|
1043
1459
|
phase-2: "Only the architect whose domain matches decision_row.author re-runs. Synthesizer re-runs once."
|
|
1044
1460
|
phase-3: "Only the step named by decision_row.author re-runs (DNA lock, component manifest, or visual spec)."
|
|
1045
|
-
phase-4: "Target
|
|
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."
|
|
1046
1462
|
|
|
1047
1463
|
needs_work_loop_cap:
|
|
1048
1464
|
max_cycles: 2
|