« Dev Blog

Full Site Audit: Six Sites

Measured live on Tuesday, October 13, 2026 (America/Denver). Every number outside the » chevrons was measured in this run, not estimated. This post is also published as a standalone page at /dev/audit/.

Network grade: 87 / 100

Re-graded October 14, 2026, performance only, across all six sites.

What earns it: Every site green on the audit scorecard: The Studio at zero broken links with all images hosted at home, E2's homepage cut from 2,158 KB to 538 KB, share tags on every homepage, and a clean Inspector pass on Llama Chat. Since then: the E2 and Llamagram carves landed, so all six sites ship from their own slim repos, and E2's full link census (4,969 URLs checked live) found 267 real broken links and fixed 203 of them.

What holds it back: 54 E2 links still point at pages that live only on The Studio's site or nowhere at all, Clear Recipe's formal census at its quality gate is still outstanding, the LlamaChat Inspector has not had a clean full run since October 13 (transport-limited, zero real failures), and one Studio hero image sits at 129 KB over the 100 KB line at its quality floor.

Scorecard

SiteVerdictUptimeHomepage weightInternal linksCross-site images
E2, e2.life🟢200 x3538 KB186 checked, 0 broken0
Llama Chat, llamachat.lol🟢200 x3111 KB11 checked, 0 broken0
Llamagram, llamagram.lol🟢200 x314 KB12 checked, 0 broken0
The Studio, thestudio.io🟢200 x3565 KB2,748 checked, 0 broken0
Clear Recipe, clearrecipe.net🟢200 x3212 KB173 checked, 0 broken0
CLR.fm / Clear, clr.fm🟢200 x342 KB158 checked, 0 broken0

Totals: 18 of 18 homepage probes returned HTTP 200. 638 internal links checked across the six sites (homepages plus 3 to 9 key subpages each). 7 broken internal links, all on The Studio. 0 cross-site image violations (the 2 E2 og:image violations were fixed the same day).

» Lower-quality data: load times measured from a degraded network

Load times were measured with 3 curl runs per homepage from the audit VM, median reported. This VM's internet egress is degraded today: single fetches floor around 1 to 6 seconds and time to first byte nearly equals total time on every site, which means the network path, not the servers, dominates these numbers. Treat the load seconds as "reachable and responding," not as real world speed. The network independent numbers (HTML bytes, total page weight, asset sizes) are exact, and they are the ones shown outside this chevron. Link checks followed redirects and recorded the final status; any failure was retried before being counted. JavaScript template strings scraped out of inline scripts were excluded from link counts (they are not URLs).

SiteMedian total (VM)Median TTFB (VM)
E24.14 s4.04 s
Llama Chat4.15 s4.14 s
Llamagram4.54 s4.44 s
The Studio4.60 s4.56 s
Clear Recipe4.54 s4.28 s
CLR.fm5.01 s4.66 s

Load and weight detail

SiteHTML bytesTotal weight (HTML + same-origin CSS/JS/images)Assets
E226,715537,98317
Llama Chat4,149111,3333
Llamagram9,96414,3122
The Studio6,323565,3648
Clear Recipe35,229212,19254
CLR.fm9,62141,5113

Dave's laws: page under 1 MB total, no single image over 100 KB.

Over the line:

HTML audit (homepages)

Link check

Every internal href and src on each homepage plus its key subpages was fetched (redirects followed, final status recorded).

Broken internal links, all on The Studio (7):

  1. https://thestudio.io/assets/trailer.mp4, linked from /theater/, returns 404.
  2. https://thestudio.io/e2/livingworld/moments.json, linked from /q/, returns 404.
  3. https://thestudio.io/e2/livingworld/positions.json, linked from /q/, returns 404.
  4. https://thestudio.io/e2/people/img/sally-ppl.webp, linked from /q/, returns 404.
  5. https://thestudio.io/ed/, linked from /q/, returns 404.
  6. https://thestudio.io/haddie/, linked from /q/, returns 404.
  7. https://thestudio.io/writersroom/assets/sally-avatar.jpg, linked from /q/, returns 404.

The /q/ page on thestudio.io still points at paths from the old shared repo layout (the /e2/ paths live on e2.life now). This matches the known broken reference debt in the restored Studio tree.

» Lower-quality data: external link spot checks

Only the first 10 external links per site were spot checked, not the full set. Everything checked was fine except llamachat.io, which returns 402 today. That is the parked redirect domain whose registrar nameserver switch is already parked as a to-do; its Vercel side is billing blocked. It is linked from e2.life and thestudio.io pages.

Cross-site image check

Hard rule: every site hosts its own images. Result at audit time: 2 violations, both Open Graph images on E2 pages pointing at thestudio.io. Both were fixed the same day; the images now live on e2.life and the tags point home:

  1. Page https://e2.life/people/, og:image /e2takes/e2-city.webp
  2. Page https://e2.life/people/dave/, og:image https://www.thestudio.io/assets/dlaney-pixar.webp

Every other image, og:image and media URL across all checked pages on all six sites is hosted on the site's own domain. Llama Chat media all resolves under llamachat.lol, Studio images all under thestudio.io, Clear Recipe and CLR.fm fully self hosted.

Fix: copy those two images into e2.life and repoint the two og:image tags.

Usability pass (observable checks, homepages)

Llama Chat login and logout test

The app has no passwords: identity is a profile UUID kept in localStorage and sent as the x-llama-user header. The audit tested the real flow at the API layer, read only, no posts or writes of any kind.

  1. Login lookup: GET https://llamachat.lol/api/v2/profiles/dave returned 200 with Dave's profile (handle dave, display name Dave). This is the exact call the login form makes when a handle is typed. PASS.
  2. Logged in feed: GET /api/v2/tweets with the x-llama-user header for Dave returned 200 with the feed. PASS.
  3. Logged out feed: the same call with no header returned 200 with the public feed. Reading is public by design. PASS, as designed.
  4. Bogus identity: a made up UUID on the public feed returned 200 with public data only, no private access gained. PASS.
  5. Private data gate: GET /api/v2/notifications with Dave's identity returned 200. The same call with no identity returned 401, error code UNAUTHENTICATED, message "missing x-llama-user". Logged out means locked out of private data. PASS.

The full UI click-through was verified by Dave himself posting live this morning. This audit verified the auth path end to end at the API layer. The deeper Llama Chat audit from the same morning is its own post: Llama Chat Audit.

Extra findings

» Done Oct 13: the screenshot conversion, measured

The 1,404 KB llamachat-feed-mobile.png screenshot was converted to WebP at 800 px wide (73,516 bytes) on Oct 13. Measured result: the E2 homepage dropped from 2,158 KB to 538 KB total.

Score cards

Six score card images, one per site, hosted on e2.life itself.

Score card for E2, e2.life

E2, e2.life: 🟡

Score card for Llama Chat, llamachat.lol

Llama Chat, llamachat.lol: 🟢

Score card for Llamagram, llamagram.lol

Llamagram, llamagram.lol: 🟢

Score card for The Studio, thestudio.io

The Studio, thestudio.io: 🔴

Score card for Clear Recipe, clearrecipe.net

Clear Recipe, clearrecipe.net: 🟢

Score card for CLR.fm / Clear, clr.fm

CLR.fm / Clear, clr.fm: 🟢

Back to the Dev Blog index. Standalone version: /dev/audit/.