Context
PR #1966 (EPIC-02) grouped most Agent fields into named sub-structs. However, rate_limiter, focus, sidequest, and feedback_detector remain as loose fields on Agent<C>.
Found by: impl-critic (SUG-03) and reviewer (SUG-03)
Acceptance criteria
- All remaining loose non-core fields grouped into appropriate sub-structs
- Consider
CompressionState for focus/sidequest (they are context-compression related)
- No public API changes