Two gaps from adding the runtime directive to the signed stream record:
- ReplicaApply::streamDiffer() ignored `runtime`, so a stored replica whose
directive is missing or stale (other parts matching) read as matching and
the shadow drift check missed an incorrect serve-only LB directive. Add
`runtime` to the compared parts (StreamDifferRuntimeTest).
- The published DATA shape (ReplicaSections docblock + ADR 0004) omitted
`runtime`, so an agent built to the contract could ignore/reject it. Define
`runtime {kind, source}` in both.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EheMW763szkH4fnzzkDgT4