bmad-method-test-architecture-enterprise 3.3.0 → 3.4.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/.claude-plugin/marketplace.json +1 -1
- package/cli/lib/evaluate/test-design-replay.js +3 -2
- package/package.json +2 -2
- package/skills/bmad-tea-automate/red/atdd-checklist-template.md +1 -1
- package/skills/bmad-tea-automate/red/resources/atdd-checklist-2-4-guest-checkout.example.md +1 -1
- package/skills/bmad-tea-automate/red/steps-c/step-01-preflight-and-context.md +1 -1
- package/skills/bmad-tea-automate/red/steps-c/step-05-validate-and-complete.md +1 -1
- package/skills/bmad-tea-test-design/checklist.md +39 -8
- package/skills/bmad-tea-test-design/steps-c/step-03-risk-and-testability.md +1 -1
- package/skills/bmad-tea-test-design/steps-c/step-04-coverage-plan.md +10 -3
- package/skills/bmad-tea-test-design/steps-c/step-05-generate-output.md +69 -21
- package/skills/bmad-tea-test-design/steps-e/step-02-apply-edit.md +3 -0
- package/skills/bmad-tea-test-design/steps-v/step-01-validate.md +1 -0
- package/skills/bmad-tea-test-design/test-design-qa-template.md +1 -1
- package/skills/bmod-tea/bmod.toml +1 -1
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"name": "bmad-method-test-architecture-enterprise",
|
|
32
32
|
"source": "./",
|
|
33
33
|
"description": "Master Test Architect module for quality strategy, test generation in red and expand modes with automatic run-and-heal, combined framework and CI setup, CI/CD quality gates, and structured testing education. Existing CI and ATDD customizations can be migrated to the new skill names. Part of the BMad Method ecosystem.",
|
|
34
|
-
"version": "3.
|
|
34
|
+
"version": "3.4.0",
|
|
35
35
|
"author": {
|
|
36
36
|
"name": "Murat K Ozcan (TEA Creator) & Brian (BMad) Madison"
|
|
37
37
|
},
|
|
@@ -101,8 +101,9 @@ function scoreRun(set, design, categories) {
|
|
|
101
101
|
// Every row is checked, and a row under a heading that declares no range is a
|
|
102
102
|
// band failure. Counting only the rows that sat under a declared range let a
|
|
103
103
|
// single rangeless heading exempt them: `### Medium/Low-Priority Risks`, the
|
|
104
|
-
//
|
|
105
|
-
// zero and a score-9 risk filed beneath it scored a
|
|
104
|
+
// heading test-design-qa-template.md shipped before it declared `(Score 1-5)`,
|
|
105
|
+
// took the denominator to zero and a score-9 risk filed beneath it scored a
|
|
106
|
+
// clean 100%. `banded` is
|
|
106
107
|
// therefore `rows` and the question is how many of them were placed correctly.
|
|
107
108
|
shape.banded += 1;
|
|
108
109
|
const placed = bandFor(risk.headings);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "bmad-method-test-architecture-enterprise",
|
|
4
|
-
"version": "3.
|
|
4
|
+
"version": "3.4.0",
|
|
5
5
|
"description": "Master Test Architect for quality strategy, test automation, and release gates",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"bmad",
|
|
@@ -156,7 +156,7 @@
|
|
|
156
156
|
"test:eval-routing-evidence": "node test/test-routing-evidence.js",
|
|
157
157
|
"test:eval-schemas": "node tools/validate-eval-schemas.js",
|
|
158
158
|
"test:eval-teach-me-testing-data": "node test/eval-teach-me-testing.js --validate-only",
|
|
159
|
-
"test:eval-test-design-data": "node test/eval-test-design.js --validate-only && node test/test-test-design-grounding.js",
|
|
159
|
+
"test:eval-test-design-data": "node test/eval-test-design.js --validate-only && node test/test-test-design-grounding.js && node test/test-test-design-editorial.js",
|
|
160
160
|
"test:eval-trace-data": "node test/eval-trace.js --validate-only",
|
|
161
161
|
"test:eval-transcript-data": "node test/eval-transcript.js --validate-only",
|
|
162
162
|
"test:evaluate-agents": "node test/test-evaluate-evaluators.js --group=agents",
|
|
@@ -55,7 +55,7 @@ inputDocuments: []
|
|
|
55
55
|
- **Checklist Path:** `{test_artifacts}/atdd/atdd-checklist-{story_key}.md`
|
|
56
56
|
- **Generated Test Files:** `{e2e_test_file_path}`, `{api_test_file_path}`, `{component_test_file_path}`
|
|
57
57
|
|
|
58
|
-
If this story
|
|
58
|
+
If this story is implemented with BMM `bmad-build`, list these artifact paths in its spec (Code Map and the tasks that turn them green) so the implementation agent discovers and activates the red-phase scaffolds. On BMAD releases before 6.12, mirror them into the `create-story` story's `Dev Notes` for `dev-story` instead.
|
|
59
59
|
|
|
60
60
|
---
|
|
61
61
|
|
|
@@ -63,7 +63,7 @@ Shoppers currently must create an account before they can pay, and cart abandonm
|
|
|
63
63
|
- **Checklist Path:** `docs/test-artifacts/atdd/atdd-checklist-2-4-guest-checkout.md`
|
|
64
64
|
- **Generated Test Files:** `tests/e2e/guest-checkout.spec.ts`, `tests/api/guest-checkout.spec.ts`
|
|
65
65
|
|
|
66
|
-
If this story
|
|
66
|
+
If this story is implemented with BMM `bmad-build`, list these artifact paths in its spec (Code Map and the tasks that turn them green) so the implementation agent discovers and activates the red-phase scaffolds. On BMAD releases before 6.12, mirror them into the `create-story` story's `Dev Notes` for `dev-story` instead.
|
|
67
67
|
|
|
68
68
|
---
|
|
69
69
|
|
|
@@ -86,7 +86,7 @@ If any are missing: **HALT** and notify the user.
|
|
|
86
86
|
- With neither, use a slug of the story title: lowercase; replace every run of characters outside `a-z` and `0-9` with a single `-`; trim leading and trailing `-`; truncate to 64 characters
|
|
87
87
|
- Use that `story_key` for the `{outputFile}` basename so all checklist and handoff paths stay consistent
|
|
88
88
|
- If `story_id` is still unavailable after metadata/H1/filename parsing, set it to the final `story_key` so `story_id` is never empty
|
|
89
|
-
- Preserve `{story_file}` as a tracked artifact path for later handoff into BMM `dev-story`
|
|
89
|
+
- Preserve `{story_file}` as a tracked artifact path for later handoff into BMM `bmad-build` (`dev-story` before BMAD 6.12)
|
|
90
90
|
- If a test design covers this story, read it for P0-P3 priorities and risks. Look in `{test_artifacts}/test-design/` first (`test-design-epic-{epic_num}.md` for the story's epic, then the system-level `test-design-qa.md` and `test-design-architecture.md`), then the legacy root `{test_artifacts}/` for the same names. Record the path you loaded in `inputDocuments`, or state that no test design was found in either location.
|
|
91
91
|
|
|
92
92
|
---
|
|
@@ -89,7 +89,7 @@ Report:
|
|
|
89
89
|
- Checklist output path
|
|
90
90
|
- Story key / story file handoff path
|
|
91
91
|
- Key risks or assumptions
|
|
92
|
-
- Next recommended workflow (usually `dev-story
|
|
92
|
+
- Next recommended workflow (usually BMM `bmad-build`, or `dev-story` before BMAD 6.12; `automate` comes after implementation)
|
|
93
93
|
|
|
94
94
|
---
|
|
95
95
|
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
- [ ] Test levels selected (E2E/API/Component/Unit)
|
|
57
57
|
- [ ] No duplicate coverage across levels
|
|
58
58
|
- [ ] Priority levels assigned (P0/P1/P2/P3)
|
|
59
|
-
- [ ] P0 scenarios meet strict criteria (
|
|
59
|
+
- [ ] P0 scenarios meet strict criteria (critical business, security, data-integrity, or compliance consequence + no safe workaround)
|
|
60
60
|
- [ ] NFR-derived risks mapped to planned validation scenarios
|
|
61
61
|
- [ ] Planned NFR evidence artifacts documented without final PASS/CONCERNS/FAIL decisions
|
|
62
62
|
- [ ] Data prerequisites identified
|
|
@@ -233,6 +233,39 @@
|
|
|
233
233
|
- [ ] Regression scope defined per impacted service
|
|
234
234
|
- [ ] Cross-team coordination noted where needed
|
|
235
235
|
|
|
236
|
+
## Document Quality (All Outputs)
|
|
237
|
+
|
|
238
|
+
**Applies to every output: the epic document in epic-level mode, and both documents plus the handoff in system-level mode.** These items check the Editorial Contract in `steps-c/step-05-generate-output.md`.
|
|
239
|
+
|
|
240
|
+
### Clear Instructions
|
|
241
|
+
|
|
242
|
+
- [ ] Each instruction names the actor, action, condition, and expected result wherever the sources provide them
|
|
243
|
+
- [ ] Prerequisites, conditions, and warnings appear before the action they govern
|
|
244
|
+
- [ ] Instructions that combine several actions or conditions are split into separate steps, and no condition was lost in the split
|
|
245
|
+
- [ ] One name per concept; repository names and domain terms match the sources exactly
|
|
246
|
+
- [ ] No filler sentences, promotional claims, or vague attribution; citations are kept
|
|
247
|
+
- [ ] Emojis appear only where the template uses them as markers, such as the Quick Guide tiers
|
|
248
|
+
- [ ] No banned-word list was applied: exact technical terms such as test harness and test vector remain
|
|
249
|
+
|
|
250
|
+
### Evidence and Uncertainty
|
|
251
|
+
|
|
252
|
+
- [ ] Missing details remain visible as `UNKNOWN`, open assumptions, or clarification items; none was invented to complete a sentence
|
|
253
|
+
- [ ] Observed facts, planned checks, assumptions, and unknowns read as what they are
|
|
254
|
+
- [ ] Planned tests read as planned; no planned test is described as run, verified, or passing
|
|
255
|
+
- [ ] Confidence statements and unverified behavior from the sources are still stated
|
|
256
|
+
|
|
257
|
+
### Protected Content
|
|
258
|
+
|
|
259
|
+
- [ ] Requirement, risk, and test IDs, requirement-to-test mappings, source links, evidence references, and exclusions match the decisions of steps 3 and 4
|
|
260
|
+
- [ ] Risk categories, probabilities, impacts, scores, owners, mitigations, and timelines match the decisions of steps 3 and 4
|
|
261
|
+
- [ ] Test levels, priorities, preconditions, test data, sequences, assertions, negative cases, cleanup, and dependencies are intact
|
|
262
|
+
- [ ] Thresholds, units, comparison operators, timeouts, retry counts, quantifiers, and negations are exact
|
|
263
|
+
- [ ] Literal commands, paths, code, regular expressions, payloads, Unicode test data, and expected strings are exact
|
|
264
|
+
- [ ] Priority headings open with `P0`, `P1`, `P2`, or `P3`, and every risk-band heading states its score range
|
|
265
|
+
- [ ] No scored risk table or coverage table sits under a heading that opens or ends with Example or Illustration, a heading that ends with Reference, or a paragraph opening `Example:`, `Worked example:`, or `Illustration:`
|
|
266
|
+
- [ ] No scored risk table or coverage table sits inside a blockquote or callout
|
|
267
|
+
- [ ] Validation ran on the saved files after the last edit, and every check affected by a later fix was rerun
|
|
268
|
+
|
|
236
269
|
## System-Level Mode: Two-Document Validation
|
|
237
270
|
|
|
238
271
|
**When in system-level mode (PRD + ADR input), validate BOTH documents:**
|
|
@@ -349,9 +382,9 @@
|
|
|
349
382
|
- [ ] Dates and authors match across documents
|
|
350
383
|
- [ ] ADR and PRD references consistent
|
|
351
384
|
|
|
352
|
-
###
|
|
385
|
+
### System-Level Anti-Bloat Check
|
|
353
386
|
|
|
354
|
-
**CRITICAL: Check for bloat and repetition across BOTH documents.**
|
|
387
|
+
**CRITICAL: Check for bloat and repetition across BOTH documents.** Document Quality (All Outputs) covers wording and tone.
|
|
355
388
|
|
|
356
389
|
- [ ] **No repeated notes 10+ times** (e.g., "Timing is pessimistic until R-005 fixed" on every section)
|
|
357
390
|
- [ ] **Repeated information consolidated** (write once at top, reference briefly if needed)
|
|
@@ -360,10 +393,6 @@
|
|
|
360
393
|
- [ ] **Architecture doc**: Concerns-focused, NOT implementation-focused
|
|
361
394
|
- [ ] **QA doc**: Implementation-focused, NOT theory-focused
|
|
362
395
|
- [ ] **Clear separation**: Architecture = WHAT and WHY, QA = HOW
|
|
363
|
-
- [ ] **Professional tone**: No AI slop markers
|
|
364
|
-
- [ ] Avoid excessive ✅/❌ emojis (use sparingly, only when adding clarity)
|
|
365
|
-
- [ ] Avoid "absolutely", "excellent", "fantastic", overly enthusiastic language
|
|
366
|
-
- [ ] Write professionally and directly
|
|
367
396
|
- [ ] **Architecture doc length**: Target ~150-200 lines max (focus on actionable concerns only)
|
|
368
397
|
- [ ] **QA doc length**: Keep concise, remove bloat sections
|
|
369
398
|
|
|
@@ -406,6 +435,8 @@
|
|
|
406
435
|
- [ ] **System-level mode:** Both documents validated (if applicable)
|
|
407
436
|
- [ ] **System-level mode:** Handoff document validated (if applicable)
|
|
408
437
|
- [ ] **Epic-level mode:** Single document validated (if applicable)
|
|
438
|
+
- [ ] Document Quality (All Outputs) passed for every output
|
|
439
|
+
- [ ] Final validation ran after the last edit to every output
|
|
409
440
|
- [ ] Team review scheduled (if required)
|
|
410
441
|
|
|
411
442
|
## Post-Workflow Actions
|
|
@@ -441,7 +472,7 @@ If workflow fails:
|
|
|
441
472
|
|
|
442
473
|
**Issue**: Too many P0 tests
|
|
443
474
|
|
|
444
|
-
- **Solution**: Apply strict P0 criteria - must
|
|
475
|
+
- **Solution**: Apply strict P0 criteria - must have a critical business, security, data-integrity, or compliance consequence AND no safe workaround
|
|
445
476
|
|
|
446
477
|
**Issue**: Risk scores all high
|
|
447
478
|
|
|
@@ -72,7 +72,7 @@ Using `risk-governance.md` and `probability-impact.md` (if loaded):
|
|
|
72
72
|
- Preserve the risk table columns `Risk ID`, `Category`, `Description`, `Probability`, `Impact`, and `Score`. Add a separate source-evidence column when useful. State the failure consequence in `Description` and cite the supporting input.
|
|
73
73
|
- Open each `Description` with the source statement's own key words for the gap, such as the verbs and nouns the epic uses for the missing control, the unsafe behavior, or the unmet target, then state the consequence. A reader searching the epic for those words finds the row.
|
|
74
74
|
- Give every risk table the header its band has in the template. The delimiter row and every body row carry exactly as many cells as that header. Put owner and timeline text inside the `Mitigation` or `Action` cell when the band's header has no column for them.
|
|
75
|
-
- Assign unique canonical IDs `R-001`, `R-002`, and so on. Preserve those IDs in coverage, mitigations, summaries, and handoffs. Keep epic or story identity in the document run key.
|
|
75
|
+
- Assign unique canonical IDs `R-001`, `R-002`, and so on, numbered in the order the risks' gap statements first appear in the supplied sources. Read the sources in the order step 2 lists them for the mode, and each source from top to bottom. A merged risk takes the position of its earliest statement. Residual risks, registered when no gap statement exists, are numbered in story order. Within each band table, list rows in ID order. Preserve those IDs in coverage, mitigations, summaries, and handoffs. Keep epic or story identity in the document run key.
|
|
76
76
|
- Preserve explicit score ranges in risk-band headings: high score 6 or greater, medium score 3 to 4, and low score 1 to 2. For a band with no identified risk, state that absence outside the table and leave its table body empty.
|
|
77
77
|
- Classify by category: TECH / SEC / PERF / DATA / BUS / OPS
|
|
78
78
|
- Score Probability (1–3) and Impact (1–3)
|
|
@@ -47,19 +47,26 @@ For each requirement or risk-driven scenario:
|
|
|
47
47
|
- Map NFR-derived risks to planned validation scenarios and evidence sources
|
|
48
48
|
- Use the exact `Risk ID` assigned in the risk register in every `Risk Link` cell. A prose description alone is not a traceable mapping.
|
|
49
49
|
- Each `Test Level` cell contains exactly one canonical value: E2E, API, Component, Integration, or Unit. Put performance, operational, device, and other qualifiers in scenario descriptions or notes.
|
|
50
|
-
- Give every scored risk exactly one risk-linked coverage row, and give it the single test level where the failure first becomes observable. The failure crosses no boundary: Unit. It lives in one rendered interface unit: Component. It crosses one owned store, queue, file, or event boundary: Integration. It crosses the HTTP or contract boundary of one service: API. It spans two or more deployables, a user journey, or a deadline measured on real devices: E2E.
|
|
50
|
+
- Give every scored risk exactly one risk-linked coverage row, and give it the single test level where the failure first becomes observable. The failure crosses no boundary: Unit. It lives in one rendered interface unit: Component. It crosses one owned store, queue, file, or event boundary: Integration. It crosses the HTTP or contract boundary of one service: API. It spans two or more deployables, a user journey, or a deadline measured on real devices: E2E. When the mechanism fits more than one description, settle the level with these rules:
|
|
51
|
+
- Use the boundary of the component that lacks the control or behaves unsafely. The system whose response triggers the failure does not set the level.
|
|
52
|
+
- Classify the failure as the sources describe it today, with the components they name. A mitigation component the sources do not name, such as a new configuration value or a policy extracted for testing, does not set the level.
|
|
53
|
+
- For an absent control, take the level of the behavior that control would govern, as the sources describe that behavior. Absence of a control does not by itself make a risk Unit.
|
|
54
|
+
- A missing release, rollout, or disable control for a build that users install, such as a mobile or desktop app, spans the shipped build and the system that would switch it: E2E. A switch read inside one service takes that service's boundary.
|
|
55
|
+
|
|
56
|
+
Name the risk's mechanism, the boundary it crosses, and the resulting level in the row notes. Record the individual scenarios in the row's `Notes` and their number in `Test Count`; do not add a second row for the same risk. Rows that cover no scored risk use `-` in `Risk Link`.
|
|
57
|
+
|
|
51
58
|
- Place a risk's row under the one priority heading that matches its consequence. A risk never appears under two priority headings.
|
|
52
59
|
|
|
53
60
|
**Priority rules:** decide each priority on business impact, user reach, and workaround
|
|
54
61
|
availability. Risk score is supporting evidence and is not a required condition for any priority.
|
|
55
|
-
Walk the Priority Decision Tree in `test-priorities-matrix.md` for each scenario.
|
|
62
|
+
Walk the Priority Decision Tree in `test-priorities-matrix.md` for each scenario. Wherever that fragment assigns P0, in its criteria, checklist, decision tree, or example function, the P0 holds only when both P0 conditions below hold; otherwise assign P1 or lower.
|
|
56
63
|
|
|
57
64
|
- P0: Critical business, security, data-integrity, or compliance impact with no safe workaround
|
|
58
65
|
- P1: Core, frequent, or complex behavior with material user reach and a limited workaround
|
|
59
66
|
- P2: Secondary behavior with narrower user reach and an acceptable workaround
|
|
60
67
|
- P3: Rare, cosmetic, or experimental behavior with minimal impact and an easy workaround
|
|
61
68
|
|
|
62
|
-
Record the failure consequence and the source-supported workaround in the primary coverage row's notes. Preserve these four priority criteria in the published plan. Evaluate a performance budget or an operational control through its documented business consequence before assigning its test priority. Assess a workaround against the original failure consequence, before proposed mitigations. A valid workaround preserves essential business operation and resolves the affected state. Pausing the application, leaving a core user action unresolved, or suppressing a symptom needs a source-backed recovery path before it can justify a lower priority. Record the evidence for recoverability; mark it unresolved when the source provides none. Separate an acceptance threshold from the consequence of missing it. For a latency or throughput target, state whether the source establishes a critical business deadline, permanent loss, blocked essential operation, or bounded degradation while work remains recoverable. Record an unstated business consequence as a clarification. Assign P0 when the documented consequence
|
|
69
|
+
Record the failure consequence and the source-supported workaround in the primary coverage row's notes. Preserve these four priority criteria in the published plan. Evaluate a performance budget or an operational control through its documented business consequence before assigning its test priority. Assess a workaround against the original failure consequence, before proposed mitigations. A valid workaround preserves essential business operation and resolves the affected state. Pausing the application, leaving a core user action unresolved, or suppressing a symptom needs a source-backed recovery path before it can justify a lower priority. Record the evidence for recoverability; mark it unresolved when the source provides none. Separate an acceptance threshold from the consequence of missing it. For a latency or throughput target, state whether the source establishes a critical business deadline, permanent loss, blocked essential operation, or bounded degradation while work remains recoverable. Record an unstated business consequence as a clarification. Assign P0 only when both conditions hold: the documented consequence is a critical business, security, data-integrity, or compliance impact, and no safe workaround exists. A missing workaround alone leaves a risk at P1 or lower. Judge each risk on its own documented consequence. A risk whose consequence is that another registered risk's harm lasts longer or reaches more users takes P1 or lower, and the risk that causes the harm carries the P0 scenarios. This does not apply when the sources mandate the missing control itself, or when no registered risk carries the harm the control would limit; judge those on the critical-impact criterion. A release acceptance target can still have P1 coverage when the documented consequence is material degradation. An empty priority band is valid; explain why the planned scenarios belong to the assigned bands. When every primary risk has the same priority, justify how each consequence meets that criterion.
|
|
63
70
|
|
|
64
71
|
---
|
|
65
72
|
|
|
@@ -9,7 +9,7 @@ progressFile: '{test_artifacts}/test-design/test-design-progress-{run_key}.md'
|
|
|
9
9
|
|
|
10
10
|
## STEP GOAL
|
|
11
11
|
|
|
12
|
-
Write the final test-design document(s) using the correct template(s), then validate against the checklist.
|
|
12
|
+
Write the final test-design document(s) using the correct template(s), polish them under the Editorial Contract, then validate the saved outputs against the checklist.
|
|
13
13
|
|
|
14
14
|
## MANDATORY EXECUTION RULES
|
|
15
15
|
|
|
@@ -135,8 +135,53 @@ Epic-level mode remains single-worker by default (one output artifact).
|
|
|
135
135
|
|
|
136
136
|
---
|
|
137
137
|
|
|
138
|
+
## Editorial Contract
|
|
139
|
+
|
|
140
|
+
This contract governs the wording of every Create-mode output: the epic document, both system-level documents, and the handoff. Apply it while populating templates in section 2, and again as the final cleanup in section 4. It needs no separate prompt or extra pass from the user.
|
|
141
|
+
|
|
142
|
+
It edits prose only. Scope, risk scores, priorities, coverage, risk acceptance, and release criteria keep the values steps 3 and 4 decided. When editing exposes a substantive defect, such as a missing scenario, a wrong score, or an unmapped risk, return to the step that owns that decision, fix it there, and carry the fix forward. Never repair it as a wording change.
|
|
143
|
+
|
|
144
|
+
When rules conflict, resolve them in this order: technical correctness and evidence, then the template and parser contracts, then reviewer comprehension, then style.
|
|
145
|
+
|
|
146
|
+
### Writing Rules
|
|
147
|
+
|
|
148
|
+
- Replace filler with a concrete statement, or delete it when no information is lost.
|
|
149
|
+
- State the actor, action, condition, and expected result whenever the sources provide them. When a needed detail is missing, keep the gap visible as `UNKNOWN`, an open assumption, or a clarification item, and leave it unfilled.
|
|
150
|
+
- Use one name per concept. Keep the exact repository names and domain terms the sources use.
|
|
151
|
+
- Put prerequisites, conditions, and warnings before the action they govern.
|
|
152
|
+
- Split an instruction that combines several actions or conditions into separate steps. Keep complete sentences and the context a reader needs; a shorter sentence that loses a condition is a defect.
|
|
153
|
+
- Keep rationale, scenario references, and execution instructions in the template sections that already hold them.
|
|
154
|
+
- Remove promotional claims and vague attribution such as "industry best practice says". Keep citations, and make clear which statements are observed facts, planned checks, assumptions, or unknowns.
|
|
155
|
+
- Write planned verification as planned. A test that has not run never reads as run, verified, or passing.
|
|
156
|
+
|
|
157
|
+
### Protected Content
|
|
158
|
+
|
|
159
|
+
Keep these exact, in meaning and in text, through every edit:
|
|
160
|
+
|
|
161
|
+
- Requirement, risk, and test IDs; requirement-to-test mappings; source links and evidence references; explicit exclusions.
|
|
162
|
+
- Risk category, probability, impact, score, owner, mitigation, and timeline decisions.
|
|
163
|
+
- Test levels and priorities; preconditions, test data, sequence, assertions, negative cases, cleanup, and dependencies.
|
|
164
|
+
- Thresholds, units, comparison operators, timeouts, retry counts, quantifiers, and negations.
|
|
165
|
+
- Assumptions, unknowns, confidence statements, unverified behavior, unresolved owners, and missing acceptance criteria.
|
|
166
|
+
- Literal commands, paths, symbols, code, regular expressions, payloads, Unicode test data, and expected strings.
|
|
167
|
+
- Required filenames, headings, table headers, status values, and handoff keys.
|
|
168
|
+
|
|
169
|
+
Downstream scoring reads the documents by structure, so structure is protected too:
|
|
170
|
+
|
|
171
|
+
- Priority section headings open with `P0`, `P1`, `P2`, or `P3`. Keep that opening when rewording a heading.
|
|
172
|
+
- Risk-band headings state their score range, for example `(Score ≥6)`. Keep the range.
|
|
173
|
+
- A heading that opens or ends with Example or Illustration, a heading that ends with Reference, and a paragraph that opens `Example:`, `Worked example:`, or `Illustration:` mark the tables after them as reference material, and scoring skips them. Never place a scored risk table or coverage table under such a label, and never add such a label above one.
|
|
174
|
+
- Scoring also skips every table inside a blockquote. Keep scored risk and coverage tables out of blockquotes and callouts.
|
|
175
|
+
- Keep the canonical risk and coverage column names from the templates.
|
|
176
|
+
|
|
177
|
+
This contract sets no banned-word or punctuation list. Terms such as test harness and test vector can be exact technical language. A reusable safety requirement stays even when it also applies to other projects. Keep uncertainty wherever the sources are uncertain. Keep every required document; the system-level pair stays two documents.
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
138
181
|
## 2. Populate Templates
|
|
139
182
|
|
|
183
|
+
Write each output with the Editorial Contract applied from the start.
|
|
184
|
+
|
|
140
185
|
Ensure the outputs include:
|
|
141
186
|
|
|
142
187
|
- Risk assessment matrix
|
|
@@ -150,19 +195,7 @@ Ensure the outputs include:
|
|
|
150
195
|
|
|
151
196
|
---
|
|
152
197
|
|
|
153
|
-
## 3.
|
|
154
|
-
|
|
155
|
-
Validate the output(s) against:
|
|
156
|
-
|
|
157
|
-
- `checklist.md` in this workflow folder
|
|
158
|
-
- [ ] CLI sessions cleaned up (no orphaned browsers)
|
|
159
|
-
- [ ] Temp artifacts stored under `{test_artifacts}/test-design/`
|
|
160
|
-
|
|
161
|
-
If any checklist criteria are missing, fix before completion.
|
|
162
|
-
|
|
163
|
-
---
|
|
164
|
-
|
|
165
|
-
## 4. Generate BMAD Handoff Document (System-Level Mode Only)
|
|
198
|
+
## 3. Generate BMAD Handoff Document (System-Level Mode Only)
|
|
166
199
|
|
|
167
200
|
**If this is a system-level test design** (not component/feature level):
|
|
168
201
|
|
|
@@ -178,15 +211,30 @@ If any checklist criteria are missing, fix before completion.
|
|
|
178
211
|
|
|
179
212
|
---
|
|
180
213
|
|
|
181
|
-
##
|
|
214
|
+
## 4. Polish Output
|
|
215
|
+
|
|
216
|
+
Review every output saved so far, including the handoff in system-level mode, and finish all edits before section 5:
|
|
217
|
+
|
|
218
|
+
1. **Apply the Editorial Contract**: Make the final wording pass. Compare each edited passage with its draft and confirm the Protected Content is unchanged.
|
|
219
|
+
2. **Remove duplication**: Progressive-append workflow may have created repeated sections — consolidate
|
|
220
|
+
3. **Verify consistency**: Ensure terminology, risk scores, and references are consistent throughout, and that the handoff carries the same risk IDs, scores, and priorities as the test design
|
|
221
|
+
4. **Check completeness**: All template sections should be populated or explicitly marked N/A
|
|
222
|
+
5. **Table schema**: Preserve the canonical risk and coverage column names from the templates. Verify every scored risk has one unique `R-<three digits>` ID, every coverage link preserves that exact ID, and every risk-band heading states its score range. Probability, Impact, and Score cells contain only bare integers; explain each judgment in prose and verify Score equals Probability × Impact. Empty bands contain no risk rows; describe the absence in prose outside the table. Keep each risk description readable and traceable to its source.
|
|
223
|
+
6. **Format cleanup**: Ensure markdown formatting is clean (tables aligned, headers consistent, no orphaned references)
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## 5. Validate Final Outputs
|
|
182
228
|
|
|
183
|
-
|
|
229
|
+
Validate after the last edit to every output. Read the saved files from disk: the epic document in epic-level mode, or both system-level documents and the handoff in system-level mode.
|
|
230
|
+
|
|
231
|
+
Validate the output(s) against:
|
|
232
|
+
|
|
233
|
+
- `checklist.md` in this workflow folder
|
|
234
|
+
- [ ] CLI sessions cleaned up (no orphaned browsers)
|
|
235
|
+
- [ ] Temp artifacts stored under `{test_artifacts}/test-design/`
|
|
184
236
|
|
|
185
|
-
|
|
186
|
-
2. **Verify consistency**: Ensure terminology, risk scores, and references are consistent throughout
|
|
187
|
-
3. **Check completeness**: All template sections should be populated or explicitly marked N/A
|
|
188
|
-
4. **Table schema**: Preserve the canonical risk and coverage column names from the templates. Verify every scored risk has one unique `R-<three digits>` ID, every coverage link preserves that exact ID, and every risk-band heading states its score range. Probability, Impact, and Score cells contain only bare integers; explain each judgment in prose and verify Score equals Probability × Impact. Empty bands contain no risk rows; describe the absence in prose outside the table. Keep each risk description readable and traceable to its source.
|
|
189
|
-
5. **Format cleanup**: Ensure markdown formatting is clean (tables aligned, headers consistent, no orphaned references)
|
|
237
|
+
If any checklist criteria are missing, fix before completion. A fix that changes a saved output reopens validation for the content it touched: rerun the risk, coverage, and cross-document checks after a risk or coverage change, the handoff checks after a handoff change, and the Document Quality checks after any wording change. Completion waits until the last rerun passes with no further edits.
|
|
190
238
|
|
|
191
239
|
---
|
|
192
240
|
|
|
@@ -23,6 +23,9 @@ Apply the requested edits to the selected output and confirm changes.
|
|
|
23
23
|
### Step-Specific Rules:
|
|
24
24
|
|
|
25
25
|
- 🎯 Only apply edits explicitly requested by the user
|
|
26
|
+
- 🚫 Leave text the user did not ask to change exactly as it is; the Create-mode editorial polish does not run here
|
|
27
|
+
- ✅ Write new or changed text under the Writing Rules of the Editorial Contract in `{skill-root}/steps-c/step-05-generate-output.md`
|
|
28
|
+
- ✅ Change a protected value (an ID, score, priority, threshold, or heading) when the user asks for that change, and update every value and reference that depends on it: Score = Probability × Impact, the risk's score band, its coverage links, and its rows in the other system-level document and the handoff. Keep the canonical columns and the parser-sensitive heading rules intact, and leave protected content outside the requested change exactly as it is
|
|
26
29
|
|
|
27
30
|
## EXECUTION PROTOCOLS:
|
|
28
31
|
|
|
@@ -27,6 +27,7 @@ Validate outputs using the workflow checklist and record findings.
|
|
|
27
27
|
- 🎯 Validate against `{validationChecklist}`
|
|
28
28
|
- 🚫 Do not skip checks
|
|
29
29
|
- 🚫 Never overwrite an existing validation report
|
|
30
|
+
- 🚫 Report Document Quality findings without rewriting any validated output
|
|
30
31
|
|
|
31
32
|
## EXECUTION PROTOCOLS:
|
|
32
33
|
|
|
@@ -115,7 +115,7 @@ test('example test @p0', async ({ apiRequest }) => {
|
|
|
115
115
|
| ---------- | -------- | ------------------- | ----------- | ---------------------------- |
|
|
116
116
|
| **{R-ID}** | {CAT} | {Brief description} | **{Score}** | {How QA validates this risk} |
|
|
117
117
|
|
|
118
|
-
### Medium/Low-Priority Risks
|
|
118
|
+
### Medium/Low-Priority Risks (Score 1-5)
|
|
119
119
|
|
|
120
120
|
| Risk ID | Category | Description | Score | QA Test Coverage |
|
|
121
121
|
| ------- | -------- | ------------------- | ------- | ---------------------------- |
|