# P08-02 retained implementation condition matrix Status: submitted for Root verification; original P08-02 acceptance remains pending. Frozen spec: `docs/spec/acceptance/P08-02.json`, stripped UTF-8 SHA-256 `19f02bb7912a4d7354e565186f02366fc1d4dd698468d26142e8204fd14ebfb0`. The raw file has a trailing newline. The six rows are facets of one existing unit, not six units. All rows use `tests/fixtures/p08-02/mixed_world.gd` through `writer.gd` and `reader.gd`, and the standalone `tests/s1/test_p08_combined_migration.gd`. Driver phases are `off-positive`, `off-refusal`, `on-positive`, `on-refusal`, each with `-writer` then `-reader`; import/parse precede them. | Required condition | Retained fixture/test coverage | Driver phase | Checker rule (`tools/check_p08_migration_evidence.py`) | Negative mutation (`tools/test_p08_migration_evidence.py`) | Pending evidence | |---|---|---|---|---|---| | mixed_construction | `setup`: paid zero-progress old-size premium job, progressing premium job, completed dorm in the same save; `run`: full progress/payment/reservation/completion fields | All four pairs; positive applies batch, refusal continues old shape | `semantics` checks starting/progressing paid jobs, completed dorm and diagnostic budget; `case_gate` permits only explicit typed geometry deltas and requires four-cell positive jobs | `missing_start_stage`, `resource_delta_mismatch`, `partial_batch`; unapproved typed changes are compared without dropping fields | Native runtime/save and distinct-PID continuation; normal OS flow; Root final verification pending | | occupancy_change | `invariant`: restore validation of ownership/support; migrated occupied/reserved cells captured in whole snapshots | All four pairs | `semantics`: disjoint cells, exact construction/world ownership and operational facility cells; `GEOMETRY` finite allowlist | `orphan_occupancy` | Native added/released cells and support validation; OS model/formal records; Root review pending | | actual_actor_positions | Mid-route walker, fractional credit, real staff/rescue/cargo and EV positions; no route changes approved | All four pairs, checkpoint and minutes 001–160 | `typed_differences` forbids actor/credit/route/money deltas; full typed and raw Variant writer/reader equality | `duplicate_actor`, `unequal_cross_pid` | Native actual positions/credit/routes and cross-PID equality; OS state captures; Root review pending | | combined_rescue_logistics_ev | `setup`: actual in-flight rescue, purchased carried food with original requests, four EV boarded plus one waiting; `run`: patient treated, original cargo completed, each EV arrival once | All four pairs and uncapped events | `semantics`: IDs, endpoints, reservations and EV actors; `case_gate`: final patient health, original cargo completion and exactly one arrival per original EV request | `lost_patient`, `lost_cargo`, `lost_ev` | Native coherent same-save mixed state and continuation; OS save/model attribution; Root review pending | | no_overlap_orphan_loss | Whole typed snapshots/raw Variant files and uncapped events; runtime/cargo invariants | ON and OFF positive/refusal pairs | Ordered four-case roster, actual mode, distinct lifecycle PIDs, strict markers, all 162 labels compared, semantic ownership/reference checks | `duplicate_actor`, `orphan_occupancy`, `unequal_cross_pid`, `missing_on`, `missing_phase`, `duplicate_pid`, `wrong_source`, `stale_source` | Native ON/OFF and separate writer/reader PIDs; normal-menu OS proof; final regression and Root verification pending | | unsolvable_preservation | Real pre-existing migration backup, late maintenance obstruction at dorm, independently migratable first job; refusal rollback and unchanged live/formal/backup | `off-refusal`, `on-refusal` writer/reader | Live equality; original equals refusal checkpoint; before/after member hash maps equal; raw four-member original/result/backup hashes bound | `partial_batch`, `overwritten_original`, `overwritten_backup` | Native late refusal and separate-PID original continuation; OS cancel/changed-source preservation; Root review pending | The standalone suite executes both roles in one process and does not establish distinct-PID proof. Only the Root collector launches separate phases through existing `execute_phase`/owned-outer and fresh guarded profiles. Exactly one public suite marker exists: `P08 combined migration: checks, failures`. The driver privately owns the writer/reader marker templates; no second public entry is added. Local Python tests are synthetic checker fixtures, including synthetic lifecycle/OS/regression records; their success establishes checker reachability and rejection tests only. Native Godot/OS execution, normal production menu preview/cancel/confirm/changed-source rejection, final full regression, final submitted reviewer-packet measurement, applicable Windows coverage, independent Opus review, integration/current verification and ledger closure remain Root conditions. Controlled old-save setup must be labelled controlled, never natural production. Checker integrity success cannot close the original unit. No production defect or product fix was demonstrated by the authorized local checks; retained code and marker contract are reused. Repair r04: seed 42588; existing definition-derived construction total gold 7110 / materials 88, signing 150, food eight units 24. Initial gold 5000 / materials 50 and previous added resources zero leave a deficit of gold 2284 / materials 38. The controlled fixture records and supplies only this derived deficit. Historical full metadata is now referenced by `implementation-historical-6c7c724.json`: both fixed Git versions were SHA-verified before replacement. Root's verified gzip roundtrip SHA is provenance only; no external archive is a checker/runtime dependency. Historical failure logs remain preserved.