Files
settled-reach/tests/visual.json
T
jpmschweitzerandClaude Opus 5 8e69503e77 test(client): capture offscreen under gamescope, at the native 3440x1440
Two faults, one fix.

Captures were stealing the desktop. Only the golden path even tried to go
offscreen, via xvfb-run -- which is not installed here, so it took the
"using visible window" fallback; --screenshot and --movie never wrapped at
all. Every capture opened a Godot window on the machine Jeroen is working
and gaming on. Now a single wrapper covers all three paths.

gamescope, not the alternatives, for two independent reasons. It renders on
the real AMD GPU, and the goldens are pinned to this box's Mesa/AMD output
(T-1121 -- they do not port across rendering stacks), so xvfb-run's llvmpipe
would shift every pixel: offscreen must not silently mean a different
renderer. And it is the only installed option that lets the output size be
set. cage is also present and also GPU-backed, but it is a kiosk compositor
and forces its client to the headless output's default -- measured, a
960x540 request produced a 1280x720 PNG. A wrapper that quietly changes
resolution is worse than none here.

Worse, because resolution is not cosmetic on this map. D-255's extent
inversion makes the shorter viewport axis span exactly one cell of the rung,
so the viewport decides how much world a rung shows and at what cell count
-- a small capture is a DIFFERENT map, not a scaled one. 960x540 was also
16:9, so it never exercised the ultrawide aspect added in 21e263d0a, which
is the aspect actually in daily use. Raised to the panel's native 3440x1440.

It paid for itself immediately: at native, Ferrath Global reports
courses=375 drawn=0 -- every river culled, where the same build drew them at
960x540. Filed as T-1239. That is exactly the class of bug a too-small
capture hides.

Goldens are NOT regenerated here. They are stale across 15 commits already,
and blessing the current look before it has been reviewed is the trap this
suite just spent a day proving.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 16:47:13 +02:00

174 lines
7.7 KiB
JSON

{
"resolution": [3440, 1440],
"_comment_resolution": "Native panel resolution (3440x1440 ultrawide, 2.39:1) as of 2026-08-06, raised from 960x540. Not cosmetic: D-255's extent inversion makes the shorter viewport axis span exactly one cell of the rung, so the viewport decides how much world a rung shows and at what cell count — a small capture is a DIFFERENT map, not a scaled one. 960x540 was also 16:9, so it never exercised the ultrawide aspect path added in 21e263d0a, which is the aspect actually used daily. Captures run offscreen under gamescope at this size (see tests/run-visual); goldens must be regenerated whenever this changes.",
"settle_frames": 30,
"tolerance": 5,
"max_diff_pct": 0.5,
"golden_dir": "client/tests/golden/visual",
"_comment_atlas_goldens": "T-1157 (D-255 rewrite of the T-1120 matrix, PR #180 provenance carried forward, Tyre): the atlas_* golden scenarios below key on (body, rung) per the stepped Atlas ladder, captured AND verified (exact pixel match) on danoontje's Mesa/AMD stack. T-1121 documents that goldens do NOT port across boxes at the current tolerance (the 19 pre-existing goldens fail 12-14% on this same box) — an atlas_* golden failing on a DIFFERENT machine is expected baseline drift, not a regression, until T-1121 resolves the canonical-capture-box question.",
"scenarios": {
"implant_pending": {
"ticks": 1,
"description": "ImplantPending — diegetic Layer-1 generating indicator (#960)"
},
"atlas_gen_open": {
"ticks": 240,
"description": "Live: real atlas opener (HudGroups) + GJ71c region-ramp overlay (#960, D-255 rewrite)"
},
"locomotion_idle_live": {
"ticks": 90,
"live": true,
"scene": "res://scenes/locomotion_sandbox.tscn",
"description": "Live 3D sandbox: character idle at Hub spawn — greybox floor, -30 deg frame (T-1088)"
},
"locomotion_cutaway": {
"ticks": 540,
"live": true,
"scene": "res://scenes/locomotion_sandbox.tscn",
"env": { "SR_AUTOPILOT": "stance_up,south:6.0" },
"description": "Live 3D sandbox: autopilot walks south into a wall — cutaway stub golden (T-1088)"
},
"atlas_GJ380c_Global": {
"ticks": 240,
"live": true,
"description": "T-1157 curated Atlas golden (D-255): Lendel (GJ380c), Global rung (rung 0), temperature overlay"
},
"atlas_GJ380c_Region": {
"ticks": 240,
"live": true,
"description": "T-1157 curated Atlas golden (D-255): Lendel (GJ380c), Region rung, moisture overlay"
},
"atlas_GJ380c_District": {
"ticks": 240,
"live": true,
"description": "T-1157 curated Atlas golden (D-255): Lendel (GJ380c), District rung, no overlay"
},
"atlas_GJ144e_Global": {
"ticks": 240,
"live": true,
"description": "T-1157 curated Atlas golden (D-255): Vethis (GJ144e), Global rung, no overlay"
},
"atlas_GJ144e_Quarter": {
"ticks": 240,
"live": true,
"description": "T-1157 curated Atlas golden (D-255): Vethis (GJ144e), Quarter rung, vegetation overlay"
},
"atlas_GJ338Bd_Global": {
"ticks": 240,
"live": true,
"description": "T-1157 curated Atlas golden (D-255): Arbour (GJ338Bd), Global rung, moisture overlay"
},
"atlas_GJ338Bd_Block": {
"ticks": 240,
"live": true,
"description": "T-1157 curated Atlas golden (D-255): Arbour (GJ338Bd), Block rung, no overlay"
},
"atlas_GJ820Bc_Global": {
"ticks": 240,
"live": true,
"description": "T-1157 curated Atlas golden (D-255): Ferrath (GJ820Bc), Global rung, no overlay"
},
"atlas_GJ820Bc_District": {
"ticks": 240,
"live": true,
"description": "T-1157 curated Atlas golden (D-255): Ferrath (GJ820Bc), District rung, temperature overlay"
},
"_comment_descent_ladder": "The atlas_GJ820Bc_land_* set is one body at ONE world point, once per rung, so the ladder reads as a descent. Anchored on land rather than world-metre zero. It judges the NATURE layer (relief, coast, watercourses, biome character) — nothing civilizational is generated yet and none is due before T-1207, so an absence of settlements is the expected state, not a finding.",
"atlas_GJ820Bc_land_Region": {
"ticks": 240,
"live": true,
"description": "Descent ladder (2026-08-06): Ferrath (GJ820Bc), Region rung, land-anchored, no overlay"
},
"atlas_GJ820Bc_land_District": {
"ticks": 240,
"live": true,
"description": "Descent ladder: Ferrath (GJ820Bc), District rung, land-anchored, no overlay"
},
"atlas_GJ820Bc_land_Quarter": {
"ticks": 240,
"live": true,
"description": "Descent ladder: Ferrath (GJ820Bc), Quarter rung, land-anchored, no overlay"
},
"atlas_GJ820Bc_land_Block": {
"ticks": 240,
"live": true,
"description": "Descent ladder: Ferrath (GJ820Bc), Block rung, land-anchored, no overlay"
},
"atlas_GJ820Bc_land_Chunk": {
"ticks": 240,
"live": true,
"description": "Descent ladder: Ferrath (GJ820Bc), Chunk rung (deepest), land-anchored, no overlay"
},
"atlas_GJ251c_Global": {
"ticks": 240,
"live": true,
"description": "T-1157 curated Atlas golden (D-255): Ruhr (GJ251c), Global rung, vegetation overlay — highest-population body in the sample"
},
"atlas_GJ251c_Region": {
"ticks": 240,
"live": true,
"description": "T-1157 curated Atlas golden (D-255): Ruhr (GJ251c), Region rung, no overlay"
},
"atlas_GJ244Ad_Global": {
"ticks": 240,
"live": true,
"description": "T-1157 curated Atlas golden (D-255): Edict (GJ244Ad), Global rung, temperature overlay — frozen planet_class pick"
},
"atlas_GJ445c-m1_Chunk": {
"ticks": 240,
"live": true,
"description": "T-1157 curated Atlas golden (D-255): Jinghu (GJ445c-m1), Chunk rung (deepest), no overlay — inhabited moon pick"
}
},
"flows": {
"flow_dialogue": {
"interval": 3,
"steps": [
{ "action": "MoveSouth", "label": "approaching NPC" },
{ "action": "Interact", "label": "dialogue opens" },
{ "action": "wait", "label": "reading options" },
{ "action": "select_option_1", "label": "option selected" },
{ "action": "wait", "label": "NPC response" },
{ "action": "MoveNorth", "label": "walking away" }
]
},
"flow_explore": {
"interval": 3,
"steps": [
{ "action": "MoveNorth", "label": "moving north" },
{ "action": "MoveNorth", "label": "fog revealing" },
{ "action": "MoveNorth", "label": "near wall" },
{ "action": "MoveSouth", "label": "fog hiding" }
]
},
"locomotion_gaits": {
"interval": 2,
"live": true,
"scene": "res://scenes/locomotion_sandbox.tscn",
"env": {
"SR_AUTOPILOT": "east:2.0,stance_up,east:2.0,stance_up,east:2.0,stance_down,stance_down,stance_down,south:2.0,wait:1.5"
},
"description": "T-1088 stance ladder movie — NOT golden-compared. Movie mode starts no server: run `cd server && cargo run --bin settled-reach-server -- --test-mode` first, then `SR_LIVE=1 SR_PORT=9876 tests/run-visual --movie locomotion_gaits`",
"steps": [
{ "action": "wait", "label": "careful gait east" },
{ "action": "wait", "label": "walk gait east" },
{ "action": "wait", "label": "sprint gait east" },
{ "action": "wait", "label": "crouch gait south" },
{ "action": "wait", "label": "settling to idle" },
{ "action": "wait", "label": "idle rest" }
]
}
},
"crops": {
"top-right": [760, 0, 200, 200],
"top-left": [0, 0, 250, 150],
"bottom": [0, 340, 960, 200],
"full": [0, 0, 960, 540]
},
"thumbnail": {
"width": 240,
"height": 135,
"columns": 4
}
}