# AGENTS.md
Read the repository root [`CLAUDE.md`](../../CLAUDE.md) before changing this crate.
`datum-agent` is a satellite crate: keep the data plane in Datum streams and keep the registry actor
as control plane only. Do not add the DCP network protocol here; expose registry handles, snapshots,
and event feeds that a protocol server can serve later.
Lifecycle rules:
- Job factories build blueprints. Materialization happens only inside the registry when a job is
started or restarted.
- Graceful drain uses the agent-owned `SharedKillSwitch` exposed through `JobContext`; graph
factories must wire `JobContext::drain_flow()` into the job data path to support drain.
- Restart policy is registry-visible. Do not hide daemon-managed restarts inside
`RestartSource`/`RestartFlow`/`RestartSink`.
- Lifecycle events are published through Datum's `Topic`; do not invent a separate broadcast
primitive for this crate.