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 transactional outbox, a river job queue with its own tables, workers and migrations, and ad-hoc goroutines
• The outbox and the queue solved the same problem: two sets of tables to migrate and two answers to why did that not run
Consequences
• Enqueueing cannot fail apart from the write it belongs to; delivery is at-least-once and handling exactly-once through a claim in platformkit_handled
• Ordering is per stream, not per aggregate; a periodic job that hangs holds its lock; a row in platformkit_dead_letters is an alert nothing redelivers
Evidence
• go test ./kit/events ./kit/jobs: TestPublishIsPartOfTheTransaction, and the runs-once-however-often-delivered, concurrent-relay and one-runner cases beside it
• validateEvents at boot refuses a route that would publish an undeclared event; the claim closes the redelivery hole, not every hole