agentic-qe 3.7.18 → 3.7.19
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/skills/iterative-loop/SKILL.md +371 -0
- package/.claude/skills/skills-manifest.json +35 -7
- package/.claude/skills/validation-pipeline/SKILL.md +164 -0
- package/.claude/skills/validation-pipeline/evals/validation-pipeline.yaml +544 -0
- package/.claude/skills/validation-pipeline/schemas/output.json +193 -0
- package/.claude/skills/validation-pipeline/scripts/validate-config.json +34 -0
- package/README.md +5 -3
- package/assets/skills/skills-manifest.json +17 -1
- package/assets/skills/validation-pipeline/SKILL.md +164 -0
- package/assets/skills/validation-pipeline/evals/validation-pipeline.yaml +544 -0
- package/assets/skills/validation-pipeline/schemas/output.json +193 -0
- package/assets/skills/validation-pipeline/scripts/validate-config.json +34 -0
- package/dist/cli/bundle.js +2 -2
- package/dist/context/compiler.js +4 -0
- package/dist/context/index.d.ts +2 -0
- package/dist/context/index.js +2 -0
- package/dist/context/sources/defect-source.d.ts +17 -0
- package/dist/context/sources/defect-source.js +102 -0
- package/dist/context/sources/index.d.ts +2 -0
- package/dist/context/sources/index.js +2 -0
- package/dist/context/sources/requirements-source.d.ts +17 -0
- package/dist/context/sources/requirements-source.js +119 -0
- package/dist/coordination/task-executor.js +7 -1
- package/dist/coordination/yaml-pipeline-loader.d.ts +32 -0
- package/dist/coordination/yaml-pipeline-loader.js +389 -0
- package/dist/coordination/yaml-pipeline-registry.d.ts +61 -0
- package/dist/coordination/yaml-pipeline-registry.js +143 -0
- package/dist/mcp/bundle.js +8670 -1244
- package/dist/mcp/entry.js +21 -0
- package/dist/mcp/handlers/domain-handler-configs.js +11 -0
- package/dist/mcp/handlers/index.d.ts +2 -0
- package/dist/mcp/handlers/index.js +4 -0
- package/dist/mcp/handlers/pipeline-handlers.d.ts +75 -0
- package/dist/mcp/handlers/pipeline-handlers.js +208 -0
- package/dist/mcp/handlers/validation-pipeline-handler.d.ts +53 -0
- package/dist/mcp/handlers/validation-pipeline-handler.js +118 -0
- package/dist/mcp/protocol-server.js +167 -1
- package/dist/mcp/server.js +75 -1
- package/dist/workers/daemon.js +3 -2
- package/dist/workers/index.d.ts +6 -0
- package/dist/workers/index.js +6 -0
- package/dist/workers/workers/heartbeat-scheduler.d.ts +45 -0
- package/dist/workers/workers/heartbeat-scheduler.js +312 -0
- package/dist/workers/workers/index.d.ts +2 -1
- package/dist/workers/workers/index.js +2 -1
- package/package.json +1 -1
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://agentic-qe.dev/schemas/validation-pipeline-output.json",
|
|
4
|
+
"title": "AQE Validation Pipeline Skill Output Schema",
|
|
5
|
+
"description": "Schema for validation pipeline skill output. Includes step results, scores, findings, and blockers.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["skillName", "version", "timestamp", "status", "trustTier", "output"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"skillName": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"const": "validation-pipeline",
|
|
12
|
+
"description": "Must be 'validation-pipeline'"
|
|
13
|
+
},
|
|
14
|
+
"version": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9]+)?$"
|
|
17
|
+
},
|
|
18
|
+
"timestamp": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"format": "date-time"
|
|
21
|
+
},
|
|
22
|
+
"status": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"enum": ["success", "partial", "failed", "skipped"]
|
|
25
|
+
},
|
|
26
|
+
"trustTier": {
|
|
27
|
+
"type": "integer",
|
|
28
|
+
"const": 3,
|
|
29
|
+
"description": "Trust tier 3 indicates full validation with eval suite"
|
|
30
|
+
},
|
|
31
|
+
"output": {
|
|
32
|
+
"type": "object",
|
|
33
|
+
"required": ["pipelineId", "pipelineName", "overall", "score", "steps"],
|
|
34
|
+
"properties": {
|
|
35
|
+
"pipelineId": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"description": "Pipeline identifier"
|
|
38
|
+
},
|
|
39
|
+
"pipelineName": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"description": "Human-readable pipeline name"
|
|
42
|
+
},
|
|
43
|
+
"overall": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"enum": ["pass", "fail", "warn"],
|
|
46
|
+
"description": "Overall pipeline verdict"
|
|
47
|
+
},
|
|
48
|
+
"score": {
|
|
49
|
+
"type": "integer",
|
|
50
|
+
"minimum": 0,
|
|
51
|
+
"maximum": 100,
|
|
52
|
+
"description": "Weighted average score across all steps"
|
|
53
|
+
},
|
|
54
|
+
"steps": {
|
|
55
|
+
"type": "array",
|
|
56
|
+
"items": { "$ref": "#/$defs/stepResult" },
|
|
57
|
+
"minItems": 1,
|
|
58
|
+
"description": "Per-step results"
|
|
59
|
+
},
|
|
60
|
+
"blockers": {
|
|
61
|
+
"type": "array",
|
|
62
|
+
"items": { "$ref": "#/$defs/finding" },
|
|
63
|
+
"description": "Findings from blocking steps that failed"
|
|
64
|
+
},
|
|
65
|
+
"halted": {
|
|
66
|
+
"type": "boolean",
|
|
67
|
+
"description": "Whether pipeline halted early"
|
|
68
|
+
},
|
|
69
|
+
"haltedAt": {
|
|
70
|
+
"type": "string",
|
|
71
|
+
"description": "Step ID where pipeline halted"
|
|
72
|
+
},
|
|
73
|
+
"totalDuration": {
|
|
74
|
+
"type": "integer",
|
|
75
|
+
"minimum": 0,
|
|
76
|
+
"description": "Total execution time in ms"
|
|
77
|
+
},
|
|
78
|
+
"summary": {
|
|
79
|
+
"type": "string",
|
|
80
|
+
"minLength": 20,
|
|
81
|
+
"maxLength": 2000,
|
|
82
|
+
"description": "Human-readable summary"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"metadata": { "$ref": "#/$defs/metadata" },
|
|
87
|
+
"validation": { "$ref": "#/$defs/validationResult" },
|
|
88
|
+
"learning": { "$ref": "#/$defs/learningData" }
|
|
89
|
+
},
|
|
90
|
+
"$defs": {
|
|
91
|
+
"stepResult": {
|
|
92
|
+
"type": "object",
|
|
93
|
+
"required": ["stepId", "stepName", "status", "score", "findings", "evidence", "duration"],
|
|
94
|
+
"properties": {
|
|
95
|
+
"stepId": {
|
|
96
|
+
"type": "string",
|
|
97
|
+
"description": "Step identifier"
|
|
98
|
+
},
|
|
99
|
+
"stepName": {
|
|
100
|
+
"type": "string",
|
|
101
|
+
"description": "Human-readable step name"
|
|
102
|
+
},
|
|
103
|
+
"status": {
|
|
104
|
+
"type": "string",
|
|
105
|
+
"enum": ["pass", "fail", "warn", "skip"],
|
|
106
|
+
"description": "Step verdict"
|
|
107
|
+
},
|
|
108
|
+
"score": {
|
|
109
|
+
"type": "integer",
|
|
110
|
+
"minimum": 0,
|
|
111
|
+
"maximum": 100,
|
|
112
|
+
"description": "Step score"
|
|
113
|
+
},
|
|
114
|
+
"findings": {
|
|
115
|
+
"type": "array",
|
|
116
|
+
"items": { "$ref": "#/$defs/finding" }
|
|
117
|
+
},
|
|
118
|
+
"evidence": {
|
|
119
|
+
"type": "array",
|
|
120
|
+
"items": { "type": "string" },
|
|
121
|
+
"description": "What was checked"
|
|
122
|
+
},
|
|
123
|
+
"duration": {
|
|
124
|
+
"type": "integer",
|
|
125
|
+
"minimum": 0,
|
|
126
|
+
"description": "Step duration in ms"
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
"finding": {
|
|
131
|
+
"type": "object",
|
|
132
|
+
"required": ["id", "stepId", "severity", "title", "description"],
|
|
133
|
+
"properties": {
|
|
134
|
+
"id": {
|
|
135
|
+
"type": "string"
|
|
136
|
+
},
|
|
137
|
+
"stepId": {
|
|
138
|
+
"type": "string"
|
|
139
|
+
},
|
|
140
|
+
"severity": {
|
|
141
|
+
"type": "string",
|
|
142
|
+
"enum": ["critical", "high", "medium", "low", "info"]
|
|
143
|
+
},
|
|
144
|
+
"title": {
|
|
145
|
+
"type": "string",
|
|
146
|
+
"minLength": 5,
|
|
147
|
+
"maxLength": 200
|
|
148
|
+
},
|
|
149
|
+
"description": {
|
|
150
|
+
"type": "string",
|
|
151
|
+
"maxLength": 2000
|
|
152
|
+
},
|
|
153
|
+
"location": {
|
|
154
|
+
"type": "string",
|
|
155
|
+
"description": "File path or document section"
|
|
156
|
+
},
|
|
157
|
+
"suggestion": {
|
|
158
|
+
"type": "string",
|
|
159
|
+
"description": "Suggested fix"
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
"metadata": {
|
|
164
|
+
"type": "object",
|
|
165
|
+
"properties": {
|
|
166
|
+
"executionTimeMs": { "type": "integer", "minimum": 0 },
|
|
167
|
+
"toolsUsed": { "type": "array", "items": { "type": "string" } },
|
|
168
|
+
"agentId": { "type": "string" },
|
|
169
|
+
"pipelineType": { "type": "string" },
|
|
170
|
+
"targetFile": { "type": "string" },
|
|
171
|
+
"stepsExecuted": { "type": "integer", "minimum": 0 },
|
|
172
|
+
"stepsSkipped": { "type": "integer", "minimum": 0 }
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
"validationResult": {
|
|
176
|
+
"type": "object",
|
|
177
|
+
"properties": {
|
|
178
|
+
"schemaValid": { "type": "boolean" },
|
|
179
|
+
"contentValid": { "type": "boolean" },
|
|
180
|
+
"confidence": { "type": "number", "minimum": 0, "maximum": 1 },
|
|
181
|
+
"warnings": { "type": "array", "items": { "type": "string" }, "maxItems": 20 },
|
|
182
|
+
"errors": { "type": "array", "items": { "type": "string" }, "maxItems": 20 }
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
"learningData": {
|
|
186
|
+
"type": "object",
|
|
187
|
+
"properties": {
|
|
188
|
+
"patternsDetected": { "type": "array", "items": { "type": "string" }, "maxItems": 20 },
|
|
189
|
+
"reward": { "type": "number", "minimum": 0, "maximum": 1 }
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skillName": "validation-pipeline",
|
|
3
|
+
"skillVersion": "1.0.0",
|
|
4
|
+
"requiredTools": [],
|
|
5
|
+
"optionalTools": ["jq"],
|
|
6
|
+
"schemaPath": "schemas/output.json",
|
|
7
|
+
"requiredFields": [
|
|
8
|
+
"skillName",
|
|
9
|
+
"status",
|
|
10
|
+
"output",
|
|
11
|
+
"output.pipelineId",
|
|
12
|
+
"output.pipelineName",
|
|
13
|
+
"output.overall",
|
|
14
|
+
"output.score",
|
|
15
|
+
"output.steps"
|
|
16
|
+
],
|
|
17
|
+
"requiredNonEmptyFields": [
|
|
18
|
+
"output.pipelineName",
|
|
19
|
+
"output.steps"
|
|
20
|
+
],
|
|
21
|
+
"mustContainTerms": [
|
|
22
|
+
"pipeline",
|
|
23
|
+
"validation"
|
|
24
|
+
],
|
|
25
|
+
"mustNotContainTerms": [
|
|
26
|
+
"TODO",
|
|
27
|
+
"placeholder",
|
|
28
|
+
"FIXME"
|
|
29
|
+
],
|
|
30
|
+
"enumValidations": {
|
|
31
|
+
".status": ["success", "partial", "failed", "skipped"],
|
|
32
|
+
".output.overall": ["pass", "fail", "warn"]
|
|
33
|
+
}
|
|
34
|
+
}
|
package/README.md
CHANGED
|
@@ -159,19 +159,19 @@ Plus **7 TDD subagents** (red, green, refactor, code/integration/performance/sec
|
|
|
159
159
|
|
|
160
160
|
---
|
|
161
161
|
|
|
162
|
-
##
|
|
162
|
+
## 80 QE Skills
|
|
163
163
|
|
|
164
164
|
Agents automatically apply relevant skills from the skill library. Skills are rated by **trust tier**:
|
|
165
165
|
|
|
166
166
|
| Tier | Count | Meaning |
|
|
167
167
|
|------|-------|---------|
|
|
168
|
-
| **Tier 3 — Verified** |
|
|
168
|
+
| **Tier 3 — Verified** | 48 | Full evaluation test suite, production-ready |
|
|
169
169
|
| **Tier 2 — Validated** | 7 | Has executable validator |
|
|
170
170
|
| **Tier 1 — Structured** | 5 | Has JSON output schema |
|
|
171
171
|
| **Tier 0 — Advisory** | 5 | Guidance only |
|
|
172
172
|
|
|
173
173
|
<details>
|
|
174
|
-
<summary><b>View all
|
|
174
|
+
<summary><b>View all 80 skills</b></summary>
|
|
175
175
|
|
|
176
176
|
**Core Testing (12):** agentic-quality-engineering, holistic-testing-pact, context-driven-testing, tdd-london-chicago, xp-practices, risk-based-testing, test-automation-strategy, refactoring-patterns, shift-left-testing, shift-right-testing, regression-testing, verification-quality
|
|
177
177
|
|
|
@@ -191,6 +191,8 @@ Agents automatically apply relevant skills from the skill library. Skills are ra
|
|
|
191
191
|
|
|
192
192
|
**Enterprise Integration (5):** enterprise-integration-testing, middleware-testing-patterns, observability-testing-patterns, wms-testing-patterns, pentest-validation
|
|
193
193
|
|
|
194
|
+
**Validation (1):** validation-pipeline
|
|
195
|
+
|
|
194
196
|
</details>
|
|
195
197
|
|
|
196
198
|
---
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": "1.2.0",
|
|
3
3
|
"generated": "2026-01-27T00:00:00.000Z",
|
|
4
|
-
"totalSkills":
|
|
4
|
+
"totalSkills": 44,
|
|
5
5
|
"description": "Agentic QE Fleet skills manifest - Quality Engineering focused skills only. Claude Flow platform skills are managed separately.",
|
|
6
6
|
"categories": {
|
|
7
7
|
"qcsd-phases": {
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
"priority": "medium",
|
|
32
32
|
"skills": [
|
|
33
33
|
"security-testing",
|
|
34
|
+
"validation-pipeline",
|
|
34
35
|
"performance-testing",
|
|
35
36
|
"accessibility-testing",
|
|
36
37
|
"a11y-ally",
|
|
@@ -655,6 +656,21 @@
|
|
|
655
656
|
"dependencies": [],
|
|
656
657
|
"agents": ["qe-quality-analyzer"]
|
|
657
658
|
},
|
|
659
|
+
"validation-pipeline": {
|
|
660
|
+
"id": "validation-pipeline",
|
|
661
|
+
"name": "Validation Pipeline",
|
|
662
|
+
"description": "Run structured 13-step requirements validation pipeline with gate enforcement, weighted scoring, and detailed findings.",
|
|
663
|
+
"category": "specialized-testing",
|
|
664
|
+
"priority": "high",
|
|
665
|
+
"file": "validation-pipeline/SKILL.md",
|
|
666
|
+
"tokenEstimate": 1500,
|
|
667
|
+
"optimizationStatus": "active",
|
|
668
|
+
"optimizationVersion": "1.0",
|
|
669
|
+
"lastOptimized": "2026-03-12",
|
|
670
|
+
"tags": ["validation", "requirements", "pipeline", "gate-enforcement", "scoring", "bmad"],
|
|
671
|
+
"dependencies": ["agentic-quality-engineering"],
|
|
672
|
+
"agents": ["qe-requirements-validator"]
|
|
673
|
+
},
|
|
658
674
|
"bug-reporting-excellence": {
|
|
659
675
|
"id": "bug-reporting-excellence",
|
|
660
676
|
"name": "Bug Reporting Excellence",
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "Validation Pipeline"
|
|
3
|
+
description: "Structured step-by-step validation of requirements, code, and artifacts with gate enforcement, per-step scoring, and structured reports."
|
|
4
|
+
trust_tier: 3
|
|
5
|
+
validation:
|
|
6
|
+
schema_path: schemas/output.json
|
|
7
|
+
validator_path: scripts/validate-config.json
|
|
8
|
+
eval_path: evals/validation-pipeline.yaml
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Validation Pipeline
|
|
13
|
+
|
|
14
|
+
## Purpose
|
|
15
|
+
|
|
16
|
+
Run structured validation pipelines that execute steps sequentially, enforce gates at blocking failures, and produce scored reports. Uses the `src/validation/pipeline.ts` framework with 13 requirements validation steps (BMAD-003).
|
|
17
|
+
|
|
18
|
+
## Activation
|
|
19
|
+
|
|
20
|
+
- When validating requirements documents
|
|
21
|
+
- When running structured quality gates
|
|
22
|
+
- When assessing document completeness, testability, or traceability
|
|
23
|
+
- When invoked via `/validation-pipeline`
|
|
24
|
+
|
|
25
|
+
## Quick Start
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# Validate a requirements document (all 13 steps)
|
|
29
|
+
/validation-pipeline requirements docs/requirements.md
|
|
30
|
+
|
|
31
|
+
# Validate with specific steps only
|
|
32
|
+
/validation-pipeline requirements docs/requirements.md --steps format-check,completeness-check,invest-criteria
|
|
33
|
+
|
|
34
|
+
# Continue past blocking failures
|
|
35
|
+
/validation-pipeline requirements docs/requirements.md --continue-on-failure
|
|
36
|
+
|
|
37
|
+
# Output as JSON
|
|
38
|
+
/validation-pipeline requirements docs/requirements.md --json
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Workflow
|
|
42
|
+
|
|
43
|
+
### Step 1: Read the Target Document
|
|
44
|
+
|
|
45
|
+
Read the file specified by the user. If no file is provided, ask for one.
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
Read the target document using the Read tool.
|
|
49
|
+
Store the content for pipeline execution.
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Step 2: Select Pipeline
|
|
53
|
+
|
|
54
|
+
Choose the appropriate pipeline based on the user's request:
|
|
55
|
+
|
|
56
|
+
| Pipeline | Steps | Use Case |
|
|
57
|
+
|----------|-------|----------|
|
|
58
|
+
| `requirements` | 13 | Requirements documents, PRDs, user stories |
|
|
59
|
+
|
|
60
|
+
Additional pipelines can be created by defining new step sets in `src/validation/steps/`.
|
|
61
|
+
|
|
62
|
+
### Step 3: Execute Pipeline
|
|
63
|
+
|
|
64
|
+
The pipeline framework (`src/validation/pipeline.ts`) handles execution:
|
|
65
|
+
|
|
66
|
+
1. **Sequential execution** — steps run in order, each receiving results from prior steps
|
|
67
|
+
2. **Gate enforcement** — blocking steps that fail halt the pipeline (unless `--continue-on-failure`)
|
|
68
|
+
3. **Per-step scoring** — each step produces a 0-100 score with findings and evidence
|
|
69
|
+
4. **Weighted rollup** — overall score uses category weights (format=10%, content=30%, quality=25%, traceability=20%, compliance=15%)
|
|
70
|
+
|
|
71
|
+
#### Requirements Pipeline Steps (13 total)
|
|
72
|
+
|
|
73
|
+
| # | Step ID | Category | Severity | What It Checks |
|
|
74
|
+
|---|---------|----------|----------|----------------|
|
|
75
|
+
| 1 | `format-check` | format | blocking | Headings, required sections, document length |
|
|
76
|
+
| 2 | `completeness-check` | content | blocking | Required fields populated, acceptance criteria present |
|
|
77
|
+
| 3 | `invest-criteria` | quality | warning | Independent, Negotiable, Valuable, Estimable, Small, Testable |
|
|
78
|
+
| 4 | `smart-acceptance` | quality | warning | Specific, Measurable, Achievable, Relevant, Time-bound |
|
|
79
|
+
| 5 | `testability-score` | quality | warning | Can each requirement be tested? |
|
|
80
|
+
| 6 | `vague-term-detection` | content | info | Flags "should", "might", "various", "etc." |
|
|
81
|
+
| 7 | `information-density` | content | info | Every sentence carries weight, no filler |
|
|
82
|
+
| 8 | `traceability-check` | traceability | warning | Requirements-to-tests mapping exists |
|
|
83
|
+
| 9 | `implementation-leakage` | quality | warning | Requirements don't prescribe implementation |
|
|
84
|
+
| 10 | `domain-compliance` | compliance | info | Alignment with domain model |
|
|
85
|
+
| 11 | `dependency-analysis` | traceability | info | Cross-requirement dependencies identified |
|
|
86
|
+
| 12 | `bdd-scenario-generation` | quality | warning | Can generate Given/When/Then for each requirement |
|
|
87
|
+
| 13 | `holistic-quality` | compliance | blocking | Overall coherence, no contradictions |
|
|
88
|
+
|
|
89
|
+
### Step 4: Report Results
|
|
90
|
+
|
|
91
|
+
Format the pipeline result as a structured report:
|
|
92
|
+
|
|
93
|
+
```markdown
|
|
94
|
+
# Validation Report: Requirements Pipeline
|
|
95
|
+
|
|
96
|
+
**Overall**: PASS/FAIL/WARN | **Score**: 85/100 | **Duration**: 42ms
|
|
97
|
+
|
|
98
|
+
## Step Results
|
|
99
|
+
| # | Step | Status | Score | Findings | Duration |
|
|
100
|
+
|---|------|--------|-------|----------|----------|
|
|
101
|
+
| 1 | Format Check | PASS | 100 | 0 | 2ms |
|
|
102
|
+
| 2 | Completeness | WARN | 60 | 2 | 5ms |
|
|
103
|
+
...
|
|
104
|
+
|
|
105
|
+
## Blockers
|
|
106
|
+
- (blocking findings listed here)
|
|
107
|
+
|
|
108
|
+
## All Findings
|
|
109
|
+
- [HIGH] Missing acceptance criteria: Requirement US-104 has no AC
|
|
110
|
+
- [MEDIUM] Vague term: "should" used 5 times without specifics
|
|
111
|
+
...
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Step 5: Record Learning
|
|
115
|
+
|
|
116
|
+
After pipeline execution, record the outcome for learning:
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
// Store validation pattern
|
|
120
|
+
memory store --namespace validation-pipeline --key "req-validation-{timestamp}" --value "{score, findings_count, halted}"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Parameters
|
|
124
|
+
|
|
125
|
+
| Parameter | Type | Default | Description |
|
|
126
|
+
|-----------|------|---------|-------------|
|
|
127
|
+
| `pipeline` | string | `requirements` | Pipeline type to run |
|
|
128
|
+
| `file` | string | required | Path to document to validate |
|
|
129
|
+
| `--steps` | string[] | all | Specific step IDs to run |
|
|
130
|
+
| `--continue-on-failure` | boolean | false | Skip blocking gates |
|
|
131
|
+
| `--json` | boolean | false | Output as JSON instead of markdown |
|
|
132
|
+
| `--metadata` | object | {} | Additional context for steps |
|
|
133
|
+
|
|
134
|
+
## Integration Points
|
|
135
|
+
|
|
136
|
+
- **qe-requirements-validator agent** — delegates structured validation to this pipeline
|
|
137
|
+
- **qe-quality-gate agent** — uses pipeline for gate evaluation
|
|
138
|
+
- **YAML Pipelines** — can invoke validation steps as workflow actions
|
|
139
|
+
- **MCP** — accessible via `pipeline_validate` tool
|
|
140
|
+
|
|
141
|
+
## Output Schema
|
|
142
|
+
|
|
143
|
+
The pipeline produces a `PipelineResult` object (see `schemas/output.json`):
|
|
144
|
+
|
|
145
|
+
```typescript
|
|
146
|
+
{
|
|
147
|
+
pipelineId: string;
|
|
148
|
+
pipelineName: string;
|
|
149
|
+
overall: 'pass' | 'fail' | 'warn';
|
|
150
|
+
score: number; // 0-100 weighted average
|
|
151
|
+
steps: StepResult[]; // per-step details
|
|
152
|
+
blockers: Finding[]; // blocking findings
|
|
153
|
+
halted: boolean;
|
|
154
|
+
haltedAt?: string; // step ID where halted
|
|
155
|
+
totalDuration: number;
|
|
156
|
+
timestamp: string;
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Error Handling
|
|
161
|
+
|
|
162
|
+
- **Step throws exception** — captured as a FAIL with critical finding, pipeline continues or halts per severity
|
|
163
|
+
- **File not found** — report error, do not run pipeline
|
|
164
|
+
- **Empty document** — format-check step will catch this as a blocking failure
|