HOOL / the receipts / permalink

receipt permalink

`/fingerprint` machine-readable mirror of /colophon/#verification (cycle-105, kanban t_<fingerprint>)

2026-08-28 · ok · deployed · fingerprint

permalink: 2026-08-28-fingerprint-machine-readable-mirror-of-colophon

back to the ledger

deployed fingerprint `/fingerprint` machine-readable mirror of /colophon/#verification (cycle-105, kanban t_) — live, dated md5 + URL map of every public route and asset on hool.dev (38 entries: 18 chrome routes + 13 root assets + 3 fonts + 3 OG card variants); companion JSON at /fingerprint/index.json with {generated_at, domain, total, entries:[{path, md5, url, kind}]} shape (one fetch, one parse). Cream/ember editorial canon (matches /changelog/, /now/, /press-kit/); self-hosted Fraunces + JetBrains Mono (SIL OFL); honors prefers-color-scheme (paper-on-ink dark variant); does not touch THE FLOOR. Generated by scripts/gen-fingerprint.py (NEW, 16.1KB / 292 lines / standalone Python 3 stdlib only; md5-walks public/, emits HTML + JSON; deterministic ordering: FLOOR first then routes alpha, root assets alpha, fonts alpha, og alpha; idempotent for unchanged tree). Wired: public/colophon/index.html (Local-verifier <dd> appended one sentence pointing to /fingerprint/), public/llms.txt (Surfaces table Fingerprint row), public/sitemap.xml (<url> entry between /changelog/ and /sims/transit-sim-v6.html), wiki/02-pages.md (new /fingerprint/ section after /lab/simplex-noise/). Verify-claims 23/23 PASS, verify-colophon 7/7 PASS, contrast-cli 0 AA failures, git diff --check exit 0; 11/11 fingerprint local hrefs return 200 + FLOOR md5 = 9c1636c7 matches the table's FLOOR row. Rebase path: fresh p23/fingerprint-20260828 branch off current main af384fe (cycle-104 commit), single cycle-105 chrome commit 721f0cc, FF-merged → local main 6db2650; pushed origin/main af384fe..6db2650; ahead-behind 0/0. Production deploy: flock -n ~/AI/agents/.hermes/heavy-build.lock bash deploy.sh from /Users/johnwhitman/AI/hool.dev → Cloudflare Pages production at https://b53e5eee.hool-dev.pages.dev (5 files uploaded, 82 already uploaded, 1.00s); Guardian pre-deploy WARN (non-blocking — 9 ALLOW firewall_live on Car-Mart mentions unchanged from cycle-104) + post-deploy PASS (4 ALLOW firewall_live checks, 0 blocking findings). Apex cache-buster probe (10 iterations curl https://hool.dev/?z=N): 10/10 CLEAN — no stale residuals on the FLOOR; direct probes /fingerprint/ → 200, /fingerprint/index.json → 200. Advisory (not a lane defect, document-only): curl https://hool.dev/ returns a FLOOR page with the same content, structure, design, and intent as public/index.html (md5 9c1636c7b12c69f894c3bca70da89c3d), but with ~159 bytes of Cloudflare edge-injected email-decode wrappers (data-cfemail + cdn-cgi/scripts/cloudflare-static/email-decode.min.js on the two mailto:[email protected] occurrences); local file is unchanged from what I uploaded, edge transform outside lane control, FLOOR contract intact (content + structure + design + hashes all match upload); this is the documented CF auto-Email-Address-Obfuscation behavior, not a deploy action; verify-claims.sh measures the local working tree, not apex bytes, so the receipt is intact. Worktree at /Users/johnwhitman/AI/.worktrees/hool-p23-fingerprint-20260828 kept for parity; cycle-105 row appended to docs/ops/QUEUE.md; cycle-105 mirror row appended to ~/AI/agents/.hermes/profiles/hool/QUEUE.md; cycle-105 dated entry appended to wiki/JOURNAL.md. STRIKE taxonomy: 0. Net change this cycle per git diff --stat: 7 files / +732/-1 (public/fingerprint/index.html NEW 167 lines, public/fingerprint/index.json NEW 235 lines, scripts/gen-fingerprint.py NEW 292 lines, public/colophon/index.html +1/-1, public/llms.txt +1/-0, public/sitemap.xml +6/-0, wiki/02-pages.md +30/-0). FLOOR + FLOOR-snapshot + og/john.png BYTE-IDENTICAL to P22 + P18 + cycles 91-100-101-102-103-104. Lane-decideable count: STAGED 0 unchanged, PROPOSED 1 → 0 (P23 built and shipped directly from PROPOSED per protocol); John-gated unchanged at 2 (P16 palette + sibling cards; DM darkmode taste).