valent-pipeline 0.2.19 → 0.2.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/README.md +438 -0
  2. package/package.json +1 -1
  3. package/pipeline/agents-manifest.yaml +61 -1
  4. package/pipeline/docs/agent-reference.md +82 -23
  5. package/pipeline/docs/design/refactor-checklist.md +111 -0
  6. package/pipeline/docs/index.md +60 -0
  7. package/pipeline/docs/lead-lifecycle.md +1 -1
  8. package/pipeline/docs/pipeline-overview.md +4 -0
  9. package/pipeline/prompts/bend.md +5 -11
  10. package/pipeline/prompts/critic.md +9 -0
  11. package/pipeline/prompts/data.md +59 -0
  12. package/pipeline/prompts/docgen.md +61 -0
  13. package/pipeline/prompts/fend.md +3 -10
  14. package/pipeline/prompts/iac.md +70 -0
  15. package/pipeline/prompts/knowledge.md +2 -0
  16. package/pipeline/prompts/lead.md +97 -6
  17. package/pipeline/prompts/libdev.md +61 -0
  18. package/pipeline/prompts/mcp-dev.md +59 -0
  19. package/pipeline/prompts/mobile.md +92 -0
  20. package/pipeline/prompts/qa-a.md +1 -1
  21. package/pipeline/prompts/qa-b.md +1 -1
  22. package/pipeline/prompts/reqs.md +5 -1
  23. package/pipeline/scripts/db-bootstrap.ts +1 -1
  24. package/pipeline/scripts/embed-sqlite.ts +5 -0
  25. package/pipeline/steps/common/quality-standards.md +19 -0
  26. package/pipeline/steps/critic/data-pipeline.md +28 -0
  27. package/pipeline/steps/critic/document-generation.md +21 -0
  28. package/pipeline/steps/critic/iac.md +29 -0
  29. package/pipeline/steps/critic/library.md +24 -0
  30. package/pipeline/steps/critic/mcp-server.md +24 -0
  31. package/pipeline/steps/critic/mobile-app.md +29 -0
  32. package/pipeline/steps/data/estimate.md +51 -0
  33. package/pipeline/steps/data/handoff.md +9 -0
  34. package/pipeline/steps/data/implement.md +16 -0
  35. package/pipeline/steps/data/read-inputs.md +13 -0
  36. package/pipeline/steps/data/write-tests.md +13 -0
  37. package/pipeline/steps/docgen/estimate.md +49 -0
  38. package/pipeline/steps/docgen/handoff.md +9 -0
  39. package/pipeline/steps/docgen/implement.md +19 -0
  40. package/pipeline/steps/docgen/read-inputs.md +13 -0
  41. package/pipeline/steps/docgen/write-tests.md +15 -0
  42. package/pipeline/steps/iac/estimate.md +50 -0
  43. package/pipeline/steps/iac/handoff.md +9 -0
  44. package/pipeline/steps/iac/implement.md +19 -0
  45. package/pipeline/steps/iac/read-inputs.md +13 -0
  46. package/pipeline/steps/iac/write-tests.md +20 -0
  47. package/pipeline/steps/judge/ship-decision.md +14 -1
  48. package/pipeline/steps/libdev/estimate.md +49 -0
  49. package/pipeline/steps/libdev/handoff.md +9 -0
  50. package/pipeline/steps/libdev/implement.md +19 -0
  51. package/pipeline/steps/libdev/read-inputs.md +13 -0
  52. package/pipeline/steps/libdev/write-tests.md +16 -0
  53. package/pipeline/steps/mcp-dev/estimate.md +49 -0
  54. package/pipeline/steps/mcp-dev/handoff.md +9 -0
  55. package/pipeline/steps/mcp-dev/implement.md +29 -0
  56. package/pipeline/steps/mcp-dev/read-inputs.md +13 -0
  57. package/pipeline/steps/mcp-dev/write-tests.md +19 -0
  58. package/pipeline/steps/mobile/emulator-lifecycle.md +67 -0
  59. package/pipeline/steps/mobile/estimate.md +51 -0
  60. package/pipeline/steps/mobile/flutter.md +30 -0
  61. package/pipeline/steps/mobile/handoff.md +18 -0
  62. package/pipeline/steps/mobile/implement.md +20 -0
  63. package/pipeline/steps/mobile/react-native.md +32 -0
  64. package/pipeline/steps/mobile/read-inputs.md +10 -0
  65. package/pipeline/steps/mobile/write-tests.md +59 -0
  66. package/pipeline/steps/orchestration/adopt-lead-and-create-team.md +1 -1
  67. package/pipeline/steps/orchestration/sprint-execute.md +3 -2
  68. package/pipeline/steps/orchestration/sprint-groom.md +4 -0
  69. package/pipeline/steps/orchestration/sprint-size.md +26 -16
  70. package/pipeline/steps/orchestration/validate-story-inputs.md +9 -0
  71. package/pipeline/steps/qa-a/data-pipeline.md +32 -0
  72. package/pipeline/steps/qa-a/document-generation.md +52 -0
  73. package/pipeline/steps/qa-a/iac.md +30 -0
  74. package/pipeline/steps/qa-a/library.md +42 -0
  75. package/pipeline/steps/qa-a/mcp-server.md +31 -0
  76. package/pipeline/steps/qa-a/mobile-app.md +59 -0
  77. package/pipeline/steps/qa-b/data-pipeline.md +48 -0
  78. package/pipeline/steps/qa-b/document-generation.md +47 -0
  79. package/pipeline/steps/qa-b/iac.md +44 -0
  80. package/pipeline/steps/qa-b/library.md +61 -0
  81. package/pipeline/steps/qa-b/mcp-server.md +40 -0
  82. package/pipeline/steps/qa-b/mobile-app.md +71 -0
  83. package/pipeline/steps/readiness/standalone-review.md +7 -2
  84. package/pipeline/steps/reqs/data-pipeline.md +56 -0
  85. package/pipeline/steps/reqs/document-generation.md +55 -0
  86. package/pipeline/steps/reqs/draft-brief.md +10 -0
  87. package/pipeline/steps/reqs/iac.md +63 -0
  88. package/pipeline/steps/reqs/library.md +56 -0
  89. package/pipeline/steps/reqs/mcp-server.md +48 -0
  90. package/pipeline/steps/reqs/mobile-app.md +54 -0
  91. package/pipeline/steps/reqs/self-review.md +5 -3
  92. package/pipeline/task-graphs/backend-api.yaml +19 -2
  93. package/pipeline/task-graphs/data-pipeline.yaml +29 -12
  94. package/pipeline/task-graphs/document-generation.yaml +29 -12
  95. package/pipeline/task-graphs/frontend-only.yaml +19 -2
  96. package/pipeline/task-graphs/fullstack-web.yaml +19 -2
  97. package/pipeline/task-graphs/library.yaml +29 -12
  98. package/pipeline/task-graphs/mcp-server.yaml +29 -12
  99. package/pipeline/task-graphs/mobile-app.yaml +171 -0
  100. package/pipeline/templates/bugs.template.md +1 -1
  101. package/pipeline/templates/critic-review.template.md +1 -1
  102. package/pipeline/templates/data-handoff.template.md +96 -0
  103. package/pipeline/templates/docgen-handoff.template.md +83 -0
  104. package/pipeline/templates/iac-handoff.template.md +83 -0
  105. package/pipeline/templates/judge-decision.template.md +11 -1
  106. package/pipeline/templates/libdev-handoff.template.md +82 -0
  107. package/pipeline/templates/mcp-dev-handoff.template.md +87 -0
  108. package/pipeline/templates/mobile-handoff.template.md +122 -0
  109. package/pipeline/templates/reqs-brief.template.md +60 -4
  110. package/skills/valent-run-deferred-tests/SKILL.md +109 -0
  111. package/skills/valent-run-epic/SKILL.md +1 -1
  112. package/skills/valent-run-project/SKILL.md +1 -1
  113. package/src/commands/db-rebuild.js +5 -0
  114. package/src/lib/config-schema.js +1 -1
  115. package/src/lib/db.js +1 -1
@@ -0,0 +1,171 @@
1
+ # Task graph template for mobile-app projects
2
+ # Read by the Lead at kick-off to create tasks and wire dependencies.
3
+ #
4
+ # Variables resolved at runtime:
5
+ # {{story_id}} — current story identifier
6
+ # {{story_output_dir}} — resolved story output directory
7
+ # {{degraded_note}} — note about degraded inputs (UXA only)
8
+ #
9
+ # Conditional tasks:
10
+ # Tasks with `conditional` are only created when the condition is met.
11
+ # Tasks with `skip_when` are removed when the condition IS met.
12
+ # When a conditional/skipped task is removed, the Lead removes its ref from
13
+ # other tasks' blockedBy lists.
14
+
15
+ project_type: "mobile-app"
16
+
17
+ tasks:
18
+ - ref: reqs
19
+ agent: REQS
20
+ subject: "REQS: Analyze story and produce implementation brief"
21
+ description: "Read {{story_id}} story inputs, translate ACs into structured implementation brief (reqs-brief.md)."
22
+ activeForm: "REQS analyzing requirements"
23
+ blockedBy: []
24
+
25
+ - ref: uxa
26
+ agent: UXA
27
+ subject: "UXA: Translate requirements into screen/component specs"
28
+ description: "Read reqs-brief.md, produce uxa-spec.md with mobile screen and component specifications. {{degraded_note}}"
29
+ activeForm: "UXA writing component specs"
30
+ blockedBy: [reqs]
31
+ skip_when: "testing_profiles excludes ui"
32
+
33
+ - ref: qa_a
34
+ agent: QA-A
35
+ subject: "QA-A: Produce behavioral test specifications and Maestro flow specs"
36
+ description: "Read reqs-brief.md and uxa-spec.md, produce qa-test-spec.md with Maestro flow specifications."
37
+ activeForm: "QA-A writing test specifications"
38
+ blockedBy: [uxa]
39
+
40
+ - ref: readiness
41
+ agent: READINESS
42
+ subject: "READINESS: Validate specs are implementation-ready"
43
+ description: "Review reqs-brief.md, uxa-spec.md, qa-test-spec.md sequentially. Reject first failure or approve all. Route rejections to responsible agent."
44
+ activeForm: "READINESS reviewing pre-dev artifacts"
45
+ blockedBy: [qa_a]
46
+
47
+ - ref: bend
48
+ agent: BEND
49
+ subject: "BEND: Implement backend production code and tests"
50
+ description: "Read reqs-brief.md and qa-test-spec.md, implement backend, produce bend-handoff.md."
51
+ activeForm: "BEND implementing backend"
52
+ blockedBy: [readiness]
53
+ conditional: "testing_profiles includes api"
54
+
55
+ - ref: mobile
56
+ agent: MOBILE
57
+ subject: "MOBILE: Implement mobile screens, components, and Maestro flows"
58
+ description: "Read reqs-brief.md, uxa-spec.md, qa-test-spec.md, implement mobile app, run Maestro flows, produce mobile-handoff.md."
59
+ activeForm: "MOBILE implementing mobile app"
60
+ blockedBy: [readiness]
61
+
62
+ - ref: critic
63
+ agent: CRITIC
64
+ subject: "CRITIC: Adversarial code review"
65
+ description: "Read git-diff, reqs-brief.md, qa-test-spec.md. Run blind-hunt, edge-case-hunt, acceptance-audit, triage passes. Produce critic-review.md."
66
+ activeForm: "CRITIC reviewing code"
67
+ blockedBy: [bend, mobile]
68
+
69
+ - ref: qa_b
70
+ agent: QA-B
71
+ subject: "QA-B: Execute tests and file bugs"
72
+ description: "Read qa-test-spec.md, critic-review.md, reqs-brief.md. Run tests, produce execution-report.md, bugs.md, traceability-matrix.md."
73
+ activeForm: "QA-B executing tests"
74
+ blockedBy: [critic]
75
+
76
+ - ref: judge
77
+ agent: JUDGE
78
+ subject: "JUDGE: Bug review and ship decision"
79
+ description: "Review bugs.md for priority accuracy, then review execution-report.md, traceability-matrix.md, qa-test-spec.md. Approve (SHIP/SHIP-PARTIAL) or reject (REJECT)."
80
+ activeForm: "JUDGE reviewing evidence and making ship decision"
81
+ blockedBy: [qa_b]
82
+
83
+ agents:
84
+ - name: Knowledge
85
+ ref: knowledge
86
+ wave: 1
87
+ prompt: .valent-pipeline/prompts/knowledge.md
88
+ trigger: "Begin startup immediately. No upstream dependency."
89
+ completion: "Send ready message to Lead. Then wait for [KNOWLEDGE-QUERY] messages."
90
+ cd_targets: []
91
+
92
+ # Wave 1: Spawn at kick-off (spec agents + first gate)
93
+ - name: REQS
94
+ ref: reqs
95
+ wave: 1
96
+ prompt: .valent-pipeline/prompts/reqs.md
97
+ trigger: "Begin immediately — no upstream dependency."
98
+ completion: "Send [HANDOFF] to Lead and UXA. Mark task completed."
99
+ cd_targets: [reqs]
100
+
101
+ - name: UXA
102
+ ref: uxa
103
+ wave: 1
104
+ prompt: .valent-pipeline/prompts/uxa.md
105
+ trigger: "Wait for [HANDOFF] from REQS. Begin when task is unblocked."
106
+ completion: "Send [HANDOFF] to Lead and QA-A. Mark task completed."
107
+ cd_targets: [uxa]
108
+
109
+ - name: QA-A
110
+ ref: qa_a
111
+ wave: 1
112
+ prompt: .valent-pipeline/prompts/qa-a.md
113
+ trigger: "Wait for [HANDOFF] from UXA. Begin when task is unblocked."
114
+ completion: "Send [HANDOFF] to Lead and READINESS. Mark task completed."
115
+ cd_targets: [qa-a]
116
+
117
+ - name: READINESS
118
+ ref: readiness
119
+ wave: 1
120
+ prompt: .valent-pipeline/prompts/readiness.md
121
+ trigger: "Wait for [HANDOFF] from QA-A. Begin when task is unblocked."
122
+ completion: "Send [READINESS-APPROVAL] to BEND and MOBILE, or [READINESS-REJECTION] to responsible agent. Mark task completed on approval."
123
+ cd_targets: [readiness]
124
+
125
+ # Wave 2: Spawn when QA-A completes (spin up while READINESS reviews)
126
+ - name: BEND
127
+ ref: bend
128
+ wave: 2
129
+ spawn_trigger: "qa_a completed"
130
+ prompt: .valent-pipeline/prompts/bend.md
131
+ trigger: "Begin immediately — you were spawned because QA-A completed. Wait for READINESS approval before starting implementation."
132
+ completion: "Send [HANDOFF] to Lead and CRITIC. Mark task completed."
133
+ cd_targets: [bend]
134
+
135
+ - name: MOBILE
136
+ ref: mobile
137
+ wave: 2
138
+ spawn_trigger: "qa_a completed"
139
+ prompt: .valent-pipeline/prompts/mobile.md
140
+ trigger: "Begin immediately — you were spawned because QA-A completed. Wait for READINESS approval before starting implementation. Coordinate with BEND on shared files if BEND is active."
141
+ completion: "Send [HANDOFF] to Lead and CRITIC. Mark task completed."
142
+ cd_targets: [mobile]
143
+
144
+ - name: CRITIC
145
+ ref: critic
146
+ wave: 2
147
+ spawn_trigger: "qa_a completed"
148
+ prompt: .valent-pipeline/prompts/critic.md
149
+ trigger: "Begin immediately — you were spawned because QA-A completed. Wait for [HANDOFF] from all active dev agents before starting review."
150
+ completion: "Send [HANDOFF] to Lead and QA-B. Mark task completed."
151
+ cd_targets: [critic]
152
+
153
+ # Wave 3: Spawn when CRITIC starts (spin up while CRITIC reviews)
154
+ - name: QA-B
155
+ ref: qa_b
156
+ wave: 3
157
+ spawn_trigger: "critic in_progress"
158
+ prompt: .valent-pipeline/prompts/qa-b.md
159
+ trigger: "Begin immediately — you were spawned because CRITIC started reviewing. Wait for CRITIC to complete before executing tests."
160
+ completion: "Send [HANDOFF] to Lead and JUDGE. Mark task completed."
161
+ cd_targets: [qa-b, judge]
162
+
163
+ # Wave 3: Also spawn JUDGE when CRITIC starts (alongside QA-B)
164
+ - name: JUDGE
165
+ ref: judge
166
+ wave: 3
167
+ spawn_trigger: "critic in_progress"
168
+ prompt: .valent-pipeline/prompts/judge.md
169
+ trigger: "Begin immediately — you were spawned because CRITIC started reviewing. Wait for QA-B to complete before starting bug review."
170
+ completion: "Send [JUDGE-SHIP], [JUDGE-SHIP-PARTIAL], or [JUDGE-REJECT] to Lead. Mark task completed."
171
+ cd_targets: [judge]
@@ -1,5 +1,5 @@
1
1
  # bugs
2
- <!-- Template version: 1.0 | Used by: QA-B | Read by: BEND, FEND, JUDGE (Pass 2) -->
2
+ <!-- Template version: 1.0 | Used by: QA-B | Read by: BEND, FEND, DATA, MCP-DEV, LIBDEV, DOCGEN, IAC, JUDGE (Pass 2) -->
3
3
 
4
4
  ---
5
5
  agent: qa-b
@@ -1,5 +1,5 @@
1
1
  # critic-review
2
- <!-- Template version: 1.0 | Used by: CRITIC | Read by: BEND, FEND, QA-B -->
2
+ <!-- Template version: 1.0 | Used by: CRITIC | Read by: BEND, FEND, DATA, MCP-DEV, LIBDEV, DOCGEN, IAC, QA-B -->
3
3
 
4
4
  ---
5
5
  agent: critic
@@ -0,0 +1,96 @@
1
+ # data-handoff
2
+ <!-- Template version: 1.0 | Used by: DATA | Read by: CRITIC, QA-B -->
3
+
4
+ ---
5
+ agent: {agent-name}
6
+ story: {story-id}
7
+ status: {in_progress | completed}
8
+ stepsCompleted: []
9
+ pendingSteps: []
10
+ lastCheckpoint: {ISO-8601 timestamp}
11
+ inputsRead: []
12
+ outputsWritten: []
13
+ blockers: []
14
+ ---
15
+
16
+ ## Orchestrator Summary -- required
17
+ - **Agent:** {agent-name}
18
+ - **Story:** {story-id}
19
+ - **Verdict:** {pass | fail | needs-review}
20
+ - **State transition:** {from-phase} -> {to-phase}
21
+ - **Files created/modified:** {list of file paths}
22
+ - **Flags:** {alerts for downstream agents, or "none"}
23
+
24
+ ## Files Created/Modified -- required
25
+ <!-- All production and test files created or modified, with purpose. -->
26
+
27
+ | File | Action | Purpose |
28
+ |------|--------|---------|
29
+ | {file-path} | {created \| modified} | {one-line description} |
30
+
31
+ ## Pipeline Stages Implemented -- required
32
+ <!-- Every pipeline stage implemented in this story. CRITIC and QA-B use this to validate coverage and data flow. -->
33
+
34
+ | Stage | Input | Transform | Output | Row Count Change |
35
+ |-------|-------|-----------|--------|-----------------|
36
+ | {stage-name} | {input source/format} | {transform description} | {output target/format} | {e.g., 1000 -> 950 (-50 filtered)} |
37
+
38
+ ## Data Quality Rules -- required
39
+ <!-- All data quality rules enforced by this pipeline. -->
40
+
41
+ | Rule | Stage | Description | Action on Violation |
42
+ |------|-------|-------------|-------------------|
43
+ | {rule-name} | {stage} | {what is checked} | {drop row \| reject batch \| default value \| log warning} |
44
+
45
+ ### Row Count Assertions
46
+ <!-- Expected row count behavior at each stage boundary. -->
47
+
48
+ - **Stage:** {stage-name}
49
+ - Input rows: {count or formula}
50
+ - Output rows: {count or formula}
51
+ - Drop reason: {why rows are removed, or "none"}
52
+
53
+ ### Null Handling
54
+ <!-- How nulls are handled for each critical field. -->
55
+
56
+ - **Field:** {field-name}
57
+ - Null strategy: {reject \| default to X \| propagate \| coalesce}
58
+
59
+ ### Dedup Rules
60
+ <!-- Deduplication strategy if applicable. -->
61
+
62
+ - **Dedup key:** {field(s) forming the natural key}
63
+ - **Strategy:** {keep first \| keep last \| merge}
64
+
65
+ ## Checkpoint/Resume Design -- conditional
66
+ <!-- Only include if pipeline has checkpoint/resume capability. -->
67
+
68
+ | Checkpoint | Location | Trigger | Resume Behavior |
69
+ |-----------|----------|---------|----------------|
70
+ | {checkpoint-name} | {where state is stored} | {after stage X completes} | {resume from stage X+1 with saved state} |
71
+
72
+ ## Test Files Written -- required
73
+ <!-- All test files created or modified, mapped to the spec cases they satisfy. -->
74
+
75
+ | Test File | Test Cases | Spec Reference |
76
+ |-----------|-----------|----------------|
77
+ | {file-path} | {list of test case names} | `qa-test-spec.md#{ac-id}` |
78
+
79
+ ## Test Results Summary -- required
80
+ <!-- Aggregate results from running the pipeline test suite. -->
81
+
82
+ | Suite | Total | Passed | Failed | Skipped | Duration |
83
+ |-------|-------|--------|--------|---------|----------|
84
+ | {suite-name} | {count} | {count} | {count} | {count} | {duration} |
85
+
86
+ ## Implementation Decisions -- required
87
+ <!-- Key decisions made during implementation. Each entry: decision, rationale, alternatives rejected. -->
88
+
89
+ - **Decision:** {what was decided}
90
+ - **Rationale:** {why}
91
+ - **Rejected:** {alternatives considered and why they lost}
92
+
93
+ ## Cross-References -- required
94
+ <!-- Explicit pointers to upstream artifacts consumed. -->
95
+ - Reqs brief: `reqs-brief.md#{section}`
96
+ - Test spec: `qa-test-spec.md#{section}`
@@ -0,0 +1,83 @@
1
+ # docgen-handoff
2
+ <!-- Template version: 1.0 | Used by: DOCGEN | Read by: CRITIC, QA-B -->
3
+
4
+ ---
5
+ agent: {agent-name}
6
+ story: {story-id}
7
+ status: {in_progress | completed}
8
+ stepsCompleted: []
9
+ pendingSteps: []
10
+ lastCheckpoint: {ISO-8601 timestamp}
11
+ inputsRead: []
12
+ outputsWritten: []
13
+ blockers: []
14
+ ---
15
+
16
+ ## Orchestrator Summary -- required
17
+ - **Agent:** {agent-name}
18
+ - **Story:** {story-id}
19
+ - **Verdict:** {pass | fail | needs-review}
20
+ - **State transition:** {from-phase} -> {to-phase}
21
+ - **Files created/modified:** {list of file paths}
22
+ - **Flags:** {alerts for downstream agents, or "none"}
23
+
24
+ ## Files Created/Modified -- required
25
+ <!-- All production and test files created or modified, with purpose. -->
26
+
27
+ | File | Action | Purpose |
28
+ |------|--------|---------|
29
+ | {file-path} | {created \| modified} | {one-line description} |
30
+
31
+ ## Templates Implemented -- required
32
+ <!-- Every template implemented in this story. CRITIC and QA-B use this to validate coverage and correctness. -->
33
+
34
+ | Template Name | Variables (with types) | Output Format | Description |
35
+ |---------------|----------------------|---------------|-------------|
36
+ | {template-name} | {var: type, var: type, ...} | {PDF \| HTML \| Markdown \| ...} | {one-line description} |
37
+
38
+ ## Variable Schema -- required
39
+ <!-- Input data contract per template. Every variable, its type, whether required/optional, and default value if any. -->
40
+
41
+ | Template | Variable | Type | Required | Default | Description |
42
+ |----------|----------|------|----------|---------|-------------|
43
+ | {template-name} | {variable-name} | {string \| number \| boolean \| array \| object} | {yes \| no} | {default or "none"} | {one-line description} |
44
+
45
+ ## Output Formats -- required
46
+ <!-- All supported output types, their MIME types, and any format-specific notes. -->
47
+
48
+ | Format | MIME Type | Notes |
49
+ |--------|----------|-------|
50
+ | {PDF \| HTML \| Markdown \| ...} | {application/pdf \| text/html \| text/markdown \| ...} | {encoding, compression, or other format-specific details} |
51
+
52
+ ## Asset Dependencies -- conditional
53
+ <!-- Only include if templates reference external assets (fonts, images, stylesheets). -->
54
+
55
+ | Asset | Type | Path/URL | Required By |
56
+ |-------|------|----------|-------------|
57
+ | {asset-name} | {font \| image \| stylesheet} | {file path or URL} | {template-name} |
58
+
59
+ ## Test Files Written -- required
60
+ <!-- All test files created or modified, mapped to the spec cases they satisfy. -->
61
+
62
+ | Test File | Test Cases | Spec Reference |
63
+ |-----------|-----------|----------------|
64
+ | {file-path} | {list of test case names} | `qa-test-spec.md#{ac-id}` |
65
+
66
+ ## Test Results Summary -- required
67
+ <!-- Aggregate results from running the test suite. -->
68
+
69
+ | Suite | Total | Passed | Failed | Skipped | Duration |
70
+ |-------|-------|--------|--------|---------|----------|
71
+ | {suite-name} | {count} | {count} | {count} | {count} | {duration} |
72
+
73
+ ## Implementation Decisions -- required
74
+ <!-- Key decisions made during implementation. Each entry: decision, rationale, alternatives rejected. -->
75
+
76
+ - **Decision:** {what was decided}
77
+ - **Rationale:** {why}
78
+ - **Rejected:** {alternatives considered and why they lost}
79
+
80
+ ## Cross-References -- required
81
+ <!-- Explicit pointers to upstream artifacts consumed. -->
82
+ - Reqs brief: `reqs-brief.md#{section}`
83
+ - Test spec: `qa-test-spec.md#{section}`
@@ -0,0 +1,83 @@
1
+ # iac-handoff
2
+ <!-- Template version: 1.0 | Used by: IAC | Read by: CRITIC, QA-B -->
3
+
4
+ ---
5
+ agent: {agent-name}
6
+ story: {story-id}
7
+ status: {in_progress | completed}
8
+ stepsCompleted: []
9
+ pendingSteps: []
10
+ lastCheckpoint: {ISO-8601 timestamp}
11
+ inputsRead: []
12
+ outputsWritten: []
13
+ blockers: []
14
+ ---
15
+
16
+ ## Orchestrator Summary -- required
17
+ - **Agent:** {agent-name}
18
+ - **Story:** {story-id}
19
+ - **Verdict:** {pass | fail | needs-review}
20
+ - **State transition:** {from-phase} -> {to-phase}
21
+ - **Files created/modified:** {list of file paths}
22
+ - **Flags:** {alerts for downstream agents, or "none"}
23
+
24
+ ## Files Created/Modified -- required
25
+ <!-- All production and test files created or modified, with purpose. -->
26
+
27
+ | File | Action | Purpose |
28
+ |------|--------|---------|
29
+ | {file-path} | {created \| modified} | {one-line description} |
30
+
31
+ ## Resources Provisioned -- required
32
+ <!-- Every infrastructure resource created or modified in this story. -->
33
+
34
+ | Resource Type | Name | Provider | Purpose |
35
+ |---------------|------|----------|---------|
36
+ | {resource-type} | {resource-name} | {provider} | {one-line description} |
37
+
38
+ ## State Management -- required
39
+ <!-- Remote state backend and locking configuration. -->
40
+
41
+ - **Backend:** {state backend type, e.g., S3+DynamoDB, Azure Blob, GCS}
42
+ - **Locking mechanism:** {DynamoDB, Blob lease, GCS object lock, etc.}
43
+ - **State file path:** {key/path in remote backend}
44
+
45
+ ## IAM/Security -- required
46
+ <!-- Roles, policies, and security configurations created. -->
47
+
48
+ | Role/Policy | Resource | Actions | Scope | Least-Privilege Verification |
49
+ |-------------|----------|---------|-------|------------------------------|
50
+ | {role-or-policy-name} | {target-resource} | {allowed-actions} | {scope/arn} | {verified: yes/no + rationale} |
51
+
52
+ ## Environment Configuration -- conditional
53
+ <!-- Only include if environment variables, secrets references, or connection strings were configured -->
54
+
55
+ | Config Key | Source | Type | Consuming Service |
56
+ |------------|--------|------|-------------------|
57
+ | {env-var-or-key} | {secret manager ref, parameter store, etc.} | {env-var \| secret \| connection-string} | {service-name} |
58
+
59
+ ## Test Files Written -- required
60
+ <!-- All test files created or modified, mapped to the spec cases they satisfy. -->
61
+
62
+ | Test File | Test Cases | Spec Reference |
63
+ |-----------|-----------|----------------|
64
+ | {file-path} | {list of test case names} | `qa-test-spec.md#{ac-id}` |
65
+
66
+ ## Test Results Summary -- required
67
+ <!-- Aggregate results from running the infrastructure test suite. -->
68
+
69
+ | Suite | Total | Passed | Failed | Skipped | Duration |
70
+ |-------|-------|--------|--------|---------|----------|
71
+ | {suite-name} | {count} | {count} | {count} | {count} | {duration} |
72
+
73
+ ## Implementation Decisions -- required
74
+ <!-- Key decisions made during implementation. Each entry: decision, rationale, alternatives rejected. -->
75
+
76
+ - **Decision:** {what was decided}
77
+ - **Rationale:** {why}
78
+ - **Rejected:** {alternatives considered and why they lost}
79
+
80
+ ## Cross-References -- required
81
+ <!-- Explicit pointers to upstream artifacts consumed. -->
82
+ - Reqs brief: `reqs-brief.md#{section}`
83
+ - Test spec: `qa-test-spec.md#{section}`
@@ -33,6 +33,7 @@ blockers: []
33
33
  | Traceability matrix complete — no uncovered ACs | {PASS \| FAIL} | {coverage percentage, gap count} |
34
34
  | PMCP screenshot evidence present | {PASS \| FAIL \| N/A} | {checkpoint count, any missing} |
35
35
  | Bug review approved | {PASS \| FAIL} | {detail} |
36
+ | Platform coverage complete | {PASS \| FAIL \| PARTIAL} | {Android: {result}, iOS: {result or "deferred"}} |
36
37
 
37
38
  ## Socratic Validation -- required
38
39
  <!-- "Does this test actually prove what it claims? Could this screenshot show a passing state that masks a broken state? Does 'all tests green' mean 'all specified tests green' or could tests have been removed?" -->
@@ -43,10 +44,19 @@ blockers: []
43
44
 
44
45
  ## Verdict -- required
45
46
 
46
- - **Decision:** {SHIP | REJECT}
47
+ - **Decision:** {SHIP | SHIP-PARTIAL | REJECT}
47
48
  - **Rationale:** {1-3 sentences justifying the decision}
48
49
  - **Confidence:** {high | medium | low}
49
50
 
51
+ ### SHIP-PARTIAL Detail -- conditional
52
+ <!-- Only include if verdict is SHIP-PARTIAL (mobile-app with deferred iOS tests) -->
53
+
54
+ - **Platforms shipped:** {Android}
55
+ - **Platforms deferred:** {iOS}
56
+ - **Deferred test count:** {count}
57
+ - **Deferred flow files:** {list of flow file paths}
58
+ - **Resolution:** Run `/run-deferred-tests {story_id}` on a Mac host
59
+
50
60
  ### Rejection Detail -- conditional
51
61
  <!-- Only include if verdict is REJECT -->
52
62
 
@@ -0,0 +1,82 @@
1
+ # libdev-handoff
2
+ <!-- Template version: 1.0 | Used by: LIBDEV | Read by: CRITIC, QA-B -->
3
+
4
+ ---
5
+ agent: {agent-name}
6
+ story: {story-id}
7
+ status: {in_progress | completed}
8
+ stepsCompleted: []
9
+ pendingSteps: []
10
+ lastCheckpoint: {ISO-8601 timestamp}
11
+ inputsRead: []
12
+ outputsWritten: []
13
+ blockers: []
14
+ ---
15
+
16
+ ## Orchestrator Summary -- required
17
+ - **Agent:** {agent-name}
18
+ - **Story:** {story-id}
19
+ - **Verdict:** {pass | fail | needs-review}
20
+ - **State transition:** {from-phase} -> {to-phase}
21
+ - **Files created/modified:** {list of file paths}
22
+ - **Flags:** {alerts for downstream agents, or "none"}
23
+
24
+ ## Files Created/Modified -- required
25
+ <!-- All production and test files created or modified, with purpose. -->
26
+
27
+ | File | Action | Purpose |
28
+ |------|--------|---------|
29
+ | {file-path} | {created \| modified} | {one-line description} |
30
+
31
+ ## Public API Surface -- required
32
+ <!-- Every public export implemented in this story. CRITIC and QA-B use this to validate coverage and contracts. -->
33
+
34
+ | Export Name | Type/Signature | Module Path | Usage Example |
35
+ |-------------|---------------|-------------|---------------|
36
+ | {export-name} | {type or function signature} | {module path in exports map} | {one-line usage} |
37
+
38
+ ## Package Configuration -- required
39
+ <!-- Exports map, entry points, and packaging metadata. -->
40
+
41
+ - **Exports map:**
42
+ ```json
43
+ {exports field from package.json / pyproject.toml / Cargo.toml}
44
+ ```
45
+ - **Entry points:**
46
+ - main: {CJS entry point or "n/a"}
47
+ - module: {ESM entry point or "n/a"}
48
+ - types: {type declarations entry point or "n/a"}
49
+ - **sideEffects:** {true | false | list of files with side effects}
50
+
51
+ ## Breaking Changes -- conditional
52
+ <!-- Only include if this story introduces breaking changes to the public API. -->
53
+
54
+ | Change | Before | After | Semver Impact |
55
+ |--------|--------|-------|---------------|
56
+ | {removed/renamed export or signature change} | {previous API} | {new API} | {major \| minor \| patch} |
57
+
58
+ ## Test Files Written -- required
59
+ <!-- All test files created or modified, mapped to the spec cases they satisfy. -->
60
+
61
+ | Test File | Test Cases | Spec Reference |
62
+ |-----------|-----------|----------------|
63
+ | {file-path} | {list of test case names} | `qa-test-spec.md#{ac-id}` |
64
+
65
+ ## Test Results Summary -- required
66
+ <!-- Aggregate results from running the library test suite. -->
67
+
68
+ | Suite | Total | Passed | Failed | Skipped | Duration |
69
+ |-------|-------|--------|--------|---------|----------|
70
+ | {suite-name} | {count} | {count} | {count} | {count} | {duration} |
71
+
72
+ ## Implementation Decisions -- required
73
+ <!-- Key decisions made during implementation. Each entry: decision, rationale, alternatives rejected. -->
74
+
75
+ - **Decision:** {what was decided}
76
+ - **Rationale:** {why}
77
+ - **Rejected:** {alternatives considered and why they lost}
78
+
79
+ ## Cross-References -- required
80
+ <!-- Explicit pointers to upstream artifacts consumed. -->
81
+ - Reqs brief: `reqs-brief.md#{section}`
82
+ - Test spec: `qa-test-spec.md#{section}`
@@ -0,0 +1,87 @@
1
+ # mcp-dev-handoff
2
+ <!-- Template version: 1.0 | Used by: MCP-DEV | Read by: CRITIC, QA-B -->
3
+
4
+ ---
5
+ agent: {agent-name}
6
+ story: {story-id}
7
+ status: {in_progress | completed}
8
+ stepsCompleted: []
9
+ pendingSteps: []
10
+ lastCheckpoint: {ISO-8601 timestamp}
11
+ inputsRead: []
12
+ outputsWritten: []
13
+ blockers: []
14
+ ---
15
+
16
+ ## Orchestrator Summary -- required
17
+ - **Agent:** {agent-name}
18
+ - **Story:** {story-id}
19
+ - **Verdict:** {pass | fail | needs-review}
20
+ - **State transition:** {from-phase} -> {to-phase}
21
+ - **Files created/modified:** {list of file paths}
22
+ - **Flags:** {alerts for downstream agents, or "none"}
23
+
24
+ ## Files Created/Modified -- required
25
+ <!-- All production and test files created or modified, with purpose. -->
26
+
27
+ | File | Action | Purpose |
28
+ |------|--------|---------|
29
+ | {file-path} | {created \| modified} | {one-line description} |
30
+
31
+ ## Tools Implemented -- required
32
+ <!-- Every MCP tool implemented in this story. CRITIC and QA-B use this to validate coverage and schema compliance. -->
33
+
34
+ | Tool Name | Description | inputSchema | Output Content Types |
35
+ |-----------|-------------|-------------|---------------------|
36
+ | {tool-name} | {one-line description} | {JSON Schema summary or pointer to code} | {text \| image \| resource \| embedded-resource} |
37
+
38
+ ## Capabilities Declared -- required
39
+ <!-- What the server advertises in the initialize response. Must match actual implementation. -->
40
+
41
+ - **Server name:** {server-name}
42
+ - **Server version:** {version}
43
+ - **Capabilities:**
44
+ - {capability}: {details}
45
+
46
+ ## Error Model -- required
47
+ <!-- Two-tier error model: protocol errors vs tool failures. -->
48
+
49
+ ### Protocol Errors (JSON-RPC codes)
50
+ | Code | Meaning | When Returned |
51
+ |------|---------|---------------|
52
+ | -32700 | Parse error | Malformed JSON received |
53
+ | -32600 | Invalid request | Missing required JSON-RPC fields |
54
+ | -32601 | Method not found | Unknown JSON-RPC method |
55
+ | -32602 | Invalid params | Tool input fails schema validation |
56
+ | -32603 | Internal error | Unhandled server exception |
57
+
58
+ ### Tool Failures (isError: true)
59
+ | Tool | Failure Condition | Error Message Pattern |
60
+ |------|-------------------|----------------------|
61
+ | {tool-name} | {condition} | {message pattern} |
62
+
63
+ ## Test Files Written -- required
64
+ <!-- All test files created or modified, mapped to the spec cases they satisfy. -->
65
+
66
+ | Test File | Test Cases | Spec Reference |
67
+ |-----------|-----------|----------------|
68
+ | {file-path} | {list of test case names} | `qa-test-spec.md#{ac-id}` |
69
+
70
+ ## Test Results Summary -- required
71
+ <!-- Aggregate results from running the test suite. -->
72
+
73
+ | Suite | Total | Passed | Failed | Skipped | Duration |
74
+ |-------|-------|--------|--------|---------|----------|
75
+ | {suite-name} | {count} | {count} | {count} | {count} | {duration} |
76
+
77
+ ## Implementation Decisions -- required
78
+ <!-- Key decisions made during implementation. Each entry: decision, rationale, alternatives rejected. -->
79
+
80
+ - **Decision:** {what was decided}
81
+ - **Rationale:** {why}
82
+ - **Rejected:** {alternatives considered and why they lost}
83
+
84
+ ## Cross-References -- required
85
+ <!-- Explicit pointers to upstream artifacts consumed. -->
86
+ - Reqs brief: `reqs-brief.md#{section}`
87
+ - Test spec: `qa-test-spec.md#{section}`