# Step 04 — Core Dataclasses Declares the seven immutable types that cross module boundaries in DriftCall: `ActionType`, `DriftCallAction`, `ToolResult`, `DriftEvent`, `GoalSpec`, `DriftCallObservation`, and `DriftCallState`. All dataclasses are `frozen=True`; the module is pure shape with zero runtime behavior, imported by every other cell, the FastAPI server, and the reward suite.