Add save migration fixtures and failure-mode coverage
This commit is contained in:
1 parent
b51bdc8efe
commit
60bf9a8ef6
12 files changed
+484
-22
No files matched your search
@@ -88,7 +88,7 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
`Materials.NPC_FABRIC_UV_SCALE = Vector3(4,4,1)`, and `NpcAvatar` skips the baked per-character
|
||||
AO on those two slots. The 256² AO was magnifying into large blotches; the fabric now reads as a
|
||||
fine weave. Skin/hair/gear keep baked AO. Test `test_fabric_uv_scale_avoids_the_baked_ao_pattern`
|
||||
guards this. Current suite is 263/263.
|
||||
guards this. Current suite is 272/272.
|
||||
- **NPC visual baseline (0.9.4, 2026-11-02):** `src/test/capture_npc_baseline.gd` is the
|
||||
neutral-studio 8-variant × 6-view baseline (front, three-quarter, profile, back, full body,
|
||||
crowd). It uses a fixed orbit camera, mid-grey studio backdrop, key/fill lights, no HUD/crowd/animation;
|
||||
@@ -183,6 +183,11 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
0.9.3 UI polish, 0.9.4 NPC visual optimization, 0.9.5 texture/material pass and
|
||||
0.9.6 integration are complete and in `DONE.md`. 0.10.0 release-candidate work
|
||||
is next. The source version is 0.9.6.
|
||||
- **Save migration (0.10.0 work, 2026-11-03):** fixtures in `src/test/fixtures/saves/`
|
||||
cover 0.8 settings/campaign/history and a 0.9.0 checkpoint. `_load_json` uses
|
||||
`JSON.new().parse()` so corrupt player files fall back silently instead of
|
||||
logging a parse error; atomic writes leave the old file intact when the temp
|
||||
path cannot be written. The migration suite is 9 tests; total 272.
|
||||
- **0.9.6 integration (2026-11-03):** no gameplay/content changes. A clean
|
||||
detached worktree at `f5b8ef2` rebuilt Linux/Windows/macOS/Web/HQ without the
|
||||
dirty tree's ignored `tmp/`/`build/` payload; the in-repo build was 1.6–3.1 GB
|
||||
@@ -841,7 +846,7 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
- Venue `door_staff_lines` are logged through `GameManager` (inspect / wand / refuse). They are not a separate dialogue UI.
|
||||
- Access loadout is implemented; do not re-fix `override_access` as if it were still unread.
|
||||
- `Save.SETTINGS_FILE` is declared and unused; settings persistence goes through `Save.load_settings()` / `save_settings()`.
|
||||
- Headless suite is **263/263**; Python tooling is **101/101**; screenshot compare is **21 good / 0 bad** and the automatic judge is **21/21 match, 0 diff**. Remaining visual follow-ups are in `TODO.md`.
|
||||
- Headless suite is **272/272**; Python tooling is **101/101**; screenshot compare is **21 good / 0 bad** and the automatic judge is **21/21 match, 0 diff**. Remaining visual follow-ups are in `TODO.md`.
|
||||
- Typed spawn signal extra args: handlers must accept the 4th `event: Dictionary` or Godot will not call them (`test_shift_coordinator_runs_a_shift` failed until `_on_spawn` took four args).
|
||||
- GDScript inference trap that broke the main scene: a `var` typed as a base class
|
||||
(`radial: CanvasLayer`) exposes script members as `Variant`, so `var x := radial.is_open` is a
|
||||
|
||||
Reference in new issue
Block a user