Match the application crate convention: each source file references its
tests via #[cfg(test)] #[path = "tests/filename.rs"] mod tests; with
the test code in a sibling tests/ directory.
- events.rs -> tests/events.rs
- value_objects.rs -> tests/value_objects.rs
- models/mod.rs -> models/tests/mod.rs (renamed from tests.rs)
- models/person.rs -> models/tests/person.rs
- models/goal.rs -> models/tests/goal.rs
- models/watch_event.rs -> models/tests/watch_event.rs
- services/review_history.rs -> services/tests/review_history.rs
Extract ReviewLogger trait to decouple import/integrations
from diary::log_review (cross-module coupling smell).
Add in-memory fakes for all repository ports, enabling
isolated testing of every use case module without a database.
Coverage: domain+application 22% → 80%, 427 tests.