Skip to content

Commit 1375282

Browse files
authored
Merge pull request #161 from shinpr/refactor/escalation-boundary-reduction
refactor: keep boundaries, drop work-generating constraints
2 parents 50d4d8b + 2a99cb7 commit 1375282

132 files changed

Lines changed: 869 additions & 2053 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude-plugin/marketplace.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"name": "dev-workflows",
1313
"source": "./dev-workflows",
1414
"strict": true,
15-
"version": "0.24.3",
15+
"version": "0.24.4",
1616
"description": "Skills + Subagents for backend development - Use skills for coding guidance, or run recipe workflows for full orchestrated agentic coding with specialized agents",
1717
"author": {
1818
"name": "Shinsuke Kagawa",
@@ -82,7 +82,7 @@
8282
"name": "dev-workflows-frontend",
8383
"source": "./dev-workflows-frontend",
8484
"strict": true,
85-
"version": "0.24.3",
85+
"version": "0.24.4",
8686
"description": "Skills + Subagents for React/TypeScript - Use skills for coding guidance, or run recipe workflows for full orchestrated agentic coding with specialized agents",
8787
"author": {
8888
"name": "Shinsuke Kagawa",
@@ -155,7 +155,7 @@
155155
"name": "dev-workflows-fullstack",
156156
"source": "./dev-workflows-fullstack",
157157
"strict": true,
158-
"version": "0.24.3",
158+
"version": "0.24.4",
159159
"description": "Skills + Subagents for fullstack development (backend + React/TypeScript) - Use skills for coding guidance, or run recipe workflows for full orchestrated agentic coding with specialized agents",
160160
"author": {
161161
"name": "Shinsuke Kagawa",
@@ -244,7 +244,7 @@
244244
"name": "dev-skills",
245245
"source": "./dev-skills",
246246
"strict": true,
247-
"version": "0.24.3",
247+
"version": "0.24.4",
248248
"description": "Lightweight skills for users with existing workflows - coding best practices, testing principles, and design guidelines without recipe workflows or agents",
249249
"author": {
250250
"name": "Shinsuke Kagawa",

agents/acceptance-test-generator.md

Lines changed: 15 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -198,22 +198,6 @@ A skeleton is committed before its implementation exists, so its committed form
198198

199199
### Generation Report
200200

201-
**When both E2E lanes are emitted:**
202-
```json
203-
{
204-
"status": "completed",
205-
"feature": "payment",
206-
"generatedFiles": {
207-
"integration": "tests/payment.int.test.[ext]",
208-
"fixtureE2e": "tests/payment.fixture.e2e.test.[ext]",
209-
"serviceE2e": "tests/payment.service.e2e.test.[ext]"
210-
},
211-
"budgetUsage": { "integration": "2/3", "fixtureE2e": "1/3", "serviceE2e": "1/2" },
212-
"e2eAbsenceReason": { "fixtureE2e": null, "serviceE2e": null }
213-
}
214-
```
215-
216-
**When only fixture-e2e is emitted:**
217201
```json
218202
{
219203
"status": "completed",
@@ -222,30 +206,13 @@ A skeleton is committed before its implementation exists, so its committed form
222206
"integration": "tests/payment.int.test.[ext]",
223207
"fixtureE2e": "tests/payment.fixture.e2e.test.[ext]",
224208
"serviceE2e": null
225-
},
226-
"budgetUsage": { "integration": "2/3", "fixtureE2e": "2/3", "serviceE2e": "0/2" },
227-
"e2eAbsenceReason": { "fixtureE2e": null, "serviceE2e": "Design Doc §Test Boundaries designates the gateway as mockable; the selected fixture-e2e covers every accepted journey proof obligation." }
209+
}
228210
}
229211
```
230212

231-
**When no E2E tests are emitted:**
232-
```json
233-
{
234-
"status": "completed",
235-
"feature": "config-update",
236-
"generatedFiles": {
237-
"integration": "tests/config.int.test.[ext]",
238-
"fixtureE2e": null,
239-
"serviceE2e": null
240-
},
241-
"budgetUsage": { "integration": "1/3", "fixtureE2e": "0/3", "serviceE2e": "0/2" },
242-
"e2eAbsenceReason": { "fixtureE2e": "Design Doc AC1-AC4 classify as single-step behavior under the journey rule; selected integration coverage proves their accepted boundaries.", "serviceE2e": "Design Doc §Test Boundaries assigns every external dependency to a mockable boundary; selected integration coverage proves the accepted boundaries." }
243-
}
244-
```
213+
**Contract**: a `completed` result always contains `generatedFiles.integration`, `generatedFiles.fixtureE2e`, and `generatedFiles.serviceE2e`. Value is a file path string when that lane emitted, `null` when it did not. The orchestrator confirms an empty lane against the Design Doc's accepted proof obligations; the selection evidence for every emitted skeleton stays in that skeleton's metadata.
245214

246-
**Contract**:
247-
- A `completed` result always contains `generatedFiles.integration`, `generatedFiles.fixtureE2e`, and `generatedFiles.serviceE2e`. Value is a file path string when generated, `null` when not.
248-
- `e2eAbsenceReason` is an object with `fixtureE2e` and `serviceE2e` keys. Each value is `null` when that lane emitted; otherwise name the selection rule, the source evidence checked, and the selected or governing proof that covers the accepted boundary. A valid null lane accounts for every accepted proof obligation.
215+
Describe the run's filtering and selection outcome in the surrounding message. Whenever a lane emits nothing, name the removed candidates and the filter that removed each one — the JSON carries paths only.
249216

250217
**When a decision-relevant value input is missing:**
251218
```json
@@ -258,7 +225,7 @@ A skeleton is committed before its implementation exists, so its committed form
258225
}
259226
```
260227

261-
Return this status before creating or modifying skeleton files. The caller supplies its single response as `test_value_context` and reinvokes the generator. Apply supplied facts, preserve every remaining decision-relevant value as `unknown`, use Unknown-Value Ordering, and return the normal completed result. Record the evidence checked, ordering basis, and selection effect in generated skeleton metadata or the absence report.
228+
Return this status before creating or modifying skeleton files. The caller supplies its single response as `test_value_context` and reinvokes the generator. Apply supplied facts, preserve every remaining decision-relevant value as `unknown`, use Unknown-Value Ordering, and return the normal completed result. Record the evidence checked, ordering basis, and selection effect in generated skeleton metadata.
262229

263230
## Test Meta Information Assignment
264231

@@ -290,23 +257,25 @@ These annotations drive test planning and prioritization. The `@lane` annotation
290257
- Clarify dependencies explicitly
291258
- Logical test execution order
292259

293-
## Exception Handling and Escalation
260+
## Exception Handling and Stop Conditions
294261

295262
### Auto-processable
296263
- **Directory Absent**: Auto-create appropriate directory following detected test structure
297264
- **No Integration Candidates**: Valid outcome - report "No Integration candidates remained after Phase 1 filtering, deduplication, and push-down analysis"
298265
- **No E2E Tests (no multi-step journey)**: Valid outcome - report "No multi-step user journey detected; E2E tests not applicable"
299-
- **Budget Exceeded by Critical Test**: Report to user
266+
- **Budget insufficient for a critical user journey (ROI > 90)**: Exceed the lane budget per the integration-e2e-testing skill's budget rule when the journey's failure mode cannot be proved by a selected test, and annotate the exception and why consolidation cannot cover it
267+
- **No E2E test emitted after budget enforcement, but the input Design Doc contains a user-facing multi-step journey**: Report the journey, every candidate evaluated with its ROI score, and the filter that removed each one, then continue. (This case arises only when the reserved slot in Phase 4 did not apply — e.g., no journey candidate passed Phase 1-3 filtering.)
268+
- **Every AC filtered out, leaving no generated test**: Valid outcome - return the empty result and report the filter that removed each AC
269+
- **Multiple interpretations possible but minor impact**: Adopt the interpretation and note it in the report
300270
- **Missing value that cannot change selection**: Record `not_decision_relevant` with the invariant selection basis and continue
301271
- **Decision-relevant value remains unknown after the value-input round**: Preserve `unknown`, apply Unknown-Value Ordering, record its selection effect, and continue
302272

303-
### Escalation Required
304-
1. **Critical**: AC absent, Design Doc absent → Error termination
305-
2. **High**: No E2E test emitted after budget enforcement, but the input Design Doc contains a user-facing multi-step journey → Escalate with message: "The Design Doc includes a user-facing multi-step journey but no E2E test was emitted. Journey candidates evaluated: [list with ROI scores]. Confirm whether to proceed without E2E." (Note: this escalation fires only when the reserved slot in Phase 4 did not apply — e.g., no journey candidate passed Phase 1-3 filtering. When a reserved slot candidate exists, it is emitted and this escalation does not fire.)
306-
3. **High**: All ACs filtered out but feature is business-critical → User confirmation needed
307-
4. **Medium**: Budget insufficient for critical user journey (ROI > 90) → Present options
308-
5. **Low**: Multiple interpretations possible but minor impact → Adopt interpretation + note in report
309-
6. **Decision input**: An unknown Business Value, User Frequency, or Legal Requirement can change ranking, threshold, or budget selection → Return `value_input_required` when `test_value_context` is absent; after that input round, preserve remaining unknowns and continue with Unknown-Value Ordering
273+
### Stop Conditions
274+
275+
These two cases end generation and hand control back; every other case above completes with a recorded result.
276+
277+
1. **Required input absent**: AC absent or Design Doc absent → terminate and name the missing input
278+
2. **Decision input required**: An unknown Business Value, User Frequency, or Legal Requirement can change ranking, threshold, or budget selection → Return `value_input_required` when `test_value_context` is absent; after that input round, preserve remaining unknowns and continue with Unknown-Value Ordering
310279

311280
## Technical Specifications
312281

agents/document-reviewer.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ Verify current external facts from authoritative sources only when an ADR select
8282
- Behavior replacement or transformation has a representative output-comparison method covering applicable pipeline steps.
8383
- Applicable standards and repository checks retain source evidence and adoption decisions.
8484
- Acceptance criteria and verification use the smallest representative boundary that proves the approved outcome, preserved behavior, and material failure boundaries. The early verification point is executable.
85-
- Performance, live-external, and exact-visual ACs have the sourced requirement and reproducible proof required by documentation-criteria; implementation details are not ACs.
85+
- Each AC states observable behavior, and performance, live-external, and exact-visual ACs carry the sourced requirement and reproducible proof required by the Acceptance Criteria section of `references/design-template.md` in the documentation-criteria skill.
8686
- Repository-owned migration, flags, deployment configuration, logging, monitoring, or measurement is present only when it changes implementation, a preserved contract, or an acceptance criterion. External release execution, production access, account setup, and organizational approval are not implementation gates.
8787
- Reverse-engineered/as-is documents describe observed code with evidence and are exempt from future-state convergence and design-choice requirements.
8888

agents/prd-creator.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ Storage location and naming convention follow documentation-criteria skill.
9595
Execute file output immediately (considered approved at execution).
9696

9797
### Notes for PRD Creation
98-
- Create following the PRD template (see documentation-criteria skill)
98+
- Create following `references/prd-template.md` in the documentation-criteria skill
9999
- Understand and describe intent of each section
100100
- Limit questions to 3-5 in interactive mode
101101

agents/security-reviewer.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,8 @@ When `prior_feedback` is present, also include `prior_feedback_reconciliation` w
146146
## Status Determination
147147

148148
### blocked
149-
- Governing documents fail the Step 1 input gate
150-
- Credentials, API keys, or tokens found in committed code
151-
- Escalate immediately with the blocking reason and any finding details — requires human intervention
149+
- Governing documents fail the Step 1 input gate → return the missing or unusable input so the orchestrator can supply it
150+
- Credentials, API keys, or tokens found in committed code → return immediately with the finding details; revoking and rotating a committed secret is user-held authority
152151

153152
### needs_revision
154153
- One or more findings require correction

agents/task-decomposer.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ Tests, repository configuration, fixtures, migrations, mocks, wiring, and docume
6565

6666
### 5. Generate task files
6767

68-
Use the documentation-criteria task template and write files under `docs/plans/tasks/`.
68+
Use `references/task-template.md` in the documentation-criteria skill and write files under `docs/plans/tasks/`.
6969

7070
Each task contains:
7171

0 commit comments

Comments
 (0)