From fcf913a413cf98c3e555f606c50c78cf071e5386 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Thu, 16 Jul 2026 21:40:03 +0200 Subject: [PATCH] =?UTF-8?q?fix(client):=20move=20golden-provenance=20key?= =?UTF-8?q?=20out=20of=20scenarios{}=20=E2=80=94=20crashed=20visual=5Fcapt?= =?UTF-8?q?ure=20--list=20(PR=20#180=20review,=20Hoshe)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- client/tests/visual_capture.gd | 5 +++++ tests/visual.json | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/client/tests/visual_capture.gd b/client/tests/visual_capture.gd index 8bcb08e88..b54c3a31b 100644 --- a/client/tests/visual_capture.gd +++ b/client/tests/visual_capture.gd @@ -696,6 +696,11 @@ func _print_list() -> void: var flows: Dictionary = _config.get("flows", {}) print("scenarios:") for name in scenarios: + # Skip "_"-prefixed comment keys and any non-Dictionary value — a bare + # string here crashed --list once (PR #180: a provenance _comment key + # placed inside scenarios{}; now top-level, but stay robust). + if String(name).begins_with("_") or not (scenarios[name] is Dictionary): + continue var desc: String = scenarios[name].get("description", "") print(" %s — %s" % [name, desc]) # T-1120: atlas_matrix isn't a tests/visual.json scenarios{} entry (it reads diff --git a/tests/visual.json b/tests/visual.json index 58303bc9d..2a6168464 100644 --- a/tests/visual.json +++ b/tests/visual.json @@ -4,6 +4,7 @@ "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, @@ -90,7 +91,6 @@ "env": { "SR_AUTOPILOT": "stance_up,south:6.0" }, "description": "Live 3D sandbox: autopilot walks south into a wall — cutaway stub golden (T-1088)" }, - "_comment_atlas_goldens": "T-1120 provenance (PR #180 review, Tyre): the 12 atlas_* goldens below 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.", "atlas_GJ380c_zfit_C": { "ticks": 240, "live": true,