# P9.6 Risk, Recovery And Persistence Implementation Plan > Status: `COMPLETE` > Active step: `NONE - MILESTONE TERMINAL` > Baseline: `7ca0302` > Goal: `docs/goals/PHASE9_6_RISK_RECOVERY_PERSISTENCE_GOAL.md` > Contract: `docs/runtime/PHASE9_6_RISK_RECOVERY_PERSISTENCE_CONTRACT.md` ## Player Outcome The player reads real post-Bell injuries, chooses whether recovery is worth its cost, sees a two-wave consequence, recovers from defeat without losing the Company, and can close and continue the stable run without duplicate progress. ## Steps | Step | Status | Outcome | Gate | |---|---|---|---| | P9.6-STEP-0 Contract | `COMPLETE` | Four entry states, two plans, exact two-wave results and save boundaries are frozen. | Goal, contract, plan, checkpoint and ledger agree. | | P9.6-STEP-1 Domain | `COMPLETE` | Risk choice, two waves, defeat, recovery, retry, reward and XP are atomic. | Source `68c4dbd`; exact contract matrix and P9.5 domain/five-profile regressions pass strict-clean. | | P9.6-STEP-2 Persistence | `COMPLETE` | Stable state survives refresh/interruption without duplicate progress. | Source `cc393cb`; 14-case persistence matrix plus P9.6/P9.5 domain regressions pass strict-clean. | | P9.6-STEP-3 Runtime | `COMPLETE` | Direct world touches expose HP, risk, waves, defeat/recovery and the changed return. | Source `bb1badf`; 15 parsed touches, 12 normal frames, P9.6 domain/persistence and P9.5 runtime regressions pass strict-clean. | | P9.6-STEP-4 Pacing and H5 | `COMPLETE` | Five profiles preserve the counterfactual and the Owner can play the cached build. | Source `3f96195`; 46 timestamps, seven layout fixtures, runtime-only export and Gallery `m0eTZ1WofW9b` pass. | ## Active Step Contract ```text ID: P9.6-STEP-4 PACING AND H5 PLAYER OUTCOME: The risk decision remains state-dependent across normal, active, efficient, adversarial and returning play, and the Owner can open a new cached H5 build that preserves Continue and the complete recovery loop. IN SCOPE: one P9.6 five-profile/decision-timestamp test; small/reference/large landscape plus portrait rotate, zh_CN/en, 130% text, reduced motion, mute and low-power fixtures; source-bound runtime-only Web export; one new private Gallery item; P9.6 delivery and durable status documents. OUT OF SCOPE: gameplay/controller/value changes unless a declared fixture finds an earliest product failure; new media/content; native packages, devices, TestFlight, stores, release and other games. OWNED FILES: runtime/tests/p9_6 pacing/layout tests and UIDs, docs/runtime/p9_6/H5_DELIVERY.md, P9.6 durable documents, and ignored source-bound runtime/build Web output. ACCEPTANCE CHECKS: five profiles emit explicit state/decision timestamps and exact Wayrunner/Kindhand counterfactuals; interruption/reload contributes no duplicate reward, XP, recovery or battle ticks; all declared layout, localization and accessibility fixtures keep readable controls in bounds; runtime-only PCK excludes tests/docs/evidence; local Web MIME/bytes and a new private Gallery delivery pass with immutable caching; repository remains clean/upstream and owned processes are zero. EVIDENCE LEVEL EXPECTED: simulation_verified plus runtime_verified delivery; human phone comprehension/fun/listening remains open. COMMIT BOUNDARY: focused pushed test commit before immutable export; docs-only closure commit after Gallery delivery. LEGAL TERMINAL: Aetherbound Guild P9.6 risk, recovery and persistence candidate ready, or redesign required at the earliest pacing/layout/Web boundary. NEXT STEP: Owner plays the new H5 without coaching and reports the earliest unclear decision or failed Continue/recovery behavior. ``` ## Issue Register | ID | Status | Finding | |---|---|---| | P96-I01 | `RESOLVED_IN_CONTRACT` | A single extra fixture lets every Company win and teaches no recovery decision. Two carried-HP waves produce the required state-dependent counterfactual. | | P96-I02 | `RESOLVED_STEP_2` | Source `cc393cb` adds versioned, checksummed, backup-safe stable snapshots and pre-battle interruption recovery. | | P96-I03 | `RESOLVED_STEP_1` | Exact waves leave two Wayrunner members at 0 HP after victory. Accepted living-member XP remains unchanged; a 2-Coin-per-fallen-member victory recovery prevents a stranded terminal state. | | P96-I04 | `INVALID_EVIDENCE_REPAIRED` | Step 3 R1 generated its inventory before the final metadata append, so 1/25 hashes mismatched. R1 remains invalid; fresh R2 writes metadata first and verifies 25/25 without product changes. | ## Current Evidence - Step 1 source: `68c4dbd`. - Root: `/private/tmp/abg-p96-68c4dbd-step1-r1/`. - Marker: `ABG_P9_6_RISK_RECOVERY_DOMAIN_OK paths=8 waves=2 press_wayrunner=defeat press_kindhand=victory recover_all=victory costs=0,4,6,8 reward=20 xp=18 recruits_lost=0 items_lost=0 invalid_mutations=0`. - P9.5 domain and five-profile regressions pass; strict diagnostics are zero. - Evidence inventory SHA-256: `e1ddacc7b4cfca0cdc4fa796924f876c351909adf03d056d7f7a5a5980c68780`. - Step 2 source: `cc393cb`. - Root: `/private/tmp/abg-p96-cc393cb-step2-r1/`. - Marker: `ABG_P9_6_PERSISTENCE_OK version=1 migration=0_to_1 cases=14 checksum=true backup=true corruption=true rollback=true offline_cap=86400 offline_rewards=0 checkpoint=pre_battle duplicate_claim=0 duplicate_recovery=0 temp_clean=true`. - Step 1 and P9.5 domain regressions pass; strict diagnostics are zero. - Evidence inventory SHA-256: `f5f0e57d512c33a0f83923f9a89cf81421cc2ca2380b78b079fa420d18a9d35c`. - Step 3 source: `bb1badf`. - Invalid root: `/private/tmp/abg-p96-bb1badf-step3-r1/` (`INVALID_EVIDENCE_INVENTORY`, 1/25 hash mismatch after late metadata write; no product judgment reused). - Authoritative root: `/private/tmp/abg-p96-bb1badf-step3-r2/`. - Runtime marker: `ABG_P9_6_RISK_RECOVERY_RUNTIME_OK paths=2 touch=15 fallback=0 direct=0 continue=valid_only reload=selected_rift new_run=clears_old waves=2 wave_cues=3 wayrunner=defeat_retry kindhand=direct_victory recovery=8,4 reward=20 xp=18 controls=44 cards=0`. - P9.6 domain/persistence and P9.5 four-path runtime regressions pass; 12 exact `844x390` normal frames and strict diagnostics zero verify the world plan, wave transition, defeat/recovery and final Hall. - Evidence inventory SHA-256: `9bcde00005f1e8e2fd413f864304ba389f48b9411cd5f18c2df6edf0a7a0ea2b` (25/25 verified). - Step 4 source: `3f96195`. - Simulation/layout root: `/private/tmp/abg-p96-3f96195-step4-r1/`. - Marker: `ABG_P9_6_FIVE_PROFILE_OK profiles=5 paths=4 timestamps=46 longest_gap=16.10 plans=press_on,recover counterfactual=true defeat_retry=true interruption_reloads=1 offline_rewards=0 starvation=0 invalid_mutations=7 final_coin=48,57,48,46,57`. - Layout marker: `ABG_P9_6_LAYOUT_OK fixtures=7 viewports=760x360,844x390,1280x720,390x844 locales=zh_CN,en text_130=true reduced_motion=true muted=true low_power=true controls=44 cards=0 captures=7`. - Simulation/layout inventory SHA-256: `d0cb908ae2b26b5022747d6bfa5612e8d1d57bf2f1af2aa3ac5953284d2059cf` (24/24 verified). - Web root: `/private/tmp/abg-p96-3f96195-web-r1/`; marker: `ABG_P9_6_WEB_EXPORT_OK source=3f96195 files=9 tests=0 docs=0 evidence=0 build=0 mime=html,js,pck,wasm strict=0`; compact evidence SHA-256 `551beb2883f38d897d45c8d48398e688886ddc9afd83acf771b28cec6a5a6574`. - Gallery R2 marker: `ABG_P9_6_GALLERY_TRANSPORT_OK item=m0eTZ1WofW9b health=200 entry=200 published=9/9 cache=immutable etag=true conditional=304`; inventory SHA-256 `925f344f91c7bf2456718634671380492d13347b966a5ee8247a7bd9e9b86f13`. - Exact legal terminal: `Aetherbound Guild P9.6 risk, recovery and persistence candidate ready`.