Tach is one backend dependency gate. It enforces declared boundaries and external import policy, but a green result is not a complete architecture claim until every production module is declared and the structural tests cover ADR 029.
Application slices are declared under
application/<bounded_context>/features/<feature>. Application owns use cases
and consumer ports; runtime composition belongs under
orchestration/<bounded_context>/features/<feature>. Existing
application/reservation_orchestration is migration debt, not a pattern for new
code.
Adapter slices follow the same rule. Pricing settlement adapters live under adapters/pricing_settlement/features/<feature>, not flat adapters/payment, adapters/pricing, or adapters/settlement folders.
CI gate
Section titled “CI gate”uv run tach check --dependencies --interfaces --exactuv run tach check-externalpytest also includes architecture tests that assert the DDD folder shape.
Current status
Section titled “Current status”The 2026-07-13 audit observed exact = false, no declared public-interface
count, and an incomplete module graph in tach.toml. The CLI is still invoked
with --exact, but that does not discover undeclared production ownership.
Backend ee7b9b8 added initial root restrictions and a full-tree structural
layer-direction test. Report the gate as partial until declarations and public
feature contracts cover the complete domain, application, adapters,
interfaces, orchestration, and platform graph.