agents agents/E-site.md
Owns: computedriven.com/ Must not touch: root *.md (lane F), RRABBIT/ (lane A), `ampersand-nav/` (lane N). Status: ✅ READY NOW. Nothing blocks the site work; only the pricing co…

Lane E — the site and the nav

Owns: computedriven.com/ Must not touch: root *.md (lane F), RRABBIT/ (lane A), `ampersand-nav/` (lane N). Status: ✅ READY NOW. Nothing blocks the site work; only the pricing copy waits on Travis.

## OWNERSHIP CHANGE — 2026-08-16 `ampersand-nav/` is no longer lane E's. It belongs exclusively to lane N (agents/SITES.md). This brief and SITES.md asserted conflicting ownership of the same file for one day, which is the exact failure the ownership contract exists to prevent — an agent following this brief was authorised to edit a file another brief said only its own lane could touch. Caught by GPT on review of SITES.md. The nav is the one genuinely shared object in the portfolio (sync-nav.sh fans one source out to 26 targets across ~21 sub-repos, writing into every site repo), so it needs a single owner and that owner has to run last, alone. §3 below is retained as the specification of the work, and is now lane N's to execute. If lane E discovers a nav requirement, it records it in its report and stops. Lane N consumes those requests at the end.

Read first

COMPUTEDRIVEN_POSITIONING_PLAN.md §9 (content outline) and §11.2 of WORLD_SIZE.md (the tier table) · computedriven.com/README.md.

What the site is

Its own git repo, served through Cloudflare, not GitHub Pages — a push reaches the live domain in about 15–30 seconds. One static page, self-contained CSS and vanilla JS, no build step, nav loaded from /amp-nav.js. Preserve the no-build-step property; it is itself evidence for the thesis and must not be traded for a framework.

Currently 14 sections and ~127 KB. The ladder, tracks, the certificate and the participation rungs went in on 2026-08-15.

The work

1. T&R Cloud — the section that was deliberately left off

It was held back because the tiers were gated on a measurement. That measurement is done and the tiers are un-retracted, so the section can be written.

TierPriceCOGS on R2Margin
10 GB free$0$0.00genuinely free
Driver 100 GB$6$1.3578%
Fleet 500 GB$19$7.3561%
Factory 2 TB$69$30.5756%
Enterprise 10 TB[TRAVIS]$153.45~$438 holds 65%

ARITHMETIC CORRECTED 2026-08-16. This row read "~$236 holds 65%" and $236 holds 35%. $153.45 ÷ $236 = 65.02% — the figure was COGS as a share of price, which is the inverse of gross margin. A true 65% needs $153.45 ÷ 0.35 = $438.43. The other three tiers were re-checked and are correct (77.5 / 61.3 / 55.7, printed as 78 / 61 / 56). Caught by GPT reviewing this brief. The same wrong figure was in five other places — COMPUTEDRIVEN_POSITIONING_PLAN.md ×2, WORLD_SIZE.md ×2, agents/README.md — all corrected in place the same day. This is why the [TRAVIS] gate is drawn where it is. The row was labelled a decision, so the wrong number never reached a page. But it sat in "settled arithmetic" for a day, and an agent told "the arithmetic above is arithmetic, not a decision" would have reasoned from it. Re-derive any margin you are about to publish; do not copy one.

The framing that is true and worth using: your world is a graph — back up the graph, restore the world. And the measured fact that makes it good copy: the world layer is ~0.1% of a 100 GB backup, so the roads, tracks, WRL and provenance ride along free inside a tier priced for bulk. Unlimited restores are affordable because R2 charges nothing for egress — that claim is true, sounds expensive, and costs nothing.

Enterprise is not "more gigabytes." It is dedicated infrastructure — own VM, own database, optional data residency. That is what it sells.

Do not publish a price Travis has not set. The arithmetic above is arithmetic, not a decision.

2. Keep the rungs honest as they move

The page prints an evidence rung per ladder step. On 2026-08-15 REPLAY moved spec → live_local the same morning the page was written, and the table was corrected before publishing. That will happen again.

Currently accurate and worth keeping accurate: the page says a track cannot be published or addressed and lists "Drive it" as not existing. That is still true from a user's point of view — seal/store/verify exist in_tree, nothing is wired into the shell, and nothing has been uploaded to a real host. Do not upgrade that claim until lane A wires it and a real host serves one.

3. The nav tier band — plan §6, and the highest-leverage change left

One file, ampersand-nav/src/amp-nav.js, synced by sync-nav.sh to ~18 sites. Add to each LINKS entry: tier (1 Place / 2 Product / 3 Spec / 4 Outside), layer, rung, step. Render a placement band: tier 1 no band, tier 2 "the {layer} layer of ComputeDriven", tier 3 "a specification in the ComputeDriven world" + link to the real spec, tier 4 nav removed.

Edit `ampersand-nav/src/`, never a vendored copy. The script fans one source out to 26 targets across ~21 sub-repos.

The rung chip must render the stored rung, never a default. Missing renders ?, not spec and not blank — an invented status is worse than a missing one because it stops the question being asked.

Check for a dirty tree first. amp-nav.js has been mid-flight from a parallel session before.

Done means

  • Live route verified by serving the domain and checking it, not by grepping the local tree —

that error mode is recorded in workbench/docs/ROADMAP.md and it has cost a wrong claim here.

  • No horizontal overflow at 390 / 700 / 790 / 800 / 815 / 1000 / 1280 / 1600 px.

  • Every anchor in the nav resolves to a section that exists.

Traps this site has already paid for

  • `IntersectionObserver` never fires in the Claude browser pane — it does not composite frames.

A scroll-triggered animation with IO as its only trigger renders as empty troughs. Always add a setTimeout fallback and a done guard.

  • The mono font ligatures `|>` into a single `▷` — pretty, and unsearchable. #cert .wrlbox

disables ligatures for that reason; the WRL listings keep theirs because --sig--> reads better as an arrow.

  • The nav hid its links at 780 px but overflowed at 790, so 781–800 scrolled the whole document

sideways. The breakpoint is 810 now. Measured across eight widths.

  • `agent-browser screenshot <name>` parses a bare filename as a selector. An element shot of a

tall section came back a uniform black rectangle with the DOM plainly visible. Take viewport shots; resize with agent-browser set viewport W H.

  • Never put an email address on this page. Contact goes through Formspree

(https://formspree.io/f/xaewoadr) — Travis's call, 2026-08-11. No mailto: anywhere, not even as a fallback.

  • `.jn-count` is hand-maintained. Nothing fetches at runtime. The counts move only in a commit

that also moves the date.

Open in the interactive atlas