codex-workflows 0.6.8 → 0.7.0
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/.agents/skills/ai-development-guide/SKILL.md +5 -3
- package/.agents/skills/ai-development-guide/references/frontend.md +11 -19
- package/.agents/skills/coding-rules/references/typescript.md +17 -12
- package/.agents/skills/documentation-criteria/SKILL.md +1 -1
- package/.agents/skills/documentation-criteria/references/design-template.md +16 -5
- package/.agents/skills/documentation-criteria/references/plan-template.md +19 -5
- package/.agents/skills/documentation-criteria/references/task-template.md +19 -1
- package/.agents/skills/recipe-build/SKILL.md +1 -1
- package/.agents/skills/recipe-front-build/SKILL.md +1 -1
- package/.agents/skills/recipe-front-plan/SKILL.md +1 -1
- package/.agents/skills/recipe-fullstack-build/SKILL.md +1 -1
- package/.agents/skills/recipe-plan/SKILL.md +1 -1
- package/.agents/skills/recipe-prepare-implementation/SKILL.md +2 -1
- package/.agents/skills/subagents-orchestration-guide/SKILL.md +2 -2
- package/.agents/skills/subagents-orchestration-guide/references/monorepo-flow.md +1 -1
- package/.agents/skills/testing/SKILL.md +5 -5
- package/.agents/skills/testing/references/typescript.md +2 -6
- package/.codex/agents/acceptance-test-generator.toml +2 -44
- package/.codex/agents/code-reviewer.toml +12 -57
- package/.codex/agents/code-verifier.toml +1 -47
- package/.codex/agents/codebase-analyzer.toml +1 -106
- package/.codex/agents/design-sync.toml +2 -64
- package/.codex/agents/document-reviewer.toml +8 -81
- package/.codex/agents/integration-test-reviewer.toml +1 -26
- package/.codex/agents/investigator.toml +1 -73
- package/.codex/agents/quality-fixer-frontend.toml +4 -105
- package/.codex/agents/quality-fixer.toml +4 -122
- package/.codex/agents/requirement-analyzer.toml +1 -29
- package/.codex/agents/rule-advisor.toml +1 -79
- package/.codex/agents/scope-discoverer.toml +1 -70
- package/.codex/agents/security-reviewer.toml +1 -19
- package/.codex/agents/solver.toml +5 -54
- package/.codex/agents/task-decomposer.toml +47 -4
- package/.codex/agents/task-executor-frontend.toml +37 -144
- package/.codex/agents/task-executor.toml +37 -144
- package/.codex/agents/technical-designer-frontend.toml +8 -0
- package/.codex/agents/technical-designer.toml +10 -1
- package/.codex/agents/ui-analyzer.toml +1 -157
- package/.codex/agents/verifier.toml +2 -65
- package/.codex/agents/work-planner.toml +30 -9
- package/package.json +1 -1
|
@@ -158,53 +158,7 @@ Return the JSON result as the final response. See Output Format for the schema.
|
|
|
158
158
|
### Essential Output (default)
|
|
159
159
|
|
|
160
160
|
```json
|
|
161
|
-
{
|
|
162
|
-
"summary": {
|
|
163
|
-
"docType": "prd|design-doc",
|
|
164
|
-
"documentPath": "/path/to/document.md",
|
|
165
|
-
"verifiableClaimCount": 24,
|
|
166
|
-
"matchCount": 20,
|
|
167
|
-
"consistencyScore": 85,
|
|
168
|
-
"status": "consistent|mostly_consistent|needs_review|inconsistent"
|
|
169
|
-
},
|
|
170
|
-
"claimCoverage": {
|
|
171
|
-
"sectionsAnalyzed": 8,
|
|
172
|
-
"sectionsWithClaims": 7,
|
|
173
|
-
"sectionsWithZeroClaims": ["Appendix"]
|
|
174
|
-
},
|
|
175
|
-
"discrepancies": [
|
|
176
|
-
{
|
|
177
|
-
"id": "D001",
|
|
178
|
-
"status": "drift|gap|conflict",
|
|
179
|
-
"severity": "critical|major|minor",
|
|
180
|
-
"claim": "Brief claim description",
|
|
181
|
-
"documentLocation": "PRD.md:45",
|
|
182
|
-
"codeLocation": "src/auth.ts:120",
|
|
183
|
-
"evidence": "Observed implementation or enumeration result",
|
|
184
|
-
"classification": "What was found"
|
|
185
|
-
}
|
|
186
|
-
],
|
|
187
|
-
"reverseCoverage": {
|
|
188
|
-
"routesInCode": 6,
|
|
189
|
-
"routesDocumented": 5,
|
|
190
|
-
"undocumentedRoutes": ["POST /admin/reindex (src/routes/admin.ts:42)"],
|
|
191
|
-
"testFilesFound": 4,
|
|
192
|
-
"testFilesDocumented": 2,
|
|
193
|
-
"exportsInCode": 12,
|
|
194
|
-
"exportsDocumented": 10,
|
|
195
|
-
"undocumentedExports": ["rebuildSearchIndex (src/search/index.ts:18)"],
|
|
196
|
-
"dataOperationsInCode": 3,
|
|
197
|
-
"dataOperationsDocumented": 2,
|
|
198
|
-
"undocumentedDataOperations": ["userRepository.saveUser (src/user/repository.ts:41)"],
|
|
199
|
-
"testBoundariesSectionPresent": true
|
|
200
|
-
},
|
|
201
|
-
"coverage": {
|
|
202
|
-
"documented": ["Feature areas with documentation"],
|
|
203
|
-
"undocumented": ["Code features lacking documentation"],
|
|
204
|
-
"unimplemented": ["Documented specs not yet implemented"]
|
|
205
|
-
},
|
|
206
|
-
"limitations": ["What could not be verified and why"]
|
|
207
|
-
}
|
|
161
|
+
{"summary":{"docType":"prd|design-doc","documentPath":"/path/to/document.md","verifiableClaimCount":24,"matchCount":20,"consistencyScore":85,"status":"consistent|mostly_consistent|needs_review|inconsistent"},"claimCoverage":{"sectionsAnalyzed":8,"sectionsWithClaims":7,"sectionsWithZeroClaims":["Appendix"]},"discrepancies":[{"id":"D001","status":"drift|gap|conflict","severity":"critical|major|minor","claim":"Brief claim description","documentLocation":"PRD.md:45","codeLocation":"src/auth.ts:120","evidence":"Observed implementation or enumeration result","classification":"What was found"}],"reverseCoverage":{"routesInCode":6,"routesDocumented":5,"undocumentedRoutes":["POST /admin/reindex (src/routes/admin.ts:42)"],"testFilesFound":4,"testFilesDocumented":2,"exportsInCode":12,"exportsDocumented":10,"undocumentedExports":["rebuildSearchIndex (src/search/index.ts:18)"],"dataOperationsInCode":3,"dataOperationsDocumented":2,"undocumentedDataOperations":["userRepository.saveUser (src/user/repository.ts:41)"],"testBoundariesSectionPresent":true},"coverage":{"documented":["Feature areas with documentation"],"undocumented":["Code features lacking documentation"],"unimplemented":["Documented specs not yet implemented"]},"limitations":["What could not be verified and why"]}
|
|
208
162
|
```
|
|
209
163
|
|
|
210
164
|
### Extended Output (verbose: true)
|
|
@@ -129,112 +129,7 @@ Return the JSON result as the final response.
|
|
|
129
129
|
## Output Format
|
|
130
130
|
|
|
131
131
|
```json
|
|
132
|
-
{
|
|
133
|
-
"analysisScope": {
|
|
134
|
-
"filesAnalyzed": ["path/to/file"],
|
|
135
|
-
"tracedDependencies": ["path/to/dependency"],
|
|
136
|
-
"categoriesDetected": ["data_layer", "validation"]
|
|
137
|
-
},
|
|
138
|
-
"existingElements": [
|
|
139
|
-
{
|
|
140
|
-
"category": "function|class|type|interface|component|hook|configuration|constant",
|
|
141
|
-
"name": "ElementName",
|
|
142
|
-
"filePath": "path/to/file:line",
|
|
143
|
-
"signature": "Exact or brief signature",
|
|
144
|
-
"usedBy": ["path/to/consumer"]
|
|
145
|
-
}
|
|
146
|
-
],
|
|
147
|
-
"dataModel": {
|
|
148
|
-
"detected": true,
|
|
149
|
-
"schemas": [
|
|
150
|
-
{
|
|
151
|
-
"name": "table_or_model",
|
|
152
|
-
"definitionPath": "path/to/file:line",
|
|
153
|
-
"fields": [
|
|
154
|
-
{
|
|
155
|
-
"name": "field_name",
|
|
156
|
-
"type": "field_type",
|
|
157
|
-
"constraints": ["NOT NULL", "UNIQUE"]
|
|
158
|
-
}
|
|
159
|
-
],
|
|
160
|
-
"relationships": ["references other_table via foreign_key"]
|
|
161
|
-
}
|
|
162
|
-
],
|
|
163
|
-
"accessPatterns": [
|
|
164
|
-
{
|
|
165
|
-
"operation": "read|write|aggregate|join|delete",
|
|
166
|
-
"location": "path/to/file:line",
|
|
167
|
-
"targetSchema": "table_or_model",
|
|
168
|
-
"description": "Observed access pattern"
|
|
169
|
-
}
|
|
170
|
-
],
|
|
171
|
-
"migrationFiles": ["path/to/migration"]
|
|
172
|
-
},
|
|
173
|
-
"dataTransformationPipelines": [
|
|
174
|
-
{
|
|
175
|
-
"entryPoint": "functionOrMethodName (path/to/file:line)",
|
|
176
|
-
"steps": [
|
|
177
|
-
{
|
|
178
|
-
"order": 1,
|
|
179
|
-
"method": "functionOrMethodName (path/to/file:line)",
|
|
180
|
-
"input": "Input data or format at this step",
|
|
181
|
-
"output": "Output data or format at this step",
|
|
182
|
-
"externalLookups": ["Config.KEY lookup", "Reference table mapping"],
|
|
183
|
-
"transformation": "What changed and why it matters"
|
|
184
|
-
}
|
|
185
|
-
],
|
|
186
|
-
"intermediateFormats": ["Intermediate representation if applicable"],
|
|
187
|
-
"finalOutput": "Final output shape or observable value"
|
|
188
|
-
}
|
|
189
|
-
],
|
|
190
|
-
"entryPointInventory": [
|
|
191
|
-
{
|
|
192
|
-
"entryPoint": "functionOrMethodName (path/to/file:line)",
|
|
193
|
-
"classification": "change-relevant|non-relevant",
|
|
194
|
-
"inputShape": "Input type or shape",
|
|
195
|
-
"outputShape": "Output type or shape"
|
|
196
|
-
}
|
|
197
|
-
],
|
|
198
|
-
"constraints": [
|
|
199
|
-
{
|
|
200
|
-
"type": "validation|business_rule|configuration|assumption",
|
|
201
|
-
"description": "Observed constraint",
|
|
202
|
-
"location": "path/to/file:line",
|
|
203
|
-
"impact": "Why design should respect it"
|
|
204
|
-
}
|
|
205
|
-
],
|
|
206
|
-
"qualityAssurance": {
|
|
207
|
-
"mechanisms": [
|
|
208
|
-
{
|
|
209
|
-
"tool": "Tool or check name",
|
|
210
|
-
"enforces": "What quality aspect it enforces",
|
|
211
|
-
"configLocation": "path/to/config:line",
|
|
212
|
-
"coveredFiles": ["affected files or directories covered by this mechanism"],
|
|
213
|
-
"type": "linter|static_analysis|schema_validator|domain_specific|ci_check"
|
|
214
|
-
}
|
|
215
|
-
],
|
|
216
|
-
"domainConstraints": [
|
|
217
|
-
{
|
|
218
|
-
"constraint": "Description of the domain-specific constraint",
|
|
219
|
-
"source": "path/to/config-or-ci:line",
|
|
220
|
-
"affectedFiles": ["files subject to this constraint"]
|
|
221
|
-
}
|
|
222
|
-
]
|
|
223
|
-
},
|
|
224
|
-
"focusAreas": [
|
|
225
|
-
{
|
|
226
|
-
"area": "Area name",
|
|
227
|
-
"reason": "Why this area deserves attention",
|
|
228
|
-
"relatedFiles": ["path/to/file"],
|
|
229
|
-
"risk": "What could break if the design overlooks it"
|
|
230
|
-
}
|
|
231
|
-
],
|
|
232
|
-
"testCoverage": {
|
|
233
|
-
"testedElements": ["element name"],
|
|
234
|
-
"untestedElements": ["element name"]
|
|
235
|
-
},
|
|
236
|
-
"limitations": ["What could not be fully traced and why"]
|
|
237
|
-
}
|
|
132
|
+
{"analysisScope":{"filesAnalyzed":["path/to/file"],"tracedDependencies":["path/to/dependency"],"categoriesDetected":["data_layer","validation"]},"existingElements":[{"category":"function|class|type|interface|component|hook|configuration|constant","name":"ElementName","filePath":"path/to/file:line","signature":"Exact or brief signature","usedBy":["path/to/consumer"]}],"dataModel":{"detected":true,"schemas":[{"name":"table_or_model","definitionPath":"path/to/file:line","fields":[{"name":"field_name","type":"field_type","constraints":["NOT NULL","UNIQUE"]}],"relationships":["references other_table via foreign_key"]}],"accessPatterns":[{"operation":"read|write|aggregate|join|delete","location":"path/to/file:line","targetSchema":"table_or_model","description":"Observed access pattern"}],"migrationFiles":["path/to/migration"]},"dataTransformationPipelines":[{"entryPoint":"functionOrMethodName (path/to/file:line)","steps":[{"order":1,"method":"functionOrMethodName (path/to/file:line)","input":"Input data or format at this step","output":"Output data or format at this step","externalLookups":["Config.KEY lookup","Reference table mapping"],"transformation":"What changed and why it matters"}],"intermediateFormats":["Intermediate representation if applicable"],"finalOutput":"Final output shape or observable value"}],"entryPointInventory":[{"entryPoint":"functionOrMethodName (path/to/file:line)","classification":"change-relevant|non-relevant","inputShape":"Input type or shape","outputShape":"Output type or shape"}],"constraints":[{"type":"validation|business_rule|configuration|assumption","description":"Observed constraint","location":"path/to/file:line","impact":"Why design should respect it"}],"qualityAssurance":{"mechanisms":[{"tool":"Tool or check name","enforces":"What quality aspect it enforces","configLocation":"path/to/config:line","coveredFiles":["affected files or directories covered by this mechanism"],"type":"linter|static_analysis|schema_validator|domain_specific|ci_check"}],"domainConstraints":[{"constraint":"Description of the domain-specific constraint","source":"path/to/config-or-ci:line","affectedFiles":["files subject to this constraint"]}]},"focusAreas":[{"area":"Area name","reason":"Why this area deserves attention","relatedFiles":["path/to/file"],"risk":"What could break if the design overlooks it"}],"testCoverage":{"testedElements":["element name"],"untestedElements":["element name"]},"limitations":["What could not be fully traced and why"]}
|
|
238
133
|
```
|
|
239
134
|
|
|
240
135
|
## Completion Criteria
|
|
@@ -228,57 +228,7 @@ Severity Assessment:
|
|
|
228
228
|
### Output Format [JSON MANDATORY]
|
|
229
229
|
|
|
230
230
|
```json
|
|
231
|
-
{
|
|
232
|
-
"metadata": {
|
|
233
|
-
"review_type": "design-sync",
|
|
234
|
-
"source_design": "[source Design Doc path]",
|
|
235
|
-
"analyzed_docs": 3,
|
|
236
|
-
"analysis_date": "[execution datetime]"
|
|
237
|
-
},
|
|
238
|
-
"summary": {
|
|
239
|
-
"total_conflicts": 2,
|
|
240
|
-
"critical": 1,
|
|
241
|
-
"high": 1,
|
|
242
|
-
"medium": 0,
|
|
243
|
-
"confirmed_conflicts": 1,
|
|
244
|
-
"candidate_conflicts": 1,
|
|
245
|
-
"sync_status": "CONFLICTS_FOUND"
|
|
246
|
-
},
|
|
247
|
-
"confirmed_conflicts": [
|
|
248
|
-
{
|
|
249
|
-
"id": "CONFLICT-001",
|
|
250
|
-
"severity": "critical",
|
|
251
|
-
"confidence": "high",
|
|
252
|
-
"match_basis": "exact_string",
|
|
253
|
-
"type": "Type definition mismatch",
|
|
254
|
-
"source_file": "[source file]",
|
|
255
|
-
"source_location": "[section/line]",
|
|
256
|
-
"source_value": "[content in source file]",
|
|
257
|
-
"target_file": "[file with conflict]",
|
|
258
|
-
"target_location": "[section/line]",
|
|
259
|
-
"target_value": "[conflicting content]",
|
|
260
|
-
"recommendation": "[Recommend unifying to source file's value]"
|
|
261
|
-
}
|
|
262
|
-
],
|
|
263
|
-
"candidate_conflicts": [
|
|
264
|
-
{
|
|
265
|
-
"id": "CANDIDATE-001",
|
|
266
|
-
"severity": "high",
|
|
267
|
-
"confidence": "medium",
|
|
268
|
-
"match_basis": "same_ac_slot",
|
|
269
|
-
"type": "Acceptance criteria conflict",
|
|
270
|
-
"source_file": "[source file]",
|
|
271
|
-
"source_location": "[section/line]",
|
|
272
|
-
"source_value": "[content in source file]",
|
|
273
|
-
"target_file": "[file with conflict]",
|
|
274
|
-
"target_location": "[section/line]",
|
|
275
|
-
"target_value": "[conflicting content]",
|
|
276
|
-
"reason": "[structural evidence linking the items]",
|
|
277
|
-
"recommendation": "[Recommend reviewing whether these describe the same design slot]"
|
|
278
|
-
}
|
|
279
|
-
],
|
|
280
|
-
"no_conflicts_docs": ["[filename1]", "[filename2]"]
|
|
281
|
-
}
|
|
231
|
+
{"metadata":{"review_type":"design-sync","source_design":"[source Design Doc path]","analyzed_docs":3,"analysis_date":"[execution datetime]"},"summary":{"total_conflicts":2,"critical":1,"high":1,"medium":0,"confirmed_conflicts":1,"candidate_conflicts":1,"sync_status":"CONFLICTS_FOUND"},"confirmed_conflicts":[{"id":"CONFLICT-001","severity":"critical","confidence":"high","match_basis":"exact_string","type":"Type definition mismatch","source_file":"[source file]","source_location":"[section/line]","source_value":"[content in source file]","target_file":"[file with conflict]","target_location":"[section/line]","target_value":"[conflicting content]","recommendation":"[Recommend unifying to source file's value]"}],"candidate_conflicts":[{"id":"CANDIDATE-001","severity":"high","confidence":"medium","match_basis":"same_ac_slot","type":"Acceptance criteria conflict","source_file":"[source file]","source_location":"[section/line]","source_value":"[content in source file]","target_file":"[file with conflict]","target_location":"[section/line]","target_value":"[conflicting content]","reason":"[structural evidence linking the items]","recommendation":"[Recommend reviewing whether these describe the same design slot]"}],"no_conflicts_docs":["[filename1]","[filename2]"]}
|
|
282
232
|
```
|
|
283
233
|
|
|
284
234
|
`total_conflicts` MUST equal `confirmed_conflicts + candidate_conflicts`.
|
|
@@ -290,19 +240,7 @@ When no conflicts: `"sync_status": "NO_CONFLICTS"`, `"confirmed_conflicts": []`,
|
|
|
290
240
|
When fewer than 2 Design Docs exist, return immediately:
|
|
291
241
|
|
|
292
242
|
```json
|
|
293
|
-
{
|
|
294
|
-
"metadata": {
|
|
295
|
-
"review_type": "design-sync",
|
|
296
|
-
"source_design": "[provided path]",
|
|
297
|
-
"analyzed_docs": 1
|
|
298
|
-
},
|
|
299
|
-
"summary": {
|
|
300
|
-
"sync_status": "SKIPPED",
|
|
301
|
-
"reason": "fewer_than_2_design_docs"
|
|
302
|
-
},
|
|
303
|
-
"confirmed_conflicts": [],
|
|
304
|
-
"candidate_conflicts": []
|
|
305
|
-
}
|
|
243
|
+
{"metadata":{"review_type":"design-sync","source_design":"[provided path]","analyzed_docs":1},"summary":{"sync_status":"SKIPPED","reason":"fewer_than_2_design_docs"},"confirmed_conflicts":[],"candidate_conflicts":[]}
|
|
306
244
|
```
|
|
307
245
|
|
|
308
246
|
ENFORCEMENT: sync_status MUST be one of: CONFLICTS_FOUND | NO_CONFLICTS | SKIPPED. These three values are the complete vocabulary.
|
|
@@ -84,7 +84,7 @@ Skill Status:
|
|
|
84
84
|
- When `codebase_analysis` is provided, use `analysisScope`, `existingElements`, `constraints`, `qualityAssurance`, `focusAreas`, and `limitations` as source evidence for scope, feasibility, and completeness checks
|
|
85
85
|
- When `ui_analysis` is provided, use `componentStructure`, `propsPatterns`, `cssLayout`, `stateDisplay`, `displayConditions`, `accessibility`, and `candidateWriteSet` as source evidence for UI scope, feasibility, and completeness checks
|
|
86
86
|
- When `code_verification` is provided, use its discrepancies and reverse coverage as pre-verified evidence during review
|
|
87
|
-
- For WorkPlan: confirm the plan carries the artifacts the semantic gate is judged against: WorkPlan Review, Review Scope, Design-to-Plan Traceability, Verification Strategy summary, Proof Strategy, Failure Mode Checklist, and Quality Assurance Mechanisms. Read the referenced Design Doc(s), UI Spec, ADRs, and test skeletons when listed so coverage can be checked against source artifacts.
|
|
87
|
+
- For WorkPlan: confirm the plan carries the artifacts the semantic gate is judged against: WorkPlan Review, Review Scope, Design-to-Plan Traceability, Reference Contract Values when binding observable values apply, Verification Strategy summary, Proof Strategy, Failure Mode Checklist, and Quality Assurance Mechanisms. Read the referenced Design Doc(s), including `Observable Contract Values` tables when present, UI Spec, ADRs, and test skeletons when listed so coverage can be checked against source artifacts.
|
|
88
88
|
|
|
89
89
|
### Step 2: Target Document Collection
|
|
90
90
|
- Load document specified by target
|
|
@@ -134,11 +134,13 @@ For WorkPlan, additionally verify:
|
|
|
134
134
|
- **Output comparison check**: When the Design Doc changes existing observable behavior, an external contract, or a persisted data shape, verify that a concrete output comparison method is defined with identical input, expected output fields or format, and diff method. When upstream analysis includes `dataTransformationPipelines`, each listed step must be mapped to the comparison that verifies it; steps excluded because data passes through unchanged must include rationale. Missing mappings or rationale → `important` issue (category: `completeness`)
|
|
135
135
|
- **Minimal Surface Alternatives check**: Applies when the Design Doc proposes new in-scope elements as defined by coding-rules "Minimum Surface Terms". Reverse-engineer/as-is Design Docs are exempt. Missing or empty section when the trigger fires → `critical` issue (category: `completeness`). For each entry verify: (1) Step 1 lists at least one AC ID or accepted technical constraint from the Design Doc or referenced UI Spec; speculative-only linkage → `critical` issue (category: `compliance`). (2) Steps 2-3 include at least one subtractive alternative such as derive, compute on demand, keep at caller, reuse existing, or do not introduce new state/mode/abstraction; missing subtractive alternative → `important` issue (category: `compliance`). (3) Step 4 selects the smallest alternative or names a current requirement smaller alternatives fail to satisfy; primary rationale based on coding-rules subjective-only rationales → `critical` issue (category: `compliance`). (4) Step 5 records rejected alternatives with brief rationale; missing rejected alternatives log → `important` issue (category: `completeness`)
|
|
136
136
|
- **WorkPlan semantic gate**:
|
|
137
|
-
- Coverage is checked where each item lives in the plan: each acceptance criterion is covered by a task whose Completion Criteria or Proof Obligations reference the AC ID or claim identifier; each data contract, state transition, boundary, prerequisite, and protected scope item has a Design-to-Plan Traceability row mapped to a task or an explicit out-of-scope entry. Missing coverage is a `critical` issue (category: `completeness`).
|
|
137
|
+
- Coverage is checked where each item lives in the plan: each acceptance criterion is covered by a task whose Completion Criteria or Proof Obligations reference the AC ID or claim identifier; each data contract, state transition, boundary, prerequisite, and protected scope item has a Design-to-Plan Traceability row mapped to a task or an explicit out-of-scope entry; each non-serialized binding observable Design Doc value is copied into Reference Contract Values when applicable; each serialized binding value is recorded in Connection Map with concrete Serialized Format and Consumer Parse Rule. Missing coverage is a `critical` issue (category: `completeness`).
|
|
138
138
|
- Distinguish the cause for an uncovered acceptance criterion: when the source Design Doc supports it but no task maps to it, classify as a plan omission (`critical`, fixable by re-planning); when the source document or inputs give it no basis, classify as `rejected` because re-planning cannot invent the missing source requirement.
|
|
139
139
|
- Early verification must sit in an early phase rather than only the final phase. Deferral to final phase without rationale is an `important` issue (category: `consistency`).
|
|
140
140
|
- Each cross-boundary, public-boundary, browser-boundary, or persisted-state change names a task that verifies it through the real boundary. Missing real-boundary coverage is an `important` issue (category: `completeness`).
|
|
141
|
-
- Each traceability table present (Design-to-Plan, UI Spec Component, Connection Map, ADR Bindings) is filled to the granularity needed to resolve the target task. Under-specified rows are `important` issues (category: `completeness`).
|
|
141
|
+
- Each traceability table present (Design-to-Plan, Reference Contract Values, UI Spec Component, Connection Map, ADR Bindings) is filled to the granularity needed to resolve the target task. Under-specified rows are `important` issues (category: `completeness`).
|
|
142
|
+
- Reference Contract Values uses explicit `covered` or `gap` status. A `covered` row without task IDs, or a `gap` row without Notes explaining the gap and user-confirmation handling, is an `important` issue (category: `completeness`).
|
|
143
|
+
- Binding observable values are carried with content fidelity: for each Design Doc observable contract that encodes a non-serialized binding value (column/field/label set and order, derived-display rule, or state-lifecycle negative), the plan's Reference Contract Values table carries the value verbatim from the Design Doc and maps it to a covering task. A non-serialized value reduced to a label, summarized, or absent while the Design Doc specifies it is a content-fidelity gap: `critical` issue (category: `completeness`). When the value is serialized across a boundary, verify it is recorded in Connection Map instead; missing concrete Serialized Format or Consumer Parse Rule for that serialized value is a `critical` issue (category: `completeness`).
|
|
142
144
|
- The Failure Mode Checklist covers applicable domain-independent categories: same-value, no-op, empty input, invalid option, missing config, unavailable boundary, shared-state dependency, rollback-only visibility. Missing applicable categories are `recommended` issues (category: `completeness`).
|
|
143
145
|
- Verdict mapping: any WorkPlan semantic-gate `critical` issue forces `needs_revision`, except a coverage gap traceable to missing or contradictory source documents or inputs forces `rejected`. Important-only issues may return `approved_with_conditions`, but orchestration must route WorkPlan conditions back through work-planner update before batch approval or task decomposition.
|
|
144
146
|
- **Undetermined items review** [MANDATORY]: Every TBD, unknown, or open item MUST include: (1) **owner** — who resolves it, (2) **due** — when it gets resolved (which phase or milestone), (3) **next-phase handling** — how the next phase treats this gap. Missing any of these three → `important` issue
|
|
@@ -186,73 +188,13 @@ Complete all items before proceeding to output.
|
|
|
186
188
|
### Comprehensive Review Mode
|
|
187
189
|
|
|
188
190
|
```json
|
|
189
|
-
{
|
|
190
|
-
"metadata": {
|
|
191
|
-
"review_mode": "comprehensive",
|
|
192
|
-
"doc_type": "DesignDoc",
|
|
193
|
-
"target_path": "/path/to/document.md"
|
|
194
|
-
},
|
|
195
|
-
"scores": {
|
|
196
|
-
"consistency": 85,
|
|
197
|
-
"completeness": 80,
|
|
198
|
-
"rule_compliance": 90,
|
|
199
|
-
"clarity": 75
|
|
200
|
-
},
|
|
201
|
-
"gate0": {
|
|
202
|
-
"status": "pass|fail",
|
|
203
|
-
"missing_elements": []
|
|
204
|
-
},
|
|
205
|
-
"verdict": {
|
|
206
|
-
"decision": "approved_with_conditions",
|
|
207
|
-
"conditions": [
|
|
208
|
-
"Resolve FileUtil discrepancy",
|
|
209
|
-
"Add missing test files"
|
|
210
|
-
]
|
|
211
|
-
},
|
|
212
|
-
"issues": [
|
|
213
|
-
{
|
|
214
|
-
"id": "I001",
|
|
215
|
-
"severity": "critical",
|
|
216
|
-
"category": "implementation",
|
|
217
|
-
"location": "Section 3.2",
|
|
218
|
-
"description": "FileUtil method mismatch",
|
|
219
|
-
"suggestion": "Update document to reflect actual FileUtil usage"
|
|
220
|
-
}
|
|
221
|
-
],
|
|
222
|
-
"recommendations": [
|
|
223
|
-
"Priority fixes before approval",
|
|
224
|
-
"Documentation alignment with implementation"
|
|
225
|
-
],
|
|
226
|
-
"prior_context_check": {
|
|
227
|
-
"items_received": 0,
|
|
228
|
-
"resolved": 0,
|
|
229
|
-
"partially_resolved": 0,
|
|
230
|
-
"unresolved": 0,
|
|
231
|
-
"items": []
|
|
232
|
-
}
|
|
233
|
-
}
|
|
191
|
+
{"metadata":{"review_mode":"comprehensive","doc_type":"DesignDoc","target_path":"/path/to/document.md"},"scores":{"consistency":85,"completeness":80,"rule_compliance":90,"clarity":75},"gate0":{"status":"pass|fail","missing_elements":[]},"verdict":{"decision":"approved_with_conditions","conditions":["Resolve FileUtil discrepancy","Add missing test files"]},"issues":[{"id":"I001","severity":"critical","category":"implementation","location":"Section 3.2","description":"FileUtil method mismatch","suggestion":"Update document to reflect actual FileUtil usage"}],"recommendations":["Priority fixes before approval","Documentation alignment with implementation"],"prior_context_check":{"items_received":0,"resolved":0,"partially_resolved":0,"unresolved":0,"items":[]}}
|
|
234
192
|
```
|
|
235
193
|
|
|
236
194
|
### Perspective-specific Mode
|
|
237
195
|
|
|
238
196
|
```json
|
|
239
|
-
{
|
|
240
|
-
"metadata": {
|
|
241
|
-
"review_mode": "perspective",
|
|
242
|
-
"focus": "implementation",
|
|
243
|
-
"doc_type": "DesignDoc",
|
|
244
|
-
"target_path": "/path/to/document.md"
|
|
245
|
-
},
|
|
246
|
-
"analysis": {
|
|
247
|
-
"summary": "Analysis results description",
|
|
248
|
-
"scores": {}
|
|
249
|
-
},
|
|
250
|
-
"issues": [],
|
|
251
|
-
"checklist": [
|
|
252
|
-
{"item": "Check item description", "status": "pass|fail|na"}
|
|
253
|
-
],
|
|
254
|
-
"recommendations": []
|
|
255
|
-
}
|
|
197
|
+
{"metadata":{"review_mode":"perspective","focus":"implementation","doc_type":"DesignDoc","target_path":"/path/to/document.md"},"analysis":{"summary":"Analysis results description","scores":{}},"issues":[],"checklist":[{"item":"Check item description","status":"pass|fail|na"}],"recommendations":[]}
|
|
256
198
|
```
|
|
257
199
|
|
|
258
200
|
### Prior Context Check
|
|
@@ -260,22 +202,7 @@ Complete all items before proceeding to output.
|
|
|
260
202
|
Include in output when `prior_context_count > 0`:
|
|
261
203
|
|
|
262
204
|
```json
|
|
263
|
-
{
|
|
264
|
-
"prior_context_check": {
|
|
265
|
-
"items_received": 3,
|
|
266
|
-
"resolved": 2,
|
|
267
|
-
"partially_resolved": 1,
|
|
268
|
-
"unresolved": 0,
|
|
269
|
-
"items": [
|
|
270
|
-
{
|
|
271
|
-
"id": "D001",
|
|
272
|
-
"status": "resolved",
|
|
273
|
-
"location": "Section 3.2",
|
|
274
|
-
"evidence": "Code now matches documentation"
|
|
275
|
-
}
|
|
276
|
-
]
|
|
277
|
-
}
|
|
278
|
-
}
|
|
205
|
+
{"prior_context_check":{"items_received":3,"resolved":2,"partially_resolved":1,"unresolved":0,"items":[{"id":"D001","status":"resolved","location":"Section 3.2","evidence":"Code now matches documentation"}]}}
|
|
279
206
|
```
|
|
280
207
|
|
|
281
208
|
## Review Checklist (for Comprehensive Mode)
|
|
@@ -100,32 +100,7 @@ Return the JSON result as the final response. See Output Format for the schema.
|
|
|
100
100
|
## Output Format
|
|
101
101
|
|
|
102
102
|
```json
|
|
103
|
-
{
|
|
104
|
-
"status": "approved|needs_revision|blocked",
|
|
105
|
-
"testFile": "[path]",
|
|
106
|
-
"verdict": {
|
|
107
|
-
"decision": "approved|needs_revision|blocked",
|
|
108
|
-
"summary": "[1-2 sentence summary]"
|
|
109
|
-
},
|
|
110
|
-
"testsReviewed": 5,
|
|
111
|
-
"passedTests": 3,
|
|
112
|
-
"failedTests": 2,
|
|
113
|
-
"qualityIssues": [
|
|
114
|
-
{
|
|
115
|
-
"testName": "[test name]",
|
|
116
|
-
"issueType": "skeleton_mismatch|aaa_violation|independence_violation|mock_boundary|proof_insufficient|readability",
|
|
117
|
-
"severity": "high|medium|low",
|
|
118
|
-
"description": "[specific issue]",
|
|
119
|
-
"skeletonExpected": "[what skeleton specified]",
|
|
120
|
-
"actualImplementation": "[what was found]",
|
|
121
|
-
"suggestion": "[specific fix]"
|
|
122
|
-
}
|
|
123
|
-
],
|
|
124
|
-
"requiredFixes": [
|
|
125
|
-
"[specific fix 1]",
|
|
126
|
-
"[specific fix 2]"
|
|
127
|
-
]
|
|
128
|
-
}
|
|
103
|
+
{"status":"approved|needs_revision|blocked","testFile":"[path]","verdict":{"decision":"approved|needs_revision|blocked","summary":"[1-2 sentence summary]"},"testsReviewed":5,"passedTests":3,"failedTests":2,"qualityIssues":[{"testName":"[test name]","issueType":"skeleton_mismatch|aaa_violation|independence_violation|mock_boundary|proof_insufficient|readability","severity":"high|medium|low","description":"[specific issue]","skeletonExpected":"[what skeleton specified]","actualImplementation":"[what was found]","suggestion":"[specific fix]"}],"requiredFixes":["[specific fix 1]","[specific fix 2]"]}
|
|
129
104
|
```
|
|
130
105
|
|
|
131
106
|
## Status Determination
|
|
@@ -119,79 +119,7 @@ Return the JSON result as the final response. See Output Format for the schema.
|
|
|
119
119
|
**JSON format is mandatory.**
|
|
120
120
|
|
|
121
121
|
```json
|
|
122
|
-
{
|
|
123
|
-
"problemSummary": {
|
|
124
|
-
"phenomenon": "Objective description of observed phenomenon",
|
|
125
|
-
"context": "Occurrence conditions, environment, timing",
|
|
126
|
-
"scope": "Impact range"
|
|
127
|
-
},
|
|
128
|
-
"investigationSources": [
|
|
129
|
-
{
|
|
130
|
-
"type": "code|history|dependency|config|document|external",
|
|
131
|
-
"location": "Location investigated",
|
|
132
|
-
"findings": "Facts discovered (without interpretation)"
|
|
133
|
-
}
|
|
134
|
-
],
|
|
135
|
-
"externalResearch": [
|
|
136
|
-
{
|
|
137
|
-
"query": "Search query used",
|
|
138
|
-
"source": "Information source",
|
|
139
|
-
"findings": "Related information discovered",
|
|
140
|
-
"relevance": "Relevance to this problem"
|
|
141
|
-
}
|
|
142
|
-
],
|
|
143
|
-
"pathMap": {
|
|
144
|
-
"entryPoint": "First relevant execution entry",
|
|
145
|
-
"nodes": [
|
|
146
|
-
{
|
|
147
|
-
"id": "N1",
|
|
148
|
-
"stage": "route_entry|service_entry|validation|persistence_read|persistence_write|external_call|render|other",
|
|
149
|
-
"component": "Component or file path",
|
|
150
|
-
"description": "Role on the execution path",
|
|
151
|
-
"status": "observed|inferred|unverified"
|
|
152
|
-
}
|
|
153
|
-
]
|
|
154
|
-
},
|
|
155
|
-
"failurePoints": [
|
|
156
|
-
{
|
|
157
|
-
"id": "FP1",
|
|
158
|
-
"nodeId": "N1",
|
|
159
|
-
"description": "Specific failure point description",
|
|
160
|
-
"causeCategory": "typo|logic_error|missing_constraint|design_gap|external_factor",
|
|
161
|
-
"causalChain": ["Phenomenon", "→ Direct cause", "→ Root cause"],
|
|
162
|
-
"supportingEvidence": [
|
|
163
|
-
{"evidence": "Evidence", "source": "Source", "strength": "direct|indirect|circumstantial"}
|
|
164
|
-
],
|
|
165
|
-
"contradictingEvidence": [
|
|
166
|
-
{"evidence": "Counter-evidence", "source": "Source", "impact": "Impact on this failure point"}
|
|
167
|
-
],
|
|
168
|
-
"unexploredAspects": ["Unverified aspects"]
|
|
169
|
-
}
|
|
170
|
-
],
|
|
171
|
-
"comparisonAnalysis": {
|
|
172
|
-
"normalImplementation": "Path to working implementation (null if not found)",
|
|
173
|
-
"failingImplementation": "Path to problematic implementation",
|
|
174
|
-
"keyDifferences": ["Differences"]
|
|
175
|
-
},
|
|
176
|
-
"impactAnalysis": {
|
|
177
|
-
"causeCategory": "typo|logic_error|missing_constraint|design_gap|external_factor",
|
|
178
|
-
"impactScope": ["Affected file paths"],
|
|
179
|
-
"recurrenceRisk": "low|medium|high",
|
|
180
|
-
"riskRationale": "Rationale for risk determination"
|
|
181
|
-
},
|
|
182
|
-
"unexploredAreas": [
|
|
183
|
-
{"area": "Unexplored area", "reason": "Reason could not investigate", "potentialRelevance": "Relevance"}
|
|
184
|
-
],
|
|
185
|
-
"failurePointRelationships": [
|
|
186
|
-
{
|
|
187
|
-
"from": "FP1",
|
|
188
|
-
"to": "FP2",
|
|
189
|
-
"relationship": "independent|upstream_of|downstream_of|amplifies|same_boundary"
|
|
190
|
-
}
|
|
191
|
-
],
|
|
192
|
-
"factualObservations": ["Objective facts observed regardless of failure-point classification"],
|
|
193
|
-
"investigationLimitations": ["Limitations and constraints of this investigation"]
|
|
194
|
-
}
|
|
122
|
+
{"problemSummary":{"phenomenon":"Objective description of observed phenomenon","context":"Occurrence conditions, environment, timing","scope":"Impact range"},"investigationSources":[{"type":"code|history|dependency|config|document|external","location":"Location investigated","findings":"Facts discovered (without interpretation)"}],"externalResearch":[{"query":"Search query used","source":"Information source","findings":"Related information discovered","relevance":"Relevance to this problem"}],"pathMap":{"entryPoint":"First relevant execution entry","nodes":[{"id":"N1","stage":"route_entry|service_entry|validation|persistence_read|persistence_write|external_call|render|other","component":"Component or file path","description":"Role on the execution path","status":"observed|inferred|unverified"}]},"failurePoints":[{"id":"FP1","nodeId":"N1","description":"Specific failure point description","causeCategory":"typo|logic_error|missing_constraint|design_gap|external_factor","causalChain":["Phenomenon","→ Direct cause","→ Root cause"],"supportingEvidence":[{"evidence":"Evidence","source":"Source","strength":"direct|indirect|circumstantial"}],"contradictingEvidence":[{"evidence":"Counter-evidence","source":"Source","impact":"Impact on this failure point"}],"unexploredAspects":["Unverified aspects"]}],"comparisonAnalysis":{"normalImplementation":"Path to working implementation (null if not found)","failingImplementation":"Path to problematic implementation","keyDifferences":["Differences"]},"impactAnalysis":{"causeCategory":"typo|logic_error|missing_constraint|design_gap|external_factor","impactScope":["Affected file paths"],"recurrenceRisk":"low|medium|high","riskRationale":"Rationale for risk determination"},"unexploredAreas":[{"area":"Unexplored area","reason":"Reason could not investigate","potentialRelevance":"Relevance"}],"failurePointRelationships":[{"from":"FP1","to":"FP2","relationship":"independent|upstream_of|downstream_of|amplifies|same_boundary"}],"factualObservations":["Objective facts observed regardless of failure-point classification"],"investigationLimitations":["Limitations and constraints of this investigation"]}
|
|
195
123
|
```
|
|
196
124
|
|
|
197
125
|
## Completion Criteria
|
|
@@ -185,123 +185,22 @@ Before setting status to blocked, confirm specifications in this order:
|
|
|
185
185
|
|
|
186
186
|
**When incomplete implementation is detected**:
|
|
187
187
|
```json
|
|
188
|
-
{
|
|
189
|
-
"status": "stub_detected",
|
|
190
|
-
"summary": "Incomplete frontend implementation detected in changed code before quality checks.",
|
|
191
|
-
"stubFindings": [
|
|
192
|
-
{
|
|
193
|
-
"file": "src/components/CheckoutButton.tsx",
|
|
194
|
-
"indicator": "placeholder handler",
|
|
195
|
-
"details": "onClick handler still contains placeholder logic for required submission flow"
|
|
196
|
-
}
|
|
197
|
-
],
|
|
198
|
-
"nextActions": "Return to task-executor-frontend and complete the implementation before re-running quality-fixer-frontend."
|
|
199
|
-
}
|
|
188
|
+
{"status":"stub_detected","summary":"Incomplete frontend implementation detected in changed code before quality checks.","stubFindings":[{"file":"src/components/CheckoutButton.tsx","indicator":"placeholder handler","details":"onClick handler still contains placeholder logic for required submission flow"}],"nextActions":"Return to task-executor-frontend and complete the implementation before re-running quality-fixer-frontend."}
|
|
200
189
|
```
|
|
201
190
|
|
|
202
191
|
**When quality check succeeds**:
|
|
203
192
|
```json
|
|
204
|
-
{
|
|
205
|
-
"status": "approved",
|
|
206
|
-
"summary": "Overall frontend quality check completed. All checks passed.",
|
|
207
|
-
"checksPerformed": {
|
|
208
|
-
"lint_format": {
|
|
209
|
-
"status": "passed",
|
|
210
|
-
"commands": ["<detected-lint-command>"],
|
|
211
|
-
"autoFixed": true
|
|
212
|
-
},
|
|
213
|
-
"typescript": {
|
|
214
|
-
"status": "passed",
|
|
215
|
-
"commands": ["<detected-build-command>"]
|
|
216
|
-
},
|
|
217
|
-
"tests": {
|
|
218
|
-
"status": "passed",
|
|
219
|
-
"commands": ["<detected-test-command>"],
|
|
220
|
-
"testsRun": 42,
|
|
221
|
-
"testsPassed": 42,
|
|
222
|
-
"coverage": "85%"
|
|
223
|
-
}
|
|
224
|
-
},
|
|
225
|
-
"fixesApplied": [
|
|
226
|
-
{
|
|
227
|
-
"type": "auto",
|
|
228
|
-
"category": "format",
|
|
229
|
-
"description": "Auto-fixed indentation and semicolons",
|
|
230
|
-
"filesCount": 5
|
|
231
|
-
},
|
|
232
|
-
{
|
|
233
|
-
"type": "manual",
|
|
234
|
-
"category": "type",
|
|
235
|
-
"description": "Replaced any type with unknown + type guards",
|
|
236
|
-
"filesCount": 3
|
|
237
|
-
}
|
|
238
|
-
],
|
|
239
|
-
"taskFileMechanisms": {
|
|
240
|
-
"provided": true,
|
|
241
|
-
"executed": ["mechanism names that were found and executed"],
|
|
242
|
-
"skipped": [
|
|
243
|
-
{
|
|
244
|
-
"mechanism": "mechanism name",
|
|
245
|
-
"reason": "tool not found / config not found / not executable"
|
|
246
|
-
}
|
|
247
|
-
]
|
|
248
|
-
},
|
|
249
|
-
"metrics": {
|
|
250
|
-
"totalErrors": 0,
|
|
251
|
-
"totalWarnings": 0,
|
|
252
|
-
"executionTime": "3m 30s"
|
|
253
|
-
},
|
|
254
|
-
"nextActions": "Ready to commit"
|
|
255
|
-
}
|
|
193
|
+
{"status":"approved","summary":"Overall frontend quality check completed. All checks passed.","checksPerformed":{"lint_format":{"status":"passed","commands":["<detected-lint-command>"],"autoFixed":true},"typescript":{"status":"passed","commands":["<detected-build-command>"]},"tests":{"status":"passed","commands":["<detected-test-command>"],"testsRun":42,"testsPassed":42,"coverage":"85%"}},"fixesApplied":[{"type":"auto","category":"format","description":"Auto-fixed indentation and semicolons","filesCount":5},{"type":"manual","category":"type","description":"Replaced any type with unknown + type guards","filesCount":3}],"taskFileMechanisms":{"provided":true,"executed":["mechanism names that were found and executed"],"skipped":[{"mechanism":"mechanism name","reason":"tool not found / config not found / not executable"}]},"metrics":{"totalErrors":0,"totalWarnings":0,"executionTime":"3m 30s"},"nextActions":"Ready to commit"}
|
|
256
194
|
```
|
|
257
195
|
|
|
258
196
|
**blocked response format (specification conflict)**:
|
|
259
197
|
```json
|
|
260
|
-
{
|
|
261
|
-
"status": "blocked",
|
|
262
|
-
"reason": "Cannot determine due to unclear specification",
|
|
263
|
-
"blockingIssues": [{
|
|
264
|
-
"type": "ux_specification_conflict",
|
|
265
|
-
"details": "Test expectation and implementation contradict on user interaction behavior",
|
|
266
|
-
"test_expects": "Button disabled on form error",
|
|
267
|
-
"implementation_behavior": "Button enabled, shows error on click",
|
|
268
|
-
"why_cannot_judge": "Correct UX specification unknown"
|
|
269
|
-
}],
|
|
270
|
-
"attemptedFixes": [
|
|
271
|
-
"Fix attempt 1: Tried aligning test to implementation",
|
|
272
|
-
"Fix attempt 2: Tried aligning implementation to test",
|
|
273
|
-
"Fix attempt 3: Tried inferring specification from Design Doc"
|
|
274
|
-
],
|
|
275
|
-
"taskFileMechanisms": {
|
|
276
|
-
"provided": true,
|
|
277
|
-
"executed": ["mechanisms executed before blocking"],
|
|
278
|
-
"skipped": [{ "mechanism": "mechanism name", "reason": "tool not found / config not found / not executable" }]
|
|
279
|
-
},
|
|
280
|
-
"needsUserDecision": "Please confirm the correct button disabled behavior"
|
|
281
|
-
}
|
|
198
|
+
{"status":"blocked","reason":"Cannot determine due to unclear specification","blockingIssues":[{"type":"ux_specification_conflict","details":"Test expectation and implementation contradict on user interaction behavior","test_expects":"Button disabled on form error","implementation_behavior":"Button enabled, shows error on click","why_cannot_judge":"Correct UX specification unknown"}],"attemptedFixes":["Fix attempt 1: Tried aligning test to implementation","Fix attempt 2: Tried aligning implementation to test","Fix attempt 3: Tried inferring specification from Design Doc"],"taskFileMechanisms":{"provided":true,"executed":["mechanisms executed before blocking"],"skipped":[{"mechanism":"mechanism name","reason":"tool not found / config not found / not executable"}]},"needsUserDecision":"Please confirm the correct button disabled behavior"}
|
|
282
199
|
```
|
|
283
200
|
|
|
284
201
|
**blocked response format (missing prerequisites)**:
|
|
285
202
|
```json
|
|
286
|
-
{
|
|
287
|
-
"status": "blocked",
|
|
288
|
-
"reason": "Execution prerequisites not met",
|
|
289
|
-
"missingPrerequisites": [
|
|
290
|
-
{
|
|
291
|
-
"type": "browser_runtime",
|
|
292
|
-
"description": "Playwright browsers are not installed for E2E execution",
|
|
293
|
-
"affectedChecks": ["test:e2e"],
|
|
294
|
-
"resolutionSteps": ["Install the required browser runtime", "Re-run the E2E check command"]
|
|
295
|
-
}
|
|
296
|
-
],
|
|
297
|
-
"taskFileMechanisms": {
|
|
298
|
-
"provided": true,
|
|
299
|
-
"executed": ["mechanisms executed before blocking"],
|
|
300
|
-
"skipped": [{ "mechanism": "mechanism name", "reason": "tool not found / config not found / not executable" }]
|
|
301
|
-
},
|
|
302
|
-
"checksSkipped": 1,
|
|
303
|
-
"checksPassedWithoutPrerequisites": 2
|
|
304
|
-
}
|
|
203
|
+
{"status":"blocked","reason":"Execution prerequisites not met","missingPrerequisites":[{"type":"browser_runtime","description":"Playwright browsers are not installed for E2E execution","affectedChecks":["test:e2e"],"resolutionSteps":["Install the required browser runtime","Re-run the E2E check command"]}],"taskFileMechanisms":{"provided":true,"executed":["mechanisms executed before blocking"],"skipped":[{"mechanism":"mechanism name","reason":"tool not found / config not found / not executable"}]},"checksSkipped":1,"checksPassedWithoutPrerequisites":2}
|
|
305
204
|
```
|
|
306
205
|
|
|
307
206
|
Allowed `type` values: `seed_data`, `library`, `environment_variable`, `running_service`, `browser_runtime`, `external_dependency`, `other`
|