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.
- atdd/__init__.py +6 -0
- atdd/__main__.py +4 -0
- atdd/cli.py +404 -0
- atdd/coach/__init__.py +0 -0
- atdd/coach/commands/__init__.py +0 -0
- atdd/coach/commands/add_persistence_metadata.py +215 -0
- atdd/coach/commands/analyze_migrations.py +188 -0
- atdd/coach/commands/consumers.py +720 -0
- atdd/coach/commands/infer_governance_status.py +149 -0
- atdd/coach/commands/initializer.py +177 -0
- atdd/coach/commands/interface.py +1078 -0
- atdd/coach/commands/inventory.py +565 -0
- atdd/coach/commands/migration.py +240 -0
- atdd/coach/commands/registry.py +1560 -0
- atdd/coach/commands/session.py +430 -0
- atdd/coach/commands/sync.py +405 -0
- atdd/coach/commands/test_interface.py +399 -0
- atdd/coach/commands/test_runner.py +141 -0
- atdd/coach/commands/tests/__init__.py +1 -0
- atdd/coach/commands/tests/test_telemetry_array_validation.py +235 -0
- atdd/coach/commands/traceability.py +4264 -0
- atdd/coach/conventions/session.convention.yaml +754 -0
- atdd/coach/overlays/__init__.py +2 -0
- atdd/coach/overlays/claude.md +2 -0
- atdd/coach/schemas/config.schema.json +34 -0
- atdd/coach/schemas/manifest.schema.json +101 -0
- atdd/coach/templates/ATDD.md +282 -0
- atdd/coach/templates/SESSION-TEMPLATE.md +327 -0
- atdd/coach/utils/__init__.py +0 -0
- atdd/coach/utils/graph/__init__.py +0 -0
- atdd/coach/utils/graph/urn.py +875 -0
- atdd/coach/validators/__init__.py +0 -0
- atdd/coach/validators/shared_fixtures.py +365 -0
- atdd/coach/validators/test_enrich_wagon_registry.py +167 -0
- atdd/coach/validators/test_registry.py +575 -0
- atdd/coach/validators/test_session_validation.py +1183 -0
- atdd/coach/validators/test_traceability.py +448 -0
- atdd/coach/validators/test_update_feature_paths.py +108 -0
- atdd/coach/validators/test_validate_contract_consumers.py +297 -0
- atdd/coder/__init__.py +1 -0
- atdd/coder/conventions/adapter.recipe.yaml +88 -0
- atdd/coder/conventions/backend.convention.yaml +460 -0
- atdd/coder/conventions/boundaries.convention.yaml +666 -0
- atdd/coder/conventions/commons.convention.yaml +460 -0
- atdd/coder/conventions/complexity.recipe.yaml +109 -0
- atdd/coder/conventions/component-naming.convention.yaml +178 -0
- atdd/coder/conventions/design.convention.yaml +327 -0
- atdd/coder/conventions/design.recipe.yaml +273 -0
- atdd/coder/conventions/dto.convention.yaml +660 -0
- atdd/coder/conventions/frontend.convention.yaml +542 -0
- atdd/coder/conventions/green.convention.yaml +1012 -0
- atdd/coder/conventions/presentation.convention.yaml +587 -0
- atdd/coder/conventions/refactor.convention.yaml +535 -0
- atdd/coder/conventions/technology.convention.yaml +206 -0
- atdd/coder/conventions/tests/__init__.py +0 -0
- atdd/coder/conventions/tests/test_adapter_recipe.py +302 -0
- atdd/coder/conventions/tests/test_complexity_recipe.py +289 -0
- atdd/coder/conventions/tests/test_component_taxonomy.py +278 -0
- atdd/coder/conventions/tests/test_component_urn_naming.py +165 -0
- atdd/coder/conventions/tests/test_thinness_recipe.py +286 -0
- atdd/coder/conventions/thinness.recipe.yaml +82 -0
- atdd/coder/conventions/train.convention.yaml +325 -0
- atdd/coder/conventions/verification.protocol.yaml +53 -0
- atdd/coder/schemas/design_system.schema.json +361 -0
- atdd/coder/validators/__init__.py +0 -0
- atdd/coder/validators/test_commons_structure.py +485 -0
- atdd/coder/validators/test_complexity.py +416 -0
- atdd/coder/validators/test_cross_language_consistency.py +431 -0
- atdd/coder/validators/test_design_system_compliance.py +413 -0
- atdd/coder/validators/test_dto_testing_patterns.py +268 -0
- atdd/coder/validators/test_green_cross_stack_layers.py +168 -0
- atdd/coder/validators/test_green_layer_dependencies.py +148 -0
- atdd/coder/validators/test_green_python_layer_structure.py +103 -0
- atdd/coder/validators/test_green_supabase_layer_structure.py +103 -0
- atdd/coder/validators/test_import_boundaries.py +396 -0
- atdd/coder/validators/test_init_file_urns.py +593 -0
- atdd/coder/validators/test_preact_layer_boundaries.py +221 -0
- atdd/coder/validators/test_presentation_convention.py +260 -0
- atdd/coder/validators/test_python_architecture.py +674 -0
- atdd/coder/validators/test_quality_metrics.py +420 -0
- atdd/coder/validators/test_station_master_pattern.py +244 -0
- atdd/coder/validators/test_train_infrastructure.py +454 -0
- atdd/coder/validators/test_train_urns.py +293 -0
- atdd/coder/validators/test_typescript_architecture.py +616 -0
- atdd/coder/validators/test_usecase_structure.py +421 -0
- atdd/coder/validators/test_wagon_boundaries.py +586 -0
- atdd/conftest.py +126 -0
- atdd/planner/__init__.py +1 -0
- atdd/planner/conventions/acceptance.convention.yaml +538 -0
- atdd/planner/conventions/appendix.convention.yaml +187 -0
- atdd/planner/conventions/artifact-naming.convention.yaml +852 -0
- atdd/planner/conventions/component.convention.yaml +670 -0
- atdd/planner/conventions/criteria.convention.yaml +141 -0
- atdd/planner/conventions/feature.convention.yaml +371 -0
- atdd/planner/conventions/interface.convention.yaml +382 -0
- atdd/planner/conventions/steps.convention.yaml +141 -0
- atdd/planner/conventions/train.convention.yaml +552 -0
- atdd/planner/conventions/wagon.convention.yaml +275 -0
- atdd/planner/conventions/wmbt.convention.yaml +258 -0
- atdd/planner/schemas/acceptance.schema.json +336 -0
- atdd/planner/schemas/appendix.schema.json +78 -0
- atdd/planner/schemas/component.schema.json +114 -0
- atdd/planner/schemas/feature.schema.json +197 -0
- atdd/planner/schemas/train.schema.json +192 -0
- atdd/planner/schemas/wagon.schema.json +281 -0
- atdd/planner/schemas/wmbt.schema.json +59 -0
- atdd/planner/validators/__init__.py +0 -0
- atdd/planner/validators/conftest.py +5 -0
- atdd/planner/validators/test_draft_wagon_registry.py +374 -0
- atdd/planner/validators/test_plan_cross_refs.py +240 -0
- atdd/planner/validators/test_plan_uniqueness.py +224 -0
- atdd/planner/validators/test_plan_urn_resolution.py +268 -0
- atdd/planner/validators/test_plan_wagons.py +174 -0
- atdd/planner/validators/test_train_validation.py +514 -0
- atdd/planner/validators/test_wagon_urn_chain.py +648 -0
- atdd/planner/validators/test_wmbt_consistency.py +327 -0
- atdd/planner/validators/test_wmbt_vocabulary.py +632 -0
- atdd/tester/__init__.py +1 -0
- atdd/tester/conventions/artifact.convention.yaml +257 -0
- atdd/tester/conventions/contract.convention.yaml +1009 -0
- atdd/tester/conventions/filename.convention.yaml +555 -0
- atdd/tester/conventions/migration.convention.yaml +509 -0
- atdd/tester/conventions/red.convention.yaml +797 -0
- atdd/tester/conventions/routing.convention.yaml +51 -0
- atdd/tester/conventions/telemetry.convention.yaml +458 -0
- atdd/tester/schemas/a11y.tmpl.json +17 -0
- atdd/tester/schemas/artifact.schema.json +189 -0
- atdd/tester/schemas/contract.schema.json +591 -0
- atdd/tester/schemas/contract.tmpl.json +95 -0
- atdd/tester/schemas/db.tmpl.json +20 -0
- atdd/tester/schemas/e2e.tmpl.json +17 -0
- atdd/tester/schemas/edge_function.tmpl.json +17 -0
- atdd/tester/schemas/event.tmpl.json +17 -0
- atdd/tester/schemas/http.tmpl.json +19 -0
- atdd/tester/schemas/job.tmpl.json +18 -0
- atdd/tester/schemas/load.tmpl.json +21 -0
- atdd/tester/schemas/metric.tmpl.json +19 -0
- atdd/tester/schemas/pack.schema.json +139 -0
- atdd/tester/schemas/realtime.tmpl.json +20 -0
- atdd/tester/schemas/rls.tmpl.json +18 -0
- atdd/tester/schemas/script.tmpl.json +16 -0
- atdd/tester/schemas/sec.tmpl.json +18 -0
- atdd/tester/schemas/storage.tmpl.json +18 -0
- atdd/tester/schemas/telemetry.schema.json +128 -0
- atdd/tester/schemas/telemetry_tracking_manifest.schema.json +143 -0
- atdd/tester/schemas/test_filename.schema.json +194 -0
- atdd/tester/schemas/test_intent.schema.json +179 -0
- atdd/tester/schemas/unit.tmpl.json +18 -0
- atdd/tester/schemas/visual.tmpl.json +18 -0
- atdd/tester/schemas/ws.tmpl.json +17 -0
- atdd/tester/utils/__init__.py +0 -0
- atdd/tester/utils/filename.py +300 -0
- atdd/tester/validators/__init__.py +0 -0
- atdd/tester/validators/cleanup_duplicate_headers.py +116 -0
- atdd/tester/validators/cleanup_duplicate_headers_v2.py +135 -0
- atdd/tester/validators/conftest.py +5 -0
- atdd/tester/validators/coverage_gap_report.py +321 -0
- atdd/tester/validators/fix_dual_ac_references.py +179 -0
- atdd/tester/validators/remove_duplicate_lines.py +93 -0
- atdd/tester/validators/test_acceptance_urn_filename_mapping.py +359 -0
- atdd/tester/validators/test_acceptance_urn_separator.py +166 -0
- atdd/tester/validators/test_artifact_naming_category.py +307 -0
- atdd/tester/validators/test_contract_schema_compliance.py +706 -0
- atdd/tester/validators/test_contracts_structure.py +200 -0
- atdd/tester/validators/test_coverage_adequacy.py +797 -0
- atdd/tester/validators/test_dual_ac_reference.py +225 -0
- atdd/tester/validators/test_fixture_validity.py +372 -0
- atdd/tester/validators/test_isolation.py +487 -0
- atdd/tester/validators/test_migration_coverage.py +204 -0
- atdd/tester/validators/test_migration_criteria.py +276 -0
- atdd/tester/validators/test_migration_generation.py +116 -0
- atdd/tester/validators/test_python_test_naming.py +410 -0
- atdd/tester/validators/test_red_layer_validation.py +95 -0
- atdd/tester/validators/test_red_python_layer_structure.py +87 -0
- atdd/tester/validators/test_red_supabase_layer_structure.py +90 -0
- atdd/tester/validators/test_telemetry_structure.py +634 -0
- atdd/tester/validators/test_typescript_test_naming.py +301 -0
- atdd/tester/validators/test_typescript_test_structure.py +84 -0
- atdd-0.2.1.dist-info/METADATA +221 -0
- atdd-0.2.1.dist-info/RECORD +184 -0
- atdd-0.2.1.dist-info/WHEEL +5 -0
- atdd-0.2.1.dist-info/entry_points.txt +2 -0
- atdd-0.2.1.dist-info/licenses/LICENSE +674 -0
- atdd-0.2.1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://atdd.dev/schemas/config.schema.json",
|
|
4
|
+
"title": "ATDD Config",
|
|
5
|
+
"description": "Schema for .atdd/config.yaml configuration file",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"version": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"description": "Configuration schema version",
|
|
11
|
+
"pattern": "^[0-9]+\\.[0-9]+$",
|
|
12
|
+
"examples": ["1.0"]
|
|
13
|
+
},
|
|
14
|
+
"sync": {
|
|
15
|
+
"type": "object",
|
|
16
|
+
"description": "Agent config file sync settings",
|
|
17
|
+
"properties": {
|
|
18
|
+
"agents": {
|
|
19
|
+
"type": "array",
|
|
20
|
+
"description": "List of agents to sync ATDD rules to",
|
|
21
|
+
"items": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"enum": ["claude", "codex", "gemini", "qwen"]
|
|
24
|
+
},
|
|
25
|
+
"uniqueItems": true,
|
|
26
|
+
"default": ["claude"]
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"additionalProperties": false
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"required": ["version"],
|
|
33
|
+
"additionalProperties": false
|
|
34
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "manifest.schema.json",
|
|
4
|
+
"title": "ATDD Session Manifest",
|
|
5
|
+
"description": "Schema for .atdd/manifest.yaml - machine-readable session tracking",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["version", "sessions_dir", "sessions"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"version": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"description": "Manifest schema version",
|
|
12
|
+
"pattern": "^\\d+\\.\\d+$",
|
|
13
|
+
"examples": ["1.0"]
|
|
14
|
+
},
|
|
15
|
+
"sessions_dir": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"description": "Path to sessions directory relative to repo root",
|
|
18
|
+
"default": "atdd-sessions",
|
|
19
|
+
"examples": ["atdd-sessions"]
|
|
20
|
+
},
|
|
21
|
+
"created": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"format": "date",
|
|
24
|
+
"description": "Date the manifest was created (YYYY-MM-DD)"
|
|
25
|
+
},
|
|
26
|
+
"sessions": {
|
|
27
|
+
"type": "array",
|
|
28
|
+
"description": "List of tracked sessions",
|
|
29
|
+
"items": {
|
|
30
|
+
"$ref": "#/$defs/session"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"$defs": {
|
|
35
|
+
"session": {
|
|
36
|
+
"type": "object",
|
|
37
|
+
"description": "Session entry in manifest",
|
|
38
|
+
"required": ["id", "slug", "file", "type", "status", "created"],
|
|
39
|
+
"properties": {
|
|
40
|
+
"id": {
|
|
41
|
+
"type": "string",
|
|
42
|
+
"description": "Two-digit session identifier",
|
|
43
|
+
"pattern": "^\\d{2}$",
|
|
44
|
+
"examples": ["01", "02", "10"]
|
|
45
|
+
},
|
|
46
|
+
"slug": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"description": "Kebab-case session name",
|
|
49
|
+
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
|
|
50
|
+
"examples": ["my-feature", "api-migration"]
|
|
51
|
+
},
|
|
52
|
+
"file": {
|
|
53
|
+
"type": "string",
|
|
54
|
+
"description": "Path to session file relative to sessions_dir",
|
|
55
|
+
"pattern": "^(archive/)?SESSION-\\d{2}-.+\\.md$",
|
|
56
|
+
"examples": [
|
|
57
|
+
"SESSION-01-my-feature.md",
|
|
58
|
+
"archive/SESSION-01-my-feature.md"
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
"type": {
|
|
62
|
+
"type": "string",
|
|
63
|
+
"description": "Session type determining workflow",
|
|
64
|
+
"enum": [
|
|
65
|
+
"implementation",
|
|
66
|
+
"migration",
|
|
67
|
+
"refactor",
|
|
68
|
+
"analysis",
|
|
69
|
+
"planning",
|
|
70
|
+
"cleanup",
|
|
71
|
+
"tracking",
|
|
72
|
+
"unknown"
|
|
73
|
+
]
|
|
74
|
+
},
|
|
75
|
+
"status": {
|
|
76
|
+
"type": "string",
|
|
77
|
+
"description": "Current session status",
|
|
78
|
+
"enum": [
|
|
79
|
+
"INIT",
|
|
80
|
+
"PLANNED",
|
|
81
|
+
"ACTIVE",
|
|
82
|
+
"BLOCKED",
|
|
83
|
+
"COMPLETE",
|
|
84
|
+
"OBSOLETE",
|
|
85
|
+
"UNKNOWN"
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
"created": {
|
|
89
|
+
"type": "string",
|
|
90
|
+
"format": "date",
|
|
91
|
+
"description": "Date the session was created (YYYY-MM-DD)"
|
|
92
|
+
},
|
|
93
|
+
"archived": {
|
|
94
|
+
"type": ["string", "null"],
|
|
95
|
+
"format": "date",
|
|
96
|
+
"description": "Date the session was archived (YYYY-MM-DD), null if not archived"
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
---
|
|
2
|
+
missions:
|
|
3
|
+
orchestrate_atdd: "ATDD lifecycle (planner → tester RED → coder GREEN → coder REFACTOR)"
|
|
4
|
+
validate_phase_transitions: "Phase transitions and quality gates per conventions and schemas"
|
|
5
|
+
required: true
|
|
6
|
+
|
|
7
|
+
manifest:
|
|
8
|
+
- trains: "plan/_trains.yaml"
|
|
9
|
+
- wagons: "plan/_wagons.yaml"
|
|
10
|
+
- features: "plan/*/_features.yaml"
|
|
11
|
+
- wmbt: "plan/*/*.yaml"
|
|
12
|
+
- artifacts: "contracts/_artifacts.yaml"
|
|
13
|
+
- contracts: "contracts/_contracts.yaml"
|
|
14
|
+
- telemetry: "telemetry/_telemetry.yaml"
|
|
15
|
+
|
|
16
|
+
tests:
|
|
17
|
+
- frontend: "web/tests"
|
|
18
|
+
- supabase: "supabase/functions/*/*/tests/"
|
|
19
|
+
- python: "python/*/*/tests"
|
|
20
|
+
- packages: "packages/*/tests"
|
|
21
|
+
- e2e: "e2e"
|
|
22
|
+
|
|
23
|
+
code:
|
|
24
|
+
- frontend: "web/src"
|
|
25
|
+
- supabase: "supabase/functions"
|
|
26
|
+
- python: "python"
|
|
27
|
+
- packages: "packages"
|
|
28
|
+
- migrations: "supabase/migrations"
|
|
29
|
+
|
|
30
|
+
# Dev Servers
|
|
31
|
+
dev_servers:
|
|
32
|
+
backend:
|
|
33
|
+
command: "cd python && python3 game.py"
|
|
34
|
+
url: "http://127.0.0.1:8000"
|
|
35
|
+
swagger: "http://127.0.0.1:8000/docs"
|
|
36
|
+
frontend:
|
|
37
|
+
command: "cd web && npm run dev"
|
|
38
|
+
url: "http://localhost:5173"
|
|
39
|
+
supabase:
|
|
40
|
+
mode: "remote only"
|
|
41
|
+
cli: "supabase CLI for migrations, db commands (never run `supabase start`)"
|
|
42
|
+
note: "All Supabase services accessed via remote project, not local Docker"
|
|
43
|
+
|
|
44
|
+
# Audits & Validation (Give context, pinpoint issues, validate compliance)
|
|
45
|
+
audits:
|
|
46
|
+
cli: "atdd"
|
|
47
|
+
purpose: "Meta-tests that validate ATDD artifacts against conventions"
|
|
48
|
+
|
|
49
|
+
commands:
|
|
50
|
+
inventory: "atdd --inventory"
|
|
51
|
+
status: "atdd --status"
|
|
52
|
+
quick_check: "atdd --quick"
|
|
53
|
+
validate_all: "atdd --test all"
|
|
54
|
+
validate_planner: "atdd --test planner"
|
|
55
|
+
validate_tester: "atdd --test tester"
|
|
56
|
+
validate_coder: "atdd --test coder"
|
|
57
|
+
with_coverage: "atdd --test all --coverage"
|
|
58
|
+
with_html: "atdd --test all --html"
|
|
59
|
+
|
|
60
|
+
workflow:
|
|
61
|
+
before_init: "Run planner audits to validate plan structure"
|
|
62
|
+
after_init: "Validate wagon URNs, cross-refs, uniqueness"
|
|
63
|
+
before_planned: "Run tester audits to validate test prerequisites"
|
|
64
|
+
after_planned: "Validate test naming, contracts, coverage"
|
|
65
|
+
before_red: "Validate layer structure expectations"
|
|
66
|
+
after_red: "Validate tests are RED and properly structured"
|
|
67
|
+
before_green: "Run coder audits for architecture readiness"
|
|
68
|
+
after_green: "Validate layer dependencies, boundaries"
|
|
69
|
+
after_refactor: "Validate architecture compliance, quality metrics"
|
|
70
|
+
continuous: "CI runs 'atdd --test all' on every commit"
|
|
71
|
+
|
|
72
|
+
audit_scope:
|
|
73
|
+
planner: "src/atdd/planner/validators/*.py (wagons, trains, URNs, cross-refs, WMBT)"
|
|
74
|
+
tester: "src/atdd/tester/validators/*.py (test naming, contracts, telemetry, coverage)"
|
|
75
|
+
coder: "src/atdd/coder/validators/*.py (architecture, boundaries, layers, quality)"
|
|
76
|
+
coach: "src/atdd/coach/validators/*.py (registry, traceability, contract consumers)"
|
|
77
|
+
|
|
78
|
+
usage:
|
|
79
|
+
pinpoint_issues: "Audits fail with detailed error messages showing violations"
|
|
80
|
+
give_context: "Error messages reference specific conventions and schemas"
|
|
81
|
+
validate_compliance: "All audits must pass before phase transition"
|
|
82
|
+
|
|
83
|
+
# ATDD Lifecycle (Detailed steps in agent conventions)
|
|
84
|
+
atdd_cycle:
|
|
85
|
+
phases:
|
|
86
|
+
- name: INIT
|
|
87
|
+
agent: planner
|
|
88
|
+
conventions: "src/atdd/planner/conventions/*.yaml"
|
|
89
|
+
audits: "src/atdd/planner/validators/*.py"
|
|
90
|
+
deliverables: ["train_path", "wagon_path", "wmbt_path", "feature_path"]
|
|
91
|
+
transitions: "INIT → PLANNED"
|
|
92
|
+
|
|
93
|
+
- name: PLANNED
|
|
94
|
+
agent: tester
|
|
95
|
+
conventions: "src/atdd/tester/conventions/*.yaml"
|
|
96
|
+
audits: "src/atdd/tester/validators/*.py"
|
|
97
|
+
deliverables: ["test_paths", "contract_paths", "telemetry_paths"]
|
|
98
|
+
transitions: "PLANNED → RED"
|
|
99
|
+
|
|
100
|
+
- name: RED
|
|
101
|
+
agent: coder
|
|
102
|
+
task: "Make tests GREEN"
|
|
103
|
+
conventions: "src/atdd/coder/conventions/green.convention.yaml"
|
|
104
|
+
audits: "src/atdd/coder/validators/test_green_*.py"
|
|
105
|
+
deliverables: ["code_paths", "tests_passing"]
|
|
106
|
+
transitions: "RED → GREEN"
|
|
107
|
+
|
|
108
|
+
- name: GREEN
|
|
109
|
+
agent: coder
|
|
110
|
+
task: "REFACTOR to 4-layer architecture"
|
|
111
|
+
conventions: "src/atdd/coder/conventions/refactor.convention.yaml"
|
|
112
|
+
audits: "src/atdd/coder/validators/test_architecture_*.py"
|
|
113
|
+
deliverables: ["refactor_paths"]
|
|
114
|
+
transitions: "GREEN → REFACTOR"
|
|
115
|
+
|
|
116
|
+
- name: REFACTOR
|
|
117
|
+
status: complete
|
|
118
|
+
audits: "src/atdd/coder/validators/test_quality_metrics.py"
|
|
119
|
+
|
|
120
|
+
execution:
|
|
121
|
+
assess_first: "MUST assess current state before any action"
|
|
122
|
+
phase_transitions: "Explicit transitions with quality gates"
|
|
123
|
+
agent_handoff: "Dynamic handoff based on phase"
|
|
124
|
+
audit_enforcement: "All phase audits MUST pass before transition"
|
|
125
|
+
|
|
126
|
+
# Infrastructure
|
|
127
|
+
infrastructure:
|
|
128
|
+
contract_driven: true # All interfaces defined via JSON Schema contracts
|
|
129
|
+
persistence:
|
|
130
|
+
default: "Supabase JSONB" # Schema evolution without migrations
|
|
131
|
+
exceptions: "Relational for complex queries, indexes"
|
|
132
|
+
conventions:
|
|
133
|
+
contracts: "src/atdd/tester/conventions/contract.convention.yaml"
|
|
134
|
+
technology: "src/atdd/coder/conventions/technology.convention.yaml"
|
|
135
|
+
|
|
136
|
+
# Architecture (Detailed rules in conventions)
|
|
137
|
+
architecture:
|
|
138
|
+
conventions:
|
|
139
|
+
layers: "src/atdd/coder/conventions/backend.convention.yaml"
|
|
140
|
+
boundaries: "src/atdd/coder/conventions/boundaries.convention.yaml"
|
|
141
|
+
composition: "src/atdd/coder/conventions/green.convention.yaml"
|
|
142
|
+
design_system: "src/atdd/coder/conventions/design.convention.yaml"
|
|
143
|
+
|
|
144
|
+
principles:
|
|
145
|
+
- "Domain layer NEVER imports from other layers"
|
|
146
|
+
- "Dependencies point inward only (integration → application → domain)"
|
|
147
|
+
- "Test first (RED → GREEN → REFACTOR)"
|
|
148
|
+
- "Wagons communicate via contracts only"
|
|
149
|
+
- "composition.py/wagon.py are composition roots (survive refactoring)"
|
|
150
|
+
|
|
151
|
+
# Testing (Detailed rules in conventions)
|
|
152
|
+
testing:
|
|
153
|
+
conventions:
|
|
154
|
+
red: "src/atdd/tester/conventions/red.convention.yaml"
|
|
155
|
+
filename: "src/atdd/tester/conventions/filename.convention.yaml"
|
|
156
|
+
contract: "src/atdd/tester/conventions/contract.convention.yaml"
|
|
157
|
+
artifact: "src/atdd/tester/conventions/artifact.convention.yaml"
|
|
158
|
+
|
|
159
|
+
principles:
|
|
160
|
+
- "No ad-hoc tests - follow conventions"
|
|
161
|
+
- "Code must be inherently auditable with verbose logs"
|
|
162
|
+
- "State-of-the-art testing strategies only"
|
|
163
|
+
- "Test path determines implementation runtime"
|
|
164
|
+
- "Tests co-located with src (python/*/tests/, supabase/*/tests/)"
|
|
165
|
+
|
|
166
|
+
# Git Practices
|
|
167
|
+
git:
|
|
168
|
+
commits:
|
|
169
|
+
co_authored: false # DO NOT add "Co-Authored-By: Claude <noreply@anthropic.com>"
|
|
170
|
+
format: "conventional commits (feat:, fix:, docs:, refactor:, test:)"
|
|
171
|
+
atomic: "One commit per phase transition when meaningful"
|
|
172
|
+
|
|
173
|
+
workflow:
|
|
174
|
+
branch_strategy: "feature branches from main/mechanic"
|
|
175
|
+
phase_commits:
|
|
176
|
+
- "PLANNED: commit wagon + acceptance criteria"
|
|
177
|
+
- "RED: commit failing tests"
|
|
178
|
+
- "GREEN: commit passing implementation"
|
|
179
|
+
- "REFACTOR: commit clean architecture"
|
|
180
|
+
|
|
181
|
+
# Agent Coordination (Detailed in action files)
|
|
182
|
+
agents:
|
|
183
|
+
planner:
|
|
184
|
+
role: "Create wagons with acceptance criteria"
|
|
185
|
+
conventions: "src/atdd/planner/conventions/*.yaml"
|
|
186
|
+
schemas: "src/atdd/planner/schemas/*.json"
|
|
187
|
+
audits: "src/atdd/planner/validators/*.py"
|
|
188
|
+
|
|
189
|
+
tester:
|
|
190
|
+
role: "Generate RED tests from acceptance criteria"
|
|
191
|
+
conventions: "src/atdd/tester/conventions/*.yaml"
|
|
192
|
+
schemas: "src/atdd/tester/schemas/*.json"
|
|
193
|
+
audits: "src/atdd/tester/validators/*.py"
|
|
194
|
+
|
|
195
|
+
coder:
|
|
196
|
+
role: "Implement GREEN code, then REFACTOR to clean architecture"
|
|
197
|
+
conventions: "src/atdd/coder/conventions/*.yaml"
|
|
198
|
+
schemas: "src/atdd/coder/schemas/*.json"
|
|
199
|
+
audits: "src/atdd/coder/validators/*.py"
|
|
200
|
+
|
|
201
|
+
# Session Planning (Design before implementation)
|
|
202
|
+
# Note: atdd-sessions/ is created in the consuming repo via `atdd init`
|
|
203
|
+
sessions:
|
|
204
|
+
# Consumer repo paths (created via `atdd init`)
|
|
205
|
+
directory: "atdd-sessions/"
|
|
206
|
+
archive: "atdd-sessions/archive/"
|
|
207
|
+
config_dir: ".atdd/"
|
|
208
|
+
manifest: ".atdd/manifest.yaml"
|
|
209
|
+
# Package resources
|
|
210
|
+
template: "src/atdd/coach/templates/SESSION-TEMPLATE.md"
|
|
211
|
+
convention: "src/atdd/coach/conventions/session.convention.yaml"
|
|
212
|
+
|
|
213
|
+
commands:
|
|
214
|
+
init: "atdd init # Initialize atdd-sessions/ and .atdd/"
|
|
215
|
+
new: "atdd session new my-feature # Create SESSION-NN-my-feature.md"
|
|
216
|
+
list: "atdd session list # List all sessions from manifest"
|
|
217
|
+
archive: "atdd session archive 01 # Move session to archive/"
|
|
218
|
+
|
|
219
|
+
workflow:
|
|
220
|
+
init: "Run 'atdd init' to create atdd-sessions/ directory structure"
|
|
221
|
+
create: "Run 'atdd session new <slug>' to create new session from template"
|
|
222
|
+
fill: "Fill ALL sections - write 'N/A' if not applicable, never omit"
|
|
223
|
+
track: "Update Progress Tracker and Session Log after each work item"
|
|
224
|
+
validate: "python3 -m pytest src/atdd/coach/validators/test_session_*.py -v"
|
|
225
|
+
|
|
226
|
+
archetypes:
|
|
227
|
+
db: "Supabase PostgreSQL + JSONB"
|
|
228
|
+
be: "Python FastAPI 4-layer"
|
|
229
|
+
fe: "TypeScript/Preact 4-layer"
|
|
230
|
+
contracts: "JSON Schema contracts"
|
|
231
|
+
wmbt: "What Must Be True criteria"
|
|
232
|
+
wagon: "Bounded context module"
|
|
233
|
+
train: "Release orchestration"
|
|
234
|
+
telemetry: "Observability artifacts"
|
|
235
|
+
migrations: "Database schema evolution"
|
|
236
|
+
|
|
237
|
+
atdd_phases:
|
|
238
|
+
RED: "Write failing tests from acceptances"
|
|
239
|
+
GREEN: "Implement minimal code to pass tests"
|
|
240
|
+
REFACTOR: "Clean architecture, 4-layer compliance"
|
|
241
|
+
|
|
242
|
+
# Quality Gates (Detailed in action files)
|
|
243
|
+
validations:
|
|
244
|
+
phase_transitions:
|
|
245
|
+
INIT→PLANNED: "planner delivers wagon with acceptance criteria"
|
|
246
|
+
PLANNED→RED: "tester delivers RED tests"
|
|
247
|
+
RED→GREEN: "coder delivers passing tests"
|
|
248
|
+
GREEN→REFACTOR: "coder delivers clean architecture"
|
|
249
|
+
|
|
250
|
+
code_quality:
|
|
251
|
+
- "Domain layer has no external dependencies"
|
|
252
|
+
- "All tests pass before REFACTOR"
|
|
253
|
+
- "Architecture follows 4-layer pattern"
|
|
254
|
+
- "Wagons isolated via qualified imports"
|
|
255
|
+
- "Composition roots stable during refactor"
|
|
256
|
+
|
|
257
|
+
# Conventions Registry
|
|
258
|
+
conventions:
|
|
259
|
+
planner:
|
|
260
|
+
- "wagon.convention.yaml: wagon structure & URN naming"
|
|
261
|
+
- "acceptance.convention.yaml: acceptance criteria & harness types"
|
|
262
|
+
- "wmbt.convention.yaml: WMBT structure"
|
|
263
|
+
- "feature.convention.yaml: feature structure"
|
|
264
|
+
- "artifact.convention.yaml: artifact contracts"
|
|
265
|
+
|
|
266
|
+
tester:
|
|
267
|
+
- "red.convention.yaml: RED test generation (neurosymbolic)"
|
|
268
|
+
- "filename.convention.yaml: URN-based test naming"
|
|
269
|
+
- "contract.convention.yaml: schema validation"
|
|
270
|
+
- "artifact.convention.yaml: artifact validation"
|
|
271
|
+
|
|
272
|
+
coder:
|
|
273
|
+
- "green.convention.yaml: GREEN phase (make tests pass)"
|
|
274
|
+
- "refactor.convention.yaml: REFACTOR phase (clean architecture)"
|
|
275
|
+
- "boundaries.convention.yaml: wagon isolation & qualified imports"
|
|
276
|
+
- "backend.convention.yaml: 4-layer backend architecture"
|
|
277
|
+
- "frontend.convention.yaml: 4-layer frontend architecture"
|
|
278
|
+
- "design.convention.yaml: design system hierarchy"
|
|
279
|
+
|
|
280
|
+
coach:
|
|
281
|
+
- "session.convention.yaml: Session planning structure & archetypes"
|
|
282
|
+
---
|