atdd 0.1.0__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 (183) hide show
  1. atdd/__init__.py +0 -0
  2. atdd/cli.py +404 -0
  3. atdd/coach/__init__.py +0 -0
  4. atdd/coach/commands/__init__.py +0 -0
  5. atdd/coach/commands/add_persistence_metadata.py +215 -0
  6. atdd/coach/commands/analyze_migrations.py +188 -0
  7. atdd/coach/commands/consumers.py +720 -0
  8. atdd/coach/commands/infer_governance_status.py +149 -0
  9. atdd/coach/commands/initializer.py +177 -0
  10. atdd/coach/commands/interface.py +1078 -0
  11. atdd/coach/commands/inventory.py +565 -0
  12. atdd/coach/commands/migration.py +240 -0
  13. atdd/coach/commands/registry.py +1560 -0
  14. atdd/coach/commands/session.py +430 -0
  15. atdd/coach/commands/sync.py +405 -0
  16. atdd/coach/commands/test_interface.py +399 -0
  17. atdd/coach/commands/test_runner.py +141 -0
  18. atdd/coach/commands/tests/__init__.py +1 -0
  19. atdd/coach/commands/tests/test_telemetry_array_validation.py +235 -0
  20. atdd/coach/commands/traceability.py +4264 -0
  21. atdd/coach/conventions/session.convention.yaml +754 -0
  22. atdd/coach/overlays/__init__.py +2 -0
  23. atdd/coach/overlays/claude.md +2 -0
  24. atdd/coach/schemas/config.schema.json +34 -0
  25. atdd/coach/schemas/manifest.schema.json +101 -0
  26. atdd/coach/templates/ATDD.md +282 -0
  27. atdd/coach/templates/SESSION-TEMPLATE.md +327 -0
  28. atdd/coach/utils/__init__.py +0 -0
  29. atdd/coach/utils/graph/__init__.py +0 -0
  30. atdd/coach/utils/graph/urn.py +875 -0
  31. atdd/coach/validators/__init__.py +0 -0
  32. atdd/coach/validators/shared_fixtures.py +365 -0
  33. atdd/coach/validators/test_enrich_wagon_registry.py +167 -0
  34. atdd/coach/validators/test_registry.py +575 -0
  35. atdd/coach/validators/test_session_validation.py +1183 -0
  36. atdd/coach/validators/test_traceability.py +448 -0
  37. atdd/coach/validators/test_update_feature_paths.py +108 -0
  38. atdd/coach/validators/test_validate_contract_consumers.py +297 -0
  39. atdd/coder/__init__.py +1 -0
  40. atdd/coder/conventions/adapter.recipe.yaml +88 -0
  41. atdd/coder/conventions/backend.convention.yaml +460 -0
  42. atdd/coder/conventions/boundaries.convention.yaml +666 -0
  43. atdd/coder/conventions/commons.convention.yaml +460 -0
  44. atdd/coder/conventions/complexity.recipe.yaml +109 -0
  45. atdd/coder/conventions/component-naming.convention.yaml +178 -0
  46. atdd/coder/conventions/design.convention.yaml +327 -0
  47. atdd/coder/conventions/design.recipe.yaml +273 -0
  48. atdd/coder/conventions/dto.convention.yaml +660 -0
  49. atdd/coder/conventions/frontend.convention.yaml +542 -0
  50. atdd/coder/conventions/green.convention.yaml +1012 -0
  51. atdd/coder/conventions/presentation.convention.yaml +587 -0
  52. atdd/coder/conventions/refactor.convention.yaml +535 -0
  53. atdd/coder/conventions/technology.convention.yaml +206 -0
  54. atdd/coder/conventions/tests/__init__.py +0 -0
  55. atdd/coder/conventions/tests/test_adapter_recipe.py +302 -0
  56. atdd/coder/conventions/tests/test_complexity_recipe.py +289 -0
  57. atdd/coder/conventions/tests/test_component_taxonomy.py +278 -0
  58. atdd/coder/conventions/tests/test_component_urn_naming.py +165 -0
  59. atdd/coder/conventions/tests/test_thinness_recipe.py +286 -0
  60. atdd/coder/conventions/thinness.recipe.yaml +82 -0
  61. atdd/coder/conventions/train.convention.yaml +325 -0
  62. atdd/coder/conventions/verification.protocol.yaml +53 -0
  63. atdd/coder/schemas/design_system.schema.json +361 -0
  64. atdd/coder/validators/__init__.py +0 -0
  65. atdd/coder/validators/test_commons_structure.py +485 -0
  66. atdd/coder/validators/test_complexity.py +416 -0
  67. atdd/coder/validators/test_cross_language_consistency.py +431 -0
  68. atdd/coder/validators/test_design_system_compliance.py +413 -0
  69. atdd/coder/validators/test_dto_testing_patterns.py +268 -0
  70. atdd/coder/validators/test_green_cross_stack_layers.py +168 -0
  71. atdd/coder/validators/test_green_layer_dependencies.py +148 -0
  72. atdd/coder/validators/test_green_python_layer_structure.py +103 -0
  73. atdd/coder/validators/test_green_supabase_layer_structure.py +103 -0
  74. atdd/coder/validators/test_import_boundaries.py +396 -0
  75. atdd/coder/validators/test_init_file_urns.py +593 -0
  76. atdd/coder/validators/test_preact_layer_boundaries.py +221 -0
  77. atdd/coder/validators/test_presentation_convention.py +260 -0
  78. atdd/coder/validators/test_python_architecture.py +674 -0
  79. atdd/coder/validators/test_quality_metrics.py +420 -0
  80. atdd/coder/validators/test_station_master_pattern.py +244 -0
  81. atdd/coder/validators/test_train_infrastructure.py +454 -0
  82. atdd/coder/validators/test_train_urns.py +293 -0
  83. atdd/coder/validators/test_typescript_architecture.py +616 -0
  84. atdd/coder/validators/test_usecase_structure.py +421 -0
  85. atdd/coder/validators/test_wagon_boundaries.py +586 -0
  86. atdd/conftest.py +126 -0
  87. atdd/planner/__init__.py +1 -0
  88. atdd/planner/conventions/acceptance.convention.yaml +538 -0
  89. atdd/planner/conventions/appendix.convention.yaml +187 -0
  90. atdd/planner/conventions/artifact-naming.convention.yaml +852 -0
  91. atdd/planner/conventions/component.convention.yaml +670 -0
  92. atdd/planner/conventions/criteria.convention.yaml +141 -0
  93. atdd/planner/conventions/feature.convention.yaml +371 -0
  94. atdd/planner/conventions/interface.convention.yaml +382 -0
  95. atdd/planner/conventions/steps.convention.yaml +141 -0
  96. atdd/planner/conventions/train.convention.yaml +552 -0
  97. atdd/planner/conventions/wagon.convention.yaml +275 -0
  98. atdd/planner/conventions/wmbt.convention.yaml +258 -0
  99. atdd/planner/schemas/acceptance.schema.json +336 -0
  100. atdd/planner/schemas/appendix.schema.json +78 -0
  101. atdd/planner/schemas/component.schema.json +114 -0
  102. atdd/planner/schemas/feature.schema.json +197 -0
  103. atdd/planner/schemas/train.schema.json +192 -0
  104. atdd/planner/schemas/wagon.schema.json +281 -0
  105. atdd/planner/schemas/wmbt.schema.json +59 -0
  106. atdd/planner/validators/__init__.py +0 -0
  107. atdd/planner/validators/conftest.py +5 -0
  108. atdd/planner/validators/test_draft_wagon_registry.py +374 -0
  109. atdd/planner/validators/test_plan_cross_refs.py +240 -0
  110. atdd/planner/validators/test_plan_uniqueness.py +224 -0
  111. atdd/planner/validators/test_plan_urn_resolution.py +268 -0
  112. atdd/planner/validators/test_plan_wagons.py +174 -0
  113. atdd/planner/validators/test_train_validation.py +514 -0
  114. atdd/planner/validators/test_wagon_urn_chain.py +648 -0
  115. atdd/planner/validators/test_wmbt_consistency.py +327 -0
  116. atdd/planner/validators/test_wmbt_vocabulary.py +632 -0
  117. atdd/tester/__init__.py +1 -0
  118. atdd/tester/conventions/artifact.convention.yaml +257 -0
  119. atdd/tester/conventions/contract.convention.yaml +1009 -0
  120. atdd/tester/conventions/filename.convention.yaml +555 -0
  121. atdd/tester/conventions/migration.convention.yaml +509 -0
  122. atdd/tester/conventions/red.convention.yaml +797 -0
  123. atdd/tester/conventions/routing.convention.yaml +51 -0
  124. atdd/tester/conventions/telemetry.convention.yaml +458 -0
  125. atdd/tester/schemas/a11y.tmpl.json +17 -0
  126. atdd/tester/schemas/artifact.schema.json +189 -0
  127. atdd/tester/schemas/contract.schema.json +591 -0
  128. atdd/tester/schemas/contract.tmpl.json +95 -0
  129. atdd/tester/schemas/db.tmpl.json +20 -0
  130. atdd/tester/schemas/e2e.tmpl.json +17 -0
  131. atdd/tester/schemas/edge_function.tmpl.json +17 -0
  132. atdd/tester/schemas/event.tmpl.json +17 -0
  133. atdd/tester/schemas/http.tmpl.json +19 -0
  134. atdd/tester/schemas/job.tmpl.json +18 -0
  135. atdd/tester/schemas/load.tmpl.json +21 -0
  136. atdd/tester/schemas/metric.tmpl.json +19 -0
  137. atdd/tester/schemas/pack.schema.json +139 -0
  138. atdd/tester/schemas/realtime.tmpl.json +20 -0
  139. atdd/tester/schemas/rls.tmpl.json +18 -0
  140. atdd/tester/schemas/script.tmpl.json +16 -0
  141. atdd/tester/schemas/sec.tmpl.json +18 -0
  142. atdd/tester/schemas/storage.tmpl.json +18 -0
  143. atdd/tester/schemas/telemetry.schema.json +128 -0
  144. atdd/tester/schemas/telemetry_tracking_manifest.schema.json +143 -0
  145. atdd/tester/schemas/test_filename.schema.json +194 -0
  146. atdd/tester/schemas/test_intent.schema.json +179 -0
  147. atdd/tester/schemas/unit.tmpl.json +18 -0
  148. atdd/tester/schemas/visual.tmpl.json +18 -0
  149. atdd/tester/schemas/ws.tmpl.json +17 -0
  150. atdd/tester/utils/__init__.py +0 -0
  151. atdd/tester/utils/filename.py +300 -0
  152. atdd/tester/validators/__init__.py +0 -0
  153. atdd/tester/validators/cleanup_duplicate_headers.py +116 -0
  154. atdd/tester/validators/cleanup_duplicate_headers_v2.py +135 -0
  155. atdd/tester/validators/conftest.py +5 -0
  156. atdd/tester/validators/coverage_gap_report.py +321 -0
  157. atdd/tester/validators/fix_dual_ac_references.py +179 -0
  158. atdd/tester/validators/remove_duplicate_lines.py +93 -0
  159. atdd/tester/validators/test_acceptance_urn_filename_mapping.py +359 -0
  160. atdd/tester/validators/test_acceptance_urn_separator.py +166 -0
  161. atdd/tester/validators/test_artifact_naming_category.py +307 -0
  162. atdd/tester/validators/test_contract_schema_compliance.py +706 -0
  163. atdd/tester/validators/test_contracts_structure.py +200 -0
  164. atdd/tester/validators/test_coverage_adequacy.py +797 -0
  165. atdd/tester/validators/test_dual_ac_reference.py +225 -0
  166. atdd/tester/validators/test_fixture_validity.py +372 -0
  167. atdd/tester/validators/test_isolation.py +487 -0
  168. atdd/tester/validators/test_migration_coverage.py +204 -0
  169. atdd/tester/validators/test_migration_criteria.py +276 -0
  170. atdd/tester/validators/test_migration_generation.py +116 -0
  171. atdd/tester/validators/test_python_test_naming.py +410 -0
  172. atdd/tester/validators/test_red_layer_validation.py +95 -0
  173. atdd/tester/validators/test_red_python_layer_structure.py +87 -0
  174. atdd/tester/validators/test_red_supabase_layer_structure.py +90 -0
  175. atdd/tester/validators/test_telemetry_structure.py +634 -0
  176. atdd/tester/validators/test_typescript_test_naming.py +301 -0
  177. atdd/tester/validators/test_typescript_test_structure.py +84 -0
  178. atdd-0.1.0.dist-info/METADATA +191 -0
  179. atdd-0.1.0.dist-info/RECORD +183 -0
  180. atdd-0.1.0.dist-info/WHEEL +5 -0
  181. atdd-0.1.0.dist-info/entry_points.txt +2 -0
  182. atdd-0.1.0.dist-info/licenses/LICENSE +674 -0
  183. atdd-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,361 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://wagons.dev/schemas/coder/design_system.schema.json",
4
+ "title": "Design System Manifest",
5
+ "description": "Schema for design system manifest and component metadata",
6
+ "type": "object",
7
+ "required": ["version", "name", "layers"],
8
+ "properties": {
9
+ "version": {
10
+ "type": "string",
11
+ "pattern": "^\\d+\\.\\d+\\.\\d+$",
12
+ "description": "Semantic version of design system"
13
+ },
14
+ "name": {
15
+ "type": "string",
16
+ "description": "Design system name",
17
+ "default": "design_system"
18
+ },
19
+ "description": {
20
+ "type": "string",
21
+ "description": "Brief description of design system purpose"
22
+ },
23
+ "created_at": {
24
+ "type": "string",
25
+ "format": "date-time",
26
+ "description": "When design system was first created"
27
+ },
28
+ "last_updated": {
29
+ "type": "string",
30
+ "format": "date-time",
31
+ "description": "Last time design system was modified"
32
+ },
33
+ "layers": {
34
+ "type": "object",
35
+ "required": ["tokens", "primitives", "components", "templates"],
36
+ "properties": {
37
+ "tokens": {
38
+ "$ref": "#/definitions/tokenLayer"
39
+ },
40
+ "primitives": {
41
+ "$ref": "#/definitions/primitiveLayer"
42
+ },
43
+ "components": {
44
+ "$ref": "#/definitions/componentLayer"
45
+ },
46
+ "templates": {
47
+ "$ref": "#/definitions/templateLayer"
48
+ }
49
+ }
50
+ },
51
+ "metrics": {
52
+ "type": "object",
53
+ "description": "Design system usage metrics",
54
+ "properties": {
55
+ "coverage": {
56
+ "type": "number",
57
+ "minimum": 0,
58
+ "maximum": 100,
59
+ "description": "Percentage of wagons using design system"
60
+ },
61
+ "avg_component_reuse": {
62
+ "type": "number",
63
+ "minimum": 0,
64
+ "description": "Average number of wagons using each component"
65
+ },
66
+ "hardcoded_density": {
67
+ "type": "number",
68
+ "minimum": 0,
69
+ "maximum": 100,
70
+ "description": "Percentage of UI files with hardcoded values"
71
+ }
72
+ }
73
+ }
74
+ },
75
+ "definitions": {
76
+ "tokenLayer": {
77
+ "type": "object",
78
+ "description": "Design tokens (spacing, radii, motion)",
79
+ "properties": {
80
+ "spacing": {
81
+ "type": "array",
82
+ "items": {
83
+ "$ref": "#/definitions/token"
84
+ },
85
+ "description": "Spacing scale tokens"
86
+ },
87
+ "radii": {
88
+ "type": "array",
89
+ "items": {
90
+ "$ref": "#/definitions/token"
91
+ },
92
+ "description": "Border radius tokens"
93
+ },
94
+ "motion": {
95
+ "type": "array",
96
+ "items": {
97
+ "$ref": "#/definitions/token"
98
+ },
99
+ "description": "Animation duration tokens"
100
+ }
101
+ }
102
+ },
103
+ "token": {
104
+ "type": "object",
105
+ "required": ["name", "value"],
106
+ "properties": {
107
+ "name": {
108
+ "type": "string",
109
+ "pattern": "^[a-z]+$",
110
+ "description": "Token name (e.g., 's', 'm', 'l')",
111
+ "enum": ["xxs", "xs", "s", "m", "l", "xl", "xxl", "fast", "base", "slow"]
112
+ },
113
+ "value": {
114
+ "description": "Token value (numeric for spacing/radii, duration for motion)"
115
+ },
116
+ "unit": {
117
+ "type": "string",
118
+ "enum": ["px", "dp", "ms"],
119
+ "description": "Value unit"
120
+ },
121
+ "description": {
122
+ "type": "string",
123
+ "description": "Token usage description"
124
+ }
125
+ }
126
+ },
127
+ "primitiveLayer": {
128
+ "type": "object",
129
+ "description": "Primitive components (AppBox, AppText, AppIcon)",
130
+ "properties": {
131
+ "primitives": {
132
+ "type": "array",
133
+ "items": {
134
+ "$ref": "#/definitions/primitive"
135
+ }
136
+ }
137
+ }
138
+ },
139
+ "primitive": {
140
+ "type": "object",
141
+ "required": ["name", "file_path", "abstraction_of"],
142
+ "properties": {
143
+ "name": {
144
+ "type": "string",
145
+ "pattern": "^App[A-Z][a-zA-Z]*$",
146
+ "description": "Primitive name (e.g., AppBox, AppText)"
147
+ },
148
+ "file_path": {
149
+ "type": "string",
150
+ "pattern": ".*_primitive\\.dart$",
151
+ "description": "Relative file path from design_system/"
152
+ },
153
+ "abstraction_of": {
154
+ "type": "string",
155
+ "enum": ["Container", "Text", "Icon", "SizedBox", "Row", "Column", "Stack"],
156
+ "description": "Flutter widget being abstracted"
157
+ },
158
+ "description": {
159
+ "type": "string",
160
+ "description": "What this primitive provides"
161
+ },
162
+ "dependencies": {
163
+ "type": "object",
164
+ "properties": {
165
+ "tokens": {
166
+ "type": "array",
167
+ "items": {
168
+ "type": "string"
169
+ },
170
+ "description": "Token files imported"
171
+ },
172
+ "primitives": {
173
+ "type": "array",
174
+ "items": {
175
+ "type": "string"
176
+ },
177
+ "description": "Other primitives imported (rarely needed)"
178
+ }
179
+ }
180
+ },
181
+ "created_at": {
182
+ "type": "string",
183
+ "format": "date-time"
184
+ }
185
+ }
186
+ },
187
+ "componentLayer": {
188
+ "type": "object",
189
+ "description": "Composed components (AppButton, AppTextField)",
190
+ "properties": {
191
+ "components": {
192
+ "type": "array",
193
+ "items": {
194
+ "$ref": "#/definitions/component"
195
+ }
196
+ }
197
+ }
198
+ },
199
+ "component": {
200
+ "type": "object",
201
+ "required": ["name", "file_path", "composed_from"],
202
+ "properties": {
203
+ "name": {
204
+ "type": "string",
205
+ "pattern": "^App[A-Z][a-zA-Z]*$",
206
+ "description": "Component name (e.g., AppButton, AppTextField)"
207
+ },
208
+ "file_path": {
209
+ "type": "string",
210
+ "pattern": ".*_component\\.dart$",
211
+ "description": "Relative file path from design_system/"
212
+ },
213
+ "composed_from": {
214
+ "type": "array",
215
+ "items": {
216
+ "type": "string"
217
+ },
218
+ "description": "Primitives used to build this component",
219
+ "minItems": 1
220
+ },
221
+ "variants": {
222
+ "type": "array",
223
+ "items": {
224
+ "type": "string"
225
+ },
226
+ "description": "Available component variants (e.g., primary, secondary)"
227
+ },
228
+ "sizes": {
229
+ "type": "array",
230
+ "items": {
231
+ "type": "string",
232
+ "enum": ["sm", "md", "lg"]
233
+ },
234
+ "description": "Available component sizes"
235
+ },
236
+ "description": {
237
+ "type": "string",
238
+ "description": "What this component provides"
239
+ },
240
+ "dependencies": {
241
+ "type": "object",
242
+ "properties": {
243
+ "tokens": {
244
+ "type": "array",
245
+ "items": {
246
+ "type": "string"
247
+ }
248
+ },
249
+ "primitives": {
250
+ "type": "array",
251
+ "items": {
252
+ "type": "string"
253
+ }
254
+ },
255
+ "components": {
256
+ "type": "array",
257
+ "items": {
258
+ "type": "string"
259
+ },
260
+ "description": "Other components (for complex components)"
261
+ }
262
+ }
263
+ },
264
+ "usage_count": {
265
+ "type": "integer",
266
+ "minimum": 0,
267
+ "description": "Number of wagons using this component"
268
+ },
269
+ "used_by": {
270
+ "type": "array",
271
+ "items": {
272
+ "type": "string"
273
+ },
274
+ "description": "List of wagons using this component"
275
+ },
276
+ "created_at": {
277
+ "type": "string",
278
+ "format": "date-time"
279
+ }
280
+ }
281
+ },
282
+ "templateLayer": {
283
+ "type": "object",
284
+ "description": "UI pattern templates (EmptyState, ListWithFilter)",
285
+ "properties": {
286
+ "templates": {
287
+ "type": "array",
288
+ "items": {
289
+ "$ref": "#/definitions/template"
290
+ }
291
+ }
292
+ }
293
+ },
294
+ "template": {
295
+ "type": "object",
296
+ "required": ["name", "file_path", "pattern", "composed_from"],
297
+ "properties": {
298
+ "name": {
299
+ "type": "string",
300
+ "description": "Template name (e.g., EmptyState, ListWithFilter)"
301
+ },
302
+ "file_path": {
303
+ "type": "string",
304
+ "pattern": ".*_template\\.dart$",
305
+ "description": "Relative file path from design_system/"
306
+ },
307
+ "pattern": {
308
+ "type": "string",
309
+ "description": "UI pattern description (e.g., 'Icon + Title + Description + Action')"
310
+ },
311
+ "composed_from": {
312
+ "type": "object",
313
+ "properties": {
314
+ "components": {
315
+ "type": "array",
316
+ "items": {
317
+ "type": "string"
318
+ },
319
+ "description": "Components used in template"
320
+ },
321
+ "primitives": {
322
+ "type": "array",
323
+ "items": {
324
+ "type": "string"
325
+ },
326
+ "description": "Primitives used in template (for layout)"
327
+ }
328
+ },
329
+ "required": ["components"]
330
+ },
331
+ "configurable_props": {
332
+ "type": "array",
333
+ "items": {
334
+ "type": "string"
335
+ },
336
+ "description": "Configurable template properties"
337
+ },
338
+ "description": {
339
+ "type": "string",
340
+ "description": "What this template provides"
341
+ },
342
+ "usage_count": {
343
+ "type": "integer",
344
+ "minimum": 0,
345
+ "description": "Number of wagons using this template"
346
+ },
347
+ "used_by": {
348
+ "type": "array",
349
+ "items": {
350
+ "type": "string"
351
+ },
352
+ "description": "List of wagons using this template"
353
+ },
354
+ "created_at": {
355
+ "type": "string",
356
+ "format": "date-time"
357
+ }
358
+ }
359
+ }
360
+ }
361
+ }
File without changes