feat(brand): a shot can take a body, so the last hand-made stills are generated
Three pictures on /arena — the chase camera behind the EV, the crow in flight, the
aircraft over the board — were the only imagery on the site with no generator
script anywhere in either repo. They were made by hand, and so they were a single
daylight frame served to dark-mode readers too, with no pair to choose from.
`shots.mjs` gains a `play` capability beside `aim`: a shot names a control mode,
the script clicks the app's own mode dock, and only then shoots — with the HUD
deliberately left in frame, because on these three the body and its readout ARE
the subject. `#mode-dock` and `#play-hud` are in FURNITURE.BARE rather than
CLUTTER for that reason, and there is a comment at the `hide()` call so a later
tidy-up does not crop the subject out.
Three guards, each verified by deliberately making it fire:
- the mode must be OFFERED, not merely present — asking for `drive` on the Bay
Area board now says `"drive" is not offered here — the dock is showing
[overview, actor]`;
- `aria-pressed="true"` AND `#play-hud` unhidden, the same pair
`performance-budget.mjs` waits on;
- the HUD's own body chip, so asking for `Explore` when an anonymous visitor
gets a crow says `the play HUD says "Crow", not "Explore"`.
The body guard runs twice, at the click and again at the shutter, because a
completed route or a bound ends a mode mid-wait and hands back an orbit wide shot
under the right filename.
`untilProgress` exists because the first delivery drifted: `run: 9000` gave 55% of
the leg in a 1x preview and 69% in the 2x render — a different stretch of road,
with a town's edge across the top of the frame. Road traffic runs from page load,
so a duration is really "boot plus a bit". Waiting on the app's own route
percentage lands preview and delivery on the same frame; overshoot throws rather
than shooting. The crow and the aircraft are built inert, so a duration is exact
for them and only the car needed the gate — measured, not assumed.
The run log now echoes the HUD (`[Drive] 56 mph · US-101 | assisted · 55% ·
chase`), because "shot drive-101-day" is equally true of a parked car, a finished
route and a correct frame.
The crow moved from the state board to the Bay Area. On California a one-metre
bird stands against ground drawn at 1,919 m to the unit with an oak the size of a
hill behind it, and the night frame would have been a black rectangle with a bird
in it. `crow-nav-v1`'s `source` said "Tera / California" and that was wrong on the
environment's own terms as well — `crowNav.ts` runs a ±120 m box with no terrain
at all.
One frame is honestly weak and is recorded rather than dressed up: `drive-101`
at night. From behind, on an unlit corridor, the EV is two tail lamps and a roof
strip. Four hours were shot between 21:15 and 20:05 and the corridor's ground is
equally black at all of them, so the hour is not the lever; both real fixes are in
the engine and are in TODO.md. It is still the honest night frame.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -21,7 +21,7 @@ in this file: the stills were re-shot at one commit and the films at another two
|
||||
weeks older, and nothing said so until a human compared two files.
|
||||
|
||||
It prints a diff of the deliverables at the end — new, changed with the size delta,
|
||||
byte-identical — and it **fails loudly and specifically** on the only two failures
|
||||
byte-identical — and it **fails loudly and specifically** on the three failures
|
||||
that otherwise produce confident wrong output:
|
||||
|
||||
- **SwiftShader.** Software rendering makes the same pictures fifteen times slower
|
||||
@@ -29,15 +29,77 @@ that otherwise produce confident wrong output:
|
||||
- **A chapter `expect` guard firing.** That means a pack was reordered under the
|
||||
shot list, so re-running cannot fix it. `node scripts/brand-assets/shots.mjs
|
||||
--list` prints what the shot list believes.
|
||||
- **A `play` guard firing.** A shot that takes a body did not get the one it asked
|
||||
for — see the section below. Also not a flake, and also not fixed by re-running.
|
||||
|
||||
Two things it does **not** do, on purpose: it does not commit, and it does not
|
||||
re-stamp the manifests afterwards. Commit tera first, then
|
||||
`shots.mjs --manifest-only` and `films.mjs --manifest-only`, so the manifests name
|
||||
a clean sha rather than a dirty tree.
|
||||
|
||||
## A shot can take a body now — `play` in `shots.mjs`
|
||||
|
||||
Three stills are pictures of an agent rather than of a place: `drive-101`
|
||||
(chase camera behind the EV on US-101), `crow-nav` (the crow over the Bay Area
|
||||
board) and `california-flight` (the aircraft on the corridor). They replace three
|
||||
hand-made screenshots in `lumbridge-v4/apps/web/public/arena/`, which were the
|
||||
last imagery on the site no script could reproduce — and so also the last that
|
||||
nobody could re-shoot when the engine moved. All three still showed a left column
|
||||
reading "Explore as your crow →", a "FULL VIEW" badge no visitor to the site ever
|
||||
sees, and one daylight frame served to dark-mode readers as well.
|
||||
|
||||
`play` drives the mode dock, which is the same class of input `aim` is: no back
|
||||
door, just the control a reader uses. `#mode-dock` and `#play-hud` stay **in** these
|
||||
three frames deliberately — they are what the picture is of — while remaining in
|
||||
`FURNITURE.BARE` for the share cards.
|
||||
|
||||
Three guards, all of them tested by making them fire, because every way this goes
|
||||
wrong renders a plausible-looking frame with the right filename:
|
||||
|
||||
- the dock button must be *offered*, not merely present — the EV and the aircraft
|
||||
exist on the California board alone, and driving also needs US-101 or I-5 to be
|
||||
the current chapter, so elsewhere the button is `hidden` and clicking it is a
|
||||
no-op that leaves an orbit wide shot;
|
||||
- `aria-pressed` **and** `#play-hud`, exactly as `performance-budget.mjs` does —
|
||||
`transitionControlMode` substitutes a fallback for a request it will not honour;
|
||||
- the HUD's own chip names the body ("Drive", "Crow", "Flight"), checked at the
|
||||
click *and again at the shutter*, because a route that completes or a bound that
|
||||
is hit ends the mode mid-wait.
|
||||
|
||||
`refresh.mjs` surfaces all three as their own headline, next to SwiftShader and the
|
||||
chapter guard.
|
||||
|
||||
**`untilProgress`, not a duration, for anything that was already moving.** The crow
|
||||
and the aircraft are built inert, so *n* ms after the dock hands them over is the
|
||||
same place every time — measured identical at 1x and 2x. Road traffic is not: it
|
||||
runs from page load, so a duration is really "boot plus a bit", and the same
|
||||
`run: 9000` put the EV at 55% of the leg in a 1x preview and 69% in the 2x render,
|
||||
which is a different stretch of road with the edge of a town across the top of the
|
||||
frame. `untilProgress` waits on the app's own route percentage instead, so preview
|
||||
and delivery agree. Overshoot throws rather than shooting.
|
||||
|
||||
### `drive-101`'s night frame is the weak one, and it is the product not the capture
|
||||
|
||||
Canvas-region mean luminance, 1600w: `crow-nav` 23.2, `california-flight` 13.6,
|
||||
`drive-101` **7.8** — against `fidi` 16.0, `golden-gate` 8.2 and the `bay-bridge`
|
||||
frame this file already calls out, 8.3. Nothing in it needs a lift to be legible —
|
||||
the road, the markings, the panel, the HUD and the dock all read at native
|
||||
exposure — but the *subject* nearly disappears: seen from behind on an unlit
|
||||
corridor the EV is two tail lamps and a roof strip, and the hour is not the lever.
|
||||
Shot at 21:15, 20:45, 20:20 and 20:05 (sun −15.7° to −3.1°) the corridor's ground
|
||||
is equally black, and by 20:05 the plan view has flipped to its daylight styling
|
||||
while the scene has not, which is worse. The two candidate fixes are both in the
|
||||
engine: give the EV a headlamp spill on the road ahead, or let the corridor's
|
||||
terrain keep some moonlight the way the city boards' ground does.
|
||||
|
||||
The crow moved to the Bay Area board for the same reason and it worked: over a city
|
||||
the night frame is the *better* of its pair. The hand-made original was on the state
|
||||
board, where a one-metre bird stands in front of ground drawn at 1,919 m to the unit
|
||||
with an oak the size of a hill behind it.
|
||||
|
||||
## Re-shoot the time-lapse films
|
||||
|
||||
The 25 product stills and both share cards were re-shot on 2026-08-22 at the
|
||||
The 28 product stills and both share cards were re-shot on 2026-08-22 at the
|
||||
airports-and-bridges commit and are current. **The films were not** — they were
|
||||
last shot on 2026-08-07 at `9c9e78f`. `films.ts` in lumbridge-v4 records the tera
|
||||
commit each reel was shot at, so a stale reel is visually stale and no caption edit
|
||||
|
||||
Reference in New Issue
Block a user