Collection sequence
The collector performs this sequence against a Heretic edge:- Resolve a POP and its paired TCP and QUIC origins.
- Send
GET /ntotcp.<pop>.probe.heretic.quest. This origin never advertises HTTP/3, so repeat visits still expose the TCP handshake. - Send two nonce-bearing health requests to
quic.<pop>.probe.heretic.quest. The first response supplies Alt-Svc when the origin is fresh. The next request can join over HTTP/3. - Run timed probes, optional fixed rendering, and declared-surface collection.
- Send the payload to
/cor/zon the TCP origin.
credentials: 'omit'.
The browser must connect directly to the measurement edge. A CDN, reverse proxy, or load balancer in front of that endpoint replaces the browser-facing TCP and TLS connection with its own. The edge would measure the intermediary. You can still serve the JavaScript file through your normal asset path.
Evidence inputs
The edge can join:- TCP and IP handshake properties
- TLS ClientHello construction
- HTTP/2 framing
- UDP, QUIC, and HTTP/3 observations
- round-trip timing
- browser work outputs such as compute, GPU, parallel, frame, canvas, and audio measurements
- browser declarations such as user agent, platform, logical cores, display, timezone, WebGL, and the optional broader surface
Evidence families
Every full assessment contains one report for each family.
The families are distinct groups in the ruling algebra. Heretic does not claim that they are statistically independent.
A family report contains:
signals list. The top-level projected findings still include each finding’s family.
Separate report axes
The full assessment also contains identity, concealment, and sensor reports. They do not add evidence-family weight.Identity
Identity version2 derives up to two IDs from normalized components:
machinerequires logical cores, display, and timezone. Platform participates when present.instancerequires at least one canvas, fixed WebGL raster, or audio anchor.
render: false removes the fixed rendering section. It does not disable identity. The base measured payload can still provide canvas or audio anchors, and a machine ID does not require rendering.
Concealment
The full concealment report contains a network class, observed indicators, and checks that could not run. Network class is one ofhosting, access, institutional, or unknown.
Concealment does not change the verdict. The tenant API omits the full report and projects only limited network context, including classification.
Sensor admissions
Sensor admissions disclose faults in the packet observation path. Stable kinds are:shed-flowblindstalledquietlossy
Settlement and projection
After ordinary completion, the package exposes{ ok: true, requestId }. ZDR exposes { ok: true }. Failures use { ok: false, reason }.
The first valid ordinary POST /c closes the evidence window. The edge freezes the session evidence and assessment, builds the tenant projection from that assessment, and waits for D1 to acknowledge a tenant-visible commit. Later reads, wall-clock passage, sensor changes, local settlement, and late QUIC traffic do not amend the frozen evidence.
Only after that acknowledgement does the edge return the raw request ID. Projection failure makes collection fail. Local NDJSON persistence uses the same frozen session and assessment on its separate 60-second settlement schedule.
With zdr: true, the edge uses the same temporary flow, session, assessment, and identity path. Settlement skips normal edge NDJSON and control-plane ingest.
Provenance
The current assessment uses schema10, ruleset revision 6, and compute probe version 2. Every assessment carries:

