atdd 0.2.1__py3-none-any.whl

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 (184) hide show
  1. atdd/__init__.py +6 -0
  2. atdd/__main__.py +4 -0
  3. atdd/cli.py +404 -0
  4. atdd/coach/__init__.py +0 -0
  5. atdd/coach/commands/__init__.py +0 -0
  6. atdd/coach/commands/add_persistence_metadata.py +215 -0
  7. atdd/coach/commands/analyze_migrations.py +188 -0
  8. atdd/coach/commands/consumers.py +720 -0
  9. atdd/coach/commands/infer_governance_status.py +149 -0
  10. atdd/coach/commands/initializer.py +177 -0
  11. atdd/coach/commands/interface.py +1078 -0
  12. atdd/coach/commands/inventory.py +565 -0
  13. atdd/coach/commands/migration.py +240 -0
  14. atdd/coach/commands/registry.py +1560 -0
  15. atdd/coach/commands/session.py +430 -0
  16. atdd/coach/commands/sync.py +405 -0
  17. atdd/coach/commands/test_interface.py +399 -0
  18. atdd/coach/commands/test_runner.py +141 -0
  19. atdd/coach/commands/tests/__init__.py +1 -0
  20. atdd/coach/commands/tests/test_telemetry_array_validation.py +235 -0
  21. atdd/coach/commands/traceability.py +4264 -0
  22. atdd/coach/conventions/session.convention.yaml +754 -0
  23. atdd/coach/overlays/__init__.py +2 -0
  24. atdd/coach/overlays/claude.md +2 -0
  25. atdd/coach/schemas/config.schema.json +34 -0
  26. atdd/coach/schemas/manifest.schema.json +101 -0
  27. atdd/coach/templates/ATDD.md +282 -0
  28. atdd/coach/templates/SESSION-TEMPLATE.md +327 -0
  29. atdd/coach/utils/__init__.py +0 -0
  30. atdd/coach/utils/graph/__init__.py +0 -0
  31. atdd/coach/utils/graph/urn.py +875 -0
  32. atdd/coach/validators/__init__.py +0 -0
  33. atdd/coach/validators/shared_fixtures.py +365 -0
  34. atdd/coach/validators/test_enrich_wagon_registry.py +167 -0
  35. atdd/coach/validators/test_registry.py +575 -0
  36. atdd/coach/validators/test_session_validation.py +1183 -0
  37. atdd/coach/validators/test_traceability.py +448 -0
  38. atdd/coach/validators/test_update_feature_paths.py +108 -0
  39. atdd/coach/validators/test_validate_contract_consumers.py +297 -0
  40. atdd/coder/__init__.py +1 -0
  41. atdd/coder/conventions/adapter.recipe.yaml +88 -0
  42. atdd/coder/conventions/backend.convention.yaml +460 -0
  43. atdd/coder/conventions/boundaries.convention.yaml +666 -0
  44. atdd/coder/conventions/commons.convention.yaml +460 -0
  45. atdd/coder/conventions/complexity.recipe.yaml +109 -0
  46. atdd/coder/conventions/component-naming.convention.yaml +178 -0
  47. atdd/coder/conventions/design.convention.yaml +327 -0
  48. atdd/coder/conventions/design.recipe.yaml +273 -0
  49. atdd/coder/conventions/dto.convention.yaml +660 -0
  50. atdd/coder/conventions/frontend.convention.yaml +542 -0
  51. atdd/coder/conventions/green.convention.yaml +1012 -0
  52. atdd/coder/conventions/presentation.convention.yaml +587 -0
  53. atdd/coder/conventions/refactor.convention.yaml +535 -0
  54. atdd/coder/conventions/technology.convention.yaml +206 -0
  55. atdd/coder/conventions/tests/__init__.py +0 -0
  56. atdd/coder/conventions/tests/test_adapter_recipe.py +302 -0
  57. atdd/coder/conventions/tests/test_complexity_recipe.py +289 -0
  58. atdd/coder/conventions/tests/test_component_taxonomy.py +278 -0
  59. atdd/coder/conventions/tests/test_component_urn_naming.py +165 -0
  60. atdd/coder/conventions/tests/test_thinness_recipe.py +286 -0
  61. atdd/coder/conventions/thinness.recipe.yaml +82 -0
  62. atdd/coder/conventions/train.convention.yaml +325 -0
  63. atdd/coder/conventions/verification.protocol.yaml +53 -0
  64. atdd/coder/schemas/design_system.schema.json +361 -0
  65. atdd/coder/validators/__init__.py +0 -0
  66. atdd/coder/validators/test_commons_structure.py +485 -0
  67. atdd/coder/validators/test_complexity.py +416 -0
  68. atdd/coder/validators/test_cross_language_consistency.py +431 -0
  69. atdd/coder/validators/test_design_system_compliance.py +413 -0
  70. atdd/coder/validators/test_dto_testing_patterns.py +268 -0
  71. atdd/coder/validators/test_green_cross_stack_layers.py +168 -0
  72. atdd/coder/validators/test_green_layer_dependencies.py +148 -0
  73. atdd/coder/validators/test_green_python_layer_structure.py +103 -0
  74. atdd/coder/validators/test_green_supabase_layer_structure.py +103 -0
  75. atdd/coder/validators/test_import_boundaries.py +396 -0
  76. atdd/coder/validators/test_init_file_urns.py +593 -0
  77. atdd/coder/validators/test_preact_layer_boundaries.py +221 -0
  78. atdd/coder/validators/test_presentation_convention.py +260 -0
  79. atdd/coder/validators/test_python_architecture.py +674 -0
  80. atdd/coder/validators/test_quality_metrics.py +420 -0
  81. atdd/coder/validators/test_station_master_pattern.py +244 -0
  82. atdd/coder/validators/test_train_infrastructure.py +454 -0
  83. atdd/coder/validators/test_train_urns.py +293 -0
  84. atdd/coder/validators/test_typescript_architecture.py +616 -0
  85. atdd/coder/validators/test_usecase_structure.py +421 -0
  86. atdd/coder/validators/test_wagon_boundaries.py +586 -0
  87. atdd/conftest.py +126 -0
  88. atdd/planner/__init__.py +1 -0
  89. atdd/planner/conventions/acceptance.convention.yaml +538 -0
  90. atdd/planner/conventions/appendix.convention.yaml +187 -0
  91. atdd/planner/conventions/artifact-naming.convention.yaml +852 -0
  92. atdd/planner/conventions/component.convention.yaml +670 -0
  93. atdd/planner/conventions/criteria.convention.yaml +141 -0
  94. atdd/planner/conventions/feature.convention.yaml +371 -0
  95. atdd/planner/conventions/interface.convention.yaml +382 -0
  96. atdd/planner/conventions/steps.convention.yaml +141 -0
  97. atdd/planner/conventions/train.convention.yaml +552 -0
  98. atdd/planner/conventions/wagon.convention.yaml +275 -0
  99. atdd/planner/conventions/wmbt.convention.yaml +258 -0
  100. atdd/planner/schemas/acceptance.schema.json +336 -0
  101. atdd/planner/schemas/appendix.schema.json +78 -0
  102. atdd/planner/schemas/component.schema.json +114 -0
  103. atdd/planner/schemas/feature.schema.json +197 -0
  104. atdd/planner/schemas/train.schema.json +192 -0
  105. atdd/planner/schemas/wagon.schema.json +281 -0
  106. atdd/planner/schemas/wmbt.schema.json +59 -0
  107. atdd/planner/validators/__init__.py +0 -0
  108. atdd/planner/validators/conftest.py +5 -0
  109. atdd/planner/validators/test_draft_wagon_registry.py +374 -0
  110. atdd/planner/validators/test_plan_cross_refs.py +240 -0
  111. atdd/planner/validators/test_plan_uniqueness.py +224 -0
  112. atdd/planner/validators/test_plan_urn_resolution.py +268 -0
  113. atdd/planner/validators/test_plan_wagons.py +174 -0
  114. atdd/planner/validators/test_train_validation.py +514 -0
  115. atdd/planner/validators/test_wagon_urn_chain.py +648 -0
  116. atdd/planner/validators/test_wmbt_consistency.py +327 -0
  117. atdd/planner/validators/test_wmbt_vocabulary.py +632 -0
  118. atdd/tester/__init__.py +1 -0
  119. atdd/tester/conventions/artifact.convention.yaml +257 -0
  120. atdd/tester/conventions/contract.convention.yaml +1009 -0
  121. atdd/tester/conventions/filename.convention.yaml +555 -0
  122. atdd/tester/conventions/migration.convention.yaml +509 -0
  123. atdd/tester/conventions/red.convention.yaml +797 -0
  124. atdd/tester/conventions/routing.convention.yaml +51 -0
  125. atdd/tester/conventions/telemetry.convention.yaml +458 -0
  126. atdd/tester/schemas/a11y.tmpl.json +17 -0
  127. atdd/tester/schemas/artifact.schema.json +189 -0
  128. atdd/tester/schemas/contract.schema.json +591 -0
  129. atdd/tester/schemas/contract.tmpl.json +95 -0
  130. atdd/tester/schemas/db.tmpl.json +20 -0
  131. atdd/tester/schemas/e2e.tmpl.json +17 -0
  132. atdd/tester/schemas/edge_function.tmpl.json +17 -0
  133. atdd/tester/schemas/event.tmpl.json +17 -0
  134. atdd/tester/schemas/http.tmpl.json +19 -0
  135. atdd/tester/schemas/job.tmpl.json +18 -0
  136. atdd/tester/schemas/load.tmpl.json +21 -0
  137. atdd/tester/schemas/metric.tmpl.json +19 -0
  138. atdd/tester/schemas/pack.schema.json +139 -0
  139. atdd/tester/schemas/realtime.tmpl.json +20 -0
  140. atdd/tester/schemas/rls.tmpl.json +18 -0
  141. atdd/tester/schemas/script.tmpl.json +16 -0
  142. atdd/tester/schemas/sec.tmpl.json +18 -0
  143. atdd/tester/schemas/storage.tmpl.json +18 -0
  144. atdd/tester/schemas/telemetry.schema.json +128 -0
  145. atdd/tester/schemas/telemetry_tracking_manifest.schema.json +143 -0
  146. atdd/tester/schemas/test_filename.schema.json +194 -0
  147. atdd/tester/schemas/test_intent.schema.json +179 -0
  148. atdd/tester/schemas/unit.tmpl.json +18 -0
  149. atdd/tester/schemas/visual.tmpl.json +18 -0
  150. atdd/tester/schemas/ws.tmpl.json +17 -0
  151. atdd/tester/utils/__init__.py +0 -0
  152. atdd/tester/utils/filename.py +300 -0
  153. atdd/tester/validators/__init__.py +0 -0
  154. atdd/tester/validators/cleanup_duplicate_headers.py +116 -0
  155. atdd/tester/validators/cleanup_duplicate_headers_v2.py +135 -0
  156. atdd/tester/validators/conftest.py +5 -0
  157. atdd/tester/validators/coverage_gap_report.py +321 -0
  158. atdd/tester/validators/fix_dual_ac_references.py +179 -0
  159. atdd/tester/validators/remove_duplicate_lines.py +93 -0
  160. atdd/tester/validators/test_acceptance_urn_filename_mapping.py +359 -0
  161. atdd/tester/validators/test_acceptance_urn_separator.py +166 -0
  162. atdd/tester/validators/test_artifact_naming_category.py +307 -0
  163. atdd/tester/validators/test_contract_schema_compliance.py +706 -0
  164. atdd/tester/validators/test_contracts_structure.py +200 -0
  165. atdd/tester/validators/test_coverage_adequacy.py +797 -0
  166. atdd/tester/validators/test_dual_ac_reference.py +225 -0
  167. atdd/tester/validators/test_fixture_validity.py +372 -0
  168. atdd/tester/validators/test_isolation.py +487 -0
  169. atdd/tester/validators/test_migration_coverage.py +204 -0
  170. atdd/tester/validators/test_migration_criteria.py +276 -0
  171. atdd/tester/validators/test_migration_generation.py +116 -0
  172. atdd/tester/validators/test_python_test_naming.py +410 -0
  173. atdd/tester/validators/test_red_layer_validation.py +95 -0
  174. atdd/tester/validators/test_red_python_layer_structure.py +87 -0
  175. atdd/tester/validators/test_red_supabase_layer_structure.py +90 -0
  176. atdd/tester/validators/test_telemetry_structure.py +634 -0
  177. atdd/tester/validators/test_typescript_test_naming.py +301 -0
  178. atdd/tester/validators/test_typescript_test_structure.py +84 -0
  179. atdd-0.2.1.dist-info/METADATA +221 -0
  180. atdd-0.2.1.dist-info/RECORD +184 -0
  181. atdd-0.2.1.dist-info/WHEEL +5 -0
  182. atdd-0.2.1.dist-info/entry_points.txt +2 -0
  183. atdd-0.2.1.dist-info/licenses/LICENSE +674 -0
  184. atdd-0.2.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,327 @@
1
+ ---
2
+ # SESSION METADATA (YAML frontmatter - machine-parseable)
3
+ #
4
+ # FIRST: Rename this conversation with /rename SESSION-{NN}-{slug}
5
+ #
6
+ session: "{NN}"
7
+ title: "{Title}"
8
+ date: "{YYYY-MM-DD}"
9
+ status: "INIT" # INIT | PLANNED | ACTIVE | BLOCKED | COMPLETE | OBSOLETE
10
+ branch: "{branch-name}"
11
+ type: "{type}" # implementation | migration | refactor | analysis | planning | cleanup | tracking
12
+ complexity: 3 # 1=Trivial, 2=Low, 3=Medium, 4=High, 5=Very High
13
+ archetypes:
14
+ - "{archetype}" # db | be | fe | contracts | wmbt | wagon | train | telemetry | migrations
15
+
16
+ # Scope definition
17
+ scope:
18
+ in:
19
+ - "{specific-deliverable-1}"
20
+ - "{specific-deliverable-2}"
21
+ out:
22
+ - "{explicitly-excluded-1}"
23
+ dependencies:
24
+ - "{SESSION-XX or external requirement}"
25
+
26
+ # ATDD Workflow Phase Tracking (MANDATORY)
27
+ # Sequence: Planner → Tester → Coder (see session.convention.yaml:workflow)
28
+ workflow_phases:
29
+ planner:
30
+ status: "TODO" # TODO | IN_PROGRESS | DONE | SKIPPED | N/A
31
+ artifacts:
32
+ train: false # plan/_trains.yaml updated
33
+ wagon: false # plan/{wagon}/_{wagon}.yaml exists
34
+ feature: false # plan/{wagon}/features/{feature}.yaml exists
35
+ wmbt: false # WMBTs defined in feature YAML
36
+ gate: "python3 -m pytest src/src/atdd/planner/validators/ -v"
37
+ gate_status: "TODO"
38
+
39
+ tester:
40
+ status: "TODO"
41
+ depends_on: "planner"
42
+ artifacts:
43
+ contracts: false # contracts/{domain}/{resource}.schema.json exists
44
+ red_tests: false # Failing tests exist for all WMBTs
45
+ gate: "python3 -m pytest src/src/atdd/tester/validators/ -v"
46
+ gate_status: "TODO"
47
+ red_gate: "pytest {test_path} -v (expect FAIL)"
48
+ red_gate_status: "TODO"
49
+
50
+ coder:
51
+ status: "TODO"
52
+ depends_on: "tester"
53
+ artifacts:
54
+ implementation: false # Code exists in {runtime}/{wagon}/{feature}/src/
55
+ gate: "python3 -m pytest src/atdd/coder/validators/ -v"
56
+ gate_status: "TODO"
57
+ green_gate: "pytest {test_path} -v (expect PASS)"
58
+ green_gate_status: "TODO"
59
+ refactor_gate: "python3 -m pytest src/atdd/coder/validators/ -v"
60
+ refactor_gate_status: "TODO"
61
+
62
+ # Progress tracking (machine-readable)
63
+ progress:
64
+ phases:
65
+ - id: "P1"
66
+ name: "{Phase-1-Name}"
67
+ status: "TODO" # TODO | IN_PROGRESS | DONE | BLOCKED | SKIPPED
68
+ gate: "{validation-command}"
69
+ - id: "P2"
70
+ name: "{Phase-2-Name}"
71
+ status: "TODO"
72
+ gate: "{validation-command}"
73
+
74
+ # WMBT tracking (for implementation sessions)
75
+ wmbt:
76
+ - id: "D001"
77
+ description: "{description}"
78
+ red: "TODO"
79
+ green: "TODO"
80
+ refactor: "TODO"
81
+ - id: "L001"
82
+ description: "{description}"
83
+ red: "TODO"
84
+ green: "TODO"
85
+ refactor: "TODO"
86
+
87
+ # ATDD phase summary
88
+ atdd:
89
+ red:
90
+ status: "TODO"
91
+ gate: "pytest {test-path} -v (expect FAIL)"
92
+ green:
93
+ status: "TODO"
94
+ gate: "pytest {test-path} -v (expect PASS)"
95
+ refactor:
96
+ status: "TODO"
97
+ gate: "pytest src/atdd/coder/validators/ -v"
98
+
99
+ # Gate Tests - Required validation gates with ATDD validators
100
+ # See: src/atdd/coach/conventions/session.convention.yaml for required gates per archetype
101
+ gate_tests:
102
+ # Universal gates (required for all sessions)
103
+ - id: "GT-001"
104
+ phase: "design"
105
+ archetype: "all"
106
+ command: "python3 -m pytest src/atdd/coach/validators/test_session_validation.py -v"
107
+ expected: "PASS"
108
+ atdd_validator: "src/atdd/coach/validators/test_session_validation.py"
109
+ status: "TODO"
110
+
111
+ # Archetype-specific gates (add based on declared archetypes)
112
+ # Example for 'be' archetype:
113
+ # - id: "GT-010"
114
+ # phase: "implementation"
115
+ # archetype: "be"
116
+ # command: "python3 -m pytest src/atdd/coder/validators/test_python_architecture.py -v"
117
+ # expected: "PASS"
118
+ # atdd_validator: "src/atdd/coder/validators/test_python_architecture.py"
119
+ # status: "TODO"
120
+
121
+ # Example for 'fe' archetype:
122
+ # - id: "GT-020"
123
+ # phase: "implementation"
124
+ # archetype: "fe"
125
+ # command: "python3 -m pytest src/atdd/coder/validators/test_typescript_architecture.py -v"
126
+ # expected: "PASS"
127
+ # atdd_validator: "src/atdd/coder/validators/test_typescript_architecture.py"
128
+ # status: "TODO"
129
+
130
+ # Completion gate (required for all sessions)
131
+ - id: "GT-900"
132
+ phase: "completion"
133
+ archetype: "all"
134
+ command: "python3 -m pytest src/atdd/ -v --tb=short"
135
+ expected: "PASS"
136
+ atdd_validator: "src/atdd/"
137
+ status: "TODO"
138
+
139
+ # Success criteria (checkboxes tracked here)
140
+ success_criteria:
141
+ - text: "{measurable-outcome-1}"
142
+ done: false
143
+ - text: "{measurable-outcome-2}"
144
+ done: false
145
+
146
+ # Decisions log
147
+ decisions:
148
+ - id: "Q1"
149
+ question: "{question-faced}"
150
+ decision: "{choice-made}"
151
+ rationale: "{why-this-choice}"
152
+
153
+ # Related references
154
+ related:
155
+ sessions:
156
+ - "{SESSION-XX}: {relationship-description}"
157
+ wmbt:
158
+ - "wmbt:{wagon}:{ID}"
159
+
160
+ # Artifacts produced
161
+ artifacts:
162
+ created: []
163
+ modified: []
164
+ deleted: []
165
+ ---
166
+
167
+ <!--
168
+ IMPLEMENTATION RULES:
169
+ 1. BEFORE creating/updating files: Identify existing patterns in codebase
170
+ 2. New files MUST follow conventions in atdd/*/conventions/*.yaml
171
+ 3. New files MUST match patterns of similar existing files
172
+ 4. When in doubt: find 2-3 similar files and replicate their structure
173
+ 5. NEVER introduce new patterns without explicit decision documented
174
+ 6. Validate: python3 -m pytest src/atdd/ -v --tb=short
175
+ -->
176
+
177
+ # SESSION-{NN}: {Title}
178
+
179
+ ## Context
180
+
181
+ ### Problem Statement
182
+
183
+ | Aspect | Current | Target | Issue |
184
+ |--------|---------|--------|-------|
185
+ | {aspect-1} | {current-state} | {target-state} | {why-it's-a-problem} |
186
+
187
+ ### User Impact
188
+
189
+ {How does this problem affect users, developers, or the system? Be specific.}
190
+
191
+ ### Root Cause
192
+
193
+ {Why does this problem exist? What architectural or design decisions led to it?}
194
+
195
+ ---
196
+
197
+ ## Architecture
198
+
199
+ ### Existing Patterns (MUST identify before implementation)
200
+
201
+ <!-- Search codebase for similar files and document patterns found -->
202
+
203
+ | Pattern | Example File | Convention |
204
+ |---------|--------------|------------|
205
+ | {layer-structure} | `python/{wagon}/src/domain/` | `atdd/coder/conventions/backend.convention.yaml` |
206
+ | {naming} | `test_{WMBT}_unit_{NNN}_{desc}.py` | `atdd/tester/conventions/filename.convention.yaml` |
207
+ | {imports} | `from .entities import X` | `atdd/coder/conventions/boundaries.convention.yaml` |
208
+
209
+ ### Conceptual Model
210
+
211
+ | Term | Definition | Example |
212
+ |------|------------|---------|
213
+ | {term-1} | {what-it-means} | {concrete-example} |
214
+
215
+ ### Before State
216
+
217
+ ```
218
+ {ascii-diagram or structure showing current state}
219
+ ```
220
+
221
+ ### After State
222
+
223
+ ```
224
+ {ascii-diagram or structure showing target state}
225
+ ```
226
+
227
+ ### Data Model
228
+
229
+ <!-- Include if archetypes includes: db -->
230
+
231
+ ```sql
232
+ -- Table/view definitions
233
+ CREATE TABLE IF NOT EXISTS public.{table_name} (
234
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
235
+ data JSONB NOT NULL,
236
+ created_at TIMESTAMPTZ DEFAULT NOW(),
237
+ updated_at TIMESTAMPTZ DEFAULT NOW()
238
+ );
239
+ ```
240
+
241
+ ---
242
+
243
+ ## Phases
244
+
245
+ ### Phase 1: {Name}
246
+
247
+ **Deliverables:**
248
+ - {artifact-path-1} - {what-it-does}
249
+ - {artifact-path-2} - {what-it-does}
250
+
251
+ **Files:**
252
+
253
+ | File | Change |
254
+ |------|--------|
255
+ | `{path/to/file}` | {description-of-change} |
256
+
257
+ ### Phase 2: {Name}
258
+
259
+ **Deliverables:**
260
+ - {artifact-path-1} - {what-it-does}
261
+
262
+ **Files:**
263
+
264
+ | File | Change |
265
+ |------|--------|
266
+ | `{path/to/file}` | {description-of-change} |
267
+
268
+ ---
269
+
270
+ ## Validation
271
+
272
+ ### Gate Tests (ATDD Validators)
273
+
274
+ <!--
275
+ Gate tests enforce conventions via ATDD validators.
276
+ Each declared archetype MUST have corresponding gate tests.
277
+ Reference: src/atdd/coach/conventions/session.convention.yaml
278
+ -->
279
+
280
+ | ID | Phase | Archetype | Command | Expected | ATDD Validator | Status |
281
+ |----|-------|-----------|---------|----------|----------------|--------|
282
+ | GT-001 | design | all | `python3 -m pytest src/atdd/coach/validators/test_session_validation.py -v` | PASS | `src/atdd/coach/validators/test_session_validation.py` | TODO |
283
+ | GT-010 | implementation | {archetype} | `{command}` | PASS | `{atdd_validator_path}` | TODO |
284
+ | GT-900 | completion | all | `python3 -m pytest src/atdd/ -v --tb=short` | PASS | `src/atdd/` | TODO |
285
+
286
+ ### Phase Gates
287
+
288
+ #### Gate 1: {Phase-1-Name}
289
+
290
+ ```bash
291
+ {validation-command-1}
292
+ ```
293
+
294
+ **Expected:** {expected-outcome}
295
+ **ATDD Validator:** `{atdd/scope/validators/test_file.py}`
296
+
297
+ #### Gate 2: {Phase-2-Name}
298
+
299
+ ```bash
300
+ {validation-command-2}
301
+ ```
302
+
303
+ **Expected:** {expected-outcome}
304
+ **ATDD Validator:** `{atdd/scope/validators/test_file.py}`
305
+
306
+ ---
307
+
308
+ ## Session Log
309
+
310
+ ### Session 1 ({YYYY-MM-DD}): {Focus}
311
+
312
+ **Completed:**
313
+ - {work-item-1}
314
+ - {work-item-2}
315
+
316
+ **Blocked:**
317
+ - {blocker-if-any}
318
+
319
+ **Next:**
320
+ - {next-action-1}
321
+ - {next-action-2}
322
+
323
+ ---
324
+
325
+ ## Notes
326
+
327
+ {Additional context, learnings, or decisions that don't fit elsewhere.}
File without changes
File without changes