academy academy/README.md
A placeholder surface for the [&] Academy: the institutional loop where the stack teaches, and proves the teaching took.

Academy — prototype

A placeholder surface for the [&] Academy: the institutional loop where the stack teaches, and proves the teaching took.

Four static pages, no build step, no framework, no dependencies. They exist so the design can be reacted to while it is built, and so a B1 participant has a real URL to be handed.

Spec: ACADEMY.md. Evidence base: alkeyword.com/prototype/runs/PORTFOLIO_GAP_QUEUE.md. Both live in the portfolio repo (c-u-l8er/ProjectAmp2), which is private — named rather than linked, since a link that 404s for everyone but its author is worse than a path.

This is a prototype, and it says so on every page

PageWhat it is
index.htmlThe loop, the three layers, what is measurably true today, the two-lane build order
read.htmlLayer 1 — a grounded article where every factual sentence shows its source, plus a published refusal
practice.htmlLayer 2 — a Runefort task floor, and an honest account of what blocks it
prove.htmlLayer 3 — the six real proof gates and the SkillBundle shape
B1_PROTOCOL.mdThe falsification run: how to give one outsider one real task and what to record

Every panel carries an evidence edge — a colour saying whether it is live, mock, spec-only or blocked, with a legend in the header of each page. Real data, real gate IDs and real blockers throughout; the article prose, tile states and bundle values are marked mock.

That grammar is the point. A screenshot of a prototype becomes evidence that the thing exists, so the pages are built to refuse that reading.

Keeping it out of the index

Two mechanisms, and the combination is deliberate:

  • `<meta name="robots" content="noindex, nofollow">` on every page, plus an X-Robots-Tag

header in _headers for crawlers that never parse the HTML.

  • `robots.txt` allows crawling. This looks backwards and is not. A crawler must fetch a page

to read its noindex. Disallow blocks the fetch, the noindex is never seen, and the URL can still be indexed from inbound links as a bare title with no content — the worst of both outcomes. Allow + noindex keeps a page out; Disallow + noindex does not.

When Academy becomes real, remove the meta tags and the X-Robots-Tag header, then add a sitemap. Not before.

Running it

python3 -m http.server 8125

No install, no build. Also registered in the portfolio's .claude/launch.json as academy.

Deploying

Cloudflare Pages, no build command, output directory /. The repository root is the site.

The nav

amp-nav.js is a synced copy of the shared portfolio component; the source of truth is ampersand-nav/src/amp-nav.js in the portfolio repo, propagated by sync-nav.sh. Do not edit it here — the next sync will overwrite it.

The pages declare property="academy", which highlights the Academy category and deliberately claims no item inside it. There is no Academy entry in the nav yet, and there should not be one until the reading layer serves a real page (ACADEMY.md §6, C1). The nav's own convention, in a comment beside the subscribe CTA: if a real thing ever exists, swap the href; do not swap the label ahead of it.

Open in the interactive atlas

content id · CIDv1
bagaaierapx5xe6bkgapoqnzegnnyrmkxctxswnycbfdx5bqm2fmz2f2o64na