The phrenology grid — mechanics
The fork in this look
There are no doors; the verb line weights the routes by cost. Read is free static HTML. Touch is the mind's gesture at the map's price: the province turns granite and Plate IV filters from a real link (/agenda/?province=ai-digital), with no model call. Type, the plate's heaviest line, alone spends a turn (about a cent warm, 1–4 s to first word).
The first interaction is a province hover or a keystroke: nothing autofocuses on the indexed home, but / focuses the rule and the prototype's early-keystroke handler drops any printable key into it.
The first submit runs one same-document view transition: the 271 px dateline folds into the facts strip, the rule leaves the crown to dock under the strip, and section 02 scrolls in after Plate I.
The standard route
The facts strip is the nav; each page is one server-rendered plate whose running head links its neighbours. /lineup/ holds the figures and the index of 77, each name opening a speaker plate. /agenda/ is four columns under the numerals 3 to 6, with #d3 and ?province= as server-rendered states; on phones the numerals become day tabs, halving the 5,100 px programme. /tickets/ switches the big prices by date at the phase boundary. Two plates are new: VII partners, names by tier (colour logos would break the one ink), and VIII questions, the eight FAQ.
Asking the mind
The rule is a real <form action="/ask">; a draft adds a mono [ compose ] at its end, a named target for touch and voice control.
Thinking is a change in the material: the question slides along the rule into the crown, then a granite copy of the hatch wipes down through the cranium every 2.3 s. The wipe fades when say starts; each arriving component turns its provinces granite (the renderer reads each session's track; the model never names one), and an answer touching none keeps the cap line granite until done.
Each ui event prints into the section (240 px numeral, renderer-built counts, question as heading):
- Text:
sayin Literata italic, 45 words at most;faqprints Zpryme's own question and answer as a ledger row, retiringtext_block. - Speakers:
speaker_gridis the people list of 44 px line-screen thumbnails;speaker_carda figure with honours, sessions and bio; the 18 without portraits get the plate's bust. - Sessions: hairline rows, mono times, breaks in italic;
session_cardadds description and moderators. - Agenda day: rows in the section on the home page (
mode: "mind"); on/agenda/(mode: "standard") the plate dims under the filter bar. - Venue: the place ledger, with ETS26's venue labelled as last year.
- Tickets: the tier rows, live tiers in granite, the Eventbrite link.
- Choices: the suggestion line under the rule; a register or page link prints last, with ↗.
- Sources: the numbered footnote, built from
sources, snapshot version, the renderer-owned sample marker and acoverageclause. - Fallbacks: unknown ids drop;
off_topicanswers on the rule, unnumbered; errors print one mono line pointing at touch and read. With the proxy down, the budget spent or no script (Turnstile cannot run), the mockup'scompose()matcher (ported server-side for/ask) answers from the snapshot, footnoted "from the index". Sections older than the last three fold to one hairline row.
The assistant in the chrome
Off Plate I and on inner pages the rule docks under the sticky facts strip (on phones, the bottom edge, choices above it). The stub is the edge-parked card: curated questions first, with ‹ › controls that also stop the 7 s rotation (WCAG 2.2.2), then the visitor's numbered questions as jump links. The colophon's state line adds the mind's live state (composing 03, resting, from the index) to version, counts and sample marker.
Data, performance and accessibility
The fixture holds the seven provinces as invented tracks (12, 8, 4, 3, 2, 2 and 2 sessions; 17 untracked) already in the digest, plus 59 portraits, 36 bios, four tiers and eight FAQ. Whova or WordPress must add a real ETS27 theme per session (Whova tracks are formats), a crop focus per speaker (the concept's 59-entry table) and mirrored portraits.
Motion budget: the load draw under 4 s, then transform and opacity only, so the hatch ships as an image with pre-rendered granite overlays beside the inline outline and hit paths. Bake the line screen at build, not per portrait as an SVG filter; subset Libre Caslon Condensed for the dateline, the LCP element.
Reduced motion gets the finished plate, a granite cap line for thinking and no rotation. Esc stops a turn; the province index is the accessible head; one polite status line per turn. Granite is 3.8:1 on the paper, so 11 px granite text needs about #A24A3E (4.8:1), and rows dimmed to 22 % need a text cue.
Build plan
Carries over: server.py whole (turn, prefix cache, fallbacks, scanner, sanitizer, sessions, budget), the fixture and its builder, mind.html's client logic (SSE reader, watchdogs, reconcile on done, error map, status region, draft hand-off), and the concept's layout(), draw(), province wiring, compose() and make-head.py. New: the catalogue grown from seven components to ten plus sources and coverage; this renderer; the docked rule, stub and transition; make-head.py at publish (weights now hard-coded as sessions plus three); hatch and portrait baking; the plates as pages; answer 01 regenerated per snapshot and named in the first surface note. About five weeks for one designer-engineer beyond the brief's shared build.
Risks
- Province sizes are data: each publish can reshape the head, and a theme count other than seven breaks the key.
- "Asked on this plate" implies visitors, but message text is never logged; until retention is decided, staff write it as "asked often".
- The concept hides suggestions below 900 px, so phone
choicesdepend on the docked rule.