Skip to content

Commit fb7d899

Browse files
wormeymanclaude
andauthored
test(cliffs): the residual is TWO defects and the field is NOT either (#84) (#93)
#91 handed over one lead: "the defect is in the grid-4 cliff-elevation field, the one input with no per-corner oracle". It is refuted, and so is the idea that there is a single cause. Everything upstream of the crossing test is now measured, not read: - grid-1 `vulcanus_elevation` exact to 4.8e-2 over all 12,675 captured corners - the grid-4 `multisample` min-filter reproduces the game through the CLIFF GENERATOR at both [0,0] and [1500,1500]; grid 1/2/8/centred all score far worse, and `multisample(e,0,0)` is the identity in this channel - `cliffiness_basic` exact to 6.4e-6 - over the 4,266 UNCLAMPED corners. 8,409 of 12,675 sit ON a clamp, so the old "exact" claim was two-thirds vacuous: it was measuring the clamp, not `qmn` - `cliff_smoothing = 1` READ BACK off Vulcanus's own surface. It had been inferred from the prototype default since #28 and never once measured - the smoothing stencil measured on both axes with a delta probe, whose in-chunk-3 arms predict the game places NOTHING and it places nothing - `crossingsForChunk` re-disassembled at 0x10160c9cc (the VA in the notes had moved); `smoothingKnots` matches it line for line - `fixImpossibleCells`'s give-up branch never fires: 0 chunks need a retry With `cliff_smoothing = 0` and every other term real: [0,0] 0 wrong (7 at s=1) [-1200,800] 0 wrong (4 at s=1), precision 1.0000 [1500,1500] 21 wrong (26 at s=1) So two regions carry a smoothing-only defect and one carries a defect that survives smoothing being off - all over-detections, all at the high bands (670/790/1030), margins 0.69-46.6 units, so not float32. Scoring [0,0] alone says "it's the smoothing", which is false for 21 of the 37; two regions out of three agreeing is the same trap as #88. Also re-scopes #84 item 2: the "over-placement below elevation 120" is not spread over the low band, it is one contiguous blob (cells cx 43-48, cy 34-40) where the game places zero cliffs under every setting tried AND under a synthetic cliff_elevation. A field-independent hole is a rule we do not implement, not a field error - and it is not lava. Two new oracle fixtures + provenance; no src change. Claude-Session: https://claude.ai/code/session_015yqZhJCUVLDU5q7SVwAVkj Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 parent e68f617 commit fb7d899

6 files changed

Lines changed: 18112 additions & 0 deletions

docs/noise/vulcanus-cliffs-NOTES.md

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,17 @@
2323
> the last two sections, which are post-fix and are where this banner's numbers
2424
> come from. Each of the last three corrects the one before it - read all three,
2525
> in order, or you will act on a superseded number.
26+
>
27+
> ## UPDATE, 2026-08-02: the FIELD is exonerated; the residual is two defects
28+
>
29+
> The last section, **`## The residual is TWO defects, and the field is not
30+
> either of them`**, supersedes the "the defect is in the grid-4 cliff-elevation
31+
> field" lead that #91 handed over. That field is now measured correct, along
32+
> with `cliffiness_basic` (over its unclamped corners), the smoothing stencil on
33+
> both axes, and `cliff_smoothing = 1` read back from the game. Read that section
34+
> before touching anything: **with `cliff_smoothing = 0` the port is exact at
35+
> `[0,0]` and `[-1200,800]` and still 21-wrong at `[1500,1500]`**, so there is no
36+
> single cause left to look for.
2637
2738
Factorio 2.1.12 (build 87038, mac-arm64). Ported 2026-07-26. Companion to
2839
`cliffs-NOTES.md`, which holds the reverse-engineering of the placement rule
@@ -1204,3 +1215,108 @@ prompt to find the independent evidence, not as the evidence.
12041215
The route that worked here was: stop tuning shapes against the metric, and go
12051216
read what the engine does. The binary is unstripped and the whole chain took
12061217
three `lldb` calls.
1218+
1219+
## The residual is TWO defects, and the field is not either of them (2026-08-02)
1220+
1221+
The handoff into this session (#91) named one lead: "the defect is in the
1222+
**grid-4 cliff-elevation field** - the one input in the chain with no direct
1223+
per-corner oracle", with the next step being to capture `cliff_elevation` at the
1224+
4-tile corner lattice. **That lead is refuted.** The grid-4 field is correct, and
1225+
so is everything else upstream of the crossing test. What is left splits into two
1226+
defects that live in different regions and have different causes, which is why a
1227+
single number ("37 wrong orientations") could never be chased to a single cause.
1228+
1229+
### What was eliminated, and how
1230+
1231+
Each of these is a measurement, not a reading. Do not re-derive them.
1232+
1233+
| input | verdict | how |
1234+
| --- | --- | --- |
1235+
| grid-1 `vulcanus_elevation` | exact, worst **4.8e-2** | all **12,675** corners of `oracle-vulcanus-cliff-corner-fields-entity-regions` |
1236+
| grid-4 `multisample` min-filter | exact | through the CLIFF GENERATOR at `[0,0]` **and** `[1500,1500]`; grid 1 / 2 / 8 / centred all score far worse |
1237+
| `multisample(e, 0, 0)` | the identity in this channel | arm A ≡ arm B, cell for cell, both regions |
1238+
| `cliffiness_basic` | exact, worst **6.4e-6** | over the **4,266 UNCLAMPED** corners (see the vacuity note below) |
1239+
| `cliff_smoothing = 1` | **measured**, not inferred | read back off the planet's own surface with nothing overridden |
1240+
| the smoothing stencil | exact | delta probe, both axes, `test/cliffSmoothingModel.spec.ts` |
1241+
| `crossesCliff` | exact | disassembly, `0x10160c914` |
1242+
| `crossingsForChunk`'s smoothing | matches `smoothingKnots` | disassembly, `0x10160c9cc` (**the VA in cliffs-NOTES.md had moved**) |
1243+
| `fixImpossibleCells` give-up branch | never fires | **0** chunks in these regions need even one retry |
1244+
1245+
Two of those deserve their own note.
1246+
1247+
**The `cliffiness_basic` exoneration was two-thirds vacuous and is now not.**
1248+
`cliffiness_basic` is `clamp(qmn, 0, 1) + 0.5`, and **8,409 of the 12,675
1249+
captured corners sit ON a clamp** (6,330 at the floor, 2,079 at the ceiling).
1250+
Agreeing there says nothing whatever about `qmn`; it says both sides clamped. The
1251+
comparison that carries information is the 4,266-corner interior, and it agrees
1252+
to 6.4e-6. Any future "field X is exact" claim about a clamped expression has to
1253+
report the interior separately or it is measuring the clamp.
1254+
1255+
**The smoothing stencil was measured, not just disassembled.** The probe is a
1256+
DELTA on one corner column: `1 + 1000 * if(1 - abs(x - X0), 1, 0)` routed onto
1257+
`cliff_elevation` with smoothing left at 1. Every corner but one carries the
1258+
constant 1, so the smoothed field is exactly `1 + 1000 * w(i)` for the stencil
1259+
weight `w`, and the game's cliffs trace `w = 0.5` directly. The design's teeth
1260+
are the **in-chunk-index-3 arms**: 3 is not a knot, so the model predicts the game
1261+
places *nothing at all*, and the game places nothing at all. An arm whose
1262+
predicted output is EMPTY cannot be satisfied by a stencil that is merely close -
1263+
which is the failure mode of every weight-matching check.
1264+
1265+
### The split
1266+
1267+
Force `cliff_smoothing = 0` and leave every other term real, and the port's
1268+
grid-4 field is scored with no interpolation in the way:
1269+
1270+
| region | smoothing = 0 | smoothing = 1 (ships) |
1271+
| --- | --- | --- |
1272+
| `[0,0]` | **0** wrong | 7 wrong |
1273+
| `[-1200,800]` | **0** wrong, precision 1.0000 | 4 wrong |
1274+
| `[1500,1500]` | **21** wrong | 26 wrong |
1275+
1276+
So `[0,0]` and `[-1200,800]` carry a defect that exists ONLY under smoothing,
1277+
while `[1500,1500]` carries one that survives smoothing being switched off
1278+
entirely. `[1500,1500]`'s 21 are all **over-detections**, all at the HIGH bands
1279+
(670 / 790 / 1030), with margins of **0.69 - 46.6 elevation units** - far too
1280+
large for float32, and the cliffiness there sits up to 1.0 clear of its gate.
1281+
1282+
**This is why one region was never enough.** `[0,0]` alone says "smoothing off is
1283+
exact, therefore the residual is the smoothing", and that is false for 21 of the
1284+
37. Two of three regions agreeing is exactly the evidence that produces a
1285+
confident wrong conclusion - the same shape as #88.
1286+
1287+
Note also what this does to `docs/noise/...` note "cliff_smoothing is NOT the
1288+
residual (#79, #80)". That was measured **before #83 fixed the multisample grid**,
1289+
when the field was wrong everywhere and so nothing downstream could be scored. It
1290+
has expired: with the field right, smoothing off is exact in two regions of three.
1291+
1292+
### The smoothing-side defect is NOT in the stencil
1293+
1294+
The stencil arms are exact in six of eight; the two that are not are exact
1295+
everywhere except one four-cell vertical run at `x = 1750`, rows 1526.5-1538.5,
1296+
which appears in both arms regardless of which delta column is used. It is not
1297+
the collision rejection - the game's tiles over `x 1742..1760, y 1518..1546` are
1298+
all `volcanic-*` ground tiles with **no lava at all**, and only `lava`/`lava-hot`
1299+
carry the `water_tile` layer the cliff mask collides with.
1300+
1301+
That is the same signature as the `[0,0]` **blob** below, and they are probably
1302+
one thing.
1303+
1304+
### The blob: a place the game puts no cliff, whatever field it is given
1305+
1306+
`#84` item 2 ("over-placement below elevation 120") is not spread over the low
1307+
band at all. In region `[0,0]` **every** excess cell, at every level of the
1308+
19-level sweep and in both probe arms, sits in one contiguous patch: cells
1309+
`cx 43-48, cy 34-40` (world `x 172-196, y 136-164`). The game places **zero**
1310+
cliffs there under real settings, under all four collapsed arms, at all 19 sweep
1311+
levels, and with a completely synthetic `cliff_elevation` routed onto it.
1312+
1313+
A field-independent hole is not a field error. The obvious suspect, lava, is
1314+
mostly ruled out: most of those cells have no lava within 10 tiles by our
1315+
resolver, and our resolver is right about lava there to 4 tiles in 483 (those 4
1316+
being lava the game HAS and we miss - note the 994-position capture that
1317+
"exonerated the mask" sampled neighbourhoods of tiles OUR mask calls lava and
1318+
therefore structurally could not find that class of error).
1319+
1320+
**This is the sharpest open lead**, and a much better one than "we over-place at
1321+
low elevation": it is a bounded, contiguous, field-independent suppression, so
1322+
whatever causes it is a rule the port does not implement at all.

0 commit comments

Comments
 (0)