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
|
@@ -126,163 +126,7 @@ Produce `candidateWriteSet[]` with likely modified files:
|
|
|
126
126
|
Return a single JSON object as the final response:
|
|
127
127
|
|
|
128
128
|
```json
|
|
129
|
-
{
|
|
130
|
-
"analysisScope": {
|
|
131
|
-
"filesAnalyzed": ["path/to/component.tsx"],
|
|
132
|
-
"stylesAnalyzed": ["path/to/styles.module.css"],
|
|
133
|
-
"uiConventions": {
|
|
134
|
-
"componentExtension": ".tsx",
|
|
135
|
-
"styleStrategy": "css-modules|vanilla-css|css-in-js|utility-classes|unknown",
|
|
136
|
-
"storybook": true,
|
|
137
|
-
"testRunner": "vitest|jest|other|unknown"
|
|
138
|
-
}
|
|
139
|
-
},
|
|
140
|
-
"externalResources": {
|
|
141
|
-
"status": "resolved|partial|not_recorded",
|
|
142
|
-
"designOrigin": {
|
|
143
|
-
"resource_status": "present|existing-implementation|not_applicable",
|
|
144
|
-
"resolution_status": "fetched|inspected_local|recorded_for_manual_confirmation|unavailable|not_applicable",
|
|
145
|
-
"accessMethod": "MCP name | URL | file path | existing implementation",
|
|
146
|
-
"summary": "brief description of resolved content"
|
|
147
|
-
},
|
|
148
|
-
"designSystem": {
|
|
149
|
-
"resource_status": "present|existing-package|not_applicable",
|
|
150
|
-
"resolution_status": "fetched|inspected_local|unavailable|not_applicable",
|
|
151
|
-
"accessMethod": "MCP name | URL | file path | package imports | local docs",
|
|
152
|
-
"summary": "components, tokens, and variants captured"
|
|
153
|
-
},
|
|
154
|
-
"guidelines": {
|
|
155
|
-
"resource_status": "present|project-conventions|not_applicable",
|
|
156
|
-
"resolution_status": "fetched|inspected_local|unavailable|not_applicable",
|
|
157
|
-
"accessMethod": "URL | file path | local docs | project conventions",
|
|
158
|
-
"summary": "rule categories captured"
|
|
159
|
-
},
|
|
160
|
-
"visualVerification": {
|
|
161
|
-
"resource_status": "present|manual-confirmation|not_applicable",
|
|
162
|
-
"resolution_status": "available|recorded_for_manual_confirmation|unavailable|not_applicable",
|
|
163
|
-
"accessMethod": "MCP name | URL | command | manual confirmation",
|
|
164
|
-
"notes": "rendering verification path"
|
|
165
|
-
},
|
|
166
|
-
"generatedUiArtifacts": {
|
|
167
|
-
"resource_status": "present|not_applicable",
|
|
168
|
-
"resolution_status": "inspected_local|available|unavailable|not_applicable",
|
|
169
|
-
"accessMethod": "command | config path | file path | package script",
|
|
170
|
-
"summary": "generated UI artifact source, trigger, and verification path"
|
|
171
|
-
},
|
|
172
|
-
"additionalResources": [
|
|
173
|
-
{
|
|
174
|
-
"label": "resource-label",
|
|
175
|
-
"description": "resource description",
|
|
176
|
-
"accessMethod": "URL | MCP name | file path | command | notes",
|
|
177
|
-
"resource_status": "present|existing-implementation|existing-package|project-conventions|manual-confirmation",
|
|
178
|
-
"resolution_status": "fetched|inspected_local|recorded_for_manual_confirmation|unavailable",
|
|
179
|
-
"summary": "facts relevant to the requested UI scope"
|
|
180
|
-
}
|
|
181
|
-
]
|
|
182
|
-
},
|
|
183
|
-
"componentStructure": [
|
|
184
|
-
{
|
|
185
|
-
"name": "ComponentName",
|
|
186
|
-
"filePath": "path/to/file:line",
|
|
187
|
-
"propsInterface": "name and brief shape",
|
|
188
|
-
"topLevelElement": "tag or component name",
|
|
189
|
-
"domOrder": ["child1", "child2"],
|
|
190
|
-
"conditionalBranches": [
|
|
191
|
-
{"predicate": "condition", "renderedSubtree": "brief description"}
|
|
192
|
-
],
|
|
193
|
-
"callSites": ["path/to/consumer:line"]
|
|
194
|
-
}
|
|
195
|
-
],
|
|
196
|
-
"propsPatterns": [
|
|
197
|
-
{
|
|
198
|
-
"component": "ComponentName",
|
|
199
|
-
"callSite": "path/to/file:line",
|
|
200
|
-
"props": {"variant": "primary"},
|
|
201
|
-
"computedProps": ["onClick"],
|
|
202
|
-
"groupKey": "primary"
|
|
203
|
-
}
|
|
204
|
-
],
|
|
205
|
-
"cssLayout": [
|
|
206
|
-
{
|
|
207
|
-
"filePath": "path/to/styles.module.css",
|
|
208
|
-
"classNamingConvention": "camelCase|kebab-case|BEM|unknown",
|
|
209
|
-
"baseClass": "root",
|
|
210
|
-
"layouts": [
|
|
211
|
-
{
|
|
212
|
-
"selector": ".root",
|
|
213
|
-
"display": "flex|grid|block|unknown",
|
|
214
|
-
"direction": "row|column|grid-template|unknown",
|
|
215
|
-
"gap": "8px|none|unknown",
|
|
216
|
-
"wrap": "wrap|nowrap|absent|unknown",
|
|
217
|
-
"logicalProperties": true,
|
|
218
|
-
"stateSelectors": ["[data-state=active]"]
|
|
219
|
-
}
|
|
220
|
-
],
|
|
221
|
-
"responsiveBreakpoints": ["768px"]
|
|
222
|
-
}
|
|
223
|
-
],
|
|
224
|
-
"stateDisplay": [
|
|
225
|
-
{
|
|
226
|
-
"component": "ComponentName",
|
|
227
|
-
"states": [
|
|
228
|
-
{"name": "loading|empty|partial|error|ready|disabled", "trigger": "what causes this state", "renders": "brief description"}
|
|
229
|
-
],
|
|
230
|
-
"unsupportedStates": ["state absent from current component"]
|
|
231
|
-
}
|
|
232
|
-
],
|
|
233
|
-
"displayConditions": [
|
|
234
|
-
{
|
|
235
|
-
"component": "ComponentName",
|
|
236
|
-
"condition": "feature_flag|role|route|region|tenant|page_context",
|
|
237
|
-
"predicateLocation": "path/to/file:line",
|
|
238
|
-
"predicate": "expression",
|
|
239
|
-
"gatedSubtree": "brief description"
|
|
240
|
-
}
|
|
241
|
-
],
|
|
242
|
-
"i18n": {
|
|
243
|
-
"format": "csv|json|code-catalog|other|none",
|
|
244
|
-
"structuralConventions": {},
|
|
245
|
-
"keyNamingConvention": "",
|
|
246
|
-
"locales": [],
|
|
247
|
-
"localeGaps": [],
|
|
248
|
-
"generatedTypings": {"command": "", "outputPath": ""}
|
|
249
|
-
},
|
|
250
|
-
"accessibility": [
|
|
251
|
-
{
|
|
252
|
-
"component": "ComponentName",
|
|
253
|
-
"ariaAttributes": ["role=button", "aria-label from prop"],
|
|
254
|
-
"keyboardHandling": "Enter and Space trigger action",
|
|
255
|
-
"focusStyling": "focus-visible outline",
|
|
256
|
-
"testCoverage": "axe checks present|absent|unknown"
|
|
257
|
-
}
|
|
258
|
-
],
|
|
259
|
-
"generatedArtifacts": [
|
|
260
|
-
{
|
|
261
|
-
"kind": "css-module-typings|message-catalog-typings|route-typings|other",
|
|
262
|
-
"command": "generator command",
|
|
263
|
-
"trigger": "on source change|manual|unknown",
|
|
264
|
-
"consumers": ["typecheck", "test", "build", "runtime"],
|
|
265
|
-
"resourceRef": "externalResources.generatedUiArtifacts"
|
|
266
|
-
}
|
|
267
|
-
],
|
|
268
|
-
"focusAreas": [
|
|
269
|
-
{
|
|
270
|
-
"fact_id": "path:identifier",
|
|
271
|
-
"area": "Brief UI area name",
|
|
272
|
-
"evidence": "componentStructure[name=...]",
|
|
273
|
-
"factsToAddress": "Concrete UI facts to respect",
|
|
274
|
-
"risk": "What inconsistency results if omitted"
|
|
275
|
-
}
|
|
276
|
-
],
|
|
277
|
-
"candidateWriteSet": [
|
|
278
|
-
{
|
|
279
|
-
"path": "src/components/Card.tsx",
|
|
280
|
-
"reasonRef": "focusAreas[fact_id=...]",
|
|
281
|
-
"confidence": "high|medium|low"
|
|
282
|
-
}
|
|
283
|
-
],
|
|
284
|
-
"limitations": []
|
|
285
|
-
}
|
|
129
|
+
{"analysisScope":{"filesAnalyzed":["path/to/component.tsx"],"stylesAnalyzed":["path/to/styles.module.css"],"uiConventions":{"componentExtension":".tsx","styleStrategy":"css-modules|vanilla-css|css-in-js|utility-classes|unknown","storybook":true,"testRunner":"vitest|jest|other|unknown"}},"externalResources":{"status":"resolved|partial|not_recorded","designOrigin":{"resource_status":"present|existing-implementation|not_applicable","resolution_status":"fetched|inspected_local|recorded_for_manual_confirmation|unavailable|not_applicable","accessMethod":"MCP name | URL | file path | existing implementation","summary":"brief description of resolved content"},"designSystem":{"resource_status":"present|existing-package|not_applicable","resolution_status":"fetched|inspected_local|unavailable|not_applicable","accessMethod":"MCP name | URL | file path | package imports | local docs","summary":"components, tokens, and variants captured"},"guidelines":{"resource_status":"present|project-conventions|not_applicable","resolution_status":"fetched|inspected_local|unavailable|not_applicable","accessMethod":"URL | file path | local docs | project conventions","summary":"rule categories captured"},"visualVerification":{"resource_status":"present|manual-confirmation|not_applicable","resolution_status":"available|recorded_for_manual_confirmation|unavailable|not_applicable","accessMethod":"MCP name | URL | command | manual confirmation","notes":"rendering verification path"},"generatedUiArtifacts":{"resource_status":"present|not_applicable","resolution_status":"inspected_local|available|unavailable|not_applicable","accessMethod":"command | config path | file path | package script","summary":"generated UI artifact source, trigger, and verification path"},"additionalResources":[{"label":"resource-label","description":"resource description","accessMethod":"URL | MCP name | file path | command | notes","resource_status":"present|existing-implementation|existing-package|project-conventions|manual-confirmation","resolution_status":"fetched|inspected_local|recorded_for_manual_confirmation|unavailable","summary":"facts relevant to the requested UI scope"}]},"componentStructure":[{"name":"ComponentName","filePath":"path/to/file:line","propsInterface":"name and brief shape","topLevelElement":"tag or component name","domOrder":["child1","child2"],"conditionalBranches":[{"predicate":"condition","renderedSubtree":"brief description"}],"callSites":["path/to/consumer:line"]}],"propsPatterns":[{"component":"ComponentName","callSite":"path/to/file:line","props":{"variant":"primary"},"computedProps":["onClick"],"groupKey":"primary"}],"cssLayout":[{"filePath":"path/to/styles.module.css","classNamingConvention":"camelCase|kebab-case|BEM|unknown","baseClass":"root","layouts":[{"selector":".root","display":"flex|grid|block|unknown","direction":"row|column|grid-template|unknown","gap":"8px|none|unknown","wrap":"wrap|nowrap|absent|unknown","logicalProperties":true,"stateSelectors":["[data-state=active]"]}],"responsiveBreakpoints":["768px"]}],"stateDisplay":[{"component":"ComponentName","states":[{"name":"loading|empty|partial|error|ready|disabled","trigger":"what causes this state","renders":"brief description"}],"unsupportedStates":["state absent from current component"]}],"displayConditions":[{"component":"ComponentName","condition":"feature_flag|role|route|region|tenant|page_context","predicateLocation":"path/to/file:line","predicate":"expression","gatedSubtree":"brief description"}],"i18n":{"format":"csv|json|code-catalog|other|none","structuralConventions":{},"keyNamingConvention":"","locales":[],"localeGaps":[],"generatedTypings":{"command":"","outputPath":""}},"accessibility":[{"component":"ComponentName","ariaAttributes":["role=button","aria-label from prop"],"keyboardHandling":"Enter and Space trigger action","focusStyling":"focus-visible outline","testCoverage":"axe checks present|absent|unknown"}],"generatedArtifacts":[{"kind":"css-module-typings|message-catalog-typings|route-typings|other","command":"generator command","trigger":"on source change|manual|unknown","consumers":["typecheck","test","build","runtime"],"resourceRef":"externalResources.generatedUiArtifacts"}],"focusAreas":[{"fact_id":"path:identifier","area":"Brief UI area name","evidence":"componentStructure[name=...]","factsToAddress":"Concrete UI facts to respect","risk":"What inconsistency results if omitted"}],"candidateWriteSet":[{"path":"src/components/Card.tsx","reasonRef":"focusAreas[fact_id=...]","confidence":"high|medium|low"}],"limitations":[]}
|
|
286
130
|
```
|
|
287
131
|
|
|
288
132
|
## Quality Checklist
|
|
@@ -80,6 +80,7 @@ Record each supplementary finding and its impact on the existing failure points
|
|
|
80
80
|
- Check whether the mapped execution path adequately covers the observed symptom from entry to failure
|
|
81
81
|
- Identify uncovered boundaries or unverified nodes that could hide additional failure points
|
|
82
82
|
- Evaluate at least 2 additional path segments or boundaries beyond the investigator's original failure-point list
|
|
83
|
+
- When the investigated incident is a bug or regression, or when a failure point affects a state transition, persisted state, or external boundary, trace adjacent cases sharing the same path, contract, persisted state, or external boundary and evaluate whether they carry the same class of defect
|
|
83
84
|
- Evaluate each failure point independently:
|
|
84
85
|
- Is the supporting evidence sufficient?
|
|
85
86
|
- Is there direct counter-evidence?
|
|
@@ -125,71 +126,7 @@ Return the JSON result as the final response. See Output Format for the schema.
|
|
|
125
126
|
**JSON format is mandatory.**
|
|
126
127
|
|
|
127
128
|
```json
|
|
128
|
-
{
|
|
129
|
-
"investigationReview": {
|
|
130
|
-
"originalFailurePointCount": 3,
|
|
131
|
-
"coverageAssessment": "sufficient|partial|insufficient",
|
|
132
|
-
"identifiedGaps": ["Perspectives overlooked in investigation"]
|
|
133
|
-
},
|
|
134
|
-
"triangulationSupplements": [
|
|
135
|
-
{
|
|
136
|
-
"source": "Additional information source investigated",
|
|
137
|
-
"findings": "Content discovered",
|
|
138
|
-
"impactOnFailurePoints": "Impact on existing failure points"
|
|
139
|
-
}
|
|
140
|
-
],
|
|
141
|
-
"scopeValidation": {
|
|
142
|
-
"verified": true,
|
|
143
|
-
"concerns": ["Concerns"]
|
|
144
|
-
},
|
|
145
|
-
"externalResearch": [
|
|
146
|
-
{
|
|
147
|
-
"query": "Search query used",
|
|
148
|
-
"source": "Information source",
|
|
149
|
-
"findings": "Related information discovered",
|
|
150
|
-
"impactOnFailurePoints": "Impact on failure points"
|
|
151
|
-
}
|
|
152
|
-
],
|
|
153
|
-
"additionalFailurePoints": [
|
|
154
|
-
{
|
|
155
|
-
"id": "AFP1",
|
|
156
|
-
"description": "Additional failure point description",
|
|
157
|
-
"rationale": "Why this failure point was considered",
|
|
158
|
-
"evidence": {"supporting": [], "contradicting": []},
|
|
159
|
-
"plausibility": "high|medium|low"
|
|
160
|
-
}
|
|
161
|
-
],
|
|
162
|
-
"pathCoverageFindings": [
|
|
163
|
-
{
|
|
164
|
-
"nodeId": "N1",
|
|
165
|
-
"status": "covered|partially_covered|uncovered",
|
|
166
|
-
"findings": "Coverage finding",
|
|
167
|
-
"followUpNeeded": ["Needed follow-up"]
|
|
168
|
-
}
|
|
169
|
-
],
|
|
170
|
-
"failurePointsEvaluation": [
|
|
171
|
-
{
|
|
172
|
-
"failurePointId": "FP1 or AFP1",
|
|
173
|
-
"description": "Failure point description",
|
|
174
|
-
"verificationLevel": "speculation|indirect|direct|verified",
|
|
175
|
-
"refutationStatus": "unrefuted|partially_refuted|refuted",
|
|
176
|
-
"remainingUncertainty": ["Remaining uncertainty"]
|
|
177
|
-
}
|
|
178
|
-
],
|
|
179
|
-
"conclusion": {
|
|
180
|
-
"confirmedFailurePoints": [
|
|
181
|
-
{"failurePointId": "FP1", "status": "confirmed|probable|possible", "originalCheckStatus": "retained|added_by_verifier|null"}
|
|
182
|
-
],
|
|
183
|
-
"failurePointRelationships": [
|
|
184
|
-
{"from": "FP1", "to": "FP2", "relationship": "independent|upstream_of|downstream_of|amplifies|same_boundary"}
|
|
185
|
-
],
|
|
186
|
-
"finalStatus": "ready_for_solution|needs_more_investigation",
|
|
187
|
-
"coverageAssessment": "sufficient|partial|insufficient",
|
|
188
|
-
"statusRationale": "Rationale for status and coverage level",
|
|
189
|
-
"recommendedVerification": ["Additional verification needed to confirm conclusion"]
|
|
190
|
-
},
|
|
191
|
-
"verificationLimitations": ["Limitations of this verification process"]
|
|
192
|
-
}
|
|
129
|
+
{"investigationReview":{"originalFailurePointCount":3,"coverageAssessment":"sufficient|partial|insufficient","identifiedGaps":["Perspectives overlooked in investigation"]},"triangulationSupplements":[{"source":"Additional information source investigated","findings":"Content discovered","impactOnFailurePoints":"Impact on existing failure points"}],"scopeValidation":{"verified":true,"concerns":["Concerns"]},"externalResearch":[{"query":"Search query used","source":"Information source","findings":"Related information discovered","impactOnFailurePoints":"Impact on failure points"}],"additionalFailurePoints":[{"id":"AFP1","description":"Additional failure point description","rationale":"Why this failure point was considered","evidence":{"supporting":[],"contradicting":[]},"plausibility":"high|medium|low"}],"pathCoverageFindings":[{"nodeId":"N1","status":"covered|partially_covered|uncovered","findings":"Coverage finding","followUpNeeded":["Needed follow-up"]}],"failurePointsEvaluation":[{"failurePointId":"FP1 or AFP1","description":"Failure point description","verificationLevel":"speculation|indirect|direct|verified","refutationStatus":"unrefuted|partially_refuted|refuted","remainingUncertainty":["Remaining uncertainty"]}],"conclusion":{"confirmedFailurePoints":[{"failurePointId":"FP1","status":"confirmed|probable|possible","originalCheckStatus":"retained|added_by_verifier|null"}],"failurePointRelationships":[{"from":"FP1","to":"FP2","relationship":"independent|upstream_of|downstream_of|amplifies|same_boundary"}],"finalStatus":"ready_for_solution|needs_more_investigation","coverageAssessment":"sufficient|partial|insufficient","statusRationale":"Rationale for status and coverage level","recommendedVerification":["Additional verification needed to confirm conclusion"]},"verificationLimitations":["Limitations of this verification process"]}
|
|
193
130
|
```
|
|
194
131
|
|
|
195
132
|
## Completion Criteria
|
|
@@ -141,20 +141,38 @@ Rules:
|
|
|
141
141
|
- Record the mapping in the `UI Spec Component -> Task Mapping` table from the plan template.
|
|
142
142
|
- Mark components with no covering task as `gap` with justification and user confirmation before approval.
|
|
143
143
|
|
|
144
|
-
### 5b. Map
|
|
144
|
+
### 5b. Map Reference Contract Values to Tasks
|
|
145
145
|
|
|
146
|
-
|
|
146
|
+
After Design-to-Plan Traceability is complete, create a `Reference Contract Values` table when any traced Design Doc item contains a binding observable value the implementation must reproduce exactly. When the Design Doc has an `Observable Contract Values` table, use that table as the primary source and copy each applicable row into the work plan.
|
|
147
|
+
|
|
148
|
+
Qualifying observable values:
|
|
149
|
+
- `structure-order`: column sets, field sets, label sets, or display order
|
|
150
|
+
- `derived-display`: display value derived from another field, lookup, state, or configuration
|
|
151
|
+
- `state-lifecycle-negative`: condition where persisted, restored, cached, or derived state must stay unused
|
|
152
|
+
|
|
153
|
+
For each qualifying value:
|
|
154
|
+
1. Record the Design Doc path and section.
|
|
155
|
+
2. Classify the Contract Type using exactly one value above.
|
|
156
|
+
3. Copy the Required Observable Value verbatim from the Design Doc. Preserve field names, labels, order, and conditions.
|
|
157
|
+
4. Map it to the task IDs that implement or verify the value.
|
|
158
|
+
5. Mark `covered` when concrete task IDs cover the value. Mark `gap` only when no concrete task covers it, set Covered By Task(s) to `-`, add justification in Notes, and flag it for user confirmation before plan approval.
|
|
159
|
+
|
|
160
|
+
Serialized boundaries belong in the Connection Map. ADR-derived structural decisions belong in ADR Bindings. When a value qualifies both as an observable value and as a serialized boundary, record it in the Connection Map and omit a duplicate Reference Contract Values row.
|
|
161
|
+
|
|
162
|
+
### 5c. Map Runtime Boundaries to Tasks
|
|
163
|
+
|
|
164
|
+
When implementation crosses runtime, process, deployment, or service boundaries, or when a value is serialized and parsed within one runtime, create a `Connection Map`.
|
|
147
165
|
|
|
148
166
|
A boundary qualifies only when all of the following hold:
|
|
149
|
-
-
|
|
150
|
-
-
|
|
151
|
-
- A
|
|
167
|
+
- Two sides exchange a value through a boundary. This includes separate processes, services, runtimes, or deployed artifacts, and same-runtime serialized media such as query strings, route parameters, form posts, CLI arguments, environment variables, config entries, message payloads, storage keys, or files.
|
|
168
|
+
- Producer and consumer depend on a shared representation or parse rule.
|
|
169
|
+
- A mismatch creates an observable signal, such as a status code, timeout, missing field, dropped message, invalid route state, parse failure, or persisted row difference.
|
|
152
170
|
|
|
153
|
-
Map only boundaries satisfying all three qualifications above
|
|
171
|
+
Map only boundaries satisfying all three qualifications above.
|
|
154
172
|
|
|
155
|
-
For each boundary, record the caller/producer, callee/consumer, expected signal, and covering tasks in the `Connection Map` table.
|
|
173
|
+
For each boundary, record the caller/producer, callee/consumer, serialized format, consumer parse rule, expected signal, and covering tasks in the `Connection Map` table. Serialized boundaries must have concrete Serialized Format and Consumer Parse Rule values. Use `-` only for non-serialized external signals where the Expected Signal fully captures the contract.
|
|
156
174
|
|
|
157
|
-
###
|
|
175
|
+
### 5d. Map ADR Decisions to Tasks
|
|
158
176
|
|
|
159
177
|
When ADRs are provided as input or listed in a Design Doc's "Prerequisite ADRs" section, create an `ADR Bindings` table before finalizing tasks.
|
|
160
178
|
|
|
@@ -177,7 +195,7 @@ Mapping rules:
|
|
|
177
195
|
- Acceptance criteria and required user-visible behaviors belong in `Design-to-Plan Traceability`; `ADR Bindings` covers structural implementation constraints.
|
|
178
196
|
- If an ADR decision constrains the design but no task covers it, add a justified gap and flag it for user confirmation before plan approval.
|
|
179
197
|
|
|
180
|
-
###
|
|
198
|
+
### 5e. Build Failure Mode Checklist
|
|
181
199
|
|
|
182
200
|
Populate the plan template's `Failure Mode Checklist` before finalizing tasks. Enumerate all eight domain-independent categories, mark whether each applies, and list the task IDs that cover applicable categories. Keep category names generic and put project-specific details in task descriptions or notes.
|
|
183
201
|
|
|
@@ -390,6 +408,9 @@ When creating work plans, **Phase Structure Diagrams** and **Task Dependency Dia
|
|
|
390
408
|
- [ ] Scope-boundary items mapped explicitly when the Design Doc defines protected no-change areas
|
|
391
409
|
- [ ] Covered By Task(s) uses only normalized task IDs
|
|
392
410
|
- [ ] No unjustified `gap` entries remain
|
|
411
|
+
- [ ] Reference Contract Values table completed when binding observable values appear in traced Design Doc items
|
|
412
|
+
- [ ] Each row mapped to covering task(s) or justified `gap`
|
|
413
|
+
- [ ] No unjustified `gap` entries remain
|
|
393
414
|
- [ ] ADR Bindings table completed when ADRs are provided or listed in Design Doc prerequisites
|
|
394
415
|
- [ ] ADR references resolved with exact path or single `docs/adr/ADR-XXXX-*.md` match
|
|
395
416
|
- [ ] Each binding row has one valid Axis value
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codex-workflows",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Task-oriented agentic coding framework for OpenAI Codex CLI — skills, recipes, and subagents for structured development workflows",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Shinsuke Kagawa",
|