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>
385 lines
13 KiB
JSON
385 lines
13 KiB
JSON
{
|
|
"schema": "echolot/measurement",
|
|
"schema_version": "1.0.0",
|
|
"run": {
|
|
"id": "4d92f749-5222-440f-b6a4-def717f0da3b",
|
|
"trigger": "manual",
|
|
"started_at": "2026-08-01T07:00:58.005733Z",
|
|
"ended_at": "2026-08-01T07:01:08.588026Z",
|
|
"clock": {
|
|
"mono_origin_wall": "2026-08-01T07:00:58.005733Z",
|
|
"ntp_offset_ms": null,
|
|
"ntp_offset_source": null
|
|
},
|
|
"app": {
|
|
"version": "0.1.0",
|
|
"build": 1,
|
|
"git": null,
|
|
"flavor": "app"
|
|
},
|
|
"device": {
|
|
"manufacturer": "OnePlus",
|
|
"model": "CPH2747",
|
|
"android_sdk": 36,
|
|
"android_release": "16",
|
|
"security_patch": null
|
|
},
|
|
"tiers": {
|
|
"app": true,
|
|
"shizuku": false,
|
|
"root": false
|
|
},
|
|
"profiles_used": [],
|
|
"notes": null
|
|
},
|
|
"networks": [
|
|
{
|
|
"id": "net-0",
|
|
"transport": "cellular",
|
|
"interface": "rmnet_data4",
|
|
"link": {
|
|
"mtu": 1500,
|
|
"addresses": [
|
|
{
|
|
"addr": "2001:4bb8:417:bd78:e4fe:8cff:febe:ca8c",
|
|
"prefix_len": 64,
|
|
"scope": null,
|
|
"flags": [],
|
|
"valid_lft_s": null,
|
|
"pref_lft_s": null
|
|
}
|
|
],
|
|
"routes": [
|
|
{
|
|
"dst": "::/0",
|
|
"gateway": "fe80::246f:12be:21ef:1b54",
|
|
"iface": "rmnet_data4",
|
|
"proto": null,
|
|
"expires_s": null
|
|
},
|
|
{
|
|
"dst": "2001:4bb8:417:bd78::/64",
|
|
"gateway": "::",
|
|
"iface": "rmnet_data4",
|
|
"proto": null,
|
|
"expires_s": null
|
|
}
|
|
],
|
|
"dns": {
|
|
"servers": [
|
|
"fda1:3fb1:0:8:0:10:0:101",
|
|
"fda1:3fb1:0:8:0:10:0:100"
|
|
],
|
|
"private_dns_mode": "off",
|
|
"private_dns_hostname": null,
|
|
"search_domains": [],
|
|
"nat64_prefix": null
|
|
},
|
|
"dhcp": null,
|
|
"captive_portal": null
|
|
},
|
|
"wifi": null,
|
|
"cellular": null,
|
|
"changes": []
|
|
},
|
|
{
|
|
"id": "net-1",
|
|
"transport": "wifi",
|
|
"interface": "wlan0",
|
|
"link": {
|
|
"mtu": null,
|
|
"addresses": [
|
|
{
|
|
"addr": "fe80::7a:75ff:fee9:ae9e",
|
|
"prefix_len": 64,
|
|
"scope": null,
|
|
"flags": [],
|
|
"valid_lft_s": null,
|
|
"pref_lft_s": null
|
|
},
|
|
{
|
|
"addr": "10.13.102.124",
|
|
"prefix_len": 24,
|
|
"scope": null,
|
|
"flags": [],
|
|
"valid_lft_s": null,
|
|
"pref_lft_s": null
|
|
}
|
|
],
|
|
"routes": [
|
|
{
|
|
"dst": "fe80::/64",
|
|
"gateway": "::",
|
|
"iface": "wlan0",
|
|
"proto": null,
|
|
"expires_s": null
|
|
},
|
|
{
|
|
"dst": "::/0",
|
|
"gateway": "fe80::7a9a:18ff:fe54:b8f9",
|
|
"iface": "wlan0",
|
|
"proto": null,
|
|
"expires_s": null
|
|
},
|
|
{
|
|
"dst": "10.13.102.0/24",
|
|
"gateway": "0.0.0.0",
|
|
"iface": "wlan0",
|
|
"proto": null,
|
|
"expires_s": null
|
|
},
|
|
{
|
|
"dst": "0.0.0.0/0",
|
|
"gateway": "10.13.102.1",
|
|
"iface": "wlan0",
|
|
"proto": null,
|
|
"expires_s": null
|
|
}
|
|
],
|
|
"dns": {
|
|
"servers": [
|
|
"10.13.102.1"
|
|
],
|
|
"private_dns_mode": "off",
|
|
"private_dns_hostname": null,
|
|
"search_domains": [
|
|
"hudelist.local"
|
|
],
|
|
"nat64_prefix": null
|
|
},
|
|
"dhcp": null,
|
|
"captive_portal": null
|
|
},
|
|
"wifi": null,
|
|
"cellular": null,
|
|
"changes": []
|
|
}
|
|
],
|
|
"server_sessions": [],
|
|
"tests": [
|
|
{
|
|
"id": "83174b93-b8f3-4c73-86d1-d4d67866ec91",
|
|
"type": "link.snapshot",
|
|
"network_ref": null,
|
|
"session_ref": null,
|
|
"tier": "app",
|
|
"started_mono_ns": 1990364,
|
|
"ended_mono_ns": 2119375,
|
|
"status": "ok",
|
|
"error": null,
|
|
"params": null,
|
|
"evidence": {
|
|
"network_count": 2,
|
|
"networks": [
|
|
{
|
|
"id": "net-0",
|
|
"transport": "cellular",
|
|
"interface": "rmnet_data4",
|
|
"mtu": 1500,
|
|
"addresses": "2001:4bb8:417:bd78:e4fe:8cff:febe:ca8c/64",
|
|
"dns": "fda1:3fb1:0:8:0:10:0:101, fda1:3fb1:0:8:0:10:0:100",
|
|
"nat64": "none"
|
|
},
|
|
{
|
|
"id": "net-1",
|
|
"transport": "wifi",
|
|
"interface": "wlan0",
|
|
"mtu": 0,
|
|
"addresses": "fe80::7a:75ff:fee9:ae9e/64, 10.13.102.124/24",
|
|
"dns": "10.13.102.1",
|
|
"nat64": "none"
|
|
}
|
|
]
|
|
},
|
|
"metrics": null
|
|
},
|
|
{
|
|
"id": "4fcd2393-3464-4d00-a15e-8006e178fefd",
|
|
"type": "icmp.ping4",
|
|
"network_ref": null,
|
|
"session_ref": null,
|
|
"tier": "app",
|
|
"started_mono_ns": 2260885,
|
|
"ended_mono_ns": 86194427,
|
|
"status": "ok",
|
|
"error": null,
|
|
"params": null,
|
|
"evidence": {
|
|
"target": "1.1.1.1",
|
|
"default": "reply type=0 rtt_ms=43.1 bytes=15",
|
|
"cellular:net-0": "error: Binding socket to network 137 failed: EPERM (Operation not permitted)",
|
|
"wifi:net-1": "reply type=0 rtt_ms=39.3 bytes=15"
|
|
},
|
|
"metrics": {
|
|
"networks_ok": 2,
|
|
"rtt_ms_min": 39.3,
|
|
"rtt_ms_avg": 41.2,
|
|
"rtt_ms_max": 43.1
|
|
}
|
|
},
|
|
{
|
|
"id": "5a51060f-6d65-432f-ae2f-09a896f989d2",
|
|
"type": "icmp.ping6",
|
|
"network_ref": null,
|
|
"session_ref": null,
|
|
"tier": "app",
|
|
"started_mono_ns": 86622343,
|
|
"ended_mono_ns": 6407352028,
|
|
"status": "failed",
|
|
"error": null,
|
|
"params": null,
|
|
"evidence": {
|
|
"target": "2606:4700:4700::1111",
|
|
"default": "error: recvfrom failed: EAGAIN (Try again)",
|
|
"cellular:net-0": "error: Binding socket to network 137 failed: EPERM (Operation not permitted)",
|
|
"wifi:net-1": "error: recvfrom failed: EAGAIN (Try again)"
|
|
},
|
|
"metrics": {
|
|
"networks_ok": 0
|
|
}
|
|
},
|
|
{
|
|
"id": "f0e48635-5688-4cdb-9a7c-7e26047427e6",
|
|
"type": "net.captive_portal",
|
|
"network_ref": null,
|
|
"session_ref": null,
|
|
"tier": "app",
|
|
"started_mono_ns": 6407902080,
|
|
"ended_mono_ns": 10451588485,
|
|
"status": "ok",
|
|
"error": null,
|
|
"params": null,
|
|
"evidence": {
|
|
"https_url": "https://www.google.com/generate_204",
|
|
"http_url": "http://connectivitycheck.gstatic.com/generate_204",
|
|
"default": {
|
|
"https_code": 204,
|
|
"http_code": 204,
|
|
"verdict": "validated"
|
|
},
|
|
"cellular:net-0": {
|
|
"https_code": -1,
|
|
"http_code": -1,
|
|
"verdict": "no_internet"
|
|
},
|
|
"wifi:net-1": {
|
|
"https_code": 204,
|
|
"http_code": 204,
|
|
"verdict": "validated"
|
|
}
|
|
},
|
|
"metrics": null
|
|
},
|
|
{
|
|
"id": "7811704e-935b-4dd6-ad9c-d97f4bb6db5d",
|
|
"type": "dns.canary",
|
|
"network_ref": null,
|
|
"session_ref": null,
|
|
"tier": "app",
|
|
"started_mono_ns": 10452107548,
|
|
"ended_mono_ns": 10579626037,
|
|
"status": "ok",
|
|
"error": null,
|
|
"params": null,
|
|
"evidence": {
|
|
"zone": "c.echo-lot.app",
|
|
"reference_records": {
|
|
"ttl-5": {
|
|
"fqdn": "ttl-5.c.echo-lot.app",
|
|
"expected": "192.0.2.5",
|
|
"got": "192.0.2.5",
|
|
"verdict": "match"
|
|
},
|
|
"ttl-60": {
|
|
"fqdn": "ttl-60.c.echo-lot.app",
|
|
"expected": "192.0.2.60",
|
|
"got": "192.0.2.60",
|
|
"verdict": "match"
|
|
},
|
|
"ttl-3600": {
|
|
"fqdn": "ttl-3600.c.echo-lot.app",
|
|
"expected": "192.0.2.36",
|
|
"got": "192.0.2.36",
|
|
"verdict": "match"
|
|
},
|
|
"ttl-86400": {
|
|
"fqdn": "ttl-86400.c.echo-lot.app",
|
|
"expected": "192.0.2.86",
|
|
"got": "192.0.2.86",
|
|
"verdict": "match"
|
|
}
|
|
},
|
|
"nonce_query": {
|
|
"fqdn": "1006ad16.adhoc.c.echo-lot.app",
|
|
"got": "192.0.2.21",
|
|
"reached_authoritative": true,
|
|
"note": "a non-192.0.2.x answer means something other than the canary server replied"
|
|
}
|
|
},
|
|
"metrics": {
|
|
"references_matched": 4,
|
|
"references_mismatched": 0,
|
|
"references_failed": 0
|
|
}
|
|
},
|
|
{
|
|
"id": "7612b4c1-615a-4232-9969-7506c2ed77fc",
|
|
"type": "link.ip_monitor",
|
|
"network_ref": null,
|
|
"session_ref": null,
|
|
"tier": "shizuku",
|
|
"started_mono_ns": 10580257287,
|
|
"ended_mono_ns": 10580338173,
|
|
"status": "unsupported",
|
|
"error": null,
|
|
"params": null,
|
|
"evidence": {
|
|
"binder_alive": false,
|
|
"detail": "Shizuku not running"
|
|
},
|
|
"metrics": null
|
|
}
|
|
],
|
|
"findings": [
|
|
{
|
|
"id": "5180f756-1bc9-4979-a6f2-4e354a9cba3f",
|
|
"code": "ipv6.no_icmp_path",
|
|
"category": "ipv6",
|
|
"severity": "low",
|
|
"confidence": "medium",
|
|
"network_ref": null,
|
|
"title": "No IPv6 ICMP path on any active network",
|
|
"description": "ICMPv6 echo got no reply on any active network — this network has no working IPv6 path (or filters ICMPv6).",
|
|
"evidence_refs": [
|
|
{
|
|
"test": "5a51060f-6d65-432f-ae2f-09a896f989d2",
|
|
"pointer": null
|
|
}
|
|
],
|
|
"recommendation": null
|
|
}
|
|
],
|
|
"summary": {
|
|
"overall": "yellow",
|
|
"categories": {
|
|
"connectivity": {
|
|
"verdict": "green",
|
|
"worst_finding": null,
|
|
"tests_run": 5,
|
|
"tests_failed": 2
|
|
},
|
|
"dns": {
|
|
"verdict": "green",
|
|
"worst_finding": null,
|
|
"tests_run": 1,
|
|
"tests_failed": 0
|
|
},
|
|
"ipv6": {
|
|
"verdict": "yellow",
|
|
"worst_finding": "5180f756-1bc9-4979-a6f2-4e354a9cba3f",
|
|
"tests_run": 0,
|
|
"tests_failed": 0
|
|
}
|
|
}
|
|
}
|
|
} |