M4: ADR-038 Eager Invalidation + ADR-039 Optimistic Lock
- EagerInvalidationService: Redis DEL after MySQL commit
- Cache key conventions for textbook/chapter/kp/question
- Version header check (If-Match/X-Expected-Version) on write endpoints
- 409 Conflict on version mismatch
- All write endpoints return updatedAt timestamp