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

55 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`.