atdd 0.3.2__tar.gz → 0.4.0__tar.gz

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 (195) hide show
  1. {atdd-0.3.2/src/atdd.egg-info → atdd-0.4.0}/PKG-INFO +41 -12
  2. {atdd-0.3.2 → atdd-0.4.0}/README.md +40 -11
  3. {atdd-0.3.2 → atdd-0.4.0}/pyproject.toml +1 -1
  4. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/cli.py +229 -78
  5. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/commands/add_persistence_metadata.py +3 -1
  6. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/commands/infer_governance_status.py +3 -1
  7. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/commands/initializer.py +10 -0
  8. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/commands/interface.py +3 -1
  9. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/commands/inventory.py +2 -2
  10. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/commands/migration.py +11 -6
  11. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/commands/sync.py +7 -0
  12. atdd-0.4.0/src/atdd/coach/commands/test_runner.py +180 -0
  13. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/commands/traceability.py +3 -1
  14. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/conventions/session.convention.yaml +26 -26
  15. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/templates/ATDD.md +15 -15
  16. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/templates/SESSION-TEMPLATE.md +12 -12
  17. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/utils/repo.py +24 -8
  18. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/validators/shared_fixtures.py +8 -3
  19. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/validators/test_session_validation.py +4 -4
  20. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/tests/test_component_taxonomy.py +4 -3
  21. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/tests/test_component_urn_naming.py +3 -1
  22. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/validators/test_commons_structure.py +3 -1
  23. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/validators/test_complexity.py +3 -1
  24. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/validators/test_cross_language_consistency.py +3 -1
  25. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/validators/test_design_system_compliance.py +3 -1
  26. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/validators/test_dto_testing_patterns.py +4 -2
  27. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/validators/test_green_cross_stack_layers.py +3 -1
  28. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/validators/test_green_layer_dependencies.py +3 -1
  29. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/validators/test_green_python_layer_structure.py +3 -1
  30. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/validators/test_green_supabase_layer_structure.py +2 -1
  31. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/validators/test_import_boundaries.py +3 -1
  32. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/validators/test_init_file_urns.py +3 -1
  33. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/validators/test_preact_layer_boundaries.py +3 -1
  34. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/validators/test_presentation_convention.py +3 -1
  35. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/validators/test_python_architecture.py +3 -1
  36. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/validators/test_quality_metrics.py +2 -1
  37. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/validators/test_station_master_pattern.py +4 -2
  38. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/validators/test_train_infrastructure.py +3 -1
  39. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/validators/test_train_urns.py +3 -1
  40. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/validators/test_typescript_architecture.py +3 -1
  41. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/validators/test_usecase_structure.py +3 -1
  42. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/validators/test_wagon_boundaries.py +2 -1
  43. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/validators/test_plan_urn_resolution.py +3 -1
  44. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/validators/test_wagon_urn_chain.py +3 -1
  45. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/validators/test_wmbt_consistency.py +3 -1
  46. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/validators/test_wmbt_vocabulary.py +2 -1
  47. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/conventions/contract.convention.yaml +1 -1
  48. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/conventions/migration.convention.yaml +5 -5
  49. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/cleanup_duplicate_headers.py +3 -1
  50. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/cleanup_duplicate_headers_v2.py +3 -1
  51. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/coverage_gap_report.py +3 -1
  52. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/fix_dual_ac_references.py +3 -1
  53. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/remove_duplicate_lines.py +3 -1
  54. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/test_acceptance_urn_filename_mapping.py +3 -1
  55. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/test_acceptance_urn_separator.py +3 -1
  56. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/test_contract_schema_compliance.py +3 -1
  57. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/test_contracts_structure.py +3 -1
  58. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/test_coverage_adequacy.py +3 -1
  59. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/test_dual_ac_reference.py +3 -1
  60. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/test_fixture_validity.py +2 -1
  61. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/test_isolation.py +3 -1
  62. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/test_migration_coverage.py +4 -2
  63. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/test_migration_generation.py +3 -1
  64. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/test_python_test_naming.py +3 -1
  65. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/test_red_layer_validation.py +2 -1
  66. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/test_red_python_layer_structure.py +2 -1
  67. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/test_red_supabase_layer_structure.py +3 -1
  68. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/test_telemetry_structure.py +3 -1
  69. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/version_check.py +111 -3
  70. {atdd-0.3.2 → atdd-0.4.0/src/atdd.egg-info}/PKG-INFO +41 -12
  71. atdd-0.3.2/src/atdd/coach/commands/test_runner.py +0 -141
  72. {atdd-0.3.2 → atdd-0.4.0}/LICENSE +0 -0
  73. {atdd-0.3.2 → atdd-0.4.0}/setup.cfg +0 -0
  74. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/__init__.py +0 -0
  75. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/__main__.py +0 -0
  76. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/__init__.py +0 -0
  77. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/commands/__init__.py +0 -0
  78. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/commands/analyze_migrations.py +0 -0
  79. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/commands/consumers.py +0 -0
  80. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/commands/gate.py +0 -0
  81. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/commands/registry.py +0 -0
  82. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/commands/session.py +0 -0
  83. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/commands/test_interface.py +0 -0
  84. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/commands/tests/__init__.py +0 -0
  85. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/commands/tests/test_telemetry_array_validation.py +0 -0
  86. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/overlays/__init__.py +0 -0
  87. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/overlays/claude.md +0 -0
  88. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/schemas/config.schema.json +0 -0
  89. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/schemas/manifest.schema.json +0 -0
  90. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/utils/__init__.py +0 -0
  91. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/utils/graph/__init__.py +0 -0
  92. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/utils/graph/urn.py +0 -0
  93. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/validators/__init__.py +0 -0
  94. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/validators/test_enrich_wagon_registry.py +0 -0
  95. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/validators/test_registry.py +0 -0
  96. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/validators/test_traceability.py +0 -0
  97. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/validators/test_update_feature_paths.py +0 -0
  98. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coach/validators/test_validate_contract_consumers.py +0 -0
  99. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/__init__.py +0 -0
  100. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/adapter.recipe.yaml +0 -0
  101. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/backend.convention.yaml +0 -0
  102. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/boundaries.convention.yaml +0 -0
  103. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/commons.convention.yaml +0 -0
  104. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/complexity.recipe.yaml +0 -0
  105. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/component-naming.convention.yaml +0 -0
  106. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/design.convention.yaml +0 -0
  107. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/design.recipe.yaml +0 -0
  108. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/dto.convention.yaml +0 -0
  109. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/frontend.convention.yaml +0 -0
  110. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/green.convention.yaml +0 -0
  111. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/presentation.convention.yaml +0 -0
  112. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/refactor.convention.yaml +0 -0
  113. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/technology.convention.yaml +0 -0
  114. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/tests/__init__.py +0 -0
  115. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/tests/test_adapter_recipe.py +0 -0
  116. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/tests/test_complexity_recipe.py +0 -0
  117. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/tests/test_thinness_recipe.py +0 -0
  118. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/thinness.recipe.yaml +0 -0
  119. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/train.convention.yaml +0 -0
  120. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/conventions/verification.protocol.yaml +0 -0
  121. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/schemas/design_system.schema.json +0 -0
  122. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/coder/validators/__init__.py +0 -0
  123. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/conftest.py +0 -0
  124. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/__init__.py +0 -0
  125. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/conventions/acceptance.convention.yaml +0 -0
  126. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/conventions/appendix.convention.yaml +0 -0
  127. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/conventions/artifact-naming.convention.yaml +0 -0
  128. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/conventions/component.convention.yaml +0 -0
  129. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/conventions/criteria.convention.yaml +0 -0
  130. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/conventions/feature.convention.yaml +0 -0
  131. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/conventions/interface.convention.yaml +0 -0
  132. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/conventions/steps.convention.yaml +0 -0
  133. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/conventions/train.convention.yaml +0 -0
  134. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/conventions/wagon.convention.yaml +0 -0
  135. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/conventions/wmbt.convention.yaml +0 -0
  136. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/schemas/acceptance.schema.json +0 -0
  137. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/schemas/appendix.schema.json +0 -0
  138. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/schemas/component.schema.json +0 -0
  139. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/schemas/feature.schema.json +0 -0
  140. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/schemas/train.schema.json +0 -0
  141. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/schemas/wagon.schema.json +0 -0
  142. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/schemas/wmbt.schema.json +0 -0
  143. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/validators/__init__.py +0 -0
  144. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/validators/conftest.py +0 -0
  145. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/validators/test_draft_wagon_registry.py +0 -0
  146. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/validators/test_plan_cross_refs.py +0 -0
  147. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/validators/test_plan_uniqueness.py +0 -0
  148. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/validators/test_plan_wagons.py +0 -0
  149. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/planner/validators/test_train_validation.py +0 -0
  150. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/__init__.py +0 -0
  151. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/conventions/artifact.convention.yaml +0 -0
  152. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/conventions/filename.convention.yaml +0 -0
  153. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/conventions/red.convention.yaml +0 -0
  154. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/conventions/routing.convention.yaml +0 -0
  155. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/conventions/security.convention.yaml +0 -0
  156. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/conventions/telemetry.convention.yaml +0 -0
  157. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/a11y.tmpl.json +0 -0
  158. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/artifact.schema.json +0 -0
  159. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/contract.schema.json +0 -0
  160. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/contract.tmpl.json +0 -0
  161. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/db.tmpl.json +0 -0
  162. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/e2e.tmpl.json +0 -0
  163. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/edge_function.tmpl.json +0 -0
  164. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/event.tmpl.json +0 -0
  165. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/http.tmpl.json +0 -0
  166. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/job.tmpl.json +0 -0
  167. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/load.tmpl.json +0 -0
  168. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/metric.tmpl.json +0 -0
  169. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/pack.schema.json +0 -0
  170. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/realtime.tmpl.json +0 -0
  171. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/rls.tmpl.json +0 -0
  172. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/script.tmpl.json +0 -0
  173. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/sec.tmpl.json +0 -0
  174. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/storage.tmpl.json +0 -0
  175. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/telemetry.schema.json +0 -0
  176. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/telemetry_tracking_manifest.schema.json +0 -0
  177. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/test_filename.schema.json +0 -0
  178. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/test_intent.schema.json +0 -0
  179. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/unit.tmpl.json +0 -0
  180. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/visual.tmpl.json +0 -0
  181. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/schemas/ws.tmpl.json +0 -0
  182. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/utils/__init__.py +0 -0
  183. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/utils/filename.py +0 -0
  184. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/__init__.py +0 -0
  185. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/conftest.py +0 -0
  186. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/test_artifact_naming_category.py +0 -0
  187. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/test_contract_security.py +0 -0
  188. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/test_migration_criteria.py +0 -0
  189. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/test_typescript_test_naming.py +0 -0
  190. {atdd-0.3.2 → atdd-0.4.0}/src/atdd/tester/validators/test_typescript_test_structure.py +0 -0
  191. {atdd-0.3.2 → atdd-0.4.0}/src/atdd.egg-info/SOURCES.txt +0 -0
  192. {atdd-0.3.2 → atdd-0.4.0}/src/atdd.egg-info/dependency_links.txt +0 -0
  193. {atdd-0.3.2 → atdd-0.4.0}/src/atdd.egg-info/entry_points.txt +0 -0
  194. {atdd-0.3.2 → atdd-0.4.0}/src/atdd.egg-info/requires.txt +0 -0
  195. {atdd-0.3.2 → atdd-0.4.0}/src/atdd.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atdd
3
- Version: 0.3.2
3
+ Version: 0.4.0
4
4
  Summary: ATDD Platform - Acceptance Test Driven Development toolkit
5
5
  License: MIT
6
6
  Requires-Python: >=3.10
@@ -16,6 +16,15 @@ Dynamic: license-file
16
16
 
17
17
  Acceptance Test Driven Development toolkit for structured planning and convention enforcement.
18
18
 
19
+ ATDD covers the full software lifecycle, not just code. It starts from a job to be done (e.g., user problem or goal), turns it into deterministic requirements, validates them with tests, and then drives implementation.
20
+
21
+ ```mermaid
22
+ flowchart LR
23
+ A[Job to be Done] -->|Planner| B[Wagon + Acceptance Criteria]
24
+ B -->|Tester| C[RED Tests]
25
+ C -->|Coder| D[GREEN Code]
26
+ ```
27
+
19
28
  ## Installation
20
29
 
21
30
  ### From PyPI
@@ -49,9 +58,9 @@ atdd --help
49
58
  ```bash
50
59
  atdd init # Initialize ATDD in your project
51
60
  atdd gate # ⚠️ START EVERY SESSION WITH THIS
52
- atdd session new my-feature # Create a planning session
61
+ atdd session new <capability> # Create a planning session
53
62
  atdd sync # Sync rules to agent config files
54
- atdd --test all # Run validators
63
+ atdd validate # Run all validators
55
64
  ```
56
65
 
57
66
  > **⚠️ `atdd gate` is required.**
@@ -67,6 +76,22 @@ ATDD provides:
67
76
  3. **ATDD Lifecycle** - Planner → Tester → Coder phase gates
68
77
  4. **Agent Config Sync** - Keep ATDD rules in sync across AI agent config files
69
78
 
79
+ ```mermaid
80
+ flowchart LR
81
+ A[Job to be Done] -->|Planner| B[Wagon + Acceptance Criteria]
82
+ B -->|Tester| C[RED Tests]
83
+ C -->|Coder| D[GREEN Code]
84
+ D -->|Coder| E[REFACTOR]
85
+ E -.->|feedback| B
86
+
87
+ subgraph "ATDD Lifecycle"
88
+ B
89
+ C
90
+ D
91
+ E
92
+ end
93
+ ```
94
+
70
95
  ## Commands
71
96
 
72
97
  ### Project Initialization
@@ -196,19 +221,23 @@ Before starting work, confirm you have loaded these rules.
196
221
  ### Validation
197
222
 
198
223
  ```bash
199
- atdd --test all # Run all validators
200
- atdd --test planner # Planning artifacts only
201
- atdd --test tester # Testing artifacts only
202
- atdd --test coder # Implementation only
203
- atdd --quick # Fast smoke test
224
+ atdd validate # Run all validators
225
+ atdd validate planner # Planning validators only
226
+ atdd validate tester # Testing validators only
227
+ atdd validate coder # Implementation validators only
228
+ atdd validate --quick # Fast smoke test
229
+ atdd validate --coverage # With coverage report
230
+ atdd validate --html # With HTML report
204
231
  ```
205
232
 
206
233
  ### Other Commands
207
234
 
208
235
  ```bash
209
- atdd --status # Platform status
210
- atdd --inventory # Generate artifact inventory
211
- atdd --help # Full help
236
+ atdd status # Platform status
237
+ atdd inventory # Generate artifact inventory
238
+ atdd inventory --format json # Inventory as JSON
239
+ atdd registry update # Update all registries
240
+ atdd --help # Full help
212
241
  ```
213
242
 
214
243
  ## Project Structure
@@ -264,7 +293,7 @@ pytest --cov=atdd --cov-report=html
264
293
 
265
294
  1. Create `src/atdd/{phase}/validators/test_{name}.py`
266
295
  2. Write pytest test functions
267
- 3. Run `atdd --test {phase}`
296
+ 3. Run `atdd validate {phase}`
268
297
 
269
298
  Validators are auto-discovered by pytest.
270
299
 
@@ -2,6 +2,15 @@
2
2
 
3
3
  Acceptance Test Driven Development toolkit for structured planning and convention enforcement.
4
4
 
5
+ ATDD covers the full software lifecycle, not just code. It starts from a job to be done (e.g., user problem or goal), turns it into deterministic requirements, validates them with tests, and then drives implementation.
6
+
7
+ ```mermaid
8
+ flowchart LR
9
+ A[Job to be Done] -->|Planner| B[Wagon + Acceptance Criteria]
10
+ B -->|Tester| C[RED Tests]
11
+ C -->|Coder| D[GREEN Code]
12
+ ```
13
+
5
14
  ## Installation
6
15
 
7
16
  ### From PyPI
@@ -35,9 +44,9 @@ atdd --help
35
44
  ```bash
36
45
  atdd init # Initialize ATDD in your project
37
46
  atdd gate # ⚠️ START EVERY SESSION WITH THIS
38
- atdd session new my-feature # Create a planning session
47
+ atdd session new <capability> # Create a planning session
39
48
  atdd sync # Sync rules to agent config files
40
- atdd --test all # Run validators
49
+ atdd validate # Run all validators
41
50
  ```
42
51
 
43
52
  > **⚠️ `atdd gate` is required.**
@@ -53,6 +62,22 @@ ATDD provides:
53
62
  3. **ATDD Lifecycle** - Planner → Tester → Coder phase gates
54
63
  4. **Agent Config Sync** - Keep ATDD rules in sync across AI agent config files
55
64
 
65
+ ```mermaid
66
+ flowchart LR
67
+ A[Job to be Done] -->|Planner| B[Wagon + Acceptance Criteria]
68
+ B -->|Tester| C[RED Tests]
69
+ C -->|Coder| D[GREEN Code]
70
+ D -->|Coder| E[REFACTOR]
71
+ E -.->|feedback| B
72
+
73
+ subgraph "ATDD Lifecycle"
74
+ B
75
+ C
76
+ D
77
+ E
78
+ end
79
+ ```
80
+
56
81
  ## Commands
57
82
 
58
83
  ### Project Initialization
@@ -182,19 +207,23 @@ Before starting work, confirm you have loaded these rules.
182
207
  ### Validation
183
208
 
184
209
  ```bash
185
- atdd --test all # Run all validators
186
- atdd --test planner # Planning artifacts only
187
- atdd --test tester # Testing artifacts only
188
- atdd --test coder # Implementation only
189
- atdd --quick # Fast smoke test
210
+ atdd validate # Run all validators
211
+ atdd validate planner # Planning validators only
212
+ atdd validate tester # Testing validators only
213
+ atdd validate coder # Implementation validators only
214
+ atdd validate --quick # Fast smoke test
215
+ atdd validate --coverage # With coverage report
216
+ atdd validate --html # With HTML report
190
217
  ```
191
218
 
192
219
  ### Other Commands
193
220
 
194
221
  ```bash
195
- atdd --status # Platform status
196
- atdd --inventory # Generate artifact inventory
197
- atdd --help # Full help
222
+ atdd status # Platform status
223
+ atdd inventory # Generate artifact inventory
224
+ atdd inventory --format json # Inventory as JSON
225
+ atdd registry update # Update all registries
226
+ atdd --help # Full help
198
227
  ```
199
228
 
200
229
  ## Project Structure
@@ -250,7 +279,7 @@ pytest --cov=atdd --cov-report=html
250
279
 
251
280
  1. Create `src/atdd/{phase}/validators/test_{name}.py`
252
281
  2. Write pytest test functions
253
- 3. Run `atdd --test {phase}`
282
+ 3. Run `atdd validate {phase}`
254
283
 
255
284
  Validators are auto-discovered by pytest.
256
285
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "atdd"
7
- version = "0.3.2"
7
+ version = "0.4.0"
8
8
  description = "ATDD Platform - Acceptance Test Driven Development toolkit"
9
9
  requires-python = ">=3.10"
10
10
  readme = "README.md"
@@ -3,14 +3,14 @@
3
3
  ATDD Platform - Unified command-line interface.
4
4
 
5
5
  The coach orchestrates all ATDD lifecycle operations:
6
- - Inventory: Catalog repository artifacts
7
- - Test: Run meta-tests (planner/tester/coder)
8
- - Report: Generate test reports
9
- - Validate: Validate artifacts against conventions
10
- - Init: Initialize ATDD structure in consumer repos
11
- - Session: Manage session files
12
- - Sync: Sync ATDD rules to agent config files
13
- - Gate: Verify agents loaded ATDD rules
6
+ - validate: Run validators (planner/tester/coder/coach)
7
+ - inventory: Catalog repository artifacts
8
+ - status: Show platform status
9
+ - registry: Update registries from source files
10
+ - init: Initialize ATDD structure in consumer repos
11
+ - session: Manage session files
12
+ - sync: Sync ATDD rules to agent config files
13
+ - gate: Verify agents loaded ATDD rules
14
14
 
15
15
  Usage:
16
16
  atdd init # Initialize ATDD in consumer repo
@@ -21,18 +21,22 @@ Usage:
21
21
  atdd sync --verify # Check if files are in sync
22
22
  atdd sync --agent claude # Sync specific agent only
23
23
  atdd gate # Show ATDD gate verification
24
- atdd --inventory # Generate inventory
25
- atdd --test all # Run all meta-tests
26
- atdd --test planner # Run planner phase tests
27
- atdd --test tester # Run tester phase tests
28
- atdd --test coder # Run coder phase tests
29
- atdd --test all --coverage # With coverage report
30
- atdd --test all --html # With HTML report
24
+ atdd validate # Run all validators
25
+ atdd validate planner # Run planner validators
26
+ atdd validate tester # Run tester validators
27
+ atdd validate coder # Run coder validators
28
+ atdd validate --quick # Quick smoke test
29
+ atdd validate --coverage # With coverage report
30
+ atdd inventory # Generate inventory (YAML)
31
+ atdd inventory --format json # Generate inventory (JSON)
32
+ atdd status # Show platform status
33
+ atdd registry update # Update all registries
31
34
  atdd --help # Show help
32
35
  """
33
36
 
34
37
  import argparse
35
38
  import sys
39
+ import warnings
36
40
  from pathlib import Path
37
41
 
38
42
  ATDD_DIR = Path(__file__).parent
@@ -45,7 +49,12 @@ from atdd.coach.commands.session import SessionManager
45
49
  from atdd.coach.commands.sync import AgentConfigSync
46
50
  from atdd.coach.commands.gate import ATDDGate
47
51
  from atdd.coach.utils.repo import find_repo_root
48
- from atdd.version_check import print_update_notice
52
+ from atdd.version_check import print_update_notice, print_upgrade_sync_notice
53
+
54
+
55
+ def _deprecation_warning(old: str, new: str) -> None:
56
+ """Emit a deprecation warning for legacy flags."""
57
+ print(f"\033[33m⚠️ Deprecated: '{old}' will be removed. Use '{new}' instead.\033[0m")
49
58
 
50
59
 
51
60
  class ATDDCoach:
@@ -61,7 +70,7 @@ class ATDDCoach:
61
70
  def __init__(self, repo_root: Path = None):
62
71
  self.repo_root = repo_root or find_repo_root()
63
72
  self.inventory = RepositoryInventory(self.repo_root)
64
- self.test_runner = TestRunner(self.repo_root)
73
+ self.validator_runner = TestRunner(self.repo_root)
65
74
  self.registry_updater = RegistryUpdater(self.repo_root)
66
75
 
67
76
  def run_inventory(self, format: str = "yaml") -> int:
@@ -81,7 +90,7 @@ class ATDDCoach:
81
90
 
82
91
  return 0
83
92
 
84
- def run_tests(
93
+ def run_validators(
85
94
  self,
86
95
  phase: str = "all",
87
96
  verbose: bool = False,
@@ -89,11 +98,11 @@ class ATDDCoach:
89
98
  html: bool = False,
90
99
  quick: bool = False
91
100
  ) -> int:
92
- """Run ATDD meta-tests."""
101
+ """Run ATDD validators."""
93
102
  if quick:
94
- return self.test_runner.quick_check()
103
+ return self.validator_runner.quick_check()
95
104
 
96
- return self.test_runner.run_tests(
105
+ return self.validator_runner.run_tests(
97
106
  phase=phase,
98
107
  verbose=verbose,
99
108
  coverage=coverage,
@@ -119,21 +128,23 @@ class ATDDCoach:
119
128
  print("ATDD Platform Status")
120
129
  print("=" * 60)
121
130
  print("\nDirectory structure:")
122
- print(f" 📋 Planner tests: {ATDD_DIR / 'planner'}")
123
- print(f" 🧪 Tester tests: {ATDD_DIR / 'tester'}")
124
- print(f" ⚙️ Coder tests: {ATDD_DIR / 'coder'}")
125
- print(f" 🎯 Coach: {ATDD_DIR / 'coach'}")
131
+ print(f" 📋 Planner validators: {ATDD_DIR / 'planner' / 'validators'}")
132
+ print(f" 🧪 Tester validators: {ATDD_DIR / 'tester' / 'validators'}")
133
+ print(f" ⚙️ Coder validators: {ATDD_DIR / 'coder' / 'validators'}")
134
+ print(f" 🎯 Coach validators: {ATDD_DIR / 'coach' / 'validators'}")
126
135
 
127
136
  # Quick stats
128
- planner_tests = len(list((ATDD_DIR / "planner").glob("test_*.py")))
129
- tester_tests = len(list((ATDD_DIR / "tester").glob("test_*.py")))
130
- coder_tests = len(list((ATDD_DIR / "coder").glob("test_*.py")))
131
-
132
- print(f"\nTest files:")
133
- print(f" Planner: {planner_tests} files")
134
- print(f" Tester: {tester_tests} files")
135
- print(f" Coder: {coder_tests} files")
136
- print(f" Total: {planner_tests + tester_tests + coder_tests} files")
137
+ planner_validators = len(list((ATDD_DIR / "planner" / "validators").glob("test_*.py")))
138
+ tester_validators = len(list((ATDD_DIR / "tester" / "validators").glob("test_*.py")))
139
+ coder_validators = len(list((ATDD_DIR / "coder" / "validators").glob("test_*.py")))
140
+ coach_validators = len(list((ATDD_DIR / "coach" / "validators").glob("test_*.py")))
141
+
142
+ print(f"\nValidator files:")
143
+ print(f" Planner: {planner_validators} files")
144
+ print(f" Tester: {tester_validators} files")
145
+ print(f" Coder: {coder_validators} files")
146
+ print(f" Coach: {coach_validators} files")
147
+ print(f" Total: {planner_validators + tester_validators + coder_validators + coach_validators} files")
137
148
 
138
149
  return 0
139
150
 
@@ -149,6 +160,27 @@ Examples:
149
160
  %(prog)s init Create atdd-sessions/, .atdd/
150
161
  %(prog)s init --force Overwrite if exists
151
162
 
163
+ # Run validators
164
+ %(prog)s validate Run all validators
165
+ %(prog)s validate planner Run planner validators only
166
+ %(prog)s validate tester Run tester validators only
167
+ %(prog)s validate coder Run coder validators only
168
+ %(prog)s validate --quick Quick smoke test
169
+ %(prog)s validate --coverage With coverage report
170
+ %(prog)s validate --html With HTML report
171
+ %(prog)s validate -v Verbose output
172
+
173
+ # Repository inspection
174
+ %(prog)s inventory Generate full inventory (YAML)
175
+ %(prog)s inventory --format json Generate inventory (JSON)
176
+ %(prog)s status Show platform status
177
+
178
+ # Registry management
179
+ %(prog)s registry update Update all registries
180
+ %(prog)s registry update wagons Update wagon registry only
181
+ %(prog)s registry update contracts Update contract registry only
182
+ %(prog)s registry update telemetry Update telemetry registry only
183
+
152
184
  # Session management
153
185
  %(prog)s session new my-feature Create SESSION-NN-my-feature.md
154
186
  %(prog)s session new my-feature --type migration
@@ -165,29 +197,98 @@ Examples:
165
197
  %(prog)s gate Show gate verification info
166
198
  %(prog)s gate --json Output as JSON
167
199
 
168
- # Existing flag-based commands (backwards compatible)
169
- %(prog)s --inventory Generate full inventory (YAML)
170
- %(prog)s --inventory --format json Generate inventory (JSON)
171
- %(prog)s --test all Run all meta-tests
172
- %(prog)s --test planner Run planner phase tests
173
- %(prog)s --test tester Run tester phase tests
174
- %(prog)s --test coder Run coder phase tests
175
- %(prog)s --test all --coverage Run with coverage report
176
- %(prog)s --test all --html Run with HTML report
177
- %(prog)s --test all --verbose Run with verbose output
178
- %(prog)s --quick Quick smoke test
179
- %(prog)s --status Show platform status
180
-
181
200
  Phase descriptions:
182
201
  planner - Validates planning artifacts (wagons, trains, URNs)
183
202
  tester - Validates testing artifacts (contracts, telemetry)
184
203
  coder - Validates implementation (architecture, quality)
204
+ coach - Validates coach artifacts (sessions, registries)
185
205
  """
186
206
  )
187
207
 
188
- # Subparsers for new commands
208
+ # Subparsers for commands
189
209
  subparsers = parser.add_subparsers(dest="command", help="Commands")
190
210
 
211
+ # ----- atdd validate [phase] -----
212
+ validate_parser = subparsers.add_parser(
213
+ "validate",
214
+ help="Run ATDD validators",
215
+ description="Run validators to check artifacts against conventions"
216
+ )
217
+ validate_parser.add_argument(
218
+ "phase",
219
+ nargs="?",
220
+ type=str,
221
+ default="all",
222
+ choices=["all", "planner", "tester", "coder", "coach"],
223
+ help="Phase to validate (default: all)"
224
+ )
225
+ validate_parser.add_argument(
226
+ "--quick", "-q",
227
+ action="store_true",
228
+ help="Quick smoke test (no parallel, no reports)"
229
+ )
230
+ validate_parser.add_argument(
231
+ "--verbose", "-v",
232
+ action="store_true",
233
+ help="Verbose output"
234
+ )
235
+ validate_parser.add_argument(
236
+ "--coverage",
237
+ action="store_true",
238
+ help="Generate coverage report"
239
+ )
240
+ validate_parser.add_argument(
241
+ "--html",
242
+ action="store_true",
243
+ help="Generate HTML report"
244
+ )
245
+
246
+ # ----- atdd inventory -----
247
+ inventory_parser = subparsers.add_parser(
248
+ "inventory",
249
+ help="Generate repository inventory",
250
+ description="Catalog all ATDD artifacts in the repository"
251
+ )
252
+ inventory_parser.add_argument(
253
+ "--format", "-f",
254
+ type=str,
255
+ choices=["yaml", "json"],
256
+ default="yaml",
257
+ help="Output format (default: yaml)"
258
+ )
259
+
260
+ # ----- atdd status -----
261
+ subparsers.add_parser(
262
+ "status",
263
+ help="Show platform status",
264
+ description="Display ATDD platform status and validator counts"
265
+ )
266
+
267
+ # ----- atdd registry {update} -----
268
+ registry_parser = subparsers.add_parser(
269
+ "registry",
270
+ help="Manage registries",
271
+ description="Update registries from source files"
272
+ )
273
+ registry_subparsers = registry_parser.add_subparsers(
274
+ dest="registry_command",
275
+ help="Registry commands"
276
+ )
277
+
278
+ # atdd registry update [type]
279
+ registry_update_parser = registry_subparsers.add_parser(
280
+ "update",
281
+ help="Update registries from source files"
282
+ )
283
+ registry_update_parser.add_argument(
284
+ "type",
285
+ nargs="?",
286
+ type=str,
287
+ default="all",
288
+ choices=["all", "wagons", "contracts", "telemetry"],
289
+ help="Registry type to update (default: all)"
290
+ )
291
+
191
292
  # ----- atdd init -----
192
293
  init_parser = subparsers.add_parser(
193
294
  "init",
@@ -289,9 +390,9 @@ Phase descriptions:
289
390
  help="Output as JSON for programmatic use"
290
391
  )
291
392
 
292
- # ----- Existing flag-based arguments (backwards compatible) -----
393
+ # ----- Legacy flag-based arguments (deprecated, kept for backwards compatibility) -----
293
394
 
294
- # Repository root override
395
+ # Repository root override (not deprecated - still useful)
295
396
  parser.add_argument(
296
397
  "--repo",
297
398
  type=str,
@@ -299,75 +400,110 @@ Phase descriptions:
299
400
  help="Target repository root (default: auto-detect from .atdd/)"
300
401
  )
301
402
 
302
- # Main command groups
303
- parser.add_argument(
304
- "--inventory",
305
- action="store_true",
306
- help="Generate repository inventory"
307
- )
308
-
403
+ # DEPRECATED: --test → atdd validate
309
404
  parser.add_argument(
310
405
  "--test",
311
406
  type=str,
312
407
  choices=["all", "planner", "tester", "coder"],
313
408
  metavar="PHASE",
314
- help="Run tests for specific phase (all, planner, tester, coder)"
409
+ help=argparse.SUPPRESS # Hide from help, deprecated
315
410
  )
316
411
 
412
+ # DEPRECATED: --inventory → atdd inventory
413
+ parser.add_argument(
414
+ "--inventory",
415
+ action="store_true",
416
+ help=argparse.SUPPRESS # Hide from help, deprecated
417
+ )
418
+
419
+ # DEPRECATED: --status → atdd status
317
420
  parser.add_argument(
318
421
  "--status",
319
422
  action="store_true",
320
- help="Show platform status summary"
423
+ help=argparse.SUPPRESS # Hide from help, deprecated
321
424
  )
322
425
 
426
+ # DEPRECATED: --quick → atdd validate --quick
323
427
  parser.add_argument(
324
428
  "--quick",
325
429
  action="store_true",
326
- help="Quick smoke test (no parallel, no reports)"
430
+ help=argparse.SUPPRESS # Hide from help, deprecated
327
431
  )
328
432
 
433
+ # DEPRECATED: --update-registry → atdd registry update
329
434
  parser.add_argument(
330
435
  "--update-registry",
331
436
  type=str,
332
437
  choices=["all", "wagons", "contracts", "telemetry"],
333
438
  metavar="TYPE",
334
- help="Update registry from source files (all, wagons, contracts, telemetry)"
439
+ help=argparse.SUPPRESS # Hide from help, deprecated
335
440
  )
336
441
 
337
- # Options for inventory
442
+ # Options that work with both legacy and modern commands
338
443
  parser.add_argument(
339
444
  "--format",
340
445
  type=str,
341
446
  choices=["yaml", "json"],
342
447
  default="yaml",
343
- help="Inventory output format (default: yaml)"
448
+ help=argparse.SUPPRESS # Hide, use subcommand option instead
344
449
  )
345
-
346
- # Options for tests
347
450
  parser.add_argument(
348
451
  "--verbose", "-v",
349
452
  action="store_true",
350
- help="Verbose test output"
453
+ help=argparse.SUPPRESS # Hide, use subcommand option instead
351
454
  )
352
-
353
455
  parser.add_argument(
354
456
  "--coverage",
355
457
  action="store_true",
356
- help="Generate coverage report"
458
+ help=argparse.SUPPRESS # Hide, use subcommand option instead
357
459
  )
358
-
359
460
  parser.add_argument(
360
461
  "--html",
361
462
  action="store_true",
362
- help="Generate HTML test report"
463
+ help=argparse.SUPPRESS # Hide, use subcommand option instead
363
464
  )
364
465
 
365
466
  args = parser.parse_args()
366
467
 
367
- # ----- Handle subcommands -----
468
+ # ----- Handle modern subcommands -----
469
+
470
+ # atdd validate [phase]
471
+ if args.command == "validate":
472
+ repo_path = Path(args.repo) if hasattr(args, 'repo') and args.repo else None
473
+ coach = ATDDCoach(repo_root=repo_path)
474
+ return coach.run_validators(
475
+ phase=args.phase,
476
+ verbose=args.verbose,
477
+ coverage=args.coverage,
478
+ html=args.html,
479
+ quick=args.quick
480
+ )
481
+
482
+ # atdd inventory
483
+ elif args.command == "inventory":
484
+ repo_path = Path(args.repo) if hasattr(args, 'repo') and args.repo else None
485
+ coach = ATDDCoach(repo_root=repo_path)
486
+ return coach.run_inventory(format=args.format)
487
+
488
+ # atdd status
489
+ elif args.command == "status":
490
+ repo_path = Path(args.repo) if hasattr(args, 'repo') and args.repo else None
491
+ coach = ATDDCoach(repo_root=repo_path)
492
+ return coach.show_status()
493
+
494
+ # atdd registry {update}
495
+ elif args.command == "registry":
496
+ repo_path = Path(args.repo) if hasattr(args, 'repo') and args.repo else None
497
+ coach = ATDDCoach(repo_root=repo_path)
498
+
499
+ if args.registry_command == "update":
500
+ return coach.update_registries(registry_type=args.type)
501
+ else:
502
+ registry_parser.print_help()
503
+ return 0
368
504
 
369
505
  # atdd init
370
- if args.command == "init":
506
+ elif args.command == "init":
371
507
  initializer = ProjectInitializer()
372
508
  return initializer.init(force=args.force)
373
509
 
@@ -401,18 +537,20 @@ Phase descriptions:
401
537
  gate = ATDDGate()
402
538
  return gate.verify(json=args.json)
403
539
 
404
- # ----- Handle flag-based commands (backwards compatible) -----
540
+ # ----- Handle deprecated flag-based commands -----
405
541
 
406
- # Create coach instance with optional repo override
407
542
  repo_path = Path(args.repo) if args.repo else None
408
543
  coach = ATDDCoach(repo_root=repo_path)
409
544
 
410
- # Handle commands
545
+ # DEPRECATED: --inventory
411
546
  if args.inventory:
547
+ _deprecation_warning("atdd --inventory", "atdd inventory")
412
548
  return coach.run_inventory(format=args.format)
413
549
 
550
+ # DEPRECATED: --test
414
551
  elif args.test:
415
- return coach.run_tests(
552
+ _deprecation_warning(f"atdd --test {args.test}", f"atdd validate {args.test}")
553
+ return coach.run_validators(
416
554
  phase=args.test,
417
555
  verbose=args.verbose,
418
556
  coverage=args.coverage,
@@ -420,13 +558,22 @@ Phase descriptions:
420
558
  quick=False
421
559
  )
422
560
 
561
+ # DEPRECATED: --quick
423
562
  elif args.quick:
424
- return coach.run_tests(quick=True)
563
+ _deprecation_warning("atdd --quick", "atdd validate --quick")
564
+ return coach.run_validators(quick=True)
425
565
 
566
+ # DEPRECATED: --status
426
567
  elif args.status:
568
+ _deprecation_warning("atdd --status", "atdd status")
427
569
  return coach.show_status()
428
570
 
571
+ # DEPRECATED: --update-registry
429
572
  elif args.update_registry:
573
+ _deprecation_warning(
574
+ f"atdd --update-registry {args.update_registry}",
575
+ f"atdd registry update {args.update_registry}"
576
+ )
430
577
  return coach.update_registries(registry_type=args.update_registry)
431
578
 
432
579
  else:
@@ -436,10 +583,14 @@ Phase descriptions:
436
583
 
437
584
 
438
585
  def cli() -> int:
439
- """CLI entry point with version check."""
586
+ """CLI entry point with version and upgrade checks."""
587
+ # Check if repo needs sync after ATDD upgrade (at startup)
588
+ print_upgrade_sync_notice()
589
+
440
590
  try:
441
591
  result = main()
442
592
  finally:
593
+ # Check for newer versions on PyPI (at end)
443
594
  print_update_notice()
444
595
  return result
445
596