valent-pipeline 0.2.20 → 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.
- package/README.md +438 -0
- package/package.json +1 -1
- package/pipeline/agents-manifest.yaml +61 -1
- package/pipeline/docs/agent-reference.md +82 -23
- package/pipeline/docs/design/refactor-checklist.md +111 -0
- package/pipeline/docs/index.md +60 -0
- package/pipeline/docs/pipeline-overview.md +4 -0
- package/pipeline/prompts/bend.md +5 -11
- package/pipeline/prompts/critic.md +9 -0
- package/pipeline/prompts/data.md +59 -0
- package/pipeline/prompts/docgen.md +61 -0
- package/pipeline/prompts/fend.md +3 -10
- package/pipeline/prompts/iac.md +70 -0
- package/pipeline/prompts/lead.md +81 -3
- package/pipeline/prompts/libdev.md +61 -0
- package/pipeline/prompts/mcp-dev.md +59 -0
- package/pipeline/prompts/mobile.md +92 -0
- package/pipeline/prompts/qa-a.md +1 -1
- package/pipeline/prompts/qa-b.md +1 -1
- package/pipeline/prompts/reqs.md +5 -1
- package/pipeline/scripts/db-bootstrap.ts +1 -1
- package/pipeline/scripts/embed-sqlite.ts +5 -0
- package/pipeline/steps/common/quality-standards.md +19 -0
- package/pipeline/steps/critic/data-pipeline.md +28 -0
- package/pipeline/steps/critic/document-generation.md +21 -0
- package/pipeline/steps/critic/iac.md +29 -0
- package/pipeline/steps/critic/library.md +24 -0
- package/pipeline/steps/critic/mcp-server.md +24 -0
- package/pipeline/steps/critic/mobile-app.md +29 -0
- package/pipeline/steps/data/estimate.md +51 -0
- package/pipeline/steps/data/handoff.md +9 -0
- package/pipeline/steps/data/implement.md +16 -0
- package/pipeline/steps/data/read-inputs.md +13 -0
- package/pipeline/steps/data/write-tests.md +13 -0
- package/pipeline/steps/docgen/estimate.md +49 -0
- package/pipeline/steps/docgen/handoff.md +9 -0
- package/pipeline/steps/docgen/implement.md +19 -0
- package/pipeline/steps/docgen/read-inputs.md +13 -0
- package/pipeline/steps/docgen/write-tests.md +15 -0
- package/pipeline/steps/iac/estimate.md +50 -0
- package/pipeline/steps/iac/handoff.md +9 -0
- package/pipeline/steps/iac/implement.md +19 -0
- package/pipeline/steps/iac/read-inputs.md +13 -0
- package/pipeline/steps/iac/write-tests.md +20 -0
- package/pipeline/steps/judge/ship-decision.md +14 -1
- package/pipeline/steps/libdev/estimate.md +49 -0
- package/pipeline/steps/libdev/handoff.md +9 -0
- package/pipeline/steps/libdev/implement.md +19 -0
- package/pipeline/steps/libdev/read-inputs.md +13 -0
- package/pipeline/steps/libdev/write-tests.md +16 -0
- package/pipeline/steps/mcp-dev/estimate.md +49 -0
- package/pipeline/steps/mcp-dev/handoff.md +9 -0
- package/pipeline/steps/mcp-dev/implement.md +29 -0
- package/pipeline/steps/mcp-dev/read-inputs.md +13 -0
- package/pipeline/steps/mcp-dev/write-tests.md +19 -0
- package/pipeline/steps/mobile/emulator-lifecycle.md +67 -0
- package/pipeline/steps/mobile/estimate.md +51 -0
- package/pipeline/steps/mobile/flutter.md +30 -0
- package/pipeline/steps/mobile/handoff.md +18 -0
- package/pipeline/steps/mobile/implement.md +20 -0
- package/pipeline/steps/mobile/react-native.md +32 -0
- package/pipeline/steps/mobile/read-inputs.md +10 -0
- package/pipeline/steps/mobile/write-tests.md +59 -0
- package/pipeline/steps/orchestration/adopt-lead-and-create-team.md +1 -1
- package/pipeline/steps/orchestration/sprint-groom.md +4 -0
- package/pipeline/steps/orchestration/sprint-size.md +19 -12
- package/pipeline/steps/orchestration/validate-story-inputs.md +9 -0
- package/pipeline/steps/qa-a/data-pipeline.md +32 -0
- package/pipeline/steps/qa-a/document-generation.md +52 -0
- package/pipeline/steps/qa-a/iac.md +30 -0
- package/pipeline/steps/qa-a/library.md +42 -0
- package/pipeline/steps/qa-a/mcp-server.md +31 -0
- package/pipeline/steps/qa-a/mobile-app.md +59 -0
- package/pipeline/steps/qa-b/data-pipeline.md +48 -0
- package/pipeline/steps/qa-b/document-generation.md +47 -0
- package/pipeline/steps/qa-b/iac.md +44 -0
- package/pipeline/steps/qa-b/library.md +61 -0
- package/pipeline/steps/qa-b/mcp-server.md +40 -0
- package/pipeline/steps/qa-b/mobile-app.md +71 -0
- package/pipeline/steps/readiness/standalone-review.md +7 -2
- package/pipeline/steps/reqs/data-pipeline.md +56 -0
- package/pipeline/steps/reqs/document-generation.md +55 -0
- package/pipeline/steps/reqs/draft-brief.md +10 -0
- package/pipeline/steps/reqs/iac.md +63 -0
- package/pipeline/steps/reqs/library.md +56 -0
- package/pipeline/steps/reqs/mcp-server.md +48 -0
- package/pipeline/steps/reqs/mobile-app.md +54 -0
- package/pipeline/steps/reqs/self-review.md +5 -3
- package/pipeline/task-graphs/backend-api.yaml +19 -2
- package/pipeline/task-graphs/data-pipeline.yaml +29 -12
- package/pipeline/task-graphs/document-generation.yaml +29 -12
- package/pipeline/task-graphs/frontend-only.yaml +19 -2
- package/pipeline/task-graphs/fullstack-web.yaml +19 -2
- package/pipeline/task-graphs/library.yaml +29 -12
- package/pipeline/task-graphs/mcp-server.yaml +29 -12
- package/pipeline/task-graphs/mobile-app.yaml +171 -0
- package/pipeline/templates/bugs.template.md +1 -1
- package/pipeline/templates/critic-review.template.md +1 -1
- package/pipeline/templates/data-handoff.template.md +96 -0
- package/pipeline/templates/docgen-handoff.template.md +83 -0
- package/pipeline/templates/iac-handoff.template.md +83 -0
- package/pipeline/templates/judge-decision.template.md +11 -1
- package/pipeline/templates/libdev-handoff.template.md +82 -0
- package/pipeline/templates/mcp-dev-handoff.template.md +87 -0
- package/pipeline/templates/mobile-handoff.template.md +122 -0
- package/pipeline/templates/reqs-brief.template.md +60 -4
- package/skills/valent-run-deferred-tests/SKILL.md +109 -0
- package/src/commands/db-rebuild.js +5 -0
- package/src/lib/config-schema.js +1 -1
- package/src/lib/db.js +1 -1
|
@@ -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}`
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# mobile-handoff
|
|
2
|
+
<!-- Template version: 1.0 | Used by: MOBILE | 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
|
+
ios_deferred: {true | false}
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Orchestrator Summary -- required
|
|
18
|
+
- **Agent:** {agent-name}
|
|
19
|
+
- **Story:** {story-id}
|
|
20
|
+
- **Verdict:** {pass | fail | needs-review}
|
|
21
|
+
- **State transition:** {from-phase} -> {to-phase}
|
|
22
|
+
- **Files created/modified:** {list of file paths}
|
|
23
|
+
- **Flags:** {alerts for downstream agents, or "none"}
|
|
24
|
+
|
|
25
|
+
## Files Created/Modified -- required
|
|
26
|
+
<!-- All production and test files created or modified, with purpose. -->
|
|
27
|
+
|
|
28
|
+
| File | Action | Purpose |
|
|
29
|
+
|------|--------|---------|
|
|
30
|
+
| {file-path} | {created \| modified} | {one-line description} |
|
|
31
|
+
|
|
32
|
+
## Screens Implemented -- required
|
|
33
|
+
<!-- Mobile screens implemented in this story. -->
|
|
34
|
+
|
|
35
|
+
| Screen | File Path | Description | Navigation |
|
|
36
|
+
|--------|-----------|-------------|------------|
|
|
37
|
+
| {screen-name} | {file-path} | {one-line description} | {stack \| tab \| drawer \| modal \| deep-link} |
|
|
38
|
+
|
|
39
|
+
## Components Created -- required
|
|
40
|
+
<!-- UI components implemented in this story. -->
|
|
41
|
+
|
|
42
|
+
| Component | File Path | Description | Props |
|
|
43
|
+
|-----------|-----------|-------------|-------|
|
|
44
|
+
| {component-name} | {file-path} | {one-line description} | {key props and types} |
|
|
45
|
+
|
|
46
|
+
## Navigation Structure -- conditional
|
|
47
|
+
<!-- Only include if new navigation routes were added -->
|
|
48
|
+
|
|
49
|
+
| Route / Deep Link | Screen | Description | Auth Required |
|
|
50
|
+
|-------------------|--------|-------------|---------------|
|
|
51
|
+
| {deep-link-uri or nav-route} | {screen-name} | {one-line description} | {yes \| no} |
|
|
52
|
+
|
|
53
|
+
## API Dependencies on BEND -- required
|
|
54
|
+
<!-- Every backend endpoint consumed by the mobile app, with integration details. -->
|
|
55
|
+
|
|
56
|
+
| Method | Endpoint | Used By | Purpose | Error Handling |
|
|
57
|
+
|--------|----------|---------|---------|----------------|
|
|
58
|
+
| {HTTP method} | {route path} | {screen-name} | {one-line description} | {how errors are displayed to user} |
|
|
59
|
+
|
|
60
|
+
## Emulator Configuration -- required
|
|
61
|
+
<!-- Emulator/simulator used for testing. -->
|
|
62
|
+
|
|
63
|
+
| Platform | Device | OS Version | Status |
|
|
64
|
+
|----------|--------|------------|--------|
|
|
65
|
+
| Android | {AVD name or device} | {API level} | {booted \| failed \| skipped} |
|
|
66
|
+
| iOS | {simulator name} | {iOS version} | {booted \| failed \| skipped \| deferred} |
|
|
67
|
+
|
|
68
|
+
## Maestro Flow Files -- required
|
|
69
|
+
<!-- E2E test flows written and executed. -->
|
|
70
|
+
|
|
71
|
+
| Flow File | AC Coverage | Platform | Status |
|
|
72
|
+
|-----------|-------------|----------|--------|
|
|
73
|
+
| {file-path} | {AC-ids} | {both \| android \| ios} | {passed \| failed \| deferred} |
|
|
74
|
+
|
|
75
|
+
## Test Files Written -- required
|
|
76
|
+
<!-- All test files created or modified, mapped to the spec cases they satisfy. -->
|
|
77
|
+
|
|
78
|
+
| Test File | Test Cases | Spec Reference |
|
|
79
|
+
|-----------|-----------|----------------|
|
|
80
|
+
| {file-path} | {list of test case names} | `qa-test-spec.md#{ac-id}` |
|
|
81
|
+
|
|
82
|
+
## Test Results Summary -- required
|
|
83
|
+
<!-- Aggregate results from running the test suite, separated by platform. -->
|
|
84
|
+
|
|
85
|
+
### Android
|
|
86
|
+
| Suite | Total | Passed | Failed | Skipped | Duration |
|
|
87
|
+
|-------|-------|--------|--------|---------|----------|
|
|
88
|
+
| {suite-name} | {count} | {count} | {count} | {count} | {duration} |
|
|
89
|
+
|
|
90
|
+
### iOS
|
|
91
|
+
| Suite | Total | Passed | Failed | Skipped | Duration |
|
|
92
|
+
|-------|-------|--------|--------|---------|----------|
|
|
93
|
+
| {suite-name or "Deferred"} | {count} | {count} | {count} | {count} | {duration} |
|
|
94
|
+
|
|
95
|
+
## Platform Coverage -- required
|
|
96
|
+
<!-- Summary of platform test coverage for this story. -->
|
|
97
|
+
|
|
98
|
+
| Platform | Tests Run | Tests Passed | Deferred | Reason |
|
|
99
|
+
|----------|-----------|--------------|----------|--------|
|
|
100
|
+
| Android | {count} | {count} | 0 | N/A |
|
|
101
|
+
| iOS | {count} | {count} | {count} | {reason or "N/A"} |
|
|
102
|
+
|
|
103
|
+
## Deferred iOS Tests -- conditional
|
|
104
|
+
<!-- Only include when ios_deferred is true. Lists Maestro flows that could not run on this host. -->
|
|
105
|
+
|
|
106
|
+
| Flow File | AC Coverage | Reason |
|
|
107
|
+
|-----------|-------------|--------|
|
|
108
|
+
| {file-path} | {AC-ids} | {Host OS lacks iOS simulator} |
|
|
109
|
+
|
|
110
|
+
## Implementation Decisions -- required
|
|
111
|
+
<!-- Key decisions made during implementation. Each entry: decision, rationale, alternatives rejected. -->
|
|
112
|
+
|
|
113
|
+
- **Decision:** {what was decided}
|
|
114
|
+
- **Rationale:** {why}
|
|
115
|
+
- **Rejected:** {alternatives considered and why they lost}
|
|
116
|
+
|
|
117
|
+
## Cross-References -- required
|
|
118
|
+
<!-- Explicit pointers to upstream artifacts consumed. -->
|
|
119
|
+
- Reqs brief: `reqs-brief.md#{section}`
|
|
120
|
+
- UXA spec: `uxa-spec.md#{section}`
|
|
121
|
+
- Test spec: `qa-test-spec.md#{section}`
|
|
122
|
+
- BEND handoff: `bend-handoff.md#{section}`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# reqs-brief
|
|
2
|
-
<!-- Template version: 1.0 | Used by: REQS | Read by: UXA, QA-A, BEND, FEND, CRITIC, READINESS -->
|
|
2
|
+
<!-- Template version: 1.0 | Used by: REQS | Read by: UXA, QA-A, BEND, FEND, DATA, MCP-DEV, LIBDEV, DOCGEN, IAC, CRITIC, READINESS -->
|
|
3
3
|
|
|
4
4
|
---
|
|
5
5
|
agent: reqs
|
|
@@ -35,7 +35,8 @@ blockers: []
|
|
|
35
35
|
|---------|------|-------------|------------|
|
|
36
36
|
| {br-id} | {rule statement} | {ac-id list} | {edge case notes or "none"} |
|
|
37
37
|
|
|
38
|
-
## Database Changes --
|
|
38
|
+
## Database Changes -- conditional
|
|
39
|
+
<!-- Only include if api or data-pipeline in testing_profiles -->
|
|
39
40
|
<!-- Tables to create/modify. Each entry: table name, action (create/alter/drop), columns with types, constraints, indexes, relationships. -->
|
|
40
41
|
|
|
41
42
|
```yaml
|
|
@@ -48,14 +49,16 @@ database_changes:
|
|
|
48
49
|
relationships: [{relationship}]
|
|
49
50
|
```
|
|
50
51
|
|
|
51
|
-
## API Endpoints --
|
|
52
|
+
## API Endpoints -- conditional
|
|
53
|
+
<!-- Only include if api in testing_profiles -->
|
|
52
54
|
<!-- Each endpoint: method, path, request body, response codes, response body shape, auth requirements. -->
|
|
53
55
|
|
|
54
56
|
| Method | Path | Request Body | Response Codes | Response Shape | Auth |
|
|
55
57
|
|--------|------|-------------|---------------|----------------|------|
|
|
56
58
|
| {method} | {path} | {body or "none"} | {codes} | {shape} | {auth requirement} |
|
|
57
59
|
|
|
58
|
-
## Authentication and Authorization --
|
|
60
|
+
## Authentication and Authorization -- conditional
|
|
61
|
+
<!-- Only include if api or ui in testing_profiles -->
|
|
59
62
|
<!-- Auth flow, token handling, role/permission requirements, tenant isolation rules. -->
|
|
60
63
|
- **Auth mechanism:** {mechanism}
|
|
61
64
|
- **Roles:** {role list with permissions}
|
|
@@ -71,6 +74,59 @@ database_changes:
|
|
|
71
74
|
- **Pagination:** {strategy or "n/a"}
|
|
72
75
|
- **Rate limiting:** {strategy or "n/a"}
|
|
73
76
|
|
|
77
|
+
## Data Pipeline Specification -- conditional
|
|
78
|
+
<!-- Only include if data-pipeline in testing_profiles -->
|
|
79
|
+
|
|
80
|
+
| Stage | Input | Transform | Output | Quality Rules | Error Handling |
|
|
81
|
+
|-------|-------|-----------|--------|---------------|----------------|
|
|
82
|
+
| {stage-name} | {input source/format} | {transformation logic} | {output target/format} | {quality checks} | {error strategy} |
|
|
83
|
+
|
|
84
|
+
- **Idempotency strategy:** {approach — natural keys, upsert, dedup}
|
|
85
|
+
- **Checkpoint/resume:** {what state is persisted, recovery granularity}
|
|
86
|
+
- **Schema evolution:** {strategy — additive-only, migration scripts, etc.}
|
|
87
|
+
|
|
88
|
+
## Tool Definitions -- conditional
|
|
89
|
+
<!-- Only include if mcp-server in testing_profiles -->
|
|
90
|
+
|
|
91
|
+
| Tool Name | Description | inputSchema | Output Types | Error Behavior |
|
|
92
|
+
|-----------|-------------|-------------|-------------|----------------|
|
|
93
|
+
| {name} | {purpose} | {JSON Schema summary} | {text/image/audio/resource} | {JSON-RPC error code or isError:true scenario} |
|
|
94
|
+
|
|
95
|
+
- **Capabilities:** {what server advertises at initialize}
|
|
96
|
+
- **Transport:** {stdio / SSE / streamable HTTP}
|
|
97
|
+
|
|
98
|
+
## Public API Surface -- conditional
|
|
99
|
+
<!-- Only include if library in testing_profiles -->
|
|
100
|
+
|
|
101
|
+
| Export | Signature | Return Type | Module Path | Breaking Change? |
|
|
102
|
+
|--------|-----------|-------------|-------------|-----------------|
|
|
103
|
+
| {symbol} | {function signature or type} | {return type} | {path in exports map} | {yes/no — vs prior version} |
|
|
104
|
+
|
|
105
|
+
- **Semver policy:** {what constitutes major/minor/patch}
|
|
106
|
+
- **Module system:** {CJS / ESM / dual}
|
|
107
|
+
- **Peer dependencies:** {required peer deps and version ranges}
|
|
108
|
+
|
|
109
|
+
## Template Specifications -- conditional
|
|
110
|
+
<!-- Only include if document-generation in testing_profiles -->
|
|
111
|
+
|
|
112
|
+
| Template | Variables (required) | Variables (optional) | Output Format | Conditional Sections |
|
|
113
|
+
|----------|---------------------|---------------------|---------------|---------------------|
|
|
114
|
+
| {template-name} | {var: type, var: type} | {var: type (default)} | {PDF/HTML/Markdown} | {section: condition} |
|
|
115
|
+
|
|
116
|
+
- **Encoding:** {UTF-8, unicode support, RTL}
|
|
117
|
+
- **Asset dependencies:** {fonts, images, logos — embedded or referenced}
|
|
118
|
+
|
|
119
|
+
## Infrastructure Resources -- conditional
|
|
120
|
+
<!-- Only include if iac in testing_profiles -->
|
|
121
|
+
|
|
122
|
+
| Resource | Provider | Type | Purpose | Tags | Destroy Protection |
|
|
123
|
+
|----------|----------|------|---------|------|--------------------|
|
|
124
|
+
| {name} | {AWS/Azure/GCP} | {resource type} | {purpose} | {required tags} | {yes/no} |
|
|
125
|
+
|
|
126
|
+
- **State management:** {remote backend, locking mechanism}
|
|
127
|
+
- **IAM policy:** {roles/permissions created, least-privilege verification}
|
|
128
|
+
- **Environment topology:** {dev/staging/prod differences}
|
|
129
|
+
|
|
74
130
|
## NFR Targets -- required
|
|
75
131
|
<!-- Non-functional requirement targets. Each entry: category, metric, target value, measurement method. -->
|
|
76
132
|
|