The _comment_atlas_goldens key inside scenarios{} hit _print_list's .get() on a bare String (reproduced: Invalid call on String at visual_capture.gd:699). Moved to a top-level key alongside resolution/golden_dir; _print_list now also skips _-prefixed and non-Dictionary entries so future comment keys cannot crash it. Verified: --list runs clean, JSON valid.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
206 lines
7.6 KiB
JSON
206 lines
7.6 KiB
JSON
{
|
|
"resolution": [960, 540],
|
|
"settle_frames": 30,
|
|
"tolerance": 5,
|
|
"max_diff_pct": 0.5,
|
|
"golden_dir": "client/tests/golden/visual",
|
|
"_comment_atlas_goldens": "T-1120 provenance (PR #180 review, Tyre): the 12 atlas_* golden scenarios were 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": {
|
|
"fog_3state": {
|
|
"ticks": 5,
|
|
"description": "All 3 fog states — clear/explored/unexplored"
|
|
},
|
|
"fog_diagonal": {
|
|
"ticks": 10,
|
|
"description": "Diagonal LOS boundary (staircase regression target)"
|
|
},
|
|
"fog_boundary": {
|
|
"ticks": 8,
|
|
"description": "Explored/unexplored transition centered in frame"
|
|
},
|
|
"fog_zone_tint": {
|
|
"ticks": 5,
|
|
"description": "Bar zone warm amber tint in explored fog (D-046)"
|
|
},
|
|
"fog_debug": {
|
|
"ticks": 5,
|
|
"description": "Raw exploration overlay (green/blue/red)"
|
|
},
|
|
"npc_in_fog": {
|
|
"ticks": 5,
|
|
"description": "NPC sprite visible above fog overlay (D-033)"
|
|
},
|
|
"hud_default": {
|
|
"ticks": 1,
|
|
"description": "Full HUD: time, Careful stance (green), minimap, monologue"
|
|
},
|
|
"dialogue_open": {
|
|
"ticks": 3,
|
|
"description": "Dialogue box + interaction prompt + key bar positioning"
|
|
},
|
|
"dialogue_with_monologue": {
|
|
"ticks": 4,
|
|
"description": "Confrontation beat: dialogue + monologue simultaneously"
|
|
},
|
|
"minimap_stance": {
|
|
"ticks": 2,
|
|
"description": "Minimap + Sprint stance indicator overlap (top-right)"
|
|
},
|
|
"cursor_menu": {
|
|
"ticks": 3,
|
|
"description": "Cursor rendering over dialogue option"
|
|
},
|
|
"fog_live_replay": {
|
|
"ticks": 1,
|
|
"description": "Replay real server hub snapshot — full pipeline fog test",
|
|
"replay_snapshot": "tests/fixtures/gauntlet/hub_spawn.msgpack"
|
|
},
|
|
"fog_theater_replay": {
|
|
"ticks": 1,
|
|
"description": "Replay Fog Theater — large room with NPCs at varying distances",
|
|
"replay_snapshot": "tests/fixtures/gauntlet/fog_theater.msgpack"
|
|
},
|
|
"fog_boundary_replay": {
|
|
"ticks": 1,
|
|
"description": "Replay hub after movement — explored/visible tile boundary",
|
|
"replay_snapshot": "tests/fixtures/gauntlet/hub_after_movement.msgpack"
|
|
},
|
|
"fog_live_hub": {
|
|
"ticks": 10,
|
|
"live": true,
|
|
"description": "Live server: Hub spawn fog — real pipeline regression test"
|
|
},
|
|
"implant_pending": {
|
|
"ticks": 1,
|
|
"description": "ImplantPending — diegetic Layer-1 generating indicator (#960)"
|
|
},
|
|
"atlas_gen_open": {
|
|
"ticks": 240,
|
|
"description": "Live: real atlas opener (HudGroups) + GJ71c Layer-1 overlays (#960)"
|
|
},
|
|
"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_zfit_C": {
|
|
"ticks": 240,
|
|
"live": true,
|
|
"description": "T-1120 curated Atlas golden: Lendel (GJ380c), fit zoom, overlay set C (district+settlements+roads+rivers)"
|
|
},
|
|
"atlas_GJ380c_z4_0_B": {
|
|
"ticks": 240,
|
|
"live": true,
|
|
"description": "T-1120 curated Atlas golden: Lendel (GJ380c), 4.0 zoom, overlay set B (settlements+roads)"
|
|
},
|
|
"atlas_GJ144e_zfit_A": {
|
|
"ticks": 240,
|
|
"live": true,
|
|
"description": "T-1120 curated Atlas golden: Vethis (GJ144e), fit zoom, overlay set A (district only)"
|
|
},
|
|
"atlas_GJ144e_z2_0_C": {
|
|
"ticks": 240,
|
|
"live": true,
|
|
"description": "T-1120 curated Atlas golden: Vethis (GJ144e), 2.0 zoom (labels on), overlay set C"
|
|
},
|
|
"atlas_GJ338Bd_z2_0_C": {
|
|
"ticks": 240,
|
|
"live": true,
|
|
"description": "T-1120 curated Atlas golden: Arbour (GJ338Bd), 2.0 zoom (labels on), overlay set C"
|
|
},
|
|
"atlas_GJ338Bd_z4_0_B": {
|
|
"ticks": 240,
|
|
"live": true,
|
|
"description": "T-1120 curated Atlas golden: Arbour (GJ338Bd), 4.0 zoom, overlay set B"
|
|
},
|
|
"atlas_GJ820Bc_zfit_A": {
|
|
"ticks": 240,
|
|
"live": true,
|
|
"description": "T-1120 curated Atlas golden: Ferrath (GJ820Bc), fit zoom, overlay set A (district only)"
|
|
},
|
|
"atlas_GJ820Bc_z2_0_C": {
|
|
"ticks": 240,
|
|
"live": true,
|
|
"description": "T-1120 curated Atlas golden: Ferrath (GJ820Bc), 2.0 zoom (labels on), overlay set C"
|
|
},
|
|
"atlas_GJ251c_z2_0_B": {
|
|
"ticks": 240,
|
|
"live": true,
|
|
"description": "T-1120 curated Atlas golden: Ruhr (GJ251c), 2.0 zoom (labels on), overlay set B (settlements+roads)"
|
|
},
|
|
"atlas_GJ251c_zfit_C": {
|
|
"ticks": 240,
|
|
"live": true,
|
|
"description": "T-1120 curated Atlas golden: Ruhr (GJ251c), fit zoom, overlay set C — highest-population body in the sample"
|
|
},
|
|
"atlas_GJ244Ad_zfit_C": {
|
|
"ticks": 240,
|
|
"live": true,
|
|
"description": "T-1120 curated Atlas golden: Edict (GJ244Ad), fit zoom, overlay set C — frozen planet_class pick"
|
|
},
|
|
"atlas_GJ445c-m1_z4_0_B": {
|
|
"ticks": 240,
|
|
"live": true,
|
|
"description": "T-1120 curated Atlas golden: Jinghu (GJ445c-m1), 4.0 zoom, overlay set B — 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
|
|
}
|
|
}
|