testsAndMisc/docs/superpowers/contracts/phone-focus-mode-netd-cache-fix-2026-05.json
Krzysztof kuhy Rudnicki dd3191d961 phone_focus_mode: fix YouTube DNS blocking via netd cache restart
- Added restart_netd_for_hosts_cache() to hosts_enforcer.sh with PID-stamp
  deduplication to prevent double-restarts across enforcer invocations
- Removed explicit netd restart from deploy.sh (caused double-restart
  that broke ConnectivityService binder link and dropped default route)
- deploy.sh: wait 10s after starting focus_daemon.sh for enforcer to
  complete its single netd restart before companion app install
- Misc updates to dns_enforcer.sh and config.sh
2026-05-22 15:58:36 +02:00

20 lines
1.3 KiB
JSON

{
"title": "phone_focus_mode: fix YouTube DNS blocking via netd cache restart",
"objective": "Android 13's netd process caches /etc/hosts entirely in memory at startup and never re-reads from disk. The existing bind-mount approach changes the on-disk file but not the live resolver cache, so blocked domains continued to resolve. Fix: restart netd exactly once after applying the bind mount, using PID-stamp deduplication to prevent double-restarts that corrupt ConnectivityService's routing table.",
"acceptance_criteria": [
"www.youtube.com resolves to 0.0.0.0/127.0.0.1 (blocked) after deploy",
"youtube.com resolves to 0.0.0.0/127.0.0.1 (blocked) after deploy",
"google.com resolves to a real IP (network is up, not over-blocked)",
"Blocking persists after a clean reboot (Magisk module path verified)",
"deploy.sh completes without network disruption beyond the expected ~4s during single netd restart",
"pre-commit passes on all changed files (shellcheck, codespell, all hooks)"
],
"out_of_scope": [
"Firefox UI verification",
"googlevideo.com CDN blocking",
"FOCUS_BOOT_AUTOSTART=1 boot path testing",
"mid-session domain addition without reboot"
],
"verifier": "ping tests via ADB after reboot and after fresh deploy; pre-commit run on changed shell files"
}