cmd-propagate-bypasses-api
OUT premise
`cmd_propagate` is the only CLI handler that bypasses `api.py`, going directly to `Storage` → `Network.recompute_all()` → `Storage.save()` — a design inconsistency in the otherwise pure-presentation CLI layer.
Summary
The propagate command in the CLI breaks the architectural pattern followed by every other command. Instead of routing through the API layer like the rest of the CLI, it directly manipulates the storage and network layers. This matters because it means changes to the API layer (validation, logging, event hooks) won't apply to propagation, creating a potential source of bugs where propagation behaves differently from other operations.
Dependents
These beliefs depend on this one:
- cli-is-pure-delegation-layer — The CLI is a pure delegation layer: every handler dispatches through a flat dict lookup to API functions with no business logic, producing binary exit codes and correct stream separation — a complete separation of formatting from computation.
- cli-is-verified-end-to-end — The CLI is verified through hermetic end-to-end integration tests (isolated databases per test, full argv-parsing pipeline, deterministic stream-correct output) — unless cmd_propagate bypasses the API layer, leaving one code path's safety guarantees unverifiable through the standard integration testing harness.
Details
| Source | entries/2026/04/24/reasons_lib-cli.md |