Workspace Layout¶
The repository layout is part of the design language. A good top-level layout makes it obvious where a concern belongs before a reader opens implementation detail.
Layout Map¶
flowchart LR
root["repository root"]
packages["packages"]
docs["docs"]
apis["apis"]
automation["Makefile, makes, and workflows"]
governed["governed generated artifacts and configs"]
root --> packages
root --> docs
root --> apis
root --> automation
root --> governed
This page should help a reader place a concern before reading code. The layout works when the tree itself reinforces the package split and the shared surfaces, instead of forcing readers to guess.
Top-Level Areas¶
packages/for publishable Python distributions and their owned behaviorapis/for shared schema sources and pinned artifactsdocs/for the canonical handbook that routes readers into ownersmakes/andMakefilefor shared automation and command routing.github/workflows/for verification and release executionartifacts/for generated or checked validation outputconfigs/for root-managed tool configuration
Governed Versus Local¶
Treat apis/, docs/, Makefile, makes/, and .github/workflows/ as
shared root surfaces. Treat packages/ as the place where product behavior and
package-local contracts should stay visible.
Skepticism Signals¶
Be cautious when a change:
- introduces product logic under root automation instead of in a package
- writes proof output into an ad hoc location rather than a governed surface
- adds a top-level directory without making the ownership reason obvious
First Proof Checks¶
packages/to confirm package-local ownershipMakefile,makes/, and.github/workflows/for shared automation claimsapis/anddocs/for shared schema or documentation structure claims
Design Pressure¶
Top-level trees drift when convenience directories appear faster than ownership rules. If a new path makes placement harder instead of easier, the layout is already teaching the wrong lesson.