Page integrity

/health.

The operational state of challa.io — published, not asserted. This site argues that fundamentals like observability, determinism, and trust should be architecturally verifiable, not claimed. This page is the receipt.

Every number below is checkable against the repo or your browser’s DevTools. If anything here is wrong, it’s a bug — tell me.

Page weight

Asset Detail Size
HTML 41 KB
CSS 14 files, parallel-fetched 128 KB
JavaScript 2 files, deferred 26 KB
Webfonts 4 files, self-hosted, font-display: swap 101 KB
Total uncompressed source 295 KB

Raw source bytes. In production HTML, CSS, and JS are brotli or gzip compressed — a visitor typically downloads roughly 140–160 KB on first visit. Fonts are already compressed woff2. Portrait loads lazily; favicon is cached.

Runtime state

Signal Detail Value
Third-party scripts Google Analytics 4, async, non-blocking 1
Analytics / trackers GA4 — anonymised, no ads, no remarketing 1
Cookies set 0
localStorage keys theme preference only 1
External font requests 4 self-hosted woff2 — no Google Fonts 0
Service workers 0

Google Analytics 4 is the one third-party script on this site. It loads async and doesn’t block render. No remarketing, no ad targeting, no audience building — just basic traffic data: pageviews, referrers, countries, devices. If you’d rather not be counted, uBlock Origin works fine.

Observed performance

Metric Threshold Value Status
First Contentful Paint < 1.8s 1.5s good
Largest Contentful Paint < 2.5s 1.7s good
Cumulative Layout Shift ≤ 0.1 0 good
Total Blocking Time < 200ms 40ms good
Lighthouse Performance ≥ 90 99 good

Thresholds are Google’s Core Web Vitals. Measured on mobile Lighthouse (slow-4G throttling, mid-tier emulated phone) — the stricter test. Values are stamped from scripts/perf.json after each run.

Critical render path

Resource type Detail Blocking
HTML the page itself 1
CSS 14 files, parallel-fetched from head 14
JavaScript defer — runs after paint 0
Fonts self-hosted, preloaded, font-display: swap 0
Images portrait is loading="lazy"; favicon is cached 0

Dependencies

Item Value
NPM packages 0
Framework none — hand-coded HTML + CSS + vanilla JS
Build step none — source is what’s served
CSS preprocessors none — plain CSS with custom properties

Accessibility

Feature Status
Skip-to-content link present
Semantic HTML landmarks header, nav, main, article, section, footer
Reduced-motion support respected — prefers-reduced-motion
Theme dark + light, persisted to localStorage
Focus-visible rings present on all interactive elements

Provenance

Item Value
Site version v3
Last receipt regenerated 2026-04-25
Recent edits Journey trust lines · Preloader arc · GA4 added · Health page table layout

Verify these claims

Don’t take my word for any of this. Open DevTools on this page, open the Network tab, hard-reload. Every byte above will match. Or run Lighthouse on the live site and compare the Observed performance numbers to what’s stamped here.

The build script itself is scripts/update-health.js — one file, zero dependencies, roughly 140 lines. It scans the source, stamps the numbers, prints a report. If a scan ever finds something that breaks a zero-claim, the script prints a warning rather than silently passing.