Implement fail-fast health model for observers
Replace complex supervisor health derivation with simple event freshness
check. Observers now exit gracefully when capture stalls (files not growing
for 15s), and supervisor restarts them. This simplifies health to: receiving
status events = healthy.
- Add stall detection to Linux/macOS observers (exit after 3 chunks stalled)
- Simplify supervisor _observe_status_state to just last_ts/ever_received
- Remove activity_active/screencast_recording/files_growing from supervisor
- Update docs to explain fail-fast model
- Simplify test to use minimal message structure
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>