Files
TheTree_mock/docs/plans/original-completion-2026-10-02/runtime_save_audit.json
T
Takeshi b84bade045 Save The Tree implementation and acceptance work in progress
Preserve production code, regression fixtures, audio assets and provenance, test infrastructure, and the original-completion plan and progress ledger. Final game and Windows acceptance remain pending; excluded local artifacts and native experiments are not part of this snapshot.
2026-10-11 15:58:00 +09:00

512 lines
19 KiB
JSON

{
"audit_version": 1,
"audit_date_jst": "2026-10-02",
"recorded_at_jst": "2026-10-02T01:12:01.348281+09:00",
"production_root": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部",
"baseline_head": "285528b7a3b1b46a2a67af5aa90d9085539b42f4",
"working_head": "285528b7a3b1b46a2a67af5aa90d9085539b42f4",
"scope": [
"P01-02",
"P02-01",
"P02-02",
"P03-01",
"P03-02",
"P03-03",
"P04-01"
],
"status": "partial_implementation_and_evidence_audit",
"p03_complete": false,
"original_completion_claim": false,
"initial_baseline_source_reconciliation": {
"map": "artifacts/facility-need-pricing-production-scale-adoption-2026-10-01-r01/after.json",
"checked_paths": 1396,
"changed_paths_before_this_turn_edits": [],
"note": "Verified at the start of this audit before P03 and Path changes. Receipt reports 155 suites / 12310 checks; no full-engine rerun is claimed by this subtask."
},
"code_changes": {
"status": "working_tree_implemented_pending_root_integration",
"sha256": {
"autoload/simulation_runtime.gd": "d3ad4aab6ded19eb137c5494481cc7333e846746a25b18dbad3c8b663e9f6b72",
"scripts/core/save_service.gd": "7c107a509b3afccb478ba89d051fbaa9a8c93165326fac8e4cef2249c05879d0",
"scripts/core/simulation_snapshot.gd": "fc528a3d1db1f439c10f70d6cba2f72bd65abc0d3866eb8b582df60918af0adf",
"tests/s6/test_save_preflight.gd": "49e24247649839b6f50d19b2284368efb7f8f8b189c5010491ad428e97c1c8b9"
},
"new_test": "tests/s6/test_save_preflight.gd",
"root_owns_full_regression": true
},
"contracts": [
{
"id": "SAVE-PACKAGE",
"scope": "formal package",
"current_version": 1,
"refs": [
{
"path": "scripts/core/save_service.gd",
"line": 4,
"sha256": "7c107a509b3afccb478ba89d051fbaa9a8c93165326fac8e4cef2249c05879d0"
},
{
"path": "scripts/core/save_service.gd",
"line": 823,
"sha256": "7c107a509b3afccb478ba89d051fbaa9a8c93165326fac8e4cef2249c05879d0"
}
],
"stored": [
"manifest.json",
"world.bin",
"thumbnail.png",
"journal.log"
],
"rejection": "Path/symlink, manifest numeric/type, binary header, checksum, advertised size, envelope schema are checked before accepting."
},
{
"id": "SAVE-ENVELOPE",
"scope": "generic simulation envelope",
"current_version": 1,
"refs": [
{
"path": "scripts/core/simulation_snapshot.gd",
"line": 16,
"sha256": "fc528a3d1db1f439c10f70d6cba2f72bd65abc0d3866eb8b582df60918af0adf"
}
],
"stored": [
"schema_version",
"clock",
"game_state",
"systems"
],
"rejection": "Exact integral numeric schema/minute/speed, optional typed pause and nonnegative snapshot_version; malformed values refuse before clock/state restoration. Absent legacy pause/version keep defaults; valid old x4 resumes x3."
},
{
"id": "SAVE-RUNTIME",
"scope": "live full Runtime restore",
"current_version": 13,
"supported_runtime_versions": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13
],
"refs": [
{
"path": "autoload/simulation_runtime.gd",
"line": 569,
"sha256": "d3ad4aab6ded19eb137c5494481cc7333e846746a25b18dbad3c8b663e9f6b72"
}
],
"stored": [
"command_queue",
"ID counters",
"domain_events",
"RNG streams",
"world",
"path",
"movement credits",
"mana",
"weather",
"economy",
"upkeep accrual/settlement",
"inventory",
"production",
"elevators",
"stairs",
"logistics",
"facility operations/cleanliness",
"guest/staff",
"catalog/progression",
"relationships/events",
"authority/defense",
"construction/excavation",
"subslots/route/infrastructure"
],
"rejection": "Temporary services and crosslinks are validated before swapping live services; v5+ exact canonical outer/runtime keys. Supported legacy aggregates initialize or migrate only through explicit existing version branches."
},
{
"id": "SAVE-PREFLIGHT",
"scope": "read-only dimension migration preview",
"refs": [
{
"path": "scripts/core/save_service.gd",
"line": 58,
"sha256": "7c107a509b3afccb478ba89d051fbaa9a8c93165326fac8e4cef2249c05879d0"
},
{
"path": "autoload/simulation_runtime.gd",
"line": 12967,
"sha256": "d3ad4aab6ded19eb137c5494481cc7333e846746a25b18dbad3c8b663e9f6b72"
}
],
"mutation_contract": "Named formal package only; no reconciliation/promotion/deletion, no fallback selection and no automatic migration. Missing formal stays missing. Isolated Runtime preview preserves disk and live snapshot."
},
{
"id": "SAVE-COMMIT",
"scope": "explicit migrated snapshot promotion",
"refs": [
{
"path": "scripts/core/save_service.gd",
"line": 390,
"sha256": "7c107a509b3afccb478ba89d051fbaa9a8c93165326fac8e4cef2249c05879d0"
},
{
"path": "autoload/simulation_runtime.gd",
"line": 12893,
"sha256": "d3ad4aab6ded19eb137c5494481cc7333e846746a25b18dbad3c8b663e9f6b72"
}
],
"mutation_contract": "Expected source snapshot/digest, verified candidate, exact pre_migration backup, atomic promotion and interrupted promotion recovery. Live Runtime unaffected until UI explicitly loads migrated formal."
},
{
"id": "SAVE-RECOVERY",
"scope": "ordinary load and candidate recovery",
"refs": [
{
"path": "scripts/core/save_service.gd",
"line": 932,
"sha256": "7c107a509b3afccb478ba89d051fbaa9a8c93165326fac8e4cef2249c05879d0"
},
{
"path": "autoload/simulation_runtime.gd",
"line": 4050,
"sha256": "d3ad4aab6ded19eb137c5494481cc7333e846746a25b18dbad3c8b663e9f6b72"
}
],
"mutation_contract": "Ordinary load/recovery inventory may reconcile durable transaction artifacts; cannot be labeled globally read-only. Runtime whitelist repair/fallback are distinct from strict restore and read-only preview."
}
],
"technical_resource_limits": {
"full_runtime_20000_cell_acceptance": false,
"manifest_limit_bytes": 4194304,
"starter_runtime_compressed_bytes": 7511,
"starter_runtime_raw_bytes": 61040,
"world_cells": 20000,
"world_limit_bytes": 268435456,
"world_only_compressed_bytes": 18873,
"world_only_raw_bytes": 640488
},
"before_reproductions": [
{
"path": "artifacts/original-completion-2026-10-02/p03-save-preflight/before-repro.log",
"sha256": "17de92bc9323e13f5c16905e4a05ee0602821aea5560ef9d0d0e9d05573567ec",
"facts": [
"dimension preview deleted stale formal-save transaction marker",
"format_version true / string 1 / fractional 1.5 each loaded successfully"
]
},
{
"path": "artifacts/original-completion-2026-10-02/p03-save-preflight/envelope-before.log",
"sha256": "c917d3b772ad97b32cbcbc823590e01873b00c1768bc566381c8c9c93769615b",
"facts": [
"schema string/bool/fraction, minute string, speed bool/fraction, pause string and negative snapshot_version passed generic validation"
]
}
],
"current_final_targeted_evidence": {
"phase": "r02",
"results": [
{
"test": "tests/s6/test_save_preflight.gd",
"exit_code": 0,
"passed": true,
"checks": 128,
"seconds": 3.15,
"log": "tests__s6__test_save_preflight.gd-r02.log"
},
{
"test": "tests/s6/test_save_operations.gd",
"exit_code": 0,
"passed": true,
"checks": 127,
"seconds": 2.79,
"log": "tests__s6__test_save_operations.gd-r02.log"
},
{
"test": "tests/s6/test_runtime_save_lifecycle.gd",
"exit_code": 0,
"passed": true,
"checks": 96,
"seconds": 6.68,
"log": "tests__s6__test_runtime_save_lifecycle.gd-r02.log"
},
{
"test": "tests/run_tests.gd",
"exit_code": 0,
"passed": true,
"checks": 73,
"seconds": 1.13,
"log": "tests__run_tests.gd-r02.log"
},
{
"test": "tests/transport/test_transport_save.gd",
"exit_code": 0,
"passed": true,
"checks": 29,
"seconds": 1.7,
"log": "tests__transport__test_transport_save.gd-r02.log"
},
{
"test": "tests/ui/test_dimension_migration_ui.gd",
"exit_code": 0,
"passed": true,
"checks": 12,
"seconds": 2.33,
"log": "tests__ui__test_dimension_migration_ui.gd-r02.log"
},
{
"test": "tests/supply/test_supply_save_migration.gd",
"exit_code": 0,
"passed": true,
"checks": 20,
"seconds": 1.18,
"log": "tests__supply__test_supply_save_migration.gd-r02.log"
}
],
"suites": 7,
"checks": 485,
"failed_suites": 0,
"source_manifest": "artifacts/original-completion-2026-10-02/p03-save-preflight/source-start.json",
"source_change": [],
"classification": "Controlled domain / save API tests plus headless actual migration-menu signal-handler test; no native pointer or Windows claim."
},
"prior_related_evidence": {
"phase": "r01_before_integral_float_fix",
"results": [
{
"test": "tests/s1/test_dimension_batch_save.gd",
"exit_code": 0,
"passed": true,
"checks": 23,
"seconds": 2.31,
"log": "tests__s1__test_dimension_batch_save.gd.log"
},
{
"test": "tests/s1/test_weighted_resize_runtime.gd",
"exit_code": 0,
"passed": true,
"checks": 63,
"seconds": 2.14,
"log": "tests__s1__test_weighted_resize_runtime.gd.log"
},
{
"test": "tests/staff/test_dormitory_dimension_migration.gd",
"exit_code": 0,
"passed": true,
"checks": 25,
"seconds": 2.37,
"log": "tests__staff__test_dormitory_dimension_migration.gd.log"
},
{
"test": "tests/ui/test_selection_autosave.gd",
"exit_code": 0,
"passed": true,
"checks": 75,
"seconds": 27.26,
"log": "tests__ui__test_selection_autosave.gd.log"
}
],
"checks": 186,
"note": "Passed before final envelope comparison correction. These logs are historical; do not aggregate as final exact-source acceptance."
},
"retained_failure_history": [
{
"path": "artifacts/original-completion-2026-10-02/p03-save-preflight/preflight-r01.log",
"reason": "85 logical checks passed but malformed JSON emitted engine ERROR; phase is not accepted. Loader now uses JSON.parse with returned error."
},
{
"path": "artifacts/original-completion-2026-10-02/p03-save-preflight/tests__s6__test_save_preflight.gd.log",
"reason": "128 checks / 1 failure: Array membership rejected integral float speed. Fixed by converting only after numeric integer validation."
}
],
"old_evidence_reconciliation": [
{
"source_map": "artifacts/snapshot-opening-restart-2026-09-29/source-start.json",
"source_map_sha256": "7d8f9fbd35579d4a784b93f18af5178e9302cc3b32bb385d118cb8b4891cbabc",
"checked_paths": 283,
"changed_paths": [
"autoload/simulation_runtime.gd",
"data/facilities/expansion/premium_room.tres",
"data/facilities/expansion/staff_dormitory.tres",
"data/facilities/standard_room.tres",
"scenes/main/main.gd",
"scenes/main/world_preview.gd",
"scripts/core/command_queue.gd",
"scripts/core/save_service.gd",
"scripts/core/simulation_snapshot.gd",
"scripts/data/facility_catalog.gd",
"scripts/data/mvp_content_catalog.gd",
"scripts/defense/defense_service.gd",
"scripts/events/event_action.gd",
"scripts/facility/facility_pricing.gd",
"scripts/facility/facility_service.gd",
"scripts/guest/guest_service.gd",
"scripts/operations/operations_coordinator.gd",
"scripts/staff/staff_service.gd",
"scripts/ui/business_management_panel.gd",
"scripts/ui/guest_observation_panel.gd",
"scripts/ui/inn_opening_guide.gd",
"scripts/ui/layer_interface_skin.gd",
"scripts/ui/pixel_tower_art.gd",
"scripts/ui/staff_management_panel.gd",
"scripts/world/facility_infrastructure_projector.gd",
"scripts/world/path_service.gd",
"scripts/world/world_service.gd",
"tests/environment/test_runtime_weather.gd",
"tests/export/test_exported_opening.gd",
"tests/fixtures/pre_upkeep_runtime.gd",
"tests/mvp/test_operations_coordinator.gd",
"tests/mvp/test_runtime_content_progression.gd",
"tests/mvp/test_runtime_operations_acceptance.gd",
"tests/mvp/test_runtime_operations_integration.gd",
"tests/s0/test_definition_registry.gd",
"tests/s0/test_runtime_integration.gd",
"tests/s1/test_runtime_infrastructure_integration.gd",
"tests/s3/test_runtime_path_traffic.gd",
"tests/s5/test_defense_service.gd",
"tests/s5/test_runtime_defense_cycle.gd",
"tests/supply/test_supply_save_migration.gd",
"tests/transport/test_runtime_stairs.gd",
"tests/transport/test_runtime_transport.gd",
"tests/transport/test_transport_density_migration.gd",
"tests/transport/test_transport_save.gd",
"tests/ui/fixtures/opening_restart_flow.gd",
"tests/ui/test_business_management.gd",
"tests/ui/test_chapel_gameplay.gd",
"tests/ui/test_guest_observation.gd",
"tests/ui/test_main_dashboard.gd",
"tests/ui/test_staff_management.gd"
],
"changed_count": 51,
"current_exact_source_match": false
},
{
"source_map": "artifacts/original-completion-2026-10-02/p02-opening-restart/source-start.json",
"source_map_sha256": "8793934bc0130b5f45610fc597eccd5bc0c87cc06e9fb20769cd93c7183c9b37",
"checked_paths": 316,
"changed_paths": [
"autoload/simulation_runtime.gd",
"scripts/core/save_service.gd",
"scripts/core/simulation_snapshot.gd",
"scripts/world/path_service.gd"
],
"changed_count": 4,
"current_exact_source_match": false
}
],
"normal_ui_entries": [
{
"path": "scenes/main/main.gd",
"line": 2120,
"sha256": "032f370394973876bd1c220aae92efa48035bc3788a8c55472513cda8a3a657f"
},
{
"path": "scenes/main/main.gd",
"line": 2135,
"sha256": "032f370394973876bd1c220aae92efa48035bc3788a8c55472513cda8a3a657f"
},
{
"path": "scenes/main/main.gd",
"line": 2762,
"sha256": "032f370394973876bd1c220aae92efa48035bc3788a8c55472513cda8a3a657f"
},
{
"path": "scenes/main/main.gd",
"line": 2786,
"sha256": "032f370394973876bd1c220aae92efa48035bc3788a8c55472513cda8a3a657f"
}
],
"current_update_order": {
"source_refs": [
{
"path": "scripts/core/simulation_kernel.gd",
"line": 122,
"sha256": "341c0c878c4894adbac628d0db6362ff69fc3347bdd9e61e50936e15dc2d1edb"
},
{
"path": "autoload/simulation_runtime.gd",
"line": 1720,
"sha256": "d3ad4aab6ded19eb137c5494481cc7333e846746a25b18dbad3c8b663e9f6b72"
},
{
"path": "autoload/simulation_runtime.gd",
"line": 4360,
"sha256": "d3ad4aab6ded19eb137c5494481cc7333e846746a25b18dbad3c8b663e9f6b72"
}
],
"order": [
"APPLY_COMMANDS (can abort before clock advance)",
"clock minute advance / midnight signals",
"TIME_BOUNDARIES: weather, upkeep, operations (lexical handler order)",
"MANA",
"CONSTRUCTION",
"LOGISTICS",
"FACILITY_COMPLETION",
"VITALS_AND_ENVIRONMENT",
"INCIDENTS_AND_EVENTS: authority, defense, relationships",
"FACILITY_QUEUES",
"AI_DECISIONS",
"PUBLISH_SNAPSHOT then queued checkpoints",
"clock snapshot_version increment / tick_completed / time_changed"
],
"daily_autosave": "06:00 deduplicated by saved last_daily_checkpoint_day; approved maintenance settlement is separate at 00:00",
"all_boundary_semantics_accepted": false
},
"remaining_gaps": [
{
"id": "P03-G01",
"package": "P03-01",
"state": "partial",
"issue": "Per-feature authoritative save contracts for not-yet-implemented needs charging, all original facilities/people, story/endings and encyclopedia are not complete. Existing aggregate serialization is a foundation, not full original acceptance."
},
{
"id": "P03-G02",
"package": "P03-02",
"state": "unverified",
"issue": "Dimension migration accepted legacy premium/dormitory batch and partial premium construction. Full simultaneous layouts, actors on removed cells, coordinated task destination changes, in-flight elevator/rescue/logistics migration still lack accepted cases."
},
{
"id": "P03-G03",
"package": "P03-02",
"state": "unset",
"decision": "D07",
"issue": "RelationshipState retains trust/respect/affection/fear/dependence. Old five metrics to original three metrics/route meaning is undecided; no guessed conversion is applied."
},
{
"id": "P03-G04",
"package": "P03-03",
"state": "unverified",
"issue": "Fresh-process normal opening covers the available inn over three closes with explicit timed-domain-event exclusion. Paired cross-process midway delivery, cleaning, defense, all unique progression and every original facility are still missing."
},
{
"id": "P03-G05",
"package": "P03-01",
"state": "unverified",
"issue": "256 MiB world / 4 MiB manifest limits are technical resource policies. Largest full Runtime world with all actors/services/content remains unmeasured; legitimate oversized legacy saves now refuse with explicit size-limit code."
},
{
"id": "P04-G01",
"package": "P04-01",
"state": "partial",
"decision": "D05",
"issue": "Current phase order can be listed, but all simultaneous closing/power/destruction/exit/charge/shift/00:00 cases have not been accepted. Undecided cost/EV/boundary semantics remain unset."
},
{
"id": "P02-G01",
"package": "P02-02",
"state": "unverified",
"issue": "Headless/rendered UI signal-handler fixtures are distinct from OS pointer input and native Windows. Current candidate must rerun the same process-restart evidence after source mutations."
}
],
"overall_atomic_acceptance_percent": null,
"overall_atomic_implementation_percent": null,
"denominator_fixed_by_this_subtask": false
}