1006 lines
64 KiB
JSON
1006 lines
64 KiB
JSON
{
|
|
"task_id": "P06-02-AUDIT-CONTINUE",
|
|
"audit_kind": "current-source seven-domain stop-condition audit; historical-evidence applicability review",
|
|
"source_commit": "d9262a71f45b39c53115a4878f4c6a2c861dfac5",
|
|
"head_commit": "0eeff92e81f3706a7e85237a0f2afbb34bebcd38",
|
|
"commit_equivalence": "git diff d9262a71f45b39c53115a4878f4c6a2c861dfac5..0eeff92e81f3706a7e85237a0f2afbb34bebcd38 -- scripts autoload tests data scenes is empty; only plan/execution documentation changed. Inspected source is identical at both commits, so every sha256 below is valid for source_commit.",
|
|
"unit_accepted": false,
|
|
"original_credit": "0/88 added by this audit (original 30/88, completed 17)",
|
|
"original_unit": {
|
|
"id": "P06-02",
|
|
"title": "全館停止の統合",
|
|
"work": "利用中、EV、ワープ、物流、救護、清掃、入館へ同じ停止判定を接続する。",
|
|
"acceptance": "停電中の無条件売上・生産がなく、乗客と搬送対象が消えない。"
|
|
},
|
|
"audit_conditions": [
|
|
"現版7対象の停止判定をソース行/関数/SHAと共に示す",
|
|
"既存3証拠の適用性を版と生証拠に基づき判定、不足は不足と記録",
|
|
"製品変更なし・原88加算0"
|
|
],
|
|
"domains": [
|
|
{
|
|
"domain": "active_service",
|
|
"status": "implemented_unverified",
|
|
"scope_note": "利用中サービスの停止 (P06 original scope). 実装は存在するが現行ソースでの受入証拠なし。",
|
|
"source_refs": [
|
|
{
|
|
"path": "scripts/facility/facility_service.gd",
|
|
"sha256": "ceb4a3e9224587423f273cdb2b56e6843ab176ac1fc4fe79dd498b5ed5c33b77",
|
|
"function": "_prepare_service_for_tick",
|
|
"line": 853,
|
|
"evidence": "BROKEN -> fail_service :857-859; related_facility_operating false -> pause RELATED_FACILITY_INACTIVE :860-864; power_available false -> pause INTERRUPTION_NO_POWER and emit service_interrupted :867-871; recovery resumes only the NO_POWER pause :872-874. Paused ACTIVE services do not advance or charge."
|
|
},
|
|
{
|
|
"path": "scripts/facility/facility_instance.gd",
|
|
"sha256": "0c6aa493f3299611e05dd26aa429dda8cf7b5c479e4d09632036fb862f79a324",
|
|
"function": "evaluate_state",
|
|
"line": 188,
|
|
"evidence": "not power_available appends NO_POWER and caps state to NO_POWER :199-203; operation_state becomes INACTIVE unless state in [OPEN, DEGRADED] :232-236. RELATED_FACILITY_INACTIVE is applied after NO_POWER and caps to CLOSED :228-230."
|
|
},
|
|
{
|
|
"path": "autoload/simulation_runtime.gd",
|
|
"sha256": "45514aea9367ff678f4dc05166bb9b58121f240d4b5565edeb7ab258e3ded8e0",
|
|
"function": "_advance_mana",
|
|
"line": 10716,
|
|
"evidence": "mana_network_service.advance_one_minute :10732 then mana_power_projection.apply(facilities, network, reserve, minute) :10735-10737 pushes power_available/state onto facility instances before FACILITY_COMPLETION."
|
|
},
|
|
{
|
|
"path": "scripts/mana/mana_power_projection.gd",
|
|
"sha256": "2026467960e857349bcb18fb97b7753189be5f2de2be91a17e73e90146eba69e",
|
|
"function": "apply",
|
|
"line": 7,
|
|
"evidence": "supplied requires the consumer node state ACTIVE/DEGRADED :13; available = reserve > 0 and supplied :18; a missing consumer node (node.is_empty()) counts as supplied but still needs reserve > 0; report depleted = reserve == 0 :29."
|
|
},
|
|
{
|
|
"path": "autoload/simulation_runtime.gd",
|
|
"sha256": "45514aea9367ff678f4dc05166bb9b58121f240d4b5565edeb7ab258e3ded8e0",
|
|
"function": "_validate_service_start",
|
|
"line": 11792,
|
|
"evidence": "rejects a start request when stored mana == 0 ('The tower has no stored Mana.') :11793-11794, a global gate independent of local network."
|
|
},
|
|
{
|
|
"path": "autoload/simulation_runtime.gd",
|
|
"sha256": "45514aea9367ff678f4dc05166bb9b58121f240d4b5565edeb7ab258e3ded8e0",
|
|
"function": "_register_operational_facility",
|
|
"line": 11765,
|
|
"evidence": "new facility instance power_available is initialized from int(mana) > 0 :11779."
|
|
}
|
|
],
|
|
"stop_condition": "In FACILITY_COMPLETION, an ACTIVE service is paused with INTERRUPTION_NO_POWER when its FacilityInstance.power_available is false (facility_service.gd:867-871). power_available is false when the global reserve is 0 (mana_power_projection.gd:18) or the registered consumer node for that facility is not ACTIVE/DEGRADED. A paused NO_POWER service resumes only when power returns (:872-874); DESTROYED/RAIDED suspension is never cleared by outage recovery.",
|
|
"call_order": "MANA (_advance_mana:10716 -> mana_network_service.advance_one_minute -> mana_power_projection.apply:7 sets per-facility power_available) before FACILITY_COMPLETION (_advance_facilities -> facility_service.advance_one_minute -> _prepare_service_for_tick:853). Service start is separately gated by _validate_service_start:11792.",
|
|
"save_restart_evidence": "tests/s2/test_facility_service.gd:175-188 defines controlled power pause/no progress/recovery assertions. tests/s2/test_mana_power_projection.gd:26-39 defines zero-reserve and restored projection assertions. These are source observations, not executed results; current-source formal save/new-PID outage acceptance remains unestablished.",
|
|
"remaining_conditions": [
|
|
"Natural (gameplay) reserve depletion to 0 is not accepted; supply/active reviews record natural_depletion_accepted=false; rescue records natural_outage_accepted=false and a controlled reserve was used.",
|
|
"Whole-domain 'all seven stop together' integration is not proven at current source.",
|
|
"Existing test definitions are not executed acceptance evidence. Obtain current-source pinned stop/recovery and formal save/new-PID results: tests/s2/test_facility_service.gd:175-188 defines controlled power pause/no progress/recovery assertions. tests/s2/test_mana_power_projection.gd:26-39 defines zero-reserve and restored projection assertions. These are source observations, not executed results; current-source formal save/new-PID outage acceptance remains unestablished."
|
|
]
|
|
},
|
|
{
|
|
"domain": "elevator",
|
|
"status": "implemented_unverified",
|
|
"scope_note": "EV停止と乗車中客の退避 (EV乗車中). 実装はあるが緊急降車は歴史的に未受入。",
|
|
"source_refs": [
|
|
{
|
|
"path": "autoload/simulation_runtime.gd",
|
|
"sha256": "45514aea9367ff678f4dc05166bb9b58121f240d4b5565edeb7ab258e3ded8e0",
|
|
"function": "_advance_elevators",
|
|
"line": 12789,
|
|
"evidence": "per shaft: powered = int(mana) > 0 :12795, and powered is forced false if any shaft module consumer state is not ACTIVE/DEGRADED :12796-12799; set_powered applied per shaft :12800."
|
|
},
|
|
{
|
|
"path": "scripts/transport/elevator_service.gd",
|
|
"sha256": "cea09dd9204551c26b31b30cd3aa847cc77e3b75fdac31662b9694a95fb3580c",
|
|
"function": "set_powered",
|
|
"line": 279,
|
|
"evidence": "stores shaft powered flag and applies operational = powered and operator_open :284-285."
|
|
},
|
|
{
|
|
"path": "scripts/transport/elevator_service.gd",
|
|
"sha256": "cea09dd9204551c26b31b30cd3aa847cc77e3b75fdac31662b9694a95fb3580c",
|
|
"function": "_apply_operational",
|
|
"line": 291,
|
|
"evidence": "occupied cabin with no nearest safe landing is HELD, last_error 'Occupied elevator has no safe landing; cabin remains held.', queued requests cancelled :301-317; otherwise boarded riders complete to landing with emergency:true and queued requests cancelled at from :318-326."
|
|
},
|
|
{
|
|
"path": "data/facilities/guest_elevator.tres",
|
|
"sha256": "ad4fb3c439ac4ed90fe52f07e29ed7b4ff654c54d1c400c7c8e226da77127af7",
|
|
"function": "FacilityDefinition resource (maintenance_mana)",
|
|
"line": 18,
|
|
"evidence": "maintenance_mana = 5 -> guest_elevator IS a registered mana consumer (contrast with rescue/cleaning)."
|
|
},
|
|
{
|
|
"path": "data/facilities/service_elevator.tres",
|
|
"sha256": "35d552d5b96065413feccb50847e3cd7173e673896ce65afba238f90abc25132",
|
|
"function": "FacilityDefinition resource (maintenance_mana)",
|
|
"line": 18,
|
|
"evidence": "maintenance_mana = 6 -> service_elevator IS a registered mana consumer."
|
|
}
|
|
],
|
|
"stop_condition": "set_powered/_apply_operational makes the shaft non-operational. Boarded riders are emitted at a valid landing with emergency:true; queued requests are cancelled. With no safe landing, boarded trips remain held and owned, while queued requests are still cancelled (:301-317). This code is not execution proof of passenger preservation.",
|
|
"call_order": "MANA (_advance_mana:10716) sets consumer states; AI_DECISIONS dispatches _advance_elevators:12789 which reads mana>0 and module consumer states, then elevator_service set_powered:279 -> _apply_operational:291, then advance_one_minute.",
|
|
"save_restart_evidence": "tests/transport/test_elevator_service.gd:143-152 defines power-off, snapshot restore and recovery assertions; :292 also exercises power-off. tests/staff/test_rescue_elevator.gd:35-74 defines disk save/load, controlled reserve outage and snapshot replay. No execution or current-source independent-PID acceptance is claimed.",
|
|
"remaining_conditions": [
|
|
"Emergency alighting at a valid landing is not accepted (historical valid_landing_emergency_alighting_accepted=false).",
|
|
"Natural depletion path (reserve 0 through gameplay) is unproven for the elevator domain.",
|
|
"Existing test definitions are not executed acceptance evidence. Obtain current-source pinned stop/recovery and formal save/new-PID results: tests/transport/test_elevator_service.gd:143-152 defines power-off, snapshot restore and recovery assertions; :292 also exercises power-off. tests/staff/test_rescue_elevator.gd:35-74 defines disk save/load, controlled reserve outage and snapshot replay. No execution or current-source independent-PID acceptance is claimed."
|
|
]
|
|
},
|
|
{
|
|
"domain": "warp",
|
|
"status": "missing",
|
|
"scope_note": "ワープ停止判定は対象実装そのものが存在しない (missing implementation, not merely missing proof). Preserves P14/P14-02 dependency.",
|
|
"source_refs": [
|
|
{
|
|
"path": "scripts/data/facility_catalog.gd",
|
|
"sha256": "7bb0c5085ddb361d384314cb219620d1483840942bc3f0f46dcb9dfa29d56e29",
|
|
"function": "load_all",
|
|
"line": 110,
|
|
"evidence": "Catalog enumerates FacilityDefinition resources for all facilities; scan returns ZERO definitions with id/tags for warp ('warp' absent). load_expansion:118 and load_available:134 also return none. A directory scan of data/facilities/** (including transport and infrastructure) likewise finds no warp .tres. Inspected to establish ABSENCE."
|
|
},
|
|
{
|
|
"path": "data/facilities/guest_elevator.tres",
|
|
"sha256": "ad4fb3c439ac4ed90fe52f07e29ed7b4ff654c54d1c400c7c8e226da77127af7",
|
|
"function": "FacilityDefinition resource (reference shape)",
|
|
"line": 11,
|
|
"evidence": "Representative transport FacilityDefinition; no sibling warp facility exists in data/facilities, confirming absence rather than an unnamed file."
|
|
}
|
|
],
|
|
"stop_condition": "Not applicable: no normal warp facility, construction, routing, cost, or stop path exists. Event-recovery teleport and mouse-warp are not a normal mana-warp and must not be substituted.",
|
|
"call_order": "N/A (no warp handler registered in the tick phase order).",
|
|
"save_restart_evidence": "None. P14-02 warp gap audit (work_packages P14-02) records ワープ定義0 and lists construction/routing/cost/stop/save as remaining gaps.",
|
|
"remaining_conditions": [
|
|
"Define a normally-buildable 2x2 FRONT warp facility and its cost/duration from original/approved values (D04 values, D05 cost timing unresolved).",
|
|
"Connect normal path selection to target/exit ownership, reservation, and actual movement.",
|
|
"Connect approved cost-determination and double-charge rejection.",
|
|
"Preserve state on mana shortage / outage / unreachable destination.",
|
|
"Prove no double application of cost/movement across save, new PID restart, and recovery."
|
|
]
|
|
},
|
|
{
|
|
"domain": "logistics",
|
|
"status": "implemented_unverified",
|
|
"scope_note": "物流停止 (物流). 実装はあるが現行ソースでの受入証拠なし。",
|
|
"source_refs": [
|
|
{
|
|
"path": "scripts/facility/facility_instance.gd",
|
|
"sha256": "0c6aa493f3299611e05dd26aa429dda8cf7b5c479e4d09632036fb862f79a324",
|
|
"function": "allows_logistics",
|
|
"line": 248,
|
|
"evidence": "returns operator_open and power_available and durability > 0 and suspension_reason.is_empty() and related_facility_operating. power_available false blocks logistics."
|
|
},
|
|
{
|
|
"path": "scripts/supply/supply_logistics_bridge.gd",
|
|
"sha256": "b9e394af788595d2744b71f1907c8e7c3d762d38ff49992b1ee74e63b9639e80",
|
|
"function": "_dispatch",
|
|
"line": 171,
|
|
"evidence": "if source/destination null or either !allows_logistics(): request.state_reason = 'FACILITY_UNAVAILABLE' and return without dispatching :174-177. Cargo/requests are retained, not dropped."
|
|
},
|
|
{
|
|
"path": "scripts/supply/supply_logistics_bridge.gd",
|
|
"sha256": "b9e394af788595d2744b71f1907c8e7c3d762d38ff49992b1ee74e63b9639e80",
|
|
"function": "tick",
|
|
"line": 43,
|
|
"evidence": "logistics tick entry that evaluates requests and dispatches through _dispatch:171."
|
|
},
|
|
{
|
|
"path": "scripts/supply/kitchen_production_service.gd",
|
|
"sha256": "f3bc6bdc1a0ba278e9411108172ceceb7eb06520b4e33f93f35684da1f103c62",
|
|
"function": "_production_state",
|
|
"line": 237,
|
|
"evidence": "kitchen production state returns NO_POWER and halts the batch when the facility has no power :243. Production is not unconditionally continued during an outage."
|
|
},
|
|
{
|
|
"path": "scripts/supply/supply_logistics_bridge.gd",
|
|
"sha256": "b9e394af788595d2744b71f1907c8e7c3d762d38ff49992b1ee74e63b9639e80",
|
|
"function": "_pickup",
|
|
"line": 215,
|
|
"evidence": "Source and destination allows_logistics gates :219-223 block before pickup."
|
|
},
|
|
{
|
|
"path": "scripts/supply/supply_logistics_bridge.gd",
|
|
"sha256": "b9e394af788595d2744b71f1907c8e7c3d762d38ff49992b1ee74e63b9639e80",
|
|
"function": "_deliver",
|
|
"line": 246,
|
|
"evidence": "Destination allows_logistics gate :254-257 returns before inventory transfer and retains carried inventory. Walking itself need not stop; endpoint handoff is blocked."
|
|
}
|
|
],
|
|
"stop_condition": "Logistics dispatch stops when either endpoint fails allows_logistics (power_available false) and the request is marked FACILITY_UNAVAILABLE with cargo retained; kitchen batches halt on NO_POWER. Warehouse has maintenance_mana=0 so it is not a registered consumer and relies on the global reserve. _pickup:219-223 gates both endpoints; _deliver:254-257 returns before transfer when destination is unavailable. This is a handoff/production stop, not proof that all carrier movement stops. Inventory expiry paths remain distinct and require boundary testing.",
|
|
"call_order": "MANA (_advance_mana:10716) before LOGISTICS (_advance_inventory_and_logistics -> supply_logistics_bridge.tick:43 -> _dispatch:171) before FACILITY_COMPLETION (kitchen _production_state:237).",
|
|
"save_restart_evidence": "tests/supply/test_supply_logistics_bridge.gd::_test_reserve_outage:364 and _test_kitchen_reserve_outage:378 define cargo ownership, stopped batches, snapshot restoration and recovery assertions; tests/s2/test_kitchen_production.gd:123 includes NO_POWER. Present test definitions are not fresh execution evidence or current-source new-PID acceptance.",
|
|
"remaining_conditions": [
|
|
"Natural depletion is not accepted (historical natural_depletion_accepted=false, mana_generation_coefficients_set=false).",
|
|
"Warehouse (maintenance_mana=0) is not a registered per-network consumer; its stop is global-reserve only.",
|
|
"Existing test definitions are not executed acceptance evidence. Obtain current-source pinned stop/recovery and formal save/new-PID results: tests/supply/test_supply_logistics_bridge.gd::_test_reserve_outage:364 and _test_kitchen_reserve_outage:378 define cargo ownership, stopped batches, snapshot restoration and recovery assertions; tests/s2/test_kitchen_production.gd:123 includes NO_POWER. Present test definitions are not fresh execution evidence or current-source new-PID acceptance."
|
|
]
|
|
},
|
|
{
|
|
"domain": "rescue",
|
|
"status": "implemented_unverified",
|
|
"scope_note": "救護停止と搬送対象保全 (救護). 実装はあるが現行受入なし。global reserve 0 の停止は実装済み (mana_power_projection.apply:18 -> facility_instance.evaluate_state:199-203/232-236 -> _rescue_destination:13069 / _advance_staff_rescue の OPERATING 必須 :13119-13121)。infirmary の per-network consumer 登録は basis/decision 未確立であり、欠落の証明ではない。",
|
|
"source_refs": [
|
|
{
|
|
"path": "autoload/simulation_runtime.gd",
|
|
"sha256": "45514aea9367ff678f4dc05166bb9b58121f240d4b5565edeb7ab258e3ded8e0",
|
|
"function": "_advance_staff_rescue",
|
|
"line": 13110,
|
|
"evidence": "rescue_transport is invalid unless carrier exists and clinic.operation_state == OPERATING :13120-13122; if the carrier is BOARDED in an elevator, the task is retained ('Keep the pair aboard until a real or emergency landing.') instead of cancelled :13124-13126. Otherwise RESCUE_INTERRUPTED cancels and releases elevator actors."
|
|
},
|
|
{
|
|
"path": "autoload/simulation_runtime.gd",
|
|
"sha256": "45514aea9367ff678f4dc05166bb9b58121f240d4b5565edeb7ab258e3ded8e0",
|
|
"function": "_rescue_destination",
|
|
"line": 13065,
|
|
"evidence": "only an infirmary with operation_state == OPERATING qualifies as a destination :13067-13069; otherwise no transport target."
|
|
},
|
|
{
|
|
"path": "autoload/simulation_runtime.gd",
|
|
"sha256": "45514aea9367ff678f4dc05166bb9b58121f240d4b5565edeb7ab258e3ded8e0",
|
|
"function": "_handle_rescue_arrival",
|
|
"line": 13087,
|
|
"evidence": "rescue_transport arrival requires clinic != null and clinic.operation_state == OPERATING and patient co-located :13094-13096."
|
|
},
|
|
{
|
|
"path": "data/facilities/rescue/infirmary.tres",
|
|
"sha256": "c3e861533971e369068ae9e42f71b660fa4ab3893c7c1f798fc367893befd943",
|
|
"function": "FacilityDefinition resource (no maintenance_mana)",
|
|
"line": 1,
|
|
"evidence": "infirmary.tres defines no maintenance_mana key -> 0 -> _register_facility_mana_consumer:11753 returns early (maintenance_mana <= 0 :11757). The rescue facility is therefore NOT a registered mana consumer and its OPERATING state does not follow per-network NO_POWER; it depends only on the global reserve>0 in mana_power_projection.apply:18. It carries tags [medical, staff_only] but is never wired as an ESSENTIAL consumer."
|
|
}
|
|
],
|
|
"stop_condition": "implemented_unverified: rescue transport is invalid (RESCUE_INTERRUPTED) when the infirmary is not OPERATING (:13119-13121). At global reserve 0 the infirmary's power_available becomes false (mana_power_projection.apply:18) and facility_instance.evaluate_state:199-203/232-236 forces operation_state out of OPERATING, so the same global stop reaches rescue without requiring a per-network consumer. A boarded pair is explicitly held aboard rather than cancelled (:13125-13126), protecting the transport subject. Whether the infirmary must additionally be registered as a per-network consumer is a basis/decision not yet established, not a proven missing stop.",
|
|
"call_order": "MANA (_advance_mana:10716) before AI_DECISIONS (_advance_staff_rescue:13110) which reads facility operation_state and elevator boarding; facility OPERATING feeds _rescue_destination:13065.",
|
|
"save_restart_evidence": "tests/staff/test_rescue_elevator.gd:35-74 defines boarded disk save/load, zero-reserve interruption, complete snapshot restoration and clinic outage ownership assertions. Current-source independent-PID outage acceptance is unestablished; the historical rescue receipt cannot establish it.",
|
|
"remaining_conditions": [
|
|
"Global reserve-0 stop is implemented through the shared chain (mana_power_projection.apply:18 -> facility_instance.evaluate_state:199-203/232-236 -> infirmary OPERATING gate :13069/:13119-13121); a missing maintenance_mana / consumer registration alone does not prove the global stop is missing.",
|
|
"Whether the infirmary must be registered as a per-network ESSENTIAL consumer (and its maintenance_mana value) is a basis/decision not yet established (P06-01 finite-mana contract unapproved); no local outage policy or mana value is invented here.",
|
|
"Existing test definitions are not executed acceptance evidence. Obtain current-source pinned stop/recovery and formal save/new-PID results: tests/staff/test_rescue_elevator.gd:35-74 defines boarded disk save/load, zero-reserve interruption, complete snapshot restoration and clinic outage ownership assertions. Current-source independent-PID outage acceptance is unestablished; the historical rescue receipt cannot establish it."
|
|
]
|
|
},
|
|
{
|
|
"domain": "cleaning",
|
|
"status": "implemented_unverified",
|
|
"scope_note": "清掃停止 (清掃). 実装はあるが現行受入なし。status を partial から implemented_unverified へ再評価: reserve 0 では cleaning_room 自身の operation_state が OPERATING を外れ (mana_power_projection.apply:18 -> facility_instance.evaluate_state:199-203/232-236)、can_dispatch:17 / task_can_work:22 が false となって清掃タスクが CLEANING_UNAVAILABLE で停止する。cleaning_room の per-network consumer 登録と清掃対象の電力ゲートは basis/decision 未確立であり、証明された欠落ではない。",
|
|
"source_refs": [
|
|
{
|
|
"path": "scripts/environment/facility_cleaning_bridge.gd",
|
|
"sha256": "f0abf23351c46b47e33141daea753ab776d71bd68f09ccf7c1a37879fee0d25e",
|
|
"function": "can_dispatch",
|
|
"line": 17,
|
|
"evidence": "dispatchable only if room.operation_state == OPERATING and staff commute present :19-20. The room's state is the only power-linked gate; the cleaning TARGET's power is not checked."
|
|
},
|
|
{
|
|
"path": "scripts/environment/facility_cleaning_bridge.gd",
|
|
"sha256": "f0abf23351c46b47e33141daea753ab776d71bd68f09ccf7c1a37879fee0d25e",
|
|
"function": "task_can_work",
|
|
"line": 22,
|
|
"evidence": "returns room.operation_state == OPERATING and target instance exists and cleanliness record non-empty :26. It does NOT require the target facility to have power, so a cleaner can keep working on an unpowered/dark target facility."
|
|
},
|
|
{
|
|
"path": "scripts/environment/facility_cleaning_bridge.gd",
|
|
"sha256": "f0abf23351c46b47e33141daea753ab776d71bd68f09ccf7c1a37879fee0d25e",
|
|
"function": "tick",
|
|
"line": 28,
|
|
"evidence": "cancels tasks with CLEANING_UNAVAILABLE only when the room/target/worker checks in task_can_work fail :31-34; no power-driven cancellation of the target's cleaning."
|
|
},
|
|
{
|
|
"path": "data/facilities/expansion/cleaning_room.tres",
|
|
"sha256": "ae366cf67cbf117db7989c6b76092eb5a65229b93d35999a40d19b8260f95ad8",
|
|
"function": "FacilityDefinition resource (no maintenance_mana)",
|
|
"line": 1,
|
|
"evidence": "cleaning_room.tres defines no maintenance_mana key -> 0 -> not registered as a mana consumer (_register_facility_mana_consumer:11753 returns at :11757). Its operation_state follows only the global reserve gate (mana_power_projection.apply:18), not a per-network consumer stop."
|
|
},
|
|
{
|
|
"path": "scripts/facility/facility_instance.gd",
|
|
"sha256": "0c6aa493f3299611e05dd26aa429dda8cf7b5c479e4d09632036fb862f79a324",
|
|
"function": "evaluate_state",
|
|
"line": 188,
|
|
"evidence": "operation_state is OPERATING only when state in [OPEN, DEGRADED] :232-236; power_available false forces NO_POWER via :199-203, so at global reserve 0 the cleaning room does stop. The per-network consumer wiring and the unchecked target power are basis/decision not yet established (see recommended_next_batch), not proven missing stops."
|
|
}
|
|
],
|
|
"stop_condition": "implemented_unverified: the cleaning ROOM stops when its own operation_state leaves OPERATING. At global reserve 0, power_available becomes false (mana_power_projection.apply:18), facility_instance.evaluate_state:199-203/232-236 sets NO_POWER/INACTIVE, and can_dispatch:17 / task_can_work:22 return false, so tick:28 cancels the task with CLEANING_UNAVAILABLE. This shared global stop is implemented. Cleanliness work is gated by the cleaning room state and target existence, not by the cleaning TARGET facility's power; whether the original 清掃 stop判定 must additionally include the target's power is a basis/decision not yet established (see recommended_next_batch), not a proven missing stop.",
|
|
"call_order": "MANA (_advance_mana:10716) sets facility power_available/operation_state; AI_DECISIONS runs cleaner dispatch (facility_cleaning_bridge.can_dispatch:17 / task_can_work:22 / tick:28) reading the room state.",
|
|
"save_restart_evidence": "tests/ui/test_cleaning_gameplay.gd:119-123 defines reserve=0 cancellation, no cleaning recovery and unpowered snapshot restoration. Test exists and is registered in Makefile:55; it was not run here. Current-source formal save/new-PID outage acceptance is unestablished.",
|
|
"remaining_conditions": [
|
|
"Global reserve-0 stop is implemented via the shared chain (mana_power_projection.apply:18 -> facility_instance.evaluate_state:199-203/232-236 -> can_dispatch:17 / task_can_work:22); a missing maintenance_mana / consumer registration alone does not prove the global stop is missing.",
|
|
"Whether cleaning_room must be registered as a per-network consumer, and whether the original 清掃 stop判定 must include the cleaning TARGET facility's power, are basis/decision not yet established (recommended_next_batch); no local outage policy or mana value is invented here.",
|
|
"Existing test definitions are not executed acceptance evidence. Obtain current-source pinned stop/recovery and formal save/new-PID results: tests/ui/test_cleaning_gameplay.gd:119-123 defines reserve=0 cancellation, no cleaning recovery and unpowered snapshot restoration. Test exists and is registered in Makefile:55; it was not run here. Current-source formal save/new-PID outage acceptance is unestablished."
|
|
]
|
|
},
|
|
{
|
|
"domain": "admission",
|
|
"status": "partial",
|
|
"scope_note": "partial describes limited established integration coverage: natural arrival reserve gate exists; direct-command/reception policy remains unresolved. It does not authorize adding a new gate.",
|
|
"source_refs": [
|
|
{
|
|
"path": "autoload/simulation_runtime.gd",
|
|
"sha256": "45514aea9367ff678f4dc05166bb9b58121f240d4b5565edeb7ab258e3ded8e0",
|
|
"function": "_operations_arrival_boundary",
|
|
"line": 2856,
|
|
"evidence": "CAPTURE phase capacity_remaining = max(population_cap - guest_count, 0) only if int(mana) > 0 and weather.permits_new_arrivals(), else 0 :2868-2871. Natural (Operations) arrivals therefore stop at global reserve 0."
|
|
},
|
|
{
|
|
"path": "autoload/simulation_runtime.gd",
|
|
"sha256": "45514aea9367ff678f4dc05166bb9b58121f240d4b5565edeb7ab258e3ded8e0",
|
|
"function": "_execute_spawn_guest",
|
|
"line": 6132,
|
|
"evidence": "spawn_guest checks only Operations terminal/quarantine and population cap :6133-6144 and reservation of guest-auto ids :6148-6155; it does NOT check mana/power. A direct spawn command bypasses the outage admission gate."
|
|
},
|
|
{
|
|
"path": "data/facilities/reception.tres",
|
|
"sha256": "bed3de120a0e98c539771d1bb189111d095712f8ae25dfdf7cb2983efc0dee9f",
|
|
"function": "FacilityDefinition resource (maintenance_mana)",
|
|
"line": 27,
|
|
"evidence": "reception maintenance_mana = 1 -> reception IS a mana consumer, but admission is not gated by reception's power; only weather + global mana are consulted at :2870."
|
|
},
|
|
{
|
|
"path": "scripts/core/simulation_kernel.gd",
|
|
"sha256": "341c0c878c4894adbac628d0db6362ff69fc3347bdd9e61e50936e15dc2d1edb",
|
|
"function": "advance_one_minute",
|
|
"line": 138,
|
|
"evidence": "TIME_BOUNDARIES runs before the phase loop starting with MANA at :141."
|
|
}
|
|
],
|
|
"stop_condition": "Partial: natural Operations arrivals stop when global reserve is 0 (capacity_remaining forced to 0). Direct spawn_guest commands are not gated by mana/power, and there is no per-reception (facility-level) power gate on admission.",
|
|
"call_order": "APPLY_COMMANDS precedes TIME_BOUNDARIES, which precedes MANA (scripts/core/simulation_kernel.gd:12-24, 138-143). Operations arrival CAPTURE reads reserve directly in TIME_BOUNDARIES through _advance_operations_time; it does not wait for this minute's mana projection. Direct spawn commands use _execute_spawn_guest independently.",
|
|
"save_restart_evidence": "No dedicated natural-arrival outage save/new-PID test was established by this inspection. This is a proof gap, not an exhaustive assertion that arrival tests are absent. The historical active-service review exercised naturally admitted guests, but does not establish current-source outage admission acceptance.",
|
|
"remaining_conditions": [
|
|
"Natural-depletion arrival stop and current-source save/new-PID acceptance are unestablished.",
|
|
"Direct spawn bypass and lack of reception power gate are source observations; their required gameplay scope is unresolved, not an approved defect.",
|
|
"Runtime :3013-3031 reaches _execute_spawn_guest through Operations natural arrivals, after the capacity gate. No spawn_guest caller was found in scripts/ui or scenes by text search; direct command exposure still needs scope confirmation."
|
|
]
|
|
}
|
|
],
|
|
"historical_evidence": [
|
|
{
|
|
"label": "p06-rescue-power-final-root-review-r01",
|
|
"review_path": "build/p06-history/p06-rescue-power-final-root-review-r01.json",
|
|
"review_sha256": "04e16364985a4a1e795b38e187830aee9d944e8c9fb3cb4200bb0d7f3a594436",
|
|
"reusable": false,
|
|
"basis": "Controlled held boarded EV/rescue outage review: source_current_before_end_equal true, files_rehashed 187, actual_checks 691, failures 0, whole_typed_pairs 10, uncapped_future_events_each 9, 4 formal immutable saves; source_changes []. But the review pins no per-file source map and its QA fixture is absent from current source. Source count in receipt is 1224; do not label this rescue evidence as current1299. Prior review and UID hashes are receipt/harness pins, not runtime source pins.",
|
|
"prior_source_pins": [
|
|
{
|
|
"path": "artifacts/original-completion-2026-10-02/p06-rescue-power-final-root-review-r01.json",
|
|
"sha256": "04e16364985a4a1e795b38e187830aee9d944e8c9fb3cb4200bb0d7f3a594436"
|
|
},
|
|
{
|
|
"path": "tests/fixtures/p06/rescue_power_restart.gd.uid",
|
|
"sha256": "03a77931ac400b69e5102122cd91ce436f008299108aa38573a0e68eb2af83f9"
|
|
}
|
|
],
|
|
"current_differences": [
|
|
"Referenced fixture tests/fixtures/p06/rescue_power_restart.gd(.uid) is absent from this checkout. No inference about all historical branches is made.",
|
|
"No per-file product source hash map is contained in the review, so byte equality of the proven runtime to current source cannot be established.",
|
|
"Review records valid_landing_emergency_alighting_accepted=false, natural_outage_accepted=false, native_Windows_accepted=false, whole_P06_accepted=false."
|
|
],
|
|
"raw_evidence_available": "unconfirmed",
|
|
"raw_evidence_note": "Rescue receipt is available and hashed; no rescue raw save set or product-source map was found among build/p06-history or the tracked p06-01 runner-input package. Fixture is absent from this checkout. Raw availability remains unconfirmed; receipt hashes are not product-source pins."
|
|
},
|
|
{
|
|
"label": "p06-current-supply-outage-root-review-r01",
|
|
"review_path": "build/p06-history/p06-current-supply-outage-root-review-r01/review.json",
|
|
"review_sha256": "771078fabaea725cc7d115f51f6333be2dd8991097a69b16417aacb30817d8c5",
|
|
"reusable": false,
|
|
"basis": "Current1299 controlled cargo and real active kitchen batch stop/recovery: phases import/parse/writer370/reader90, actual_native 4, actual_checks 460, actual_failures 0, 16 whole typed buffers, 8 exact cross-PID pairs, 2 formal 8-member saves; entire_cargo_and_batch_preserved true; zero_facility_power true. Historical scope only. Tracked runner-input contains source_before and selected_source_map: comparison finds nine changed existing autoload/scripts/data files, including runtime, facility service, save service and path service. Thus raw availability does not establish current-source applicability; reusable remains false.",
|
|
"prior_source_pins": [
|
|
{
|
|
"path": "artifacts/original-completion-2026-10-02/p06-current-supply-outage-root-review-r01/review.json",
|
|
"sha256": "771078fabaea725cc7d115f51f6333be2dd8991097a69b16417aacb30817d8c5"
|
|
},
|
|
{
|
|
"path": "docs/plans/original-completion-2026-10-02/checkpoints/p06-01-runner-input-r01/001-runner-input.json.gz",
|
|
"sha256": "0bdfbbded655b2384318d26500403493da2981959b458525ba38ad0be523c5f6",
|
|
"map_fields": [
|
|
"source_before",
|
|
"selected_source_map"
|
|
]
|
|
}
|
|
],
|
|
"current_differences": [
|
|
{
|
|
"path": "autoload/simulation_runtime.gd",
|
|
"prior_sha256": "af328b031dadf74938f21950504c8343eaa3f8a2de5c426b915d918aed630100",
|
|
"current_sha256": "45514aea9367ff678f4dc05166bb9b58121f240d4b5565edeb7ab258e3ded8e0"
|
|
},
|
|
{
|
|
"path": "scripts/core/performance_budget.gd",
|
|
"prior_sha256": "79d18e8f0dcc3932801cd02ea8a8ba037af02ef57665387cba8dbe3b3e9af917",
|
|
"current_sha256": "0e2278f88d29919a0634fc1b527328a0d0c12d87e2cd612f3eee1526aabdb073"
|
|
},
|
|
{
|
|
"path": "scripts/core/save_service.gd",
|
|
"prior_sha256": "0c158d3e6ee693b89814bf232c954e4757c5ff91dc9df03bb322c3e593e73617",
|
|
"current_sha256": "f4c270632225dd046bbff92f9472761d64d63740e93f274828c92dcf912db6a9"
|
|
},
|
|
{
|
|
"path": "scripts/facility/facility_service.gd",
|
|
"prior_sha256": "c4310a397a80cbf959ac810057c25ac114526e0e0d007f29d82d6a81d7a14611",
|
|
"current_sha256": "ceb4a3e9224587423f273cdb2b56e6843ab176ac1fc4fe79dd498b5ed5c33b77"
|
|
},
|
|
{
|
|
"path": "scripts/guest/guest_runtime.gd",
|
|
"prior_sha256": "5bb687b2da6f634c66680ffbefb4b4a57ed02fb3dff10f72ce7e7858177d1241",
|
|
"current_sha256": "57ba99e5d977b5302987f4359a19056f1ab09c8fb7e4762ee8d79cbb9316741a"
|
|
},
|
|
{
|
|
"path": "scripts/relationship/relationship_service.gd",
|
|
"prior_sha256": "76d49e4fdb50e9a185f7ba5065d257682a11aece1c76272208ba8555ffd534c2",
|
|
"current_sha256": "d2f6304aa643b98914c5d65bf3eb673ca8cc427476187f43e76b4b941410b1d3"
|
|
},
|
|
{
|
|
"path": "scripts/ui/guest_observation_panel.gd",
|
|
"prior_sha256": "67ffc6404262d803a6d677853f327759c3e68c592cc6c8a88a1ebd20aca239f2",
|
|
"current_sha256": "f5de1004fce5445bbfd3ee8d6ec37b325e7a9813d47c19beaeeeb411f27a50a5"
|
|
},
|
|
{
|
|
"path": "scripts/ui/room_presentation.gd",
|
|
"prior_sha256": "7fc8423d6d4156a42820235c37a6e19c9a3d3a5c0159ea7759bdfdc231b864f8",
|
|
"current_sha256": "2eda851534777575298ea005e2e6d0ee90785a81357d5b9c34cfb95f615a8181"
|
|
},
|
|
{
|
|
"path": "scripts/world/path_service.gd",
|
|
"prior_sha256": "2e68653e4898387cb5a76402813a10595bd5ca7d5fb841c7ed8c55af77d7a918",
|
|
"current_sha256": "447135729a1106639a6eee6754af3195c8a8b458ca26980ae91fa39d80dcfbd4"
|
|
}
|
|
],
|
|
"raw_evidence_available": true,
|
|
"raw_evidence_note": "Tracked compressed raw buffers, formal save members and source maps are available in docs/plans/original-completion-2026-10-02/checkpoints/p06-01-runner-input-r01. All 82 manifest entries were read/decompressed in memory and matched stored/raw SHA256 and raw byte count. This is byte-level inspection only, not Godot decoding, replay or new test execution. External original paths were not accessed.",
|
|
"raw_manifest": {
|
|
"path": "docs/plans/original-completion-2026-10-02/checkpoints/p06-01-runner-input-r01/manifest.json",
|
|
"sha256": "c9761e3da7d0286419d83d991a32d2176e8d0edc59c0eacaea246903fc175c46",
|
|
"entries": 82
|
|
}
|
|
},
|
|
{
|
|
"label": "p06-active-service-outage-root-review-r01",
|
|
"review_path": "build/p06-history/p06-active-service-outage-root-review-r01/review.json",
|
|
"review_sha256": "45a8f2015a7191629e6fb9842abc242548e1611d55cec009d3e7981f1a82dea0",
|
|
"reusable": false,
|
|
"basis": "Current1299 naturally admitted active meal (cafeteria) and lodging (standard_room) services with controlled reserve: phases import/parse/writer1118/reader788, actual_native 4, actual_checks 1906, actual_failures 0, 28 whole typed buffers, 14 exact cross-PID pairs, 2 formal 8-member saves; paused_service_whole_equal true for both; RAIDED suspension boundary verified (no payment, reservations released, guests preserved). Historical scope only. Tracked runner-input contains source_before and selected_source_map: comparison finds nine changed existing autoload/scripts/data files, including runtime, facility service, save service and path service. Thus raw availability does not establish current-source applicability; reusable remains false.",
|
|
"prior_source_pins": [
|
|
{
|
|
"path": "artifacts/original-completion-2026-10-02/p06-active-service-outage-root-review-r01/review.json",
|
|
"sha256": "45a8f2015a7191629e6fb9842abc242548e1611d55cec009d3e7981f1a82dea0"
|
|
},
|
|
{
|
|
"path": "docs/plans/original-completion-2026-10-02/checkpoints/p06-01-runner-input-r01/036-runner-input.json.gz",
|
|
"sha256": "31a93330813b5b9b3e5d4c39ce51bbfa2e756dcd7648a16f130f16e87dc33bc5",
|
|
"map_fields": [
|
|
"source_before",
|
|
"selected_source_map"
|
|
]
|
|
}
|
|
],
|
|
"current_differences": [
|
|
{
|
|
"path": "autoload/simulation_runtime.gd",
|
|
"prior_sha256": "af328b031dadf74938f21950504c8343eaa3f8a2de5c426b915d918aed630100",
|
|
"current_sha256": "45514aea9367ff678f4dc05166bb9b58121f240d4b5565edeb7ab258e3ded8e0"
|
|
},
|
|
{
|
|
"path": "scripts/core/performance_budget.gd",
|
|
"prior_sha256": "79d18e8f0dcc3932801cd02ea8a8ba037af02ef57665387cba8dbe3b3e9af917",
|
|
"current_sha256": "0e2278f88d29919a0634fc1b527328a0d0c12d87e2cd612f3eee1526aabdb073"
|
|
},
|
|
{
|
|
"path": "scripts/core/save_service.gd",
|
|
"prior_sha256": "0c158d3e6ee693b89814bf232c954e4757c5ff91dc9df03bb322c3e593e73617",
|
|
"current_sha256": "f4c270632225dd046bbff92f9472761d64d63740e93f274828c92dcf912db6a9"
|
|
},
|
|
{
|
|
"path": "scripts/facility/facility_service.gd",
|
|
"prior_sha256": "c4310a397a80cbf959ac810057c25ac114526e0e0d007f29d82d6a81d7a14611",
|
|
"current_sha256": "ceb4a3e9224587423f273cdb2b56e6843ab176ac1fc4fe79dd498b5ed5c33b77"
|
|
},
|
|
{
|
|
"path": "scripts/guest/guest_runtime.gd",
|
|
"prior_sha256": "5bb687b2da6f634c66680ffbefb4b4a57ed02fb3dff10f72ce7e7858177d1241",
|
|
"current_sha256": "57ba99e5d977b5302987f4359a19056f1ab09c8fb7e4762ee8d79cbb9316741a"
|
|
},
|
|
{
|
|
"path": "scripts/relationship/relationship_service.gd",
|
|
"prior_sha256": "76d49e4fdb50e9a185f7ba5065d257682a11aece1c76272208ba8555ffd534c2",
|
|
"current_sha256": "d2f6304aa643b98914c5d65bf3eb673ca8cc427476187f43e76b4b941410b1d3"
|
|
},
|
|
{
|
|
"path": "scripts/ui/guest_observation_panel.gd",
|
|
"prior_sha256": "67ffc6404262d803a6d677853f327759c3e68c592cc6c8a88a1ebd20aca239f2",
|
|
"current_sha256": "f5de1004fce5445bbfd3ee8d6ec37b325e7a9813d47c19beaeeeb411f27a50a5"
|
|
},
|
|
{
|
|
"path": "scripts/ui/room_presentation.gd",
|
|
"prior_sha256": "7fc8423d6d4156a42820235c37a6e19c9a3d3a5c0159ea7759bdfdc231b864f8",
|
|
"current_sha256": "2eda851534777575298ea005e2e6d0ee90785a81357d5b9c34cfb95f615a8181"
|
|
},
|
|
{
|
|
"path": "scripts/world/path_service.gd",
|
|
"prior_sha256": "2e68653e4898387cb5a76402813a10595bd5ca7d5fb841c7ed8c55af77d7a918",
|
|
"current_sha256": "447135729a1106639a6eee6754af3195c8a8b458ca26980ae91fa39d80dcfbd4"
|
|
}
|
|
],
|
|
"raw_evidence_available": true,
|
|
"raw_evidence_note": "Tracked compressed raw buffers, formal save members and source maps are available in docs/plans/original-completion-2026-10-02/checkpoints/p06-01-runner-input-r01. All 82 manifest entries were read/decompressed in memory and matched stored/raw SHA256 and raw byte count. This is byte-level inspection only, not Godot decoding, replay or new test execution. External original paths were not accessed.",
|
|
"raw_manifest": {
|
|
"path": "docs/plans/original-completion-2026-10-02/checkpoints/p06-01-runner-input-r01/manifest.json",
|
|
"sha256": "c9761e3da7d0286419d83d991a32d2176e8d0edc59c0eacaea246903fc175c46",
|
|
"entries": 82
|
|
}
|
|
}
|
|
],
|
|
"dependencies": [
|
|
{
|
|
"id": "P14 / P14-02",
|
|
"kind": "preserved cross-package dependency",
|
|
"detail": "P06-02 の warp 対象は P14-02「ワープの通常接続」に依存する。work_packages P14-02 records ワープ定義0 and normal construction/routing/cost/stop/save gaps. This audit preserves that dependency and does not substitute the P14-01 vertical-transport/performance slice or event-recovery teleport."
|
|
},
|
|
{
|
|
"id": "P06-01",
|
|
"kind": "blocking policy dependency",
|
|
"detail": "有限マナ供給の契約 (供給/蓄積/消費・世界樹初期源) が未承認。mana_generation_coefficients_set=false in supply/active reviews; rescue records natural_outage_accepted=false; D04 numeric values / D05 update-order are unapproved. All seven stop domains inherit this unresolved policy."
|
|
},
|
|
{
|
|
"id": "P04",
|
|
"kind": "prerequisite",
|
|
"detail": "P06 depends_on P04. P04-01 order-audit is the structural precedent for this seven-domain audit; P04 completion does not transfer acceptance to P06."
|
|
},
|
|
{
|
|
"id": "D04 / D05",
|
|
"kind": "approval dependency",
|
|
"detail": "Mana reserve policy and warp cost timing remain unapproved (D04 values, D05 update order / cost point)."
|
|
}
|
|
],
|
|
"unresolved_policy": [
|
|
"Finite mana reserve contract: generation, storage, consumption, World-Tree initial source, and legacy-zero-save migration are unapproved (P06-01 in_progress).",
|
|
"The supply/active reviews record mana_generation_coefficients_set=false and natural_depletion_accepted=false; rescue records natural_outage_accepted=false; gameplay natural depletion is not accepted.",
|
|
"Warp normal-connection definition and cost/duration/stop semantics (P14-02 D04/D05) are unresolved.",
|
|
"Emergency alighting at a valid landing lacks accepted evidence; the receipt alone does not establish that the policy is unresolved (historical valid_landing_emergency_alighting_accepted=false).",
|
|
"Whether 'same stop判定' requires per-network consumer registration for cleaning_room/infirmary (currently maintenance_mana=0, unregistered) is a policy/implementation question not yet decided."
|
|
],
|
|
"recommended_next_batch": {
|
|
"id": "P06-02-bounded-next",
|
|
"kind": "bounded, non-whole-unit; policy-gated items kept as 'basis/decision not yet established', not as required gaps",
|
|
"objective": "Do NOT implement the following as required gaps: for each of (a) the cleaning target-power gate, (b) infirmary mana-consumer registration, and (c) the direct-spawn admission gate, the requirement basis/decision is not yet established from the supplied spec. Record what evidence is needed to establish it. The only currently actionable, non-policy step is a bounded current-source outage test. Preserve the P14 warp dependency and the unapproved finite-mana policy unchanged.",
|
|
"basis_not_yet_established": [
|
|
{
|
|
"item": "cleaning target-field power gate",
|
|
"current_source": "scripts/environment/facility_cleaning_bridge.gd::task_can_work:22 gates only on the cleaning_room operation_state (and target existence); it does not read the cleaning TARGET facility's power_available. cleaning_room.tres defines no maintenance_mana (=>0).",
|
|
"why_not_established": "Whether the original 清掃 stop判定 must include the cleaning TARGET facility's power (versus only the cleaning_room's own outage stop) is a basis/decision not yet established; the finite-mana contract that could define it (P06-01) is unapproved.",
|
|
"evidence_needed": [
|
|
"Approved original spec text mapping 清掃 to a specific power gate (target power vs cleaning_room operation_state).",
|
|
"Fresh execution evidence for the existing cleaning outage test, extended to formal save/new-PID recovery.",
|
|
"Decision whether cleaning_room must be registered as a mana consumer."
|
|
]
|
|
},
|
|
{
|
|
"item": "infirmary mana-consumer registration",
|
|
"current_source": "data/facilities/rescue/infirmary.tres defines no maintenance_mana (=>0), so _register_facility_mana_consumer:11753 early-returns at :11757 and the infirmary's OPERATING state follows only the global reserve>0 gate in mana_power_projection.apply:18.",
|
|
"why_not_established": "Whether the infirmary (tags medical/staff_only) must be a per-network mana consumer, and at which priority, is a basis/decision not yet established (P06-01 finite-mana contract unapproved; mana_generation_coefficients_set=false in supply/active reviews).",
|
|
"evidence_needed": [
|
|
"Approved consumer-registration policy and priority classification (medical/ESSENTIAL) for the infirmary.",
|
|
"Approved maintenance_mana value (D04 numeric values remain unapproved).",
|
|
"Fresh execution evidence for existing rescue outage tests plus formal new-PID outage replay."
|
|
]
|
|
},
|
|
{
|
|
"item": "direct-spawn admission gate",
|
|
"current_source": "autoload/simulation_runtime.gd::_execute_spawn_guest:6132 checks only Operations terminal/quarantine and population cap (no mana/power/reserve line), while natural arrivals in _operations_arrival_boundary:2856 stop at reserve 0 (:2870).",
|
|
"why_not_established": "Whether _execute_spawn_guest is a gameplay admission path that must share the same stop判定, or an out-of-scope command/test surface, is a basis/decision not yet established; a per-reception power gate on admission is not stated in the supplied spec.",
|
|
"evidence_needed": [
|
|
"Confirmation of which UI/gameplay command paths can reach spawn_guest (vs admin/test-only).",
|
|
"Approved admission-gating policy at outage.",
|
|
"A registered current-source admission outage test (currently none exists)."
|
|
]
|
|
}
|
|
],
|
|
"steps": [
|
|
"Establish (policy/basis) the three items above and record the listed evidence; do not treat them as required gaps until that basis is approved.",
|
|
"Runner should execute existing bounded outage tests for the six implemented domains, extend missing formal save/new-PID cases, and record warp as blocked on P14-02 rather than inventing a runnable seven-domain scenario. No unconditional sales/production and no lost passenger/cargo remain acceptance requirements.",
|
|
"After P06-01 approval, rerun against natural depletion and re-derive historical evidence applicability from a fresh source-pinned audit."
|
|
],
|
|
"explicitly_out_of_scope": [
|
|
"Warp implementation (depends on P14-02).",
|
|
"Assigning D04/D05 numeric values.",
|
|
"Whole-unit P06 or whole-game acceptance.",
|
|
"Native/Windows engine runs (no engines in this audit)."
|
|
]
|
|
},
|
|
"test_paths": [
|
|
{
|
|
"domain": "cleaning / mana",
|
|
"make_target": "test-s2",
|
|
"argv": "godot --headless --path . --script tests/environment/test_cleaning_access.gd\ngodot --headless --path . --script tests/ui/test_cleaning_gameplay.gd\ngodot --headless --path . --script tests/environment/test_runtime_cleanliness.gd\ngodot --headless --path . --script res://tests/environment/test_facility_cleanliness.gd\ngodot --headless --path . --script res://tests/s2/test_mana_network_service.gd\ngodot --headless --path . --script res://tests/s2/test_facility_service.gd",
|
|
"note": "Exact registered Makefile recipes, with GODOT default godot (Makefile:1); not executed. Unregistered scripts are listed as source references only.",
|
|
"commands": [
|
|
{
|
|
"path": "tests/environment/test_cleaning_access.gd",
|
|
"argv": [
|
|
"godot",
|
|
"--headless",
|
|
"--path",
|
|
".",
|
|
"--script",
|
|
"tests/environment/test_cleaning_access.gd"
|
|
],
|
|
"makefile_line": 54,
|
|
"recipe": "$(GODOT) --headless --path . --script tests/environment/test_cleaning_access.gd"
|
|
},
|
|
{
|
|
"path": "tests/ui/test_cleaning_gameplay.gd",
|
|
"argv": [
|
|
"godot",
|
|
"--headless",
|
|
"--path",
|
|
".",
|
|
"--script",
|
|
"tests/ui/test_cleaning_gameplay.gd"
|
|
],
|
|
"makefile_line": 55,
|
|
"recipe": "$(GODOT) --headless --path . --script tests/ui/test_cleaning_gameplay.gd"
|
|
},
|
|
{
|
|
"path": "tests/environment/test_runtime_cleanliness.gd",
|
|
"argv": [
|
|
"godot",
|
|
"--headless",
|
|
"--path",
|
|
".",
|
|
"--script",
|
|
"tests/environment/test_runtime_cleanliness.gd"
|
|
],
|
|
"makefile_line": 56,
|
|
"recipe": "$(GODOT) --headless --path . --script tests/environment/test_runtime_cleanliness.gd"
|
|
},
|
|
{
|
|
"path": "res://tests/environment/test_facility_cleanliness.gd",
|
|
"argv": [
|
|
"godot",
|
|
"--headless",
|
|
"--path",
|
|
".",
|
|
"--script",
|
|
"res://tests/environment/test_facility_cleanliness.gd"
|
|
],
|
|
"makefile_line": 57,
|
|
"recipe": "$(GODOT) --headless --path . --script res://tests/environment/test_facility_cleanliness.gd"
|
|
},
|
|
{
|
|
"path": "res://tests/s2/test_mana_network_service.gd",
|
|
"argv": [
|
|
"godot",
|
|
"--headless",
|
|
"--path",
|
|
".",
|
|
"--script",
|
|
"res://tests/s2/test_mana_network_service.gd"
|
|
],
|
|
"makefile_line": 65,
|
|
"recipe": "$(GODOT) --headless --path . --script res://tests/s2/test_mana_network_service.gd"
|
|
},
|
|
{
|
|
"path": "res://tests/s2/test_facility_service.gd",
|
|
"argv": [
|
|
"godot",
|
|
"--headless",
|
|
"--path",
|
|
".",
|
|
"--script",
|
|
"res://tests/s2/test_facility_service.gd"
|
|
],
|
|
"makefile_line": 60,
|
|
"recipe": "$(GODOT) --headless --path . --script res://tests/s2/test_facility_service.gd"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"domain": "active_service / mana",
|
|
"make_target": "test-s2",
|
|
"argv": "godot --headless --path . --script res://tests/s2/test_facility_service.gd\ngodot --headless --path . --script res://tests/s2/test_mana_network_service.gd",
|
|
"note": "Exact registered Makefile recipes, with GODOT default godot (Makefile:1); not executed. Unregistered scripts are listed as source references only.",
|
|
"commands": [
|
|
{
|
|
"path": "res://tests/s2/test_facility_service.gd",
|
|
"argv": [
|
|
"godot",
|
|
"--headless",
|
|
"--path",
|
|
".",
|
|
"--script",
|
|
"res://tests/s2/test_facility_service.gd"
|
|
],
|
|
"makefile_line": 60,
|
|
"recipe": "$(GODOT) --headless --path . --script res://tests/s2/test_facility_service.gd"
|
|
},
|
|
{
|
|
"path": "res://tests/s2/test_mana_network_service.gd",
|
|
"argv": [
|
|
"godot",
|
|
"--headless",
|
|
"--path",
|
|
".",
|
|
"--script",
|
|
"res://tests/s2/test_mana_network_service.gd"
|
|
],
|
|
"makefile_line": 65,
|
|
"recipe": "$(GODOT) --headless --path . --script res://tests/s2/test_mana_network_service.gd"
|
|
}
|
|
],
|
|
"unregistered_source_paths": [
|
|
"tests/s2/test_mana_power_projection.gd"
|
|
]
|
|
},
|
|
{
|
|
"domain": "logistics / kitchen",
|
|
"make_target": "test-supply",
|
|
"argv": "godot --headless --path . --script res://tests/s2/test_kitchen_production.gd\ngodot --headless --path . --script res://tests/supply/test_supply_logistics_bridge.gd\ngodot --headless --path . --script res://tests/supply/test_supply_management_service.gd",
|
|
"note": "Exact registered Makefile recipes, with GODOT default godot (Makefile:1); not executed. Unregistered scripts are listed as source references only.",
|
|
"commands": [
|
|
{
|
|
"path": "res://tests/s2/test_kitchen_production.gd",
|
|
"argv": [
|
|
"godot",
|
|
"--headless",
|
|
"--path",
|
|
".",
|
|
"--script",
|
|
"res://tests/s2/test_kitchen_production.gd"
|
|
],
|
|
"makefile_line": 187,
|
|
"recipe": "$(GODOT) --headless --path . --script res://tests/s2/test_kitchen_production.gd"
|
|
},
|
|
{
|
|
"path": "res://tests/supply/test_supply_logistics_bridge.gd",
|
|
"argv": [
|
|
"godot",
|
|
"--headless",
|
|
"--path",
|
|
".",
|
|
"--script",
|
|
"res://tests/supply/test_supply_logistics_bridge.gd"
|
|
],
|
|
"makefile_line": 189,
|
|
"recipe": "$(GODOT) --headless --path . --script res://tests/supply/test_supply_logistics_bridge.gd"
|
|
},
|
|
{
|
|
"path": "res://tests/supply/test_supply_management_service.gd",
|
|
"argv": [
|
|
"godot",
|
|
"--headless",
|
|
"--path",
|
|
".",
|
|
"--script",
|
|
"res://tests/supply/test_supply_management_service.gd"
|
|
],
|
|
"makefile_line": 190,
|
|
"recipe": "$(GODOT) --headless --path . --script res://tests/supply/test_supply_management_service.gd"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"domain": "elevator",
|
|
"make_target": "test-transport",
|
|
"argv": "godot --headless --path . --script res://tests/transport/test_elevator_service.gd\ngodot --headless --path . --script res://tests/transport/test_transport_boundaries.gd\ngodot --headless --path . --script res://tests/transport/test_transport_save.gd\ngodot --headless --path . --script res://tests/transport/test_runtime_transport.gd",
|
|
"note": "Exact registered Makefile recipes, with GODOT default godot (Makefile:1); not executed. Unregistered scripts are listed as source references only.",
|
|
"commands": [
|
|
{
|
|
"path": "res://tests/transport/test_elevator_service.gd",
|
|
"argv": [
|
|
"godot",
|
|
"--headless",
|
|
"--path",
|
|
".",
|
|
"--script",
|
|
"res://tests/transport/test_elevator_service.gd"
|
|
],
|
|
"makefile_line": 228,
|
|
"recipe": "$(GODOT) --headless --path . --script res://tests/transport/test_elevator_service.gd"
|
|
},
|
|
{
|
|
"path": "res://tests/transport/test_transport_boundaries.gd",
|
|
"argv": [
|
|
"godot",
|
|
"--headless",
|
|
"--path",
|
|
".",
|
|
"--script",
|
|
"res://tests/transport/test_transport_boundaries.gd"
|
|
],
|
|
"makefile_line": 232,
|
|
"recipe": "$(GODOT) --headless --path . --script res://tests/transport/test_transport_boundaries.gd"
|
|
},
|
|
{
|
|
"path": "res://tests/transport/test_transport_save.gd",
|
|
"argv": [
|
|
"godot",
|
|
"--headless",
|
|
"--path",
|
|
".",
|
|
"--script",
|
|
"res://tests/transport/test_transport_save.gd"
|
|
],
|
|
"makefile_line": 230,
|
|
"recipe": "$(GODOT) --headless --path . --script res://tests/transport/test_transport_save.gd"
|
|
},
|
|
{
|
|
"path": "res://tests/transport/test_runtime_transport.gd",
|
|
"argv": [
|
|
"godot",
|
|
"--headless",
|
|
"--path",
|
|
".",
|
|
"--script",
|
|
"res://tests/transport/test_runtime_transport.gd"
|
|
],
|
|
"makefile_line": 233,
|
|
"recipe": "$(GODOT) --headless --path . --script res://tests/transport/test_runtime_transport.gd"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"domain": "rescue",
|
|
"make_target": "test-transport / ui",
|
|
"argv": "godot --headless --path . --script res://tests/staff/test_rescue_elevator.gd\ngodot --headless --path . --script res://tests/staff/test_staff_rescue.gd\ngodot --headless --path . --script res://tests/ui/test_staff_rescue.gd",
|
|
"note": "Exact registered Makefile recipes, with GODOT default godot (Makefile:1); not executed. Unregistered scripts are listed as source references only.",
|
|
"commands": [
|
|
{
|
|
"path": "res://tests/staff/test_rescue_elevator.gd",
|
|
"argv": [
|
|
"godot",
|
|
"--headless",
|
|
"--path",
|
|
".",
|
|
"--script",
|
|
"res://tests/staff/test_rescue_elevator.gd"
|
|
],
|
|
"makefile_line": 223,
|
|
"recipe": "$(GODOT) --headless --path . --script res://tests/staff/test_rescue_elevator.gd"
|
|
},
|
|
{
|
|
"path": "res://tests/staff/test_staff_rescue.gd",
|
|
"argv": [
|
|
"godot",
|
|
"--headless",
|
|
"--path",
|
|
".",
|
|
"--script",
|
|
"res://tests/staff/test_staff_rescue.gd"
|
|
],
|
|
"makefile_line": 224,
|
|
"recipe": "$(GODOT) --headless --path . --script res://tests/staff/test_staff_rescue.gd"
|
|
},
|
|
{
|
|
"path": "res://tests/ui/test_staff_rescue.gd",
|
|
"argv": [
|
|
"godot",
|
|
"--headless",
|
|
"--path",
|
|
".",
|
|
"--script",
|
|
"res://tests/ui/test_staff_rescue.gd"
|
|
],
|
|
"makefile_line": 131,
|
|
"recipe": "$(GODOT) --headless --path . --script res://tests/ui/test_staff_rescue.gd"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"domain": "admission",
|
|
"make_target": "(none registered)",
|
|
"argv": null,
|
|
"note": "No dedicated admission-outage command established in this inspection; do not interpret as proof that all arrival tests are absent.",
|
|
"commands": []
|
|
}
|
|
],
|
|
"constraints_honored": [
|
|
"Audit only; no product, rules, values, or existing tests changed.",
|
|
"No git commit (Runner submits); no integration, Runner ops, or test execution performed.",
|
|
"No gameplay execution claims; evidence is source inspection plus historical review receipts.",
|
|
"Historical receipts read from build/p06-history and tracked checkpoint gzip inputs; no external host evidence paths accessed or build inputs written.",
|
|
"Only files under docs/plans/original-completion-2026-10-02/execution/p06-02/ were written."
|
|
],
|
|
"continuation_record": {
|
|
"failed_run": "2faabaca67d24dfa8df9e8f2543fba0a",
|
|
"action": "Continue retained audit documents; no restart of failed task. Correct inherited unsupported absence claims using tracked inputs and existing test definitions.",
|
|
"formal_validation": "audit-structure and all execution deferred to Runner; no PASS claimed"
|
|
},
|
|
"cross_cutting_followup": [
|
|
"UI/original-condition agreement: pending current-source UI evidence; no UI run in audit.",
|
|
"Runtime/accounting/behavior: source refs below establish gates, not accepted outcomes.",
|
|
"Save/restart: existing unit/snapshot definitions and historical buffers documented; current-source new-PID proof pending.",
|
|
"Boundary/interruption: natural depletion, valid emergency landing and coordinated domains pending.",
|
|
"Related regression: exact repository recipes supplied; Runner execution pending.",
|
|
"Requirement logs/source hashes: audit refs and historical maps retained; fresh runtime logs pending.",
|
|
"Representative-load performance regression: no measurement performed; required for later product acceptance, outside this documentation audit."
|
|
],
|
|
"test_source_pins": [
|
|
{
|
|
"path": "tests/environment/test_cleaning_access.gd",
|
|
"sha256": "1382eab9d01dffaa396cb7fb71902538ee649a963ac9e1fd099ea7a147669884",
|
|
"execution": "not run"
|
|
},
|
|
{
|
|
"path": "tests/environment/test_facility_cleanliness.gd",
|
|
"sha256": "6dba789489d3e7da8cbd5056f76d7a5eb97c454b087787ccda926682c328a5f5",
|
|
"execution": "not run"
|
|
},
|
|
{
|
|
"path": "tests/environment/test_runtime_cleanliness.gd",
|
|
"sha256": "3b5fe92855f17f1551de76fe1570dbf92c697b769721bb87582bc4d4d06e36b4",
|
|
"execution": "not run"
|
|
},
|
|
{
|
|
"path": "tests/s2/test_facility_service.gd",
|
|
"sha256": "4b834f1d9d9ab2ad00cb4a56f5202b70468bfe5f71318dbf816da1e29cc32690",
|
|
"execution": "not run"
|
|
},
|
|
{
|
|
"path": "tests/s2/test_kitchen_production.gd",
|
|
"sha256": "e2aeb1fdbc8d1dfe9400646693a0e97919b3b86cb74a4f000ebeba01bfbee626",
|
|
"execution": "not run"
|
|
},
|
|
{
|
|
"path": "tests/s2/test_mana_network_service.gd",
|
|
"sha256": "b0a21ea663667979c109cf6fd2efff717c284398071948c897b9e99090ce12fc",
|
|
"execution": "not run"
|
|
},
|
|
{
|
|
"path": "tests/s2/test_mana_power_projection.gd",
|
|
"sha256": "e3020534b084b57a8b773967931fd2be34a1de878b4940c8805b99592bbbc46f",
|
|
"execution": "not run"
|
|
},
|
|
{
|
|
"path": "tests/staff/test_rescue_elevator.gd",
|
|
"sha256": "c32cce5010eb0167c261b767cac1371baa3ca731368de47ff878a5852ed9f840",
|
|
"execution": "not run"
|
|
},
|
|
{
|
|
"path": "tests/staff/test_staff_rescue.gd",
|
|
"sha256": "8d8c02444c35b2c41c6db42ac0195dd614835541235cd92641ca9b220f59c44c",
|
|
"execution": "not run"
|
|
},
|
|
{
|
|
"path": "tests/supply/test_supply_logistics_bridge.gd",
|
|
"sha256": "2d6ed12048b9f17e2f44208bb386d9e06eefa7962e21507fc8e63500aa66052e",
|
|
"execution": "not run"
|
|
},
|
|
{
|
|
"path": "tests/supply/test_supply_management_service.gd",
|
|
"sha256": "9b60643a827daf314f807cdc7105f227414a906e32481175451ceddd0b00eb95",
|
|
"execution": "not run"
|
|
},
|
|
{
|
|
"path": "tests/transport/test_elevator_service.gd",
|
|
"sha256": "e70de48a8e6f7928690d0495110451c26d9dec180c2dd7033c793155f099c2f6",
|
|
"execution": "not run"
|
|
},
|
|
{
|
|
"path": "tests/transport/test_runtime_transport.gd",
|
|
"sha256": "ec6f8fa8e8f2a76a6f6214b4ee84861aba1bb13845a342c5126905b01f428a15",
|
|
"execution": "not run"
|
|
},
|
|
{
|
|
"path": "tests/transport/test_transport_boundaries.gd",
|
|
"sha256": "1a5a647c45ffab674a8f58b8bc72692c5a30090c9b99a1e6f67194bbe3586b34",
|
|
"execution": "not run"
|
|
},
|
|
{
|
|
"path": "tests/transport/test_transport_save.gd",
|
|
"sha256": "d4b41a71f2ddc43b1beb14ba8548541ce4875b6640815440e0c14a183c8ddfea",
|
|
"execution": "not run"
|
|
},
|
|
{
|
|
"path": "tests/ui/test_cleaning_gameplay.gd",
|
|
"sha256": "38593cd17829611dd34561ec46a0d746492a6cffebc35a659d49fe69de4234ac",
|
|
"execution": "not run"
|
|
},
|
|
{
|
|
"path": "tests/ui/test_staff_rescue.gd",
|
|
"sha256": "928179383bda38adf9211065b644a37bed3f8128be42b7e7a0fba9a505a40b9e",
|
|
"execution": "not run"
|
|
},
|
|
{
|
|
"path": "Makefile",
|
|
"sha256": "a9248620f6d3ea9de293fbbe29e0c7155af4bd844f8a91afcc989a471e9f268e",
|
|
"execution": "recipes inspected only"
|
|
}
|
|
]
|
|
}
|