The vibration — mechanics

The fork in this look

The first interaction: two verbs in the label column, unequal in type and cost. "Read ↓", bold, heads five ruled rows; reading costs no model call. "Ask", in the mind's light cut, is a hairline you write on, each question an Opus turn of about a cent. / or any key typed on the first screen lands on the rule, and focus stills the statement to limestone: the page listens.

Enter runs a same-document view transition: the numbered section is inserted under the poster and scrolled to the top as the typed words grow from the 16 px rule into the 160 px heading. One document carries both routes.

The standard route

Asking the mind

Questions are written on the rule or taken from a hint. Thinking shows in the material, keyed to the proxy's events: at phase: thinking the section is born ink on ink, the question teal on red, humming; at the first text delta limestone wipes in from the label column (a hard-edged clip-path, never a fade) and the say-line streams; at done the footnote prints and all is still. The hum lasts two seconds at most.

Components render by id:

Fallbacks: off_topic is one unnumbered line under the rule; not_in_snapshot keeps the say-line and "nothing is invented"; empty components drop; errors keep the prototype's codes and return the question to the rule. With the proxy down, the mockup's answerFor() answers locally, emitting catalogue JSON. Older answers fold to one ruled row.

The assistant in the chrome

Data, performance and accessibility

The fixture already provides 77 speakers (36 bios, two Thought Leaders), 50 sessions, four tiers, 39 partners, eight FAQ entries. Whova must add rooms and ids that survive retiming (fixture ids embed the start time); WordPress, print recipes (threshold, polarity, crop), titles and organizations in REST, single-colour logos and the Event record.

Motion budget: erosion, caret, one transition and one wipe per answer. The YEAR erosion animates font-variation-settings, re-shaping glyphs every frame: quantize it to whole years and profile it on a phone. Prints are baked at sync, not filtered live. Reduced motion holds 1979 and drops the caret blink, transition, wipe and the mockup's unconditional smooth scrolling. Keyboard: /, Enter, Escape, a limestone focus ring, focus kept on the rule, the prototype's shortcuts-off switch (WCAG 2.1.4). Screen readers: say streams under aria-busy; summarize() announces each answer once.

Limestone on teal measures 4.29:1, under AA for 12–16 px text, the say-line included; #F4F0E6 gives 4.60:1 on teal, 5.15:1 on red.

Build plan

Carries over from prototype/: server.py (stream, sanitizer, sessions, budget, guards, cache), the fixture and digest, and the renderer logic (streamAnswer(), error codes, reconcile(), summarize(), the merge, now marking in limestone); from the concept, the fitting functions, YEAR timeline, axis table, markup and compose().

The fixture replaces the page's id-less inline JSON. server.py grows from seven components to the brief's nine plus sources and coverage, sends page-aware notes, and serves this page (it refuses other origins). New: templates, thinking states, the fixed rule, card, state line, baked prints, section pages, Partners, and answer 01 with the hints precomputed per snapshot. Effort: two to three days for a local demo, then about four developer-weeks for this front end, backend shared.

Risks