1
0

fix: a marker is a true-metre object, not a scene-unit one

`markers.ts` sized a pin in scene units — 1.6 of lift, a 1.1 stem, a 0.16
head — against the Bay Area board, where a unit is 94.3 m and those are a
151 m lift under a 104 m pin. Correct, and correct for exactly one board.

`cities/unify.ts` put San Francisco's districts on a board that is
1,919 m to the unit and `main.ts` draws markers on any board carrying
metro detail, so the same constants became **a 3.07 km lift under a
2.1 km pin with a 614 m sphere on top**, standing over downtown San
Francisco. Photographed at a 2.5 km stand-off they are the most prominent
objects in the frame by an order of magnitude.

Nothing failed. Not a type, not a test, not a budget — twenty triangles
do not move a triangle count. It was found by taking a photograph and
looking at it, which is the third time this exact class has been found in
this engine: `structures.ts`'s 4.7 km freeway ribbon, which `23e4bb8` had
to withdraw, and the aeroplane glyph, which the same commit gave a
true-metre size.

The metre values are exactly what the old constants measured on the Bay
Area board, so that board does not move by a pixel, and the merged board
at the same true stand-off over the same city now draws the same pin at
the same apparent size.

`markerScale.test.ts` asserts the property rather than the numbers: two
boards twenty times apart in scale draw the same marker at the same size
on the ground. Verified to fail against the old constants — 15.1 m
against 307.1 m, and a pin topping out at 71 m against 1,439 m — rather
than assumed to. Its first draft measured the widest bounding sphere in
the layer and got 187 m, which is the *stem* carrying the vertical
exaggeration it is supposed to carry; it asks for the head by geometry
type instead, and says so.

Also filed: an unidentified 700 m slab on the Financial District at the
same pose, with the reproduction, six things it is ruled out as, and why
three runtime probes timed out. It is not this bug and it is still there.
This commit is contained in:
2026-08-24 21:40:36 -07:00
parent ee9ef7d2ec
commit bb7b68dfca
3 changed files with 264 additions and 5 deletions
+44
View File
@@ -991,3 +991,47 @@ Two smaller things, both disclosed by their own tracks and neither blocking:
The detail map's slope correction correctly declines to add grain on top of it,
which is why it neither helps nor hurts. The fix is finer cells there, which is
terrain level of detail — the piece that still does not exist.
## An unidentified 700 m slab stands on downtown San Francisco
Found 2026-08-24 by photographing the merged board at a close pose, not by any
test. **Reproduce it exactly:**
```
node scripts/look.mjs slab --url "/" --lat 37.7897 --lng -122.3972 \
--standoff 2500 --at 2026-08-24T18:30:00Z --wait 11000
```
A pale blue-grey slab, roughly 700 m square with visible thickness, rotated onto
San Francisco's street grid, sitting on the Financial District and covering the
buildings under it. It is the most prominent object in that frame. The same pose
on `?city=sf` does not show it, so it is specific to the merged board.
**What it is not**, each ruled out by reading the code rather than by guessing:
- Not a marker. The giant marker spheres in the first photograph of this pose
were a separate defect, fixed in this same round (scene-unit pin constants on a
1,919 m board); with that fixed every sphere is correctly sized and **the slab
is unchanged**.
- Not an office door glyph. `buildingGlyph.ts` is metre-correct (`1 /
world.metresPerUnit` horizontally, `world.metres` vertically) and the three
office sites are 48x42, 54x30 and 36x26 m.
- Not a landmark. San Francisco's largest authored `footprint` is 0.0011° — a
200 m box, and the pack's landmarks render correctly on their own board.
- Not the freeway corridor. `overviewLayers` withdraws it inside
`DETAIL_STANDOFF_M`, and no corridor ribbon is in the frame.
- Not a port or an airport plate. The merged pack carries two ports, both in San
Pedro Bay, and SFO is 13 km south of a frame about 3 km across.
- Not `office-exterior`. That is the Model X apron and it lives in the office
scene at 1 unit = 1 m.
**How to find it**, since three attempts at a runtime probe timed out walking the
scene graph: `__teraCamera` deliberately does not expose the scene, so add a
temporary hook beside `lots()` in `main.ts` that traverses
`record.handle.stageScene.scene` and **filters inside `page.evaluate`** — the
traverse itself is fine, but returning every geometry in the board serialises
megabytes and hangs the call. Filter to `boundingBox` width above 250 m in board
metres and return fifteen rows. That names it in one run.
It is a visual defect on the default board at a pose a visitor reaches by
descending, and it should be fixed before the next round of imagery.