[{"data":1,"prerenderedAt":1285},["ShallowReactive",2],{"navigation_docs":3,"-docs-polyflight-operations-reconciliation-and-rollback":356,"-docs-polyflight-operations-reconciliation-and-rollback-surround":1280},[4,22,35,64,85,141,227,258,286,310,331],{"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,60],{"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},"Player experience","\u002Fdocs\u002Fpolyflight\u002Fplayer-experience","docs\u002F11.polyflight\u002F6.player-experience",{"title":65,"path":66,"stem":67,"children":68,"page":21},"Integration Flow","\u002Fdocs\u002Fintegration-flow","docs\u002F2.integration-flow",[69,73,77,81],{"title":70,"path":71,"stem":72},"Architecture","\u002Fdocs\u002Fintegration-flow\u002Farchitecture","docs\u002F2.integration-flow\u002F1.architecture",{"title":74,"path":75,"stem":76},"Launch session model","\u002Fdocs\u002Fintegration-flow\u002Flaunch-session-model","docs\u002F2.integration-flow\u002F2.launch-session-model",{"title":78,"path":79,"stem":80},"Order and wallet saga","\u002Fdocs\u002Fintegration-flow\u002Forder-and-wallet-saga","docs\u002F2.integration-flow\u002F3.order-and-wallet-saga",{"title":82,"path":83,"stem":84},"FX fees and rounding","\u002Fdocs\u002Fintegration-flow\u002Ffx-fees-and-rounding","docs\u002F2.integration-flow\u002F4.fx-fees-and-rounding",{"title":86,"path":87,"stem":88,"children":89,"page":21},"Dashboard","\u002Fdocs\u002Fdashboard","docs\u002F3.dashboard",[90,93,97,101,105,109,113,117,121,125,129,133,137],{"title":10,"path":91,"stem":92},"\u002Fdocs\u002Fdashboard\u002Foverview","docs\u002F3.dashboard\u002F1.overview",{"title":94,"path":95,"stem":96},"Webhook Deliveries","\u002Fdocs\u002Fdashboard\u002Fwebhook-deliveries","docs\u002F3.dashboard\u002F10.webhook-deliveries",{"title":98,"path":99,"stem":100},"Staffs","\u002Fdocs\u002Fdashboard\u002Fstaffs","docs\u002F3.dashboard\u002F11.staffs",{"title":102,"path":103,"stem":104},"Simulator","\u002Fdocs\u002Fdashboard\u002Fsimulator","docs\u002F3.dashboard\u002F12.simulator",{"title":106,"path":107,"stem":108},"API Playground","\u002Fdocs\u002Fdashboard\u002Fapi-playground","docs\u002F3.dashboard\u002F13.api-playground",{"title":110,"path":111,"stem":112},"API keys","\u002Fdocs\u002Fdashboard\u002Fapi-keys","docs\u002F3.dashboard\u002F2.api-keys",{"title":114,"path":115,"stem":116},"Wallet adapter settings","\u002Fdocs\u002Fdashboard\u002Fwallet-adapter-settings","docs\u002F3.dashboard\u002F3.wallet-adapter-settings",{"title":118,"path":119,"stem":120},"Webhook endpoints","\u002Fdocs\u002Fdashboard\u002Fwebhook-endpoints","docs\u002F3.dashboard\u002F4.webhook-endpoints",{"title":122,"path":123,"stem":124},"Markets and visibility","\u002Fdocs\u002Fdashboard\u002Fmarket-visibility","docs\u002F3.dashboard\u002F5.market-visibility",{"title":126,"path":127,"stem":128},"Users","\u002Fdocs\u002Fdashboard\u002Fusers","docs\u002F3.dashboard\u002F6.users",{"title":130,"path":131,"stem":132},"Trades","\u002Fdocs\u002Fdashboard\u002Ftrades","docs\u002F3.dashboard\u002F7.trades",{"title":134,"path":135,"stem":136},"Resolutions","\u002Fdocs\u002Fdashboard\u002Fresolutions","docs\u002F3.dashboard\u002F8.resolutions",{"title":138,"path":139,"stem":140},"Balance Operations","\u002Fdocs\u002Fdashboard\u002Fbalance-operations","docs\u002F3.dashboard\u002F9.balance-operations",{"title":142,"path":143,"stem":144,"children":145,"page":21},"Operator Api","\u002Fdocs\u002Foperator-api","docs\u002F4.operator-api",[146,150,153,157,160,164,167,171,175,179,183,187,190,194,198,202,206,210,213,217,220,223],{"title":147,"path":148,"stem":149},"Authentication","\u002Fdocs\u002Foperator-api\u002Fauthentication","docs\u002F4.operator-api\u002F1.authentication",{"title":118,"path":151,"stem":152},"\u002Fdocs\u002Foperator-api\u002Fwebhook-endpoints","docs\u002F4.operator-api\u002F10.webhook-endpoints",{"title":154,"path":155,"stem":156},"Webhook deliveries","\u002Fdocs\u002Foperator-api\u002Fwebhook-deliveries","docs\u002F4.operator-api\u002F11.webhook-deliveries",{"title":102,"path":158,"stem":159},"\u002Fdocs\u002Foperator-api\u002Fsimulator","docs\u002F4.operator-api\u002F12.simulator",{"title":161,"path":162,"stem":163},"Wallet adapter","\u002Fdocs\u002Foperator-api\u002Fwallet-adapter","docs\u002F4.operator-api\u002F13.wallet-adapter",{"title":98,"path":165,"stem":166},"\u002Fdocs\u002Foperator-api\u002Fstaffs","docs\u002F4.operator-api\u002F14.staffs",{"title":168,"path":169,"stem":170},"Error codes","\u002Fdocs\u002Foperator-api\u002Ferror-codes","docs\u002F4.operator-api\u002F15.error-codes",{"title":172,"path":173,"stem":174},"Redemptions","\u002Fdocs\u002Foperator-api\u002Fredemptions","docs\u002F4.operator-api\u002F16.redemptions",{"title":176,"path":177,"stem":178},"Polyflight overview","\u002Fdocs\u002Foperator-api\u002Fpolyflight","docs\u002F4.operator-api\u002F17.polyflight",{"title":180,"path":181,"stem":182},"Polyflight flights","\u002Fdocs\u002Foperator-api\u002Fpolyflight-flights","docs\u002F4.operator-api\u002F18.polyflight-flights",{"title":184,"path":185,"stem":186},"Polyflight tickets","\u002Fdocs\u002Foperator-api\u002Fpolyflight-tickets","docs\u002F4.operator-api\u002F19.polyflight-tickets",{"title":110,"path":188,"stem":189},"\u002Fdocs\u002Foperator-api\u002Fapi-keys","docs\u002F4.operator-api\u002F2.api-keys",{"title":191,"path":192,"stem":193},"Polyflight balance operations","\u002Fdocs\u002Foperator-api\u002Fpolyflight-balance-operations","docs\u002F4.operator-api\u002F20.polyflight-balance-operations",{"title":195,"path":196,"stem":197},"Polyflight terms","\u002Fdocs\u002Foperator-api\u002Fpolyflight-terms","docs\u002F4.operator-api\u002F21.polyflight-terms",{"title":199,"path":200,"stem":201},"Polyflight settlement reports","\u002Fdocs\u002Foperator-api\u002Fpolyflight-settlement-reports","docs\u002F4.operator-api\u002F22.polyflight-settlement-reports",{"title":203,"path":204,"stem":205},"Session","\u002Fdocs\u002Foperator-api\u002Fsession","docs\u002F4.operator-api\u002F3.session",{"title":207,"path":208,"stem":209},"Launch","\u002Fdocs\u002Foperator-api\u002Flaunch","docs\u002F4.operator-api\u002F4.launch",{"title":126,"path":211,"stem":212},"\u002Fdocs\u002Foperator-api\u002Fusers","docs\u002F4.operator-api\u002F5.users",{"title":214,"path":215,"stem":216},"Markets","\u002Fdocs\u002Foperator-api\u002Fmarkets","docs\u002F4.operator-api\u002F6.markets",{"title":130,"path":218,"stem":219},"\u002Fdocs\u002Foperator-api\u002Ftrades","docs\u002F4.operator-api\u002F7.trades",{"title":134,"path":221,"stem":222},"\u002Fdocs\u002Foperator-api\u002Fresolutions","docs\u002F4.operator-api\u002F8.resolutions",{"title":224,"path":225,"stem":226},"Balance operations","\u002Fdocs\u002Foperator-api\u002Fbalance-operations","docs\u002F4.operator-api\u002F9.balance-operations",{"title":228,"path":229,"stem":230,"children":231,"page":21},"Wallet Adapter","\u002Fdocs\u002Fwallet-adapter","docs\u002F5.wallet-adapter",[232,235,238,242,246,250,254],{"title":10,"path":233,"stem":234},"\u002Fdocs\u002Fwallet-adapter\u002Foverview","docs\u002F5.wallet-adapter\u002F1.overview",{"title":147,"path":236,"stem":237},"\u002Fdocs\u002Fwallet-adapter\u002Fauthentication","docs\u002F5.wallet-adapter\u002F2.authentication",{"title":239,"path":240,"stem":241},"Balance","\u002Fdocs\u002Fwallet-adapter\u002Fbalance","docs\u002F5.wallet-adapter\u002F3.balance",{"title":243,"path":244,"stem":245},"Debit","\u002Fdocs\u002Fwallet-adapter\u002Fdebit","docs\u002F5.wallet-adapter\u002F4.debit",{"title":247,"path":248,"stem":249},"Credit","\u002Fdocs\u002Fwallet-adapter\u002Fcredit","docs\u002F5.wallet-adapter\u002F5.credit",{"title":251,"path":252,"stem":253},"Debit reversal","\u002Fdocs\u002Fwallet-adapter\u002Fdebit-reversal","docs\u002F5.wallet-adapter\u002F6.debit-reversal",{"title":255,"path":256,"stem":257},"Idempotency","\u002Fdocs\u002Fwallet-adapter\u002Fidempotency","docs\u002F5.wallet-adapter\u002F7.idempotency",{"title":259,"path":260,"stem":261,"children":262,"page":21},"Webhooks","\u002Fdocs\u002Fwebhooks","docs\u002F6.webhooks",[263,266,270,274,278,282],{"title":10,"path":264,"stem":265},"\u002Fdocs\u002Fwebhooks\u002Foverview","docs\u002F6.webhooks\u002F1.overview",{"title":267,"path":268,"stem":269},"Signatures","\u002Fdocs\u002Fwebhooks\u002Fsignatures","docs\u002F6.webhooks\u002F2.signatures",{"title":271,"path":272,"stem":273},"Event envelope","\u002Fdocs\u002Fwebhooks\u002Fevent-envelope","docs\u002F6.webhooks\u002F3.event-envelope",{"title":275,"path":276,"stem":277},"Event types","\u002Fdocs\u002Fwebhooks\u002Fevent-types","docs\u002F6.webhooks\u002F4.event-types",{"title":279,"path":280,"stem":281},"Retry and replay","\u002Fdocs\u002Fwebhooks\u002Fretry-and-replay","docs\u002F6.webhooks\u002F5.retry-and-replay",{"title":283,"path":284,"stem":285},"Receiver examples","\u002Fdocs\u002Fwebhooks\u002Freceiver-examples","docs\u002F6.webhooks\u002F6.receiver-examples",{"title":287,"path":288,"stem":289,"children":290,"page":21},"Testing And Staging","\u002Fdocs\u002Ftesting-and-staging","docs\u002F7.testing-and-staging",[291,295,298,302,306],{"title":292,"path":293,"stem":294},"Staging overview","\u002Fdocs\u002Ftesting-and-staging\u002Fstaging-overview","docs\u002F7.testing-and-staging\u002F1.staging-overview",{"title":102,"path":296,"stem":297},"\u002Fdocs\u002Ftesting-and-staging\u002Fsimulator","docs\u002F7.testing-and-staging\u002F2.simulator",{"title":299,"path":300,"stem":301},"Wallet failure drills","\u002Fdocs\u002Ftesting-and-staging\u002Fwallet-failure-drills","docs\u002F7.testing-and-staging\u002F3.wallet-failure-drills",{"title":303,"path":304,"stem":305},"Webhook drills","\u002Fdocs\u002Ftesting-and-staging\u002Fwebhook-drills","docs\u002F7.testing-and-staging\u002F4.webhook-drills",{"title":307,"path":308,"stem":309},"Production cutover rehearsal","\u002Fdocs\u002Ftesting-and-staging\u002Fproduction-cutover-rehearsal","docs\u002F7.testing-and-staging\u002F5.production-cutover-rehearsal",{"title":311,"path":312,"stem":313,"children":314,"page":21},"Production Readiness","\u002Fdocs\u002Fproduction-readiness","docs\u002F8.production-readiness",[315,319,323,327],{"title":316,"path":317,"stem":318},"Checklist","\u002Fdocs\u002Fproduction-readiness\u002Fchecklist","docs\u002F8.production-readiness\u002F1.checklist",{"title":320,"path":321,"stem":322},"Operational runbook","\u002Fdocs\u002Fproduction-readiness\u002Foperational-runbook","docs\u002F8.production-readiness\u002F2.operational-runbook",{"title":324,"path":325,"stem":326},"Security","\u002Fdocs\u002Fproduction-readiness\u002Fsecurity","docs\u002F8.production-readiness\u002F3.security",{"title":328,"path":329,"stem":330},"Rollback","\u002Fdocs\u002Fproduction-readiness\u002Frollback","docs\u002F8.production-readiness\u002F4.rollback",{"title":332,"path":333,"stem":334,"children":335,"page":21},"Reference","\u002Fdocs\u002Freference","docs\u002F9.reference",[336,340,344,348,352],{"title":337,"path":338,"stem":339},"Statuses","\u002Fdocs\u002Freference\u002Fstatuses","docs\u002F9.reference\u002F1.statuses",{"title":341,"path":342,"stem":343},"Scopes","\u002Fdocs\u002Freference\u002Fscopes","docs\u002F9.reference\u002F2.scopes",{"title":345,"path":346,"stem":347},"Units and money","\u002Fdocs\u002Freference\u002Funits-and-money","docs\u002F9.reference\u002F3.units-and-money",{"title":349,"path":350,"stem":351},"Changelog","\u002Fdocs\u002Freference\u002Fchangelog","docs\u002F9.reference\u002F4.changelog",{"title":353,"path":354,"stem":355},"Virtual AMM","\u002Fdocs\u002Freference\u002Fvirtual-amm","docs\u002F9.reference\u002F5.virtual-amm",{"id":357,"title":57,"body":358,"description":1273,"extension":1274,"links":1275,"meta":1276,"navigation":1277,"path":58,"seo":1278,"stem":59,"__hash__":1279},"docs\u002Fdocs\u002F11.polyflight\u002F5.operations-reconciliation-and-rollback.md",{"type":359,"value":360,"toc":1250},"minimark",[361,365,369,374,434,437,441,449,487,506,510,513,548,554,558,568,663,669,707,715,719,897,924,928,985,988,992,997,1000,1004,1007,1011,1017,1021,1024,1028,1043,1047,1076,1083,1087,1090,1094,1100,1104,1107,1111,1114,1118,1121,1148,1156,1160,1167,1170,1188,1191,1214,1217,1221,1235,1246],[362,363,57],"h1",{"id":364},"operations-reconciliation-and-rollback",[366,367,368],"p",{},"Polyflight separates an authoritative game result from wallet delivery. A ticket can be definitively won or refunded while its payout or refund remains owed, or definitively lost while its zero-amount result acknowledgement remains outstanding. Never change a result, committed proof, or statement to hide a wallet failure.",[370,371,373],"h2",{"id":372},"operator-and-polynion-responsibilities","Operator and Polynion responsibilities",[375,376,377,390],"table",{},[378,379,380],"thead",{},[381,382,383,387],"tr",{},[384,385,386],"th",{},"Operator staff",[384,388,389],{},"Authorized Polynion operations",[391,392,393,402,410,418,426],"tbody",{},[381,394,395,399],{},[396,397,398],"td",{},"Inspect operator-owned flights, tickets, wallet operations, statements, payments, and corrections",[396,400,401],{},"Resolve an ambiguous operation after reviewing authoritative evidence",[381,403,404,407],{},[396,405,406],{},"Query the operator wallet ledger by the original wallet idempotency key, including zero-amount loss acknowledgement records",[396,408,409],{},"Record the audited resolution decision and evidence reference",[381,411,412,415],{},[396,413,414],{},"Supply redacted ledger evidence and remote reference",[396,416,417],{},"Resume the original key only when non-application is definitive and same-key behavior permits it",[381,419,420,423],{},[396,421,422],{},"Reconcile exports against the wallet ledger and bank evidence",[396,424,425],{},"Record interparty payments and additive statement corrections",[381,427,428,431],{},[396,429,430],{},"Pause the operator-side adapter if its behavior is unsafe",[396,432,433],{},"Suspend new Polyflight purchases or coordinate wider incident containment",[366,435,436],{},"Operator dashboard\u002FAPI access is read-only for resolutions, terms, statement finalization, payments, and corrections. Do not treat the absence of a write button or API route as a reason to replay money yourself.",[370,438,440],{"id":439},"start-from-the-dashboard","Start from the dashboard",[366,442,443,444,448],{},"Open ",[445,446,447],"strong",{},"Operator Dashboard → Polyflight"," and follow this order:",[450,451,452,464,470,476,482],"ol",{},[453,454,455,458,459,463],"li",{},[445,456,457],{},"Tickets"," — establish the authoritative ticket result and ",[460,461,462],"code",{},"paymentStatus",".",[453,465,466,469],{},[445,467,468],{},"Wallet operations"," — find the exact effect, original idempotency key, state, attempts, remote reference, and request\u002Fresponse evidence.",[453,471,472,475],{},[445,473,474],{},"Flights"," — confirm flight state and cohort liability.",[453,477,478,481],{},[445,479,480],{},"Settlement reports"," — confirm whether the liability is carried in a finalized month.",[453,483,484,486],{},[445,485,154],{}," — confirm notification delivery separately from money delivery.",[366,488,489,490,493,494,497,498,501,502,505],{},"The overview's ",[445,491,492],{},"Unresolved wallet effects"," count includes ",[460,495,496],{},"sent",", ",[460,499,500],{},"unknown",", and ",[460,503,504],{},"manual_review"," operations, including loss deliveries. A zero count does not mean all user liabilities are paid; check unpaid winnings, refunds, and compensations too. Conversely, an unresolved loss delivery is not a monetary liability and does not block flight financial settlement.",[370,507,509],{"id":508},"trace-one-immutable-effect","Trace one immutable effect",[366,511,512],{},"For every wallet-effect case, preserve and correlate:",[450,514,515,518,525,532,535,542,545],{},[453,516,517],{},"purchase request or ticket ID;",[453,519,520,521,524],{},"operation ID, effect, direction, original ",[460,522,523],{},"idempotencyKey",", and pinned wallet transport;",[453,526,527,528,531],{},"immutable request\u002Fresponse evidence and optional ",[460,529,530],{},"remoteReference",";",[453,533,534],{},"payment obligation ID and state, for both money owed and zero-amount loss delivery;",[453,536,537,538,541],{},"webhook ",[460,539,540],{},"event_id"," and delivery attempts;",[453,543,544],{},"accounting event and confirmed cash clearing, for monetary effects only;",[453,546,547],{},"current liability or finalized statement\u002Fpayment\u002Fcorrection record, when money is involved.",[366,549,550,551,463],{},"The public request trace ID is diagnostic only. Query the wallet ledger by the ",[445,552,553],{},"financial idempotency key",[370,555,557],{"id":556},"find-unresolved-operations","Find unresolved operations",[366,559,560,561,564,565,463],{},"Required scopes are ",[460,562,563],{},"polyflight:read"," and ",[460,566,567],{},"balance_operations:read",[569,570,575],"pre",{"className":571,"code":572,"language":573,"meta":574,"style":574},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -sS -G \\\n  -H \"Authorization: Bearer ${OPERATOR_API_KEY}\" \\\n  --data-urlencode \"status=sent,unknown,manual_review\" \\\n  --data-urlencode \"search=operator-user-123\" \\\n  \"https:\u002F\u002Fyour-beacon-origin.example.com\u002Fapi\u002Foperator\u002Fpolyflight\u002Fbalance-operations\"\n","bash","",[460,576,577,597,621,637,651],{"__ignoreMap":574},[578,579,582,586,590,593],"span",{"class":580,"line":581},"line",1,[578,583,585],{"class":584},"sBMFI","curl",[578,587,589],{"class":588},"sfazB"," -sS",[578,591,592],{"class":588}," -G",[578,594,596],{"class":595},"sTEyZ"," \\\n",[578,598,600,603,607,610,613,616,619],{"class":580,"line":599},2,[578,601,602],{"class":588},"  -H",[578,604,606],{"class":605},"sMK4o"," \"",[578,608,609],{"class":588},"Authorization: Bearer ",[578,611,612],{"class":605},"${",[578,614,615],{"class":595},"OPERATOR_API_KEY",[578,617,618],{"class":605},"}\"",[578,620,596],{"class":595},[578,622,624,627,629,632,635],{"class":580,"line":623},3,[578,625,626],{"class":588},"  --data-urlencode",[578,628,606],{"class":605},[578,630,631],{"class":588},"status=sent,unknown,manual_review",[578,633,634],{"class":605},"\"",[578,636,596],{"class":595},[578,638,640,642,644,647,649],{"class":580,"line":639},4,[578,641,626],{"class":588},[578,643,606],{"class":605},[578,645,646],{"class":588},"search=operator-user-123",[578,648,634],{"class":605},[578,650,596],{"class":595},[578,652,654,657,660],{"class":580,"line":653},5,[578,655,656],{"class":605},"  \"",[578,658,659],{"class":588},"https:\u002F\u002Fyour-beacon-origin.example.com\u002Fapi\u002Foperator\u002Fpolyflight\u002Fbalance-operations",[578,661,662],{"class":605},"\"\n",[366,664,665,668],{},[460,666,667],{},"search"," matches only external user ID or idempotency key. For each match, request the detail evidence:",[569,670,672],{"className":571,"code":671,"language":573,"meta":574,"style":574},"curl -sS \\\n  -H \"Authorization: Bearer ${OPERATOR_API_KEY}\" \\\n  \"https:\u002F\u002Fyour-beacon-origin.example.com\u002Fapi\u002Foperator\u002Fpolyflight\u002Fbalance-operations\u002F{operationId}\"\n",[460,673,674,682,698],{"__ignoreMap":574},[578,675,676,678,680],{"class":580,"line":581},[578,677,585],{"class":584},[578,679,589],{"class":588},[578,681,596],{"class":595},[578,683,684,686,688,690,692,694,696],{"class":580,"line":599},[578,685,602],{"class":588},[578,687,606],{"class":605},[578,689,609],{"class":588},[578,691,612],{"class":605},[578,693,615],{"class":595},[578,695,618],{"class":605},[578,697,596],{"class":595},[578,699,700,702,705],{"class":580,"line":623},[578,701,656],{"class":605},[578,703,704],{"class":588},"https:\u002F\u002Fyour-beacon-origin.example.com\u002Fapi\u002Foperator\u002Fpolyflight\u002Fbalance-operations\u002F{operationId}",[578,706,662],{"class":605},[366,708,709,710,714],{},"Use ",[711,712,713],"a",{"href":192},"Balance operations API"," for exact filters, statuses, and response fields.",[370,716,718],{"id":717},"interpret-operation-ticket-and-payment-state","Interpret operation, ticket, and payment state",[375,720,721,734],{},[378,722,723],{},[381,724,725,728,731],{},[384,726,727],{},"Evidence",[384,729,730],{},"Meaning",[384,732,733],{},"Operator action",[391,735,736,750,762,775,788,801,816,834,848,869,884],{},[381,737,738,744,747],{},[396,739,740,741],{},"operation ",[460,742,743],{},"planned",[396,745,746],{},"Durable effect exists but dispatch has not been confirmed",[396,748,749],{},"Do not create a replacement key",[381,751,752,756,759],{},[396,753,740,754],{},[460,755,496],{},[396,757,758],{},"Request was dispatched without a terminal recorded answer",[396,760,761],{},"Treat delivery as unresolved; a loss still has zero cash impact",[381,763,764,769,772],{},[396,765,740,766],{},[460,767,768],{},"retrying",[396,770,771],{},"Intermediate recovery state on the same durable operation",[396,773,774],{},"Observe; do not race it with a manual replay",[381,776,777,782,785],{},[396,778,740,779],{},[460,780,781],{},"succeeded",[396,783,784],{},"Wallet effect is confirmed, including a loss acknowledgement",[396,786,787],{},"Match amount, user, reason, key, and optional remote reference",[381,789,790,795,798],{},[396,791,740,792],{},[460,793,794],{},"failed",[396,796,797],{},"Recorded attempt did not apply",[396,799,800],{},"Preserve evidence; do not infer anything about a different attempt",[381,802,803,810,813],{},[396,804,740,805,807,808],{},[460,806,500],{}," or ",[460,809,504],{},[396,811,812],{},"Application remains ambiguous or requires authenticated evidence",[396,814,815],{},"Freeze replay and escalate with ledger proof",[381,817,818,828,831],{},[396,819,820,821,824,825],{},"ticket ",[460,822,823],{},"won"," + payment ",[460,826,827],{},"owed",[396,829,830],{},"Result is final; payout is an outstanding liability",[396,832,833],{},"Reconcile the win-credit obligation",[381,835,836,842,845],{},[396,837,820,838,824,840],{},[460,839,823],{},[460,841,504],{},[396,843,844],{},"Result is final; the attempted payout was rejected or is ambiguous",[396,846,847],{},"Reconcile the linked operation; never rerun the game",[381,849,850,859,862],{},[396,851,820,852,855,856],{},[460,853,854],{},"lost"," + payment not ",[460,857,858],{},"paid",[396,860,861],{},"Result is final; zero-amount acknowledgement is outstanding or under review",[396,863,864,865,868],{},"Reconcile the ",[460,866,867],{},":loss"," operation; no payout or liability exists",[381,870,871,878,881],{},[396,872,820,873,855,876],{},[460,874,875],{},"refunded",[460,877,858],{},[396,879,880],{},"Cancellation\u002Frefund result is final; delivery remains outstanding",[396,882,883],{},"Reconcile the full original stake",[381,885,886,891,894],{},[396,887,888,889],{},"payment ",[460,890,858],{},[396,892,893],{},"The linked credit\u002Freversal or loss acknowledgement is confirmed",[396,895,896],{},"Match cash outflow for monetary effects; loss acknowledgement has no outflow",[366,898,899,900,903,904,907,908,911,912,915,916,919,920,923],{},"A newly settled lost ticket has an obligation with effect ",[460,901,902],{},"loss"," and amount ",[460,905,906],{},"0",", linked to a ",[460,909,910],{},"loss_credit"," operation. It uses reason ",[460,913,914],{},"mini_app_polyflight_loss"," and key ",[460,917,918],{},"mini_app_polyflight_ticket:{ticketId}:loss",". It tracks delivery, not debt. The existing ",[460,921,922],{},"ticket.resolved"," event carries the obligation ID; no loss payout pending\u002Fprocessed event is emitted. Historical losses are not backfilled. A refund and a winning payout cannot coexist for the same ticket.",[370,925,927],{"id":926},"reconciliation-procedure","Reconciliation procedure",[450,929,930,933,936,956,959,962,965,968,982],{},[453,931,932],{},"Freeze automated or human replay for the affected effect.",[453,934,935],{},"Capture operator, external user, purchase\u002Fticket\u002Fflight\u002Fobligation IDs, operation ID, original idempotency key, pinned transport, UTC window, and webhook event IDs.",[453,937,938,939,497,942,497,945,497,948,497,951,501,954,463],{},"Read the operation detail and retain ",[460,940,941],{},"requestJson",[460,943,944],{},"responseJson",[460,946,947],{},"failureReason",[460,949,950],{},"attemptCount",[460,952,953],{},"stateVersion",[460,955,530],{},[453,957,958],{},"Query the simulator or REST v1 wallet ledger by the financial idempotency key.",[453,960,961],{},"Compare external user, currency, amount, reason, operation metadata, and transport with the immutable OpenPoly request evidence.",[453,963,964],{},"Determine only what the ledger proves: applied, not applied, or still unknown.",[453,966,967],{},"Send the authenticated evidence\u002Freference to Polynion operations. Do not mutate the operation through an operator API; no such route exists.",[453,969,970,971,807,974,977,978,981],{},"An authorized Polynion administrator records ",[460,972,973],{},"confirmed_applied",[460,975,976],{},"confirmed_not_applied"," with a reason, evidence reference, and expected state version. ",[460,979,980],{},"authorized_original_key_resume"," is reserved for definitive non-application when same-key behavior permits safe resumption.",[453,983,984],{},"Recheck the same operation, ticket payment status, overview liability, webhook delivery, and any affected statement\u002Fcorrection.",[366,986,987],{},"If non-application is definitive but the external system cannot safely accept the original key again, resolve the existing monetary obligation with authenticated manual payment evidence. For a loss, the evidence must prove that the zero-amount result was recorded under the existing key; there is no manual cash payment to make. Never invent a new key to bypass uncertainty.",[370,989,991],{"id":990},"common-failure-cases","Common failure cases",[993,994,996],"h3",{"id":995},"purchase-debit-definitely-rejected","Purchase debit definitely rejected",[366,998,999],{},"Expected: no ticket, no fee or position accounting, and no compensation operation because no money moved.",[993,1001,1003],{"id":1002},"purchase-debit-applied-response-timed-out","Purchase debit applied, response timed out",[366,1005,1006],{},"Expected: no automatic primary replay and no ticket until authoritative evidence confirms application. After confirmation, clearing is recorded once; the ticket is admitted only if still eligible, otherwise the exact debit becomes compensation payable.",[993,1008,1010],{"id":1009},"debit-confirmed-after-gate-closure","Debit confirmed after gate closure",[366,1012,1013,1014,463],{},"The gate wins over request start time. No late ticket enters the committed snapshot. The full debit is reversed through ",[460,1015,1016],{},"mini_app_polyflight_purchase_compensation",[993,1018,1020],{"id":1019},"admission-response-lost","Admission response lost",[366,1022,1023],{},"Query\u002Fretry the same durable purchase intent. If admission committed, the existing ticket is returned. Do not reverse a debit merely because an internal response was lost.",[993,1025,1027],{"id":1026},"winning-credit-unresolved","Winning credit unresolved",[366,1029,1030,1031,1033,1034,497,1036,1039,1040,1042],{},"The ticket remains ",[460,1032,823],{},". Payment remains ",[460,1035,827],{},[460,1037,1038],{},"in_flight",", or ",[460,1041,504],{},"; the winnings liability remains visible. Do not label it paid or alter signed position income.",[993,1044,1046],{"id":1045},"losing-result-acknowledgement-unresolved","Losing-result acknowledgement unresolved",[366,1048,1030,1049,1051,1052,564,1055,1058,1059,497,1061,1039,1063,1065,1066,1068,1069,1071,1072,1075],{},[460,1050,854],{},", with ",[460,1053,1054],{},"paymentEffect: \"loss\"",[460,1056,1057],{},"paymentAmountMinor: \"0\"",". Delivery can be ",[460,1060,827],{},[460,1062,1038],{},[460,1064,504],{},"; ",[460,1067,858],{}," means acknowledged, not paid cash. Follow the same ambiguity and authenticated manual-resolution process using the original ",[460,1070,867],{}," key. The wallet must durably record the result with an unchanged balance; ",[460,1073,1074],{},"remote_reference"," is optional. No clearing entry, financial liability, loss payout callback, or financial-settlement delay is introduced.",[366,1077,1078,1079,1082],{},"Retain the original request\u002Fresponse evidence and pinned transport. Older already-planned\u002Fdispatched win requests are not rewritten to add ",[460,1080,1081],{},"result: \"won\"",", and historical losses are not replayed to generate deliveries.",[993,1084,1086],{"id":1085},"cancellation-refund-unresolved","Cancellation refund unresolved",[366,1088,1089],{},"Fee entitlement ends at cancellation. The full original stake remains refund payable until confirmed; delivery timing does not restore the fee.",[993,1091,1093],{"id":1092},"duplicate-delivery-or-notification","Duplicate delivery or notification",[366,1095,1096,1097,1099],{},"The same financial 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 replay may repeat an event envelope, so receivers deduplicate by ",[460,1098,540],{},"; it never authorizes wallet mutation replay.",[993,1101,1103],{"id":1102},"missing-or-stale-comparison-rate","Missing or stale comparison rate",[366,1105,1106],{},"No FX lookup occurs during purchase, payout, or gate processing. A committed cached fallback rate remains frozen and is disclosed after reveal. If no valid pre-boarding observation exists, IDR entry is unavailable for that flight; existing global Credits progress is unaffected.",[993,1108,1110],{"id":1109},"operator-outage-or-suspension","Operator outage or suspension",[366,1112,1113],{},"Block new admission. Continue recovery for existing payout, loss acknowledgement, refund, compensation, reconciliation, webhook evidence, and report reads. One operator outage does not change or withhold the global result.",[370,1115,1117],{"id":1116},"reconcile-statement-impact","Reconcile statement impact",[366,1119,1120],{},"After wallet state is resolved:",[450,1122,1123,1130,1135,1138,1145],{},[453,1124,1125,1126,1129],{},"Check ",[460,1127,1128],{},"\u002Fapi\u002Foperator\u002Fpolyflight\u002Foverview"," for the current liability and confirmed clearing totals.",[453,1131,1132,1133,463],{},"Find the ticket and verify result separately from ",[460,1134,462],{},[453,1136,1137],{},"Confirm that a successful monetary credit\u002Freversal appears as clearing outflow and releases the matching liability, without changing fee or position allocation. A successful loss acknowledgement creates no accounting entry, clearing movement, or liability change; unresolved zero-amount delivery does not block flight financial settlement.",[453,1139,1140,1141,1144],{},"If the economic period is already finalized, inspect ",[460,1142,1143],{},"\u002F{statementId}\u002Fadjustments","; the original signed statement remains immutable and any late correction is applied to a later open statement.",[453,1146,1147],{},"Download the canonical statement JSON and payment history for the case file.",[366,1149,1150,1151,564,1153,463],{},"See ",[711,1152,53],{"href":54},[711,1154,1155],{"href":200},"Settlement reports API",[370,1157,1159],{"id":1158},"safe-rollback-and-incident-containment","Safe rollback and incident containment",[366,1161,1162,1163,1166],{},"First disable ",[445,1164,1165],{},"new Polyflight operator purchases"," for the affected operator or adapter. Keep payout, loss acknowledgement, refund, compensation, reconciliation, webhook evidence, and report reads running.",[366,1168,1169],{},"Safe actions:",[1171,1172,1173,1176,1179,1182,1185],"ul",{},[453,1174,1175],{},"disable operator Polyflight entry or pause the affected adapter;",[453,1177,1178],{},"pause future global generation when protocol integrity is in question;",[453,1180,1181],{},"deploy a forward fix or the last build that can still read and process protocol v5;",[453,1183,1184],{},"revert only future, unclaimed-wave policy after accounting for existing flights;",[453,1186,1187],{},"preserve operations, events, statements, proof artifacts, and audit history.",[366,1189,1190],{},"Unsafe actions:",[1171,1192,1193,1196,1199,1202,1205,1208,1211],{},[453,1194,1195],{},"roll back to a binary that cannot read v5 while v5 flights or obligations exist;",[453,1197,1198],{},"drop or reverse financial\u002Fproof tables as a traffic rollback;",[453,1200,1201],{},"change a committed valuation, snapshot, result, winner, payout, or terms version;",[453,1203,1204],{},"cancel a post-commitment flight through normal operations;",[453,1206,1207],{},"replay an ambiguous primary mutation or invent a new idempotency key;",[453,1209,1210],{},"delete evidence or rewrite a finalized statement;",[453,1212,1213],{},"switch all operator users to simulator mode.",[366,1215,1216],{},"After containment, reconcile the oldest unresolved operations and liabilities first, verify webhook delivery, compare statement\u002Fexport parity, and retain redacted evidence. Production deployment or operator enablement is a separate authorized action; staging readiness does not imply it.",[370,1218,1220],{"id":1219},"required-staging-drills","Required staging drills",[366,1222,1223,1224,497,1227,1230,1231,1234],{},"Use dedicated user-scoped simulator wallets to exercise definite rejection, applied-then-timeout, credit applied-then-timeout, same-key duplicate\u002Fconflict, admitted cancellation\u002Frefund, late confirmed debit\u002Fcompensation, win owed\u002Fpaid\u002Fmanual-review, and loss acknowledged\u002Funresolved\u002Fmanual-review. For loss, verify the exactly zero ",[460,1225,1226],{},"\u002Fcredit",[460,1228,1229],{},"operation: \"loss\""," \u002F ",[460,1232,1233],{},"result: \"lost\""," metadata, unchanged balance, same-key acknowledgement, no monetary accounting entry, and no loss payout pending\u002Fprocessed callback. Certify the same narrow zero-amount contract against the real adapter; generic simulator\u002Fmanual wallet-operation amounts remain positive.",[366,1236,1237,1238,1241,1242,1245],{},"Launch the user from ",[445,1239,1240],{},"Operator Dashboard → Simulator → Users → Simulator",", select product ",[460,1243,1244],{},"polyflight",", and follow the single-use launch URL into Mini App Client. Do not substitute direct session-cookie injection or API-only testing. Simulator evidence proves OpenPoly's state machine, not a real operator adapter; certify REST v1 separately against dedicated non-production wallet infrastructure with small amounts.",[1247,1248,1249],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":574,"searchDepth":599,"depth":599,"links":1251},[1252,1253,1254,1255,1256,1257,1258,1270,1271,1272],{"id":372,"depth":599,"text":373},{"id":439,"depth":599,"text":440},{"id":508,"depth":599,"text":509},{"id":556,"depth":599,"text":557},{"id":717,"depth":599,"text":718},{"id":926,"depth":599,"text":927},{"id":990,"depth":599,"text":991,"children":1259},[1260,1261,1262,1263,1264,1265,1266,1267,1268,1269],{"id":995,"depth":623,"text":996},{"id":1002,"depth":623,"text":1003},{"id":1009,"depth":623,"text":1010},{"id":1019,"depth":623,"text":1020},{"id":1026,"depth":623,"text":1027},{"id":1045,"depth":623,"text":1046},{"id":1085,"depth":623,"text":1086},{"id":1092,"depth":623,"text":1093},{"id":1102,"depth":623,"text":1103},{"id":1109,"depth":623,"text":1110},{"id":1116,"depth":599,"text":1117},{"id":1158,"depth":599,"text":1159},{"id":1219,"depth":599,"text":1220},"Reconcile Polyflight wallet effects, handle failures safely, and contain incidents without changing committed results.","md",null,{},true,{"title":57,"description":1273},"L5L5FzwNWRXeAqIZm-6HKsl8d_mKVDqJhwTJW6L1DfE",[1281,1283],{"title":53,"path":54,"stem":55,"description":1282,"children":-1},"Read commercial terms and reconcile native-IDR fee, signed position, liabilities, payments, carry, and exports.",{"title":61,"path":62,"stem":63,"description":1284,"children":-1},"Walk through the live board, IDR ticket purchase, calculator, ticket results, and Black Box verification.",1791200238061]