Diagnostics
The laboratory pipeline: plates and sequences move from scan, through sequencing, to RNA yield predictions. This is where the choreography lives — one plate event fans out into many sequence and zone events.
Overview
The Diagnostics domain owns every event whose Firestore path begins with
events/plate/*, events/sequence/*, events/sample/*,
events/spectroscopy/* and events/harvest/*.
A plate is a physical tray of samples. As it moves through the lab, the CropDx
backend writes plate.* events. functions-delphi consumes those and fans them
out into per-sequence and per-zone events, which in turn trigger grower
notifications and report generation. This domain is the heart of the
choreography, so keep its <NodeGraph/> accurate.
Boundary rationale
These message types share one bounded context: the lab/sequencing workflow and
its data (plates, sequences, samples, spectroscopy, harvests). They are produced
and consumed together, and they reference the same identifiers (plateId,
sequenceId, sampleId). Grouping them keeps the fan-out visible in one place.