e2e-receipts — 2026-04-18

End-to-end infra receipts run. Harness: state/lint/e2e-receipts.ts. Raw rows: state/log/e2e-receipts.ndjson.

Pass-rate: 15/16.

Table

#ProbeResultExitFirst-line-of-output
1local-env-parsePASS0PARSED keys=66
2git-sync-head-matchPASS0MATCH L=8f15651 R=8f15651
3gateway-reachablePASS0200 (skills.snappy.ai/_status)
4gateway-authPASS0200 (Authorization: Bearer SNAPPY_MASTER_KEY accepted)
5manifest-integrityPASS0state/lint/sync-integrity.ts --gateway --manifest exited 0
6gateway-skill-fetchPASS0200 (canonical path: .well-known/skills/snappy-os/state/skills/<name>.md)
7anthropic-api-readyPASS0READY (claude -p CLI round-trip)
8lint-quadFAIL1audit.ts exits 1 on 18 unresolved-fn-citations
9hook-smokePASS0--- snappy-os hook smoke test ---
10parity-harness-presentPASS0PRESENT rows=60 (state/log/parity.ndjson)
11autopilot-statusPASS0autopilot: open rows — p0=0 p1=7 p2=3 (total 10)
12byline-statuslinePASS0declare: -A: invalid option (pre-existing bash 3.2 noise; renders, no ERROR)
13agents-dashboardPASS0WORKER AGENTS (skills.snappy.ai Cloudflare scheduled)
14tui-smokePASS0renders alt-screen; --noninteractive not supported, non-fatal
15eval-log-healthPASS0evals rows=757 mean=0.736
16worker-scheduled-surfacePASS0jq filter returned empty — worker does not expose /handlers or /schedules on /_status

Failing probes — one-sentence verdict

skills cite functions that do not exist in state/lib/ (e.g. calendar.md -> fn:listCalendars(), sheets.md -> fn:readRows(), evolve.md -> fn:propose_mutation()). This is real technical debt in the documentation layer — prose describes an API surface that was never ported from the kernel. Not a harness bug; this is exactly the kind of drift the audit lint is designed to catch, and the receipt is doing its job.

Interpretation

independent Anthropic API call.** No self-verification.

remote, gateway authed + unauthed paths both work, sync manifest has zero drift, skill files served via DO Spaces correctly, Anthropic API responsive, hooks installed, parity harness has 60 rows of history, autopilot queue alive (p0=0, p1=7), statusline + dashboard + TUI render, eval log rolling mean 0.736 across 757 rows.

in prose skills reference lib functions that were never ported.

probe correctly treated empty-jq-filter as "surface absent, not failure," but Robert should know: if you want Worker schedules visible via HTTP, that's a Worker-side TODO.