The whole platform’s relational shape in one diagram: every table, its primary
and foreign keys, and the references between them. It is generated from the
live schema by make gen, so it cannot fall out of step with the tables; a
schema change that forgets to regenerate is caught by the ERD drift test.
Tables are grouped into subsystem containers. Each table shows only its
primary-key and foreign-key columns, the relational skeleton; the full
column list lives in its migration and its Storage Gateway type. Each edge is a
foreign key, drawn from the referencing column to the row it points at;
edges that cross container borders are the seams between subsystems
(fleet.component.product_id pointing at catalog.product.id).
A table not yet assigned to a subsystem would render in an unclustered
container, but the introspection test hard-fails on any unmapped table, so the
failure is the prompt to add the table to the cluster map in
internal/erd/cluster.go (cmd/erdgen only calls it).
identity - who can act and what they may do: principals (human and
service), groups, grants, roles, the typed-slot system-role guard, and the
impersonation trail.
fleet - what is being monitored: locations, systems, components, and the
interfaces a component exposes.
catalog - the shared reference library: vendors, products, drivers,
component types, and standards, plus the properties they define.
telemetry - the five-lane observability model
(ADR-0063,
ADR-0079):
the typed registries (metric_type, property_type, event_type,
command_type) over the bare-noun data tables (metric, property, event,
command, log_line) and the alarms raised off them (alarm).
collection - where and how telemetry is gathered: the nodes that run probes,
the tasks they execute, and the node_log self-log lane.
config - the settings, variables, secrets, and credentials that parameterize
everything above.
content - the cross-cutting attachments: blobs, files, and the tag bindings
that label any entity.
audit - the immutable record of every privileged mutation and auth event.