[{"data":1,"prerenderedAt":748},["ShallowReactive",2],{"navigation_docs":3,"-docs-polyflight-operations-reconciliation-and-rollback":352,"-docs-polyflight-operations-reconciliation-and-rollback-surround":743},[4,22,35,60,81,137,223,254,282,306,327],{"title":5,"path":6,"stem":7,"children":8,"page":21},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started",[9,13,17],{"title":10,"path":11,"stem":12},"Overview","\u002Fdocs\u002Fgetting-started\u002Foverview","docs\u002F1.getting-started\u002F1.overview",{"title":14,"path":15,"stem":16},"Integration checklist","\u002Fdocs\u002Fgetting-started\u002Fintegration-checklist","docs\u002F1.getting-started\u002F2.integration-checklist",{"title":18,"path":19,"stem":20},"Environments and base URLs","\u002Fdocs\u002Fgetting-started\u002Fenvironments-and-base-urls","docs\u002F1.getting-started\u002F3.environments-and-base-urls",false,{"title":23,"path":24,"stem":25,"children":26,"page":21},"Troubleshooting","\u002Fdocs\u002Ftroubleshooting","docs\u002F10.troubleshooting",[27,31],{"title":28,"path":29,"stem":30},"Common errors","\u002Fdocs\u002Ftroubleshooting\u002Fcommon-errors","docs\u002F10.troubleshooting\u002F1.common-errors",{"title":32,"path":33,"stem":34},"Support escalation","\u002Fdocs\u002Ftroubleshooting\u002Fsupport-escalation","docs\u002F10.troubleshooting\u002F2.support-escalation",{"title":36,"path":37,"stem":38,"children":39,"page":21},"Polyflight","\u002Fdocs\u002Fpolyflight","docs\u002F11.polyflight",[40,44,48,52,56],{"title":41,"path":42,"stem":43},"Polyflight overview and launch","\u002Fdocs\u002Fpolyflight\u002Foverview-and-launch","docs\u002F11.polyflight\u002F1.overview-and-launch",{"title":45,"path":46,"stem":47},"Native wallet contract","\u002Fdocs\u002Fpolyflight\u002Fnative-wallet-contract","docs\u002F11.polyflight\u002F2.native-wallet-contract",{"title":49,"path":50,"stem":51},"API, events, and proof","\u002Fdocs\u002Fpolyflight\u002Fapi-events-and-proof","docs\u002F11.polyflight\u002F3.api-events-and-proof",{"title":53,"path":54,"stem":55},"Terms, statements, and settlement","\u002Fdocs\u002Fpolyflight\u002Fterms-statements-and-settlement","docs\u002F11.polyflight\u002F4.terms-statements-and-settlement",{"title":57,"path":58,"stem":59},"Operations, reconciliation, and rollback","\u002Fdocs\u002Fpolyflight\u002Foperations-reconciliation-and-rollback","docs\u002F11.polyflight\u002F5.operations-reconciliation-and-rollback",{"title":61,"path":62,"stem":63,"children":64,"page":21},"Integration Flow","\u002Fdocs\u002Fintegration-flow","docs\u002F2.integration-flow",[65,69,73,77],{"title":66,"path":67,"stem":68},"Architecture","\u002Fdocs\u002Fintegration-flow\u002Farchitecture","docs\u002F2.integration-flow\u002F1.architecture",{"title":70,"path":71,"stem":72},"Launch session model","\u002Fdocs\u002Fintegration-flow\u002Flaunch-session-model","docs\u002F2.integration-flow\u002F2.launch-session-model",{"title":74,"path":75,"stem":76},"Order and wallet saga","\u002Fdocs\u002Fintegration-flow\u002Forder-and-wallet-saga","docs\u002F2.integration-flow\u002F3.order-and-wallet-saga",{"title":78,"path":79,"stem":80},"FX fees and rounding","\u002Fdocs\u002Fintegration-flow\u002Ffx-fees-and-rounding","docs\u002F2.integration-flow\u002F4.fx-fees-and-rounding",{"title":82,"path":83,"stem":84,"children":85,"page":21},"Dashboard","\u002Fdocs\u002Fdashboard","docs\u002F3.dashboard",[86,89,93,97,101,105,109,113,117,121,125,129,133],{"title":10,"path":87,"stem":88},"\u002Fdocs\u002Fdashboard\u002Foverview","docs\u002F3.dashboard\u002F1.overview",{"title":90,"path":91,"stem":92},"Webhook Deliveries","\u002Fdocs\u002Fdashboard\u002Fwebhook-deliveries","docs\u002F3.dashboard\u002F10.webhook-deliveries",{"title":94,"path":95,"stem":96},"Staffs","\u002Fdocs\u002Fdashboard\u002Fstaffs","docs\u002F3.dashboard\u002F11.staffs",{"title":98,"path":99,"stem":100},"Simulator","\u002Fdocs\u002Fdashboard\u002Fsimulator","docs\u002F3.dashboard\u002F12.simulator",{"title":102,"path":103,"stem":104},"API Playground","\u002Fdocs\u002Fdashboard\u002Fapi-playground","docs\u002F3.dashboard\u002F13.api-playground",{"title":106,"path":107,"stem":108},"API keys","\u002Fdocs\u002Fdashboard\u002Fapi-keys","docs\u002F3.dashboard\u002F2.api-keys",{"title":110,"path":111,"stem":112},"Wallet adapter settings","\u002Fdocs\u002Fdashboard\u002Fwallet-adapter-settings","docs\u002F3.dashboard\u002F3.wallet-adapter-settings",{"title":114,"path":115,"stem":116},"Webhook endpoints","\u002Fdocs\u002Fdashboard\u002Fwebhook-endpoints","docs\u002F3.dashboard\u002F4.webhook-endpoints",{"title":118,"path":119,"stem":120},"Markets and visibility","\u002Fdocs\u002Fdashboard\u002Fmarket-visibility","docs\u002F3.dashboard\u002F5.market-visibility",{"title":122,"path":123,"stem":124},"Users","\u002Fdocs\u002Fdashboard\u002Fusers","docs\u002F3.dashboard\u002F6.users",{"title":126,"path":127,"stem":128},"Trades","\u002Fdocs\u002Fdashboard\u002Ftrades","docs\u002F3.dashboard\u002F7.trades",{"title":130,"path":131,"stem":132},"Resolutions","\u002Fdocs\u002Fdashboard\u002Fresolutions","docs\u002F3.dashboard\u002F8.resolutions",{"title":134,"path":135,"stem":136},"Balance Operations","\u002Fdocs\u002Fdashboard\u002Fbalance-operations","docs\u002F3.dashboard\u002F9.balance-operations",{"title":138,"path":139,"stem":140,"children":141,"page":21},"Operator Api","\u002Fdocs\u002Foperator-api","docs\u002F4.operator-api",[142,146,149,153,156,160,163,167,171,175,179,183,186,190,194,198,202,206,209,213,216,219],{"title":143,"path":144,"stem":145},"Authentication","\u002Fdocs\u002Foperator-api\u002Fauthentication","docs\u002F4.operator-api\u002F1.authentication",{"title":114,"path":147,"stem":148},"\u002Fdocs\u002Foperator-api\u002Fwebhook-endpoints","docs\u002F4.operator-api\u002F10.webhook-endpoints",{"title":150,"path":151,"stem":152},"Webhook deliveries","\u002Fdocs\u002Foperator-api\u002Fwebhook-deliveries","docs\u002F4.operator-api\u002F11.webhook-deliveries",{"title":98,"path":154,"stem":155},"\u002Fdocs\u002Foperator-api\u002Fsimulator","docs\u002F4.operator-api\u002F12.simulator",{"title":157,"path":158,"stem":159},"Wallet adapter","\u002Fdocs\u002Foperator-api\u002Fwallet-adapter","docs\u002F4.operator-api\u002F13.wallet-adapter",{"title":94,"path":161,"stem":162},"\u002Fdocs\u002Foperator-api\u002Fstaffs","docs\u002F4.operator-api\u002F14.staffs",{"title":164,"path":165,"stem":166},"Error codes","\u002Fdocs\u002Foperator-api\u002Ferror-codes","docs\u002F4.operator-api\u002F15.error-codes",{"title":168,"path":169,"stem":170},"Redemptions","\u002Fdocs\u002Foperator-api\u002Fredemptions","docs\u002F4.operator-api\u002F16.redemptions",{"title":172,"path":173,"stem":174},"Polyflight overview","\u002Fdocs\u002Foperator-api\u002Fpolyflight","docs\u002F4.operator-api\u002F17.polyflight",{"title":176,"path":177,"stem":178},"Polyflight flights","\u002Fdocs\u002Foperator-api\u002Fpolyflight-flights","docs\u002F4.operator-api\u002F18.polyflight-flights",{"title":180,"path":181,"stem":182},"Polyflight tickets","\u002Fdocs\u002Foperator-api\u002Fpolyflight-tickets","docs\u002F4.operator-api\u002F19.polyflight-tickets",{"title":106,"path":184,"stem":185},"\u002Fdocs\u002Foperator-api\u002Fapi-keys","docs\u002F4.operator-api\u002F2.api-keys",{"title":187,"path":188,"stem":189},"Polyflight balance operations","\u002Fdocs\u002Foperator-api\u002Fpolyflight-balance-operations","docs\u002F4.operator-api\u002F20.polyflight-balance-operations",{"title":191,"path":192,"stem":193},"Polyflight terms","\u002Fdocs\u002Foperator-api\u002Fpolyflight-terms","docs\u002F4.operator-api\u002F21.polyflight-terms",{"title":195,"path":196,"stem":197},"Polyflight settlement reports","\u002Fdocs\u002Foperator-api\u002Fpolyflight-settlement-reports","docs\u002F4.operator-api\u002F22.polyflight-settlement-reports",{"title":199,"path":200,"stem":201},"Session","\u002Fdocs\u002Foperator-api\u002Fsession","docs\u002F4.operator-api\u002F3.session",{"title":203,"path":204,"stem":205},"Launch","\u002Fdocs\u002Foperator-api\u002Flaunch","docs\u002F4.operator-api\u002F4.launch",{"title":122,"path":207,"stem":208},"\u002Fdocs\u002Foperator-api\u002Fusers","docs\u002F4.operator-api\u002F5.users",{"title":210,"path":211,"stem":212},"Markets","\u002Fdocs\u002Foperator-api\u002Fmarkets","docs\u002F4.operator-api\u002F6.markets",{"title":126,"path":214,"stem":215},"\u002Fdocs\u002Foperator-api\u002Ftrades","docs\u002F4.operator-api\u002F7.trades",{"title":130,"path":217,"stem":218},"\u002Fdocs\u002Foperator-api\u002Fresolutions","docs\u002F4.operator-api\u002F8.resolutions",{"title":220,"path":221,"stem":222},"Balance operations","\u002Fdocs\u002Foperator-api\u002Fbalance-operations","docs\u002F4.operator-api\u002F9.balance-operations",{"title":224,"path":225,"stem":226,"children":227,"page":21},"Wallet Adapter","\u002Fdocs\u002Fwallet-adapter","docs\u002F5.wallet-adapter",[228,231,234,238,242,246,250],{"title":10,"path":229,"stem":230},"\u002Fdocs\u002Fwallet-adapter\u002Foverview","docs\u002F5.wallet-adapter\u002F1.overview",{"title":143,"path":232,"stem":233},"\u002Fdocs\u002Fwallet-adapter\u002Fauthentication","docs\u002F5.wallet-adapter\u002F2.authentication",{"title":235,"path":236,"stem":237},"Balance","\u002Fdocs\u002Fwallet-adapter\u002Fbalance","docs\u002F5.wallet-adapter\u002F3.balance",{"title":239,"path":240,"stem":241},"Debit","\u002Fdocs\u002Fwallet-adapter\u002Fdebit","docs\u002F5.wallet-adapter\u002F4.debit",{"title":243,"path":244,"stem":245},"Credit","\u002Fdocs\u002Fwallet-adapter\u002Fcredit","docs\u002F5.wallet-adapter\u002F5.credit",{"title":247,"path":248,"stem":249},"Debit reversal","\u002Fdocs\u002Fwallet-adapter\u002Fdebit-reversal","docs\u002F5.wallet-adapter\u002F6.debit-reversal",{"title":251,"path":252,"stem":253},"Idempotency","\u002Fdocs\u002Fwallet-adapter\u002Fidempotency","docs\u002F5.wallet-adapter\u002F7.idempotency",{"title":255,"path":256,"stem":257,"children":258,"page":21},"Webhooks","\u002Fdocs\u002Fwebhooks","docs\u002F6.webhooks",[259,262,266,270,274,278],{"title":10,"path":260,"stem":261},"\u002Fdocs\u002Fwebhooks\u002Foverview","docs\u002F6.webhooks\u002F1.overview",{"title":263,"path":264,"stem":265},"Signatures","\u002Fdocs\u002Fwebhooks\u002Fsignatures","docs\u002F6.webhooks\u002F2.signatures",{"title":267,"path":268,"stem":269},"Event envelope","\u002Fdocs\u002Fwebhooks\u002Fevent-envelope","docs\u002F6.webhooks\u002F3.event-envelope",{"title":271,"path":272,"stem":273},"Event types","\u002Fdocs\u002Fwebhooks\u002Fevent-types","docs\u002F6.webhooks\u002F4.event-types",{"title":275,"path":276,"stem":277},"Retry and replay","\u002Fdocs\u002Fwebhooks\u002Fretry-and-replay","docs\u002F6.webhooks\u002F5.retry-and-replay",{"title":279,"path":280,"stem":281},"Receiver examples","\u002Fdocs\u002Fwebhooks\u002Freceiver-examples","docs\u002F6.webhooks\u002F6.receiver-examples",{"title":283,"path":284,"stem":285,"children":286,"page":21},"Testing And Staging","\u002Fdocs\u002Ftesting-and-staging","docs\u002F7.testing-and-staging",[287,291,294,298,302],{"title":288,"path":289,"stem":290},"Staging overview","\u002Fdocs\u002Ftesting-and-staging\u002Fstaging-overview","docs\u002F7.testing-and-staging\u002F1.staging-overview",{"title":98,"path":292,"stem":293},"\u002Fdocs\u002Ftesting-and-staging\u002Fsimulator","docs\u002F7.testing-and-staging\u002F2.simulator",{"title":295,"path":296,"stem":297},"Wallet failure drills","\u002Fdocs\u002Ftesting-and-staging\u002Fwallet-failure-drills","docs\u002F7.testing-and-staging\u002F3.wallet-failure-drills",{"title":299,"path":300,"stem":301},"Webhook drills","\u002Fdocs\u002Ftesting-and-staging\u002Fwebhook-drills","docs\u002F7.testing-and-staging\u002F4.webhook-drills",{"title":303,"path":304,"stem":305},"Production cutover rehearsal","\u002Fdocs\u002Ftesting-and-staging\u002Fproduction-cutover-rehearsal","docs\u002F7.testing-and-staging\u002F5.production-cutover-rehearsal",{"title":307,"path":308,"stem":309,"children":310,"page":21},"Production Readiness","\u002Fdocs\u002Fproduction-readiness","docs\u002F8.production-readiness",[311,315,319,323],{"title":312,"path":313,"stem":314},"Checklist","\u002Fdocs\u002Fproduction-readiness\u002Fchecklist","docs\u002F8.production-readiness\u002F1.checklist",{"title":316,"path":317,"stem":318},"Operational runbook","\u002Fdocs\u002Fproduction-readiness\u002Foperational-runbook","docs\u002F8.production-readiness\u002F2.operational-runbook",{"title":320,"path":321,"stem":322},"Security","\u002Fdocs\u002Fproduction-readiness\u002Fsecurity","docs\u002F8.production-readiness\u002F3.security",{"title":324,"path":325,"stem":326},"Rollback","\u002Fdocs\u002Fproduction-readiness\u002Frollback","docs\u002F8.production-readiness\u002F4.rollback",{"title":328,"path":329,"stem":330,"children":331,"page":21},"Reference","\u002Fdocs\u002Freference","docs\u002F9.reference",[332,336,340,344,348],{"title":333,"path":334,"stem":335},"Statuses","\u002Fdocs\u002Freference\u002Fstatuses","docs\u002F9.reference\u002F1.statuses",{"title":337,"path":338,"stem":339},"Scopes","\u002Fdocs\u002Freference\u002Fscopes","docs\u002F9.reference\u002F2.scopes",{"title":341,"path":342,"stem":343},"Units and money","\u002Fdocs\u002Freference\u002Funits-and-money","docs\u002F9.reference\u002F3.units-and-money",{"title":345,"path":346,"stem":347},"Changelog","\u002Fdocs\u002Freference\u002Fchangelog","docs\u002F9.reference\u002F4.changelog",{"title":349,"path":350,"stem":351},"Virtual AMM","\u002Fdocs\u002Freference\u002Fvirtual-amm","docs\u002F9.reference\u002F5.virtual-amm",{"id":353,"title":57,"body":354,"description":736,"extension":737,"links":738,"meta":739,"navigation":740,"path":58,"seo":741,"stem":59,"__hash__":742},"docs\u002Fdocs\u002F11.polyflight\u002F5.operations-reconciliation-and-rollback.md",{"type":355,"value":356,"toc":715},"minimark",[357,361,365,370,373,414,431,435,474,478,527,530,534,539,542,546,549,553,559,563,566,570,573,577,580,584,590,594,597,601,604,608,611,637,652,655,659,666,669,686,689,712],[358,359,57],"h1",{"id":360},"operations-reconciliation-and-rollback",[362,363,364],"p",{},"Polyflight separates game outcome from wallet delivery. A ticket can be definitively won or cancelled while its payout or refund remains owed. Never change the public result to hide a wallet failure.",[366,367,369],"h2",{"id":368},"evidence-chain","Evidence chain",[362,371,372],{},"For every money case, trace the same immutable business effect across:",[374,375,376,380,392,398,401,408,411],"ol",{},[377,378,379],"li",{},"purchase request or ticket;",[377,381,382,383,387,388,391],{},"wallet balance operation, stable ",[384,385,386],"code",{},"idempotency_key",", and immutable ",[384,389,390],{},"walletTransport",";",[377,393,394,395,391],{},"operator wallet ledger evidence and optional ",[384,396,397],{},"remote_reference",[377,399,400],{},"payment obligation, when money is owed;",[377,402,403,404,407],{},"webhook ",[384,405,406],{},"event_id"," and delivery attempts;",[377,409,410],{},"native-IDR accounting event and confirmed cash clearing;",[377,412,413],{},"current reporting\u002Fliabilities or finalized statement and export.",[362,415,416,417,421,422,421,424,427,428,430],{},"Use the dashboard's ",[418,419,420],"strong",{},"Polyflight → Tickets",", ",[418,423,220],{},[418,425,426],{},"Settlement reports",", and webhook delivery views. Use ",[418,429,102],{}," for the same scoped GET resources. An operator can inspect its own evidence but cannot mark a wallet mutation applied or change commercial terms.",[366,432,434],{"id":433},"normal-state-interpretation","Normal state interpretation",[436,437,438,444,450,456,462,468],"ul",{},[377,439,440,443],{},[418,441,442],{},"Purchase pending",": the durable intent exists; do not submit another purchase merely because execution is still running.",[377,445,446,449],{},[418,447,448],{},"Purchase compensated",": the debit applied but no ticket was admitted, and the exact reversal completed.",[377,451,452,455],{},[418,453,454],{},"Won \u002F payout pending",": result is final; user credit remains an outstanding liability.",[377,457,458,461],{},[418,459,460],{},"Cancelled \u002F refund pending",": cancellation is final; full original debit remains an outstanding liability.",[377,463,464,467],{},[418,465,466],{},"Paid \u002F refunded",": wallet evidence confirms the corresponding credit.",[377,469,470,473],{},[418,471,472],{},"Manual review",": remote cash state is ambiguous or requires authenticated evidence; it is not success or failure by assumption.",[366,475,477],{"id":476},"reconciliation-procedure","Reconciliation procedure",[374,479,480,483,489,500,503,506,509,524],{},[377,481,482],{},"Freeze automated or human replay for the affected effect.",[377,484,485,486,488],{},"Capture operator, external user, purchase\u002Fticket\u002Fflight IDs, operation ID, pinned ",[384,487,390],{},", stable idempotency key, UTC window, request trace IDs, and webhook event IDs.",[377,490,491,492,495,496,499],{},"Query the matching simulator or REST v1 ledger by the ",[418,493,494],{},"financial idempotency key",", not only by ",[384,497,498],{},"X-Polynion-Request-Id",".",[377,501,502],{},"Compare transport, user, currency, amount, reason, and material metadata with OpenPoly's immutable request evidence. Do not move recovery to a different transport.",[377,504,505],{},"Determine one authoritative outcome: applied, not applied, or still unknown.",[377,507,508],{},"Provide authenticated ledger evidence\u002Freference to Polynion operations. Operator dashboard\u002FAPI access cannot self-resolve a money effect.",[377,510,511,512,515,516,519,520,523],{},"An authorized Polynion administrator records ",[384,513,514],{},"confirmed_applied"," or ",[384,517,518],{},"confirmed_not_applied"," with a required reason, evidence reference, and expected state version. ",[384,521,522],{},"authorized_original_key_resume"," is reserved for definitive non-application when the operator's same-key behavior permits safe resumption.",[377,525,526],{},"Verify the resulting business transition, liability, webhook, statement activity, and user balance. Conflicting or duplicate decisions must not create another ticket or money movement.",[362,528,529],{},"If non-application is definitive, resuming the original operation is allowed only when the operator's idempotency behavior is known to permit it. Otherwise resolve the existing obligation with manually completed payment evidence. Never use a fresh key to bypass an uncertain effect.",[366,531,533],{"id":532},"failure-scenarios","Failure scenarios",[535,536,538],"h3",{"id":537},"definite-purchase-debit-rejection","Definite purchase debit rejection",[362,540,541],{},"Expected state: purchase failed, no ticket, no fee or position accounting, and no compensation operation because no money moved.",[535,543,545],{"id":544},"debit-applied-response-timed-out","Debit applied, response timed out",[362,547,548],{},"Expected state: no automatic primary replay and no ticket until authoritative evidence confirms application. Once confirmed, OpenPoly records clearing exactly once and either admits the ticket if still valid or schedules exact compensation if admission is no longer possible.",[535,550,552],{"id":551},"debit-applied-after-gate-closure","Debit applied after gate closure",[362,554,555,556,499],{},"The gate wins over request start time. No late ticket is forced into the snapshot. OpenPoly reverses the full debit through ",[384,557,558],{},"mini_app_polyflight_purchase_compensation",[535,560,562],{"id":561},"admission-response-lost","Admission response lost",[362,564,565],{},"Retry\u002Fquery the same purchase intent. If admission committed, return the existing ticket. Do not reverse a debit simply because an internal response was lost.",[535,567,569],{"id":568},"winning-credit-failed-or-timed-out","Winning credit failed or timed out",[362,571,572],{},"The ticket remains won. The obligation remains owed or in manual review; the statement retains the winnings liability. Do not label it paid and do not change signed position income.",[535,574,576],{"id":575},"cancellation-refund-failed-or-timed-out","Cancellation refund failed or timed out",[362,578,579],{},"Fee entitlement ends at cancellation, not at wallet delivery. The exact full stake remains refund payable until confirmed. A refund and winning payout cannot coexist for the same ticket.",[535,581,583],{"id":582},"duplicate-delivery","Duplicate delivery",[362,585,586,587,589],{},"The same key and parameters must return the original effective result. A different payload under the same key is a conflict and must not mutate money. Webhook delivery\u002Freplay may repeat an event envelope, so receivers deduplicate by ",[384,588,406],{},"; it never authorizes a wallet mutation replay.",[535,591,593],{"id":592},"missing-or-stale-comparison-rate","Missing or stale comparison rate",[362,595,596],{},"No FX lookup occurs during purchase, payout, or gate processing. If a flight was committed with a cached fallback rate, that frozen rate remains authoritative and is disclosed after reveal. If no valid observation existed before boarding, IDR entry is unavailable for that flight while first-party Credits participation and global progress continue.",[535,598,600],{"id":599},"operator-outage-or-suspension","Operator outage or suspension",[362,602,603],{},"Block new admission. Continue recovery for already-owed payout, refund, compensation, statement reads, and reconciliation. One operator outage must not withhold the global result or first-party notifications.",[366,605,607],{"id":606},"required-staging-drills","Required staging drills",[362,609,610],{},"Use dedicated, user-scoped simulator wallets to exercise:",[436,612,613,616,619,622,625,628,631,634],{},[377,614,615],{},"definite debit rejection;",[377,617,618],{},"debit applied then timeout;",[377,620,621],{},"credit applied then timeout;",[377,623,624],{},"duplicate key with identical parameters;",[377,626,627],{},"duplicate key with different parameters;",[377,629,630],{},"admitted ticket cancellation and exact native refund;",[377,632,633],{},"late confirmed debit and compensation;",[377,635,636],{},"losing, winning\u002Fpayout-pending, fully paid, and manual-review cases.",[362,638,639,640,643,644,647,648,651],{},"Launch the test user from Operator Dashboard ",[418,641,642],{},"Simulator → Users → Simulator"," with product ",[384,645,646],{},"polyflight"," and follow the real single-use launch URL into the Mini App Client. Do not inject a session cookie or replace this with API-only testing. Keep the operator's ",[384,649,650],{},"rest_v1"," configuration unchanged; only dedicated simulator-tagged users use simulated wallets.",[362,653,654],{},"Simulator evidence proves OpenPoly's state machine, not a real operator adapter. Separately run the REST v1 contract\u002Ffailure drills against dedicated non-production external-wallet infrastructure using small amounts and an explicit test user. Never use production credentials, production users, or production wallet money for staging certification.",[366,656,658],{"id":657},"safe-rollback-and-incident-containment","Safe rollback and incident containment",[362,660,661,662,665],{},"The first containment action is to disable ",[418,663,664],{},"new Polyflight operator purchases",". Keep payout, refund, compensation, reconciliation, webhook evidence, and report reads running.",[362,667,668],{},"Safe actions:",[436,670,671,674,677,680,683],{},[377,672,673],{},"disable operator Polyflight entry;",[377,675,676],{},"pause future global generation when protocol integrity is in question;",[377,678,679],{},"deploy a forward fix or the last build that can read and process v5;",[377,681,682],{},"revert only future, unclaimed-wave protocol policy after accounting for existing flights;",[377,684,685],{},"preserve operations, events, statements, proof artifacts, and audit history.",[362,687,688],{},"Unsafe actions:",[436,690,691,694,697,700,703,706,709],{},[377,692,693],{},"rolling back to a binary that cannot read v5 while v5 flights or obligations exist;",[377,695,696],{},"dropping or reversing financial\u002Fproof tables as traffic rollback;",[377,698,699],{},"changing a committed valuation, snapshot, result, winner, payout, or terms version;",[377,701,702],{},"cancelling a post-commitment flight through normal operations;",[377,704,705],{},"replaying an ambiguous primary mutation or inventing a new idempotency key;",[377,707,708],{},"deleting evidence or rewriting a finalized statement;",[377,710,711],{},"switching all operator users to simulator mode.",[362,713,714],{},"After containment, reconcile the oldest unresolved operations and liabilities, confirm webhook delivery, compare statement\u002Fexport parity, and retain redacted evidence. Production deployment or operator enablement is a separate authorized change; staging readiness does not imply it.",{"title":716,"searchDepth":717,"depth":717,"links":718},"",2,[719,720,721,722,734,735],{"id":368,"depth":717,"text":369},{"id":433,"depth":717,"text":434},{"id":476,"depth":717,"text":477},{"id":532,"depth":717,"text":533,"children":723},[724,726,727,728,729,730,731,732,733],{"id":537,"depth":725,"text":538},3,{"id":544,"depth":725,"text":545},{"id":551,"depth":725,"text":552},{"id":561,"depth":725,"text":562},{"id":568,"depth":725,"text":569},{"id":575,"depth":725,"text":576},{"id":582,"depth":725,"text":583},{"id":592,"depth":725,"text":593},{"id":599,"depth":725,"text":600},{"id":606,"depth":717,"text":607},{"id":657,"depth":717,"text":658},"Reconcile Polyflight wallet effects, handle failures safely, and contain incidents without changing committed results.","md",null,{},true,{"title":57,"description":736},"RkKqFQk71_RPNWqD2eqsbyWoc3lTegPdIefQPGZUjLw",[744,746],{"title":53,"path":54,"stem":55,"description":745,"children":-1},"Read commercial terms and reconcile native-IDR fee, signed position, liabilities, payments, carry, and exports.",{"title":66,"path":67,"stem":68,"description":747,"children":-1},"System actors and request flow for the Mini App integration.",1789570129132]