@torus-engineering/tas-kit 1.13.0 → 2.1.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.
Files changed (100) hide show
  1. package/.tas/_platform/claude-code/settings.json +58 -46
  2. package/.tas/_platform/hooks/code-quality.js +127 -127
  3. package/.tas/_platform/hooks/session-end.js +111 -111
  4. package/.tas/agents/architect.md +53 -53
  5. package/.tas/agents/aws-reviewer.md +71 -71
  6. package/.tas/agents/build-resolver.md +89 -59
  7. package/.tas/agents/code-explorer.md +63 -63
  8. package/.tas/agents/csharp-reviewer.md +62 -62
  9. package/.tas/agents/database-reviewer.md +73 -73
  10. package/.tas/agents/doc-updater.md +68 -66
  11. package/.tas/agents/python-reviewer.md +67 -67
  12. package/.tas/agents/security-reviewer.md +79 -79
  13. package/.tas/agents/software-engineer.md +53 -0
  14. package/.tas/agents/typescript-reviewer.md +65 -65
  15. package/.tas/commands/ado-create.md +33 -28
  16. package/.tas/commands/ado-delete.md +26 -22
  17. package/.tas/commands/ado-get.md +24 -20
  18. package/.tas/commands/ado-status.md +22 -18
  19. package/.tas/commands/ado-update.md +31 -27
  20. package/.tas/commands/tas-adr.md +37 -33
  21. package/.tas/commands/tas-apitest-plan.md +177 -173
  22. package/.tas/commands/tas-apitest.md +147 -143
  23. package/.tas/commands/tas-brainstorm.md +23 -19
  24. package/.tas/commands/tas-brd.md +50 -0
  25. package/.tas/commands/tas-bug.md +127 -113
  26. package/.tas/commands/tas-checklist.md +180 -0
  27. package/.tas/commands/tas-debug.md +103 -0
  28. package/.tas/commands/tas-design.md +41 -37
  29. package/.tas/commands/tas-dev.md +225 -125
  30. package/.tas/commands/tas-e2e-mobile.md +146 -155
  31. package/.tas/commands/tas-e2e-web.md +150 -163
  32. package/.tas/commands/tas-e2e.md +289 -102
  33. package/.tas/commands/tas-feature.md +181 -47
  34. package/.tas/commands/tas-fix.md +72 -51
  35. package/.tas/commands/tas-functest-mobile.md +138 -144
  36. package/.tas/commands/tas-functest-web.md +176 -192
  37. package/.tas/commands/tas-functest.md +225 -76
  38. package/.tas/commands/tas-init.md +22 -17
  39. package/.tas/commands/tas-master-plan.md +300 -0
  40. package/.tas/commands/tas-orchestrate.md +159 -0
  41. package/.tas/commands/tas-plan.md +152 -117
  42. package/.tas/commands/tas-prd.md +57 -37
  43. package/.tas/commands/tas-review-pr.md +174 -0
  44. package/.tas/commands/tas-review.md +115 -113
  45. package/.tas/commands/tas-sad.md +47 -43
  46. package/.tas/commands/tas-security.md +91 -87
  47. package/.tas/commands/tas-spec.md +54 -50
  48. package/.tas/commands/tas-status.md +25 -16
  49. package/.tas/project-status-example.yaml +3 -1
  50. package/.tas/rules/ado-integration.md +67 -65
  51. package/.tas/rules/common/api-design.md +517 -517
  52. package/.tas/rules/common/build-debug-loop.md +233 -0
  53. package/.tas/rules/common/code-review.md +4 -0
  54. package/.tas/rules/common/feature-done.md +42 -0
  55. package/.tas/rules/common/post-implementation-review.md +4 -0
  56. package/.tas/rules/common/project-status.md +33 -16
  57. package/.tas/rules/common/sad-impact.md +81 -0
  58. package/.tas/rules/common/tdd.md +104 -89
  59. package/.tas/rules/csharp/api-testing.md +2 -2
  60. package/.tas/rules/csharp/torus-core-framework.md +128 -0
  61. package/.tas/tas-example.yaml +9 -32
  62. package/.tas/templates/AGENTS.md +13 -0
  63. package/.tas/templates/API-Test-Spec.md +5 -4
  64. package/.tas/templates/BRD.md +133 -0
  65. package/.tas/templates/Bug.md +15 -0
  66. package/.tas/templates/E2E-Execution-Report.md +8 -8
  67. package/.tas/templates/E2E-Mobile-Spec.md +6 -8
  68. package/.tas/templates/E2E-Report.md +2 -2
  69. package/.tas/templates/E2E-Scenario.md +22 -22
  70. package/.tas/templates/E2E-Test-Spec.md +274 -0
  71. package/.tas/templates/E2E-Web-Spec.md +4 -4
  72. package/.tas/templates/Feature-Technical-Part.md +69 -0
  73. package/.tas/templates/Feature-Technical-Stack.md +74 -0
  74. package/.tas/templates/Feature-Technical.md +329 -0
  75. package/.tas/templates/Feature.md +50 -26
  76. package/.tas/templates/Func-Test-Script.md +29 -56
  77. package/.tas/templates/Func-Test-Spec.md +144 -142
  78. package/.tas/templates/PRD.md +173 -142
  79. package/.tas/templates/TestChecklist.md +96 -0
  80. package/.tas/templates/torus-dotnet-bootstrap.md +223 -0
  81. package/.tas/tools/tas-ado-readme.md +24 -27
  82. package/.tas/tools/tas-ado.py +328 -25
  83. package/.tas/tools/tas-github.py +339 -0
  84. package/README.md +142 -57
  85. package/bin/cli.js +90 -90
  86. package/lib/adapters/antigravity.js +131 -131
  87. package/lib/adapters/claude-code.js +71 -35
  88. package/lib/adapters/codex.js +157 -157
  89. package/lib/adapters/cursor.js +80 -80
  90. package/lib/adapters/index.js +20 -20
  91. package/lib/adapters/utils.js +81 -81
  92. package/lib/deleted-files.json +7 -0
  93. package/lib/install.js +546 -543
  94. package/package.json +2 -2
  95. package/.tas/README.md +0 -334
  96. package/.tas/commands/tas-epic.md +0 -35
  97. package/.tas/commands/tas-story.md +0 -91
  98. package/.tas/rules/common/story-done.md +0 -30
  99. package/.tas/templates/Epic.md +0 -46
  100. package/.tas/templates/Story.md +0 -90
@@ -0,0 +1,128 @@
1
+ ---
2
+ paths:
3
+ - "**/*.cs"
4
+ - "**/*.csproj"
5
+ - "**/*.sln"
6
+ - "**/Directory.Build.props"
7
+ - "**/Directory.Build.targets"
8
+ - "**/appsettings*.json"
9
+ - "**/Program.cs"
10
+ ---
11
+
12
+ # Torus Core Framework — Bootstrap Rule
13
+
14
+ > Used by `/tas-plan` and `/tas-dev` when scaffolding a **new .NET backend project** on top of Torus Backend Framework.
15
+ > Skip this rule for non-Torus .NET projects, or when modifying an existing solution not started from `torus-bootstrap`.
16
+
17
+ ## When to apply
18
+
19
+ Apply if **all** of the following hold:
20
+ - Tech Stack in `CLAUDE.md` contains `.NET` / `C#` as backend
21
+ - Feature / PRD asks for a brand-new backend project (target dir has no `*.sln`)
22
+ - User has not opted out of Torus Backend Framework in `tas.yaml` or task description
23
+
24
+ If a `*.sln` already exists in the target dir → do NOT re-bootstrap. Read the existing layout instead.
25
+
26
+ ## Tooling
27
+
28
+ CLI: `torus-bootstrap` — generates Onion Architecture solution wired to Torus Backend Framework NuGet packages.
29
+
30
+ Install globally (once):
31
+
32
+ ```bash
33
+ dotnet tool install --global Torus.Bootstrap
34
+ ```
35
+
36
+ Or build from source (when working inside the framework monorepo):
37
+
38
+ ```bash
39
+ cd Torus.Bootstrap
40
+ dotnet pack
41
+ dotnet tool install --global --add-source ./bin/Debug Torus.Bootstrap
42
+ ```
43
+
44
+ ## Bootstrap workflow
45
+
46
+ ### 1. Pick mode
47
+
48
+ | Mode | Command | Use when |
49
+ |---|---|---|
50
+ | Interactive | `torus-bootstrap create --name {Name}` | Choices unclear, first-time scaffold |
51
+ | Non-interactive | `torus-bootstrap create --name {Name} --interactive false` | Defaults fine: Memory cache, OpenTelemetry, SQL Server |
52
+ | Flag-driven | `torus-bootstrap create --name {Name} --cache redis --database postgresql ...` | Choices already decided in PRD / SAD |
53
+
54
+ `{Name}` follows project naming convention (e.g. `Torus.Org`, `Acme.Billing`).
55
+
56
+ ### 2. Flag reference
57
+
58
+ | Category | Flag | Values | Default |
59
+ |---|---|---|---|
60
+ | Cache | `--cache` | `none` / `memory` / `redis` / `both` | `memory` |
61
+ | Cache | `--distributed-lock` | flag — requires `--cache redis\|both` | off |
62
+ | Messaging | `--messaging` `--kafka` | `--kafka` requires `--messaging` | off |
63
+ | Background Jobs | `--background-jobs` `--quartz` | `--quartz` requires `--background-jobs` | off |
64
+ | Telemetry | `--telemetry` `--otel` | `--otel` requires `--telemetry` | off |
65
+ | Captcha | `--captcha` | `none` / `google` / `turnstile` / `both` | `none` |
66
+ | Authorization | `--opa` | flag — Open Policy Agent | off |
67
+ | Blob Storage | `--blob-storage` | `none` / `filesystem` / `minio` / `s3` / `both` | `none` |
68
+ | Email | `--email` | `none` / `mailkit` / `ses` / `both` | `none` |
69
+ | Database | `--database` | `sqlserver` / `postgresql` / `mysql` / `mongodb` | `sqlserver` |
70
+ | Multi-Tenancy | `--multi-tenancy` | flag | off |
71
+ | Output dir | `--output` | path | current dir |
72
+
73
+ Flags override interactive prompts when combined.
74
+
75
+ ### 3. Generated structure
76
+
77
+ ```
78
+ {Name}/
79
+ ├── {Name}.Domain.Shared/ # Shared domain primitives
80
+ ├── {Name}.Domain/ # Domain layer (entities, value objects)
81
+ ├── {Name}.Application.Contracts/ # Application contracts (DTOs, interfaces)
82
+ ├── {Name}.Application/ # Application layer (use cases, services)
83
+ ├── {Name}.Persistence.EfCore/ # EF Core DbContext + repositories
84
+ ├── {Name}.Infrastructure/ # Cross-cutting (logging, caching, ...)
85
+ ├── {Name}.WebApi/ # ASP.NET Core entry point
86
+ └── {Name}.sln
87
+ ```
88
+
89
+ Onion dependency direction: `WebApi → Infrastructure / Persistence → Application → Application.Contracts → Domain → Domain.Shared`. Inner layers MUST NOT reference outer layers.
90
+
91
+ ### 4. Post-bootstrap checklist
92
+
93
+ After `torus-bootstrap create` succeeds:
94
+
95
+ 1. `cd {Name}` && `dotnet restore`
96
+ 2. Update `appsettings.json` with real config. Secrets go via `dotnet user-secrets` / env vars — never commit.
97
+ 3. Add EF Core provider package to `{Name}.Persistence.EfCore.csproj`:
98
+ - `sqlserver` → `Microsoft.EntityFrameworkCore.SqlServer`
99
+ - `postgresql` → `Npgsql.EntityFrameworkCore.PostgreSQL`
100
+ - `mysql` → `Pomelo.EntityFrameworkCore.MySql`
101
+ - `mongodb` → `MongoDB.EntityFrameworkCore` (or use the driver directly, skip EF Core)
102
+ 4. Create initial migration:
103
+ ```bash
104
+ dotnet ef migrations add InitialCreate --project {Name}.Persistence.EfCore
105
+ ```
106
+ 5. Build + run:
107
+ ```bash
108
+ dotnet build
109
+ dotnet run --project {Name}.WebApi
110
+ ```
111
+
112
+ ## Guardrails
113
+
114
+ - DO NOT scaffold on top of an existing solution. Verify target dir has no `.sln` first.
115
+ - DO NOT add stray top-level projects (e.g. `Common`, `Shared`) outside Onion layers — extend `Domain.Shared` or `Infrastructure` instead.
116
+ - DO NOT let `WebApi` reference `Application` directly — go through `Application.Contracts` to keep boundaries clean.
117
+ - DO NOT pin to outdated Torus NuGet versions — `torus-bootstrap` resolves current versions; trust its choices unless PRD overrides.
118
+ - Multi-tenancy reshapes DbContext + middleware significantly — only enable if PRD / SAD explicitly calls for it.
119
+ - Captcha / OPA / Distributed Lock add infra dependencies — only enable when AC requires them.
120
+
121
+ ## Integration with TAS commands
122
+
123
+ - **`/tas-plan`** — when Feature requires a new .NET backend project, include a `Bootstrap` step in the Execution Plan referencing this rule. Pin the exact `torus-bootstrap create ...` command (with all chosen flags) in the Technical file so `/tas-dev` can replay it deterministically.
124
+ - **`/tas-dev`** — before writing application code, if no `*.sln` exists in target dir, run the bootstrap command from the Technical Plan, then continue with regular Tasks.
125
+
126
+ ## Reference
127
+
128
+ Full bootstrap CLI docs: [`.tas/templates/torus-dotnet-bootstrap.md`](../../templates/torus-dotnet-bootstrap.md).
@@ -5,7 +5,7 @@
5
5
 
6
6
  project:
7
7
  name: "My Project"
8
- code: "PROJ" # Prefix for file naming: PROJ-Epic-001, PROJ-Feature-001, etc.
8
+ code: "PROJ" # Prefix for file naming: PROJ-Feature-001, PROJ-Bug-001, etc.
9
9
  type: greenfield # greenfield | brownfield
10
10
  description: "Brief project description"
11
11
 
@@ -37,9 +37,8 @@ workflow:
37
37
  - design_spec
38
38
  - sad
39
39
  - adr
40
- - epic
41
- - feature
42
- - story
40
+ - feature # Business spec — replaces Epic + Story (single unit per business flow per stack)
41
+ - feature_technical # Technical plan generated by /tas-plan
43
42
  gate: ready_for_development
44
43
 
45
44
  # Phase 1: Develop (Orchestrated Agentic)
@@ -49,6 +48,12 @@ workflow:
49
48
  environment: test
50
49
  use_tdd: true
51
50
  auto_review: true
51
+ # Autonomy mode for /tas-dev + /tas-plan.
52
+ # manual (default) — human gates: plan approval, SAD/ADR ask, deviation prompt, Done confirm.
53
+ # full — skip gates: auto-pick approach, write Technical file straight, auto-Done if review passes.
54
+ # CLI flag --autonomous=true|false on /tas-dev or /tas-plan overrides this per-call.
55
+ # Hard gates remain even in `full`: post-impl review still runs; Critical/High blocks auto-Done; ADR creation stays human-triggered.
56
+ autonomy_mode: manual
52
57
 
53
58
  # Phase 2: Verify (Agentic + PE Review)
54
59
  verify:
@@ -95,31 +100,3 @@ security:
95
100
  deep_scan_on_every_commit: false # true = opt into tier 3 AI review each local commit
96
101
  block_on: [critical, high] # severities that block commit (tier 1 & 2 only)
97
102
  allow_bypass: true # print hint about SKIP_SECURITY_SCAN / --no-verify
98
-
99
- # Template overrides (optional)
100
- templates:
101
- sad: ".tas/templates/SAD.md"
102
- adr: ".tas/templates/ADR.md"
103
- prd: ".tas/templates/PRD.md"
104
- epic: ".tas/templates/Epic.md"
105
- feature: ".tas/templates/Feature.md"
106
- story: ".tas/templates/Story.md"
107
- bug: ".tas/templates/Bug.md"
108
-
109
- # Model mapping
110
- models:
111
- default: sonnet
112
- commands:
113
- tas-prd: sonnet
114
- tas-design: sonnet
115
- tas-sad: opus
116
- tas-adr: opus
117
- tas-epic: sonnet
118
- tas-feature: sonnet
119
- tas-story: sonnet
120
- tas-dev: sonnet
121
- tas-review: opus
122
- tas-brainstorm: opus
123
- tas-bug: sonnet
124
- tas-status: haiku
125
- tas-security: opus
@@ -35,3 +35,16 @@
35
35
  ## Key Workflows
36
36
  <!-- Common commands for this project -->
37
37
  Type /[command-name] to [describe what it does].
38
+
39
+ ## TAS Flow (kit v3 — Feature-only)
40
+
41
+ > Epic and User Story are NOT used. Each piece of work = one Feature per stack (`app` | `web` | `service` | `integration`), small enough to release in 1 day of dev.
42
+
43
+ Typical loop:
44
+ 1. `/tas-prd` — capture business requirements (PE)
45
+ 2. `/tas-feature` — create `docs/features/{CODE}-Feature-NNN-{slug}/{CODE}-Feature-NNN-{slug}.md` with AC in Given/When/Then (PE)
46
+ 3. `/tas-plan` — generate `{CODE}-Feature-NNN-{slug}-Technical.md` with Context Diagram, Logic Flow, Data Flow, ERD, File Changes, Config, SAD impact, ADR need (SE)
47
+ 4. `/tas-dev` — implement per Technical Plan + Definition of Done (SE)
48
+ 5. `/tas-functest` + `/tas-functest-{mobile|web}` — generate FT spec + scripts (QA/SE)
49
+ 6. `/tas-e2e` + `/tas-e2e-{mobile|web}` — chain Features into end-to-end scenarios (QA/PE)
50
+ 7. `/tas-review` — multi-agent review before release
@@ -8,7 +8,7 @@ status:
8
8
  created_date:
9
9
  updated_date:
10
10
  executor:
11
- story_id:
11
+ feature_id:
12
12
  framework: xUnit
13
13
  ---
14
14
 
@@ -22,7 +22,7 @@ framework: xUnit
22
22
  **Status**: [status] (Draft | Review | Approved | Deprecated)
23
23
  **Spec Source**: [spec_source]
24
24
  **Code Path**: [code_path]
25
- **Story**: [story_id] (if applicable)
25
+ **Feature**: [feature_id] (if applicable)
26
26
 
27
27
  ---
28
28
 
@@ -352,9 +352,10 @@ framework: xUnit
352
352
 
353
353
  ---
354
354
 
355
- ## Story-Specific Test Cases (Optional)
355
+ ## Feature-Specific Test Cases (Optional)
356
356
 
357
- > If spec generated from Story, add AC mapping here.
357
+ > If spec generated from a Feature, add AC mapping here.
358
+ > Anchor TC IDs on AC: `{PROJECT}_F{FEATURE}_AC{N}_API_NNN_{H|N}` if you want full traceability.
358
359
 
359
360
  | AC ID | AC Description | Test Case IDs |
360
361
  |-------|----------------|---------------|
@@ -0,0 +1,133 @@
1
+ # Business Requirements Document (BRD)
2
+
3
+ > **Document Status:** [Draft | In Review | Approved | Archived]
4
+ > **Last Updated:** [Date]
5
+ > **Business Owner:** [Name]
6
+ > **Contributors:** [Names/Roles]
7
+
8
+ ---
9
+
10
+ ## Executive Summary
11
+
12
+ **Project / Initiative Name:** [Name]
13
+
14
+ **Summary:**
15
+ [2-3 sentences: what this initiative is, what business problem it solves, expected outcome.]
16
+
17
+ **Decision Required By:** [Date]
18
+
19
+ ---
20
+
21
+ ## Business Objectives
22
+
23
+ 1. [Primary business objective — measurable]
24
+ 2. [Secondary business objective]
25
+
26
+ **KPIs / Success Criteria:**
27
+ - [KPI 1 with target, e.g. "Reduce support tickets by 30% within 6 months"]
28
+ - [KPI 2 with target]
29
+
30
+ ---
31
+
32
+ ## Problem Statement / Business Need
33
+
34
+ **Current State:**
35
+ [Describe the problem, pain point, or opportunity. What is broken or missing today?]
36
+
37
+ **Impact:**
38
+ [Quantify impact where possible: cost, time, revenue lost, compliance risk, etc.]
39
+
40
+ **Why Now:**
41
+ [Market timing, regulatory deadline, competitive pressure, strategic priority]
42
+
43
+ ---
44
+
45
+ ## Project Scope
46
+
47
+ ### In Scope
48
+ - [Business capability / domain 1]
49
+ - [Business capability / domain 2]
50
+
51
+ ### Out of Scope
52
+ - [Explicitly excluded item 1]
53
+ - [Explicitly excluded item 2]
54
+
55
+ ---
56
+
57
+ ## Business Requirements
58
+
59
+ > High-level requirements only. No technical implementation detail.
60
+
61
+ | ID | Requirement | Priority |
62
+ |----|-------------|----------|
63
+ | BR-001 | [Business requirement description] | Must |
64
+ | BR-002 | [Business requirement description] | Should |
65
+ | BR-003 | [Business requirement description] | Could |
66
+
67
+ **Priority scale:** Must / Should / Could / Won't
68
+
69
+ ---
70
+
71
+ ## Stakeholders
72
+
73
+ | Name / Role | Type | Interest / Concern |
74
+ |-------------|------|--------------------|
75
+ | [Name] — [Title] | Decision Maker | [What they care about] |
76
+ | [Name] — [Title] | Contributor | [What they contribute] |
77
+ | [Name] — [Title] | Informed | [What they need to know] |
78
+
79
+ ---
80
+
81
+ ## Constraints & Assumptions
82
+
83
+ ### Constraints
84
+ - **Budget:** [Constraint]
85
+ - **Timeline:** [Hard deadline if any]
86
+ - **Legal / Regulatory:** [Compliance constraints]
87
+ - **Technical:** [Platform, integration limits]
88
+
89
+ ### Assumptions
90
+ - [Assumption 1 — what we assume to be true]
91
+ - [Assumption 2]
92
+
93
+ ---
94
+
95
+ ## Timeline / Milestones
96
+
97
+ | Milestone | Target Date | Owner |
98
+ |-----------|-------------|-------|
99
+ | BRD Approved | [Date] | Business Owner |
100
+ | PRD Completed | [Date] | PE |
101
+ | Development Start | [Date] | SE |
102
+ | Launch | [Date] | DSE |
103
+
104
+ ---
105
+
106
+ ## Cost-Benefit / Business Case
107
+
108
+ **Estimated Cost:**
109
+ - Development: [estimate]
110
+ - Operational: [estimate]
111
+
112
+ **Expected Benefits:**
113
+ - [Benefit 1 — quantified if possible]
114
+ - [Benefit 2]
115
+
116
+ **ROI / Payback Period:** [estimate]
117
+
118
+ ---
119
+
120
+ ## Changelog
121
+
122
+ | Date | Version | Changes | Author |
123
+ |------|---------|---------|--------|
124
+ | [Date] | 1.0 | Initial draft | [Name] |
125
+
126
+ ---
127
+
128
+ ## AI Usage Log
129
+
130
+ | # | Date | Command | Input (est.) | Output (est.) |
131
+ |---|------|---------|-------------|---------------|
132
+ | 1 | [Date] | /tas-brd | ~{N}k | ~{N}k |
133
+ | **Total** | | | **~{N}k** | **~{N}k** |
@@ -7,6 +7,7 @@ ado_assigned_to:
7
7
  ado_created:
8
8
  last_ado_sync:
9
9
  parent_ado_id:
10
+ sad_impact: false
10
11
  ---
11
12
  # Bug-{NNN}: {Title}
12
13
 
@@ -49,6 +50,20 @@ parent_ado_id:
49
50
  | RT-1 | Reproduce bug case | {input} | {expected} | - |
50
51
  | RT-2 | Related regression | {input} | {expected} | - |
51
52
 
53
+ ## SAD Impact Matrix
54
+ *SE fills during analyze step. Per `.tas/rules/common/sad-impact.md`. Set frontmatter `sad_impact: true` if any row `Detected: Yes`.*
55
+
56
+ | # | Category | Detected | SAD Section | Change Summary | ADR Candidate |
57
+ |---|----------|----------|-------------|----------------|---------------|
58
+ | 1 | Tech Stack | No | — | — | No |
59
+ | 2 | System Boundary | No | — | — | No |
60
+ | 3 | Container / Topology | No | — | — | No |
61
+ | 4 | Data Architecture | No | — | — | No |
62
+ | 5 | API Contract | No | — | — | No |
63
+ | 6 | Security | No | — | — | No |
64
+ | 7 | NFR / Ops | No | — | — | No |
65
+ | 8 | Deployment | No | — | — | No |
66
+
52
67
  ## Fix Notes
53
68
  *SE fills after fixing*
54
69
  - **Fix Description:** {Fix description}
@@ -3,9 +3,9 @@ created_date:
3
3
  executor:
4
4
  status: # Pass | Fail | Partial
5
5
  test_layer: # functional | e2e
6
- scenario_id:
7
- feature_id:
8
- epic_id:
6
+ scenario_id: # filled when test_layer = e2e
7
+ feature_id: # filled when test_layer = functional (single Feature)
8
+ feature_ids: # filled when test_layer = e2e (comma-separated Features in scenario)
9
9
  platform: # mobile-ios | mobile-android | web-chromium | web-firefox | web-webkit
10
10
  environment: # dev | staging | prod
11
11
  ---
@@ -40,9 +40,9 @@ environment: # dev | staging | prod
40
40
 
41
41
  | Test ID | AC Ref | Description | Result | Duration | Failure Reason |
42
42
  |---------|--------|-------------|--------|----------|----------------|
43
- | {PROJECT}_E{EPIC}_F{FEATURE}_S{STORY}_FT_001_H | AC-1 | {description} | PASS | {Xs} | - |
44
- | {PROJECT}_E{EPIC}_F{FEATURE}_S{STORY}_FT_002_N | AC-1 | {description} | PASS | {Xs} | - |
45
- | {PROJECT}_E{EPIC}_F{FEATURE}_S{STORY}_FT_003_E | AC-1 | {description} | FAIL | {Xs} | {brief reason: element not found / assertion mismatch / timeout / ...} |
43
+ | {PROJECT}_F{FEATURE}_AC1_FT_001_H | AC-1 | {description} | PASS | {Xs} | - |
44
+ | {PROJECT}_F{FEATURE}_AC1_FT_002_N | AC-1 | {description} | PASS | {Xs} | - |
45
+ | {PROJECT}_F{FEATURE}_AC1_FT_003_E | AC-1 | {description} | FAIL | {Xs} | {brief reason: element not found / assertion mismatch / timeout / ...} |
46
46
 
47
47
  ---
48
48
 
@@ -133,8 +133,8 @@ environment: # dev | staging | prod
133
133
 
134
134
  | AC ID | FT Tests | E2E Tests | Covered | Status |
135
135
  |-------|----------|-----------|---------|--------|
136
- | AC-1 | FT_001_H, FT_002_N | E2E_001 (Step 1) | Yes | All Pass |
137
- | AC-2 | FT_003_H | E2E_001 (Step 3) | Yes | 1 Fail |
136
+ | AC-1 | F012_AC1_FT_001_H, F012_AC1_FT_002_N | E2E_001 (Step 1) | Yes | All Pass |
137
+ | AC-2 | F012_AC2_FT_001_H | E2E_001 (Step 3) | Yes | 1 Fail |
138
138
  | AC-3 | - | - | No | Not tested |
139
139
 
140
140
  ### Uncovered Areas
@@ -2,18 +2,16 @@
2
2
  created_date:
3
3
  executor:
4
4
  status: Draft
5
- story_id:
6
- feature_id:
7
- epic_id:
5
+ feature_ids: # comma-separated Feature IDs chained in this scenario
6
+ scenario_id:
8
7
  ---
9
8
 
10
9
  # E2E Mobile Test Specification
11
10
 
12
- **Epic**: [EPIC_LINK]
13
- **Feature**: [FEATURE_LINK]
14
- **Story**: [STORY_LINK]
15
- **Author**: @[executor]
16
- **Created**: [created_date]
11
+ **Scenario**: [{Scenario_ID}]({SCENARIO_LINK})
12
+ **Features**: {feature_ids}
13
+ **Author**: @[executor]
14
+ **Created**: [created_date]
17
15
  **Status**: [status]
18
16
 
19
17
  ---
@@ -3,8 +3,8 @@ created_date:
3
3
  executed_date:
4
4
  executor:
5
5
  status: Draft
6
- story_id:
7
- feature_id:
6
+ feature_ids: # comma-separated Feature IDs covered by this report
7
+ scenario_id: # if this report covers an E2E scenario (cross-Feature)
8
8
  environment: Local
9
9
  ---
10
10
 
@@ -3,15 +3,15 @@ created_date:
3
3
  updated_date:
4
4
  executor:
5
5
  status: Draft
6
- epic_id: # Single epic ID, or "XEPIC" for cross-epic
7
- scenario_type: # single-epic | cross-epic
6
+ feature_ids: # comma-separated list of Features chained in this scenario, or "XSTACK" for cross-stack
7
+ scenario_type: # single-stack | cross-stack
8
8
  platform: # mobile | web | both
9
9
  ---
10
10
 
11
11
  # E2E Scenario: {Scenario Name}
12
12
 
13
- **Epic(s)**: [{Epic_ID}]({link}) {{#if cross-epic}} + [{Epic_ID_2}]({link2}) {{/if}}
14
- **Scenario Type**: {{scenario_type}} (single-epic | cross-epic)
13
+ **Features**: [{Feature_ID_1}]({link1}) {{#if cross-stack}} + [{Feature_ID_2}]({link2}) {{/if}}
14
+ **Scenario Type**: {{scenario_type}} (single-stack | cross-stack)
15
15
  **Platform**: {{platform}}
16
16
  **Author**: @[executor]
17
17
  **Created**: [created_date]
@@ -21,17 +21,17 @@ platform: # mobile | web | both
21
21
 
22
22
  ## Scenario Naming Convention
23
23
 
24
- ### Single-Epic E2E
24
+ ### Single-Stack E2E
25
25
  ```
26
- {PROJECT}_E{EPIC}_E2E_{NUMBER}_{MODIFIER}
26
+ {PROJECT}_E2E_{NUMBER}_{MODIFIER}
27
27
  ```
28
- Example: `AL_E002_E2E_001_H` - Full auth flow happy path
28
+ Example: `AL_E2E_001_H` full auth flow happy path (all Features in `web` stack)
29
29
 
30
- ### Cross-Epic E2E
30
+ ### Cross-Stack E2E
31
31
  ```
32
- {PROJECT}_XEPIC_E2E_{NUMBER}_{MODIFIER}
32
+ {PROJECT}_XSTACK_E2E_{NUMBER}_{MODIFIER}
33
33
  ```
34
- Example: `AL_XEPIC_E2E_001_H` - Registration through first scan journey
34
+ Example: `AL_XSTACK_E2E_001_H` registration (web) → KYC service → first scan (app)
35
35
 
36
36
  ---
37
37
 
@@ -40,7 +40,7 @@ Example: `AL_XEPIC_E2E_001_H` - Registration through first scan journey
40
40
  > Narrative description of the end-to-end user journey.
41
41
  > This scenario tests {what} by simulating {user type} performing {complete flow}.
42
42
 
43
- **User Persona**: {Clinical / Organic / New User / Returning User}
43
+ **User Persona**: {persona / role}
44
44
  **Starting Point**: {Screen/Page where flow begins}
45
45
  **End Point**: {Screen/Page where flow ends}
46
46
  **Estimated Duration**: {X minutes}
@@ -51,11 +51,11 @@ Example: `AL_XEPIC_E2E_001_H` - Registration through first scan journey
51
51
 
52
52
  | Step | Screen/Page | Action | Expected Result | Builds on FT IDs | Priority |
53
53
  |------|-------------|--------|-----------------|-------------------|----------|
54
- | 1 | {Start Screen} | {User action} | {Expected outcome} | {PROJECT}_E{EPIC}_F{FEATURE}_S{STORY}_FT_001_H | P0 |
55
- | 2 | {Next Screen} | {User action} | {Expected outcome} | {PROJECT}_E{EPIC}_F{FEATURE}_S{STORY}_FT_002_H | P0 |
56
- | 3 | {Next Screen} | {User action} | {Expected outcome} | {PROJECT}_E{EPIC}_F{FEATURE}_S{STORY}_FT_003_H | P0 |
54
+ | 1 | {Start Screen} | {User action} | {Expected outcome} | {PROJECT}_F{FEATURE}_AC1_FT_001_H | P0 |
55
+ | 2 | {Next Screen} | {User action} | {Expected outcome} | {PROJECT}_F{FEATURE}_AC1_FT_002_H | P0 |
56
+ | 3 | {Next Screen} | {User action} | {Expected outcome} | {PROJECT}_F{FEATURE}_AC2_FT_001_H | P0 |
57
57
  | 4 | {Next Screen} | {User action} | {Expected outcome} | - (new step, no FT reference) | P1 |
58
- | 5 | {End Screen} | {Verify final state} | {Final expected state} | {PROJECT}_E{EPIC}_F{FEATURE}_S{STORY}_FT_005_H | P0 |
58
+ | 5 | {End Screen} | {Verify final state} | {Final expected state} | {PROJECT}_F{FEATURE}_AC2_FT_003_H | P0 |
59
59
 
60
60
  ### Step Details
61
61
 
@@ -64,7 +64,7 @@ Example: `AL_XEPIC_E2E_001_H` - Registration through first scan journey
64
64
  - **Preconditions**: {What must be true before this step}
65
65
  - **Action**: {Detailed user action}
66
66
  - **Expected Result**: {What should happen}
67
- - **FT Reference**: Reuses logic from `{FT_ID}` in `features/{epic}/{feature}/helpers.ts`
67
+ - **FT Reference**: Reuses logic from `{FT_ID}` in `features/{feature-slug}/helpers.ts`
68
68
  - **Timeout**: {Expected max time for this step}
69
69
 
70
70
  #### Step 2: {Action Title}
@@ -116,7 +116,7 @@ _(Continue for each step)_
116
116
  ## Prerequisites
117
117
 
118
118
  - [ ] User account exists in target environment
119
- - [ ] Required test data seeded (products, allergens, etc.)
119
+ - [ ] Required test data seeded
120
120
  - [ ] Backend services running and accessible
121
121
  - [ ] External service stubs/mocks configured (if applicable)
122
122
  - [ ] Device/browser configured and ready
@@ -151,12 +151,12 @@ _(Continue for each step)_
151
151
 
152
152
  ### Mobile Script Output
153
153
  - **File**: `apps/mobile/e2e/flows/{scenario-slug}.e2e.ts`
154
- - **Reuses**: Helper functions from `apps/mobile/e2e/features/{epic}/{feature}/helpers.ts`
154
+ - **Reuses**: Helper functions from `apps/mobile/e2e/features/{feature-slug}/helpers.ts`
155
155
  - **Run**: `yarn e2e:flow:{scenario-slug}`
156
156
 
157
157
  ### Web Script Output
158
158
  - **File**: `apps/web/e2e/flows/{scenario-slug}.spec.ts`
159
- - **Reuses**: Page objects + helpers from `apps/web/e2e/features/{epic}/{feature}/`
159
+ - **Reuses**: Page objects + helpers from `apps/web/e2e/features/{feature-slug}/`
160
160
  - **Run**: `yarn e2e:flow:{scenario-slug}`
161
161
 
162
162
  ---
@@ -167,9 +167,9 @@ _(Continue for each step)_
167
167
 
168
168
  | Step | FT ID | Source File | Helper Function |
169
169
  |------|-------|-------------|-----------------|
170
- | 1 | {FT_ID_1} | `features/{epic}/{feature}/helpers.ts` | `{functionName}()` |
171
- | 2 | {FT_ID_2} | `features/{epic}/{feature}/helpers.ts` | `{functionName}()` |
172
- | 3 | - | (new logic) | N/A - write new code |
170
+ | 1 | {FT_ID_1} | `features/{feature-slug}/helpers.ts` | `{functionName}()` |
171
+ | 2 | {FT_ID_2} | `features/{feature-slug}/helpers.ts` | `{functionName}()` |
172
+ | 3 | - | (new logic) | N/A write new code |
173
173
 
174
174
  ---
175
175