docs: refresh what today's work made stale — booth asks (inline placement promoted to its own section), ana-ml2 nvme7 settled by the scrub result, nh3-dev booth entry + the CLI-on-PATH fix, run-07 runbook outcome + serving state

This commit is contained in:
vh
2026-09-09 14:18:34 -07:00
parent d7361e8b44
commit 2206229ebf
+39 -21
View File
@@ -161,36 +161,54 @@ Rules of the primitive:
- **A broken ask is shown as broken**, not hidden: if the JSON does not - **A broken ask is shown as broken**, not hidden: if the JSON does not
validate, the page says why, so a session never thinks it posted a question validate, the page says why, so a session never thinks it posted a question
the operator cannot see. the operator cannot see.
- **A booth with its own `index.html` gets the ask INLINE, where you put it.** - Ask/answer files are not gallery items and do not count toward the booth's
That page is served verbatim, so the Booth substitutes placeholders in your item count; they render as the panel above the gallery. Answering bumps the
markup rather than rendering the panel above a gallery it does not have: booth's mtime, so it lives another TTL — the session has 24h to read it.
- Works with JavaScript off (plain form POST). No auth, same as everything here.
### Where the form renders
Two booth shapes, two placements. Either way the ask is never invisible — that
is the guarantee; markup only moves it somewhere better.
**Auto-gallery booth** (no `index.html` of its own): the asks panel renders
above the gallery, styled like the rest of the Booth. Nothing to do.
**A booth serving its own `index.html`**: that page is returned verbatim, so the
Booth substitutes **placeholders in your markup** rather than rendering a panel
above a gallery that does not exist. The question then sits with the artifact it
is about, which is the whole point (operator ruling 2026-09-09: *"the asks should
be inline with the artifacts, not on a separate page"*).
```html ```html
<div data-booth-ask="anchors"></div> <!-- the whole ask: every question + submit --> <div data-booth-ask="anchors"></div> <!-- the whole ask: every question + submit -->
<div data-booth-ask="anchors:lawson"></div> <!-- just that one question's radios --> <div data-booth-ask="anchors:lawson"></div> <!-- just that one question's radios -->
<div data-booth-ask-submit="anchors"></div> <!-- the notes field + submit button --> <div data-booth-ask-submit="anchors"></div> <!-- the notes field + submit button -->
<!-- booth:ask anchors:lawson --> <!-- comment form, same thing --> <!-- booth:ask anchors:lawson --> <!-- comment form, identical behaviour -->
``` ```
Per-question fragments bind to **one** form with the HTML5 `form=` attribute, Per-question fragments bind to **one** form via the HTML5 `form=` attribute, so a
so a four-voice audition can put each radio group under that voice's audio and four-voice audition puts each radio group under that voice's audio and still
still submit all four picks in a single POST — which is what a multi-question submits every pick in a single POST — which is what a multi-question ask
ask requires. The fragments ship their own scoped styles and inherit nothing requires. Fragments ship their own scoped styles, inherit nothing from your page,
from your page. No JavaScript. and use no JavaScript.
⚠ Put the placeholder **outside** any CSS grid or flex container, or it ⚠ **Put the placeholder outside any CSS grid or flex container**, or it becomes a
becomes a cell in it. A sibling of the block it belongs to is right. cell in it — measured on `redo-anchors`, where the first attempt rendered as a
224 px sixth grid cell wedged between two audio players. A sibling of the block
it belongs to is right.
Placement is optional: a page with no placeholders gets the whole ask appended The fallbacks, so a page can never strand a question:
at the end, so an ask is never invisible — markup only moves it somewhere
better. Mark up some questions and not others and the rest are appended too, | you marked up | what happens |
because a multi-question form that is missing a question is a 400 the operator |---|---|
would only meet after filling it in. The amber chip stays as a jump link to the | nothing | the whole ask is appended at the end of the page |
first open ask, and `/b/<name>/asks` still renders every ask on its own page. | some questions, no submit | the rest of the questions **and** a submit block are appended |
- Ask/answer files are not gallery items and do not count toward the booth's | a stem this booth does not have | your markup is left alone, untouched; the real ask is still appended |
item count; they render as the panel above the gallery. Answering bumps the
booth's mtime, so it lives another TTL — the session has 24h to read it. An amber `? N open asks` chip floats top-right as a jump link to the first open
- Works with JavaScript off (plain form POST). No auth, same as everything here. ask, and `GET /b/<name>/asks` still renders every ask on a plain page of its own
— useful when you want to hand someone only the question.
## Upload for pickup ## Upload for pickup