Agent Dashcam — Black Box Report

TRUST ◦ VERIFY ◦ PROOF
INCIDENT WINDOW 2026-09-29T02:53:10.000Z  —  2026-09-29T02:56:10.000Z all times UTC · plate CMP-YJ2T · registry in.xchk.io

1. License & registration — the owner behind this agent

Before what the agent did: who owns it, whether that owner is a verified person (the license), and that this plate is registered to them on this node (the registration). Every record and approval below inherits its authority from here — like a roadside stop, license and registration come first.

owner · enrolled baseline
owner baseline
Registered ownersean@maclawran.ca · uid YT4qhKFiihMliSHhurgIHYRM0IV2 — plate CMP-YJ2T on in.xchk.io, issued 2026-07-12T15:53:01Z · full plate record in Section 2
License — identity verifiedENROLLED 2026-07-03T08:39:53ZEmail verified2026-07-03T08:39:53Z
Owner passkey3 registered
__henOA5um2iUX…
KYC (Didit)VERIFIED
legal name: Sean Michael Mac Guire
2026-07-04T05:22:43Z
source: registry user record (Didit webhook)
Didit session 2b358bd6-083c-4dc7-9278-d9972fa67d7e
Registration signature (owner command-signing key)PINNED — cred sb5gHjiA_EhCUhAA…, rpId in.xchk.io, origin https://in.xchk.io, since 2026-08-18T06:56:09Z

The registration signature is the owner's own WebAuthn key, host-verified — the owner asserting authority over this machine's agents, which the platform cannot forge. Where a ceremony in Section 6 is tagged owner, the approver's identity equals this registered owner (license and registration match). A delegate tag means a different person approved, and their authority to do so must be established separately.

2. Subject agent (license snapshot at generation)

CMPYJ2TSean
Rendered from the record fields below — the picture is a reading of the data, never evidence itself.
PlateCMP-YJ2TRegistryin.xchk.io
NameDefault agentStatusactive
Registered owner (principal)sean@maclawran.caVenueQC (source: explicit)
Desk condition (now)normalContinuity classstandard
Incident window2026-09-29T02:53:10.000Z — 2026-09-29T02:56:10.000Z

Public roadside check of this plate: https://in.xchk.io/ (plate lookup) — license status is independently checkable there at any time. Per-record desk condition appears in each record below (in-band).

3. Summary

2 recorded actions in the window (0 allow, 1 attest, 0 forbid); 1 sealed forensic windows (0 attested-silence); 1 human attestation ceremonies referenced.

4. Action records (the dashcam chain)

Flagged rows: magenta = reference reuse red = unmatched / misbound amber = unaccounted — flagged in both the registry and host tables. ⚖ marks a human finding recorded beside the exception; the row stays flagged either way.

#time (UTC)dispositiontool/areasummaryruncond.authRefrecordHash
163172026-09-29T02:53:15.675Zattestterminalcd /Volumes/2TB-FAST/sean-overflow/src/xchk/xchk-server; sed -n 1,60p src/services/ticketSigner.js | grep -n "SECRET\|process.env\|function \|module.exports" | head -12CMP YJ2T.403normalc8f9c67456356f8500067b9d67e5e33699137cb3199959c766092404c3e4f5dd691877bdf83198422d7722a1
163182026-09-29T02:56:03.486Zapproved
HUMAN: sean@maclawran.ca (webauthn)
terminalcd /Volumes/2TB-FAST/sean-overflow/src/xchk/xchk-server; sed -n 1,60p src/services/ticketSigner.js | grep -n "SECRET\|process.env\|function \|module.exports" | head -12CMP YJ2T.403normal3ee7ef5257640af5164a9e9b098b5644d460631052a6a077157d033cd12752e0fdd06d5e95018da6ecef7f64
att: 23d98e3a271c40c846d814d2d77cd01278d479c12c8aa229579b4df308a8476f

4A. Visual playback — the footage, rendered from the records above

Playback is generated in this browser from the embedded records only — the same bytes the verifier checked. Colors: ■ allow · ■ ceremony query · ■ human response · ■ refusal. These colours describe NORMAL operation — a refusal is the gate working, not a fault. Evidence exceptions are never a colour alone: they carry a ⚑ badge naming them (⚑ REUSED, ⚑ UNACCOUNTED, ⚑ MISBOUND, ⚑ UNMATCHED, ⚑ FAILS RECOMPUTE) on the tinted rows in the tables above and below. Streak length = time on task. Playback STOPS on any record that fails recomputation.

4B. Host recorder chain — the second custody domain

The agent's host keeps its own hash-chained record of what it executed, flushed to the registry in segments. It is embedded here so this file carries BOTH custody domains: the registry's record of what was authorized (Section 4) and the host's record of what it did. The verifier below recomputes every entry hash, checks each segment continues the previous head, matches issued authorization references against host entries (accounting), and compares each matched entry's intent hash against the registry's stored content hash of the authorized action (content binding). An authorized action with no host entry is an accounting gap the HOST cannot detect or manufacture away — only the issuer can see it; that asymmetry is the point.

segcreated (UTC)harness/profileentriesprevSegHeadsegHeadblockchain anchor
194002026-09-29T02:56:05.588Zclaude12408aed1eeea3c9b…0d783dfe5d024174…d8610fe938e05b90064650a37c8e9e321cc7f042b7cc4f70fdec5300818e26ad
seg#toolauthRefintentHashentryHash
194005597terminalc8f9c67456356f8500067b9d464484e423985b86…0d783dfe5d024174…

An empty segment is the host's affirmative statement that nothing executed in its window — silence attested from the host side, corroborating the registry's zero-issuance seals in Section 5 (bilateral silence).

4C. Issuer reconciliation verdict (signed statement by the registry)

Computed by the registry at export over this window and embedded verbatim inside the signed payload. Chain recomputation (Sections 3/3B) is checked offline by this file; the verdict below additionally reflects issuer-custody facts the file cannot recompute alone (ceremony pairing, in-flight grace, binding activation, manager liveness, gate self-attestation). The lamp word is a recomputed theorem, not an asserted label.

Coverage lampADJUDICATEDReconciledfalse
Demanded / accounted1 / 1Content-verified1
Unaccounted (omission evidence)0Unmatched (fabrication)0
Misbound (post-activation)0Legacy pre-binding0
Reference reuse1Vacuousno
Bilateral silenceATTESTED (both custody domains)In-flight (open window)0
Recorder activated2026-08-08T00:24:30.298ZBinding activated2026-09-29T02:56:05.588Z
Manager (host supervisor)reporting (last —)Gate self-attestationmodified
Host segments anchored19578/19593 carry a public-chain no-later-than bound

5. Window seals

#window (UTC)actionsrefs issuedmerkle rootsealHashblockchain anchor
132132026-09-29T02:53:07.958Z — 2026-09-29T02:58:07.959Z99f3d54c9bf2c6c1894c073edc5bf38280c1f3ffecaae4b3fb9612889c09886ac7fe260bc4e36f23e61d157f9e7c4a3271e17830f575ea52a84f829e49d36590fdbab3e59b909aad2c5bb4cb902d3f6dd79466f1f6ba7863aa2d5c28d297179676

Anchored seals are corroborated on the Ravencoin blockchain: the OP_RETURN of the transaction shown carries the sealHash (chained to the previous seal's anchored hash), timestamping the window against a public chain this registry does not control. Verify with any RVN explorer. Anchoring is corroboration, never a gate — a pending anchor means the transaction had not yet confirmed at export time.

An attested-silence seal is an affirmative, hash-chained statement that no actions were authorized in that window — the absence of activity is itself evidenced, not inferred.

6. Human attestation ceremonies in the window

baseline · enrolled
enrolled baseline
live · at approval
ceremony photo
When (UTC)2026-09-29T02:56:03ZVerdictcompleted OWNER
Approversean@maclawran.caReachedsms
MethodwebauthnArea / toolsecurity terminal
User proofwebauthn ✓ · cred Yqa88hkURHnP… · public key ✓ · binding…
PromptCMP-YJ2T.403 (via Claude Code) wants to cd /Volumes/2TB-FAST/sean-overflow/src/xchk/xchk-server; sed -n 1,60p src/services/ticketSigner.js | grep -n "SECRET\|process.env\|function \|module.exports" | head -12
Record hash23d98e3a271c40c846d814d2d77cd01278d479c12c8aa229579b4df308a8476fBlockchain anchorad21939eedfc29959cec857877877d8dbb290a856f36d1931296c552ab8055c6

User proof — who authorized this, end to end. Each webauthn ceremony carries the verbatim WebAuthn assertion (clientDataJSON, authenticatorData, signature) and the approver's registered public key, both embedded in the signed payload. The sealed attestation hash commits to webauthnCredentialId and sha256(authenticatorData), so the assertion is bound to the chain: this file's verifier recomputes sha256(authenticatorData) and matches it to the sealed digest (the binding line in the user-proof column). Any WebAuthn library can additionally re-verify the signature against the embedded public key offline — this file hands over the material to do so without trusting xChk.

Identity. The live photo is captured on the approver's device during the ceremony; the baseline is the face enrolled beforehand. Shown side by side so the live approval can be checked against the enrolled reference — a ceremony photo with no baseline is a face; with one it is an identity claim someone can adjudicate. Photo bytes travel inside this file as data URIs; the attestation's chained hash seals the references to the decision.

7. Verification recipe (in-band — no xChk software required)

  1. Each record's recordHash = SHA-256 of the canonical JSON of its fields (keys sorted lexicographically, undefined omitted, integers/strings/booleans/null only), with field list: v, agentId, plate, seq, ts (ISO-8601), harness, runSeq, runRef, area, tool, summary, paramsHash, amount, disposition, code, reason, deskCondition, continuityClass, authRef, prevHash.
  2. Each record's prevHash must equal the previous record's recordHash; sequence numbers must be contiguous. An edit breaks a hash; an omission breaks the sequence and the link.
  3. Each seal's merkleRoot = pairwise SHA-256 over the window's recordHashes in sequence order (odd leaf carried up); sealHash = SHA-256 of the canonical seal fields; seals chain by prevSealHash.
  4. Each host entry's entryHash = SHA-256 of the canonical JSON of localSeq, authRef, tool, intentHash, resultHash, startedAt (ISO-8601), endedAt, prevHash (same canonicalization as step 1); the first entry's prevHash is the segment's prevSegHead, each subsequent entry links to the previous entryHash, and the last entryHash is the segment's segHead (an empty segment carries its prevSegHead forward). Accounting: every windowed registry record's authRef should be cited by exactly one host entry; content binding: that entry's intentHash must equal the record's paramsHash.
  5. The embedded script below performs steps 1–4 automatically when this file opens; the banner reports the verdict. The same computation can be reproduced with ~10 lines of Python (hashlib + sorted-keys json).

7A. Registry signature over this package

The registry signed this export (RS256). The statement binds the exact embedded evidence payload (SHA-256 47872628f35fdfe9815210f3bab7924c9971d72d767a0a1b6735ace0dfc48051), the chain head, and the export metadata. Verify against the registry's published keys at https://in.xchk.io/.well-known/xchk-registry (token_use incident_package). The verifier below also recomputes the payload hash — a match proves the evidence in this file is byte-identical to what was signed.

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlhXVXYwdUdFU0dkSUcxTWpPemJWamN3eEIwQ1l0SzBvWjlTWnhOa0g3aDgifQ.eyJraW5kIjoieGNoay5pbmNpZGVudC5wYWNrYWdlLnYyIiwiYWdlbnRJZCI6IjZhNTNiODVkZWRmY2IwZTJmM2Q5N2E4NSIsInBsYXRlIjoiQ01QLVlKMlQiLCJmcm9tIjoiMjAyNi0wOS0yOVQwMjo1MzoxMC4wMDBaIiwidG8iOiIyMDI2LTA5LTI5VDAyOjU2OjEwLjAwMFoiLCJnZW5lcmF0ZWRBdCI6IjIwMjYtMDktMjlUMDM6MjU6NTIuMDUzWiIsInJlY29yZENvdW50IjoyLCJzZWFsQ291bnQiOjEsInNlZ21lbnRDb3VudCI6MSwiY2hhaW5IZWFkIjoiMDk4YjU2NDRkNDYwNjMxMDUyYTZhMDc3MTU3ZDAzM2NkMTI3NTJlMGZkZDA2ZDVlOTUwMThkYTZlY2VmN2Y2NCIsImxhc3RTZWFsSGFzaCI6ImZlMjYwYmM0ZTM2ZjIzZTYxZDE1N2Y5ZTdjNGEzMjcxZTE3ODMwZjU3NWVhNTJhODRmODI5ZTQ5ZDM2NTkwZmQiLCJob3N0Q2hhaW5IZWFkIjoiMGQ3ODNkZmU1ZDAyNDE3NDNiY2E1MDRhYjJhZmJkOTU1OWJkYjZlM2RjZmNlZGNhYmMzZTVhNDFjYTk1NjcyOSIsInJlY29uY2lsZWQiOmZhbHNlLCJhdHRlc3RhdGlvbkNvdW50IjoxLCJodW1hblByb29mQ291bnQiOjEsInBheWxvYWRTaGEyNTYiOiI0Nzg3MjYyOGYzNWZkZmU5ODE1MjEwZjNiYWI3OTI0Yzk5NzFkNzJkNzY3YTBhMWI2NzM1YWNlMGRmYzQ4MDUxIiwiaXNzIjoiaW4ueGNoay5pbyIsImF1ZCI6InhjaGstaW5jaWRlbnQtcGFja2FnZSIsImlhdCI6MTc5MDY1MjM1MiwiZXhwIjoyNDIxMzcyMzUyLCJ0b2tlbl91c2UiOiJpbmNpZGVudF9wYWNrYWdlIn0.tTO0bsAPGnzrse7h-H2ljFKRj8QTN-E-ckJmN87SylVlP_ANxP8gqr2OyLf0SWXi5WWfcqOqalErouAYuIvOIOTZhUCEkHm_z1feGMQ0agRXPnM2o771ej9gdM0-TKZZTxB1z_OAHFku_ZrmvrhtVeezAlaYnMih2R3Zb3XEtKqv8GAA3cNG-_JS75yeyKcx3KUeQ31usD58fMdzjqvUAIzPRdgIkyuOiot9YGs4OPz5mMblf9Pu5nV9qQaDoegg3TtrE9uTKd1mAANNzpMRztOJdd5wy7x5XvEqjGbMr9bBLOHgt_lymVDv2NxuEdl0o0ZlvB_psDz9e6kfXOi5OA

payload hash: checking…

8. FRE 902(13) certification — record generated by an electronic process

I,  , am employed as   and am qualified to certify records of the xChk registry system operating at in.xchk.io. The records in Sections 3–5 were generated by that system's regularly conducted, automated authorization and sealing process, at or near the times shown, as a regular practice of that activity. The process produces hash-chained records whose integrity is verifiable by the recipe in Section 7. Executed on  .

Signature:  

8. FRE 902(14) certification — data copied and verified by hash

I certify that the digital records embedded in this file are true copies of the registry's records, and that verification was performed by recomputation of the SHA-256 hash values shown in Sections 3–4, which matched the values recorded in the registry's chain at the time of export. Executed on  .

Signature:  

Print this page for a filing exhibit; the tables paginate. This file also embeds a machine-readable JSON copy of every record and seal above — the verifier reads it on open, and you can extract it here. Its SHA-256 is 47872628f35fdfe9815210f3bab7924c9971d72d767a0a1b6735ace0dfc48051, the same value covered by the registry signature.

9A. Machine-readable — the underwriter's incident schema (JSON)

The same window as this package, as the common incident schema an underwriter reads (Trout et al., "Underwriting the Agent Economy", §II.1): controls in force, oversight posture, near misses, kill-switch state, the forensic-data counts. Harm and loss are left null — the registry never asserts a harm it did not observe; a named admin states them. Moved here from the console on 18 Sep 2026: the schema belongs with the report it describes, not beside a button.


Generated 2026-09-29T03:25:52.053Z by registry in.xchk.io. This file is self-contained and self-verifying: opening it in any modern browser recomputes every hash above from the embedded records, offline. It does not ask to be trusted; it asks to be checked. All times in this package are UTC (ISO 8601, 24-hour clock).

WHAT THIS FILE PROVES — AND WHAT IT DOES NOT
Proves Authorization: every action shown was decided by the gate before it ran, and a ceremony marked approved carries the approver's own signed proof.
Tamper-evidence: altering or reordering any record breaks its hash and every hash after it — your browser checks this, not us.
Omission-evidence: two independent chains (this registry's, and the host recorder's) are reconciled against each other, so an action that ran without being recorded shows up as an absence. That is what the ⚑ UNACCOUNTED rows are.
Does not prove That nothing ran outside the gate. The recorder sees what passes through the harness hook. An action that never reached the gate leaves no reference and no entry, and reconciliation cannot see it. Bilateral silence and host supervision are the backstop, not this chain.
That execution matched the authorization. The host binds what it declared it was doing to what was authorized; it does not prove the effect matched the declaration.
Anything outside the window below. This is a slice, records #16317–#16318 of this agent's lifetime chain — sequence numbers run continuously for the life of the plate, so a gap at either edge is this window's boundary, not a missing record.

Glossary

plateThe agent's licence number. Issued by the registry, unique for life, never reissued to another agent — so evidence citing a plate resolves to exactly one agent, forever.
allow / attest / forbidWhat the agent was permitted to do in an area of work. allow = it proceeds and is recorded. attest = it stops and a human must decide. forbid = refused outright. With no permission on file the default is attest — nothing is refused merely for lacking a permission, it stops and asks.
approved / deniedA human's answer to an attest. approved = a named person said yes, with their own signed proof; denied = they said no. Both are binding.
authRefThe receipt number the gate issued for one decision. Each one authorizes exactly one action — which is why the same reference appearing twice, describing different things, is evidence of fabrication.
intentHash / paramsHashA fingerprint of what the action was. The registry stores the fingerprint of what it authorized; the host stores the fingerprint of what it says it did. They must match — if they do not, the row is flagged ⚑ MISBOUND.
seal / merkle rootA periodic signed statement covering a batch of records. A seal over zero actions is an affirmative claim that nothing happened in that window — silence on the record, rather than absence of record.
anchorA seal's fingerprint published in a public blockchain transaction. It proves the record existed no later than that block — a clock this registry does not control.
the two chainsThe registry chain (what was authorized) and the host recorder chain (what the machine says it did) are kept independently. Comparing them is what makes a missing action visible; one chain alone could never show you what is not in it.
⚑ badgesUNACCOUNTED = authorized and it ran, but the host has no record of it. REUSED = one receipt number covering several different actions. MISBOUND = the host's record does not match what was authorized. UNMATCHED = the host cites a receipt this registry never issued. FAILS RECOMPUTE = the record's own hash does not reproduce — the strongest finding there is.
⚖ adjudicationA named person examined an exception and wrote down what they found, with the date. It sits beside the exception and never removes it — the row stays flagged. Findings that name a danger (a recorder fault, a confirmed fabrication) deliberately do not quiet the alarm.