Files
TheTree_mock/docs/plans/original-completion-2026-10-02/execution/p05-02/REPAIR_02.md
T

7.8 KiB
Raw Blame History

P05-02 修正2: 実際の経路での表裏の資金・補填・利息・税の滞納と、日次の補填の定義

  • S 37deb6e877e60e8f19ae4fbc64382880cf7f75bb の whole-unit の独立レビュー(r02)は changes_requested(指摘 1 high・2 medium・3 low)。正規の受付で repair_pending、commander の修正2(COMMANDER_REPAIR_PLAN_P05_02_R02.md、訂正の追記 ..._CORRECTION_01.md)。S 37deb6e までの native・全 roster・validation・review の記録と失敗は全て保持し、新しい S に流用しない。原本は 23/88 のまま。

試験(tests/economy/test_p05_funds_runtime.gd に足した場面)

  • 指摘1(F1・F5)_test_actual_service_funds: Runtime で、表の施設(massage_room、通常の雇用 staff_petra を DAY の配置)と、登録済みの裏の札の施設(adult_private_room、地下。rank 2・掘削・客用の通路と階段・職員用の通路と階段を通常の command で作る)を建てて開ける。自然に来る客が自分でサービスを選び、地下の個室へは地上から歩いて降りて、完了させる(客を置く fixture は使わない)。00:00 の締めで、massage_room の SERVICE_CASH_SWEEP は全て PLAYER_CASH、adult_private_room の分は全て BACK_CASH(他の行き先 0)、個室の支払が自然に来た客の財布からであること、funds.revenue_front・revenue_back がその日の行き先ごとの合計と一致すること、売上が表+裏であること、世界樹ランク税が両方の売上の合計の 10%(切り捨て)で払われたこと、裏金の残高と増減がその日の裏の売上と一致することを確かめる。行き先の選択を元に戻すとこの場面は失敗する。
  • 指摘2(F2):
    • 人件費: 同じ場面の2日目、締めの前に表金を 5 に下げ(台帳の fixture。下げるだけ)、本物の締めが実際の雇用の給与・維持費・税を払う。funds.back_top_up が(給与+維持費+税−5)、給与の未払い 0、表金 0、裏金がその分減ることを確かめる。
    • 自動の仕入れ _test_operation_top_ups_and_day_total: 倉庫に自動の仕入れ(10 個)を設定し、表金 2・裏金 1,000 で時計を進める。advance_auto_purchases の本物の注文が 30 で買い、領収(SupplyAutoPurchasePlans.receipt_from_ledger)が検証され、28 が裏金からの補填(鍵 finance.back_top_up.purchase.<注文の鍵>)であることを確かめる。
    • 旧暦の 00:00 の維持費 _test_legacy_midnight_top_up: tests/mvp/test_upkeep_legacy_midnight.gd と同じ作り方の旧暦の save(締めが 06:00)を読み、表金 0・裏金 500 で 00:00 を越える。00:00 の維持費 1 が裏金から補填され(鍵 finance.back_top_up.midnight.1440)、滞納 0、06:00 の締めの report がその補填を数えることを確かめる。
  • 指摘3(F4): 同じ _test_operation_top_ups_and_day_total で、1,000 を借り(台帳の fixture。借入の発生源は無い)、返済の command(repay_loan_principal)で 200 を返す(表金 0 なので裏金で払う)。その日の締めの利息が返済の後の残高 800 の 1% の 8 で、払われることを確かめる。
  • 指摘4(F3)_test_tax_arrears_next_day: 売上 200 の日に表裏の資金が無く、税 20 が未払いのまま繰り越す(日次の滞納と Operations の report に出る)。翌日の締めで古い 20 と新しい 10 を払い、税の未払いが 0 になることを確かめる。
  • 各場面の最後に save の写しから戻し、そのまま一致することを確かめる。

日次の補填の定義(指摘5)と、保存済みの report の互換

  • funds.back_top_up は、その営業日に記帳された全ての補填(操作の時の仕入れ・自動の仕入れ・返済、旧暦の 00:00 の維持費、締めの補填)の合計にした(autoload/simulation_runtime.gd の _daily_fund_report)。営業日の区切りは売上の集計と同じ(period_start 以上・締めの分より前)。締めの補填は鍵で数え、前日の締めの補填(period_start の分に記帳)は数えない。帳簿の画面の締めの欄「裏金から表金へ補填」はこの値を出す。
  • report に定義の版 fund_report_version: 2 を入れた。版の無い report は、S 7808ca7・37deb6e(統合されていない)で保存された、締めの補填だけを数えた定義(版1)。読込の照合(settlement.funds と台帳から作り直した report の比較)は、保存された report が書かれた定義で比べる。版の無い report は版1の式でだけ受け、新しい式の値を持つ版の無い report、版2の印で締めの分だけの値の report、知らない版の report は拒む(緩めない)。A12(資金を分ける前の save)は report を持たないので、今までどおり(帳簿の記帳が無いことを確かめる)。版1の report は書かれた時のまま残し、画面は「(締めの時の分のみ)」と出す。
  • 試験: 同じ日に注文・返済・締めの3つの補填がある save から、版1の形の report(印を外し、締めの分の値)を作って読めること、その値と表示が残ること、上の3つの不正な形が拒まれ何も変えないことを確かめる。

開示(指摘6 と、修正2で分かったこと)

  • 今のゲームで裏金に入る売上の発生源は、登録済みの施設では adult_private_room だけ。black_market(trade。原子要件 income_trade のユニット売却に当たる)と vip_private_salon は拡張の定義で既定では登録されない。カジノ・脅迫金・ユニット売却の発生源は無い。原子要件 income_casino・income_blackmail・income_trade は未達のままで、この開示で完了にはしない。
  • 定義が引けない施設の売上は、既存の挙動どおり表金に入る(裏の札の判定ができないため。_apply_service_transaction の注記)。定義の無い施設を扱う既存の経路は変えない。
  • F1 の実際の売上の経路の試験で、adult_private_room の担当(役割 service_attendant)は Runtime の register_staff の command で登録した職員(fixture の職員。給与 0 の FREE_HIRE)。通常の雇用の候補にこの役割は無く、_staff_role_matches_facility にも代わりの役割は無いので、通常の Main(雇用と配置の画面)ではこの施設に職員を置けず、裏の売上を得られない。これは原 work の P09・P11 の current_paid_role_compatibility_checkpoint.remaining_paid_role(「adult_private_room/service_attendant has no canonical paid hire candidate」、2026-10-08、work_packages.json)に残っている原残件で、通常の Main での全施設の営業は未達。P05-02 では職員の候補・役割・給与・定義を作らず、P09・P11 の残件はこの開示で閉じない。
  • adult_private_room の定義の unlock_rank 3・research_requirements(discreet_hospitality)・opening_schedule(夜だけ)は、今の Runtime では建設や営業の条件として使われていない(定義の検査だけ)。試験は rank 2(地下の開放)で建て、夜に営業させた。P05-02 では変えない。
  • 補填の元にした表金の減少(台帳の fixture)と借入(台帳の fixture)は、残高を作るだけで、確かめる支払・補填・利息・税は本物の経路。

変えていないもの

  • 登録の argv、tools/run_p05_funds_tests.py、狭い roster(8 suites+再開の2段、実 10 段)、試験の既存の期待値(EXPECTATION_CHANGES.json に足すものは無い)。