bmad-method-test-architecture-enterprise 3.2.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/evaluate.js +20 -0
- package/cli/lib/agent-adapters.js +46 -0
- package/cli/lib/evaluate/configuration-experiment.js +3401 -0
- package/cli/lib/evaluate/experiments.js +1299 -0
- package/cli/lib/evaluate/retain-skill-artifacts.js +78 -0
- package/cli/lib/evaluate/test-design-corpus/clean/docs/epics/epic-9-last-sync-indicator.md +47 -0
- package/cli/lib/evaluate/test-design-corpus/ground-truth.json +222 -0
- package/cli/lib/evaluate/test-design-corpus/native-identity.json +4 -0
- package/cli/lib/evaluate/test-design-corpus/seeded/docs/epics/epic-7-offline-order-capture.md +75 -0
- package/cli/lib/evaluate/test-design-replay.js +453 -0
- package/cli/lib/run-agent.js +18 -2
- package/cli/lib/test-design-staged-config.js +60 -0
- package/cli/lib/test-design-staging.js +229 -0
- package/cli/test-design-runner.js +245 -11
- package/package.json +4 -3
- 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-evaluate/SKILL.md +11 -0
- package/skills/bmad-tea-evaluate/references/configuration-experiments.md +37 -0
- 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
- package/skills/bmod-tea/help/help.md +1 -1
|
@@ -21,6 +21,17 @@ You will continue to operate with your given name, identity, and communication_s
|
|
|
21
21
|
- `{skill-name}` resolves to the skill directory's basename.
|
|
22
22
|
- Resolve sibling files such as `references/...` and `assets/...` from `{skill-root}`.
|
|
23
23
|
|
|
24
|
+
## Execution Authority
|
|
25
|
+
|
|
26
|
+
Resolve intent before activation, customization resolution or any hook. Ordinary evaluation keeps its current workflow unchanged. Native clean/mutated trials, run comparison and baseline acceptance retain their existing authority and meaning.
|
|
27
|
+
|
|
28
|
+
An explicit native compare/accept request keeps that command's authority, including a request that mentions consistency while comparing saved runs. Saved-result consistency is an experiment route only when the user asks to analyze variability in existing results. Resolve contextual words such as “these results” from the conversation before choosing a route.
|
|
29
|
+
|
|
30
|
+
- Saved-result consistency or explicitly requested offline experiment analysis: load `references/configuration-experiments.md` and take its offline route directly. Suppress prepend, append and completion hooks. Do not run configuration resolver scripts, model calls, judge calls or fresh trials. Return after reporting the saved evidence.
|
|
31
|
+
- Fresh repeatability or a one-factor configuration experiment: load `references/configuration-experiments.md` directly. Suppress prepend, append and completion hooks throughout this route. No hook can grant execution or spending authority.
|
|
32
|
+
- “Is it repeatable?” without a saved/fresh choice: clarify saved records versus fresh runs before executing anything.
|
|
33
|
+
- Ordinary evaluation, ordinary offline record evaluation or native compare/accept (including comparing saved runs): proceed with On Activation below. Do not load the experiment guide, analyze experiments or add trials after the normal result.
|
|
34
|
+
|
|
24
35
|
## On Activation
|
|
25
36
|
|
|
26
37
|
Before resolving customizations or running hooks, inspect `{project-root}/_bmad/custom/` for `bmad-testarch-evaluate.toml` and `bmad-testarch-evaluate.user.toml`. If either exists, stop and tell the user to run `npx --package=bmad-method-test-architecture-enterprise@3 tea-migrate-customizations --project-root {project-root}`. Resolve any reported manual merge, then start a fresh chat. Do not continue with default settings while legacy overrides remain.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Optional saved-result and configuration experiments
|
|
2
|
+
|
|
3
|
+
Enter only after explicit experiment intent. Return directly after this route; activation and completion hooks stay suppressed. Ordinary Evaluate, native clean/mutated trials, native comparison and baseline acceptance keep their existing flow.
|
|
4
|
+
|
|
5
|
+
## Route by intent
|
|
6
|
+
|
|
7
|
+
- “Check how consistent the saved results from my latest Test Design evaluation are. Use only existing records. Do not rerun anything or make model calls.” means offline analysis.
|
|
8
|
+
- “Compare Test Design at medium versus high reasoning effort on the same model” means a live proposal with a spending boundary.
|
|
9
|
+
- “Compare Test Design model A versus B” means a one-factor proposal. “Compare one prompt-region change for Test Design” means a proposal that reports the unavailable prompt-region adapter before any spending approval.
|
|
10
|
+
- “Run a fresh repeatability experiment” means a live proposal.
|
|
11
|
+
- “Is it repeatable?” needs one clarification: existing saved results or fresh runs. Dispatch nothing before the answer.
|
|
12
|
+
|
|
13
|
+
## Offline analysis
|
|
14
|
+
|
|
15
|
+
Own discovery, input preparation, reader invocation and the report. Ask for the saved-run path or search root only when none is known from the conversation or evaluation output. Use the latest compatible records under that root and state every selected path. Do not ask the user to edit JSON, copy provenance or execute helper commands.
|
|
16
|
+
|
|
17
|
+
Run the installed `tea-evaluate experiment --search-root <root> --out <new-report-directory>`, or use `--saved <exact-directory>`. In this repository use `node cli/evaluate.js experiment`. These commands read saved bytes and replay the deterministic Test Design scorer; they launch no target, model, judge or subprocess. Never invoke preflight, run, custom hooks or capture to fill a gap in saved evidence.
|
|
18
|
+
|
|
19
|
+
Supported inputs are sealed legacy Test Design reader directories, native retained per-attempt directories and new experiment directories. Preserve original records and integrity files. For missing diagnostics, input identities or resources, report the resulting limitation. Use shipped ground truth only for matching native cases and input identity. An incompatible corpus needs its original companion ground truth through the legacy reader; this route cannot invent an adapter.
|
|
20
|
+
|
|
21
|
+
No retrospective success threshold is invented. Explain spread, counts, recorded native stability and deterministic scorer replay separately. Historical receipts stay historical. A descriptive finding, a native gate failure, an inconclusive result, selection clearance and a confirmed recommendation remain distinct.
|
|
22
|
+
|
|
23
|
+
## Live proposal and authority
|
|
24
|
+
|
|
25
|
+
Check capability and corpus feasibility before asking for spending approval. Current Claude/Codex adapters cannot prove applied effort or enforce an all-in money cap. Codex also lacks verified money telemetry. Explain these blockers and dispatch zero attempts. Subscription access supplies no verified zero-dollar budget. The native corpus has two independent cases; selection consumes both, leaving no unseen confirmation cases. Repetitions cannot repair this limit. No corpus expansion is authorized.
|
|
26
|
+
|
|
27
|
+
For a supported future mechanism or a labeled deterministic test double, batch consequential choices into one concrete plan approval: intended outcome, allowed quality loss or required improvement, critical failures, useful saving or latency limits, cases, repeats, retry bound, elapsed estimate, confirmation scope and verified all-in USD cap including overhead. Reuse previously approved thresholds only when they apply to the same identity. Missing decisions remain pending. Preparing a proposal grants no dispatch authority.
|
|
28
|
+
|
|
29
|
+
The controller freezes declaration, native input/scorer identities, gates, analysis, schedule, stopping rules and execution identity before approval. Approval binds the exact plan digest and cap. The local unsigned journal validates recorded lifecycle order and bindings. It cannot prove tail completeness, resist wholesale rechaining or establish independent wall-clock chronology. Exposure history covers this experiment; prior candidate exposure is unknown. Every dispatch reserves its verified bound first. Failed, partial, canceled, timed-out and retried attempts stay in the archive and spending ledger. Missing telemetry, rejected capture integrity, archival failure or an unresolved reservation stops further dispatch. Recovery reports preserve originals and partial archives, and never rerun an unsettled attempt.
|
|
30
|
+
|
|
31
|
+
The public CLI supports offline analysis, blocked native proposals through `--propose`, and reservation inspection through `--recover`. It supplies no approval or execution command. Approval and execution APIs currently serve the labeled deterministic integration tests; the native capability blockers prevent using those APIs to run providers.
|
|
32
|
+
|
|
33
|
+
The implementation's process doubles are labeled `deterministic-test-double`. They verify orchestration and capture and establish no provider quality or savings. Paid smoke runs require separate approval. Production changes, defaults, baseline acceptance and recommendation adoption each retain their own authority.
|
|
34
|
+
|
|
35
|
+
## Report
|
|
36
|
+
|
|
37
|
+
Give a short result, what the evidence establishes, what remains unknown, all-attempt cost and resource limits, and links to the selected records and report. Name blockers precisely and give the next supported action. Keep this route optional; never start it after a routine evaluation result without explicit intent.
|
|
@@ -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
|
| ------- | -------- | ------------------- | ------- | ---------------------------- |
|
|
@@ -9,7 +9,7 @@ This document covers the skills of the `tea` module: what each one gives the use
|
|
|
9
9
|
- `bmad-tea-test-design`: risk-based test planning, producing a test design document. Recommend it during solutioning, before tests or a framework exist. Afterwards offer `bmad-tea-framework`.
|
|
10
10
|
- `bmad-tea-framework`: owns production-ready framework and CI setup, with framework-only, CI-only, or both scope. It installs Playwright Utils or Pact.js Utils when enabled. Recommend it during solutioning, after test design. When CI scope cannot be inferred from the request, interactive runs ask whether to include CI. Unattended runs default to framework only and state in the summary that CI was excluded.
|
|
11
11
|
- `bmad-tea-automate`: owns test generation in red or expand mode. Red mode writes failing acceptance tests and an ATDD checklist before implementation, then verifies the intended missing behavior. Expand mode writes tests for implemented code, runs them, heals test defects for up to three rounds by default, and reports product defects. Recommend red mode after a story is created and expand mode once code exists.
|
|
12
|
-
- `bmad-tea-evaluate`: builds and runs a scored, evidence-backed evaluation of an agent, skill, workflow or tool-use system. Recommend it after automation when the target's behavior needs proof. Afterwards offer `bmad-tea-framework` with CI scope to enforce it.
|
|
12
|
+
- `bmad-tea-evaluate`: builds and runs a scored, evidence-backed evaluation of an agent, skill, workflow or tool-use system. Recommend it after automation when the target's behavior needs proof. Afterwards offer `bmad-tea-framework` with CI scope to enforce it. On explicit request, Evaluate also analyzes saved native Test Design consistency offline or prepares a bounded fresh/configuration proposal. “Is it repeatable?” first clarifies saved records versus new runs. Native live experiments remain blocked by telemetry and enforceable-budget gaps; ordinary evaluation gains no extra experiment work.
|
|
13
13
|
- `bmad-tea-test-review`: audits test quality with a 0-100 score and a review report. Recommend it after tests are written. Afterwards offer `bmad-tea-trace`.
|
|
14
14
|
- `bmad-tea-nfr`: audits the evidence for non-functional requirements and writes an NFR report. Recommend it after automation, before a release.
|
|
15
15
|
- `bmad-tea-trace`: maps requirements to tests in a traceability matrix and makes the PASS, CONCERNS, FAIL or WAIVED gate decision. Recommend it after test review, for the release gate.
|