ADR 0005 — One binary, three roles, and every role migrates
Guided views
Explore this system
Step through curated paths without changing the source diagram.
Beat
Next
ReadyChapter 01 / 01
Guided chapter
Diagram guideExplore this system
Inspecting compiled semantics
E ExportT ThemeS Style0 Reset+ Zoom in- Zoom outEsc Close
Find a node
⌕/
No matching nodes
Semantic passport
Verified source
Authored reach
Route probeChoose a start node
Pick two semantic nodes on the diagram
Choose the source, then the destination. Direction matters.
Semantic lensCompare system roles
Choose up to two semantic kinds. One reveals its real traffic; two compare only direct authored relationships.
Choose a kind to inspect its nodes and touching relationships.
Semantic radar
Building overview
Click nodeDrag to pan
Semantic radar needs more MAP space.
Context
• Before: a web image, a worker image and a migration job from one tree, plus an init container whose only purpose was to make the other two wait
• Most incidents were ordering: a worker before the migration, a job that had already run, a rollback that left two images on different schemas
Consequences
• Deploying is kubectl set image on two deployments of the same image; a worker cannot serve a stale schema, it applied the schema itself
• A slow migration makes every replica's boot slow, visible in the rollout; a later breaking change must choose expand-and-overlap or stop-then-migrate
Evidence
• go test ./kit/app -run TestWorkerRelaysAndAnswersItsProbes: the worker migrates, serves /health and /ready only, relays the outbox
• go test ./kit/db -run TestMigrateIsIdempotent: Migrate twice, each file applied once; a fresh database, no old-ledger conversion is claimed