Three fixes, each of which had ended a live showcase.
Big rooms no longer die at the judging pass
Above roughly ten projects, a run reached "judging", scored zero, and stopped. Three separate faults, each fatal on its own:
- The entire room went out as a single model call. It is now batched six per call and run concurrently.
- That call was capped at a flat 45 seconds. Measured across a full fifteen-call room, six-project batches run 18–48s with an 83s outlier — the cap sat under the real worst case. The ceiling now scales with batch size.
- No retry existed anywhere. One unparseable response from one judge ended an otherwise healthy 30-project run. Transport and format flakes are now retried.
Verified live: 30 projects complete in about two minutes, all scored across three lenses and sealed. Eight real repositories score 8.0–9.25 over six distinct values with no cliff between batches.
The tone gate no longer ends the event it protects
The gate that keeps teardown language away from builders could kill a finished showcase, and could do it over nothing.
It matched banned phrases as bare substrings, so an entrant named Blacksmith tripped lacks, BadgeForge tripped bad, and Weakly Supervised tripped weak. Someone's own project name could abort their own award. Matching is now anchored to word boundaries.
A genuine violation was also fatal, with no repair and no retry — one adjective from one judge threw away the whole run, and the odds scale with the room. Builder-facing fields are now rewritten with safe copy instead. The guarantee is unchanged: no builder is ever shown teardown language. Crashing only achieved that by destroying the event. Every substitution is recorded in the sealed bundle as a SHA-256 of the original, so the rewrite is auditable without the language riding along in the bundle it was cut from.
Verified live: a run whose entrants were named "Bad Idea Labs", "Blacksmith", "Weakly Supervised Labs" and "Poorvi's Planner" completed and awarded first place to Blacksmith. 151 builder-facing strings sealed, zero violations.
doctor tells you when your install is stale
The showcase command runs from its own checkout, separate from this repository, so it drifts silently — one install sat three releases behind for months, which is why an already-fixed judge panel kept looking broken.
showcase doctor now names the installed version and says when a newer release exists. It is advisory only: a two-second timeout, quiet on every failure path, and it never claims to be current when it could not check. It speaks only for a strictly newer tag, so a yanked release cannot tell a room to downgrade.
Full Changelog: v3.4.1...v3.4.2