Files

79 lines
10 KiB
JSON

{
"id": "P08-02",
"title": "旧配置の安全な変更",
"work": "混合建設、占有変更、役者の実位置、救護・物流・EVをまとめて移行する。",
"acceptance": "重複、孤立、消失がない。解消不能時は元配置とセーブを保つ。",
"counting_scope": "Existing one unit among30 packages/88delivery units. No partial credit; 6 decomposed facets are not new delivery units or game atomic denominator.",
"original_authority": "docs/traceability/original/BASELINE.txt",
"approved_plan": "docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md",
"accepted_audit_input": "docs/spec/inputs/p08-02/historical-inputs.json",
"accepted_audit_input_raw_sha256": "b49fdcd1fa99666edb682d9bb34707d68722310b68df068e5132d339bac5464b",
"required_conditions": [
{
"id": "mixed_construction",
"text": "複数の旧寸法建設中ジョブと完成施設を同一batchで実移行し、進捗・支払・予約・完成IDを保全する。"
},
{
"id": "occupancy_change",
"text": "追加/解放セル、support、world占有とconstruction所有を一致させ、重複と孤立を残さない。"
},
{
"id": "actual_actor_positions",
"text": "移動途中の客/職員の実位置・movement credit・経路/予約・所持資金等を許可された形状/明示route変更以外で変えない。"
},
{
"id": "combined_rescue_logistics_ev",
"text": "同一保存/移行batchに実救護患者/搬送者/目的地、物流荷物/予約/要求、EV乗客/待機/旅程を含め、全IDと相互参照・数量・元要求の一回完了を保全する。"
},
{
"id": "no_overlap_orphan_loss",
"text": "同一current版のOperations ON/OFFと別PID保存再開で全状態/全イベントと対象数/参照を照合し、重複・孤立・消失・二重効果がない。"
},
{
"id": "unsolvable_preservation",
"text": "後段の解消不能batchを拒否し、先行候補の部分適用なし。現live・原配置/正式save全member・既存migration backup全memberを保持し、別PIDで元の動作を継続できる。"
}
],
"current_source_pins": {
"autoload/simulation_runtime.gd": "d52a995ae715542bbc550f68d35889540658275d12e04ae0b21ac276f5843f39",
"scripts/construction/facility_resize_preview.gd": "d0e8d772a648a297ee0a4625206b073be2668b32c7dba2575ba1295f5b1866ac",
"scripts/construction/facility_resize_routes.gd": "05d4aedcc930160eafc2945711f867744f63f5f391e4759f8e2de9211b968201",
"scripts/core/save_service.gd": "0c158d3e6ee693b89814bf232c954e4757c5ff91dc9df03bb322c3e593e73617",
"scripts/world/path_service.gd": "447135729a1106639a6eee6754af3195c8a8b458ca26980ae91fa39d80dcfbd4",
"scenes/main/main.gd": "41df8857f9658c17b01361350979caa942b9326c82c9f176517972c2a9692f55",
"tools/run_all_tests.py": "320ca668732b4ff72fc4449998af2327d4e5c527b06896740806aaf0487282b4",
"tools/regression/owned_outer.py": "c2e3483b76db1a3ff940f23f88ea0083fc78736e874ebcdb385d766dde8866e7",
"tools/strict_test_markers.py": "1cb16da6c5c00c1a0610a3fc04beb97d1eb3ba492fb1bc8fe5b621d2b7bc0406",
"tests/s1/test_dimension_batch_save.gd": "ca397c0457996bab637e8be5217b7db2c14579a1b0df54434b4000a69e793bbf",
"tests/ui/test_dimension_migration_ui.gd": "0f0cec88ea8bf5fccdcd5ade02fab70b7dc71135132048cd10db17ad9d964c0d"
},
"evidence_requirements": [
"Exact final submitted source map and input/config/environment (real native PID/version and private guarded profiles), bounded raw logs and strict completion markers. Historical7 cases had29 source differences and OperationsOFF; cannot become current combined PASS solely by hashes or function matching.",
"One coherent mixed fixture includes all6 facets; actual Runtime methods, real persisted actors/jobs/items/transport. Exercise both OperationsON/OFF, positive migration and late refusal, actual formal save/backup and separate writer/reader PID continuation. Full typed states and uncapped events preserved; only explicitly enumerated approved geometry/route changes and pre-existing justified IO schema difference may differ, never discard unexplained fields/events.",
"Normal production migration menu preview/cancel/confirm and changed-source rejection at samecandidate: Root collects real OS inputs/screens/model/formal state; signal-emitted UI test is only handler evidence. Root stage can load controlled oldsave; do not label injected setup as natural production.",
"Existing current local UI/dimension batch, save/restoration/path/ownership suites are reused. Required final full regression after final changes batch; only repeat if actual changes/failures require. Full regression and tests counts never replace all6 acceptance.",
"All original conditions, separate independent Opus review, main integration/current applicable final verification and ledger reflection are required before unit closure. Windows coverage stays explicitly pending where applicable, no inference from Mac native/PCK."
],
"implementation_outputs": [
"docs/plans/original-completion-2026-10-02/execution/p08-02/CONDITION_MATRIX.md",
"docs/plans/original-completion-2026-10-02/execution/p08-02/implementation.json",
"tests/s1/test_p08_combined_migration.gd",
"tests/fixtures/p08-02/",
"tools/run_p08_mixed_migration.py",
"tools/check_p08_migration_evidence.py",
"tools/test_p08_migration_evidence.py"
],
"worker_instructions": [
"Read exact work and acceptance. Preserve existing successful migration code and supplied21 historical fixture/driver files. Historicaldrivers have frozen external paths/oldsourcecounts; use as design references, never run them as current. All needed source is inside this frozenrepo. No secondworker, provider switch, git writes, Runner or cap/policy edits.",
"Authorized implementation is new bounded mixed fixture/driver/evidence checker/docs. No runtime/UI production edits in initial scope. If actual invariant defect demonstrated, submit concrete minimal proposed patch and failing evidence without silently narrowing acceptance; originalunit stays incomplete until requiredfix and allacceptance.",
"Reuse source from docs/spec/inputs/p08-02/. Create composable writer and reader under tests/fixtures/p08-02 with new standalone test_p08_combined_migration suite. Actual mixed state must include active guest route, realstaff/rescue/foodcargo/EV requests and oldsize paidjob plus completed facility in sameworld. Use existing domain methods and fixture setup, no invented production coefficients. Controlled fixture values/seeds explicitly diagnostic inputs.",
"Use existing tools/run_all_tests.py execute_phase/profile guard/owned_outer protocol for bounded host collection, all current-source CoW and guarded fresh profiles, captured realprocess cleanup, strictmarkers, exactworld and formal package members. Driver receives --project-root and --output absolute args; no fixed outsideworktree input paths or1299 admission constant. Root invokes --collect with actual finalcommit; worker need not runGodot/fullregression. New finite fixtures standalone so final fullroster can run without external Root artifact paths. Do not edit tools/run_all_tests.py or existing suite policy. Add exactly one new test_p08_combined_migration marker entry to docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json, preserving every existing entry. Driver owns only newfixture phase markers and customcase traces. Public added suite must run independently of external artifacts; this suite addition is a test, not a new delivery unit.",
"Checker --verify-only reads BUILD_OUTPUT_DIR/p08-evidence/index.json. Root copies actual evidence into allocateddir before formalvalidation. Index has exact source map, fixture/config inputs, phase receipts, rawcaptured native lifecycle, strictlogs, whole typedstate/formal-member hashes and every6condition attribution, normalOS proof and final regression receipt. Verify source and bound artifact content, actual distinctPID/ended/exit, not self-reported PASS booleans. Missing/stale/malformed/partialcase must list deficits and non0; technical artifact integrity cannot claim original unit accepted.",
"Review Root native index shape from existing native receipts; define newindex explicitly in docs with machine-readable example fixture rather than invent opaque proof. Preserve read-only fullcontent mapping and logged refusals. Anybyte-copy operation verifies rawSHA/content and does not delete earlierproofs. Root host collection and formalchecker are different; no sandboxrights expansion or paidAPI.",
"Meaningful wholechecker positives and negatives: pure isolated temporary proof fixture exercises check() through exact schema/source/phase/file links, then realindex mutations/deletions for duplicateactor, orphanoccupancy, patient/cargo/EV loss, partialbatch, overwrittenoriginal/backup, unequal crossPID state, missingON, wrong/stale source and fakeOSsignals. Positive must be reachable; do not replace full proof with allbooltrue reducer or alwaysfail readiness. Negativecorruptdata in disposable fixtures only. Avoid implementation-mirroring trivial tests; tests prove original invariants/gatefalseacceptance.",
"Python stdlib, python -B/ast.parse, bounded local checker tests only in worker. Native/fullregression/OS collection is Root responsibility after formal code submission. Read specSHA as gitshow stdout.strip UTF8, distinguish raw trailingnewline. Final full reviewerpacket measurement belongs Root on actualsubmittedSHA. Never refuse code submission solely because Root references/native/OS/finalpacket not yet collected.",
"Return genuine status submitted when bounded implemented code is ready forRoot verification, listing every pending originalcondition, actual check/failure and exact productfix proposal if any. Pending native/OS/fullregression/independentreview is not originalcompleted and not a reason to manufacture missingproof or change response to blocked. If code cannot be implemented state precisecause instead; do not selfclaimtests/sourceacceptance.",
"Keep scope focused. No manavalues, D05/D07/D08/D09 semantic choices, new assets, economicprices, storycontent, original30/88 or source baseline rewriting. Preserve unique-character protection/defaultplayer and all historicalfailedlogs."
]
}