Files
ditto.site/examples/sites/RESULTS.md
T
2026-06-29 15:11:48 -07:00

3.3 KiB
Raw Blame History

Stage 3 — multi-page / whole-site results

clone-site <url> crawls a site from one entry URL, selects a bounded, deterministic route set (singletons reproduce, pairs reproduce, larger CMS-like collections collapse to a listing plus one representative), captures each route, and generates one Next.js App Router app with shared chrome, internal links rewritten to the clone routes, and content-addressed shared assets. bench-site builds + grades it: per-route Gates 06 + stage-2 pollution/perceptual, plus site-level link-integrity and site-determinism gates.

The composites in this folder show SOURCE vs CLONE for the first few routes of each site at the 1280px viewport.

Results

Site Discovered → reproduced Routes pass G06 Collections collapsed Shared chrome Links Determinism
overreacted.io 59 → 2 2 / 2 1 (58 posts → 1) header
brew.sh 88 → 12 12 / 12 6 (27 → 6) footer
jamstack.org 552 → 11 11 / 11 3 (534 → 3)
gatsbyjs.com 281 → 12 11 / 12 2 (62 → 2)
11ty.dev 1085 → 12 11 / 12 4 (1076 → 4)

Totals: 47 / 49 routes pass Gates 06; link-integrity and site-determinism green on every site. The reproduction policy is the headline: jamstack's 552 pages and 11ty's 1085 (incl. an 882-instance /authors/:id directory) each reduce to ~1112 reproduced routes — the full instance map is recorded in each run's site-manifest.json as the CMS-handoff boundary.

Notes

  • overreacted.io — a flat root-level blog: 58 /:slug posts collapse to the home (listing) + one representative; the shared <header> is hoisted into layout.tsx (emitted once). Both routes clone at 99.9.
  • brew.sh — home + per-year blog archives; the shared footer (<aside> + footer) is hoisted; 12/12 at ~99.6.
  • jamstack.org — a directory site: /generators (377), /headless-cms (134), /glossary (23) each collapse to listing + representative. 11/11 at 99.9.
  • gatsbyjs.com (11/12) and 11ty.dev (11/12) each miss exactly one route, and both are out-of-reach classes for a static deterministic clone (not multi-page defects): gatsby's /blog/gatsby-5-typescript (residual inline-formatting / margin-collapse drift on a content-heavy post — the documented linear/notion/ paulgraham class) and 11ty's /speedlify (a JS performance dashboard — dynamic content, outside the static-clone contract). The crawl, collection collapse, link rewriting, shared layout, and determinism are exact — a route scores what the same page scores cloned standalone.
  • Two general fixes surfaced here lifted gatsby 4/12 → 11/12 with no single-page regression (easy re-ran 4/4 @ 100): (1) block-level grid/flex containers are now margin-auto re-centered like plain blocks (a centered <main class=grid> was left-aligning its column ~96px off), and (2) the DOM gate credits the compiler's own valid-HTML retags (button/ul → div) as matched instead of docking them.

Reproduce: cd compiler && npm run bench-site (add --regen to re-grade existing captures). Composites: python3 scripts/make_site_compare.py.