app: dns.canary probe — client half of the canary measurement, verified live
Resolves the server's canary zone through the platform resolver and compares against the spec-frozen ground truth (probe-protocol §6.1): reference records detect answers rewritten in flight, and a per-run nonce name (uncacheable) proves the query reached the authoritative server. Findings: dns.answer_rewritten (high), dns.authoritative_unreachable (medium). Verified on the OnePlus against the deployed fmr zone: 4/4 reference records matched exactly, nonce name answered 192.0.2.21 with reached_authoritative=true. First full client<->server measurement loop on real hardware; report archived. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
cf5cd2dc68
commit
59ba1c16bc
@@ -388,3 +388,17 @@ at `echolot-app/reports/CPH2747-app-run1.json`. Results:
|
||||
Also fixed this session: the beacon app itself caused the "wireless debugging connected"
|
||||
notification spam (it re-resolved adbd's own mDNS advertisement, making adbd re-arm each time);
|
||||
now resolves once per service instance and the heartbeat re-POSTs the cached port only.
|
||||
|
||||
## App: dns.canary verified against the live server (2026-08-01)
|
||||
Built the client half of the canary-DNS measurement and verified it on the OnePlus against the
|
||||
deployed fmr zone (`echolot-app/reports/CPH2747-app-run2-dns.json`):
|
||||
- All four spec-frozen reference records matched byte-for-byte through the network's own resolver
|
||||
(ttl-5→192.0.2.5, ttl-60→192.0.2.60, ttl-3600→192.0.2.36, ttl-86400→192.0.2.86) → nothing on
|
||||
this path rewrites DNS answers (`dns.answer_integrity` in the green case).
|
||||
- The un-cacheable nonce name `1006ad16.adhoc.c.echo-lot.app` resolved to 192.0.2.21 →
|
||||
`reached_authoritative: true`, proving the query actually reached the canary server rather than
|
||||
being answered from a cache or an interceptor.
|
||||
Findings wired: `dns.answer_rewritten` (high) when a reference mismatches, and
|
||||
`dns.authoritative_unreachable` (medium) when the nonce isn't answered by the canary server.
|
||||
This closes the first full client↔server measurement loop: the Kotlin app measures against the Go
|
||||
server's canary zone on real hardware. 6 tests now run per measurement.
|
||||
|
||||
Reference in New Issue
Block a user