47 lines
3.1 KiB
JSON
47 lines
3.1 KiB
JSON
{
|
|
"task": "P07-01",
|
|
"spec": "docs/plans/original-completion-2026-10-02/execution/p07-01/SPEC.md",
|
|
"rule": "SPEC F8: every changed expectation of an existing suite is listed with the value before and after and the reason. Only the natural-weather contract (A13, SPEC sections 4 and 5) causes these changes.",
|
|
"changes": [
|
|
{
|
|
"suite": "tests/environment/test_runtime_weather.gd",
|
|
"check": "old neutral save migration preserves other state",
|
|
"before": "runtime.create_snapshot() == original (the whole snapshot after migrating a version 10 save equals the original new game)",
|
|
"after": "the whole snapshot without systems.runtime.weather equals the original without it, and the migrated weather has last_draw_day -1 and no drawn day",
|
|
"reason": "A13: a new game opening at 06:00 draws its first day (SPEC 4.1), and a pre-weather save has no draw and must not draw for the past (SPEC 5.2). Only the weather section can differ; every other system stays byte-equal."
|
|
},
|
|
{
|
|
"suite": "tests/environment/test_runtime_weather.gd",
|
|
"check": "future weather clock rejects atomically",
|
|
"before": "the refused restore leaves runtime.create_snapshot() == original",
|
|
"after": "the refused restore leaves runtime.create_snapshot() == the migrated snapshot taken just before",
|
|
"reason": "The state before this refusal is the migrated state of the previous check, which now differs from the original only in the weather section; the check still proves the refusal is atomic."
|
|
},
|
|
{
|
|
"suite": "tests/environment/test_weather_timeline.gd",
|
|
"check": "malformed or contradictory state rejects atomically (unknown version case)",
|
|
"before": "{\"version\": 2} is an unknown version",
|
|
"after": "{\"version\": 3} is an unknown version",
|
|
"reason": "Version 2 is now the current weather snapshot (natural state and rain holds, SPEC 5.1); version 1 is read as the legacy format (SPEC 5.2)."
|
|
},
|
|
{
|
|
"suite": "tests/environment/test_weather_recovery.gd",
|
|
"check": "disk-restored recovery occurs once at scheduled minute",
|
|
"before": "after the recovery the pending weather list is empty",
|
|
"after": "after the recovery the pending weather list equals only the opening day's natural draw (rain 16:30-22:30 for seed 424242)",
|
|
"reason": "A13: the opening day's natural draw schedules its own start and return to clear (SPEC 4.1); the manually scheduled storm and recovery are still consumed exactly once."
|
|
}
|
|
],
|
|
"unchanged_related_suites_passing_locally": [
|
|
"tests/mvp/test_runtime_operations_integration.gd",
|
|
"tests/s2/test_runtime_operations_cycle.gd",
|
|
"tests/s2/test_runtime_mana_reserve.gd",
|
|
"tests/s2/test_mana_reserve_cycle.gd",
|
|
"tests/s3/test_guest_service.gd",
|
|
"tests/s6/test_runtime_save_lifecycle.gd",
|
|
"tests/s6/test_runtime_snapshot_serialization.gd",
|
|
"tests/ui/test_main_dashboard.gd"
|
|
],
|
|
"local_run_scope": "diagnostic direct runs on a scratch stage; the formal evidence is the submitted S native collection, the registered validation and the final full roster"
|
|
}
|