atdd 0.3.3__py3-none-any.whl → 0.4.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 (70) hide show
  1. atdd/cli.py +223 -76
  2. atdd/coach/commands/add_persistence_metadata.py +3 -1
  3. atdd/coach/commands/infer_governance_status.py +3 -1
  4. atdd/coach/commands/interface.py +3 -1
  5. atdd/coach/commands/inventory.py +2 -2
  6. atdd/coach/commands/migration.py +11 -6
  7. atdd/coach/commands/test_runner.py +66 -27
  8. atdd/coach/commands/traceability.py +3 -1
  9. atdd/coach/conventions/session.convention.yaml +26 -26
  10. atdd/coach/templates/ATDD.md +15 -15
  11. atdd/coach/templates/SESSION-TEMPLATE.md +12 -12
  12. atdd/coach/utils/repo.py +24 -8
  13. atdd/coach/validators/shared_fixtures.py +27 -14
  14. atdd/coach/validators/test_session_validation.py +4 -4
  15. atdd/coder/conventions/commons.convention.yaml +1 -1
  16. atdd/coder/conventions/tests/test_component_taxonomy.py +4 -3
  17. atdd/coder/conventions/tests/test_component_urn_naming.py +9 -3
  18. atdd/coder/validators/test_commons_structure.py +9 -2
  19. atdd/coder/validators/test_complexity.py +3 -1
  20. atdd/coder/validators/test_cross_language_consistency.py +3 -1
  21. atdd/coder/validators/test_design_system_compliance.py +3 -1
  22. atdd/coder/validators/test_dto_testing_patterns.py +10 -3
  23. atdd/coder/validators/test_green_cross_stack_layers.py +9 -3
  24. atdd/coder/validators/test_green_layer_dependencies.py +9 -3
  25. atdd/coder/validators/test_green_python_layer_structure.py +8 -2
  26. atdd/coder/validators/test_green_supabase_layer_structure.py +8 -3
  27. atdd/coder/validators/test_import_boundaries.py +3 -1
  28. atdd/coder/validators/test_init_file_urns.py +3 -1
  29. atdd/coder/validators/test_preact_layer_boundaries.py +3 -1
  30. atdd/coder/validators/test_presentation_convention.py +3 -1
  31. atdd/coder/validators/test_python_architecture.py +9 -2
  32. atdd/coder/validators/test_quality_metrics.py +2 -1
  33. atdd/coder/validators/test_station_master_pattern.py +4 -2
  34. atdd/coder/validators/test_train_infrastructure.py +9 -2
  35. atdd/coder/validators/test_train_urns.py +9 -2
  36. atdd/coder/validators/test_typescript_architecture.py +10 -3
  37. atdd/coder/validators/test_usecase_structure.py +3 -1
  38. atdd/coder/validators/test_wagon_boundaries.py +8 -2
  39. atdd/planner/validators/test_plan_urn_resolution.py +3 -1
  40. atdd/planner/validators/test_wagon_urn_chain.py +3 -1
  41. atdd/planner/validators/test_wmbt_consistency.py +3 -1
  42. atdd/planner/validators/test_wmbt_vocabulary.py +8 -2
  43. atdd/tester/conventions/contract.convention.yaml +1 -1
  44. atdd/tester/conventions/migration.convention.yaml +5 -5
  45. atdd/tester/validators/cleanup_duplicate_headers.py +3 -1
  46. atdd/tester/validators/cleanup_duplicate_headers_v2.py +3 -1
  47. atdd/tester/validators/coverage_gap_report.py +3 -1
  48. atdd/tester/validators/fix_dual_ac_references.py +3 -1
  49. atdd/tester/validators/remove_duplicate_lines.py +3 -1
  50. atdd/tester/validators/test_acceptance_urn_filename_mapping.py +9 -3
  51. atdd/tester/validators/test_acceptance_urn_separator.py +9 -3
  52. atdd/tester/validators/test_contract_schema_compliance.py +9 -2
  53. atdd/tester/validators/test_contracts_structure.py +3 -1
  54. atdd/tester/validators/test_coverage_adequacy.py +3 -1
  55. atdd/tester/validators/test_dual_ac_reference.py +6 -2
  56. atdd/tester/validators/test_fixture_validity.py +2 -1
  57. atdd/tester/validators/test_isolation.py +9 -2
  58. atdd/tester/validators/test_migration_coverage.py +4 -2
  59. atdd/tester/validators/test_migration_generation.py +3 -1
  60. atdd/tester/validators/test_python_test_naming.py +3 -1
  61. atdd/tester/validators/test_red_layer_validation.py +7 -2
  62. atdd/tester/validators/test_red_python_layer_structure.py +7 -2
  63. atdd/tester/validators/test_red_supabase_layer_structure.py +8 -2
  64. atdd/tester/validators/test_telemetry_structure.py +9 -2
  65. {atdd-0.3.3.dist-info → atdd-0.4.1.dist-info}/METADATA +41 -12
  66. {atdd-0.3.3.dist-info → atdd-0.4.1.dist-info}/RECORD +70 -70
  67. {atdd-0.3.3.dist-info → atdd-0.4.1.dist-info}/WHEEL +0 -0
  68. {atdd-0.3.3.dist-info → atdd-0.4.1.dist-info}/entry_points.txt +0 -0
  69. {atdd-0.3.3.dist-info → atdd-0.4.1.dist-info}/licenses/LICENSE +0 -0
  70. {atdd-0.3.3.dist-info → atdd-0.4.1.dist-info}/top_level.txt +0 -0
@@ -23,11 +23,17 @@ import re
23
23
  from pathlib import Path
24
24
  from typing import Dict, List, Tuple, Set, Optional
25
25
 
26
+ import atdd
27
+ from atdd.coach.utils.repo import find_repo_root
26
28
 
27
29
  # Path constants
28
- REPO_ROOT = Path(__file__).resolve().parents[4]
30
+ # Consumer repo artifacts
31
+ REPO_ROOT = find_repo_root()
29
32
  PLAN_DIR = REPO_ROOT / "plan"
30
- WMBT_CONVENTION = REPO_ROOT / "atdd" / "planner" / "conventions" / "wmbt.convention.yaml"
33
+
34
+ # Package resources (conventions, schemas)
35
+ ATDD_PKG_DIR = Path(atdd.__file__).resolve().parent
36
+ WMBT_CONVENTION = ATDD_PKG_DIR / "planner" / "conventions" / "wmbt.convention.yaml"
31
37
 
32
38
 
33
39
  # Authorized vocabulary from convention
@@ -444,7 +444,7 @@ persistence_traceability:
444
444
 
445
445
  workflow:
446
446
  1_identify_persistent_contracts:
447
- command: "python atdd/coach/commands/migration.py"
447
+ command: "python -m atdd.coach.commands.migration"
448
448
  output: "List of contracts needing persistence"
449
449
 
450
450
  2_create_migration:
@@ -16,7 +16,7 @@ workflow:
16
16
  automation_level: "template_generation"
17
17
  requires_human_review: true
18
18
 
19
- command: "python atdd/coach/command/migration.py"
19
+ command: "python -m atdd.coach.commands.migration"
20
20
 
21
21
  # Table Naming Convention
22
22
  table_naming:
@@ -171,16 +171,16 @@ references:
171
171
  # Command Usage
172
172
  usage: |
173
173
  # Generate all missing migrations
174
- python atdd/coach/command/migration.py
174
+ python -m atdd.coach.commands.migration
175
175
 
176
176
  # Generate for specific contract
177
- python atdd/coach/command/migration.py --contract contracts/match/dilemma/current.schema.json
177
+ python -m atdd.coach.commands.migration --contract contracts/match/dilemma/current.schema.json
178
178
 
179
179
  # Validate coverage
180
- python atdd/coach/command/migration.py --validate
180
+ python -m atdd.coach.commands.migration --validate
181
181
 
182
182
  # Check for unreviewed TODOs
183
- pytest atdd/tester/test_migration_coverage.py::test_migration_templates_reviewed
183
+ atdd validate tester
184
184
 
185
185
  # JSONB-First Storage Strategy
186
186
  jsonb_strategy:
@@ -9,8 +9,10 @@ and keeps only the new standardized ones.
9
9
  import re
10
10
  from pathlib import Path
11
11
 
12
+ from atdd.coach.utils.repo import find_repo_root
12
13
 
13
- REPO_ROOT = Path(__file__).resolve().parents[4]
14
+
15
+ REPO_ROOT = find_repo_root()
14
16
  PYTHON_DIR = REPO_ROOT / "python"
15
17
 
16
18
 
@@ -9,8 +9,10 @@ keeping only the new standardized header at the top.
9
9
  import re
10
10
  from pathlib import Path
11
11
 
12
+ from atdd.coach.utils.repo import find_repo_root
12
13
 
13
- REPO_ROOT = Path(__file__).resolve().parents[4]
14
+
15
+ REPO_ROOT = find_repo_root()
14
16
  PYTHON_DIR = REPO_ROOT / "python"
15
17
 
16
18
 
@@ -17,9 +17,11 @@ from pathlib import Path
17
17
  from collections import defaultdict
18
18
  from typing import Dict, List, Set, Tuple
19
19
 
20
+ from atdd.coach.utils.repo import find_repo_root
21
+
20
22
 
21
23
  # Path constants
22
- REPO_ROOT = Path(__file__).resolve().parents[4]
24
+ REPO_ROOT = find_repo_root()
23
25
  PLAN_DIR = REPO_ROOT / "plan"
24
26
  PYTHON_DIR = REPO_ROOT / "python"
25
27
  LIB_DIR = REPO_ROOT / "lib"
@@ -10,8 +10,10 @@ Fixes:
10
10
  import re
11
11
  from pathlib import Path
12
12
 
13
+ from atdd.coach.utils.repo import find_repo_root
13
14
 
14
- REPO_ROOT = Path(__file__).resolve().parents[4]
15
+
16
+ REPO_ROOT = find_repo_root()
15
17
  PYTHON_DIR = REPO_ROOT / "python"
16
18
 
17
19
 
@@ -5,8 +5,10 @@ Simple script to remove consecutive duplicate lines in test files.
5
5
 
6
6
  from pathlib import Path
7
7
 
8
+ from atdd.coach.utils.repo import find_repo_root
8
9
 
9
- REPO_ROOT = Path(__file__).resolve().parents[4]
10
+
11
+ REPO_ROOT = find_repo_root()
10
12
  PYTHON_DIR = REPO_ROOT / "python"
11
13
 
12
14
 
@@ -13,8 +13,14 @@ import re
13
13
  from pathlib import Path
14
14
  import pytest
15
15
 
16
+ import atdd
17
+ from atdd.coach.utils.repo import find_repo_root
16
18
 
17
- REPO_ROOT = Path(__file__).parent.parent.parent
19
+
20
+ REPO_ROOT = find_repo_root()
21
+
22
+ # Package resources
23
+ ATDD_PKG_DIR = Path(atdd.__file__).resolve().parent
18
24
 
19
25
 
20
26
  # SPEC-TESTER-CONV-0069: Dart URN to filename mapping
@@ -297,8 +303,8 @@ def test_python_files_match_convention():
297
303
 
298
304
  test_dirs = [
299
305
  REPO_ROOT / "tests",
300
- REPO_ROOT / "atdd" / "coach" / "validators",
301
- REPO_ROOT / "atdd" / "tester" / "validators",
306
+ ATDD_PKG_DIR / "coach" / "validators",
307
+ ATDD_PKG_DIR / "tester" / "validators",
302
308
  ]
303
309
 
304
310
  violations = []
@@ -24,10 +24,16 @@ import yaml
24
24
  import re
25
25
  from pathlib import Path
26
26
 
27
+ import atdd
28
+ from atdd.coach.utils.repo import find_repo_root
29
+
27
30
  # Path constants
28
- REPO_ROOT = Path(__file__).resolve().parents[4]
29
- CONVENTIONS_DIR = REPO_ROOT / "atdd" / "planner" / "conventions"
30
- SCHEMAS_DIR = REPO_ROOT / "atdd" / "planner" / "schemas"
31
+ REPO_ROOT = find_repo_root()
32
+
33
+ # Package resources (conventions, schemas)
34
+ ATDD_PKG_DIR = Path(atdd.__file__).resolve().parent
35
+ CONVENTIONS_DIR = ATDD_PKG_DIR / "planner" / "conventions"
36
+ SCHEMAS_DIR = ATDD_PKG_DIR / "planner" / "schemas"
31
37
 
32
38
 
33
39
  # SPEC-COACH-UTILS-0282
@@ -12,11 +12,18 @@ import re
12
12
  from pathlib import Path
13
13
  from jsonschema import validate, ValidationError, Draft7Validator
14
14
 
15
+ import atdd
16
+ from atdd.coach.utils.repo import find_repo_root
17
+
15
18
  # Path constants
16
- REPO_ROOT = Path(__file__).resolve().parents[4]
19
+ # Consumer repo artifacts
20
+ REPO_ROOT = find_repo_root()
17
21
  CONTRACTS_DIR = REPO_ROOT / "contracts"
18
22
  PLAN_DIR = REPO_ROOT / "plan"
19
- META_SCHEMA_PATH = REPO_ROOT / "atdd" / "tester" / "schemas" / "contract.schema.json"
23
+
24
+ # Package resources (conventions, schemas)
25
+ ATDD_PKG_DIR = Path(atdd.__file__).resolve().parent
26
+ META_SCHEMA_PATH = ATDD_PKG_DIR / "tester" / "schemas" / "contract.schema.json"
20
27
 
21
28
 
22
29
  @pytest.fixture
@@ -9,8 +9,10 @@ import re
9
9
  from pathlib import Path
10
10
  from typing import Optional
11
11
 
12
+ from atdd.coach.utils.repo import find_repo_root
13
+
12
14
  # Path constants
13
- REPO_ROOT = Path(__file__).resolve().parents[4]
15
+ REPO_ROOT = find_repo_root()
14
16
  CONTRACTS_DIR = REPO_ROOT / "contracts"
15
17
 
16
18
 
@@ -25,9 +25,11 @@ from typing import Dict, List, Set, Tuple, Optional
25
25
  from dataclasses import dataclass, field
26
26
  from collections import defaultdict
27
27
 
28
+ from atdd.coach.utils.repo import find_repo_root
29
+
28
30
 
29
31
  # Path constants
30
- REPO_ROOT = Path(__file__).resolve().parents[4]
32
+ REPO_ROOT = find_repo_root()
31
33
  PLAN_DIR = REPO_ROOT / "plan"
32
34
  PYTHON_DIR = REPO_ROOT / "python"
33
35
  LIB_DIR = REPO_ROOT / "lib"
@@ -15,9 +15,11 @@ import pytest
15
15
  import re
16
16
  from pathlib import Path
17
17
 
18
+ from atdd.coach.utils.repo import find_repo_root
18
19
 
19
- # Path constants
20
- REPO_ROOT = Path(__file__).resolve().parents[4]
20
+
21
+ # Path constants - consumer repo artifacts
22
+ REPO_ROOT = find_repo_root()
21
23
  PYTHON_DIR = REPO_ROOT / "python"
22
24
 
23
25
 
@@ -210,6 +212,8 @@ Purpose: Verify timebank decrements during active decision
210
212
 
211
213
  import pytest
212
214
 
215
+ from atdd.coach.utils.repo import find_repo_root
216
+
213
217
 
214
218
  def test_e001_unit_001_timebank_decrements_during_decision():
215
219
  """Test implementation..."""
@@ -17,9 +17,10 @@ import yaml
17
17
  from pathlib import Path
18
18
  from typing import Dict, List, Any
19
19
 
20
+ from atdd.coach.utils.repo import find_repo_root
20
21
 
21
22
  # Path constants
22
- REPO_ROOT = Path(__file__).resolve().parents[4]
23
+ REPO_ROOT = find_repo_root()
23
24
  PYTHON_DIR = REPO_ROOT / "python"
24
25
  CONTRACTS_DIR = REPO_ROOT / "contracts"
25
26
 
@@ -17,13 +17,20 @@ import ast
17
17
  from pathlib import Path
18
18
  from typing import List, Set, Tuple
19
19
 
20
+ import atdd
21
+ from atdd.coach.utils.repo import find_repo_root
22
+
20
23
 
21
24
  # Path constants
22
- REPO_ROOT = Path(__file__).resolve().parents[4]
25
+ REPO_ROOT = find_repo_root()
26
+
27
+ # Package resources
28
+ ATDD_PKG_DIR = Path(atdd.__file__).resolve().parent
29
+
23
30
  TEST_DIRS = [
24
31
  REPO_ROOT / "test",
25
32
  REPO_ROOT / "tests",
26
- REPO_ROOT / "atdd",
33
+ ATDD_PKG_DIR, # Validators in installed package
27
34
  ]
28
35
 
29
36
 
@@ -7,8 +7,10 @@ SPEC-TESTER-CONV-0032: Reject migrations with unresolved TODOs
7
7
  import pytest
8
8
  from pathlib import Path
9
9
 
10
+ from atdd.coach.utils.repo import find_repo_root
11
+
10
12
  # Path constants
11
- REPO_ROOT = Path(__file__).resolve().parents[4]
13
+ REPO_ROOT = find_repo_root()
12
14
  CONTRACTS_DIR = REPO_ROOT / "contracts"
13
15
  MIGRATIONS_DIR = REPO_ROOT / "supabase" / "migrations"
14
16
 
@@ -145,7 +147,7 @@ def test_all_contracts_have_migrations():
145
147
  error_msg += f"\n ... and {len(missing) - 20} more"
146
148
  if skipped > 0:
147
149
  error_msg += f"\n\nℹ️ Skipped {skipped} internal/transient contracts"
148
- error_msg += "\n\nRun: python atdd/coach/commands/migration.py to generate"
150
+ error_msg += "\n\nRun: python -m atdd.coach.commands.migration to generate"
149
151
  pytest.fail(error_msg)
150
152
 
151
153
 
@@ -9,8 +9,10 @@ import json
9
9
  import tempfile
10
10
  from pathlib import Path
11
11
 
12
+ from atdd.coach.utils.repo import find_repo_root
13
+
12
14
  # Path constants
13
- REPO_ROOT = Path(__file__).resolve().parents[4]
15
+ REPO_ROOT = find_repo_root()
14
16
  CONTRACTS_DIR = REPO_ROOT / "contracts"
15
17
 
16
18
 
@@ -16,9 +16,11 @@ import pytest
16
16
  import re
17
17
  from pathlib import Path
18
18
 
19
+ from atdd.coach.utils.repo import find_repo_root
20
+
19
21
 
20
22
  # Path constants
21
- REPO_ROOT = Path(__file__).resolve().parents[4]
23
+ REPO_ROOT = find_repo_root()
22
24
  PYTHON_DIR = REPO_ROOT / "python"
23
25
 
24
26
 
@@ -8,9 +8,14 @@ import pytest
8
8
  from pathlib import Path
9
9
  import yaml
10
10
 
11
+ import atdd
12
+ from atdd.coach.utils.repo import find_repo_root
11
13
 
12
- REPO_ROOT = Path(__file__).resolve().parents[4]
13
- RED_CONVENTION = REPO_ROOT / "atdd" / "tester" / "conventions" / "red.convention.yaml"
14
+ REPO_ROOT = find_repo_root()
15
+
16
+ # Package resources (conventions, schemas)
17
+ ATDD_PKG_DIR = Path(atdd.__file__).resolve().parent
18
+ RED_CONVENTION = ATDD_PKG_DIR / "tester" / "conventions" / "red.convention.yaml"
14
19
 
15
20
 
16
21
  @pytest.mark.tester
@@ -8,9 +8,14 @@ import pytest
8
8
  from pathlib import Path
9
9
  import yaml
10
10
 
11
+ import atdd
12
+ from atdd.coach.utils.repo import find_repo_root
11
13
 
12
- REPO_ROOT = Path(__file__).resolve().parents[4]
13
- RED_CONVENTION = REPO_ROOT / "atdd" / "tester" / "conventions" / "red.convention.yaml"
14
+ REPO_ROOT = find_repo_root()
15
+
16
+ # Package resources (conventions, schemas)
17
+ ATDD_PKG_DIR = Path(atdd.__file__).resolve().parent
18
+ RED_CONVENTION = ATDD_PKG_DIR / "tester" / "conventions" / "red.convention.yaml"
14
19
 
15
20
 
16
21
  @pytest.mark.tester
@@ -8,9 +8,15 @@ import pytest
8
8
  from pathlib import Path
9
9
  import yaml
10
10
 
11
+ import atdd
12
+ from atdd.coach.utils.repo import find_repo_root
11
13
 
12
- REPO_ROOT = Path(__file__).resolve().parents[4]
13
- RED_CONVENTION = REPO_ROOT / "atdd" / "tester" / "conventions" / "red.convention.yaml"
14
+
15
+ REPO_ROOT = find_repo_root()
16
+
17
+ # Package resources (conventions, schemas)
18
+ ATDD_PKG_DIR = Path(atdd.__file__).resolve().parent
19
+ RED_CONVENTION = ATDD_PKG_DIR / "tester" / "conventions" / "red.convention.yaml"
14
20
 
15
21
 
16
22
  @pytest.mark.tester
@@ -10,12 +10,19 @@ import re
10
10
  import json
11
11
  from jsonschema import validate, ValidationError
12
12
 
13
+ import atdd
14
+ from atdd.coach.utils.repo import find_repo_root
15
+
13
16
  # Path constants
14
- REPO_ROOT = Path(__file__).resolve().parents[4]
17
+ # Consumer repo artifacts
18
+ REPO_ROOT = find_repo_root()
15
19
  TELEMETRY_DIR = REPO_ROOT / "telemetry"
16
20
  CONTRACTS_DIR = REPO_ROOT / "contracts"
17
21
  PLAN_DIR = REPO_ROOT / "plan"
18
- META_SCHEMA_PATH = REPO_ROOT / "atdd" / "tester" / "schemas" / "telemetry.schema.json"
22
+
23
+ # Package resources (conventions, schemas)
24
+ ATDD_PKG_DIR = Path(atdd.__file__).resolve().parent
25
+ META_SCHEMA_PATH = ATDD_PKG_DIR / "tester" / "schemas" / "telemetry.schema.json"
19
26
 
20
27
 
21
28
  @pytest.fixture
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atdd
3
- Version: 0.3.3
3
+ Version: 0.4.1
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