546 modules, 2258 internal imports. Every declared contract holds: the deterministic core reaches no model-facing module at any depth, every package has a layer, and no module imports from a layer above its own, deferred imports included, outside a main() entry point. 7 dependency cycles, each broken at load by a deferred import in one direction — real coupling, safe ordering, and reported rather than scored as clean.
Every declared contract holds.
| Layer | Packages |
|---|---|
| 7 | demo · eval · lui · status |
| 6 | agents · paper · register |
| 5 | desk · research · strategies |
| 4 | backtest · execution · sim |
| 3 | llm · market |
| 2 | cost · decision · proof · risk |
| 1 | truth |
| 0 | vendor |
A module imports only from its own layer or below. The deterministic core (truth, cost, risk, decision, backtest) may not reach llm, agents at any depth: numbers are computed, never asked for.
Each is real coupling. "Safe at load" means one direction is a deferred import, so the modules load in either order; a cycle that breaks at load would fail the check.
Instability is efferent / (afferent + efferent): 0 is depended on and depends on nothing, 1 the reverse. The core sits at the stable end on purpose.
| Package | Modules | Used by | Uses | Instability |
|---|---|---|---|---|
| cost | 2 | 35 | 0 | 0.0 |
| sim | 4 | 2 | 0 | 0.0 |
| truth | 15 | 288 | 0 | 0.0 |
| vendor | 3 | 0 | 0 | — |
| market | 39 | 138 | 3 | 0.021 |
| llm | 8 | 30 | 1 | 0.032 |
| backtest | 7 | 36 | 2 | 0.053 |
| decision | 5 | 28 | 2 | 0.067 |
| risk | 12 | 36 | 3 | 0.077 |
| desk | 31 | 60 | 12 | 0.167 |
| paper | 13 | 43 | 10 | 0.189 |
| execution | 19 | 25 | 6 | 0.194 |
| proof | 2 | 4 | 1 | 0.2 |
| research | 28 | 26 | 8 | 0.235 |
| lui | 71 | 32 | 11 | 0.256 |
| agents | 17 | 19 | 9 | 0.321 |
| strategies | 3 | 4 | 2 | 0.333 |
| status | 1 | 1 | 3 | 0.75 |
| eval | 255 | 5 | 17 | 0.773 |
| demo | 4 | 1 | 8 | 0.889 |
| register | 6 | 0 | 3 | 1.0 |
Checked 2026-09-28 00:42 UTC by
eval/architecture.py, which
the public CI runs on every push; the artefact is
data/architecture.json.