The C4 drill-down
System → container → component → code item: the four nesting levels and what belongs at each.
View 4 decomposes the estate in four strict levels:
- System — one box when you explain the estate to an outsider. Owns containers.
- Container — the independently runnable/deployable unit: a service, a database, a web app, a CLI, a message queue, a static site. The test: *could this run or ship on its own?* (All WAD blocks live in the wcl.wad namespace, so the kind is plain container — it never collides with wdoc's diagram shape of the same name.)
- Component — a cohesive part inside a container: a module, a handler family, a store. No deployment identity of its own.
- Code item — a diagram of code-level structure: a module graph, a DB schema, a class diagram, or an API surface (kind selects the renderer). Code items are generated by extractor scripts and document the public interface only — never hand-drawn mirrors of internal structure.
The drill-down stops at interfaces: internals below the public surface change too often to document and are better read from the code itself.