chore(release): v0.5.0 — U3, the declared embed seam

Minor rather than patch, and the tie-break rule says default to patch, so the
reason is worth stating: a capability arrived AND one left. Report authors gain
a declared public API -- one line, `<script src="/_booth/embed.js" defer>`, plus
the `data-booth-mark` anchor syntax -- and the verbatim path loses
no-JavaScript operation, which it had since it existed.

That asymmetry is what makes it not a tie. Either half alone would have been
defensible as a patch.

Operator approved 2026-09-22.
This commit is contained in:
vh
2026-09-22 12:58:35 -07:00
parent 5c20e2f4d5
commit 7996fbd597
3 changed files with 16 additions and 13 deletions
+2 -3
View File
@@ -1,8 +1,7 @@
# The Booth — roadmap # The Booth — roadmap
Design: [`docs/design/information-architecture.md`](docs/design/information-architecture.md). Design: [`docs/design/information-architecture.md`](docs/design/information-architecture.md).
Current version: `0.4.0` (U1, U2, U3, U4 and U5 landed; extracted from eshpfi 2026-09-21). Current version: `0.5.0` (U1, U2, U3, U4 and U5 landed; extracted from eshpfi 2026-09-21).
U3's release tier is with the operator — it reads minor, and minor needs his approval.
## v1 target ## v1 target
@@ -13,7 +12,7 @@ defect — not a wish. The measurements are in the IA doc.
|---|---|---|---| |---|---|---|---|
| 1 | ~~**One item record**~~ — **landed `ce598b3`** | captions never reach the zoom view (never sent, not lost) | U1 | | 1 | ~~**One item record**~~ — **landed `ce598b3`** | captions never reach the zoom view (never sent, not lost) | U1 |
| 2 | ~~**Marks**~~ — **landed `c7f9437`, released `v0.2.0`** | 5 mechanisms for 1 job; operator→session loop runs through chat | U2 | | 2 | ~~**Marks**~~ — **landed `c7f9437`, released `v0.2.0`** | 5 mechanisms for 1 job; operator→session loop runs through chat | U2 |
| 3 | ~~**Declared embed seam**~~ — **landed 2026-09-22** | 6 regexes injected into arbitrary author HTML, load-bearing for asks | U3 | | 3 | ~~**Declared embed seam**~~ — **landed `87e2c53`, released `v0.5.0`** | 6 regexes injected into arbitrary author HTML, load-bearing for asks | U3 |
| 4 | ~~**Derived lifetime**~~ — **landed `c3a97c1`, released `v0.4.0`** | 70% of booths on the `.forever` escape hatch (54% when first counted) | U4 | | 4 | ~~**Derived lifetime**~~ — **landed `c3a97c1`, released `v0.4.0`** | 70% of booths on the `.forever` escape hatch (54% when first counted) | U4 |
| 5 | ~~**Self-announcing booths**~~ — **landed `c015a91`, released `v0.3.0`** | job 5 had no home, so it lived on the link board as 145 dead rows | U5 | | 5 | ~~**Self-announcing booths**~~ — **landed `c015a91`, released `v0.3.0`** | job 5 had no home, so it lived on the link board as 145 dead rows | U5 |
| 6 | **Benches** — registry, identity, enforced rule, migration | 69% link-board rot; the same bench posted 5× | U6 | | 6 | **Benches** — registry, identity, enforced rule, migration | 69% link-board rot; the same bench posted 5× | U6 |
+13 -9
View File
@@ -24,10 +24,14 @@ _As of 2026-09-22:_
- **U1, U2, U3, U4 and U5 are landed — the whole middle tier is closed.** U1 - **U1, U2, U3, U4 and U5 are landed — the whole middle tier is closed.** U1
`ce598b3`; U2 `c7f9437` → `v0.2.0`, `5e41108` → `v0.2.1`, `026a1fc` → `ce598b3`; U2 `c7f9437` → `v0.2.0`, `5e41108` → `v0.2.1`, `026a1fc` →
`v0.2.2`; U5 `c015a91` + `95beede` → `v0.3.0`; U4 `c3a97c1` → `v0.4.0`. `v0.2.2`; U5 `c015a91` + `95beede` → `v0.3.0`; U4 `c3a97c1` → `v0.4.0`.
**U3 landed 2026-09-22** — 431 tests green (410 → 431), deployed and verified **U3 landed 2026-09-22 and released as `v0.5.0`** — 444 tests green
live, 21/21 booth pages 200, and each of the four verbatim booths grew by (410 → 444), deployed and verified live, 23/23 booth pages 200, and each of
exactly 46 bytes, which is `len(EMBED_SCRIPT_TAG)` — one append, nothing else. the four verbatim booths served at exactly +46 bytes, which is
NOT PUSHED (push is the operator's call and he has not given it). `len(EMBED_SCRIPT_TAG)` — one append, nothing else. `87e2c53` is the unit,
`5c20e2f` the panel fixes. Operator approved the minor and authorised the
push on 2026-09-22; **this is the first push of this repo's history** — it was
26 commits ahead of `origin/main` before it, so every earlier tag reached the
remote at the same time.
- **U4 released as `v0.4.0`** (operator approved the minor on 2026-09-22). - **U4 released as `v0.4.0`** (operator approved the minor on 2026-09-22).
`c3a97c1` is the unit; the release commit carries the pre-existing fixes the `c3a97c1` is the unit; the release commit carries the pre-existing fixes the
bug-hunt panel surfaced in touched files. The tag waited for the last gate to bug-hunt panel surfaced in touched files. The tag waited for the last gate to
@@ -44,11 +48,11 @@ _As of 2026-09-22:_
`persistent-memory.d/2026-09-21-u7-section-premise-half-wrong.md`: every booth `persistent-memory.d/2026-09-21-u7-section-premise-half-wrong.md`: every booth
that actually needs navigation is FLAT, so half its premise is already known that actually needs navigation is FLAT, so half its premise is already known
to be wrong. to be wrong.
- ⚠ **U3's RELEASE TIER IS WITH THE OPERATOR.** It reads minor — the verbatim - **U3's tier was MINOR and the operator approved it** (2026-09-22). The
path gained a declared public API (`<script src="/_booth/embed.js" defer>`), argument that settled it, recorded because the tie-break rule says patch: a
a JavaScript dependency it did not have, and an author-facing anchor syntax — capability arrived AND one left — the verbatim path gained a declared public
and **minor needs his explicit approval**. `pyproject.toml` still says API (`<script src="/_booth/embed.js" defer>`) and lost no-JavaScript
`0.4.0`; nothing is tagged. Do not bump it on your own. operation. That asymmetry is what made it not a tie.
- **ALL FOUR U3 GATES ARE CLOSED.** In-session seam review (5 findings, SR-2 a - **ALL FOUR U3 GATES ARE CLOSED.** In-session seam review (5 findings, SR-2 a
real payload-shape bug); `/heid-contract-review` real payload-shape bug); `/heid-contract-review`
(`01M351WKV666D681SSRNY7D7X6`, 12 findings, 10 adopted, 2 already settled by (`01M351WKV666D681SSRNY7D7X6`, 12 findings, 10 adopted, 2 already settled by
+1 -1
View File
@@ -1,6 +1,6 @@
[project] [project]
name = "booth" name = "booth"
version = "0.4.0" version = "0.5.0"
description = "The Booth — a dead-simple standing web server that scans a data dir of drop-folders and renders each as an ephemeral media 'booth' (image/webm/audio auto-gallery, or a folder's own index.html verbatim). Also accepts browser/curl uploads for pickup under a human-readable id. 24h TTL, then the folder is wiped. Fleet tool for CC sessions to surface A/B and smoke results to the operator." description = "The Booth — a dead-simple standing web server that scans a data dir of drop-folders and renders each as an ephemeral media 'booth' (image/webm/audio auto-gallery, or a folder's own index.html verbatim). Also accepts browser/curl uploads for pickup under a human-readable id. 24h TTL, then the folder is wiped. Fleet tool for CC sessions to surface A/B and smoke results to the operator."
requires-python = ">=3.11" requires-python = ">=3.11"
dependencies = [ dependencies = [