bmad-method-test-architecture-enterprise 2.0.1-next.2 → 2.0.1-next.3

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.
Files changed (58) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/README.md +6 -1
  3. package/package.json +1 -1
  4. package/skills/bmad-tea/SKILL.md +4 -0
  5. package/skills/bmad-tea/customize.toml +2 -2
  6. package/skills/bmad-teach-me-testing/data/session-content-map.yaml +2 -1
  7. package/skills/bmad-teach-me-testing/data/tea-resources-index.yaml +2 -0
  8. package/skills/bmad-teach-me-testing/resources/tea-completion-summary.example.md +1 -1
  9. package/skills/bmad-teach-me-testing/steps-c/step-04-session-01.md +2 -1
  10. package/skills/bmad-teach-me-testing/steps-c/step-04-session-03.md +10 -0
  11. package/skills/bmad-teach-me-testing/steps-c/step-05-completion.md +2 -2
  12. package/skills/bmad-teach-me-testing/templates/completion-summary-template.md +1 -1
  13. package/skills/bmad-testarch-ci/SKILL.md +6 -81
  14. package/skills/bmad-testarch-ci/bmod.toml +1 -0
  15. package/skills/bmad-testarch-ci/workflow.yaml +6 -3
  16. package/skills/bmad-testarch-evaluate/SKILL.md +1 -1
  17. package/skills/bmad-testarch-evaluate/assets/inspection-record.md +1 -1
  18. package/skills/bmad-testarch-evaluate/references/ci.md +5 -5
  19. package/skills/bmad-testarch-framework/SKILL.md +28 -20
  20. package/skills/bmad-testarch-framework/checklist.md +2 -0
  21. package/skills/{bmad-testarch-ci → bmad-testarch-framework/ci}/checklist.md +9 -7
  22. package/skills/{bmad-testarch-ci → bmad-testarch-framework/ci}/instructions.md +9 -8
  23. package/skills/bmad-testarch-framework/ci/steps-c/step-01-preflight.md +212 -0
  24. package/skills/{bmad-testarch-ci → bmad-testarch-framework/ci}/steps-c/step-01b-resume.md +15 -5
  25. package/skills/{bmad-testarch-ci → bmad-testarch-framework/ci}/steps-c/step-02-generate-pipeline.md +23 -13
  26. package/skills/{bmad-testarch-ci → bmad-testarch-framework/ci}/steps-c/step-03-configure-quality-gates.md +9 -3
  27. package/skills/{bmad-testarch-ci → bmad-testarch-framework/ci}/steps-c/step-03b-render-evaluation-plans.md +7 -5
  28. package/skills/{bmad-testarch-ci → bmad-testarch-framework/ci}/steps-c/step-04-validate-and-summary.md +9 -7
  29. package/skills/{bmad-testarch-ci → bmad-testarch-framework/ci}/steps-e/step-01-assess.md +7 -3
  30. package/skills/bmad-testarch-framework/ci/steps-e/step-02-apply-edit.md +67 -0
  31. package/skills/{bmad-testarch-ci → bmad-testarch-framework/ci}/steps-v/step-01-validate.md +8 -10
  32. package/skills/bmad-testarch-framework/customize.toml +4 -0
  33. package/skills/bmad-testarch-framework/instructions.md +5 -11
  34. package/skills/bmad-testarch-framework/resources/setup-parallel.md +25 -0
  35. package/skills/bmad-testarch-framework/resources/setup-phase-completion.md +39 -0
  36. package/skills/bmad-testarch-framework/resources/setup-routing.md +58 -0
  37. package/skills/bmad-testarch-framework/resources/setup-run-progress.example.md +83 -0
  38. package/skills/bmad-testarch-framework/resources/setup-state.md +60 -0
  39. package/skills/bmad-testarch-framework/steps-c/step-01-preflight.md +4 -0
  40. package/skills/bmad-testarch-framework/steps-c/step-01b-resume.md +11 -1
  41. package/skills/bmad-testarch-framework/steps-c/step-02-select-framework.md +3 -1
  42. package/skills/bmad-testarch-framework/steps-c/step-03-scaffold-framework.md +8 -2
  43. package/skills/bmad-testarch-framework/steps-c/step-04-docs-and-scripts.md +2 -0
  44. package/skills/bmad-testarch-framework/steps-c/step-05-validate-and-summary.md +8 -6
  45. package/skills/bmad-testarch-framework/steps-e/step-01-assess.md +5 -1
  46. package/skills/bmad-testarch-framework/steps-e/step-02-apply-edit.md +5 -9
  47. package/skills/bmad-testarch-framework/steps-v/step-01-validate.md +6 -8
  48. package/skills/bmad-testarch-framework/workflow.yaml +6 -1
  49. package/skills/bmod-tea/bmod.toml +2 -2
  50. package/skills/bmod-tea/help/help.md +3 -3
  51. package/skills/bmad-testarch-ci/steps-c/step-01-preflight.md +0 -189
  52. package/skills/bmad-testarch-ci/steps-e/step-02-apply-edit.md +0 -71
  53. /package/skills/{bmad-testarch-ci → bmad-testarch-framework/ci}/azure-pipelines-template.yaml +0 -0
  54. /package/skills/{bmad-testarch-ci → bmad-testarch-framework/ci}/github-actions-template.yaml +0 -0
  55. /package/skills/{bmad-testarch-ci → bmad-testarch-framework/ci}/gitlab-ci-template.yaml +0 -0
  56. /package/skills/{bmad-testarch-ci → bmad-testarch-framework/ci}/harness-pipeline-template.yaml +0 -0
  57. /package/skills/{bmad-testarch-ci → bmad-testarch-framework/ci}/jenkins-pipeline-template.groovy +0 -0
  58. /package/skills/{bmad-testarch-ci → bmad-testarch-framework/ci}/resources/ci-pipeline-progress.example.md +0 -0
@@ -30,8 +30,8 @@
30
30
  {
31
31
  "name": "bmad-method-test-architecture-enterprise",
32
32
  "source": "./",
33
- "description": "Master Test Architect module for quality strategy, test automation, CI/CD quality gates, and structured testing education. Part of the BMad Method ecosystem.",
34
- "version": "2.0.1-next.2",
33
+ "description": "Master Test Architect module for quality strategy, test automation, combined framework and CI setup, CI/CD quality gates, and structured testing education. The CI skill remains a compatibility entry. Part of the BMad Method ecosystem.",
34
+ "version": "2.0.1-next.3",
35
35
  "author": {
36
36
  "name": "Murat K Ozcan (TEA Creator) & Brian (BMad) Madison"
37
37
  },
package/README.md CHANGED
@@ -57,7 +57,7 @@ Each workflow can run directly in a fresh session.
57
57
  | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ---- | ------------------------------------------------------ |
58
58
  | [Teach Me Testing](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/how-to/workflows/teach-me-testing/) | `/bmad-teach-me-testing` | TMT | Learn testing through seven sessions |
59
59
  | [Test Design](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/how-to/workflows/run-test-design/) | `/bmad-testarch-test-design` | TD | Plan risks, coverage, and NFR evidence |
60
- | [Framework Setup](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/how-to/workflows/setup-test-framework/) | `/bmad-testarch-framework` | TF | Scaffold a test framework |
60
+ | [Framework Setup](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/how-to/workflows/setup-test-framework/) | `/bmad-testarch-framework` | TF | Set up a test framework, CI, or both |
61
61
  | [CI Setup](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/how-to/workflows/setup-ci/) | `/bmad-testarch-ci` | CI | Connect tests and quality checks to CI |
62
62
  | [ATDD](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/how-to/workflows/run-atdd/) | `/bmad-testarch-atdd` | AT | Write acceptance scaffolds before implementation |
63
63
  | [Automate](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/how-to/workflows/run-automate/) | `/bmad-testarch-automate` | TA | Add coverage to implemented features |
@@ -66,6 +66,11 @@ Each workflow can run directly in a fresh session.
66
66
  | [Evaluate](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/tutorials/evaluate-your-first-skill/) | `/bmad-testarch-evaluate` | EV | Build and run a behavioral evaluation |
67
67
  | [Trace](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/how-to/workflows/run-trace/) | `/bmad-testarch-trace` | TR | Map requirements to tests and decide a release gate |
68
68
 
69
+ Framework and CI setup share one skill, `bmad-testarch-framework`.
70
+ Ask for framework only, CI only, or both; TEA infers the scope from your prompt and asks "Do you want CI too?" once when CI scope is unclear in an interactive session. An unattended request with unclear scope runs framework setup only and states that CI was excluded.
71
+ `/bmad-testarch-ci` and the `CI` menu code still work and start the same skill's CI setup, with your existing CI customizations.
72
+ Create, Resume, Validate, and Edit remain available for the selected setup scope.
73
+
69
74
  For Codex, replace the leading `/` in the table with `$`.
70
75
  The agent menu also accepts `GATE` to route you through test review, NFR evidence audit, and trace Phase 2.
71
76
 
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": "2.0.1-next.2",
4
+ "version": "2.0.1-next.3",
5
5
  "description": "Master Test Architect for quality strategy, test automation, and release gates",
6
6
  "keywords": [
7
7
  "bmad",
@@ -76,6 +76,10 @@ Otherwise render `{agent.menu}` as a numbered table: `Code`, `Description`, `Act
76
76
 
77
77
  Dispatch on a clear match by invoking the item's `skill` or executing its `prompt`. Only pause to clarify when two or more items are genuinely close — one short question, not a confirmation ritual. When nothing on the menu fits, just continue the conversation; chat, clarifying questions, and the `bmad` skill are always fair game.
78
78
 
79
+ ### Framework and CI Setup Routing
80
+
81
+ TF invokes `bmad-testarch-framework`, the canonical owner of framework and CI setup. CI invokes the installed `bmad-testarch-ci` compatibility entry with CI scope preset. Preserve both codes, names, custom menu overrides, requested scope and operation. A request for framework and pipeline setup routes directly to TF with `setup_scope = both`. The shared router asks “Do you want CI too?” once when setup leaves CI intent unclear.
82
+
79
83
  ### Routing Ambiguity Boundaries
80
84
 
81
85
  Before dispatching, list the menu items directly supported by facts in the user's message. One supported item is a clear route. Two or more supported items require the missing deciding information when the user has supplied no priority, sequence, or requested deliverable that selects one.
@@ -69,12 +69,12 @@ skill = "bmad-testarch-test-design"
69
69
 
70
70
  [[agent.menu]]
71
71
  code = "TF"
72
- description = "Test Framework — initialize production-ready test framework architecture"
72
+ description = "Test Framework: initialize framework architecture and optional CI/CD quality pipeline"
73
73
  skill = "bmad-testarch-framework"
74
74
 
75
75
  [[agent.menu]]
76
76
  code = "CI"
77
- description = "Continuous Integration — recommend and scaffold CI/CD quality pipeline"
77
+ description = "Continuous Integration: scaffold CI/CD quality pipeline through the combined framework skill"
78
78
  skill = "bmad-testarch-ci"
79
79
 
80
80
  [[agent.menu]]
@@ -28,7 +28,7 @@ sessions:
28
28
  - "What is TEA"
29
29
  - "TEA Lite approach"
30
30
  - "Engagement models"
31
- - "9 workflows overview"
31
+ - "10 workflows overview"
32
32
 
33
33
  session-02-concepts:
34
34
  docs:
@@ -79,6 +79,7 @@ sessions:
79
79
  workflows_referenced:
80
80
  - framework
81
81
  key_concepts:
82
+ - "Framework setup scope: framework, CI, or both; CI setup command"
82
83
  - "Fixture composition"
83
84
  - "Network interception patterns"
84
85
  - "Data factory pattern"
@@ -20,11 +20,13 @@ documentation:
20
20
  local: "/docs/how-to/workflows/setup-test-framework.md"
21
21
  online: "/how-to/workflows/setup-test-framework/"
22
22
  workflow: framework
23
+ description: "One setup skill for framework, CI, or both; prompt selects scope"
23
24
 
24
25
  - name: "Set Up CI Pipeline"
25
26
  local: "/docs/how-to/workflows/setup-ci.md"
26
27
  online: "/how-to/workflows/setup-ci/"
27
28
  workflow: ci
29
+ description: "CI setup through the framework skill"
28
30
 
29
31
  - name: "Test Design"
30
32
  local: "/docs/how-to/workflows/run-test-design.md"
@@ -45,7 +45,7 @@ average_score: 92
45
45
  Dana Whitfield has demonstrated proficiency in:
46
46
 
47
47
  - ✅ **Testing Fundamentals:** Risk-based testing, test pyramid, test types, P0-P3 prioritization
48
- - ✅ **TEA Methodology:** 9 workflows (Teach Me Testing, Framework, Test Design, ATDD, Automate, Test Review, Trace, NFR, CI)
48
+ - ✅ **TEA Methodology:** 10 workflows (Teach Me Testing, Framework, Test Design, ATDD, Automate, Test Review, Trace, NFR, CI, Evaluate)
49
49
  - ✅ **Architecture Patterns:** Fixture composition, network-first patterns, data factories, step-file architecture
50
50
  - ✅ **Test Design:** Risk assessment (Probability × Impact), coverage planning, test levels framework
51
51
  - ✅ **Test Development:** ATDD red-green TDD approach, test automation, API testing patterns
@@ -94,6 +94,7 @@ Present this content (mostly autonomous, clear and educational):
94
94
  TEA is a comprehensive test architecture framework that provides:
95
95
 
96
96
  - **10 Workflows:** Teach Me Testing, Test Design, Framework, CI, ATDD, Automate, Test Review, NFR Evidence Audit, Trace, Evaluate
97
+ - **Framework and CI setup:** One `bmad-testarch-framework` skill handles framework only, CI only, or both. The `bmad-testarch-ci` command and `CI` menu code start its CI setup. TEA infers the scope from your prompt and asks "Do you want CI too?" once when unclear in an interactive session. An unattended request with unclear scope sets up the framework only. Create, Resume, Validate, and Edit choose the operation.
97
98
  - **59 Knowledge Fragments:** Distilled expertise on patterns, best practices, Playwright Utils
98
99
  - **Quality Standards:** Definition of Done with execution limits (no flaky tests, no hard waits, etc.)
99
100
  - **Risk-Based Testing:** P0-P3 matrix for prioritizing test coverage
@@ -306,7 +307,7 @@ duration: '30 min'
306
307
 
307
308
  ## Key Concepts Covered
308
309
 
309
- 1. **TEA Framework:** 9 workflows + 59 knowledge fragments + quality standards
310
+ 1. **TEA Framework:** 10 workflows + 59 knowledge fragments + quality standards
310
311
  2. **Risk-Based Testing:** P0-P3 prioritization matrix
311
312
  3. **Quality Standards:** Definition of Done (no flaky tests, no hard waits, stateless, self-cleaning)
312
313
  4. **Engagement Models:** Lite, Solo, Integrated, Enterprise, Brownfield
@@ -213,6 +213,16 @@ const user = createUser(); // defaults
213
213
 
214
214
  **Documentation:** <https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/explanation/step-file-architecture/>"
215
215
 
216
+ ### 6a. Teaching: Framework and CI Setup
217
+
218
+ Explain that `bmad-testarch-framework` is one setup skill for framework only, CI only, or both.
219
+ The prompt determines scope; if CI scope is unclear in an interactive session, ask once: "Do you want CI too?" An unattended request with unclear scope sets up the framework only and states that CI was excluded.
220
+ Framework scope covers stack selection, fixtures, scaffold, scripts, and the write-time quality hook.
221
+ CI scope covers pipeline generation, quality gates, and evaluation-plan rendering.
222
+ For both, agree the stack, framework, and test commands first. Scaffold and pipeline generation can then run in parallel, with joint validation after both finish. A CI request without a framework offers the framework phase first.
223
+ `bmad-testarch-ci` and `CI` still start CI setup, while `TF` starts framework setup.
224
+ Create starts setup, Validate reports checks without repairing outputs, and Edit revises the selected outputs and checks those changes. Resume continues an interrupted run, whatever its scope and operation.
225
+
216
226
  ### 7. Quiz (3 questions)
217
227
 
218
228
  "### ✅ Knowledge Check"
@@ -170,7 +170,7 @@ average_score: { average_score }
170
170
  {user_name} has demonstrated proficiency in:
171
171
 
172
172
  - ✅ **Testing Fundamentals:** Risk-based testing, test pyramid, test types, P0-P3 prioritization
173
- - ✅ **TEA Methodology:** 9 workflows (Teach Me Testing, Framework, Test Design, ATDD, Automate, Test Review, Trace, NFR, CI)
173
+ - ✅ **TEA Methodology:** 10 workflows (Teach Me Testing, Framework, Test Design, ATDD, Automate, Test Review, Trace, NFR, CI, Evaluate)
174
174
  - ✅ **Architecture Patterns:** Fixture composition, network-first patterns, data factories, step-file architecture
175
175
  - ✅ **Test Design:** Risk assessment (Probability × Impact), coverage planning, test levels framework
176
176
  - ✅ **Test Development:** ATDD red-green TDD approach, test automation, API testing patterns
@@ -283,7 +283,7 @@ You've successfully completed the entire TEA Academy curriculum!
283
283
  **You're now equipped to:**
284
284
 
285
285
  - Write high-quality tests following TEA principles
286
- - Use all 9 TEA workflows effectively
286
+ - Use all 10 TEA workflows effectively
287
287
  - Apply risk-based testing (P0-P3 prioritization)
288
288
  - Implement architecture patterns (fixtures, network-first)
289
289
  - Maintain quality through Test Review and Trace
@@ -45,7 +45,7 @@ average_score: { { average_score } }
45
45
  {{user_name}} has demonstrated proficiency in:
46
46
 
47
47
  - ✅ **Testing Fundamentals:** Risk-based testing, test pyramid, test types
48
- - ✅ **TEA Methodology:** 9 workflows, engagement models, quality standards
48
+ - ✅ **TEA Methodology:** 10 workflows, engagement models, quality standards
49
49
  - ✅ **Architecture Patterns:** Fixtures, network-first patterns, data factories
50
50
  - ✅ **Test Design:** Risk assessment, coverage planning, P0-P3 prioritization
51
51
  - ✅ **Test Development:** ATDD red-green approach, test automation
@@ -3,87 +3,12 @@ name: bmad-testarch-ci
3
3
  description: 'Scaffold CI/CD quality pipeline with test execution. Use when the user says "lets setup CI pipeline" or "I want to create quality gates"'
4
4
  ---
5
5
 
6
- # CI/CD Pipeline Setup
6
+ # CI/CD Setup Compatibility Entry
7
7
 
8
- **Goal:** Scaffold CI/CD quality pipeline with test execution, burn-in loops, and artifact collection.
8
+ `bmad-testarch-framework` owns framework and CI setup. This installed name and the CI menu code forward to its CI phase.
9
9
 
10
- **Role:** You are the Master Test Architect.
10
+ 1. Preserve the original request, its supplied artifacts, and its create/resume/validate/edit operation. Preset `setup_scope = ci` and `setup_entry = bmad-testarch-ci`. An explicit request for both scopes sets `setup_scope = both`.
11
+ 2. Set `ci-skill-root` to this directory. Set `skill-root` to its sibling `bmad-testarch-framework` directory. Require its `SKILL.md`, `{skill-root}/resources/setup-routing.md`, and `{skill-root}/ci/steps-c/step-01-preflight.md`. If any are missing, explain that the canonical framework skill is missing or older than combined setup support and offer to install/update it with `npx skills add bmad-code-org/bmad-method-test-architecture-enterprise --skill bmad-testarch-framework`; continue only after installation succeeds and all three required files exist.
12
+ 3. Load `{skill-root}/SKILL.md` completely and execute its activation and shared router with the preset scope and original operation. Keep `{skill-root}` bound to that canonical directory throughout all phases. Do not run a second mode menu or CI-scope question.
11
13
 
12
- You will continue to operate with your given name, identity, and communication_style, merged with the details of this role description.
13
-
14
- ## Conventions
15
-
16
- - Bare paths (e.g. `instructions.md`) resolve from the skill root.
17
- - `{skill-root}` resolves to this skill's installed directory (where `customize.toml` lives).
18
- - `{project-root}` is the nearest folder containing `_bmad/`, starting at the project working directory and moving up through its parents.
19
- - `{tea-knowledge}` is the `knowledge/` folder of the `bmod-tea` skill, installed beside this one: `{skill-root}/../bmod-tea/knowledge`. `tea-index.csv` there lists every fragment by a path relative to that folder.
20
- - `{skill-name}` resolves to the skill directory's basename.
21
- - Resolve sibling workflow files such as `instructions.md`, `checklist.md`, `steps-c/...`, `steps-e/...`, `steps-v/...`, and templates from `{skill-root}`.
22
-
23
- ## On Activation
24
-
25
- ### Step 1: Resolve the Workflow Block
26
-
27
- Run: `uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --project-root {project-root} --key workflow`
28
-
29
- **If the script fails**, resolve the `workflow` block yourself by reading these three files in base → team → user order and applying the same structural merge rules as the resolver:
30
-
31
- 1. `{skill-root}/customize.toml` — defaults
32
- 2. `{project-root}/_bmad/custom/{skill-name}.toml` — team overrides
33
- 3. `{project-root}/_bmad/custom/{skill-name}.user.toml` — personal overrides
34
-
35
- Any missing file is skipped. Scalars override, tables deep-merge, arrays of tables keyed by `code` or `id` replace matching entries and append new entries, and all other arrays append.
36
-
37
- ### Step 2: Execute Prepend Steps
38
-
39
- Execute each entry in `{workflow.activation_steps_prepend}` in order before proceeding.
40
-
41
- ### Step 3: Load Persistent Facts
42
-
43
- Treat every entry in `{workflow.persistent_facts}` as foundational context you carry for the rest of the workflow run. Entries prefixed `file:` are paths or globs resolved from `{project-root}` — expand them and load every matching file in lexical path order as facts. All other entries are facts verbatim.
44
-
45
- ### Step 4: Load Config
46
-
47
- Run `uv run {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root} --key core --key modules.tea`. If the script fails, merge `{project-root}/_bmad/config.toml`, `{project-root}/_bmad/custom/config.toml` and `{project-root}/_bmad/custom/config.user.toml` yourself, in that order, with the merge rules above. If `_bmad/config.toml` is missing or has no `modules.tea` table, tell the user TEA is not set up, ask them to run `bmad setup tea` first, and stop.
48
-
49
- Each `core` and `modules.tea` key is available as `{<key>}`, and as `config.<key>` in later steps. Replace `{project-root}` inside a value with the project root. Setup answers are strings: read `"true"` and `"false"` as booleans.
50
-
51
- If `{tea-knowledge}/tea-index.csv` does not exist, the TEA knowledge base is not installed. Tell the user, offer to install it with `npx skills add bmad-code-org/bmad-method-test-architecture-enterprise --skill bmod-tea`, run that on a yes, and stop until it is there.
52
-
53
- ### Step 5: Greet the User
54
-
55
- Greet `{user_name}`, speaking in `{communication_language}`.
56
-
57
- ### Step 6: Execute Append Steps
58
-
59
- Execute each entry in `{workflow.activation_steps_append}` in order.
60
-
61
- Activation is complete. Begin the workflow below.
62
-
63
- ## Workflow Architecture
64
-
65
- This workflow uses **tri-modal step-file architecture**:
66
-
67
- - **Create mode (steps-c/)**: primary execution flow for new runs and resume continuation
68
- - **Validate mode (steps-v/)**: validation against checklist
69
- - **Edit mode (steps-e/)**: revise existing outputs
70
-
71
- Create and edit modes both detect `ci/evaluation-ci-plan.json` files and render them into the pipeline (`steps-c/step-03b-render-evaluation-plans.md`). The Evaluate skill's CI stage invokes this workflow in edit mode on an existing pipeline file, or in create mode when the repository has none, once it has written a plan.
72
-
73
- ## Initialization Sequence
74
-
75
- ### 1. Mode Determination
76
-
77
- "Welcome to the workflow. What would you like to do?"
78
-
79
- - **[C] Create** — Run the workflow from the beginning
80
- - **[R] Resume** — Resume an interrupted Create workflow
81
- - **[V] Validate** — Validate existing outputs
82
- - **[E] Edit** — Edit existing outputs
83
-
84
- ### 2. Route to First Step
85
-
86
- - **If C:** Load `{skill-root}/steps-c/step-01-preflight.md`
87
- - **If R:** Load `{skill-root}/steps-c/step-01b-resume.md` (Create-mode continuation)
88
- - **If V:** Load `{skill-root}/steps-v/step-01-validate.md`
89
- - **If E:** Load `{skill-root}/steps-e/step-01-assess.md`
14
+ The canonical router resolves this entry's `customize.toml`, `_bmad/custom/bmad-testarch-ci.toml`, and `_bmad/custom/bmad-testarch-ci.user.toml` when the CI phase activates. It preserves legacy activation steps, persistent facts, `ci_platform`, and `on_complete` hooks. Existing CI checkpoint and validation-report paths remain under `{test_artifacts}/ci/`, including their legacy migration rules.
@@ -1,3 +1,4 @@
1
1
  [skill]
2
2
  bmod = "bmod-tea"
3
3
  source = "github:bmad-code-org/bmad-method-test-architecture-enterprise/skills"
4
+ required_skills = ["bmad-testarch-framework"]
@@ -6,13 +6,16 @@ description: 'Scaffold CI/CD quality pipeline with test execution. Use when the
6
6
  # Config (test_artifacts, user_name, languages) is resolved at activation in SKILL.md from modules.tea and core.
7
7
  date: system-generated
8
8
 
9
+ # Compatibility metadata. Canonical framework SKILL.md activates shared routing with CI scope.
9
10
  # Workflow components
10
- installed_path: "."
11
- instructions: "./instructions.md"
12
- validation: "./checklist.md"
11
+ installed_path: "../bmad-testarch-framework"
12
+ instructions: "../bmad-testarch-framework/ci/instructions.md"
13
+ validation: "../bmad-testarch-framework/ci/checklist.md"
13
14
 
14
15
  # Variables and inputs
15
16
  variables:
17
+ setup_scope: "ci" # preset by compatibility entry
18
+ setup_entry: "bmad-testarch-ci"
16
19
  test_dir: "{project-root}/tests" # Root test directory
17
20
  test_stack_type: "auto" # auto, frontend, backend, fullstack, mobile - detected or user override
18
21
  test_framework: "auto" # auto, playwright, cypress, jest, vitest - detected or user override
@@ -121,7 +121,7 @@ Interpret a weak result and close the gap. Load `references/gaps.md`.
121
121
 
122
122
  ### Stage 12: CI
123
123
 
124
- Inspect the adopter's repository, place each check in a tier, write `<evaluation-folder>/ci/evaluation-ci-plan.json` and hand it to `bmad-testarch-ci`. Load `references/ci.md`.
124
+ Inspect the adopter's repository, place each check in a tier, write `<evaluation-folder>/ci/evaluation-ci-plan.json` and hand it to `bmad-testarch-framework` with CI setup scope. The `bmad-testarch-ci` compatibility entry remains valid. Load `references/ci.md`.
125
125
 
126
126
  ## On Complete
127
127
 
@@ -51,6 +51,6 @@ Stage 12 appends this section as each inspection finishes.
51
51
  - Release flow: `release.yml` on `v*` tags, with `docs/RELEASING.md` naming the tag as the gate.
52
52
  - Risk profile: one `critical` behavior (`contract.json`), about forty model calls per live run, nightly and release accepted and per pull request not (the adopter's answer), a missed defect ships within a day (`docs/RELEASING.md`).
53
53
  - Tier exits: `pr` 0; `scheduled` not run, `RESERVATION_MODEL_KEY` is absent on this machine; `release` 2, repair owned by Stage 3.
54
- - Hand-off status: done, or an open item such as a declined baseline or a missing `bmad-testarch-ci`.
54
+ - Hand-off status: framework skill invoked with CI scope and Create or Edit, or an open item such as a declined baseline or a missing `bmad-testarch-framework` (with no usable `bmad-testarch-ci` compatibility entry).
55
55
 
56
56
  Replace this worked record with the inspected target's facts and source paths. Record the selected target kind and interface in `evaluation.json` alone.
@@ -1,6 +1,6 @@
1
1
  # CI
2
2
 
3
- Run this stage after the evaluation checks clean and a scored run exists (Stages 1 to 11). It writes `<evaluation-folder>/ci/evaluation-ci-plan.json`, the platform-neutral plan that is the only definition of which check runs when and what blocks, then hands the plan to `bmad-testarch-ci`. Never write a pipeline file here. The plan's schema and placement rules belong to the installed runtime, in `{tea_evaluations_folder}/node_modules/bmad-method-test-architecture-enterprise/cli/lib/evaluate/schemas/evaluation-ci-plan.schema.json` and `{tea_evaluations_folder}/node_modules/bmad-method-test-architecture-enterprise/cli/lib/evaluate/ci-plan.js` (`cli/lib/evaluate/...` from the repository root inside TeA's own package); read them there and copy neither. `npm exec --prefix {tea_evaluations_folder} -- tea-evaluate check --evaluation <evaluation-folder>` reports the plan's findings under the `ci-plan` rule family, so the command that validates the rest of the evaluation validates the plan.
3
+ Run this stage after the evaluation checks clean and a scored run exists (Stages 1 to 11). It writes `<evaluation-folder>/ci/evaluation-ci-plan.json`, the platform-neutral plan that is the only definition of which check runs when and what blocks, then hands the plan to `bmad-testarch-framework` with explicit CI setup scope. The `bmad-testarch-ci` compatibility entry remains valid. Never write a pipeline file here. The plan's schema and placement rules belong to the installed runtime, in `{tea_evaluations_folder}/node_modules/bmad-method-test-architecture-enterprise/cli/lib/evaluate/schemas/evaluation-ci-plan.schema.json` and `{tea_evaluations_folder}/node_modules/bmad-method-test-architecture-enterprise/cli/lib/evaluate/ci-plan.js` (`cli/lib/evaluate/...` from the repository root inside TeA's own package); read them there and copy neither. `npm exec --prefix {tea_evaluations_folder} -- tea-evaluate check --evaluation <evaluation-folder>` reports the plan's findings under the `ci-plan` rule family, so the command that validates the rest of the evaluation validates the plan.
4
4
 
5
5
  If `check` reports a finding outside the `ci-plan` family, or no scored run exists, name the missing prerequisite and return to its stage before inspecting CI.
6
6
 
@@ -16,7 +16,7 @@ Worked example. `.github/workflows/ci.yml` runs on `pull_request` and `push` to
16
16
 
17
17
  ## Inspect the merge flow
18
18
 
19
- Read branch protection and the merge method: whether the default branch accepts direct pushes, whether a review is required, and whether a merge queue serializes merges. Every repository has a post-merge event, the push to the default branch or, with a queue, the pipeline run on the queued commit. Squash merges and the absence of a queue are therefore no reason to move a `merge` check. The reason to move one is cost or risk the adopter states: a live preflight that outlasts the time the merge flow allows, for example. Step-03b of `bmad-testarch-ci` maps the tier to the event.
19
+ Read branch protection and the merge method: whether the default branch accepts direct pushes, whether a review is required, and whether a merge queue serializes merges. Every repository has a post-merge event, the push to the default branch or, with a queue, the pipeline run on the queued commit. Squash merges and the absence of a queue are therefore no reason to move a `merge` check. The reason to move one is cost or risk the adopter states: a live preflight that outlasts the time the merge flow allows, for example. The framework skill's CI rendering step maps the tier to the event.
20
20
 
21
21
  Worked example. `CONTRIBUTING.md` says "Merges go through the merge queue, which re-runs the `test` check on the queued commit", and `ci.yml` lists `merge_group`. The post-merge run exists, so a live preflight that needs no secret keeps its `merge` default and its reason cites `ci.yml` and `CONTRIBUTING.md`. If `CONTRIBUTING.md` instead capped the post-merge run at ten minutes and the preflight took forty, the reason for moving it to `release` would cite that cap.
22
22
 
@@ -248,9 +248,9 @@ An adopter who declines leaves the baseline an open item, and the closing summar
248
248
 
249
249
  With no accepted baseline, skip the tier runs and record that in the `## CI` section. After the baseline is accepted, run `npm exec --prefix {tea_evaluations_folder} -- tea-evaluate ci --evaluation <evaluation-folder> --tier <tier>` for each tier that can run on this machine (`pr` always, and each live tier whose target launches here and whose credentials exist) and show the adopter each exit. A blocking exit names the stage that owns its repair, and Stage 11's guide lists the repair for each exit: an oracle that disagrees with its scorer returns to Stage 5, and a strength floor on a class with no eligible probe returns to Stage 3 or Stage 8. Record the exit and that stage in the `## CI` section, tell the adopter, and carry on with the hand-off. Record every tier the plan places a check on, with its exit or the reason it was not run.
250
250
 
251
- ## Hand the plan to the CI skill
251
+ ## Hand the plan to framework setup with CI scope
252
252
 
253
- Invoke `bmad-testarch-ci` in edit mode on the adopter's pipeline file, naming the plan's path, or in create mode when the inspection found no pipeline file. Its steps detect `ci/evaluation-ci-plan.json` and validate it, and the rendering rules belong to its `steps-c/step-03b-render-evaluation-plans.md`. Name in the request the concrete event of this repository for each tier it should render, such as `release`: the push of `v*` tags that starts `.github/workflows/release.yml`.
253
+ Invoke `bmad-testarch-framework` with explicit CI setup scope and Edit operation on the adopter's pipeline file, naming the plan's path, or Create when the inspection found no pipeline file. The `bmad-testarch-ci` compatibility entry selects the same scope and supports the same operations. Its CI phase detects `ci/evaluation-ci-plan.json` and validates it; the rendering rules belong to `skills/bmad-testarch-framework/ci/steps-c/step-03b-render-evaluation-plans.md` from TEA's repository root. In an installed skill set, resolve it as `{skill-root}/../bmad-testarch-framework/ci/steps-c/step-03b-render-evaluation-plans.md`, where `{skill-root}` is the Evaluate skill root. Setup scope and operation are independent, so this handoff selects CI and preserves an existing framework. CI Edit validates the changed pipeline syntax, injection safety and evaluation-plan rendering/gates; it does not require the adopter's full suite to pass or activate framework hooks. CI Create uses the existing framework contract and its execution gate. Name in the request the concrete event of this repository for each tier it should render, such as `release`: the push of `v*` tags that starts `.github/workflows/release.yml`.
254
254
  That step renders each `gates` entry as a wait of the named job on the evaluation job of the tier, and its summary reports the edit to the job, a name that matches no job and a conflicting gate, so relay that report to the adopter.
255
255
  When the plan gates a job, invoke it on the workflow file that holds that job.
256
- When that skill is not installed, give the adopter the request and the plan's path and record the hand-off as an open item in the inspection record. Stage 12 is complete when the plan passes `check` and the hand-off is made; a declined baseline or a missing `bmad-testarch-ci` stays a named open item in the `## CI` section and does not reopen the stage. Finish with the closing summary: the placement table, the deviations and their reasons, the secrets the live tiers need (the names from `environmentKeys`), the gates adopted, the baseline still to accept, every tier that exited non-zero with the stage that owns its repair, and each publish or deploy job that waits for the evaluation job through `gates`, with every such job the plan leaves ungated and the reason.
256
+ When that skill is not installed, give the adopter the request and the plan's path and record the hand-off as an open item in the inspection record. Stage 12 is complete when the plan passes `check` and the hand-off is made; a declined baseline or a missing `bmad-testarch-framework` (with no usable `bmad-testarch-ci` compatibility entry) stays a named open item in the `## CI` section and does not reopen the stage. Finish with the closing summary: the placement table, the deviations and their reasons, the secrets the live tiers need (the names from `environmentKeys`), the gates adopted, the baseline still to accept, every tier that exited non-zero with the stage that owns its repair, and each publish or deploy job that waits for the evaluation job through `gates`, with every such job the plan leaves ungated and the reason.
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: bmad-testarch-framework
3
- description: 'Initialize test framework with Playwright or Cypress. Use when the user says "lets setup test framework" or "I want to initialize testing framework"'
3
+ description: 'Initialize test framework and CI/CD setup for browser, backend or mobile stacks. Use when the user says "lets setup test framework" or "I want to initialize testing framework"'
4
4
  ---
5
5
 
6
- # Test Framework Setup
6
+ # Test Framework and CI Setup
7
7
 
8
- **Goal:** Initialize a production-ready test framework architecture (Playwright or Cypress) with fixtures, helpers, and configuration.
8
+ **Goal:** Set up a production-ready test framework, a CI/CD quality pipeline, or both, with stack selection, fixtures, helpers, hooks, quality gates, and evaluation-plan rendering.
9
9
 
10
10
  **Role:** You are the Master Test Architect.
11
11
 
@@ -20,6 +20,10 @@ You will continue to operate with your given name, identity, and communication_s
20
20
  - `{skill-name}` resolves to the skill directory's basename.
21
21
  - Resolve sibling workflow files such as `instructions.md`, `checklist.md`, `steps-c/...`, `steps-e/...`, `steps-v/...`, and templates from `{skill-root}`.
22
22
 
23
+ ## Read-Only Request Gate
24
+
25
+ Before activation hooks or project writes, load `{skill-root}/resources/setup-routing.md` and execute its section 1. This settles scope and any missing-framework offer; a decline stops the run. Preserve preset scope and operation from the CI adapter.
26
+
23
27
  ## On Activation
24
28
 
25
29
  ### Step 1: Resolve the Workflow Block
@@ -34,13 +38,15 @@ Run: `uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skil
34
38
 
35
39
  Any missing file is skipped. Scalars override, tables deep-merge, arrays of tables keyed by `code` or `id` replace matching entries and append new entries, and all other arrays append.
36
40
 
41
+ When scope includes CI, resolve `ci_workflow` through `resources/setup-routing.md` section 2 before any CI hook, greeting, contract freeze or worker launch. Retain canonical `workflow` separately for explicit platform precedence. This resolution reads settings only; the activation stages below execute the applicable hooks and facts.
42
+
37
43
  ### Step 2: Execute Prepend Steps
38
44
 
39
- Execute each entry in `{workflow.activation_steps_prepend}` in order before proceeding.
45
+ When scope includes framework, execute each entry in `{workflow.activation_steps_prepend}` in order through `{skill-root}/resources/setup-state.md` section 3. CI-only skips framework prepend/append hooks, persistent facts and completion hooks. When scope includes CI, execute each `ci_workflow.activation_steps_prepend` entry through the same durable protocol now, before config/greeting. The request gate has recovered the current run and persisted its journal before this step. Save each entry's started marker before executing it, skip completed entries, and halt on any started entry with an uncertain outcome.
40
46
 
41
47
  ### Step 3: Load Persistent Facts
42
48
 
43
- Treat every entry in `{workflow.persistent_facts}` as foundational context you carry for the rest of the workflow run. Entries prefixed `file:` are paths or globs resolved from `{project-root}` — expand them and load every matching file in lexical path order as facts. All other entries are facts verbatim.
49
+ When scope includes framework, treat every entry in `{workflow.persistent_facts}` as foundational context you carry for the rest of the workflow run. When scope includes CI, load `ci_workflow.persistent_facts` here under the same rules. CI-only loads its CI facts and skips framework facts. Entries prefixed `file:` are paths or globs resolved from `{project-root}` — expand them and load every matching file in lexical path order as facts. All other entries are facts verbatim.
44
50
 
45
51
  ### Step 4: Load Config
46
52
 
@@ -56,32 +62,34 @@ Greet `{user_name}`, speaking in `{communication_language}`.
56
62
 
57
63
  ### Step 6: Execute Append Steps
58
64
 
59
- Execute each entry in `{workflow.activation_steps_append}` in order.
65
+ After greeting, execute each applicable append entry through the same individual durable hook protocol: framework `{workflow.activation_steps_append}` when scope includes framework, then `ci_workflow.activation_steps_append` when scope includes CI. Save each applicable phase in `activation_completed` after its entries succeed. Preserve the full journal and hook ledger through every scope and operation Resume.
60
66
 
61
67
  Activation is complete. Begin the workflow below.
62
68
 
63
69
  ## Workflow Architecture
64
70
 
65
- This workflow uses **tri-modal step-file architecture**:
71
+ The existing framework steps at the skill root and the CI steps under `ci/` share scope and operation routing. `bmad-testarch-ci` is the compatibility entry point with CI scope preset. Both installed names and the TF/CI menu codes remain available.
66
72
 
67
- - **Create mode (steps-c/)**: primary execution flow for new runs and resume continuation
68
- - **Validate mode (steps-v/)**: validation against checklist
69
- - **Edit mode (steps-e/)**: revise existing outputs
73
+ Create and edit CI phases detect `ci/evaluation-ci-plan.json` and render it through `{skill-root}/ci/steps-c/step-03b-render-evaluation-plans.md`. Evaluate can continue invoking `bmad-testarch-ci` in create or edit mode.
70
74
 
71
75
  ## Initialization Sequence
72
76
 
73
- ### 1. Mode Determination
74
-
75
- "Welcome to the workflow. What would you like to do?"
76
-
77
- - **[C] Create** — Run the workflow from the beginning
78
- - **[R] Resume** — Resume an interrupted Create workflow
79
- - **[V] Validate** — Validate existing outputs
80
- - **[E] Edit** — Edit existing outputs
77
+ Load `{skill-root}/resources/setup-routing.md` completely. Continue sections 2 through 4 after the read-only gate and canonical activation. Its checkpoint, customization, and completion rules apply to every step below. Do not repeat canonical activation or the scope question.
81
78
 
82
- ### 2. Route to First Step
79
+ ### Framework Phase
83
80
 
84
81
  - **If C:** Load `{skill-root}/steps-c/step-01-preflight.md`
85
- - **If R:** Load `{skill-root}/steps-c/step-01b-resume.md` (Create-mode continuation)
82
+ - **If R:** Load `{skill-root}/steps-c/step-01b-resume.md` only for a legacy Create checkpoint without a journal next position. Journal-backed Resume dispatches its saved C/E/V next file/subsection directly.
86
83
  - **If V:** Load `{skill-root}/steps-v/step-01-validate.md`
87
84
  - **If E:** Load `{skill-root}/steps-e/step-01-assess.md`
85
+
86
+ ### CI Phase
87
+
88
+ CI settings and applicable activation hooks were handled in the activation stages above. Keep `{skill-root}` bound to the canonical framework directory; do not replay CI activation at phase handoff.
89
+
90
+ - **If C:** Load `{skill-root}/ci/steps-c/step-01-preflight.md`
91
+ - **If R:** Load `{skill-root}/ci/steps-c/step-01b-resume.md` only for a legacy Create checkpoint without a journal next position. Journal-backed Resume dispatches its saved C/E/V next file/subsection directly.
92
+ - **If V:** Load `{skill-root}/ci/steps-v/step-01-validate.md`
93
+ - **If E:** Load `{skill-root}/ci/steps-e/step-01-assess.md`
94
+
95
+ For both scope, the coordinator runs the applicable framework and CI phases under the same operation and agreed contract. Read `resources/setup-parallel.md` before concurrent generation. Every phase terminal loads `{skill-root}/resources/setup-phase-completion.md`; completion occurs after all requested phases satisfy their operation-specific completion criteria.
@@ -1,5 +1,7 @@
1
1
  # Test Framework Setup - Validation Checklist
2
2
 
3
+ Apply scaffold creation criteria to newly created frameworks. Validate evaluates the selected existing artifacts and records non-applicable criteria with reasons; it never repairs outputs. Edit re-checks only changed outputs and their direct dependencies. Reusing an existing framework for combined CI setup uses its existing commands and CI preflight contract, without this scaffold checklist or hook integrity checks.
4
+
3
5
  This checklist ensures the framework workflow completes successfully and all deliverables meet quality standards.
4
6
 
5
7
  ---
@@ -1,8 +1,10 @@
1
1
  # CI/CD Pipeline Setup - Validation Checklist
2
2
 
3
+ For Create, evaluate all applicable setup criteria. Validate reports failures and unavailable execution prerequisites without repair; Edit checks only changed outputs and their direct dependencies. A completed Validate report can contain FAIL criteria. Existing or reused frameworks do not need framework scaffold creation criteria. Use the contract's observed `test_surfaces` and frameworks to decide browser/device criteria; a frontend or mobile application with only unit/API tests does not require browser/device jobs, installs or caches.
4
+
3
5
  ## Prerequisites
4
6
 
5
- - [ ] Git repository initialized (`.git/` exists)
7
+ - [ ] Git repository initialized (`.git` directory or worktree marker exists)
6
8
  - [ ] Git remote configured (`git remote -v` shows origin)
7
9
  - [ ] Test framework configured (appropriate config for detected stack type)
8
10
  - [ ] Local tests pass (test command succeeds)
@@ -48,8 +50,8 @@ Note: CI setup is typically a one-time task per repo and can be run any time aft
48
50
  - [ ] Node version matches project
49
51
  - [ ] Test directory paths correct
50
52
  - [ ] Stack-conditional steps applied:
51
- - [ ] Browser install included for frontend/fullstack stacks
52
- - [ ] Browser install omitted for backend-only stacks
53
+ - [ ] Browser install included when a browser test surface is declared
54
+ - [ ] Browser install omitted when no browser test surface is declared
53
55
  - [ ] Test commands match detected framework
54
56
 
55
57
  ### Step 3: Parallel Sharding
@@ -61,18 +63,18 @@ Note: CI setup is typically a one-time task per repo and can be run any time aft
61
63
 
62
64
  ### Step 4: Burn-In Loop
63
65
 
64
- - [ ] Burn-in job created (frontend/fullstack stacks) or intentionally skipped (backend-only)
66
+ - [ ] Burn-in job created for an applicable browser/device surface or intentionally skipped with a reason
65
67
  - [ ] 10 iterations configured (when enabled)
66
68
  - [ ] Proper exit on failure (`|| exit 1`)
67
69
  - [ ] Runs on appropriate triggers (PR, cron)
68
70
  - [ ] Failure artifacts uploaded
69
- - [ ] Backend-only stacks: burn-in skipped by default (documented reason: targets UI flakiness)
71
+ - [ ] Unit/API-only suites: UI burn-in skipped by default (documented reason: no browser/device test surface)
70
72
 
71
73
  ### Step 5: Caching Configuration
72
74
 
73
75
  - [ ] Dependency cache configured (npm/yarn)
74
76
  - [ ] Cache key uses lockfile hash
75
- - [ ] Browser cache configured (Playwright/Cypress)
77
+ - [ ] Browser cache configured when Playwright/Cypress browsers are required
76
78
  - [ ] Restore-keys defined for fallback
77
79
  - [ ] Cache paths correct for platform
78
80
 
@@ -190,7 +192,7 @@ Note: CI setup is typically a one-time task per repo and can be run any time aft
190
192
 
191
193
  ### Workflow Dependencies
192
194
 
193
- - [ ] `framework` workflow completed first
195
+ - [ ] Existing or newly created framework validated against the agreed contract in this run (CI-only existing; both-scope new or reused)
194
196
  - [ ] Can proceed to `atdd` workflow after CI setup
195
197
  - [ ] Can proceed to `automate` workflow
196
198
  - [ ] CI integrates with `gate` workflow
@@ -31,18 +31,19 @@ From `workflow.yaml`, resolve:
31
31
  - `date` (`test_artifacts`, `user_name`, `communication_language` and `document_output_language` come from activation)
32
32
  - `test_dir`, and `ci_platform` from `{workflow.ci_platform}`
33
33
 
34
- ### 2. First Step
34
+ ### 2. Canonical CI Activation
35
+
36
+ If invoked through legacy workflow metadata, preset `setup_scope = ci` and `setup_entry = bmad-testarch-ci`, then load `{skill-root}/SKILL.md` and its shared router before executing a phase. Keep the original operation and legacy CI customization. CI instructions, templates and steps resolve under `{skill-root}/ci/`.
37
+
38
+ ### 3. First Step
35
39
 
36
40
  Load, read completely, and execute:
37
- `{skill-root}/steps-c/step-01-preflight.md`
41
+ `{skill-root}/ci/steps-c/step-01-preflight.md`
38
42
 
39
- ### 3. Evaluation Plans
43
+ ### 4. Evaluation Plans
40
44
 
41
45
  Step 3b renders every `ci/evaluation-ci-plan.json` it finds into the pipeline, in create mode and, through the edit steps, in edit mode.
42
46
 
43
- ### 4. Resume Support
44
-
45
- If the user selects **Resume** mode, load, read completely, and execute:
46
- `{skill-root}/steps-c/step-01b-resume.md`
47
+ ### 5. Resume Support
47
48
 
48
- This checks the output document for progress tracking frontmatter and routes to the next incomplete step.
49
+ Resume follows the saved position in `setup-run-progress.md`. Only a legacy Create checkpoint with no saved journal position loads `{skill-root}/ci/steps-c/step-01b-resume.md` after recovering any missing contract through read-only inventory. This loader then routes directly to the next incomplete step.