diff --git a/docs/plans/original-completion-2026-10-02/execution/p06-02/CURRENT_AUDIT.md b/docs/plans/original-completion-2026-10-02/execution/p06-02/CURRENT_AUDIT.md new file mode 100644 index 0000000..d805802 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p06-02/CURRENT_AUDIT.md @@ -0,0 +1,225 @@ +# P06-02 全館停止の統合 — 監査継続 + +対象: P06-02-AUDIT-CONTINUE / P06-02-AUDIT。製品変更なし、原88加算0、unit_accepted=false。 +source_commit: `d9262a71f45b39c53115a4878f4c6a2c861dfac5`。作業HEAD: `0eeff92e81f3706a7e85237a0f2afbb34bebcd38`。両版の scripts/autoload/tests/data/scenes 差分は空。 +失敗run `2faabaca67d24dfa8df9e8f2543fba0a` の文書を継続。旧タスク再起動・git書込み・Runner操作・試験実行なし。 + +## 現行ソース + +実装は未検証5件、部分実装1件、通常warp未実装1件。コードや試験定義の存在をverifiedへ昇格しない。admissionのpartialは統合範囲の未確定を含み、直接spawnや受付電力ゲートの追加を承認する意味ではない。 +詳細なSHA256・関数・行・残条件は同梱current-audit.jsonを参照。 + +### active_service — implemented_unverified + +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. + +**実行順序:** 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. + +**保存・試験定義:** 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. + +**残条件:** +- 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. + +### elevator — implemented_unverified + +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. + +**実行順序:** 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. + +**保存・試験定義:** 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. + +**残条件:** +- 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. + +### warp — missing + +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. + +**実行順序:** N/A (no warp handler registered in the tick phase order). + +**保存・試験定義:** None. P14-02 warp gap audit (work_packages P14-02) records ワープ定義0 and lists construction/routing/cost/stop/save as remaining gaps. + +**残条件:** +- 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. + +### logistics — implemented_unverified + +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. + +**実行順序:** MANA (_advance_mana:10716) before LOGISTICS (_advance_inventory_and_logistics -> supply_logistics_bridge.tick:43 -> _dispatch:171) before FACILITY_COMPLETION (kitchen _production_state:237). + +**保存・試験定義:** 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. + +**残条件:** +- 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. + +### rescue — implemented_unverified + +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. + +**実行順序:** 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. + +**保存・試験定義:** 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. + +**残条件:** +- 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. + +### cleaning — implemented_unverified + +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. + +**実行順序:** 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. + +**保存・試験定義:** 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. + +**残条件:** +- 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. + +### admission — partial + +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. + +**実行順序:** 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. + +**保存・試験定義:** 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. + +**残条件:** +- 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. + +## 旧3証拠の適用性 + +3件ともreusable=false。旧結果は当時の限定証拠であり、現行受入へ転用しない。 + +### p06-rescue-power-final-root-review-r01 + +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. + +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. + +### p06-current-supply-outage-root-review-r01 + +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. + +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. + +### p06-active-service-outage-root-review-r01 + +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. + +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. + +物流・利用中サービスの旧ソースマップと現行の比較は各9ファイル相違。旧版ラベルやsummaryだけでの判定を取り消し、JSONに旧/現SHAを保存した。rescueの1224-source receiptには対応する製品ソースマップがなく、他2件の1299証拠と混同しない。外部ホストの元パスにはアクセスしていない。 + +## 依存・次バッチ + +- P14 / P14-02: 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. +- P06-01: 有限マナ供給の契約 (供給/蓄積/消費・世界樹初期源) が未承認。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. +- P04: 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. +- D04 / D05: Mana reserve policy and warp cost timing remain unapproved (D04 values, D05 update order / cost point). + +- 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. + +清掃対象電力・医務室consumer登録・直接spawnゲートの必要性は未確定。既存のglobal reserve=0停止と区別し、仕様を補完しない。 + +- 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. + +## 試験argv(Runner向け・未実行) + +MakefileのGODOT既定値godotを展開。各行は独立した完全なargv。 + +### cleaning / mana + +Exact registered Makefile recipes, with GODOT default godot (Makefile:1); not executed. Unregistered scripts are listed as source references only. + +```sh +godot --headless --path . --script tests/environment/test_cleaning_access.gd +godot --headless --path . --script tests/ui/test_cleaning_gameplay.gd +godot --headless --path . --script tests/environment/test_runtime_cleanliness.gd +godot --headless --path . --script res://tests/environment/test_facility_cleanliness.gd +godot --headless --path . --script res://tests/s2/test_mana_network_service.gd +godot --headless --path . --script res://tests/s2/test_facility_service.gd +``` + +### active_service / mana + +Exact registered Makefile recipes, with GODOT default godot (Makefile:1); not executed. Unregistered scripts are listed as source references only. + +```sh +godot --headless --path . --script res://tests/s2/test_facility_service.gd +godot --headless --path . --script res://tests/s2/test_mana_network_service.gd +``` + +未登録の参照ソース: tests/s2/test_mana_power_projection.gd + +### logistics / kitchen + +Exact registered Makefile recipes, with GODOT default godot (Makefile:1); not executed. Unregistered scripts are listed as source references only. + +```sh +godot --headless --path . --script res://tests/s2/test_kitchen_production.gd +godot --headless --path . --script res://tests/supply/test_supply_logistics_bridge.gd +godot --headless --path . --script res://tests/supply/test_supply_management_service.gd +``` + +### elevator + +Exact registered Makefile recipes, with GODOT default godot (Makefile:1); not executed. Unregistered scripts are listed as source references only. + +```sh +godot --headless --path . --script res://tests/transport/test_elevator_service.gd +godot --headless --path . --script res://tests/transport/test_transport_boundaries.gd +godot --headless --path . --script res://tests/transport/test_transport_save.gd +godot --headless --path . --script res://tests/transport/test_runtime_transport.gd +``` + +### rescue + +Exact registered Makefile recipes, with GODOT default godot (Makefile:1); not executed. Unregistered scripts are listed as source references only. + +```sh +godot --headless --path . --script res://tests/staff/test_rescue_elevator.gd +godot --headless --path . --script res://tests/staff/test_staff_rescue.gd +godot --headless --path . --script res://tests/ui/test_staff_rescue.gd +``` + +### admission + +No dedicated admission-outage command established in this inspection; do not interpret as proof that all arrival tests are absent. + +## 横断条件・提出範囲 + +- 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. + +更新はこのディレクトリの2文書のみ。SHA照合・圧縮証拠読取は静的監査であり、正式audit-structureやゲーム試験は未実行。Runnerによる検証・独立レビュー待ち。 + +## 継続時の訂正記録 + +保持済み草稿の試験不存在主張を、実在する停電試験定義に基づき訂正。入館のMANA先行という記述をTIME_BOUNDARIES先行へ訂正。旧物流・利用中証拠のraw/source-map未確認という記述は、追跡済みgzip入力の読取結果で更新。清掃・救護のglobal停止実装、P14依存、未承認マナ設定、受入加算0は維持。 diff --git a/docs/plans/original-completion-2026-10-02/execution/p06-02/TASK_INSTRUCTIONS.md b/docs/plans/original-completion-2026-10-02/execution/p06-02/TASK_INSTRUCTIONS.md new file mode 100644 index 0000000..657ad08 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p06-02/TASK_INSTRUCTIONS.md @@ -0,0 +1,34 @@ +# P06-02 current audit task (not unit completion) + +Actual Opus commander selected P06-02 after P04 completion. Audit only; do not edit product, rules, values or existing tests. Source base d9262a71f45b39c53115a4878f4c6a2c861dfac5. Original 30/88, completed17; this audit adds zero. Read current work_packages P06-02 and P04 order-audit. Read build/p06-history for exact copied historical review records. No source/test implementation is requested. + +Write current-audit.json and CURRENT_AUDIT.md in this directory. JSON schema: +source_commit: exact base above; unit_accepted:false; domains: exactly seven objects with domain in active_service,elevator,warp,logistics,rescue,cleaning,admission. Each includes status (implemented_unverified/partial/missing/verified), source_refs [{path: repository-relative file,sha256: actual SHA256,line/function evidence}], remaining_conditions (nonempty array), stop_condition, call_order, save_restart_evidence. Cite actual source, distinguish missing implementation from missing proof. Never mark verified from code alone. A missing domain still cites source inspected to establish absence, not an invented filename. + +historical_evidence: exactly three entries for the supplied rescue-power, supply-outage, active-service-outage reviews; each includes reusable:boolean, basis: factual explanation, prior_source_pins, current_differences, raw_evidence_available. Unavailable historical raw/source maps mean reuse not established. Inspect nested paths and available tracked evidence; do not infer unchanged runtime from only review text. Sources have changed since old1299; expected reuse may be false. Make no gameplay execution claims. Include dependencies, unresolved_policy, recommended_next_batch and exact relevant test paths/argv from repository (do not invent runnable commands). + +Original scope: all seven domains stop consistently, no unconditional sales/production in outage, no lost passengers/cargo. Preserve P14 warp dependency and unapproved mana settings. Identify cleaning/admission/emergency alighting/natural outage gaps. Root provides historical receipts in build only; do not commit copied build inputs. No full regression/native engines in this audit. Runner handles registered structure validation; independent Opus reviews content separately. Do not run git commit; Runner submits. + +## Actual Opus repair direction (repair 1) + +Same worker (opencode, deepseek-v4.1-flash-free), one bounded fix to the kept doc inside allowed_paths. (1) Make the domain totals match the table: 4 implemented_unverified (active_service/elevator/logistics/rescue), 2 partial (cleaning/admission), 1 missing (warp). (2) In next_batch, change the cleaning power gate, infirmary consumer and direct-spawn mana gate from required gaps to 'basis/decision not yet established', and list the evidence needed. Keep the P14 warp dependency and unapproved mana as they are. (3) Record old raw evidence as unconfirmed, not absent; reuse not established. (4) Re-check only the needed references, using Python to print only the function ranges and JSON fields (avoids truncation) and Path.exists for artifacts. Record missing items as gaps, and do not hide real errors. No product changes, no reimplementation, no commit. Then Runner audit-structure validation, then an independent Opus review. Acceptance stays 0/1. + +Retain current-audit.json and CURRENT_AUDIT.md. Do not redo the audit. Read only these outputs and needed source excerpts with Python via shell; OpenCode read/grep tool pagination sets truncated metadata even for planned excerpts, which the current Runner rejects. Use explicit existing paths, keep outputs focused, record genuine missing evidence, never suppress actual command failures. Do not alter this instruction or product files. + + +## Recorded Opus repair 2 (2026-10-19) +Blocked by an OpenCode tool failure/truncation (repairs=1). There is no spec gap. The retained W docs (current-audit.json, CURRENT_AUDIT.md) are already present and almost complete, so repair them in place. Do not re-audit, do not change product code, keep worker=opencode/deepseek-v4.1-flash-free, and stay within allowed_paths docs/plans/original-completion-2026-10-02/execution/p06-02/**. REPAIR1_RETAINED.json and p06-02-root-original-scope-20261019.json are not visible in this worktree's build/ (only build/p06-history/* exists). Runner must pass them to the worker read-only, and nobody retries a previously denied path. + +REPAIR (minimal edits to current-audit.json, then the same edits in CURRENT_AUDIT.md): +(1) Root clarification. A missing maintenance_mana or consumer registration does not prove that the global stop is missing. Reserve 0 already feeds power_available (mana_power_projection.apply:18), then facility_instance.evaluate_state:199-203/232-236, then the operation_state gates in cleaning can_dispatch:17/task_can_work:22 and rescue :13122/:13067. In rescue and cleaning, reword remaining_conditions/stop_condition so the global reserve-0 stop is shown as implemented_unverified. Per-network consumer registration and the cleaning target-power gate move to 'basis/decision not established' (already in recommended_next_batch), not proven gaps. Re-evaluate cleaning status 'partial' on that basis and state the reason. No local outage policy and no mana values may be invented. +(2) Old permission denial. In the supply-outage and active-service-outage entries, remove the 're-verification found the referenced paths present on this host (Path.exists=true)' claims and the absolute /Users/.../とりにく工房ゲーム制作部 paths. Record the earlier access denial as a failure. raw_evidence_available stays 'unconfirmed'/not established and reusable stays false. Do not access those paths. +(3) Fix the typo 'Natual'. Keep source_commit d9262a7…, unit_accepted:false, exactly 7 domains and 3 historical entries, original credit +0 (17/88 formal), the P14-02 warp dependency, and the unapproved P06-01 finite-mana policy. Add no gameplay execution claims. +(4) The worker's final terminal output must be exactly the expected JSON object, with no prose wrapper. + +RUN after repair: Runner-only registered validation 'audit-structure'. On PASS, independent Opus claude-opus-5-5 content review, then Runner formal submission of the retained docs. No full regression or native engines. All seven original domains still need gameplay acceptance afterwards. Quota or a confirmed provider error gets exactly one switch to Antigravity claude-opus-5-5-high in the same role. Any other failure stops; no API fallback or downgrade. + +Read-only inputs are under build/p06-root-readonly/. + + +## Recorded Opus repair 3 +確認済み: 保持されたcurrent-audit.json/CURRENT_AUDIT.mdにrepair2の(1)〜(3)はすでに反映済み。rescue/cleaningはglobal reserve 0の停止連鎖をimplemented_unverifiedとして記載し、consumer登録と対象電力ゲートはbasis/decision未確立に移した。cleaningの再評価理由も記載済みで、集計はimplemented_unverified 5/partial 1/missing 1。Path.exists=trueの主張と絶対パスは削除し、拒否はaccess failureとして記録、raw=unconfirmed、reusable=false。Natualの誤字は消えている。source_commit d9262a7、unit_accepted:false、7ドメイン/3履歴、P14-02依存、未承認のP06-01マナ、原17/88(+0)も保持されている。MD:110はrepair1の履歴ログとして残し、repair2ログ:121-124で再分類を説明しているので矛盾しない。残る作業は、通常のsubmit gateを通る正規runを1本作ることだけ。失敗した旧run04fc4a27はfailedのまま残し、成功への書換えや手動での候補作成はしない。Runner外で受け入れる別経路はなく、candidate=nullの状態からはrequest-repairが正規の手順になる。修理指示(同じworker opencode/deepseek-v4.1-flash-free、allowed_paths内のみ): (a)再監査と文書の書き直しはしない。(b)shellではheredoc、`<<`、一時ファイル作成を一切使わない。必要な読取と確認は1行の`python3 -c "..."`だけで行う。対象はworktree内の既存パスに限り、既存のbuild/p06-root-readonly/とbuild/p06-history/は読取専用で使う。拒否済みの外部ホストツリーにはアクセスしない。(c)確認範囲は、両JSONがparseできること、7ドメイン/3履歴/必須キーが揃っていること、引用中の各source sha256(hashlib)が実ファイルと一致することに限る。不一致があった場合だけ該当フィールドを直し、MDにも同じ修正を入れる。一致すれば無変更でよい。(d)コマンドが失敗したら隠さず報告して停止する。(e)最終出力はwrapperなしの期待JSONだけにする。commitはしない。権限拡大・denial gate緩和・有料fallbackもなし。provider quotaか確定したproviderエラーのときだけ、同じ役割のままAntigravity claude-opus-5-5-highへ1回切り替える。それ以外の失敗では停止する。その後の流れ: Runnerが登録済みのaudit-structure検証を行い、PASSなら独立したOpus claude-opus-5-5セッションで内容をレビューし、最後にRunnerが正式提出する。full regression/native試験は行わない。受入は0/1のままで、7ドメインのgameplay受入は今後も残る。 \ No newline at end of file diff --git a/docs/plans/original-completion-2026-10-02/execution/p06-02/current-audit.json b/docs/plans/original-completion-2026-10-02/execution/p06-02/current-audit.json new file mode 100644 index 0000000..669e514 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p06-02/current-audit.json @@ -0,0 +1,1005 @@ +{ + "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" + } + ] +}