Capstone
End-to-end verification matrix. “It seems to work” is not evidence.
Build and demonstrate a homelab where an authorized user can request permitted media, trace the request through the ARR pipeline, discover the imported item in a media server, ask Home Assistant whether the media service is online, and receive a local spoken response. Core local tests must pass with WAN disconnected.
flowchart TD
U["Authorized user"] --> S["Seerr request"]
S --> R["Sonarr / Radarr"]
R --> P["Prowlarr"]
R --> D["Download client"]
D --> F["Shared /data filesystem"]
R --> F
F --> M["Plex / Jellyfin"]
V["Voice satellite"] --> H["Home Assistant"]
H --> X["Media health sensor"]
H --> V
| ID | Requirement | Verification | Pass condition |
|---|---|---|---|
| CAP-01 | Docker data persists | Recreate one stateful test container | Configuration/data remain intact |
| CAP-02 | Service discovery works | Resolve/call services by container DNS | Expected responses received |
| CAP-03 | ARR API links work | Run application tests | All intended links pass |
| CAP-04 | Prowlarr sync works | Trigger sync and inspect targets | Expected definitions/categories appear |
| CAP-05 | Quality policy works | Score five controlled candidates | Rankings/rejections match written policy |
| CAP-06 | Download handoff works | Submit authorized controlled test | Correct client/category receives job |
| CAP-07 | Import works | Complete controlled test | Correct root/naming and no path error |
| CAP-08 | Hardlink policy works | Compare device/inode where applicable | Same data inode or documented exception |
| CAP-09 | Media discovery works | Scan library | One correct item appears |
| CAP-10 | HA health entity works | Stop/start test service | State changes within requirement |
| CAP-11 | HA automation works | Run positive/negative cases | Correct action only under allowed case |
| CAP-12 | Remote access is controlled | Allowed and denied tests | Allowed passes; denied fails |
| CAP-13 | STT works | Known sentence trials | Action/target words correct per threshold |
| CAP-14 | TTS works | Fixed phrase trials | Complete intelligible audio |
| CAP-15 | Voice E2E works | Ten wake-command trials | Meets reliability/latency requirement |
| CAP-16 | Local mode works | Disconnect WAN and repeat local tests | Defined core path remains functional |
| CAP-17 | Recovery works | Restart one voice and one media service | Automatic/manual recovery meets runbook |
| CAP-18 | Restore path works | Restore disposable config/VM | Service returns with verified state |
Any of the following prevents a pass until corrected:
| Category | Points |
|---|---|
| Architecture and requirements | 15 |
| Container/ARR implementation | 25 |
| Home Assistant implementation | 15 |
| Local voice implementation | 15 |
| Verification evidence | 15 |
| Fault isolation | 10 |
| Security and recovery | 5 |
| Total | 100 |
Pass requires at least 80 points and zero unresolved critical failures.
Explain the entire course system as if teaching a smart beginner:
Answers save in this browser (localStorage). Completing all five fields is part of the mastery unlock.