feat: one California by default, and a box ship you can see
Two complaints, and the measured cause of each turned out to be a number already written down in this repo rather than anything that needed inventing. **"I see three different maps."** `reconcile.ts` has existed for a round with the four rules that make three packs draw one California, behind a flag whose whole purpose was that the owner could choose from a photograph — and `DEFAULT_RULES` was empty, so nobody ever saw the reconciled board without typing a query string. The photographs are now taken, at HEAD, at a matched 17:10 and a matched pose against the live API, and two of the four rules are on: - `exaggeration`. Relief in frame is 7.24% on California, 6.92% on the Southland and **4.51%** on the Bay: two boards were already on one number and one was not. The rule moves SF and only SF, 3.60 -> 5.78, and leaves the two boards every marketing still was tuned on untouched to the digit. Unreconciled, the Bay draws Tamalpais, the Berkeley hills and Mount Diablo as low smeared mounds; at 5.78 they stand up, and the chapter's own caption — "the Diablo range closing the east" — is true of the picture for the first time. - `projection`. Each pack squashed longitude by the cosine of its *own* centre, so California and the Southland disagreed about Riverside by 3,435 m and about their shared corner by 4,025 m: 3% of the frame at a 109 km stand-off, and a visible sideways slide in any transition showing both. One canvas cannot hold two answers for one place. `ground` stays off: its palette mix pushes the Southland's flats yellow-olive inland, because that pack's `flats` is off the one-parameter family in a direction no mix can reach. Its own comment calls it the riskiest of the four and the photograph agrees. `roads` stays off for the reason argued in the file — it rewrites a column nothing reads on the one board where the complaint shows. **"I don't see boats on our ports."** True, and by construction. `Crane`'s own doc note already had the cause: at SoCal's 3.4x a 130 m gantry stands 1.13 units while a 400 m ship is 1.02 units *long*. Exaggeration multiplies heights and a length takes 1x, so a hull is the one object on this coast that the board flattens while stretching everything around it — and eleven of fifteen hulls in a working harbour are alongside a berth, where a moored hull has no wake by design and so had nothing to be seen by. `FREEBOARD_RATIO` had already named the fix: a laden ULCV "stands about thirty metres out of the water **before you count the container stack, and the stack is what makes the silhouette**". The stack was never drawn. `containerHull` draws it — three bays with the forward one a tier down, eight tiers of high-cube at 0.52 of keel-to-deck depth — which buys height and nothing else. No length, no beam: a new test holds the container solid inside the merchant hull's bounding box in x and z, so a hull still cannot overhang the berth it lies in, and `vesselScale.test.ts` is green to the digit. It arrived through the seam `HULL_SHAPES` said it would — one entry, one case in `hullGeometry`, one arm in `hullShape` — which is the only evidence that seam was real rather than merely claimed. **The band is a modulation map, and the first pass of it was not.** Painted at `PORT_PALETTE`'s real box values under a container ship's own 0x93aac4 tint, the stack photographed near black — darker than the hull under it. `deckAtlas`'s own header had predicted that exact failure two paragraphs above where I was editing. So hue comes from the tint like every other part of every other hull, and the band carries relative value and *structure*: at the 25 px a stack draws at, individual box hues average to one tone and what survives is the shadow between two boxes. Adding a fourth band also had to move the other three, since they occupied 0.02..0.98 with nothing to append to, so band edges are now computed from one layout rather than typed as six literals — and the four hardcoded `v` values in the bow triangles read from it too. Three tests were pinned rather than changed: they measure packs as authored or synthetic one-hill fixtures, and each had an implicit dependency on the flag being off. Following `roadWidth.test.ts`, which already did this. Verified: 1,690 tests pass. All ten performance-budget cells pass with no cap raised — bay-area desktop 2,306,424 triangles of 2,600,000 (the taller board keeping more through the height guard), socal +284 triangles and +1 draw call for the container mesh, of 1,700,000 and 320. Frame time is not claimed either way; this box's GPU never leaves 500 MHz of 2,725. ⚠ This changes the default, so lumbridgecorp.com's 21 stills and 4 films are now pictures of a board the product no longer draws. `npm run refresh` is the whole of that work and it is not optional. `?reconcile=0` asks for the old board. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -18,11 +18,22 @@ import assert from "node:assert/strict";
|
||||
import test from "node:test";
|
||||
import * as THREE from "three";
|
||||
|
||||
import { setReconcile } from "../../cities/reconcile.ts";
|
||||
import { createTerrain } from "../../engine/terrain.ts";
|
||||
import type { City, ScenePalette } from "../../engine/types.ts";
|
||||
import { World } from "../../engine/world.ts";
|
||||
|
||||
/** A square island in the middle of a one-degree board, at 0.05° per cell. */
|
||||
/*
|
||||
* Every fixture in this file is a synthetic one-hill board built to isolate one
|
||||
* LOD guard, and `exaggeration` is derived from a pack's own blended peak — so
|
||||
* left on it would rescale a deliberately gentle 40 m swell into something the
|
||||
* height guard fires on, and the colour guard this file is measuring would be
|
||||
* swamped by it. The reconciliation is a statement about the three real packs;
|
||||
* these are not packs.
|
||||
*/
|
||||
setReconcile(false);
|
||||
|
||||
const BASE: Omit<City, "hills"> = {
|
||||
id: "lod-board",
|
||||
name: "LOD Board",
|
||||
|
||||
Reference in New Issue
Block a user