{"type":"session","version":3,"id":"019e2cc4-5ce2-7152-9d93-2da1ed1aa9ea","timestamp":"2026-05-15T17:52:06.883Z","cwd":"/home/sebas"}
{"type":"model_change","id":"4805b09a","parentId":null,"timestamp":"2026-05-15T17:52:08.402Z","provider":"openai-codex","modelId":"gpt-5.4"}
{"type":"thinking_level_change","id":"75ac84cd","parentId":"4805b09a","timestamp":"2026-05-15T17:52:08.402Z","thinkingLevel":"low"}
{"type":"message","id":"770154de","parentId":"75ac84cd","timestamp":"2026-05-15T17:52:51.036Z","message":{"role":"user","content":[{"type":"text","text":"[telegram] hazme en inglés, un texto explicando con flechas, el flujo muy simple de cómo se paga en máquina expendedora. Muy grandes rasgos para explicar el rol del código QR"}],"timestamp":1778867571019}}
{"type":"message","id":"67b313c7","parentId":"770154de","timestamp":"2026-05-15T17:52:54.591Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"","thinkingSignature":"{\"id\":\"rs_08ae000d0bfd110c016a075d746c7881948e96495f9b42f948\",\"type\":\"reasoning\",\"encrypted_content\":\"gAAAAABqB110DtpBsbnZ06JLJVimKVeRzVVl2jbH66Ivzc2-vRyoddlVjg6D4Sjqf4mqe4xEb4qHPE24XiH8kAlMJqSkzhlOMD2aKzx4eUE0kDKnxC2UozsmEc2JB-lVPgcaU_jyZmYGhpwSlhl0P9XqDzZk-qILvn-kujwLC3KEyS6l6OoluoVkH_xDDOrEneOFGhxHyq0Tw_CUIOUagRYhR6tp3LS6o023Cac1hsuKOGoVGS3Uaj4I8RUUJudEFREbdDw_YiJ2Vd4XVZhYpqrbtMhvIPRv2NFUTkmrBi7tFt5rxOU69q1T6Z-uTlSp3RL5T2YxGbWhGlGoBW_H6stAsgBTn5R4pHsF8TcWkDWagw-n6E329ZFw4yRBXQk29qzurxuJtbkshbXjpBjLfY4zkVm-3hm3oTk_LmwpG5KTeHMg5BMpxJ9MQ5OYc4se3EMMpnPrc3SZhp0Go8Dm4iZAdnc-2jMSCy5trFImkeU8DH6-DUnQ4kHfqOMuO3Wt74QDa2Ms7jCzqeZxnoE5nIT0jG8CeZwX9kRwlzfKyV8ir8rfvA8kLFSE8TDTCjiaosoxHhEwTqZ1SSar6dE3751G1kQSUWjgwFBPffsfKT_GHw8U7fJqqN-WN2q4m4kMj0Rl0na5gkAPZxD_RTB-IJPFjR3TNwIQuKVbtOZT1FgmAqxJd5wCmSDic6xd9erxdgtHM53hMcMfD9v8Q__3Ny0yxCMvsLtKz8y8eWpptumAS5Q_MfgwMAbkcgJH6ruEG1Frw_WJUGCWakUmz3ydDPC0tAUyOdWzMlNgDOo5rEPj9HiFFuliQp9DnU2dgiflwfZgTKcYeZcILNX4FZR_WznjIw4bDCwLKZht4f1ohrdJeRMUfbJ9ErCL-Sn4HcvpFNPbeC9ufGS5j4UQ_pwZ7HxIDXxLLIbdANYYTSfXXzCaIikgb015Asidc63QWiXV-1eAP_GqbaA4\",\"summary\":[]}"},{"type":"text","text":"Simple payment flow for a vending machine:\n\nUser chooses product  \n→ Machine shows payment option  \n→ User scans the QR code  \n→ QR opens the payment page/app  \n→ User confirms payment  \n→ Payment system approves transaction  \n→ Machine receives confirmation  \n→ Machine dispenses the product\n\nRole of the QR code:\nThe QR code is the bridge between the physical machine and the digital payment flow. It connects the user to the correct payment session so the system knows which machine and purchase to charge.","textSignature":"{\"v\":1,\"id\":\"msg_08ae000d0bfd110c016a075d74e7188194b314db24e49f4bdd\",\"phase\":\"final_answer\"}"}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":4504,"output":114,"cacheRead":0,"cacheWrite":0,"totalTokens":4618,"cost":{"input":0.011260000000000001,"output":0.0017100000000000001,"cacheRead":0,"cacheWrite":0,"total":0.01297}},"stopReason":"stop","timestamp":1778867571038,"responseId":"resp_08ae000d0bfd110c016a075d73d4688194ad5aff93ad75f2df"}}
{"type":"message","id":"357cd185","parentId":"67b313c7","timestamp":"2026-05-15T19:02:01.027Z","message":{"role":"user","content":[{"type":"text","text":"[telegram] hay mencion de que la app de mmlas maquinas muestra qrs externos con webview? o que dice de ese flujo?"}],"timestamp":1778871721018}}
{"type":"message","id":"0cc110c1","parentId":"357cd185","timestamp":"2026-05-15T19:02:05.841Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"","thinkingSignature":"{\"id\":\"rs_08ae000d0bfd110c016a076dab365081948cdb28921abf61a2\",\"type\":\"reasoning\",\"encrypted_content\":\"gAAAAABqB22tuGqCuzSV1eMffRZc26hfTzktZJLBKfg0f7O4Btk0SuAeYPBwF3tAl9cfXgTMalpxQOsYV0OnWIPeEBoo9pwcWuqFO9KcItREmaFxpWduSyjONtUoGaWEBBqjULkp4sNgJVqgS87XjYbto-rWwGDxH3m10gWAt3q-S11HwXvMOZin9a3bG4iHI5bdDCQUV837a2Tyt5zvlaMlhdp6SLH6Y5k9FHIvh3qp4buNhlY70469iKup47DkldgJAaZtKIIKBus-0N9hDMrsIdvhdVk6fuyTNuxr7iWfJYohqetozp5b0mDA0Pau7QWascta81_wLhvKcRVkLIMURPTPSCPmiuADXW6aDWhJzZ7c45xen0t-r-_PLcfxbrTovIZ7mG8v_zZM7v1eqP696hw5gl7LOonEMlSC9INCu_VB3QluK5PWHXCg9VlShUhdvCPGF0MQrftDhs_jKt3sG9UjGzV1hS0k53gaOJP6eqdTFZ2Z9lrBxbgpsVVPl5JAfA9_BMEe3Xc9OrnIQAzZWpS473wT80IctwVcHVci53hjX7zyAP10R7uZWMoYUIccbC_Qq_WZJ3BZ50mJhs5eEM1hKnPNSGzEDiWMDCEbGratdhcTbpMOJIxIqApV_dOEU-A4SLhalZtkKZNaPeWFS8-gJF_K0F7nk9f8IBV3VI36A3mSHxQxzjY-XKtVWuLAbyp0Uzqnj_I6WTNBoab1eYX218_GEAeImVvJEhlAHQdJ2z1tSktXvd6ur4dehdQPtI0A2kOVWrijt5kGpEgQhYl6aeORDlGjf-0We8BzwgBi6UaIMINGawe1kt86R9WJuYEukZL3cG0oxhoT9LV6VSbXYNV20krADv9cxJLFo-D92IUPfpdTs0Eo9BSg9ubWcm9MKPKdMelEPBsKJM2MvknDbKpE8X83ZfQzbrmOTHr01WLA-4VBtt13Hg2wAdbNDW62_W5YE5_qkr-3z9_ccKSLezOrcA7onQaSonXHewu0oqaeY73LSMk4_7D3CRcbILXChikGG-YSuNwy4EYf-GmnZTD-cS4C13MW_q3EvePBsZap_w2qbVg7j2w3IciUGRnmUl-0XCPJfKjNshjXT_66ncXYogtUzzoy4clgtRgovRUN8HZ05ZVj_9l7iZ40tQ3O313kOBrEYfjbSVEVLbKa8wOiwJ3xhVs9YiWjzBKcAeKGHt00KqCiubvjCvYNCvzWySwI0UgOvpmphuAW8zeB6IGIBU6VRxhzIlluPsaEqlVYcIQ5f5xRL5tH1CDh8uHIZ2qxb9OVwPZpe4-XfsU_BLsR5rTCEqkaA1s3n3BEhDkqcInIJ5JdqkVEdM9feUshAc-ZrmNx6dUgNSuIxoTKyYv9g0osJCX0VBuL5xXT9edXYI_wpyXmTDTUMBUt0_L7e-JsIvj_3NAcdq16nE_UF2SeBaf2DQxSoqxKdMhw9r9lTpeZSDB5lpIPZ0y1WUXTLYIH1C3s6aDIxDI-rMtHqg2jiYlIYszFpq192xZcjkC3vqu2MpYbA2zNE5ULuIWTbkoHA-DvwxBDokGLaggvOSYYctuCIPYQ45Ju5UuA6zgjPjSXuxQoTtTMlndpWElga5c_\",\"summary\":[]}"},{"type":"toolCall","id":"call_zjvbbqnYYFDcn201IvRFSENa|fc_08ae000d0bfd110c016a076dad7268819497533be327dad6b4","name":"read","arguments":{"path":"/home/sebas/.agents/skills/memory-read/SKILL.md"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":545,"output":139,"cacheRead":4096,"cacheWrite":0,"totalTokens":4780,"cost":{"input":0.0013625000000000002,"output":0.002085,"cacheRead":0.001024,"cacheWrite":0,"total":0.0044715}},"stopReason":"toolUse","timestamp":1778871721020,"responseId":"resp_08ae000d0bfd110c016a076daa7b288194888cddb4e3eb06c2"}}
{"type":"message","id":"a07a7b8e","parentId":"0cc110c1","timestamp":"2026-05-15T19:02:05.851Z","message":{"role":"toolResult","toolCallId":"call_zjvbbqnYYFDcn201IvRFSENa|fc_08ae000d0bfd110c016a076dad7268819497533be327dad6b4","toolName":"read","content":[{"type":"text","text":"---\nname: memory-read\ndescription: Read persisted research memory, claims, and tasks\n---\n\n# personal-memory-search\n\n## Workflow\n\n1. Execute:\n   - `curl -fsSL \"${AGENTS_DB_API:-http://100.116.176.16:8091}/api/search?q=<query>&scope=global&scope=project&limit=20\"`\n2. Return matching runs, claims, and tasks from the JSON response.\n3. Prefer reuse of prior work before starting a new run.\n"}],"isError":false,"timestamp":1778871725850}}
{"type":"message","id":"f7769b55","parentId":"a07a7b8e","timestamp":"2026-05-15T19:02:07.501Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"","thinkingSignature":"{\"id\":\"rs_08ae000d0bfd110c016a076dae95948194b7e049e2fa016922\",\"type\":\"reasoning\",\"encrypted_content\":\"gAAAAABqB22vkMGffX529PbXHZ3GAm78GStcfiXe9SRiotS2nNHuUL1uYnVsmGnQgDNV5BXGvgQ4oh5BUGBdWiYycFGZE2iXMyl_SP9J5hIldck15MD3k-mQenmq1XhB0VbHi80SX9GU8wBp0emsovkcRB0B9zX6juM3kEDVJxVvlDcdoPe9z27YFwkkkS_quswLSbD6YYxaqlpR3ljtV6RadRo_KgyGDC5HktHVWNGCdzDo4A6QwUNrsR6fBPDC_rLhBXG9FFb6GB87fh8jCXVTJQ_o6TP25HnDLC1WJWOkxpySCtsc93KYHDN4llAJUtgqfgu9iuJsn5TrobWnFx_u0uI2M9dSNvQA_VgihWH6oXC6ej49xvrauUFnaWS6XrNb_aJRcjC1ru8tsnlDGS7vFZ2HXBvxCB9WHdiNumpP7mEiI8V9moItIkzqs3fhzKF9sP44JijxjPwXGTX3H4haz8teMbBy30WjhprSDvVROWUcHdozGY8Z5xnBLa-uqk0xpvmCPsF_wCr64Cs_-xOE2C4_u7niZRkP8Fz3ky0ZZgx1FE8Qrh7HO1GOUSx6xt5ZI6WuS3FnAA3Yldjq0sto4icyAIaAmnEB58uhf_pd4XYTxq_AQfTRZc1xpqMTsKOgzYhXfw0HXmXyD3Jcd3MomebrMaFZrQ6ADT_tv7wSGDEbpKada0uKba8XBo3dHEzgVekqg___YJKNaSd6hl-Eejn85dWm1dO1xZxG_KpX5GL5ExWMUX2_t6imNWgNHvFIlGbiPP8VAVtnB1299sv9thOlj1iclE73r4L-dtgYcyKHb5ZvnPTEjJvYTow6wtDKN-mMM2cbKQ45xIeVK9w-OqjEarCDvuAmaV2eNc8CosBtbov2YMT-nuOnbznpGnJZpI_Nw8u4ggLveffi6kqVjgra1KwOH6gXXlWYsE_3aKWgBEj7dhXSPVmMtzstnetk9nk9hgpu\",\"summary\":[]}"},{"type":"toolCall","id":"call_ULDlALDvN5Jgic0U96SMPWRy|fc_08ae000d0bfd110c016a076daf201c81948a14978a0edb8d83","name":"read","arguments":{"path":"/home/sebas/.agents/skills/ballbox-company/SKILL.md"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":797,"output":44,"cacheRead":4096,"cacheWrite":0,"totalTokens":4937,"cost":{"input":0.0019925000000000003,"output":0.00066,"cacheRead":0.001024,"cacheWrite":0,"total":0.0036765}},"stopReason":"toolUse","timestamp":1778871725851,"responseId":"resp_08ae000d0bfd110c016a076dadff5881949d494dd24df87ca7"}}
{"type":"message","id":"12b53e4c","parentId":"f7769b55","timestamp":"2026-05-15T19:02:07.503Z","message":{"role":"toolResult","toolCallId":"call_ULDlALDvN5Jgic0U96SMPWRy|fc_08ae000d0bfd110c016a076daf201c81948a14978a0edb8d83","toolName":"read","content":[{"type":"text","text":"---\nname: ballbox-company\ndescription: Load Ballbox company context and operating namespace\n---\n\n# ballbox-company\n\n## Purpose\n\nLoad the Ballbox company operating context when the request is about Ballbox.\n\n## Workflow\n\n1. Use the Ballbox namespace at `/mnt/rpi/repos/ballbox-company-agent` as the working context root.\n2. Read `/mnt/rpi/repos/ballbox-company-agent/AGENTS.md` and follow its rules.\n3. Use `/mnt/rpi/repos/ballbox-company-agent/index.md` as the default dashboard entry point.\n4. Prefer shared-memory search before assuming facts; avoid invented certainty.\n5. If the work implies repo/code changes, delegate to `~/ai-dev-workflow`.\n"}],"isError":false,"timestamp":1778871727502}}
{"type":"message","id":"56b53dc6","parentId":"12b53e4c","timestamp":"2026-05-15T19:02:11.341Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Searching for memories**\n\nI'm thinking about searching my memories and maybe looking for something in my local repository related to QR or webview. There's likely some useful information there that could help! I'll make sure to dive into both areas because I want to find the best resources for these topics. I really hope I can find the connections that might make this task easier and more efficient for anyone who needs it!","thinkingSignature":"{\"id\":\"rs_08ae000d0bfd110c016a076db02d288194ab0351454825e4c0\",\"type\":\"reasoning\",\"encrypted_content\":\"gAAAAABqB22zvs7rewjtCvTVHOxn2VA4y4TIhb8FtFUrA3Q33M96ns0cVU2oBzyYovNcim_mYoQp7ojBZ_irEpfM-1C8GbnFdUvrVMeI5kMdDRRiC6QPXk2GPjqD0YLUx1Yo5Zcs524FWEXRcZhR69wO8DpqELx9q2VEIlD17_KkmOS3lAo6z8QrYpZyOOjSZZ6RPRByNKGkqz6qaDkJC0j9HMMUytR-bXySVOk83IMQtfXUpHG_kZbRk8P2qcPvfd6zlMpQGwQwQObpQLvu3HzZEYZP6VwpM7RURoHRUsQ4dH-Aisy8LeqxPSqRh-6-_TLZlRHnwydaBJoEqmiLFJO6h2WLtU4PZTU8eAHmUsdtJgF1sa9QotnxXJw_QFTJjLZrJ6wLnis8LzW4OHg8mJoVyuhf3WWK02-O-EuDC5eSH_t48kOLWxb9DYel0xiFwfl7Nqi-7bXDXZCrJyBAhPwu5f-S7jLYrql4mrSqbbBUrwnLnSJJZ7MEs_q_l-IOJ2nlOVgPWZNrAYPO2l2d4YAD7eoW4UQPruWR_Gkzsz_JIu4rF2oMUb0ntOiDcUHk1JBd_rfCMONTZxtPPYC_a10JeLhJwHVEEq7k0xM31Ey7h6Njx2tlrf0ot6qLhtUlljiEiVWhYTFX05wMweRT3I6paw00cEnTJdo06LrKq9YgUEzJ9MMxSzcKxteuwq0z33cjfNxJ4O8bbRjlKnbjg48leizl5bzPgPFsN0M6a8vEb6GSDLGGUiFkl16s-WhJK18HnBr5k8lcUWlRumHCbEDplmtCUEziq-mlx3WMMbr9WuuV6Mq8bfNT-2ZN_Ir2sO9HhiIQ6pYWClGn8oSjO2GS8uEi4tZxAOwwhACjgS8foCAL0Akkx4Stjh9PfcGNVW6qL4uNYjm2EL_JeT_oF5Khcsd3wQ-Sj8lfRioh83IIkU6RBySby_k5A6dr_G0k-js68VFA_Dt4rCmzT2E_vyaMJF8zP5AoEgNQZXxJFcXESMw-54FI0OE=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Searching for memories**\\n\\nI'm thinking about searching my memories and maybe looking for something in my local repository related to QR or webview. There's likely some useful information there that could help! I'll make sure to dive into both areas because I want to find the best resources for these topics. I really hope I can find the connections that might make this task easier and more efficient for anyone who needs it!\"}]}"},{"type":"toolCall","id":"call_PWM1TFNnnnkonOEFa2vQbwu1|fc_08ae000d0bfd110c016a076db311b881948ca1fabaa4fd5020","name":"bash","arguments":{"command":"curl -fsSL \"${AGENTS_DB_API:-http://100.116.176.16:8091}/api/search?q=QR%20webview%20mml%20machine%20app&scope=global&scope=project&limit=10\"","timeout":15}},{"type":"toolCall","id":"call_XrenNZwDgFnk9Lg99FszW99I|fc_08ae000d0bfd110c016a076db311cc8194892c14497a93fc77","name":"bash","arguments":{"command":"cd /mnt/rpi/repos/ballbox-company-agent && rg -n \"webview|QR|qr|MML|machine app|external QR\" .","timeout":15}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":5096,"output":161,"cacheRead":0,"cacheWrite":0,"totalTokens":5257,"cost":{"input":0.012740000000000001,"output":0.002415,"cacheRead":0,"cacheWrite":0,"total":0.015155000000000002}},"stopReason":"toolUse","timestamp":1778871727503,"responseId":"resp_08ae000d0bfd110c016a076dafa3e881948c829db4d590cccb"}}
{"type":"message","id":"b0486996","parentId":"56b53dc6","timestamp":"2026-05-15T19:02:11.390Z","message":{"role":"toolResult","toolCallId":"call_PWM1TFNnnnkonOEFa2vQbwu1|fc_08ae000d0bfd110c016a076db311b881948ca1fabaa4fd5020","toolName":"bash","content":[{"type":"text","text":"{\"retrieval_id\": \"ret_aa42db7dbe6944c8b0e56f7644d62668\", \"results\": [{\"memory\": {\"id\": \"legacy_run_b07bc538-5cab-4243-a1d3-c7a7fa55a0a7\", \"type\": \"episode\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"source_kind\": \"run\", \"title\": \"Research run: Drive ballbox-payment-integration to a demoable vending-machine QR payment flow\", \"content\": \"Goal: Drive ballbox-payment-integration to a demoable vending-machine QR payment flow\\nScope: Current target repo is ballbox-payment-integration; confirm fit to machine Android launcher flow and iterate toward demo\\nAssumptions: volvox reference maps to this repo; final flow is machine launcher -> QR page -> payment approval -> callback -> success/demo output\\nSummary: Drive ballbox-payment-integration to a demoable vending-machine QR payment flow\", \"summary\": \"Drive ballbox-payment-integration to a demoable vending-machine QR payment flow\", \"confidence\": 0.85, \"freshness\": 0.8, \"created_at\": \"2026-03-13T14:01:39.637766+00:00\", \"updated_at\": \"2026-04-30T17:32:27.368626+00:00\", \"observed_at\": \"2026-03-11T03:05:16.468281+00:00\", \"source_ref\": \"personal-agent:run:b07bc538-5cab-4243-a1d3-c7a7fa55a0a7\", \"evidence_ref\": \"personal-agent:run:b07bc538-5cab-4243-a1d3-c7a7fa55a0a7\", \"schema_version\": \"shared-agent-memory-v2\", \"subtype\": \"research_run\", \"run_id\": \"b07bc538-5cab-4243-a1d3-c7a7fa55a0a7\", \"task_id\": null, \"url\": null, \"domain\": null, \"origin_agent\": \"personal-agent\", \"metadata\": {\"assumptions\": \"volvox reference maps to this repo; final flow is machine launcher -> QR page -> payment approval -> callback -> success/demo output\", \"goal\": \"Drive ballbox-payment-integration to a demoable vending-machine QR payment flow\", \"run_status\": \"active\", \"schema\": \"shared-agent-memory-v2\", \"scope\": \"Current target repo is ballbox-payment-integration; confirm fit to machine Android launcher flow and iterate toward demo\", \"subtype\": \"research_run\", \"summary\": \"Drive ballbox-payment-integration to a demoable vending-machine QR payment flow\"}, \"embedding\": [0.49969411071331016, 0.4778125492380499, 0.4160101628094129, 0.3765452037201042, 0.27651520840462857, 0.2612111401109197, 0.22526286054442068, 0.10823558086869822]}, \"score\": 0.4093682644690506, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 0.6, \"semantic\": 0.9757884297936711, \"confidence\": 0.85, \"freshness\": 0.8}, \"matched_scope\": \"global\", \"evidence_ref\": \"personal-agent:run:b07bc538-5cab-4243-a1d3-c7a7fa55a0a7\", \"explanation\": \"facets=0.00 lexical=0.60 semantic=0.98 confidence=0.85 freshness=0.80\"}, {\"memory\": {\"id\": \"legacy_task_7\", \"type\": \"task_hint\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"source_kind\": \"manual\", \"title\": \"Legacy task: Prepare demo checklist: local dev flow, mock approved payment, production-like Q\", \"content\": \"Prepare demo checklist: local dev flow, mock approved payment, production-like QR flow, and machine-side screen recording or live test\\nkind=task\\nstatus=open\\nnotes=\", \"summary\": \"Prepare demo checklist: local dev flow, mock approved payment, production-like QR flow, and machine-side screen recording or live test\", \"confidence\": 0.65, \"freshness\": 0.6, \"created_at\": \"2026-03-13T14:01:39.722966+00:00\", \"updated_at\": \"2026-04-30T17:32:27.371784+00:00\", \"observed_at\": \"2026-03-13T14:01:39.722966+00:00\", \"source_ref\": \"personal-agent:task:7\", \"evidence_ref\": \"personal-agent:task:7\", \"schema_version\": \"shared-agent-memory-v2\", \"subtype\": \"task\", \"run_id\": \"55b6eaa0-9ff5-438c-a375-50f0452079cb\", \"task_id\": null, \"url\": null, \"domain\": null, \"origin_agent\": \"personal-agent\", \"metadata\": {\"legacy_task_id\": 7, \"schema\": \"shared-agent-memory-v2\", \"subtype\": \"task\", \"task_kind\": \"task\", \"task_status\": \"open\"}, \"embedding\": [0.5331450704609046, 0.4796898918922651, 0.4248279980981351, 0.37735135923783025, 0.25443961641059665, 0.22296436324024638, 0.17654276079905945, 0.13100035537380406]}, \"score\": 0.38932655944246425, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 0.6, \"semantic\": 0.9755103962830951, \"confidence\": 0.65, \"freshness\": 0.6}, \"matched_scope\": \"global\", \"evidence_ref\": \"personal-agent:task:7\", \"explanation\": \"facets=0.00 lexical=0.60 semantic=0.98 confidence=0.65 freshness=0.60\"}, {\"memory\": {\"id\": \"legacy_run_55b6eaa0-9ff5-438c-a375-50f0452079cb\", \"type\": \"episode\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"source_kind\": \"run\", \"title\": \"Research run: Drive Ballbox payment integration toward Volvox-style demo on vending machine Android flow\", \"content\": \"Goal: Drive Ballbox payment integration toward Volvox-style demo on vending machine Android flow\\nScope: Confirm repo alignment, identify gaps, iterate to demoable QR payment flow\\nAssumptions: Current repo is ballbox-payment-integration unless another Volvox-specific repo appears later\\nSummary: Drive Ballbox payment integration toward Volvox-style demo on vending machine Android flow\", \"summary\": \"Drive Ballbox payment integration toward Volvox-style demo on vending machine Android flow\", \"confidence\": 0.85, \"freshness\": 0.8, \"created_at\": \"2026-03-13T14:01:39.633673+00:00\", \"updated_at\": \"2026-04-30T17:32:27.368445+00:00\", \"observed_at\": \"2026-03-11T02:53:53.895083+00:00\", \"source_ref\": \"personal-agent:run:55b6eaa0-9ff5-438c-a375-50f0452079cb\", \"evidence_ref\": \"personal-agent:run:55b6eaa0-9ff5-438c-a375-50f0452079cb\", \"schema_version\": \"shared-agent-memory-v2\", \"subtype\": \"research_run\", \"run_id\": \"55b6eaa0-9ff5-438c-a375-50f0452079cb\", \"task_id\": null, \"url\": null, \"domain\": null, \"origin_agent\": \"personal-agent\", \"metadata\": {\"assumptions\": \"Current repo is ballbox-payment-integration unless another Volvox-specific repo appears later\", \"goal\": \"Drive Ballbox payment integration toward Volvox-style demo on vending machine Android flow\", \"run_status\": \"active\", \"schema\": \"shared-agent-memory-v2\", \"scope\": \"Confirm repo alignment, identify gaps, iterate to demoable QR payment flow\", \"subtype\": \"research_run\", \"summary\": \"Drive Ballbox payment integration toward Volvox-style demo on vending machine Android flow\"}, \"embedding\": [0.4688879311605294, 0.46222969294588007, 0.43086199291242083, 0.39905041033131833, 0.29436810951210896, 0.2734316493482671, 0.22638009929807826, 0.09454698264802092]}, \"score\": 0.4082264581181242, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 0.6, \"semantic\": 0.9681763874541617, \"confidence\": 0.85, \"freshness\": 0.8}, \"matched_scope\": \"global\", \"evidence_ref\": \"personal-agent:run:55b6eaa0-9ff5-438c-a375-50f0452079cb\", \"explanation\": \"facets=0.00 lexical=0.60 semantic=0.97 confidence=0.85 freshness=0.80\"}, {\"memory\": {\"id\": \"legacy_task_17\", \"type\": \"task_hint\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"source_kind\": \"manual\", \"title\": \"Legacy task: User clarified: final target is the Android app flow integrated in the Chinese v\", \"content\": \"User clarified: final target is the Android app flow integrated in the Chinese vending machine screen\\nkind=clarification\\nstatus=noted\\nnotes=\", \"summary\": \"User clarified: final target is the Android app flow integrated in the Chinese vending machine screen\", \"confidence\": 0.65, \"freshness\": 0.6, \"created_at\": \"2026-03-13T14:01:39.738610+00:00\", \"updated_at\": \"2026-04-30T17:32:27.372276+00:00\", \"observed_at\": \"2026-03-13T14:01:39.738610+00:00\", \"source_ref\": \"personal-agent:task:17\", \"evidence_ref\": \"personal-agent:task:17\", \"schema_version\": \"shared-agent-memory-v2\", \"subtype\": \"task\", \"run_id\": \"b07bc538-5cab-4243-a1d3-c7a7fa55a0a7\", \"task_id\": null, \"url\": null, \"domain\": null, \"origin_agent\": \"personal-agent\", \"metadata\": {\"legacy_task_id\": 17, \"schema\": \"shared-agent-memory-v2\", \"subtype\": \"task\", \"task_kind\": \"clarification\", \"task_status\": \"noted\"}, \"embedding\": [0.5235072181392532, 0.5099490489798677, 0.40816159991761636, 0.3438108865939664, 0.2695444973179301, 0.25376036008760083, 0.1805057744801754, 0.10704882813902779]}, \"score\": 0.3304078848392918, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 0.4, \"semantic\": 0.9827192322619455, \"confidence\": 0.65, \"freshness\": 0.6}, \"matched_scope\": \"global\", \"evidence_ref\": \"personal-agent:task:17\", \"explanation\": \"facets=0.00 lexical=0.40 semantic=0.98 confidence=0.65 freshness=0.60\"}, {\"memory\": {\"id\": \"legacy_claim_55b6eaa0-9ff5-438c-a375-50f0452079cb_94c9a4ce114180c3\", \"type\": \"artifact\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"source_kind\": \"manual\", \"title\": \"Research claim: Current ballbox-payment-integration repo is directionally aligned with a vending\", \"content\": \"Current ballbox-payment-integration repo is directionally aligned with a vending-machine QR bridge, but still depends on mocked TCN/Yunshu callback and placeholder MercadoPago production details.\", \"summary\": \"Current ballbox-payment-integration repo is directionally aligned with a vending-machine QR bridge, but still depends on mocked TCN/Yunshu callback and placeholder MercadoPago prod\", \"confidence\": 0.85, \"freshness\": 0.7, \"created_at\": \"2026-03-13T14:01:39.671440+00:00\", \"updated_at\": \"2026-04-30T17:32:27.370355+00:00\", \"observed_at\": \"2026-03-13T14:01:39.671440+00:00\", \"source_ref\": \"personal-agent:run:55b6eaa0-9ff5-438c-a375-50f0452079cb\", \"evidence_ref\": \"file:///Users/sebas/Code/ballbox-payment-integration/PLAN.md\", \"schema_version\": \"shared-agent-memory-v2\", \"subtype\": \"research_claim\", \"run_id\": \"55b6eaa0-9ff5-438c-a375-50f0452079cb\", \"task_id\": null, \"url\": \"file:///Users/sebas/Code/ballbox-payment-integration/PLAN.md\", \"domain\": \"\", \"origin_agent\": \"personal-agent\", \"metadata\": {\"claim_status\": \"tentative\", \"schema\": \"shared-agent-memory-v2\", \"subtype\": \"research_claim\"}, \"embedding\": [0.4992190408474435, 0.4868453614637948, 0.4199685705093129, 0.3136138500927138, 0.29520063672418906, 0.2663287181623422, 0.24732628196602466, 0.14067695013552922]}, \"score\": 0.3456913593562384, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 0.4, \"semantic\": 0.977942395708256, \"confidence\": 0.85, \"freshness\": 0.7}, \"matched_scope\": \"global\", \"evidence_ref\": \"file:///Users/sebas/Code/ballbox-payment-integration/PLAN.md\", \"explanation\": \"facets=0.00 lexical=0.40 semantic=0.98 confidence=0.85 freshness=0.70\"}, {\"memory\": {\"id\": \"legacy_task_5\", \"type\": \"task_hint\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"source_kind\": \"manual\", \"title\": \"Legacy task: Confirm target flow against current repo: machine launcher -> /pay page -> QR ->\", \"content\": \"Confirm target flow against current repo: machine launcher -> /pay page -> QR -> webhook -> dispense callback -> success UI\\nkind=task\\nstatus=open\\nnotes=\", \"summary\": \"Confirm target flow against current repo: machine launcher -> /pay page -> QR -> webhook -> dispense callback -> success UI\", \"confidence\": 0.65, \"freshness\": 0.6, \"created_at\": \"2026-03-13T14:01:39.717330+00:00\", \"updated_at\": \"2026-04-30T17:32:27.371692+00:00\", \"observed_at\": \"2026-03-13T14:01:39.717330+00:00\", \"source_ref\": \"personal-agent:task:5\", \"evidence_ref\": \"personal-agent:task:5\", \"schema_version\": \"shared-agent-memory-v2\", \"subtype\": \"task\", \"run_id\": \"55b6eaa0-9ff5-438c-a375-50f0452079cb\", \"task_id\": null, \"url\": null, \"domain\": null, \"origin_agent\": \"personal-agent\", \"metadata\": {\"legacy_task_id\": 5, \"schema\": \"shared-agent-memory-v2\", \"subtype\": \"task\", \"task_kind\": \"task\", \"task_status\": \"open\"}, \"embedding\": [0.4949705396896799, 0.4909167269158086, 0.39058486076249516, 0.37092386880921957, 0.28032115331319707, 0.28255075033882626, 0.23045925619458069, 0.1110744700040723]}, \"score\": 0.32921315209015145, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 0.4, \"semantic\": 0.9747543472676764, \"confidence\": 0.65, \"freshness\": 0.6}, \"matched_scope\": \"global\", \"evidence_ref\": \"personal-agent:task:5\", \"explanation\": \"facets=0.00 lexical=0.40 semantic=0.97 confidence=0.65 freshness=0.60\"}, {\"memory\": {\"id\": \"legacy_claim_fbe3fc0d-b05c-455e-9afe-1b17b4640d97_a7cb56ffe7c78e19\", \"type\": \"artifact\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"source_kind\": \"manual\", \"title\": \"Research claim: BetterTouchTool permite atajos globales, HUD overlays y floating menus/webviews \", \"content\": \"BetterTouchTool permite atajos globales, HUD overlays y floating menus/webviews con text fields, transparencia y float-on-top; cubre casi todo sin escribir una app nativa\", \"summary\": \"BetterTouchTool permite atajos globales, HUD overlays y floating menus/webviews con text fields, transparencia y float-on-top; cubre casi todo sin escribir una app nativa\", \"confidence\": 0.9, \"freshness\": 0.7, \"created_at\": \"2026-03-13T14:01:39.676783+00:00\", \"updated_at\": \"2026-04-30T17:32:27.370642+00:00\", \"observed_at\": \"2026-03-13T14:01:39.676783+00:00\", \"source_ref\": \"personal-agent:run:fbe3fc0d-b05c-455e-9afe-1b17b4640d97\", \"evidence_ref\": \"https://docs.folivora.ai/docs/floating-menus/overview/\", \"schema_version\": \"shared-agent-memory-v2\", \"subtype\": \"research_claim\", \"run_id\": \"fbe3fc0d-b05c-455e-9afe-1b17b4640d97\", \"task_id\": null, \"url\": \"https://docs.folivora.ai/docs/floating-menus/overview/\", \"domain\": \"docs.folivora.ai\", \"origin_agent\": \"personal-agent\", \"metadata\": {\"claim_status\": \"verified\", \"schema\": \"shared-agent-memory-v2\", \"subtype\": \"research_claim\"}, \"embedding\": [0.4877731390593439, 0.4612784978012458, 0.45261678815917533, 0.36871709084186477, 0.30468837446812774, 0.2369232343272231, 0.19242582400913533, 0.14996646301859354]}, \"score\": 0.34709596977731305, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 0.4, \"semantic\": 0.9673064651820871, \"confidence\": 0.9, \"freshness\": 0.7}, \"matched_scope\": \"global\", \"evidence_ref\": \"https://docs.folivora.ai/docs/floating-menus/overview/\", \"explanation\": \"facets=0.00 lexical=0.40 semantic=0.97 confidence=0.90 freshness=0.70\"}, {\"memory\": {\"id\": \"mem_6b468c8ed38a488392762d473ab20904\", \"type\": \"decision\", \"scope\": \"project\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"source_kind\": \"manual\", \"title\": \"TCN buyer QR uses on-screen display, not scanner hardware\", \"content\": \"TCN Protocol 2.5V states extra hardware is needed to scan QR codes, but the payment flow (FunCode=8000) returns CodeUrl for QR generation. Decision: treat scanner hardware warning as machine-side scan-only; Ballbox production vending payments should integrate through a TCN adapter and let the machine display the buyer QR. Keep /admin/payments QR page as an operator test/debug harness.\", \"summary\": \"TCN Protocol 2.5V states extra hardware is needed to scan QR codes, but the payment flow (FunCode=8000) returns CodeUrl for QR generation. Decision: treat scanner hardware warning\\u2026\", \"confidence\": 1.0, \"freshness\": 1.0, \"created_at\": \"2026-04-23T20:42:56.447590+00:00\", \"updated_at\": \"2026-04-23T20:42:56.447590+00:00\", \"observed_at\": \"2026-04-23T20:42:56.447590+00:00\", \"source_ref\": \"test-results/tcn-payment-protocol/findings-2026-04-23.md\", \"evidence_ref\": null, \"schema_version\": \"shared-agent-memory-v2\", \"subtype\": \"integration_direction\", \"run_id\": null, \"task_id\": null, \"url\": null, \"domain\": null, \"origin_agent\": \"personal-agent\", \"metadata\": {\"doc\": \"docs/tcn-payments-integration-plan.md\", \"repo\": \"ballbox\"}, \"embedding\": null}, \"score\": 0.22, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 0.4, \"semantic\": 0.0, \"confidence\": 1.0, \"freshness\": 1.0}, \"matched_scope\": \"project\", \"evidence_ref\": null, \"explanation\": \"facets=0.00 lexical=0.40 semantic=0.00 confidence=1.00 freshness=1.00\"}, {\"memory\": {\"id\": \"legacy_claim_fbe3fc0d-b05c-455e-9afe-1b17b4640d97_f579bd685e817963\", \"type\": \"artifact\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"source_kind\": \"manual\", \"title\": \"Research claim: Raycast ya resuelve el trigger global y se superpone sobre la app actual; AI Cha\", \"content\": \"Raycast ya resuelve el trigger global y se superpone sobre la app actual; AI Chat adem\\u00e1s admite hotkey dedicada, as\\u00ed que es la opci\\u00f3n m\\u00e1s r\\u00e1pida si acept\\u00e1s una UI no transparente ni custom\", \"summary\": \"Raycast ya resuelve el trigger global y se superpone sobre la app actual; AI Chat adem\\u00e1s admite hotkey dedicada, as\\u00ed que es la opci\\u00f3n m\\u00e1s r\\u00e1pida si acept\\u00e1s una UI no transparente n\", \"confidence\": 0.88, \"freshness\": 0.7, \"created_at\": \"2026-03-13T14:01:39.679172+00:00\", \"updated_at\": \"2026-04-30T17:32:27.370694+00:00\", \"observed_at\": \"2026-03-13T14:01:39.679172+00:00\", \"source_ref\": \"personal-agent:run:fbe3fc0d-b05c-455e-9afe-1b17b4640d97\", \"evidence_ref\": \"https://manual.raycast.com/ai\", \"schema_version\": \"shared-agent-memory-v2\", \"subtype\": \"research_claim\", \"run_id\": \"fbe3fc0d-b05c-455e-9afe-1b17b4640d97\", \"task_id\": null, \"url\": \"https://manual.raycast.com/ai\", \"domain\": \"manual.raycast.com\", \"origin_agent\": \"personal-agent\", \"metadata\": {\"claim_status\": \"verified\", \"schema\": \"shared-agent-memory-v2\", \"subtype\": \"research_claim\"}, \"embedding\": [0.5511415595906032, 0.5362039463672322, 0.37428585586106927, 0.3149581656059826, 0.2625355984447184, 0.2574624467839509, 0.1688232135999853, 0.0756745122731153]}, \"score\": 0.28902904278030206, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 0.2, \"semantic\": 0.9881936185353469, \"confidence\": 0.88, \"freshness\": 0.7}, \"matched_scope\": \"global\", \"evidence_ref\": \"https://manual.raycast.com/ai\", \"explanation\": \"facets=0.00 lexical=0.20 semantic=0.99 confidence=0.88 freshness=0.70\"}, {\"memory\": {\"id\": \"mem_ballbox_company_overview\", \"type\": \"profile\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"source_kind\": \"manual\", \"title\": \"Ballbox company overview\", \"content\": \"Ballbox is an early-stage company focused on selling advertising on screens and selling vending machines for ball tubes. The machines themselves also display ads. Initial go-to-market is padel centers.\", \"summary\": \"Ballbox is an early-stage company focused on selling advertising on screens and selling vending machines for ball tubes. The machines themselves also display ads. Initial go-to-ma\\u2026\", \"confidence\": 0.97, \"freshness\": 0.95, \"created_at\": \"2026-03-13T14:42:32.059069+00:00\", \"updated_at\": \"2026-03-13T14:42:32.059069+00:00\", \"observed_at\": \"2026-03-13T14:42:32.059069+00:00\", \"source_ref\": \"conversation:2026-03-13:ballbox-context\", \"evidence_ref\": \"conversation:2026-03-13:ballbox-context\", \"schema_version\": \"shared-agent-memory-v2\", \"subtype\": null, \"run_id\": null, \"task_id\": null, \"url\": null, \"domain\": null, \"origin_agent\": null, \"metadata\": {\"kind\": \"project_fact\", \"project\": \"ballbox\"}, \"embedding\": [0.504676405243449, 0.504676405243449, 0.40843713669616294, 0.33669250125805056, 0.2803113635097158, 0.23813421419155276, 0.2533527732238796, 0.10464571067942854]}, \"score\": 0.30367183419198435, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 0.2, \"semantic\": 0.9831455612798959, \"confidence\": 0.97, \"freshness\": 0.95}, \"matched_scope\": \"global\", \"evidence_ref\": \"conversation:2026-03-13:ballbox-context\", \"explanation\": \"facets=0.00 lexical=0.20 semantic=0.98 confidence=0.97 freshness=0.95\"}]}"}],"isError":false,"timestamp":1778871731389}}
{"type":"message","id":"e62a1a2c","parentId":"b0486996","timestamp":"2026-05-15T19:02:11.391Z","message":{"role":"toolResult","toolCallId":"call_XrenNZwDgFnk9Lg99FszW99I|fc_08ae000d0bfd110c016a076db311cc8194892c14497a93fc77","toolName":"bash","content":[{"type":"text","text":"./README.md:57:  --input \"Ballbox necesita fix en repo de pagos y abrir branch para QR\" \\\n"}],"isError":false,"timestamp":1778871731390}}
{"type":"message","id":"62d7852a","parentId":"e62a1a2c","timestamp":"2026-05-15T19:02:14.698Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Investigating payment integration**\n\nI think I need to inspect the repo for the ballbox payment integration. It's got me wondering if I should search a bit broader to gather more information. There could be useful insights or related topics that might help. I'll keep my focus on understanding how the integration works and any challenges that might arise, as well as looking for best practices. Overall, I think deeper exploration is the way to go!","thinkingSignature":"{\"id\":\"rs_08ae000d0bfd110c016a076db40ee08194b4bcfd08b3507240\",\"type\":\"reasoning\",\"encrypted_content\":\"gAAAAABqB222k5mbLwMxalARQyesgBpL-TxO6gzLvleSMLpNas1U4REHzNqEWwNwaFiXBhU5LvUMs-h1SXtGnVLIwq2DaqNPOR0xUGCsgpjc-Kp-alVLQdUTIiy-JrpicKbFAcHdPFT5NBNFrrm_VXH7Pl5NIDXUR4qNEHeGvI0du697Vun5tzu--grNkb0dOQzmbyu6J1wdYMNeeXuIyz_5Dbw9WplYR_zyhpKuNlfLj3lIGWFbUxhV5chifPASAWvwZ8ZcTQZLzOxBpA70jvksXsxHPrD5BX15gBWGMZmfgvJijtseOzoC2wdkzcxE_tEDBocruvqmmPiyvSzisiMFbxdKcF_U3yMY_LD_pX2dv5I3nUUG1WssgXK3U0D25iAx2rFk8-KAuD-nQULEoLosnchOGO6iJumLl8vaww6PCj9PWJ7g7LN906GOACqHdnb-HVg4fLPipmtpxDsAM6u3p0RjKalAkspjflMtroEC9KlGOXSO7Vl9U-hm2yaOClzk0syR1rWW5_2_cCF5FyxaL6fjfrMH0MzjVHarksRC53dpt9S17QEeN2b0Psy3F0IdWPHdqVuUXDustXUg50NtD4VV6E6fYB226AvHhx9PMSEx-7SC0MCy_0S5qqBj8EgWRqw8gWBXRo6Kp0CpA6Jou6ZMMQPqlRL4QYK39WEnZJgd2JgmF_RT_knOVUFY_9QQ1Y5wK-DC-ZwdefWnXz7R106jmVDdaxV-sdSIRbsOQn0AuESECX_R8VaEAHfB78gleETLcgi4xcgPSrpIfUk9L5q_7SDBcjypDN_wEUQ8oN5WT5PV-FT_whNUFeMCIAloyQejDd5aE432lzceH9EB43EKb1HURyTHMc-BDeyEMwiHaYvdSj50jgFnpun_2V9145DVyfX_oW0QZg0bcr0Vks-LO5dfw7xcE2GaGqYguaY1w0kfMcWFsegwVpIUsmHopUAJlxYHsj2EBOA5voPfIWsPtDxKzPEeYI3SShCvEhiABQxt9oYYOgSn3IQkrcSmqpXsXMSg\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Investigating payment integration**\\n\\nI think I need to inspect the repo for the ballbox payment integration. It's got me wondering if I should search a bit broader to gather more information. There could be useful insights or related topics that might help. I'll keep my focus on understanding how the integration works and any challenges that might arise, as well as looking for best practices. Overall, I think deeper exploration is the way to go!\"}]}"},{"type":"toolCall","id":"call_U8qCAGEagCq3vdoY2hNXXiwu|fc_08ae000d0bfd110c016a076db68c5c8194ac163c7dd649ed16","name":"bash","arguments":{"command":"cd /mnt/rpi/repos && rg -n \"webview|QR|qr|CodeUrl|external QR|app.*qr|machine.*qr\" ballbox*","timeout":20}},{"type":"toolCall","id":"call_djLOxtpz534KaoIfsy8Lc1W3|fc_08ae000d0bfd110c016a076db68c748194a58707f38d45575d","name":"bash","arguments":{"command":"cd /mnt/rpi/repos && find . -maxdepth 2 -type d | sed 's#^./##' | grep ballbox","timeout":10}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":7124,"output":137,"cacheRead":4608,"cacheWrite":0,"totalTokens":11869,"cost":{"input":0.017810000000000003,"output":0.002055,"cacheRead":0.001152,"cacheWrite":0,"total":0.021017000000000004}},"stopReason":"toolUse","timestamp":1778871731391,"responseId":"resp_08ae000d0bfd110c016a076db38c0081948e586bb85f848443"}}
{"type":"message","id":"36884b8e","parentId":"62d7852a","timestamp":"2026-05-15T19:02:14.712Z","message":{"role":"toolResult","toolCallId":"call_U8qCAGEagCq3vdoY2hNXXiwu|fc_08ae000d0bfd110c016a076db68c5c8194ac163c7dd649ed16","toolName":"bash","content":[{"type":"text","text":"ballbox-company-agent/README.md:57:  --input \"Ballbox necesita fix en repo de pagos y abrir branch para QR\" \\\n"}],"isError":false,"timestamp":1778871734712}}
{"type":"message","id":"d35f8955","parentId":"36884b8e","timestamp":"2026-05-15T19:02:14.712Z","message":{"role":"toolResult","toolCallId":"call_djLOxtpz534KaoIfsy8Lc1W3|fc_08ae000d0bfd110c016a076db68c748194a58707f38d45575d","toolName":"bash","content":[{"type":"text","text":"ballbox-company-agent\nballbox-company-agent/SOP\nballbox-company-agent/.git\nballbox-company-agent/projects\nballbox-company-agent/.tasks\nballbox-company-agent/.self\nballbox-company-agent/.inbox\nballbox-company-agent/worldview\nballbox-company-agent/signals\nballbox-company-agent/scripts\nballbox-company-agent/.cycle\nballbox-company-agent/strategy\n"}],"isError":false,"timestamp":1778871734712}}
{"type":"message","id":"44231fe7","parentId":"d35f8955","timestamp":"2026-05-15T19:02:17.924Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Searching for payment info**\n\nI’m starting to think that the payment repo might not be available here. Maybe I need to check it on my laptop? I think I saw a reference to \"hay mencion...\" that might relate to a document within the company agent. I’ll search for \"MML\" in the company agent to find any relevant information related to payments. Let’s see if that helps me figure things out!","thinkingSignature":"{\"id\":\"rs_08ae000d0bfd110c016a076db75e988194a2550e65ddfbe432\",\"type\":\"reasoning\",\"encrypted_content\":\"gAAAAABqB2256JlY9xnjjarzxHLOwrwvviL1HoTxwYl9EfB6biHlZt76byoELu5oSVWL37REzMBzQfolrh1pkN3zwxAFvMXM6B0XHS9Mi-ZOZ65vK_TJqglNBlSZpfnDfHRD8yPIMGsh6inZ_cf-eV5l0OVB6jVLVxFes_LsuhJp5fMusKHMBeC85iHa68QWG5zuqMYmYooG0vOBv_gQmnlx2gTXVf-3fR-fvuPsPbyY0gLU4UXpr0s5o9aRT56uURY2JIG95y7n2KuplDDZM7IxamwTf6c2Ddu_HNevUEqAz4huddXc701Cjo9wKkVvWCiNE1sfUipouLph-N7X_Ba26rWQM-_TWh4D5ds6k9-fpFVA4JmPmh38rSDa2HGbvQGjqqeWHCJscJhV4TEcPt83YY0-Pb3EBCLrMbGadLKu5ZoHR7xy6Ye_Jk2zqDzakccBICr2w0gEbtXnoQKgxuBFZEpCGtlOPvvbBOIDsupzBifHv-1AyKEMUEHUTcRYDGOEMTtZ_jWI7-NZWiUdOgaJwS096QsTkm32E1Yq0hUOeOBhoHkKoKzMe95r1YpvWqmy99wOo68Xr39v38ZjHNLePUTEneYZJiymnE8g737zpNa6zTW7k1zWdDCXEnFmndr1wdcy8JBsVYTOYxBmyfN29C3XQYlIomzvDwTvAMOKlgc6-EQ4uiOmCMr4Ch_klSX0hvtdQ_o1jqekoSN3O5RG64O8kr_MfHqORf-WTwiAxzrfteY-DZjyqkGPojNAHgU05S-uJRvnUZns1HNA7VmnfgCXSELw6eC7MHdrVMPkQCFcA1EpTvBlTiae1R68xzaavIUDhqQ9gVEzgvLE5EFWyMeoWryUqVl3VLxS9ltDVX2CLOCxoCXOHC4ZicSUB5jgbSqTiCYxyR4SMh-p5SGMe7NoJ3pJfw2EDOBaC4VolUBjFOsI96mFiQERsRJz9tiNVvUe0XmlCQipkuTcfn3ikhfxuHvY-QRt8y8an9xkAsTAXMZ-LitmUkyMzCSjpOYHiBBzCyT9XHvB5JaDEEfEmiEsQ8SVw8jycet9_czKYlwThDp-Qroc4U9ovLAMPHoEfV2msdVpN5CE1s_Balmy84Pq4R7j1MGjALz1OEwADrsPLJZuv8Y=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Searching for payment info**\\n\\nI’m starting to think that the payment repo might not be available here. Maybe I need to check it on my laptop? I think I saw a reference to \\\"hay mencion...\\\" that might relate to a document within the company agent. I’ll search for \\\"MML\\\" in the company agent to find any relevant information related to payments. Let’s see if that helps me figure things out!\"}]}"},{"type":"toolCall","id":"call_RlJYxB0if0TITeCH3xSrrMNU|fc_08ae000d0bfd110c016a076db99fe88194998c397fbb297032","name":"bash","arguments":{"command":"cd /mnt/rpi/repos/ballbox-company-agent && rg -n \"MML|machine|QR|webview|payment flow|扫码|MercadoPago|launcher|Android\" .","timeout":20}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":735,"output":101,"cacheRead":11264,"cacheWrite":0,"totalTokens":12100,"cost":{"input":0.0018375000000000002,"output":0.001515,"cacheRead":0.002816,"cacheWrite":0,"total":0.0061685}},"stopReason":"toolUse","timestamp":1778871734712,"responseId":"resp_08ae000d0bfd110c016a076db6e50081948304c246a5f7921b"}}
{"type":"message","id":"d31778b0","parentId":"44231fe7","timestamp":"2026-05-15T19:02:17.934Z","message":{"role":"toolResult","toolCallId":"call_RlJYxB0if0TITeCH3xSrrMNU|fc_08ae000d0bfd110c016a076db99fe88194998c397fbb297032","toolName":"bash","content":[{"type":"text","text":"./index.md:17:- clarify operations: machine, refill, maintenance, ad-sales workflow\n./index.md:25:- [Pilot Ops](./projects/pilot-ops/.plan/index.md): club rollout, machine operations, service loops\n./index.md:26:- [Product Surface](./projects/product-surface/.plan/index.md): payment, machine control, screen software\n./index.md:40:- machine vendor and hardware economics\n./strategy/positioning.md:24:- proof that clubs want the machine under realistic commercial terms\n./AGENTS.md:55:- hardware vendor and machine economics\n./projects/index.md:7:- `product-surface`: software and machine surface map\n./README.md:57:  --input \"Ballbox necesita fix en repo de pagos y abrir branch para QR\" \\\n./projects/coaches-os/strategy.md:6:- It does not replace the machine, screens, or commercial-model fronts.\n"}],"isError":false,"timestamp":1778871737934}}
{"type":"message","id":"c9fc4a74","parentId":"d31778b0","timestamp":"2026-05-15T19:02:21.015Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"","thinkingSignature":"{\"id\":\"rs_08ae000d0bfd110c016a076dba96c48194b014c23ed445e47c\",\"type\":\"reasoning\",\"encrypted_content\":\"gAAAAABqB2280QMZD4hXOgUYNfW_xGZgN5Jk55jRM1HZFteU8_zqgsB6C5UreLi-FOrNaHXzrfsDLqZyf760WW_c4nJJe-D_zk23Gy0zomyjFvcD2jKHFkdQJBdkXxuS1FRN5t-B-tcyvWdS8f8AiWfrQ1YAip3WocuIcCDF_mdKz8lnTKCQYZLah2XPquU-ft2n57ULOGpgFrAPzl0B0atJ7exdRLO016UDQut1wYH-LFMU1ZhuALZHFCW3ba45noWhez7cJBqQnhuKSVOEYuFxxOJVYJZb22TsFoprD-eiGXx0B4paKo_ieKpIu1JVOXjbMoKb2wu_mx4DR1_A8dmnfcXXXZS_M5gmiyhJVPX8rT_yrfk-g4VvFIDwarpOHPQCrhS6jDHnp2YRopiQk4E0J16woIedswrO165bTFIAUfOww0THwgMVJOFfkb_2gigQBFobAJ5UzsvulN47fW8rX9pc591wpPqTB7KWWx98EZAZ4fKatJt6ZN8aCukokDYrO_08qdmvZldrq4PGkPLckY1-HPVQlJx9jULO6x3FU6Tawcxd9Ih4_DHcb6xQU1IuSdiK1XaQMwEYE143ZePFuESnL5QE764kB4eQQ0V67tcR1P4CG9cSuajnXiRfPpYZwZDw6uQVclZBdEDte-LbZwNPXNzdCClJ7zHC72W_azO-eouXT6YPJWsxikH7w2QY8hFNOjW8L7ffy_2-W7-uilfENcp4c9Oflqy7GBBl_YoB5I0ZW7RSJR5y2uOn_ih8j4a3jaOHRUHsrVxjulZI1xVX3jhEFySysaadgdo27-B2pRlG6pEfT94lqwtvg03w2v6HhF3W0DcTXK9Ow9hOWEJ4g1vI1u-4JHKGqsNOlWp6Dwa8SHd6xUJ2vmBnvCJQErDIKsvVrLVuw4hTLemGcCLq71ONsxdHwAao8Fj_nV20QlYXcUPfg00zvlliuctHGM3pGFPeS8BOD-L0bole4j_PU-gpdg==\",\"summary\":[]}"},{"type":"toolCall","id":"call_gprPoeC82UsrBPhrQfFp6r9j|fc_08ae000d0bfd110c016a076dbce2888194b417a34786c83142","name":"read","arguments":{"path":"/mnt/rpi/repos/ballbox-company-agent/projects/product-surface/.plan/index.md"}},{"type":"toolCall","id":"call_Ztip5A3gaYz6uB3HgQ4LkzX3|fc_08ae000d0bfd110c016a076dbce29881949d90e7492067d535","name":"bash","arguments":{"command":"cd /mnt/rpi/repos/ballbox-company-agent/projects/product-surface && rg -n \"QR|webview|payment|Android|launcher|MercadoPago|TCN|Yunshu|扫码\" .","timeout":20}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":525,"output":125,"cacheRead":11776,"cacheWrite":0,"totalTokens":12426,"cost":{"input":0.0013125,"output":0.0018750000000000001,"cacheRead":0.002944,"cacheWrite":0,"total":0.0061315}},"stopReason":"toolUse","timestamp":1778871737935,"responseId":"resp_08ae000d0bfd110c016a076dba12b08194bbf1b91a02817fb7"}}
{"type":"message","id":"ab5ee39c","parentId":"c9fc4a74","timestamp":"2026-05-15T19:02:21.044Z","message":{"role":"toolResult","toolCallId":"call_gprPoeC82UsrBPhrQfFp6r9j|fc_08ae000d0bfd110c016a076dbce2888194b417a34786c83142","toolName":"read","content":[{"type":"text","text":"# Product Surface\n\n## Goal\n\nMap the Ballbox software and hardware control surface.\n\n## Scope\n\n- payment flow\n- dispense integration\n- screen playback\n- campaign reporting\n\n## Questions\n\n- what is already implemented vs mocked?\n- where is the source of truth for transactions?\n- what hardware events matter operationally?\n"}],"isError":false,"timestamp":1778871741043}}
{"type":"message","id":"06fad4a1","parentId":"ab5ee39c","timestamp":"2026-05-15T19:02:21.044Z","message":{"role":"toolResult","toolCallId":"call_Ztip5A3gaYz6uB3HgQ4LkzX3|fc_08ae000d0bfd110c016a076dbce29881949d90e7492067d535","toolName":"bash","content":[{"type":"text","text":"(no output)\n\nCommand exited with code 1"}],"details":{},"isError":true,"timestamp":1778871741044}}
{"type":"message","id":"d8e6e718","parentId":"06fad4a1","timestamp":"2026-05-15T19:02:28.200Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"","thinkingSignature":"{\"id\":\"rs_08ae000d0bfd110c016a076dbf1dac8194bdd52ff39f1a5d3e\",\"type\":\"reasoning\",\"encrypted_content\":\"gAAAAABqB23A2HgN9Uq9POjB86_Nu5ET2_jUPmAX-ssMOUnYF7H2njENbu9tjmKWuADqDHcQjz1CBZGzIqxV2qU_luNqCWvekPHOk9Z1QvHvi5RgjulSkw5xsJYnhxCrWgdSTjv3kNXUwlpHQjQgHsJF8DFWtkaOXyxdz7TfVSLZtxh1rjrQ0M7fZ0mlbsarezbJaQZC3l-xDkmtsmYAkj2sYHX414Q_OJmKM8mV5BkSSDCn7ORonCkKzPT-hqgCABarTYllV_DfAq0HJqnSoVbxtGfwvhNW8O_X5WEQkSZaBpXgVXxUlOV3D6g7twRAvCQttL_fEZloE54WJDfc_QB5Nj0h2OgJYPVwMa5PvkpxXLPYJuzlw7sdYBTtkFQ958hTlgSrDLdiVEMFJDEGHOei78NPTzJtG0FnLyCDBOAAL89_DUzPMOvuTxqBCLujxKaA41MTm0Ae1vksCB_rCM0U_nirzhuPUAMA9TK05w6hWBTLXRhChbIu-GGvOI2b-xcr85-ikT4HQSLfM6wAe21_Hdd7-jUgvN0YRn1vBrDGNEgA3is55ZvBqXVGJ2sOUT1krpH3qECLtuWC91BWEIO7MZL-Gohu8eqEongKQkfq1mvRPQbb_wT77UFSmxHX4KZF1Pzg6LIHPddu2pt7H9-RO87ggANf9BnWhSFECDLWkrgL1TTLwyDcfxJSmiFjaqpT0OSiKmUgfO7nInO0k6JksN3fYB2FL3iOxLmnpWLLVsN0gQLm8W_uBpyjEbF8cZ7ru-CTBHbI6C5X9NYe9BWuKaUCd_cFxhrjbXOLK-MzhCYlKj0EsicA_ZPl_iuyUy44mbE3VrbgwANqXctkuH9kWhQzqY9QSDR79x8RoKNuO1NCLAoYrBIP2yRShAljj-pQHRFYk8KhV5LOtq5xe3MS1z17fAVTY8a9ME9KJUDE9UAqBwBq0WbIKqkZ4IDN5naypPPf5roRT9QpucCmbCtyd99vPQCqWyXBykAp3em1B-m3pln7i5fzIZ9V6iyCOlEhtCdHXJZonjYzKGqCxdb1BWhdHz_SA-JIgTjiQw2AKfN55PI-hUF6K_ryvp1l-Nyi-CKmRDlWuL_XUJgGcH0mZ0BXgH3JZJcipdvAgPXOWpz3LhF8CofhjM-oxH7aNqyXBOFaUCxaZwod5P_qVHFvMSTJSVcOMQOKC4A4lHlaELKGZV_GihJsAUSUAdA7PjTp9KJnhOl3-Y_GnJk6YNsZt_c1rLZeuXzJoss8kj84UyxL6Gl4r1fZKqfeTXRokTYOGZ-t9b2Q\",\"summary\":[]}"},{"type":"text","text":"Sí, pero no veo mención clara a:\n\n- “QR externo dentro de una webview”\n- ni una nota explícita de que “la app MML abre un webview para mostrar ese QR”\n\nLo que sí aparece del flujo es más bien esto:\n\nmáquina / launcher Android  \n→ abre página de pago  \n→ se muestra QR al comprador  \n→ pago aprobado por webhook/callback  \n→ máquina recibe confirmación  \n→ dispensa  \n→ success UI\n\nY además hay una decisión guardada más explícita:\n\n- el QR lo muestra la máquina en pantalla\n- no depende de hardware escáner para ese paso\n- el `CodeUrl` viene para generar/mostrar el QR comprador\n\nO sea: el material que encontré habla de “mostrar el QR en la máquina” y de “launcher/app → página de pago → callback”, pero no prueba todavía que el detalle técnico sea exactamente “QR externo renderizado en una webview”.\n\nSi quieres, busco el doc/fuente exacta y te saco la cita literal.","textSignature":"{\"v\":1,\"id\":\"msg_08ae000d0bfd110c016a076dc08ae881948cc9e23e17fcdc59\",\"phase\":\"final_answer\"}"}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":743,"output":275,"cacheRead":11776,"cacheWrite":0,"totalTokens":12794,"cost":{"input":0.0018575000000000002,"output":0.004125,"cacheRead":0.002944,"cacheWrite":0,"total":0.0089265}},"stopReason":"stop","timestamp":1778871741045,"responseId":"resp_08ae000d0bfd110c016a076dbe7e948194a825a6e37d82c25f"}}
{"type":"message","id":"845577f9","parentId":"d8e6e718","timestamp":"2026-05-15T19:04:13.092Z","message":{"role":"user","content":[{"type":"text","text":"[telegram] busca solo en pdfs/docs que me hayan pasado"}],"timestamp":1778871853086}}
{"type":"message","id":"cca0fe9d","parentId":"845577f9","timestamp":"2026-05-15T19:04:19.123Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Searching for files locally**\n\nI need to search for files on my local system. It might be helpful to ask where the documents are located, but I can also try searching for PDF or DOC files in my home directory, specifically looking at attachments. I think I could use a bash command to find the likely files quickly. There’s a lot I can check, and getting organized could save me time!","thinkingSignature":"{\"id\":\"rs_08ae000d0bfd110c016a076e2e27788194848131030a1eb8f6\",\"type\":\"reasoning\",\"encrypted_content\":\"gAAAAABqB24ysfCEC3JMzQ-Dl6372UZKUhfEdTvXuQGX9gkjxdiExc6PujNdXdT62vC1Q9TUwvjSPMWFQfKbp0gtYSSNAcyIf0is5hnae_pmbyKL3GDlDRh6IfiAV1YcVYPlOM8HLYFVrxCeHPGXUTjT0CIc6aTwYHZ8AEWgGE3fTIj-f_NJLt4vFYkFjDX5ZAZSBkezEtWOc3yKduW3MJiUTqo-N1eeAeWopjMeCIxeijc9gAmJYrqeElFe2qiaJQx3dgcW1gaovadsZD2-8UnoocXaeWNSRGhuwpjczLT_3POnDv3vd-XvHwyDFlnZq7sXX2062t9mmAUwVzLgxHNsj7vQ2vgy6pa-huLzdZXNNmDsadJ82jd-sx4bV5sMHzk9ks-957kaTRAohv3lguZstmTKtCrezhR8roCE0so6_5LKkGHRnlyNd3XfL5crs7CUv_vNwqFtOnYHI1WCgQ3KTA5Aop72kNU3A41fPPVdf8pqdMLnhRHtFmuxoanC477bvI-Up5jd6-757jRyxhKFoaKKZ2dNFf_qcRgIyrvJ6pqXA9rJqS0l3O6TqMq7qwpqwwvufTfn9H_uVG_SWtb9RX8JCKqv2pXdTBZOjYj6-aZJU1L70p7Dhx-I4hj8LynZgTkz0l6EVYeSW5SN4nKWjEn-IMP4bMkyLJlN8KvzV-XKcchj1L4anSRvx002Az_0c5Q4ao7tgA-tP664XWckgPry6X90rK9FcLUZFao25rGFtsrGgfkagZlJpX01iDf1-tyMtz1TbhhRF2vzcYQFrnSm0aPToC30htFUgF2txJJh_m28FsKFCSh6lpq3ky8zOVma-XYNu7sPbj2c3vq2-Xiv_ehxatfzaGtBMXklGLw6ZsIA6d4XbLIl6u_E1ZvtCxn0en4FlWU6Mxom4zfUna4gzis25XQb8jIbIO_pLtrxFuQEoAuHWVjStdyoSYZcsvD2DAMAQ93KBYKJ9mEsvfNyvFBYGCEEAGZfSliEscSVJPJTF2G1kJ_S_F5E4RBojx4jQV8Km5Aa5X2BEAoOBUqKPKRAiFFtdEGE4znuM3R6j0mQqbIBVSQQOLj-OaR1vmgk4anAU2cxRd3IVk_FT9NP-253AQ==\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Searching for files locally**\\n\\nI need to search for files on my local system. It might be helpful to ask where the documents are located, but I can also try searching for PDF or DOC files in my home directory, specifically looking at attachments. I think I could use a bash command to find the likely files quickly. There’s a lot I can check, and getting organized could save me time!\"}]}"},{"type":"toolCall","id":"call_ihIHmlkScZkBBdXPxleDvWnj|fc_08ae000d0bfd110c016a076e32a710819484e955aacac47727","name":"todo","arguments":{"action":"create","subject":"Search user-provided PDFs/docs for MML app QR/webview flow mention","description":"Find only in passed docs/PDFs whether MML machine app mentions external QR in webview or describes that flow.","activeForm":"searching passed docs","status":"in_progress"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":8448,"output":107,"cacheRead":4096,"cacheWrite":0,"totalTokens":12651,"cost":{"input":0.021120000000000003,"output":0.001605,"cacheRead":0.001024,"cacheWrite":0,"total":0.023749000000000003}},"stopReason":"toolUse","timestamp":1778871853088,"responseId":"resp_08ae000d0bfd110c016a076e2d3bcc8194b0b784d0a01ee3b1"}}
{"type":"message","id":"b681077c","parentId":"cca0fe9d","timestamp":"2026-05-15T19:04:19.129Z","message":{"role":"toolResult","toolCallId":"call_ihIHmlkScZkBBdXPxleDvWnj|fc_08ae000d0bfd110c016a076e32a710819484e955aacac47727","toolName":"todo","content":[{"type":"text","text":"Created #1: Search user-provided PDFs/docs for MML app QR/webview flow mention (pending)"}],"details":{"action":"create","params":{"action":"create","subject":"Search user-provided PDFs/docs for MML app QR/webview flow mention","description":"Find only in passed docs/PDFs whether MML machine app mentions external QR in webview or describes that flow.","activeForm":"searching passed docs","status":"in_progress"},"tasks":[{"id":1,"subject":"Search user-provided PDFs/docs for MML app QR/webview flow mention","status":"pending","description":"Find only in passed docs/PDFs whether MML machine app mentions external QR in webview or describes that flow.","activeForm":"searching passed docs"}],"nextId":2},"isError":false,"timestamp":1778871859129}}
{"type":"message","id":"967e9bba","parentId":"b681077c","timestamp":"2026-05-15T19:04:21.012Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"call_rH5Ga3xaE4UOjXm1ZX45jeCk|fc_08ae000d0bfd110c016a076e3470088194822dfbcc4da39443","name":"todo","arguments":{"action":"update","id":1,"status":"in_progress"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":395,"output":26,"cacheRead":12288,"cacheWrite":0,"totalTokens":12709,"cost":{"input":0.0009875,"output":0.00039,"cacheRead":0.003072,"cacheWrite":0,"total":0.0044495}},"stopReason":"toolUse","timestamp":1778871859130,"responseId":"resp_08ae000d0bfd110c016a076e3343408194acc6b7b5b483efe7"}}
{"type":"message","id":"550cc0b1","parentId":"967e9bba","timestamp":"2026-05-15T19:04:21.013Z","message":{"role":"toolResult","toolCallId":"call_rH5Ga3xaE4UOjXm1ZX45jeCk|fc_08ae000d0bfd110c016a076e3470088194822dfbcc4da39443","toolName":"todo","content":[{"type":"text","text":"Updated #1 (pending → in_progress)"}],"details":{"action":"update","params":{"action":"update","id":1,"status":"in_progress"},"tasks":[{"id":1,"subject":"Search user-provided PDFs/docs for MML app QR/webview flow mention","status":"in_progress","description":"Find only in passed docs/PDFs whether MML machine app mentions external QR in webview or describes that flow.","activeForm":"searching passed docs"}],"nextId":2},"isError":false,"timestamp":1778871861013}}
{"type":"message","id":"34a48aa9","parentId":"550cc0b1","timestamp":"2026-05-15T19:04:23.887Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"call_LlMjEN6zMovkKnkZJ5EZlVQB|fc_08ae000d0bfd110c016a076e35f4d08194bde6a92540a3651e","name":"bash","arguments":{"command":"find /home/sebas /mnt/rpi -type f \\( -iname '*.pdf' -o -iname '*.doc' -o -iname '*.docx' -o -iname '*.md' -o -iname '*.txt' \\) | rg -i 'mml|yunshu|tcn|payment|qr|machine|vending|launcher|mercadopago|volvox' | head -300","timeout":25}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":440,"output":108,"cacheRead":12288,"cacheWrite":0,"totalTokens":12836,"cost":{"input":0.0011,"output":0.0016200000000000001,"cacheRead":0.003072,"cacheWrite":0,"total":0.005792}},"stopReason":"toolUse","timestamp":1778871861013,"responseId":"resp_08ae000d0bfd110c016a076e352a0c8194968596ece073e4aa"}}
{"type":"message","id":"27680887","parentId":"34a48aa9","timestamp":"2026-05-15T19:04:27.235Z","message":{"role":"toolResult","toolCallId":"call_LlMjEN6zMovkKnkZJ5EZlVQB|fc_08ae000d0bfd110c016a076e35f4d08194bde6a92540a3651e","toolName":"bash","content":[{"type":"text","text":"find: ‘/mnt/rpi/lost+found’: Permission denied\nfind: ‘/mnt/rpi/apt-cache/archives/partial’: Permission denied\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md\n/home/sebas/work/projects/ballbox/docs/payments-club-settlement-strategy.md\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md\n/home/sebas/.local/share/zed/external_agents/registry/npx/pi-acp/lib/node_modules/pi-tau-mux/node_modules/qrcode/README.md\n/home/sebas/.npm-global/lib/node_modules/pi-tau-mux-server/node_modules/qrcode/README.md\n/mnt/rpi/tcn-machine-onboarding/handoff-for-agent.md\n/mnt/rpi/tcn-machine-onboarding/generated-pdfs/ARRIVAL_GUIDE.pdf\n/mnt/rpi/tcn-machine-onboarding/generated-pdfs/TECHNICAL_LEARNINGS.pdf\n/mnt/rpi/tcn-machine-onboarding/docs/Cloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).pdf\n/mnt/rpi/tcn-machine-onboarding/docs/CZG-WXS- 2511-0189-JZ.txt\n/mnt/rpi/tcn-machine-onboarding/docs/Cloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt\n/mnt/rpi/tcn-machine-onboarding/docs/Deep Research Report on TCN-CSC-8C(V49) Smart Touchscreen _ Advertising Vending Machine.txt\n/mnt/rpi/tcn-machine-onboarding/docs/（中英）云数后台操作说明文档(界面英文版) 2.pdf\n/mnt/rpi/tcn-machine-onboarding/docs/（中英）云数后台操作说明文档(界面英文版) 2.txt\n/mnt/rpi/tcn-machine-onboarding/docs/Cloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).pdf\n/mnt/rpi/tcn-machine-onboarding/docs/CZG-WXS- 2511-0189-JZ.pdf\n/mnt/rpi/tcn-machine-onboarding/docs/Cloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt\n/mnt/rpi/tcn-machine-onboarding/docs/（中英）云数后台操作说明文档(界面英文版).txt\n/mnt/rpi/tcn-machine-onboarding/docs/Deep Research Report on TCN-CSC-8C(V49) Smart Touchscreen _ Advertising Vending Machine.pdf\n/mnt/rpi/tcn-machine-onboarding/docs/（中英）云数后台操作说明文档(界面英文版).pdf\n/mnt/rpi/tcn-machine-onboarding/TECHNICAL_LEARNINGS.md\n/mnt/rpi/tcn-machine-onboarding/README.md\n/mnt/rpi/tcn-machine-onboarding/ARRIVAL_GUIDE.md\n/mnt/rpi/Emulation/roms/zmachine/systeminfo.txt\n"}],"isError":false,"timestamp":1778871867234}}
{"type":"message","id":"d94c7865","parentId":"27680887","timestamp":"2026-05-15T19:04:31.822Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"","thinkingSignature":"{\"id\":\"rs_08ae000d0bfd110c016a076e3be9d88194af521629f0ae47c9\",\"type\":\"reasoning\",\"encrypted_content\":\"gAAAAABqB24_iZS2VhFz9kJ2yrDQQtMdtTVEhIUpQEq5ukX-XgIsyj1MVEUC7XL7PK6jZIqgHj461snmPVEWC8USeJ97M3K1Ekg4QlG5u5WTPTKkZvkE8QH24L3ZMOdD1RcPh-MtUb9xvCWOOUQTwMKIuwxDgHJQ9-9PqZ0MWIhJOFc7wigJfvbS453KkLh2z5HZtG8SDlOmiH_zyr3LJr0LCoK6LLuEHAqh8XCWEGOlVBEtdrlkbi0trXfLnQG-bsf7915qltkLUqqIGpBJcdlPrHCy50d19cipblWiYZenwqMp9UU4qtGcw3Lr3w89kAc44p4380DmbK8IhxuMpHHbhxKVwu1vbUtVedACIr5Gg1Vzl5CfKCRq4gsB7Oq5ttMNPbE4trOMiwIhVoU-hxumN8SH5XA6mlZ1UzKJsEqIg3YP5Gq8OZI4Ed23jK8k0BXiaaC9RiGCPnrr2KXdRu5UW-I2MWMAejRqYgcGiLnDg85IqqWy6ie8breh6TfgvlGZE8XFI8nFNuOLbjgPJJMWBZVbZ0Nk6OHXtqQfI1aq3fwCnC3LpbPEhgvzP_b36C7eg7GIH_0k-1zC1enw9dqK3ajYHcMcPzhrvpyC7KQCxJUdjevg9RYsbokJTm6152ZWg2EfBLK2p-RFXhetbfnWBCxKblDuBh8atrJO6S7TGlnizTgFs_SolH5sYS4CGuweXzZyAWvO2F1-QSSyphXsB63RRcThWJpgD2Vl2vfRJZUouMz6nuyAPuJHN5eSkXKhbSdR5-9K22bchXsw98pIzXoKys1pVMi4rJ76VLYsCzBGwHcvuCArVvVgzkXCdbqLG8rP1tD7dmgiVDETUWC0qrDxqj517hoeiahvpaidwtj4BOHBH0IzK5dZ0SGS4urCbADo1HEoSvqBLc9BtUZEFHFpWIBQ_HDISD-Ce_ujbR9bUtwF_oRmDV_FtcWQ0PblpbGxx-qKg9MhTl8C7phLivgzf0LZ-lMXvqozQc2oVLoAXNBAU_8et9xmxfZxrKSMsRwvtVrbMYoT35pVXCXkoKA6Ter7CUDthU1as-N2OSu6RvLPQaE=\",\"summary\":[]}"},{"type":"toolCall","id":"call_2K3OfUKuNxwMbD9l5amLfuCj|fc_08ae000d0bfd110c016a076e3fb1608194b6c7fa07f910829e","name":"bash","arguments":{"command":"cd /mnt/rpi/tcn-machine-onboarding/docs && rg -n -i \"webview|QR|qr code|CodeUrl|external qr|browser|url|payment|scan|扫码|H5|MercadoPago|open.*page\" *.txt","timeout":20}},{"type":"toolCall","id":"call_sVHxLSehqo1tpJAZbHx4VJQC|fc_08ae000d0bfd110c016a076e3fb1708194a59c1d997bc8610a","name":"bash","arguments":{"command":"cd /mnt/rpi/tcn-machine-onboarding && rg -n -i \"webview|QR|qr code|CodeUrl|external qr|browser|url|payment|scan|扫码|H5|MercadoPago|open.*page\" README.md TECHNICAL_LEARNINGS.md ARRIVAL_GUIDE.md handoff-for-agent.md","timeout":20}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":1294,"output":208,"cacheRead":12288,"cacheWrite":0,"totalTokens":13790,"cost":{"input":0.0032350000000000005,"output":0.00312,"cacheRead":0.003072,"cacheWrite":0,"total":0.009427000000000001}},"stopReason":"toolUse","timestamp":1778871867235,"responseId":"resp_08ae000d0bfd110c016a076e3b60548194b1522e1bcbbbaf6c"}}
{"type":"message","id":"98defc12","parentId":"d94c7865","timestamp":"2026-05-15T19:04:31.871Z","message":{"role":"toolResult","toolCallId":"call_2K3OfUKuNxwMbD9l5amLfuCj|fc_08ae000d0bfd110c016a076e3fb1608194b6c7fa07f910829e","toolName":"bash","content":[{"type":"text","text":"（中英）云数后台操作说明文档(界面英文版) 2.txt:70:Setting of WeChat Payment Parameters (An Attractive Option).........................................................................................12\n（中英）云数后台操作说明文档(界面英文版) 2.txt:72:Setting of Payment Parameters............................................................................................................................................. 14\n（中英）云数后台操作说明文档(界面英文版) 2.txt:150:可以二维码扫码登录。（页面顶端可自行切换语言，目前支持中文、英语、越南语）\n（中英）云数后台操作说明文档(界面英文版) 2.txt:151:In the browser, enter the login URL www.ourvend.com of Yunshu Vending Machine Management System to enter the login interface (as shown\n（中英）云数后台操作说明文档(界面英文版) 2.txt:152:below), and enter the corresponding user name and password to log in; you can also log in by scanning the QR code. (You can switch between the\n（中英）云数后台操作说明文档(界面英文版) 2.txt:155:Scan the QR code at the bottom of the login page as an access to “Join Yunshu” on the WeChat, and bind the cloud platform account and\n（中英）云数后台操作说明文档(界面英文版) 2.txt:176:of machines offline, number of abnormal machines and number of machines out of stock as well as the analysis pie chart of today’s payment types and\n（中英）云数后台操作说明文档(界面英文版) 2.txt:301:and select the payment methods and states to check the machine’s delivery records. It supports the export of data to Excel.\n（中英）云数后台操作说明文档(界面英文版) 2.txt:364:This involves the checking of the order number of any non-cash payment (including WeChat turnover, Alipay turnover, Coinect\n（中英）云数后台操作说明文档(界面英文版) 2.txt:365:turnover, ICBC E-banking turnover, Bestpay turnover, ChinaUMS turnover, Ping An E-payment turnover).\n（中英）云数后台操作说明文档(界面英文版) 2.txt:367:If there is a complaint that automatic refund fails for failed delivery after successful payment, the refund can be made here\n（中英）云数后台操作说明文档(界面英文版) 2.txt:368:according to the payment order number.\n（中英）云数后台操作说明文档(界面英文版) 2.txt:408:Setting of WeChat Payment Parameters (An Attractive Option)\n（中英）云数后台操作说明文档(界面英文版) 2.txt:433:Setting of Payment Parameters\n（中英）云数后台操作说明文档(界面英文版) 2.txt:436:Function: To bind WeChat, Alipay, Jingdong, Bestpay, E-banking and UnionPay payment methods of all machines by the user.\n（中英）云数后台操作说明文档(界面英文版) 2.txt:503:Function: To match the information between tracks and commodities, and set payment discount for Alipay or WeChat for each\n（中英）云数后台操作说明文档(界面英文版) 2.txt:529:功能：开通手机扫码支付待嫁页面的广告（多码合一机器）。\n（中英）云数后台操作说明文档(界面英文版) 2.txt:530:Function: Enable the advertisement on the waiting page for payment with mobile phone code scanning (machine supporting multiple codes).\n（中英）云数后台操作说明文档(界面英文版) 2.txt:531:登录云平台---【货机管理】---【机器管理】，选择所要开通的机器 ID，点击开通广告，然后选择开通时长，扫码付款，然后点击【货机\n（中英）云数后台操作说明文档(界面英文版) 2.txt:532:管理】---【机器广告】可查询到付费开通的机器 ID，选择机器 ID，点击编辑，上传广告图片，待平台审核通过后，手机扫码支付页面的\n（中英）云数后台操作说明文档(界面英文版) 2.txt:535:Advertisement, and then select the enabling time and payment by code scanning. By clicking on [Vending Machine Management]---[Machine\n（中英）云数后台操作说明文档(界面英文版) 2.txt:537:advertisement picture; after examination and approval by the platform, the picture on the waiting page for payment with mobile phone code scanning\n（中英）云数后台操作说明文档(界面英文版) 2.txt:614:name, commodity type, unit price, payment type, machine number and 24-hour sales. It can also generate graphical reports based\n（中英）云数后台操作说明文档(界面英文版) 2.txt:625:Statistics by payment method: It can analyze the proportion of the current payment methods in the market. If the proportion of\n（中英）云数后台操作说明文档(界面英文版) 2.txt:626:cash payment is low or zero, the cash payment module can be canceled directly.\n（中英）云数后台操作说明文档(界面英文版) 2.txt:663:available to users who have enabled Alipay instant payment arrival.\n（中英）云数后台操作说明文档(界面英文版) 2.txt:727:membership card through the API. (The customer must bind the enterprise’s WeChat service account to receive payment)\n（中英）云数后台操作说明文档(界面英文版) 2.txt:742:click on [Sync]. (The WeChat payment parameters need to be set before operation.)\n（中英）云数后台操作说明文档(界面英文版) 2.txt:763:需要先建立学校、班级和年级信息，然后再建立学生信息，绑定实体卡 ID 卡号。然后扫码关注公众号领取微信会员卡， 点\n（中英）云数后台操作说明文档(界面英文版) 2.txt:766:physical card. Then scan the code to follow the public account to receive the WeChat membership card, click on “Physical Card\nCZG-WXS- 2511-0189-JZ.txt:62:Without payment system,Customer will\nCZG-WXS- 2511-0189-JZ.txt:99:2. 付款及发货文件 / Payment & Documents:\nCZG-WXS- 2511-0189-JZ.txt:101:Terms of payment: 50% T/T shall be paid within 3 days after the contract is signed as deposit,The other 50% shall be settled before shipment\nCZG-WXS- 2511-0189-JZ.txt:102:(Only payment abroad is accepted, and domestic paymetn of China will be rejected)\nCZG-WXS- 2511-0189-JZ.txt:144:Notice: Seller has the right to postpone or hold the delivery of goods if the final payment is not settled. And, buyer takes the full responsibility\nCZG-WXS- 2511-0189-JZ.txt:561:The Seller ensure the timely delivery of the spare parts since get the Buyer's payment.\nCZG-WXS- 2511-0189-JZ.txt:612:The Buyer ensure that all the payment should be paid in full and all the Products are picked up timely. If the Buyer fails to pay the full payment\nCZG-WXS- 2511-0189-JZ.txt:616:formal notification. The payment made by the Buyer will be regarded as the compensation for the Seller's loss and give up the ownership of the\n（中英）云数后台操作说明文档(界面英文版).txt:70:Setting of WeChat Payment Parameters (An Attractive Option).........................................................................................12\n（中英）云数后台操作说明文档(界面英文版).txt:72:Setting of Payment Parameters............................................................................................................................................. 14\n（中英）云数后台操作说明文档(界面英文版).txt:150:可以二维码扫码登录。（页面顶端可自行切换语言，目前支持中文、英语、越南语）\n（中英）云数后台操作说明文档(界面英文版).txt:151:In the browser, enter the login URL www.ourvend.com of Yunshu Vending Machine Management System to enter the login interface (as shown\n（中英）云数后台操作说明文档(界面英文版).txt:152:below), and enter the corresponding user name and password to log in; you can also log in by scanning the QR code. (You can switch between the\n（中英）云数后台操作说明文档(界面英文版).txt:155:Scan the QR code at the bottom of the login page as an access to “Join Yunshu” on the WeChat, and bind the cloud platform account and\n（中英）云数后台操作说明文档(界面英文版).txt:176:of machines offline, number of abnormal machines and number of machines out of stock as well as the analysis pie chart of today’s payment types and\n（中英）云数后台操作说明文档(界面英文版).txt:301:and select the payment methods and states to check the machine’s delivery records. It supports the export of data to Excel.\n（中英）云数后台操作说明文档(界面英文版).txt:364:This involves the checking of the order number of any non-cash payment (including WeChat turnover, Alipay turnover, Coinect\n（中英）云数后台操作说明文档(界面英文版).txt:365:turnover, ICBC E-banking turnover, Bestpay turnover, ChinaUMS turnover, Ping An E-payment turnover).\n（中英）云数后台操作说明文档(界面英文版).txt:367:If there is a complaint that automatic refund fails for failed delivery after successful payment, the refund can be made here\n（中英）云数后台操作说明文档(界面英文版).txt:368:according to the payment order number.\n（中英）云数后台操作说明文档(界面英文版).txt:408:Setting of WeChat Payment Parameters (An Attractive Option)\n（中英）云数后台操作说明文档(界面英文版).txt:433:Setting of Payment Parameters\n（中英）云数后台操作说明文档(界面英文版).txt:436:Function: To bind WeChat, Alipay, Jingdong, Bestpay, E-banking and UnionPay payment methods of all machines by the user.\n（中英）云数后台操作说明文档(界面英文版).txt:503:Function: To match the information between tracks and commodities, and set payment discount for Alipay or WeChat for each\n（中英）云数后台操作说明文档(界面英文版).txt:529:功能：开通手机扫码支付待嫁页面的广告（多码合一机器）。\n（中英）云数后台操作说明文档(界面英文版).txt:530:Function: Enable the advertisement on the waiting page for payment with mobile phone code scanning (machine supporting multiple codes).\n（中英）云数后台操作说明文档(界面英文版).txt:531:登录云平台---【货机管理】---【机器管理】，选择所要开通的机器 ID，点击开通广告，然后选择开通时长，扫码付款，然后点击【货机\n（中英）云数后台操作说明文档(界面英文版).txt:532:管理】---【机器广告】可查询到付费开通的机器 ID，选择机器 ID，点击编辑，上传广告图片，待平台审核通过后，手机扫码支付页面的\n（中英）云数后台操作说明文档(界面英文版).txt:535:Advertisement, and then select the enabling time and payment by code scanning. By clicking on [Vending Machine Management]---[Machine\n（中英）云数后台操作说明文档(界面英文版).txt:537:advertisement picture; after examination and approval by the platform, the picture on the waiting page for payment with mobile phone code scanning\n（中英）云数后台操作说明文档(界面英文版).txt:614:name, commodity type, unit price, payment type, machine number and 24-hour sales. It can also generate graphical reports based\n（中英）云数后台操作说明文档(界面英文版).txt:625:Statistics by payment method: It can analyze the proportion of the current payment methods in the market. If the proportion of\n（中英）云数后台操作说明文档(界面英文版).txt:626:cash payment is low or zero, the cash payment module can be canceled directly.\n（中英）云数后台操作说明文档(界面英文版).txt:663:available to users who have enabled Alipay instant payment arrival.\n（中英）云数后台操作说明文档(界面英文版).txt:727:membership card through the API. (The customer must bind the enterprise’s WeChat service account to receive payment)\n（中英）云数后台操作说明文档(界面英文版).txt:742:click on [Sync]. (The WeChat payment parameters need to be set before operation.)\n（中英）云数后台操作说明文档(界面英文版).txt:763:需要先建立学校、班级和年级信息，然后再建立学生信息，绑定实体卡 ID 卡号。然后扫码关注公众号领取微信会员卡， 点\n（中英）云数后台操作说明文档(界面英文版).txt:766:physical card. Then scan the code to follow the public account to receive the WeChat membership card, click on “Physical Card\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:7:exclusions (notably 4G connectivity and payment hardware not included) plus warranty and legal\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:10:Management System V2.0, with a public login URL www.ourvend.com, multi-language UI (Chinese/\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:11:English/Vietnamese), QR-code login support, role-based subaccounts, and operational dashboards covering\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:15:that changes the payment waiting page advertisement after platform review/approval.\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:22:explicitly states the delivered machines can be supplied without a payment system**, leaving the buyer\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:23:to install local payment hardware. fileciteturn0file1\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:32:• Web login portal: www.ourvend.com (browser login via username/password; QR-code login also\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:39:• Mobile workflow via WeChat official account: the manual instructs scanning a QR code to follow a\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:44:The manual demonstrates account/password login and QR-based login, plus a WeChat account–binding\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:54:as today/yesterday/weekly/monthly sales, online/offline counts, abnormal machine count, out-ofstock machine count, and charts for payment-type mix and an eight-day sales trend curve.\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:79:days, filter by payment method and state, and export to Excel. It also stresses that statistics are\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:89:Payments, Settlement, and Refund Workflows\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:90:Payment method binding and settlement sensitivity\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:91:The back office includes “Setting of Payment Parameters,” described as binding payment methods fleetwide for a user’s machines, including WeChat, Alipay, Jingdong, Bestpay, 融E联 (E-banking / Rong E Lian),\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:97:- Inference: Payment integration is not purely “plug-and-play” at the machine level; it is an operator\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:104:handling when vend fails after successful payment and auto-refund fails. The listed payment streams\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:105:include WeChat, Alipay, 云投币/Coinect, ICBC E‑banking, Bestpay, ChinaUMS, and Ping An E‑payment.\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:108:payment. fileciteturn0file0\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:112:\f- There is an operator-facing pathway to issue refunds based on payment order number under certain\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:114:Unspecified: Whether refunds are “native” API refunds through each payment provider, mediated through\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:184:for payment with mobile code\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:194:payment waiting page\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:209:scanning,” not necessarily fullscreen takeover.\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:238:approved, the payment waiting page image changes. fileciteturn0file0\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:239:Unspecified: supported image formats, file size limits, creative approval SLA, moderation policy, proof-ofplay metrics, and whether ads can run outside the payment waiting screen (e.g., idle loop on the 49\"\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:268:• Payment hardware: “Without payment system, customer will install in local.” fileciteturn0file1\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:270:payments (machine can ship without validators/readers installed). fileciteturn0file1\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:276:logistics charges and payment terms (e.g., deposit and balance timing). fileciteturn0file1\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:279:and outlines delivery timelines and storage penalties under delayed pickup/payment conditions.\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:306:temperature settings and multiple payment flows, which aligns with the idea that TCN-CSC-8C(V49) can be\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:313:\fconfiguration sheet for your purchase order (cooling type, slot count, modem type, plug, payment stack).\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:323:3. Clarify payment architecture: whether your deployment will use Yunshu-integrated payments\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:325:contract indicates payment hardware can be excluded; the cloud manual indicates multi-PSP\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:328:policies, audit logs, and whether QR login introduces additional risk. The manual confirms role\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:338:Used to identify the cloud platform name, login URL (ourvend.com), module list, VIP paid features,\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:339:telemetry fields, payment record types, and ad workflow. fileciteturn0file0\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49) (1).txt:342:payment hardware, warranty terms, service hours, and restrictions on reverse engineering.\nDeep Research Report on TCN-CSC-8C(V49) Smart Touchscreen _ Advertising Vending Machine.txt:19:The product’s ecosystem (payments, telemetry, and remote management) is described more clearly at a\nDeep Research Report on TCN-CSC-8C(V49) Smart Touchscreen _ Advertising Vending Machine.txt:27:confirm the installed controller/OS (Android vs embedded VMC), validate payment module (e.g., Nayax/\nDeep Research Report on TCN-CSC-8C(V49) Smart Touchscreen _ Advertising Vending Machine.txt:246:Payment system hardware and protocols\nDeep Research Report on TCN-CSC-8C(V49) Smart Touchscreen _ Advertising Vending Machine.txt:247:The official product page states support for bill, coin, and cashless payment and lists card network brands\nDeep Research Report on TCN-CSC-8C(V49) Smart Touchscreen _ Advertising Vending Machine.txt:261:depend on the installed reader (e.g., Nayax/Ingenico/PAX) and the acquiring/payment gateway\nDeep Research Report on TCN-CSC-8C(V49) Smart Touchscreen _ Advertising Vending Machine.txt:289:model. As a result, integration feasibility (e.g., linking to CRM/ad networks, custom payment gateways,\nDeep Research Report on TCN-CSC-8C(V49) Smart Touchscreen _ Advertising Vending Machine.txt:331:Community reports (user forums) indicate that remote connectivity/telemetry and payment reconciliation\nDeep Research Report on TCN-CSC-8C(V49) Smart Touchscreen _ Advertising Vending Machine.txt:348:suggests password management, serial port management, program updates, payment page setup);\nDeep Research Report on TCN-CSC-8C(V49) Smart Touchscreen _ Advertising Vending Machine.txt:364:• Payment terms: T/T 1\nDeep Research Report on TCN-CSC-8C(V49) Smart Touchscreen _ Advertising Vending Machine.txt:367:tiered pricing). These figures are best treated as indicative and likely exclude freight, duties, payment\nDeep Research Report on TCN-CSC-8C(V49) Smart Touchscreen _ Advertising Vending Machine.txt:395:Payment /\nDeep Research Report on TCN-CSC-8C(V49) Smart Touchscreen _ Advertising Vending Machine.txt:415:entity[\"company\",\"CPI (Crane Payment\nDeep Research Report on TCN-CSC-8C(V49) Smart Touchscreen _ Advertising Vending Machine.txt:416:Innovations)\",\"payment and vending\nDeep Research Report on TCN-CSC-8C(V49) Smart Touchscreen _ Advertising Vending Machine.txt:515:3. Lock payment configuration: choose the exact bill validator/coin mech/cashless reader (e.g.,\nDeep Research Report on TCN-CSC-8C(V49) Smart Touchscreen _ Advertising Vending Machine.txt:527:by product class, temperature stability, touchscreen responsiveness, payment success by method,\nDeep Research Report on TCN-CSC-8C(V49) Smart Touchscreen _ Advertising Vending Machine.txt:603:Adds payment module vendor examples and\nDeep Research Report on TCN-CSC-8C(V49) Smart Touchscreen _ Advertising Vending Machine.txt:682:https://tcnvending.en.made-in-china.com/product/PAnrBUxoVQWd/China-TcnWholesale-Vending-Machine-Big-Touch-Screen-Snack-Vending-Machine-CashlessPayment.html\nDeep Research Report on TCN-CSC-8C(V49) Smart Touchscreen _ Advertising Vending Machine.txt:754:Tcn Wholesale Vending Machine Big Touch Screen Snack Vending Machine Cashless Payment Vending Machines and Snack Vending Machine price\nDeep Research Report on TCN-CSC-8C(V49) Smart Touchscreen _ Advertising Vending Machine.txt:761:https://tcnvending.en.made-in-china.com/product/PAnrBUxoVQWd/China-Tcn-Wholesale-Vending-Machine-Big-Touch-ScreenSnack-Vending-Machine-Cashless-Payment.html\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:7:exclusions (notably 4G connectivity and payment hardware not included) plus warranty and legal\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:10:Management System V2.0, with a public login URL www.ourvend.com, multi-language UI (Chinese/\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:11:English/Vietnamese), QR-code login support, role-based subaccounts, and operational dashboards covering\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:15:that changes the payment waiting page advertisement after platform review/approval.\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:22:explicitly states the delivered machines can be supplied without a payment system**, leaving the buyer\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:23:to install local payment hardware. fileciteturn0file1\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:32:• Web login portal: www.ourvend.com (browser login via username/password; QR-code login also\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:39:• Mobile workflow via WeChat official account: the manual instructs scanning a QR code to follow a\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:44:The manual demonstrates account/password login and QR-based login, plus a WeChat account–binding\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:54:as today/yesterday/weekly/monthly sales, online/offline counts, abnormal machine count, out-ofstock machine count, and charts for payment-type mix and an eight-day sales trend curve.\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:79:days, filter by payment method and state, and export to Excel. It also stresses that statistics are\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:89:Payments, Settlement, and Refund Workflows\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:90:Payment method binding and settlement sensitivity\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:91:The back office includes “Setting of Payment Parameters,” described as binding payment methods fleetwide for a user’s machines, including WeChat, Alipay, Jingdong, Bestpay, 融E联 (E-banking / Rong E Lian),\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:97:- Inference: Payment integration is not purely “plug-and-play” at the machine level; it is an operator\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:104:handling when vend fails after successful payment and auto-refund fails. The listed payment streams\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:105:include WeChat, Alipay, 云投币/Coinect, ICBC E‑banking, Bestpay, ChinaUMS, and Ping An E‑payment.\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:108:payment. fileciteturn0file0\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:112:\f- There is an operator-facing pathway to issue refunds based on payment order number under certain\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:114:Unspecified: Whether refunds are “native” API refunds through each payment provider, mediated through\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:184:for payment with mobile code\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:194:payment waiting page\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:209:scanning,” not necessarily fullscreen takeover.\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:238:approved, the payment waiting page image changes. fileciteturn0file0\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:239:Unspecified: supported image formats, file size limits, creative approval SLA, moderation policy, proof-ofplay metrics, and whether ads can run outside the payment waiting screen (e.g., idle loop on the 49\"\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:268:• Payment hardware: “Without payment system, customer will install in local.” fileciteturn0file1\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:270:payments (machine can ship without validators/readers installed). fileciteturn0file1\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:276:logistics charges and payment terms (e.g., deposit and balance timing). fileciteturn0file1\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:279:and outlines delivery timelines and storage penalties under delayed pickup/payment conditions.\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:306:temperature settings and multiple payment flows, which aligns with the idea that TCN-CSC-8C(V49) can be\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:313:\fconfiguration sheet for your purchase order (cooling type, slot count, modem type, plug, payment stack).\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:323:3. Clarify payment architecture: whether your deployment will use Yunshu-integrated payments\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:325:contract indicates payment hardware can be excluded; the cloud manual indicates multi-PSP\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:328:policies, audit logs, and whether QR login introduces additional risk. The manual confirms role\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:338:Used to identify the cloud platform name, login URL (ourvend.com), module list, VIP paid features,\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:339:telemetry fields, payment record types, and ad workflow. fileciteturn0file0\nCloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt:342:payment hardware, warranty terms, service hours, and restrictions on reverse engineering.\n"}],"isError":false,"timestamp":1778871871870}}
{"type":"message","id":"bcae7479","parentId":"98defc12","timestamp":"2026-05-15T19:04:31.872Z","message":{"role":"toolResult","toolCallId":"call_sVHxLSehqo1tpJAZbHx4VJQC|fc_08ae000d0bfd110c016a076e3fb1708194a59c1d997bc8610a","toolName":"bash","content":[{"type":"text","text":"TECHNICAL_LEARNINGS.md:5:- **Control Panel URL:** `https://dnymer.ourvend.com/` (Ant Design based UI).\nTECHNICAL_LEARNINGS.md:8:- **Selectors (Playwright Context):** The UI uses Ant Design. Sidebars are `.ant-layout-sider`. Menu items (Machine, Products, Payment) often require a click to expand the sub-menu before the actual target item becomes clickable or visible in the DOM. Use `visible` filters or exact text matches for better reliability.\nTECHNICAL_LEARNINGS.md:17:## Integration Logic (Third-Party Payments)\nTECHNICAL_LEARNINGS.md:18:- **The \"Justin Chat\" Context:** Justin (TCN contact) confirmed that 3rd party payment integration is standard and used by most customers. This suggests the TCN launcher has a native \"External Payment\" configuration field.\nTECHNICAL_LEARNINGS.md:19:- **Mechanism Theory:** The machine likely calls a configured URL to get a QR code/payment payload and then waits for a server-side \"Release Item\" command (Remote Vend) or a success callback.\nTECHNICAL_LEARNINGS.md:21:    - `Payment > Payment`: Currently has a PayPal template.\nTECHNICAL_LEARNINGS.md:23:- **Keywords for Future Research:** `Remote Vend API`, `External Payment Protocol`, `Third-party QR`, `OurVend Callback`.\nARRIVAL_GUIDE.md:6:- [ ] **Documentación API:** Pedir a Justin (TCN) el \"External Payment Integration Protocol\" o \"Remote Vend API\".\nARRIVAL_GUIDE.md:25:- Backend para crear QR / order.\nARRIVAL_GUIDE.md:26:- Webhook de MercadoPago.\nARRIVAL_GUIDE.md:33:- Conseguir de TCN / OurVend el `External Payment Integration Protocol` o `Remote Vend API`.\nARRIVAL_GUIDE.md:34:- Confirmar el contrato real de request de QR desde la máquina.\nARRIVAL_GUIDE.md:38:- Hacer prueba end-to-end real: elegir producto → generar QR → pagar → recibir webhook → disparar vend → confirmar dispense.\nREADME.md:5:- Mobile H5: https://dnyh5.ourvend.com/#/login\nREADME.md:23:- https://youtu.be/I54SRSfnH5w\nREADME.md:55:### Payment setting\nREADME.md:58:- how to config payment settings\nhandoff-for-agent.md:15:  - QR / third-party payment integration\nhandoff-for-agent.md:16:  - payment success -> vend / dispense behavior\nhandoff-for-agent.md:22:Ballbox likely wants to use its own QR payment flow as a third-party payment integration inside the Chinese app/cloud.\nhandoff-for-agent.md:26:- PC URL: `https://dnymer.ourvend.com/`\nhandoff-for-agent.md:27:- Mobile H5 URL: `https://dnyh5.ourvend.com/#/login`\nhandoff-for-agent.md:75:- payment settings\nhandoff-for-agent.md:77:- activate payment system\nhandoff-for-agent.md:87:2. Docs mention `www.ourvend.com` as the legacy/main login URL; active URLs above were provided by the user.\nhandoff-for-agent.md:91:   - payment parameters\nhandoff-for-agent.md:107:7. Docs also mention refund handling for vend failure after successful payment.\nhandoff-for-agent.md:111:   - no included payment system hardware by default / payment installed locally\nhandoff-for-agent.md:119:The Chinese cloud likely handles machine ops, slot/product config, ads, and telemetry, but the actual payment architecture may still be partially external or custom. That makes the exact third-party payment flow and post-payment vend trigger critical.\nhandoff-for-agent.md:125:- QR order creation\nhandoff-for-agent.md:126:- MercadoPago webhook intake\nhandoff-for-agent.md:127:- admin surfaces for network and payments\nhandoff-for-agent.md:130:- order creation route: `/api/integrations/payments/orders`\nhandoff-for-agent.md:131:- webhook route: `/notification/mercadopago`\nhandoff-for-agent.md:132:- payment correlation uses canonical external reference:\nhandoff-for-agent.md:133:  - `payment-vm_{vendingMachineId}-txn_{machineTxnId}`\nhandoff-for-agent.md:135:- admin/payments exists for reconciliation / payment session review\nhandoff-for-agent.md:137:Also, memory from a separate Ballbox payment-integration effort suggested:\nhandoff-for-agent.md:171:   - payment settings\nhandoff-for-agent.md:172:   - any third-party payment integration path\nhandoff-for-agent.md:184:- Is there a documented or discoverable third-party payment integration path?\nhandoff-for-agent.md:185:- If third-party payment exists, how does the machine know when to vend?\nhandoff-for-agent.md:202:  - `rg -n -i \"payment|slot|commodity|remote|advertis|machine management|delivery|refund|inventory|price\" /mnt/rpi/tcn-machine-onboarding/docs/*.txt`\nhandoff-for-agent.md:203:- browse panel with browser tooling if available\n"}],"isError":false,"timestamp":1778871871871}}
{"type":"message","id":"f7df1754","parentId":"bcae7479","timestamp":"2026-05-15T19:04:36.145Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"","thinkingSignature":"{\"id\":\"rs_08ae000d0bfd110c016a076e409ea08194b1e04202a196e1af\",\"type\":\"reasoning\",\"encrypted_content\":\"gAAAAABqB25DQ0kE7A3xbHEpkhjajmm0aHDrewgtVQdP5hpTcweoHQfjMOeFpVhQzBdnAs6txU5WO6Rk7blJ35unOAMI9azAMcbP1lh3bGJzg3dyO6w0cCFPEtmoh4B-ys8l268G6BtPVSrdvVLpDuDfeRbOAAjWlga5ymRNuG9CvnaV-e9yw-gNOVp9xwOEB5L0lV0vsLeKfyfEgPV8tN4nyFZbMoSv9G6zUW1-fmFYzKkOUD-dI4HoSouUSl2SayAl_tm0kOMIOSY-htsfj0cmkFlUacanaHt2v2FR08PTOsybrmtxLbMunLJJsHd86bQ2JRbk2cwrf1MwJFmU0dC84Jx4LF8iDkBiXh4UxuZYAl9AwDbSRzQIEr6vDGUIB2D8rQotnRGcqpcdjeZ6pV8T3y1QCwuhlZcfARy1En9IRk9zZN5lHYScXNruWB4vBQm74rfgAv7aGU0OcysaokHV1ET-yOgfvvCQ_vk-E1vbZ20ix-GBpOSsp3QhDWP2lI1x1KOrKAidWMt-yTpGyvxJY4qo9UrPmB-Okv_JEaaF67S9o0WrIonlNQfJ2uPIv_O8Vw-H85_hUbdSYrspL_oomHG1IWu6O7SHG9XzgxmIMUOHPhjQctY1_41JdkiLUdCRSdoFnFICWjdvIwibVTbtTRdNerO6uAjqof1g899sonwJAgAeiP66BAVWWydpRTHNhx6HajRO94kdVnypLjLNgRDIu1qDbPxkjxWtvNpW0vcWGSiCVu6n80X-M_SG8zXcqZQs-dWkQhzlebmRU-7F8e09z2aL-d3fnaoQkPH48S_a3Lz-UM0fT3sBtRfAt8Dn-qROsvXhGF-VNHeWY4juppfSU0LHPnCmFKh8RZljmywExpBsIFICpyGqKtKaPniWl_UyZ_gYFKLF2JR5T99OHYAPMlh-yP__xZivo2lKYstuzEhvJUwt12mz9pHjScZx8RqVC3COllYmMQAHvSb3yoN5D9B0idp6EowYEUJN3efmyQ6O95IM_RcXIsADPVvlEVLgm0q-Da4oy91yCakpGb0E_8iZ0Q==\",\"summary\":[]}"},{"type":"toolCall","id":"call_AEOiPquEauYWpJAez9UoiqVs|fc_08ae000d0bfd110c016a076e43dc648194bd381e4904411ea3","name":"read","arguments":{"path":"/mnt/rpi/tcn-machine-onboarding/docs/Cloud System and Commercial Configuration Addendum for TCN-CSC-8C(V49).txt","offset":180,"limit":35}},{"type":"toolCall","id":"call_QvPEt4alh3qEaExjfS9qs1SS|fc_08ae000d0bfd110c016a076e43dc7881949e87234ad85c9489","name":"read","arguments":{"path":"/mnt/rpi/tcn-machine-onboarding/docs/（中英）云数后台操作说明文档(界面英文版).txt","offset":525,"limit":15}},{"type":"toolCall","id":"call_sFL9L9nzZdFvWHQZjI6uTrhz|fc_08ae000d0bfd110c016a076e43dc808194a85d5c15fa3522b1","name":"read","arguments":{"path":"/mnt/rpi/tcn-machine-onboarding/TECHNICAL_LEARNINGS.md","offset":15,"limit":12}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":8823,"output":176,"cacheRead":13312,"cacheWrite":0,"totalTokens":22311,"cost":{"input":0.0220575,"output":0.00264,"cacheRead":0.003328,"cacheWrite":0,"total":0.028025500000000002}},"stopReason":"toolUse","timestamp":1778871871872,"responseId":"resp_08ae000d0bfd110c016a076e400a988194a2d75045b6ce76f8"}}
{"type":"message","id":"707dbf8f","parentId":"f7df1754","timestamp":"2026-05-15T19:04:36.156Z","message":{"role":"toolResult","toolCallId":"call_AEOiPquEauYWpJAez9UoiqVs|fc_08ae000d0bfd110c016a076e43dc648194bd381e4904411ea3","toolName":"read","content":[{"type":"text","text":"to machines only when remote\nfunction is enabled.\nfileciteturn0file0\nAds are tied to “waiting page\nfor payment with mobile code\n\nUpload ad image to\nMachine\nadvertisement\n\nRemote\nconfiguration\nparameters\n\npayment waiting page\nafter paid enablement\nand approval\nRemote drop detection,\nchange-making rules,\nmain/aux cabinet\ntemperature, lock-onabnormality, accepted\ncash types, etc.\n\nVIP\n\nVIP\n\n4\n\nscanning,” not necessarily fullscreen takeover.\nfileciteturn0file0\n\nHigh operational value; should\nbe costed and tested.\nfileciteturn0file0\n\n[136 more lines in file. Use offset=215 to continue.]"}],"isError":false,"timestamp":1778871876151}}
{"type":"message","id":"db5beba3","parentId":"707dbf8f","timestamp":"2026-05-15T19:04:36.157Z","message":{"role":"toolResult","toolCallId":"call_QvPEt4alh3qEaExjfS9qs1SS|fc_08ae000d0bfd110c016a076e43dc7881949e87234ad85c9489","toolName":"read","content":[{"type":"text","text":"18\n\n机器广告（VIP 功能）\nMachine Advertisement (VIP Function)\n功能：开通手机扫码支付待嫁页面的广告（多码合一机器）。\nFunction: Enable the advertisement on the waiting page for payment with mobile phone code scanning (machine supporting multiple codes).\n登录云平台---【货机管理】---【机器管理】，选择所要开通的机器 ID，点击开通广告，然后选择开通时长，扫码付款，然后点击【货机\n管理】---【机器广告】可查询到付费开通的机器 ID，选择机器 ID，点击编辑，上传广告图片，待平台审核通过后，手机扫码支付页面的\n待嫁图片会变更成所上传的图片。\nLog into the cloud platform---[Vending Machine Management]---[Machine Management], select the ID of the machine to be enabled, click Enable\nAdvertisement, and then select the enabling time and payment by code scanning. By clicking on [Vending Machine Management]---[Machine\nAdvertisement], you can check the ID of the machine enabled with paid advertisement, then select the machine ID, click on “Edit”, and upload the\nadvertisement picture; after examination and approval by the platform, the picture on the waiting page for payment with mobile phone code scanning\nwill be changed to the uploaded picture.\n\n\n[246 more lines in file. Use offset=540 to continue.]"}],"isError":false,"timestamp":1778871876156}}
{"type":"message","id":"13d55436","parentId":"db5beba3","timestamp":"2026-05-15T19:04:36.160Z","message":{"role":"toolResult","toolCallId":"call_sFL9L9nzZdFvWHQZjI6uTrhz|fc_08ae000d0bfd110c016a076e43dc808194a85d5c15fa3522b1","toolName":"read","content":[{"type":"text","text":"- **Connectivity:** 4G module is present. Supports Wi-Fi and Ethernet as failover.\n\n## Integration Logic (Third-Party Payments)\n- **The \"Justin Chat\" Context:** Justin (TCN contact) confirmed that 3rd party payment integration is standard and used by most customers. This suggests the TCN launcher has a native \"External Payment\" configuration field.\n- **Mechanism Theory:** The machine likely calls a configured URL to get a QR code/payment payload and then waits for a server-side \"Release Item\" command (Remote Vend) or a success callback.\n- **Integration Points:**\n    - `Payment > Payment`: Currently has a PayPal template.\n    - `Remote Track Configuration`: A VIP feature that must be enabled to allow price/stock sync and potentially remote vend triggers.\n- **Keywords for Future Research:** `Remote Vend API`, `External Payment Protocol`, `Third-party QR`, `OurVend Callback`.\n\n## Connectivity and Network\n- **SIM Cards:** Local SIMs (AR) are necessary due to latency issues with factory roaming SIMs.\n\n[9 more lines in file. Use offset=27 to continue.]"}],"isError":false,"timestamp":1778871876156}}
{"type":"message","id":"743861e5","parentId":"13d55436","timestamp":"2026-05-15T19:04:37.755Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"","thinkingSignature":"{\"id\":\"rs_08ae000d0bfd110c016a076e44d0a881949881df34dbd4a136\",\"type\":\"reasoning\",\"encrypted_content\":\"gAAAAABqB25Fb3rPCqd_ngCr1TBuG8olpFDEqZa1r36SX2VvRbMRiNjFPWw6K_q-SShiHxVYE2fQRtH-c9VKK4sGZvnQA0QUaqiLCbqk5ZAxyMKGArb9kNfljQJBvzdDnYOtHyIgubXuv6GKimqCZBbPKtUCYZVQBsnuFbo4iNaoO37_0DcfJ0LuJqKv4hoohIvO3lKCUeaWsERiU43SRGRn7q7-t8J1uD9EUDD8LW0ZzYkxa7MTy2-Hfb4Ejl5IUig9ivhtM8Oc7c6bVT_qe0kyfitjP6DwX-gWrvjpYdUgng-QprVzvlSi-akmzQ2Cxv9ul3nrKCnTBGMqQWWARhMTAS-nwHQ7DwoZTVXxdiEgt8u6JVZWnxXp--n8aNFvJz1z9Rey0ebUOzADjkXPMQoZM9pRoaB8fPaSM0lymbuYCn56et7_5Yw25oVwANKOENocd996pqOaQAjQHOqSu5UthhMlcxMIxexNz-CF6RbLGqZ3_SLs8ttutbNfn_8DZnfjimKsWN9u5JSKUKEFF_T8rWiyQrahD4NOuLHOFMqWOMXo5Ep4sUZzJyj6KenVCFlkHHr1ckigr2BAdKC8jUYFM9i0GOcgUpA9oS22xak_hPMqxrkj4q2t6Z9PKcmjLMil9Y0ugcEgKFVgE8N16FVBVHH9o4rlznjKRqmL8aOoO-ACtMJGKOs-PALrqTV6rzDjH3b2WQ8m_iTePhH-0ckeYAiiXaNkAjHXa91glV9znbO2YaS21GUIV6iIQiqpD8Afso8aqd63yNLPKQXyvur7_OxgqiwxBFVnn5NY-2sxY4Srco61uFSmeQNYYF9MdbA8u9spln5gIdMD_iJsIYoHWa-9WC2-6FbYLomtsu90pf0Bv7cG7W5cIahZ0HbGT7IpgnrCbaX7Rmcw5nOnuuh5CxmnrROGlxAOFZR1ZPpbN3D_3mXbYVsIwtuEOkEm0ceGdc9FqU2W_q3ugIZEfNUOgmOfGy1_ZvPbKnwmj9HD9O6LIhB1QYc=\",\"summary\":[]}"},{"type":"toolCall","id":"call_luSItjHeV8sUPN8O7pXBqGJ0|fc_08ae000d0bfd110c016a076e4574d881949ab53e6a689eaf4a","name":"todo","arguments":{"action":"update","id":1,"status":"completed"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":1007,"output":43,"cacheRead":22016,"cacheWrite":0,"totalTokens":23066,"cost":{"input":0.0025175,"output":0.0006450000000000001,"cacheRead":0.005503999999999999,"cacheWrite":0,"total":0.0086665}},"stopReason":"toolUse","timestamp":1778871876157,"responseId":"resp_08ae000d0bfd110c016a076e444bd88194b4592144418eb96b"}}
{"type":"message","id":"5d8ff249","parentId":"743861e5","timestamp":"2026-05-15T19:04:37.755Z","message":{"role":"toolResult","toolCallId":"call_luSItjHeV8sUPN8O7pXBqGJ0|fc_08ae000d0bfd110c016a076e4574d881949ab53e6a689eaf4a","toolName":"todo","content":[{"type":"text","text":"Updated #1 (in_progress → completed)"}],"details":{"action":"update","params":{"action":"update","id":1,"status":"completed"},"tasks":[{"id":1,"subject":"Search user-provided PDFs/docs for MML app QR/webview flow mention","status":"completed","description":"Find only in passed docs/PDFs whether MML machine app mentions external QR in webview or describes that flow.","activeForm":"searching passed docs"}],"nextId":2},"isError":false,"timestamp":1778871877755}}
{"type":"message","id":"9c0a258e","parentId":"5d8ff249","timestamp":"2026-05-15T19:04:45.904Z","message":{"role":"assistant","content":[{"type":"text","text":"Sí. En esos docs pasados aparece esto:\n\nLo más cercano al flujo QR:\n- `（中英）云数后台操作说明文档(界面英文版).txt`\n  dice:\n  - “waiting page for payment with mobile phone code scanning”\n  - y que se puede cambiar la imagen de esa\n    “payment waiting page”\n\nTramo literal útil:\n- “Function: Enable the advertisement\n  on the waiting page for payment\n  with mobile phone code scanning...”\n- “the picture on the waiting page\n  for payment with mobile phone\n  code scanning will be changed...”\n\nQué implica:\n- sí hay una pantalla/estado de pago\n  por QR en la máquina\n- parece haber una “payment waiting\n  page” dentro del flujo de máquina\n\nQué NO encontré en esos docs:\n- mención explícita a “webview”\n- mención explícita a “QR externo”\n- mención explícita a que la app MML\n  abra una URL externa en navegador\n  embebido\n\nAdemás, en `TECHNICAL_LEARNINGS.md`\nhay una nota de trabajo, no doc vendor:\n- “third party payment integration is\n  standard”\n- “machine likely calls a configured\n  URL to get a QR code/payment payload”\n\nPero eso es inferencia/handoff, no prueba\ndocumental del PDF.\n\nConclusión corta:\n- sí hay soporte documental de una\n  “payment waiting page” ligada a QR\n- no vi prueba documental de\n  “external QR shown in webview”\n\nSi quieres, te preparo una respuesta en\ninglés con wording seguro:\n“the docs mention a QR-based payment\nwaiting page, but do not explicitly\nstate that it is rendered via an\nexternal webview.”","textSignature":"{\"v\":1,\"id\":\"msg_08ae000d0bfd110c016a076e466fbc819487181d1a5a4b6a53\",\"phase\":\"final_answer\"}"}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":557,"output":368,"cacheRead":22528,"cacheWrite":0,"totalTokens":23453,"cost":{"input":0.0013925,"output":0.00552,"cacheRead":0.005632,"cacheWrite":0,"total":0.0125445}},"stopReason":"stop","timestamp":1778871877756,"responseId":"resp_08ae000d0bfd110c016a076e45e37c8194a2eba47f5f1593e9"}}
{"type":"message","id":"837d999b","parentId":"9c0a258e","timestamp":"2026-05-15T19:14:16.050Z","message":{"role":"user","content":[{"type":"text","text":"[telegram] me preocupa que por mala comunicación haya entendido que se puede integrar un sistema de pagos sin hardware extra. eso quiero validar"}],"timestamp":1778872456043}}
{"type":"message","id":"1335845c","parentId":"837d999b","timestamp":"2026-05-15T19:14:25.758Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Clarifying payment options**\n\nI need to provide a concise answer about shipping without a payment system and local install. The documentation indicates there's a QR payment waiting page along with some payment parameters. There seems to be some ambiguity that I should mention, particularly concerning what needs validation. My goal is to ensure the user understands the options clearly and what requirements must be met for the process to work smoothly.","thinkingSignature":"{\"id\":\"rs_08ae000d0bfd110c016a077089ecd88194ba233e4f7cd41436\",\"type\":\"reasoning\",\"encrypted_content\":\"gAAAAABqB3CLGRQCbaK0uVJsuH519-ttrsNdLTSstGepbnQDI1KCEu6vPC8yvTzA9DVKw7HekZ17FtdNl92zbjD78QE-6c7Qfu3T0o0m6nXybNf9ERIj1ih4gxM3MP4ieq9JgIQ1R4YM_-S6Wkz9SYIcCJzCbOSYwxCVpWMJU1ncfsqQxBq8uqtTNikfwl7WfczSoqekncapP7Ar-n4BtSBx1pqP5kAvofHBlOGNgeJ_YB21lpGfpLn8XZBp0tAFVaYpxmxvmNEDpDrTIdP5pUEwacYev0dzRf0FgcImrI8htbq683ulMeAq5F89j4xA5NKgHxB5nRmEB-qcaWkUyfcM9sUskTHqEaz_4CGScjRJMU0xvpIQrMOBqnE1bYieTLzgOi3XpVbRfTf40TXloy9HdKzh3zJWDxpsS5Y71GZ0gECHUs6TEfSSoe8TN9_nAWIeCwAX1ASkcsbScA5uNGuqhjsU86h0cYfbzbxf7VpYQ2DY9-oO6l4reeDhx1mN96SvKXWaFwpbM4NlFNULJAYhwSYEQYBg1wrw6k2_yZt5enKl7zABuWJfdL9oxRmLsXEa07paIhhtRVRXYUp72u9mhviZXG15mfJrOI3ZJ8YX6QOAbSDO8Pc3Lk0tKFI2QzyVKtNPGALUglllOMLGu9vBjr0CFeNAKn89DQHO52Wnmamdtsp2nqItGmZV7Q46sbTfionUl1hKsuUDq8_9wj3Kvndg35DEHnkowb6t1S-3p08vfksL9sSIsSW2vUQg5GRn1EAzoJZvmYELiV5dWa91WYqzvKYYotwe258jEPnE9PqTfxgWdiYktKuj5vEAOW5BT5elGckxMukyEhIYuuIN2m4ooff_BMAWcDa3mYsLbq42xvqVWNbfLlGOQNt83GjRuXvp__y4-3HOx0u-8wPVWNCdY00H1ADyC5MzQod-RUroq2zuXFneJ5LtYXrdkhVRadu9cRQ-h5Yzi2e9o3UQXddZZ8yBm3eYaDCsOir_XorU1FZJDW12UlCPF4xmD0xS597c9lm_2zOsDnq0o8wd4xv1g5XguNcXCgtTu0AsCHoEGj7M5hTw_bZl21mPYRyuUtnjXx5kVVx0_r_IRVOwc0ZxhDA-XvDrDZsE5zFotm9aOGIxwTkuEURDi9dvx-gyafzsGQOBJmQEV4F-p4HQpp35ySS9O9oVuH3nXFZ0gfLH2ToVfeE=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Clarifying payment options**\\n\\nI need to provide a concise answer about shipping without a payment system and local install. The documentation indicates there's a QR payment waiting page along with some payment parameters. There seems to be some ambiguity that I should mention, particularly concerning what needs validation. My goal is to ensure the user understands the options clearly and what requirements must be met for the process to work smoothly.\"}]}"},{"type":"text","text":"Sí. Esa preocupación es válida.\n\nCon solo estos docs, no queda probado\nque “se puede integrar pagos sin\nhardware extra” en el sentido fuerte.\n\nLo que sí dicen:\n- existe flujo de pago por QR /\n  “mobile phone code scanning”\n- existe “payment waiting page”\n- existen “payment parameters”\n- la máquina puede venir “without\n  payment system” y el cliente instala\n  localmente el sistema de pago\n\nEso último mete ambigüedad fuerte:\n- puede significar que para pagos\n  cashless normales esperan hardware\n  local\n- y que el QR flow sea solo una\n  modalidad soportada bajo cierta\n  config/protocolo, no garantía de que\n  cualquier PSP externo funcione sin\n  hardware adicional\n\nEntonces, con estos docs:\n- NO validaría todavía la frase\n  “no hace falta hardware extra”\n- Sí validaría:\n  “hay indicios de flujo QR en pantalla,\n  pero falta confirmar si eso reemplaza\n  hardware de pago o si convive con él”\n\nLo crítico a confirmar con TCN/MML:\n1. ¿El QR se genera desde una URL\n   externa/tercero o solo PSPs ya\n   integrados por Yunshu?\n2. ¿La máquina puede vender solo con\n   QR en pantalla y callback remoto,\n   sin lector/pinpad/validador extra?\n3. ¿Qué protocolo exacto usa para:\n   crear orden → mostrar QR →\n   confirmar pago → disparar vend?\n4. ¿Qué significa exactamente en su\n   contrato “without payment system”?\n\nTe recomiendo wording seguro:\n“The documents suggest a QR-based\npayment flow exists, but they do not\nclearly confirm that third-party\npayments can be integrated without\nadditional payment hardware.”\n\nSi quieres, te redacto 3 preguntas muy\nafiladas para mandarles hoy.","textSignature":"{\"v\":1,\"id\":\"msg_08ae000d0bfd110c016a07708bd5dc8194acbc2863954daec9\",\"phase\":\"final_answer\"}"}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":11098,"output":427,"cacheRead":12288,"cacheWrite":0,"totalTokens":23813,"cost":{"input":0.027745000000000002,"output":0.006405,"cacheRead":0.003072,"cacheWrite":0,"total":0.037222}},"stopReason":"stop","timestamp":1778872456046,"responseId":"resp_08ae000d0bfd110c016a077089156881949c33593649188b88"}}
{"type":"message","id":"8310279b","parentId":"1335845c","timestamp":"2026-05-15T19:16:35.379Z","message":{"role":"user","content":[{"type":"text","text":"[telegram] mml no es un termino real. se me escapo escribiendo \n\nque es psp?"}],"timestamp":1778872595371}}
{"type":"message","id":"2fb35392","parentId":"8310279b","timestamp":"2026-05-15T19:16:39.105Z","message":{"role":"assistant","content":[{"type":"text","text":"PSP = Payment Service Provider.\n\nEs la empresa/plataforma que procesa\nel pago.\n\nEjemplos:\n- Mercado Pago\n- Stripe\n- Adyen\n- PayPal\n\nEn este contexto:\n- si dices “PSP externo”\n  quieres decir un proveedor de pagos\n  ajeno al sistema nativo de la máquina\n  o de Yunshu/OurVend.","textSignature":"{\"v\":1,\"id\":\"msg_08ae000d0bfd110c016a077115722c819484f2ef942c836f35\",\"phase\":\"final_answer\"}"}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":761,"output":82,"cacheRead":23040,"cacheWrite":0,"totalTokens":23883,"cost":{"input":0.0019025000000000001,"output":0.00123,"cacheRead":0.0057599999999999995,"cacheWrite":0,"total":0.0088925}},"stopReason":"stop","timestamp":1778872595373,"responseId":"resp_08ae000d0bfd110c016a07711468ec8194850547b6ffeea777"}}
{"type":"message","id":"56bdc7c8","parentId":"2fb35392","timestamp":"2026-05-15T19:18:10.789Z","message":{"role":"user","content":[{"type":"text","text":"[telegram] esto hable con soporte de tcn recien\n\n[15/5/26, 16:35:49] Sebas: i wanted to ask about specifics on what the system expects as return schema for external payments using QR, so it knows to dispense product on successful payment\n [15/5/26, 18:48:40] ~ Service Mia: Our machine is linked to your payment account. Once the customer successfully pays, the vending machine will dispense the product. If it fails to dispense the product, the vending machine will send a refund command to the payment device. All subsequent operations will need to be handled by you on the payment platform.\n [15/5/26, 19:43:53] Sebas: thanks, and by payment device you mean something extra connected to the VMC?\ni was planning on showing a qr code on the android app itself and resolve the payment there. Is that not possible?\n [15/5/26, 19:49:43] ~ Service Mia: Of course you can. You can view successful payment records in your payment account and issue refunds to customers through your payment account.\n [15/5/26, 19:53:35] ~ Service Mia: Refunds cannot be processed on the machine screen.\n [15/5/26, 19:54:39] Sebas: what i planned for was this for the usual payment flow:\n\nUser chooses product  \n→ Machine shows payment option  \n→ User scans the QR code  \n→ QR opens the payment page/app  \n→ User confirms payment  \n→ Payment system approves transaction  \n→ Machine receives confirmation  \n→ Machine dispenses the product\n [15/5/26, 20:03:13] ~ Service Mia: This is exactly the dispensing process of our vending machines.\n [15/5/26, 20:14:40] Sebas: oh okay! sorry got confused \n\nthen do you have a manual on setting it up or is it easy?\nit’s one link to a qr code per product?\n [15/5/26, 20:30:40] ~ Aftersales Management Eve: Good day sir, how are you? Please call me Eve. I am a little bit confused. Do you want to display a QR payment code on the machine so that customers can scan the code to pay and then the machine will complete the shipment?\n [15/5/26, 20:31:14] ~ Aftersales Management Eve: Because you just mentioned that you believe this is a normal purchasing and shipping process.\n [15/5/26, 20:59:41] Sebas: Hi Eve!\n [15/5/26, 21:00:12] Sebas: Yes exactly\n [15/5/26, 21:01:12] Sebas: I believe I saw on some manual the app displayed a WebView for showing the QR"}],"timestamp":1778872690782}}
{"type":"message","id":"ec262745","parentId":"56bdc7c8","timestamp":"2026-05-15T19:18:20.329Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Interpreting conversation cues**\n\nI need to interpret the conversation carefully to avoid any ambiguity. It's important to suggest next precise questions that could clarify things. I might also want to mention that the \"webview\" isn't established yet. Keeping everything concise is key, as I don't want to overwhelm the user with too much information at once. Making the dialogue smoother and more understandable is my goal here. Let's see how that works out!","thinkingSignature":"{\"id\":\"rs_08ae000d0bfd110c016a077173b8a88194bf0d1c611fdf6315\",\"type\":\"reasoning\",\"encrypted_content\":\"gAAAAABqB3F2e93lxkATESEavzZZQtB-rLNPcd1exy_clf4U4lkeV5lDLWTNRCFg7T-Aa8ar7xZGVACl3zKfXyniwznYqQlFnEg6J3ryju5rXG2KtB65wJyAyot3N3krYVko8TqDkI0AzcmBy9Kv6aowG3EWi4q9znYiD7C7mIMpli-QBO2EapxVW5pv0jIxWovGtGWSJg0QPaBZPOQy_liDueLgML80FQNEZinIkPuxAJTkZJWZHssT55l1oh-TZqWrqkFiAJkgIlw4VACj9CjFj_Q0kXUe4saJ7Es5BbK5J5yLdQtyGYGz7dCsV9uXEPavpYIqjkj0DvbfcR3-Nj3QyZRiD7RESVzwnisFdQNb3artIW74xIts1FV1GHRukuxsHG4U8_9x3PLhcpsNW9HyP8NMHKJSab-AwlknWv69r9yxnLVSGJfDD4D3GgWj-VSpqtzCkOQad5wzksHM7QKYaQO6whZYes9BeKpFzvudVUpS60Pet_pQGrg1OrlAMLURi6Gobkb3aALisnUIDUpyaRi3BeAZDPoJTH1XOVvdD30m7VA4EZSc8BRBs4XHSX5ITLXymVtmlqgyC0583V8rVmCqHPL92FN0SKjJYzWEReb6054M_C0wqi6mpeoigjMlQnCDii1AMS-lOy5kYkHPVlLfccllspJ-6d2msUzOay4D7FXzJFg5sOOqsMuzFWjHnImhAtD2EZvL4sUb7BUrKjCpBtojFEfIltn5eXXLy0NDt50Y0tHfe_PQM798-1lNcZubDLTeDaJGy5C6QJhWpab4H3YbGLf3o-fDSUWz-fUEftxnS0CWnazXf0R0-GQ5vyYuM9Sem6KlK5VeTeyHJYofllN-mqw7watnoIKtsUvazi9L5aK4WHT8fYorUtyumdHI6ThtX0JVLmUdziefdCqQYCg_2FuK2fc4YlInY2BhEq36bOdJCZhES1rI9rrDR1MgMB6Q08j2qKKTm__mlsIirjbnLR00I5x2swdpCpqyah5xZENuYOeNdFsd-DLLth951l4y3LSBc1YrFkufR_hW0-XgxxrE0dgeSjblNIL9uub9HlZst-OSmuAc14fCeUnXBlryPOMjOAC-sIZYHvz2j3hyMLX_UNrYXwDI5CscN7lNDn0=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Interpreting conversation cues**\\n\\nI need to interpret the conversation carefully to avoid any ambiguity. It's important to suggest next precise questions that could clarify things. I might also want to mention that the \\\"webview\\\" isn't established yet. Keeping everything concise is key, as I don't want to overwhelm the user with too much information at once. Making the dialogue smoother and more understandable is my goal here. Let's see how that works out!\"}]}"},{"type":"text","text":"Bien. Esto cambia bastante.\n\nLo que sí podés tomar de ese chat:\n- soporte confirmó el flujo deseado:\n  QR en máquina\n  → cliente paga\n  → máquina dispensa\n- también confirmó que refunds van\n  fuera de la pantalla/máquina\n\nPero sigue habiendo ambigüedad crítica:\n- Mia dijo que la máquina está ligada\n  a “your payment account”\n- también habló de “payment device”\n- Eve después mostró confusión\n- nadie confirmó todavía el contrato\n  técnico exacto\n\nPunto importante:\n- vos les dijiste “I believe I saw...\n  a WebView”\n- eso salió de vos, no de ellos\n- por ahora no lo tomaría como\n  confirmado por TCN\n\nMi lectura:\n- ya hay señal fuerte de que\n  QR-on-screen sí es posible\n- todavía no hay validación técnica\n  de cómo se integra:\n  - URL externa\n  - schema de respuesta\n  - callback\n  - polling\n  - order id\n  - trigger de dispense\n\nLo mejor ahora es cerrar ambigüedad con\npreguntas muy concretas. Mandales esto:\n\n1.\nWhen you say this is possible,\ndoes the machine support showing\na QR code generated by our own\nexternal payment system on the\nAndroid screen, without any extra\npayment hardware connected to the VMC?\n\n2.\nIf yes, what is the technical\nintegration method?\nIs it:\n- a URL/web page shown on screen\n- an API returning QR content\n- or a payment device protocol?\n\n3.\nWhat exact signal tells the machine\nto dispense after successful payment?\nPlease share the request/response\nformat or protocol documentation.\n\n4.\nDo you have a setup manual for this\nexternal QR payment flow?\n\n5.\nIs the QR linked per product,\nor is it generated dynamically per\norder/selection?\n\nFrase clave para no autoengañarse:\n- “commercial confirmation: likely yes”\n- “technical confirmation: still no”\n\nSi querés, te redacto el próximo mensaje\nlisto para enviar, más corto y diplomático.","textSignature":"{\"v\":1,\"id\":\"msg_08ae000d0bfd110c016a077176b4f081949b2315fd7f920c3b\",\"phase\":\"final_answer\"}"}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":947,"output":469,"cacheRead":23552,"cacheWrite":0,"totalTokens":24968,"cost":{"input":0.0023675000000000002,"output":0.0070350000000000005,"cacheRead":0.005888,"cacheWrite":0,"total":0.015290500000000002}},"stopReason":"stop","timestamp":1778872690784,"responseId":"resp_08ae000d0bfd110c016a077172f0848194988596179cc5be67"}}
{"type":"message","id":"22a0a13f","parentId":"ec262745","timestamp":"2026-05-16T07:02:24.616Z","message":{"role":"user","content":[{"type":"text","text":"[telegram]\n\n[attachments] /home/sebas/.pi/agent/tmp/telegram\n- /497ef45b-ebbc-49a8-981f-d362027801ff-photo-1425.jpg"},{"type":"image","data":"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3Wh5KGqgfr5Z333333n3333333n33n33333331sWCb2i2S5xcXnU211XnUX222X3EUn33333n32i7y8eTZxLnc10000333210033121333332330CVSu1QIZ7vNHmV2U0kH32EE00FH0EH1mEEF174aNeByL6sNGywwwwwzwwzzwwwzyzzxyywzxz3qoPcDwOuMPffqC9HzfWxLFORPG1302HHHm321Y6XE8qusMP/W585/+/wDvv/fvP9NNt9d9d9tJ9f6Ew1hm1jD+BBBBBBBBBBBBBBBBBBBBBBBBBFSRX268PmsPcHUsBBBBBBBBBBBBBBBBBBBBBBV7sg7f39qr88RzRBBBBBBBBBBBBBBBBBBBBBBVBtt9QaFi04UV591Nl5lZJp1t5NRJ1p9dBBBBVll5pt3KwkeQBRhBBRxBxRxRhRhRxhRhBBBBBVB9dtJBIq+AtNNNNNNNNNNNNNNNNNNNNNNNNNFNxBQrDlxtP395599999999999999999999999IkTGiChHzg+NdV99999999999999999951tt5UMajTCNzviC++yzzzzzz3//AP8Avf8A++y444UY04dODDCeVlHFavf/AP8A/wD/AP8A+8889/8Af+ue+usc8rG2+yKuipVnvfNxNlFFh1xhV599ptRllV9x111OexN2iE5hvZ0ddt99tJtJdtt999d5dd199BJ1qCVBoc8vHrZ7+k8MMIYkMMM4ww08840AXbnImIJdlc50dFTrkx199999999999191599999919t1logBM/brndp5V1JFdN5h5J9ZN5pVZ5d1xldqR5E8wgDzLAd99991959919999999t19999996swwgIADJID/AFcWZcfTUUZfdXXSeeYXTUfSfffnQBFPPNe+w/8A333233332133333333333333241HwzzxnP8Av3999999999999999999999pdZxuQ4IkwwyRzgh628884wwww8ww8880w0808o9xIpQ40Jcib9HezPPPPf8A/wD/AP8A/wD+9889e8//APPvugpwAUcptfr/AH3dUVfZbZTXUQeYYXdRdQXXfffUInCEQFYabj3/AE000033302330200121133333yKjnRV2XIAr9VXE330nV1XGWXXUnGWH1m3U33rLwwTxx94Z1+1232232111022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rEHv9S8hQHmD1Pf6aR5MPgUcxCCZtdq0jSrt6V1GIDRVoU70FzjcOh8wcMFjFW48gYP5n+G//JUaJ3qRCMZFHaeEXiVPYSVYMbV6RYRF/wDCHp8PBoytBtl51a8vDGU2389T+/eKwj0sglYmMW1nHkaPbxFaUI9+vp/JYPUdZzdujMveU9H2lPR9pT0faU9H2lPR9pT0faU9H2lPR9pT0faU9H2lPR9pT0faU9H2lPR9pT0faU9H2lPR9pT0faU9H2lPR9pT0faU9H2lPR9pT0faU9H2lPR9pT0faU9H2lPR9pT0faU9H2lPR9pT0faU9H2lPR9pT0faU9H2lPR9pT0faU9H2lPR9pT0faU9H2lPR9pT0faU9H2lPR9pT0ZT0ZT0Zrw/Mfgfl4uUVYORidB4/sdH7QQBtKsmssdFOBL93RF+ZoNDofz26vvO4953HvO4953HvO4953HvO4953HvO4953HvO4953HvO4953HvO4953HvO4953HvO4953HvO4953HvO4953HvO4953HvO4953HvO4953HvO4953HvO4953HvO4953HvO4953HvO4953HvO4953HvO4953HvO4953HvO492dx7y12v1r353H4gNE9Ef7/wr/wDGP/xT4P8A8K+L/wDCPi+D/gn/ABD/APFPi/4F+n//2Q==","mimeType":"image/jpeg"}],"timestamp":1778914944601}}
{"type":"message","id":"11bb5aad","parentId":"22a0a13f","timestamp":"2026-05-16T07:02:35.556Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Interpreting screenshot content**\n\nI'm looking to provide an answer about a screenshot. I think I could read the attachment directly without needing OCR since the text is already in the image. My goal is to be concise and get straight to the point to help the user understand it better. Let's see what the content reveals and how best I can summarize that information!","thinkingSignature":"{\"id\":\"rs_08ae000d0bfd110c016a081683c624819496b799df84a32a80\",\"type\":\"reasoning\",\"encrypted_content\":\"gAAAAABqCBaFzs70YbuiEI--Sa9pe1-oBHQZ6-Qu4gjsjxYA1GX-zZMrcAlU1JwWOyfT92jSco6_YEb5mwokMeH4lelw97YO58QwVpIJYE1eA9_VYVc9ojGxEpV8OMvUg1a0D6xk6FSIprlTYlPu1V0B0FlXxuyDldTiU6Qhwo1FlrA7qUpWNZ1x5NDL-Khu4uFGVFxJSLmRwSua5deXRHiF9S-h8UcZAnUo0KoYtnRDkIpr41itM5dw4I6xYrQy0jjerm_NDbGxmA9nyRkhRx8RbqE_YHUysnXktmOtjT_q6WJbr5pMU0kD3DuJ91H71BZElYXC9rIFgvLVLwlpbb_8usb_CeJcQ20jUedxLuGpQKjmS_eo7iZaK7ThUpRPOlONOlPHKg1871bkyVp1rdEse0mSovQjOig_QhKy4Fs_oGdHSx62Xa5Dbm4wan4gBpvNGvfo5XOOwenszsN7hkM1sx4FuJ0zThruS5RtWxZgBO-ljbo407wCuGeY_D7dTd_AtONvJlsMUkHrBKwmqYvYBJ2yBlOeSBDjcUrLkpIkHPuytUqbcrXG44MuCry4mR7yf13IJcCFQek8xY3h7B0jI9vPwppqEx3e-lObUQ6cXubzaZYiQqp2gK5uVAtOK3OKa-BzWMsii1hGGhwmKeOWcgQEVBtqh5w4KZfa3GZS9YTyaqky2MSdZGr8YlpFHHfIUN_AyRVYdsA6y_BRVsPKwpX8s4zqYg0KiAYB_3snXXl1MrQcBpEx8fVNIfqPa3TqY1gN-L7WNQAd_CDgabHyQaW_mVoKBgjFL3uLE7DH6h52j6C94VBNz4zp8VW9tPvJFvT6-zc6K3jjy98iGhHtNdQeu1QiNm-_qE1qeNQFbfX_mceb8LOJ5XTkp2rRPCeXOPceNByw5Zcw5LrZddN4hxZIG0KX8sHRAllVQOTfT4F78ztTaq8IYFMAp8hZ91faDueHIWux3JC7PKlCbB3LDjI5u4WotmVXcx8su932gHyeFkdzzPERCH7n9DvGTHNtz5yZl1Yz9mTtpL7bfzp7ItQA7PKRBjyafQWEaNZ6YZRFwel05hAEkELqKlQV9CVY8HX1ZouT2RGbcT4ZNc-6DzucPBkYcg==\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Interpreting screenshot content**\\n\\nI'm looking to provide an answer about a screenshot. I think I could read the attachment directly without needing OCR since the text is already in the image. My goal is to be concise and get straight to the point to help the user understand it better. Let's see what the content reveals and how best I can summarize that information!\"}]}"},{"type":"text","text":"Esto aclara bastante más.\n\nNueva señal fuerte:\n- no están hablando de hardware extra\n  en esa respuesta\n- están hablando de integrar Mercado\n  Pago API con su “standard payment\n  software”\n- incluso dicen que su software team\n  puede tener que hablar con la\n  payment company\n\nMi lectura ahora:\n- sí parece viable integrar un flujo de\n  pago QR sin hardware adicional\n- pero no como “poné cualquier webview\n  y listo”\n- más bien como integración formal con\n  su software de pagos estándar\n\nO sea, el modelo parece ser:\ntu backend / Mercado Pago\n→ integración con software TCN\n→ máquina sabe que pagó\n→ dispensa\n\nNo prueba todavía:\n- si el QR lo muestra una webview libre\n- si hay API pública/documentada\n- si requieren desarrollo interno suyo\n- si el flujo queda por producto o por\n  orden dinámica\n\nPero ya podés decir algo bastante más\nfuerte:\n\n“TCN support indicated they can connect\nour Mercado Pago integration into their\nstandard payment software, potentially\nwith involvement from their software\nteam. This suggests the QR payment flow\nmay work without extra payment hardware,\nbut it still needs technical validation\non the exact integration method.”\n\nSiguiente mensaje ideal para ellos:\n\nThanks, that helps.\n\nSo just to confirm:\n\n1. This can work without extra payment\nhardware connected to the VMC, correct?\n\n2. Is the integration done through your\nstandard payment software team, rather\nthan by simply opening our own web page\ninside the Android app?\n\n3. Do you have technical documentation\nfor:\n- order creation\n- QR generation/display\n- payment success callback\n- dispense trigger\n\n4. Can your machine request a dynamic\nQR per purchase, or do you expect a\nfixed QR/payment config per product?\n\nSi quieres, te lo dejo más corto todavía\npara WhatsApp.","textSignature":"{\"v\":1,\"id\":\"msg_08ae000d0bfd110c016a081685db3c8194b0da87033364fd14\",\"phase\":\"final_answer\"}"}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":25900,"output":417,"cacheRead":0,"cacheWrite":0,"totalTokens":26317,"cost":{"input":0.06475,"output":0.006255,"cacheRead":0,"cacheWrite":0,"total":0.071005}},"stopReason":"stop","timestamp":1778914944609,"responseId":"resp_08ae000d0bfd110c016a08168294cc8194b860137578bf7077"}}
{"type":"message","id":"643cf9ae","parentId":"11bb5aad","timestamp":"2026-05-16T07:05:57.825Z","message":{"role":"user","content":[{"type":"text","text":"[telegram] me buscas la api que piden de MP? quiero pasarselas y que me den un tiempo de entrega aproximado (porque si dicen que tardan semanas voy con el hardware)"}],"timestamp":1778915157815}}
{"type":"message","id":"be1dceeb","parentId":"643cf9ae","timestamp":"2026-05-16T07:06:02.733Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"","thinkingSignature":"{\"id\":\"rs_08ae000d0bfd110c016a08175726c0819496622e4d1869e974\",\"type\":\"reasoning\",\"encrypted_content\":\"gAAAAABqCBdaQibgtZytuhjiowRCF-pETa2TpAHx_GvHK2_V3l7t4vLlfY1jOVINAZzxkmzvPm_d3pd4TqBLNxg6kOZPNr2l4GGhy419vJ2t1bYrvT5Y0ioko8G_OIsOTjkOyi_s5wE-vLIHUYluqPbdqU3seDM1Whvz35L-jfcjARsskaiTzVO9oGoVyxzjZh4bq13fHZ-1UtlLpG4khDIYduNrJ-srvfXme0rM-XudgQ73smYRNWcfXZPFZO9Xm0vZjrW0daIdPWDIhTGWink0kCiqPogMoHj4reYsmdmju6gjV3JzbmzCTY1iZHLVEuJ2M1mggBUpMeXd1Zo9C4swz9AvhNDtiT5szYFZbgVdoLAb4K_s4aNe4YVxbLcFrqZQzt0pjYaMrW4NyEgSfkTcCtBre_uFRRPuxrIS1xKkrlPBlyFBk2GcaKFcHXtegi_pJ8RexmuVxMhK8ccAy1HwtDqhvNw2zOrDCYdcYMvI_8JvQKo9OArM601sgmc9WGz-EcEXUznDodVeDu4Lr2HLYdXZlCHSIpyLapnAeUS81EL8dqf6DcMiLImczokXNetiS7qi3drdYFpxtLebmr0o2lcokYNn3D4ffp3cy92TYRJcbXeuFEok4UpZQ5FWobpw1Q2sOo5H_IMfwT8yY5ZGWiCOyZqKF2Y24BjxpLelFHEYSRFfcoLgU6gUROzuroopfAnRqt44mMoZxFaGBNIMd8azHuCc_pd8qTHBzHoeQb7uxGOVrLowCPGvxgn2QflZQc33EpeRds7g98okQ-1ME8IWCl341n1OxgKA4HWx_giE_idcvjgPt_1TZoSMuQ2uRq9mi7qyp_2mzTAw1nSE0aLhvutZQYve6ESHtYa73xkcEO_gb9Bsh1l8B09wdKq1-hwHIX05s6H1c7U5XDmR8zy0Ea1aydPA2FegTOvF67d5dS94wQFxvbsqAkeB7e_H-GKIBC80FNaYOvNIvKc_lqWP3uWsP1rrtbqo21sl7qegesUowiCRgRuzm01TvJtEaEfu5BZxJdcArPendNoissN5uFPc4LbWYR8J4ArhmfcJv3vy-W60LAitrS7uXME0SO0E9y3rbtD0xY4E1AywBFkiFTsvkfX9nNWL9HyQgsQul_WFz68R9pTqBJq4vu01SueVSjjRtBTlMLem36vCf7kk6YnzaGMY55imLkvhASjnl8K3RncT8KOq1qPutY225FT-QT3tq6Kn-qbY6JRXfT-oKDvernf7xKekMPTE-_kNzENJ67k9y4fRoMZPX1bSZrP4EdfR\",\"summary\":[]}"},{"type":"toolCall","id":"call_wzEL8GBWtVUA7u11hQQTDJ3I|fc_08ae000d0bfd110c016a08175a68f08194aa96f532f299a7a6","name":"todo","arguments":{"action":"create","subject":"Find Mercado Pago API docs relevant to TCN external QR payment integration","description":"Identify the Mercado Pago API/docs to send TCN so they can estimate delivery time vs hardware fallback.","activeForm":"finding Mercado Pago APIs","status":"in_progress"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":26340,"output":128,"cacheRead":0,"cacheWrite":0,"totalTokens":26468,"cost":{"input":0.06585,"output":0.00192,"cacheRead":0,"cacheWrite":0,"total":0.06777000000000001}},"stopReason":"toolUse","timestamp":1778915157817,"responseId":"resp_08ae000d0bfd110c016a081755f6b0819494778a21fb9837fa"}}
{"type":"message","id":"54948729","parentId":"be1dceeb","timestamp":"2026-05-16T07:06:02.735Z","message":{"role":"toolResult","toolCallId":"call_wzEL8GBWtVUA7u11hQQTDJ3I|fc_08ae000d0bfd110c016a08175a68f08194aa96f532f299a7a6","toolName":"todo","content":[{"type":"text","text":"Created #2: Find Mercado Pago API docs relevant to TCN external QR payment integration (pending)"}],"details":{"action":"create","params":{"action":"create","subject":"Find Mercado Pago API docs relevant to TCN external QR payment integration","description":"Identify the Mercado Pago API/docs to send TCN so they can estimate delivery time vs hardware fallback.","activeForm":"finding Mercado Pago APIs","status":"in_progress"},"tasks":[{"id":1,"subject":"Search user-provided PDFs/docs for MML app QR/webview flow mention","status":"completed","description":"Find only in passed docs/PDFs whether MML machine app mentions external QR in webview or describes that flow.","activeForm":"searching passed docs"},{"id":2,"subject":"Find Mercado Pago API docs relevant to TCN external QR payment integration","status":"pending","description":"Identify the Mercado Pago API/docs to send TCN so they can estimate delivery time vs hardware fallback.","activeForm":"finding Mercado Pago APIs"}],"nextId":3},"isError":false,"timestamp":1778915162735}}
{"type":"message","id":"9e4642a4","parentId":"54948729","timestamp":"2026-05-16T07:06:04.321Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"call_QJMvzvSV9PPNiKwfWD84mVRH|fc_08ae000d0bfd110c016a08175bd118819494f9c6b21ea7cbc1","name":"todo","arguments":{"action":"update","id":2,"status":"in_progress"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":386,"output":26,"cacheRead":26112,"cacheWrite":0,"totalTokens":26524,"cost":{"input":0.000965,"output":0.00039,"cacheRead":0.006528,"cacheWrite":0,"total":0.007883}},"stopReason":"toolUse","timestamp":1778915162737,"responseId":"resp_08ae000d0bfd110c016a08175ae58c8194ba4561c888c00533"}}
{"type":"message","id":"da9d41cb","parentId":"9e4642a4","timestamp":"2026-05-16T07:06:04.322Z","message":{"role":"toolResult","toolCallId":"call_QJMvzvSV9PPNiKwfWD84mVRH|fc_08ae000d0bfd110c016a08175bd118819494f9c6b21ea7cbc1","toolName":"todo","content":[{"type":"text","text":"Updated #2 (pending → in_progress)"}],"details":{"action":"update","params":{"action":"update","id":2,"status":"in_progress"},"tasks":[{"id":1,"subject":"Search user-provided PDFs/docs for MML app QR/webview flow mention","status":"completed","description":"Find only in passed docs/PDFs whether MML machine app mentions external QR in webview or describes that flow.","activeForm":"searching passed docs"},{"id":2,"subject":"Find Mercado Pago API docs relevant to TCN external QR payment integration","status":"in_progress","description":"Identify the Mercado Pago API/docs to send TCN so they can estimate delivery time vs hardware fallback.","activeForm":"finding Mercado Pago APIs"}],"nextId":3},"isError":false,"timestamp":1778915164322}}
{"type":"message","id":"f6d9f993","parentId":"da9d41cb","timestamp":"2026-05-16T07:06:11.831Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"call_2wCYLCaa264yRvJBdJhQrdk5|fc_08ae000d0bfd110c016a081763ac008194a3b966c0f8a75f0b","name":"bash","arguments":{"command":"python - <<'PY'\nimport requests,sys\nurls=[\n 'https://www.mercadopago.com/developers/en/docs',\n 'https://www.mercadopago.com/developers/es/docs',\n 'https://www.mercadopago.com/developers/en/docs/checkout-api/overview',\n 'https://www.mercadopago.com/developers/en/docs/qr-code/overview',\n 'https://www.mercadopago.com/developers/en/docs/checkout-pro/overview',\n 'https://www.mercadopago.com/developers/en/reference'\n]\nfor u in urls:\n    try:\n        r=requests.get(u,timeout=15,headers={'User-Agent':'Mozilla/5.0'})\n        print('URL',u,'STATUS',r.status_code,'LEN',len(r.text))\n        print(r.text[:300].replace('\\n',' ')[:300])\n        print('---')\n    except Exception as e:\n        print('ERR',u,e)\nPY","timeout":25}},{"type":"toolCall","id":"call_OsCEsAKDFJru8A4yBqFSS6Tp|fc_08ae000d0bfd110c016a081763ac18819481410366c4838879","name":"bash","arguments":{"command":"rg -n \"Mercado Pago|mercadopago|checkout api|qr|webhook|preference|payment\" /home/sebas/work/projects/ballbox/docs /mnt/rpi/tcn-machine-onboarding -g '!*.pdf'","timeout":20}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":26543,"output":341,"cacheRead":0,"cacheWrite":0,"totalTokens":26884,"cost":{"input":0.0663575,"output":0.005115,"cacheRead":0,"cacheWrite":0,"total":0.0714725}},"stopReason":"toolUse","timestamp":1778915164323,"responseId":"resp_08ae000d0bfd110c016a08175c7ba08194806ff33d4bba13df"}}
{"type":"message","id":"38ed4e85","parentId":"f6d9f993","timestamp":"2026-05-16T07:06:15.353Z","message":{"role":"toolResult","toolCallId":"call_2wCYLCaa264yRvJBdJhQrdk5|fc_08ae000d0bfd110c016a081763ac008194a3b966c0f8a75f0b","toolName":"bash","content":[{"type":"text","text":"URL https://www.mercadopago.com/developers/en/docs STATUS 200 LEN 162645\n<!DOCTYPE html><html lang=\"en\" data-assets-prefix=\"https://http2.mlstatic.com/frontend-assets/dx-devsite/\"><head><meta charSet=\"utf-8\"/><link rel=\"preconnect\" href=\"https://http2.mlstatic.com\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=5.0\"/><link rel=\"prelo\n---\nURL https://www.mercadopago.com/developers/es/docs STATUS 200 LEN 162879\n<!DOCTYPE html><html lang=\"es-AR\" data-assets-prefix=\"https://http2.mlstatic.com/frontend-assets/dx-devsite/\"><head><meta charSet=\"utf-8\"/><link rel=\"preconnect\" href=\"https://http2.mlstatic.com\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=5.0\"/><link rel=\"pr\n---\nURL https://www.mercadopago.com/developers/en/docs/checkout-api/overview STATUS 200 LEN 949715\n<!DOCTYPE html><html lang=\"en\" data-assets-prefix=\"https://http2.mlstatic.com/frontend-assets/dx-devsite/\"><head><meta charSet=\"utf-8\"/><link rel=\"preconnect\" href=\"https://http2.mlstatic.com\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=5.0\"/><link rel=\"prelo\n---\nURL https://www.mercadopago.com/developers/en/docs/qr-code/overview STATUS 200 LEN 210379\n<!DOCTYPE html><html lang=\"en\" data-assets-prefix=\"https://http2.mlstatic.com/frontend-assets/dx-devsite/\"><head><meta charSet=\"utf-8\"/><link rel=\"preconnect\" href=\"https://http2.mlstatic.com\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=5.0\"/><link rel=\"prelo\n---\nURL https://www.mercadopago.com/developers/en/docs/checkout-pro/overview STATUS 200 LEN 0\n\n---\nURL https://www.mercadopago.com/developers/en/reference STATUS 200 LEN 0\n\n---\n"}],"isError":false,"timestamp":1778915175353}}
{"type":"message","id":"3714b591","parentId":"38ed4e85","timestamp":"2026-05-16T07:06:15.354Z","message":{"role":"toolResult","toolCallId":"call_OsCEsAKDFJru8A4yBqFSS6Tp|fc_08ae000d0bfd110c016a081763ac18819481410366c4838879","toolName":"bash","content":[{"type":"text","text":"/mnt/rpi/tcn-machine-onboarding/handoff-for-agent.md:185:- If third-party payment exists, how does the machine know when to vend?\n/mnt/rpi/tcn-machine-onboarding/handoff-for-agent.md:202:  - `rg -n -i \"payment|slot|commodity|remote|advertis|machine management|delivery|refund|inventory|price\" /mnt/rpi/tcn-machine-onboarding/docs/*.txt`\n/home/sebas/work/projects/ballbox/docs/domain-model-target.md:4:- Define the final Ballbox ownership model across `network`, `payments`, `tvs`, `sports`, and `players`.\n/home/sebas/work/projects/ballbox/docs/domain-model-target.md:39:  - optional future extraction if approvals/webhooks need their own lifecycle\n/home/sebas/work/projects/ballbox/docs/implemented-host-app.md:13:  - `/admin/payments`\n/home/sebas/work/projects/ballbox/docs/implemented-host-app.md:22:- Ballbox owns native MercadoPago QR order creation at `/api/integrations/payments/orders` and native webhook intake at `/notification/mercadopago`.\n/home/sebas/work/projects/ballbox/docs/implemented-host-app.md:23:- Native payment persistence validates canonical `payment-vm_{vendingMachineId}-txn_{machineTxnId}` references before writing local approved sessions.\n/home/sebas/work/projects/ballbox/docs/implemented-host-app.md:24:- Ballbox exposes admin payments operations under `/api/admin/payments/*`.\n/home/sebas/work/projects/ballbox/docs/implemented-host-app.md:26:- Route JSON/envelope helper boundaries now live in shared `lib/http/*-route-helpers.ts` modules (network, payments, players, sports) instead of route-local helper files under `app/api`.\n/home/sebas/work/projects/ballbox/docs/implemented-host-app.md:50:- Browser e2e currently covers TVs offline runtime, active admin navigation, mobile smoke for `/admin/network` and `/admin/tvs`, network CRUD, payments CRUD/reconciliation smoke, players CRUD, and sports CRUD.\n/home/sebas/work/projects/ballbox/docs/coaches-opportunity-brief.md:9:- Ballbox today already has host app, admin, network, TVs, payments, players, and a sports foundation.\n/home/sebas/work/projects/ballbox/docs/coaches-opportunity-brief.md:56:  - focuses on one recurring operational loop instead of trying to solve scheduling, CRM, payments, and growth all at once\n/home/sebas/work/projects/ballbox/docs/coach-availability-rfc.md:45:- Booking writes or payment flow.\n/home/sebas/work/projects/ballbox/docs/coach-availability-rfc.md:196:- Current UI opens on a dashboard with per-club metrics plus a strip of days with booked classes, then shows affiliation, assigned sede when present, editable weekly availability inside allowed venue/club hours, reusable sales packages, and a Mercado Pago placeholder field inside `Mi Perfil`. A third `Alumnos` section now handles the student roster, contacts, and manually occupied slots.\n/home/sebas/work/projects/ballbox/docs/coach-availability-rfc.md:206:- Coaches can also save a Mercado Pago alias/email placeholder for future payout wiring.\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:5:- Builds on `docs/payments-machine-rollout-rfc.md`.\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:8:Implement one machine-payment flow in Ballbox that:\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:10:- creates Mercado Pago QR orders\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:11:- persists approved payments through the Ballbox webhook\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:12:- supports two payment-owner modes without forking the stack:\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:24:- order create route: `app/api/integrations/payments/orders/route.ts`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:25:- webhook intake: `app/notification/mercadopago/route.ts`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:26:- provider helper: `lib/payments-mercadopago.ts`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:27:- payment persistence + correlation: `lib/payments.ts`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:28:- payment contracts: `lib/contracts/payments.ts`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:32:- webhook fetch path currently assumes one Mercado Pago config\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:39:- which payment-owner mode applies to this machine/request/order\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:40:- which Mercado Pago config should be used\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:43:- `lib/payments-mercadopago-config.ts`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:48:- return a normalized config object used by both order-create and webhook-fetch flows\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:58:  webhookSecret: string | null;\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:64:## 2. Resolve payment owner per machine\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:68:- add machine-level payment ownership fields to the Ballbox data model\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:72:- `paymentOwnerMode`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:73:- `paymentOwnerKey`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:74:- optional override `paymentExternalPosId`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:77:- `paymentOwnerMode`: `BALLBOX` or `TENANT`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:78:- `paymentOwnerKey`: resolver key for the MP config to use\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:79:- `paymentExternalPosId`: optional machine-specific override when not using the owner default POS\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:89:- `payment-vm_{vendingMachineId}-txn_{machineTxnId}`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:92:But add enough persistence so webhook-triggered fetch can derive config without guessing.\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:94:Recommended minimum persisted fields on payment/session side:\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:98:- `paymentOwnerMode`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:99:- `paymentOwnerKey`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:101:If `PaymentSession` should remain approved-only and lean, add a lightweight pre-approval payment operation record instead.\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:103:## 4. Introduce a pre-approval payment operation record\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:105:- webhook can arrive before a final approved `PaymentSession` exists\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:109:- add a lightweight table for initiated machine payments\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:121:- `paymentOwnerMode`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:122:- `paymentOwnerKey`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:130:- webhook can resolve order id -> `PaymentOperation` -> correct MP config\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:149:- `lib/payments-machine-flow.ts`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:154:- create or reuse payment operation row\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:155:- call Mercado Pago order create\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:173:## 7. TCN route should sit on top of the machine-payment service\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:176:- TCN route should translate between TCN contract and Ballbox machine-payment service only\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:179:- `app/api/integrations/tcn/payments/init/route.ts` or similar\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:184:- call machine-payment service\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:189:That avoids a separate payment stack for admin testing vs machine runtime.\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:192:- `/api/integrations/payments/orders` becomes a Ballbox test/operator entrypoint\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:194:- both converge on one machine-payment service underneath\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:199:Add machine ownership to `VendingMachine` and payment initiation state to a new `PaymentOperation` table.\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:203:- webhook correlation becomes reliable\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:216:1. webhook payload yields `orderId`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:218:3. from that row Ballbox gets `paymentOwnerMode` + `paymentOwnerKey`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:237:- webhook replays should be no-op once the approval is persisted\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:248:Add machine-payment service layer.\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:254:Move `/api/integrations/payments/orders` onto that service.\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:260:Update webhook route to resolve config from `PaymentOperation` first.\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:267:- webhook route is idempotent with repeated notifications\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:276:- `BALLBOX` machine order create -> webhook persist\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:277:- `TENANT` machine order create -> webhook persist\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:278:- webhook config resolution by `providerOrderId`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:282:- exact TCN payment-success / dispense handshake\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:283:- whether tenant webhook/POS setup needs any special MP product variation\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:289:- a shared machine-payment service\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:295:- `docs/payments-machine-rollout-rfc.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:296:- `docs/tcn-payments-integration-plan.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:297:- `docs/tcn-payments-execution-plan.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:298:- `docs/implemented-payments.md`\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:15:  - P0.1 fail-closed payments callback auth\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:19:  - P1.6 first route-helper/envelope standardization pass across `network`, `players`, `sports`, and `payments`\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:22:  - P0.3 remaining admin clients: `payments`, `tvs`\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:33:### 1. Fail closed on payments callback auth\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:36:- Risk: `app/api/integrations/payments/approved/route.ts` can accept writes in a misconfigured environment.\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:39:  - `app/api/integrations/payments/approved/route.ts`\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:42:  - It weakens the whole payments integration if env setup drifts.\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:60:  - Split by domain: `network`, `tvs`, `payments`, `players`, `sports`, `classes`.\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:80:  - `components/payments-admin-client.tsx`\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:100:  - apply the same pattern to `payments-admin-client.tsx`\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:129:  - `components/payments-admin-client.tsx`\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:149:  - Inconsistent candidates: `app/api/admin/tvs/screens/[screenId]/route.ts`, `app/api/admin/tvs/tv-devices/route.ts`, `app/api/admin/payments/sessions/route.ts`\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:158:- Follow-on slices shipped: players, sports, and payments route families now use the same helper pattern for JSON parsing plus strict success/error envelopes, including focused invalid-payload contract coverage.\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:241:  - `app/api/integrations/payments/health/route.ts`\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:265:### 14. Tighten domain lifecycle modeling in sports and payments\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:269:  - `lib/payments.ts`\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:284:1. Fix payments callback auth and add env validation.\n/home/sebas/work/projects/ballbox/docs/coaches-wedges-matrix.md:15:| Collections/admin follow-up | Chasing payments and reminders consumes time | Time savings, maybe cashflow | Low | Medium | Medium | Could be too generic and weakly differentiated |\n/home/sebas/work/projects/ballbox/docs/coaches-wedges-matrix.md:35:- If a wedge requires broad CRM/payments/attendance/product surface from day one, narrow it or drop it.\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:49:  - deep relative helper imports removed from network, players, sports, and payments route handlers\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:69:  - public webhook smoke against the native MercadoPago webhook path\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:70:  - real payment persisted as approved in `/admin/payments`\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:72:- Progress (2026-04-14): payments migration to host app started in one feature branch; health/sessions now expose internal MercadoPago mode, Ballbox ships `/notification/mercadopago` intake with order fetch verification, and native order creation now exists at `/api/integrations/payments/orders`.\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:73:- Progress (2026-04-19): PAY-2 cleanup removed bridge-oriented operational status from host-app health/docs; OPS-1 is now focused on validating the native MercadoPago order-create + webhook-persist path only.\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:74:- Progress (2026-04-23): TCN protocol review shows the `additional hardware devices` note is about machine-side QR scanning, while the machine payment flow (`FunCode=8000`) already returns `CodeUrl` for machine-screen QR display. This means the admin QR page should be treated as a provider test harness, and production integration should move to a TCN adapter layer.\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:75:- Progress (2026-05-05): first production order-create attempt against `https://ballbox.app/api/integrations/payments/orders` failed before buyer payment with Mercado Pago `400 unsupported_properties` because `notification_url` was rejected (`additionalProperties '$.notification_url' not allowed`). Ballbox should stop sending inline `notification_url` for this account/API surface and rely on the existing account-level Mercado Pago webhook configuration before rerunning the real-payment check.\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:76:- Closure (2026-05-13): a real approved payment now persists locally and is visible in `/admin/payments`. Mercado Pago webhook noise from `topic_merchant_order_wh` remains intentionally ignored. Closure required two Ballbox compatibility fixes for live provider payloads: product id fallback from `items[0].external_code` and robust parsing of `total_amount` when Mercado Pago returns a string.\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:144:### PAY-2 Full payments migration into Ballbox host app\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:149:  - native MercadoPago webhook + QR order lifecycle is now owned in Ballbox routes/lib\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:153:  - `/notification/mercadopago`\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:154:  - `/api/integrations/payments/orders`\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:155:  - `app/api/integrations/payments/health/route.ts`\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:156:  - `app/api/integrations/payments/sessions/route.ts`\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:157:  - `docs/implemented-payments.md`\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:158:- Expected payoff: one-repo payments ownership, simpler operations, faster debugging\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:165:  - define the Ballbox machine-facing adapter for TCN payment init (`FunCode=8000`) over the existing MercadoPago order-create route\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:166:  - map TCN `MachineID`, `TradeNo`, `SlotNo`, `Price`, `NotityUrl`, and response `CodeUrl` to Ballbox-native payment fields\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:167:  - define the payment-success handshake back to TCN so approved payments can unlock dispense\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:168:  - support one shared machine payment flow with two payment-owner modes:\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:171:  - keep `/admin/payments` positioned as an operator test/debug harness rather than the production vending UX\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:174:  - TCN protocol evidence is documented in `docs/tcn-payments-integration-plan.md`\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:175:  - master rollout direction is documented in `docs/payments-machine-rollout-rfc.md`\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:176:  - technical implementation shape is documented in `docs/payments-machine-implementation-rfc.md`\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:183:### PAY-4 Mercado Pago native split for club revenue share\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:189:  - document Mercado Pago native split as the only future automation path under consideration for club payouts\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:193:  - Ballbox currently runs QR vending payments through the native Mercado Pago order/webhook flow, so split automation is a separate future decision\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:195:  - keep this behind real-world payments validation first (`OPS-1`) and machine-facing TCN adapter definition (`PAY-3`)\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:196:- Expected payoff: a clear path from manual settlements to a future Mercado Pago split if the machine flow and business volume justify it\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md:1:# TCN payments open questions\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md:10:   - Mercado Pago deep link\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md:12:2. After payment approval, how does the machine learn that the vend can proceed?\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md:18:4. What is the exact payload shape expected for the payment-success notify/result message?\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md:25:7. Are there any timeout / expiry expectations for the QR payment window from the machine side?\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md:26:8. What should Ballbox return to the machine when payment creation fails or times out?\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md:28:10. Are there additional payment-related endpoints beyond `8000` required for a production dispense flow?\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md:30:## Questions for Mercado Pago / internal validation\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md:32:2. Does current Ballbox order creation produce the same QR/deeplink payload shape expected by a buyer using Mercado Pago app?\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md:33:3. Is the current webhook exposure stable enough for real public notifications on the production-like Ballbox URL?\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md:37:- A resolved field-mapping note added back into `docs/tcn-payments-integration-plan.md`\n/home/sebas/work/projects/ballbox/docs/coaches-interview-script.md:44:- User speaks in vague preferences, not real recurring events.\n/home/sebas/work/projects/ballbox/docs/coaches-solution-thesis.md:36:- Not assuming the first win is payments\n/home/sebas/work/projects/ballbox/docs/implemented-sports.md:14:- `/coaches/settings` now opens on a coach workspace split into `Calendar`, `Performance`, `Alumnos`, and `Horarios y Clases`: calendar shows the current week in an hour-by-hour class matrix, groups simultaneous reservations into one individual or group class, surfaces each student's basic profile data (name, sexo, edad, categoria), marks which reservations are paid vs pending, and starts with a large `Agregar clase` CTA that takes the coach into `Alumnos`; `Performance` shows club-level results plus weekly earnings and student consistency rows, while `Horarios y Clases` auto-saves club selection, availability, packages, and Mercado Pago setup without manual save buttons and no longer shows the club's court-fee pricing to the coach. Pending autosave writes are also flushed if the coach leaves the page before the debounce finishes.\n/home/sebas/work/projects/ballbox/docs/implemented-sports.md:32:- `Coach` now also stores a Mercado Pago placeholder handle and reusable `CoachSalesPackage` rows for price, duration, class type, and max-student setup.\n/home/sebas/work/projects/ballbox/docs/implemented-sports.md:90:- The selected slot is still a local lead preference, not a confirmed reservation; ATC availability can move between render and submit, and Ballbox rejects stale selections when revalidation no longer finds the slot.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:5:- Use this as the master document for payment ownership modes, TCN integration, onboarding, and rollout sequencing.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:9:- Support two payment-owner modes in that flow:\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:10:  - `BALLBOX`: Ballbox owns the Mercado Pago account that collects funds.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:11:  - `TENANT`: the client/tenant owns the Mercado Pago account that collects funds.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:16:- Do not block rollout on Mercado Pago native split or marketplace approval.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:20:- The immediate risk is not payout automation. The immediate risk is getting the machine payment path working end to end.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:21:- TCN machine integration and Mercado Pago webhook persistence are still the highest-risk technical pieces.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:25:- Running all machines through Ballbox keeps one integration surface, one webhook surface, and one observability path.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:29:- TCN machine payment adapter\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:30:- Mercado Pago provider integration through Ballbox\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:31:- machine-level payment-owner mode selection\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:34:- webhook handling through Ballbox\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:39:- Mercado Pago marketplace/split as a requirement for launch\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:51:2. Ballbox creates the Mercado Pago order with Ballbox credentials\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:53:4. Mercado Pago notifies Ballbox webhook\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:54:5. Ballbox fetches order details, verifies approval, persists payment\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:67:2. Ballbox creates the Mercado Pago order using tenant credentials/config\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:69:4. Mercado Pago notifies the same Ballbox webhook endpoint\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:70:5. Ballbox fetches order details with the tenant-specific credentials, verifies approval, persists payment\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:71:6. tenant owns funds; Ballbox is not doing revenue-share settlement for those payments\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:81:- unified webhook and persistence behavior\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:82:- centralized debugging for payment-approved-but-no-vend cases\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:87:- Ballbox owns the payment orchestration path\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:88:- tenant owns the payment account\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:97:- `paymentOwnerMode = BALLBOX | TENANT`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:98:- payment config reference for Mercado Pago\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:103:Ballbox needs to choose the right Mercado Pago credentials/config before creating the order and before fetching webhook-triggered order details.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:106:Keep one Ballbox webhook endpoint:\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:107:- `/notification/mercadopago`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:109:But Ballbox must be able to determine which payment config applies when an event arrives.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:111:- provider order / external reference -> vending machine -> payment owner mode -> MP config\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:116:- Ballbox should implement the TCN payment adapter over the native Mercado Pago provider layer.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:120:- `docs/tcn-payments-integration-plan.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:121:- `docs/tcn-payments-open-questions.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:122:- `docs/tcn-payments-execution-plan.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:128:- prove Ballbox native Mercado Pago order + webhook persistence works publicly\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:131:- one real approved payment persisted locally\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:135:- `docs/mercadopago-webhook-replay-notes-2026-04-23.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:146:- `docs/tcn-payments-open-questions.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:148:### Phase 2. Single technical path with two payment-owner modes\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:153:- machine-level payment owner resolution\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:155:- webhook handling that can resolve the correct config\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:165:- real payment test per machine/account context\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:180:- Mercado Pago split / marketplace if it fits the later buyer flow\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:190:5. confirm public webhook reachability from Ballbox\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:191:6. run one real payment test\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:204:- confirm they want to collect in their own Mercado Pago account\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:206:- confirm they configure Ballbox webhook endpoint in their MP account if required by the final provider setup\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:208:- run one real payment test with their account\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:209:- do not promise heavy ongoing support for their Mercado Pago operations\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:215:- Clubs mainly care about net outcome and avoiding extra invoicing burden, not about ownership of the payment rails themselves.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:220:- tenant-specific webhook/config resolution may require extra correlation fields\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:221:- real webhook validation is not fully closed yet\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:224:- guided Adidas setup may still stall on account/POS/webhook details\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:231:- do not overbuild settlement tooling before real machine payments work\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:234:- one Ballbox-collected machine completes payment flow end to end\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:235:- one tenant-collected machine completes payment flow end to end\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:236:- Ballbox persists approved payments for both owner modes\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:242:- `docs/implemented-payments.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:243:- `docs/tcn-payments-integration-plan.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:244:- `docs/tcn-payments-open-questions.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:245:- `docs/tcn-payments-execution-plan.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:246:- `docs/payments-club-settlement-strategy.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:247:- `docs/mercadopago-webhook-replay-notes-2026-04-23.md`\n/home/sebas/work/projects/ballbox/docs/coaches-form-current.md:15:- Detect whether court reservation, payments, club coordination, or growth/admin issues appear often enough to justify follow-up interviews.\n/home/sebas/work/projects/ballbox/docs/coaches-form-current.md:119:- Whether scheduling, attendance reminders, payments, court reservation, club friction, or acquisition appear frequently in self-report.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:1:# TCN payments execution plan\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:4:Ordered execution plan for getting from current Ballbox native Mercado Pago support to real TCN machine payments.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:7:- Goal: prove Ballbox native Mercado Pago flow works end to end without TCN hardware.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:9:  - `docs/implemented-payments.md`\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:10:  - `docs/mercadopago-webhook-replay-notes-2026-04-23.md`\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:12:  - validate public webhook reachability for `/notification/mercadopago`\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:13:  - run one real approved payment\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:14:  - confirm local `PaymentSession` persistence in `/admin/payments`\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:17:  - one real approved payment persists locally through webhook flow\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:22:  - `docs/tcn-payments-integration-plan.md`\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:23:  - `docs/tcn-payments-open-questions.md`\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:24:  - `test-results/tcn-payment-protocol/findings-2026-04-23.md`\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:30:  - `CodeUrl` meaning and payment-success handshake are confirmed\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:35:  - `docs/tcn-payments-integration-plan.md`\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:46:- Goal: add the TCN-facing Ballbox endpoints over existing Mercado Pago primitives.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:51:  - map TCN requests to Ballbox/Mercado Pago order creation\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:52:  - map approved-payment state back into TCN success flow\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:61:  - test payment approval -> vend path\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:64:  - one real vend succeeds through Ballbox-backed payment flow\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:71:  - `docs/payments-club-settlement-strategy.md`\n/home/sebas/work/projects/ballbox/docs/atc-integration-discovery.md:132:- no visible webhook/event model for booking changes\n/home/sebas/work/projects/ballbox/docs/streetcast-parity.md:6:- Local media cache: covered by screen-scoped browser cache with cached blob playback preference.\n/home/sebas/work/projects/ballbox/docs/index.md:33:- `docs/implemented-payments.md`\n/home/sebas/work/projects/ballbox/docs/index.md:52:- `docs/payments-machine-rollout-rfc.md`\n/home/sebas/work/projects/ballbox/docs/index.md:53:- `docs/payments-machine-implementation-rfc.md`\n/home/sebas/work/projects/ballbox/docs/index.md:54:- `docs/tcn-payments-integration-plan.md`\n/home/sebas/work/projects/ballbox/docs/index.md:55:- `docs/tcn-payments-open-questions.md`\n/home/sebas/work/projects/ballbox/docs/index.md:56:- `docs/tcn-payments-execution-plan.md`\n/home/sebas/work/projects/ballbox/docs/index.md:57:- `docs/payments-club-settlement-strategy.md`\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:1:# Mercado Pago webhook replay notes\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:6:- Replayed real Ballbox Mercado Pago webhook payloads against `https://ballbox.app/notification/mercadopago`.\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:13:- Ballbox ignored both because Mercado Pago order fetch returned the orders as expired:\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:17:- The webhook endpoint is live.\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:20:- These specific replay ids are no longer useful for persistence validation because the orders expired in Mercado Pago.\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:24:  - a fresh approved `order.processed` id still valid in Mercado Pago, or\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:25:  - a real buyer-side payment to create a new approved order.\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:28:- Keep the webhook path as-is.\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:29:- When resuming, use a fresh approved order id from a recent live payment or the buyer app flow.\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:32:- Attempted a new production QR order create against `https://ballbox.app/api/integrations/payments/orders` before the real buyer-payment step.\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:33:- Result: Ballbox returned provider failure details from Mercado Pago:\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:39:  - `OPS-1` is blocked before payment approval, not at webhook persistence\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:42:  - rely on the Mercado Pago account-level webhook configuration already associated with the production setup\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:43:  - then rerun `OPS-1` with a fresh real payment\n/home/sebas/work/projects/ballbox/docs/coaches-icp-segmentation.md:39:- Strong evidence that payment/collections pain dominates over scheduling pain.\n/home/sebas/work/projects/ballbox/docs/payments-club-settlement-strategy.md:5:- Do not force Mercado Pago split payments into the current vending QR flow.\n/home/sebas/work/projects/ballbox/docs/payments-club-settlement-strategy.md:6:- Treat Mercado Pago native split as a future option, not the default operating model.\n/home/sebas/work/projects/ballbox/docs/payments-club-settlement-strategy.md:9:- Current Ballbox payments flow is QR/order-based at `/v1/orders`.\n/home/sebas/work/projects/ballbox/docs/payments-club-settlement-strategy.md:10:- Mercado Pago split docs point to marketplace / checkout flows, OAuth, and seller onboarding.\n/home/sebas/work/projects/ballbox/docs/payments-club-settlement-strategy.md:16:- The first rollout uses two payment-owner modes documented in `docs/payments-machine-rollout-rfc.md`:\n/home/sebas/work/projects/ballbox/docs/payments-club-settlement-strategy.md:18:  - `TENANT`: the tenant/client collects directly in their own Mercado Pago account; no Ballbox settlement is needed for those payments.\n/home/sebas/work/projects/ballbox/docs/payments-club-settlement-strategy.md:54:### Mercado Pago native split\n/home/sebas/work/projects/ballbox/docs/payments-club-settlement-strategy.md:55:Best if Ballbox later changes the buyer flow to a supported Mercado Pago checkout path.\n/home/sebas/work/projects/ballbox/docs/payments-club-settlement-strategy.md:69:- only if we replatform the buyer payment flow to something MP split supports\n/home/sebas/work/projects/ballbox/docs/payments-club-settlement-strategy.md:83:- Revisit Mercado Pago native split only after machine payments are stable and the club count justifies it.\n/home/sebas/work/projects/ballbox/docs/atc-access-request-checklist.md:17:- Any webhook/event support for booking changes\n/home/sebas/work/projects/ballbox/docs/implemented-network.md:28:- `Screen` and `TvDevice` also live in the same shared core and are consumed today by TVs and payments flows.\n/home/sebas/work/projects/ballbox/docs/implemented-network.md:33:- Cross-links from TVs/payments back into `/admin/network` are not in place yet.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:4:- Ballbox owns the admin surface, native MercadoPago webhook intake, and native QR order creation.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:5:- `/notification/mercadopago` is the first-party MercadoPago QR webhook route that fetches the upstream order, ignores unsupported merchant-order topics, and persists approved orders.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:6:- `/api/integrations/payments/orders` is the first-party QR order creation route.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:7:- `/api/integrations/payments/sessions` lists Ballbox-local approved payment records plus native MercadoPago config status.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:8:- `/admin/payments` now manages local approved payment sessions directly for reconciliation/correction and also generates live MercadoPago QR orders for arbitrary amounts or product-priced orders.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:9:- The admin QR generator should now be treated as an operator test/debug harness for Mercado Pago and webhook validation, not as the final buyer-facing vending-machine payment UX.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:10:- The QR generator accepts money values in major units with decimals (for example `15.00` or `1000.00`) and converts them to Mercado Pago minor units before submission.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:13:- `/api/admin/payments/operations`\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:14:- `/api/admin/payments/sessions`\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:15:- `/api/admin/payments/sessions/[sessionId]`\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:16:- `/api/integrations/payments/health`\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:17:- `/api/integrations/payments/sessions`\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:18:- `/api/integrations/payments/orders`\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:19:- `/notification/mercadopago`\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:22:- Ballbox persists approved payment records as `PaymentSession` rows in Ballbox Postgres.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:23:- Native MercadoPago webhook intake fetches the upstream order, maps approved orders into the canonical Ballbox payment shape, and persists them locally.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:28:- Playwright now covers local `/admin/payments` create, edit, and delete flows with deterministic cleanup of E2E `PaymentSession` rows.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:31:- Ballbox native MercadoPago webhook path is `/notification/mercadopago`.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:32:- Ballbox native QR order creation path is `/api/integrations/payments/orders`.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:33:- For the current Ballbox Mercado Pago account/API surface, QR order create relies on the account-level webhook configuration instead of sending inline `notification_url` in the order payload, because Mercado Pago rejects that field on `POST /v1/orders` for this setup.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:35:- The order route rejects values below Mercado Pago's minimum charge (`15.00 ARS`) before calling the provider.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:36:- QR webhook persistence now depends on the upstream order fetch plus canonical-reference mapping; merchant-order topic events are ignored.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:37:- Legacy approved-callback path `/api/integrations/payments/approved` is removed as an operational integration and now returns `410 PAYMENTS_APPROVED_CALLBACK_REMOVED`.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:38:- Native payment correlation requires canonical `externalReference` values shaped as `payment-vm_{vendingMachineId}-txn_{machineTxnId}`.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:42:- Host app now owns the native MercadoPago order creation + webhook persistence path inside Ballbox.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:43:- Real-world validation is now closed: one real public webhook and one real approved payment were persisted and verified in `/admin/payments` on 2026-05-13.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:46:- First rollout planning now assumes one shared technical flow with two payment-owner modes: `BALLBOX` for club machines Ballbox collects on, and `TENANT` for client-owned collection setups such as Adidas rental machines; see `docs/payments-machine-rollout-rfc.md`.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:48:- The webhook route is fetch-first: the webhook is just the trigger, and Ballbox verifies the order state by fetching Mercado Pago before persisting.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:49:- TCN protocol review indicates the `additional hardware devices` warning applies to machine-side QR scanning, while the payment flow (`FunCode=8000`) returns `CodeUrl` for machine-screen QR display; see `docs/tcn-payments-integration-plan.md` and `test-results/tcn-payment-protocol/findings-2026-04-23.md`.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:50:- Recent replay validation against two older live `ORD...` ids returned `MERCADOPAGO_ORDER_NOT_APPROVED_expired`; see `docs/mercadopago-webhook-replay-notes-2026-04-23.md` when resuming webhook persistence checks.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:53:- End-to-end payment validation succeeded against Ballbox native MercadoPago webhook configuration.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:58:  - public HTTPS webhook endpoint `/notification/mercadopago`\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:60:  - a real payment was approved upstream\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:61:  - MercadoPago reached Ballbox webhook publicly\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:62:  - Ballbox fetched order details and recorded the approved payment locally\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:64:  - the session was visible in `/admin/payments`\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:1:# TCN payments integration plan\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:4:- Treat the current `/admin/payments` QR generator as an operator test harness, not the final production payment UX for vending machines.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:10:- The payment section (`2.1.5 Integral exchange`, `FunCode=8000`) already defines a dynamic payment flow:\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:18:2. TCN machine requests Ballbox payment session using the TCN payment contract.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:19:3. Ballbox creates a Mercado Pago QR order.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:20:4. Ballbox maps the Mercado Pago output into the TCN response shape and returns `CodeUrl`.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:22:6. Buyer scans with Mercado Pago app on phone.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:23:7. Payment provider notifies Ballbox webhook.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:24:8. Ballbox validates/persists approved payment.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:29:- Define a Ballbox route for TCN `8000` payment-init requests.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:37:- Confirm whether TCN expects raw payment URL, QR payload string, or a specific provider deep link in `CodeUrl`.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:40:- Map how Ballbox should signal payment success back into the TCN flow.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:42:- Confirm how TCN links approved payment to dispense using `TradeNo` and/or `SlotNo`.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:49:- `/admin/payments` remains useful for:\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:50:  - Mercado Pago config checks\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:52:  - webhook validation\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:54:- Do not frame it as the final vending-machine payment UX.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:58:- Exact success callback / notify shape between Ballbox and TCN after payment approval.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:59:- Whether machine-side polling (`4000`) participates in payment completion or only app-driven vend/load flows.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:60:- Whether TCN needs additional payment-status endpoints beyond `8000` for a full dispense flow.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:64:- Keep Mercado Pago-native Ballbox routes as the provider layer underneath that adapter.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:67:- `test-results/tcn-payment-protocol/Protocol 2.5V English version.pdf`\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:68:- `test-results/tcn-payment-protocol/findings-2026-04-23.md`\n\n\n[Showing lines 144-470 of 470 (50.0KB limit). Full output: /tmp/pi-bash-940c7268f6667360.log]"}],"details":{"truncation":{"content":"/mnt/rpi/tcn-machine-onboarding/handoff-for-agent.md:185:- If third-party payment exists, how does the machine know when to vend?\n/mnt/rpi/tcn-machine-onboarding/handoff-for-agent.md:202:  - `rg -n -i \"payment|slot|commodity|remote|advertis|machine management|delivery|refund|inventory|price\" /mnt/rpi/tcn-machine-onboarding/docs/*.txt`\n/home/sebas/work/projects/ballbox/docs/domain-model-target.md:4:- Define the final Ballbox ownership model across `network`, `payments`, `tvs`, `sports`, and `players`.\n/home/sebas/work/projects/ballbox/docs/domain-model-target.md:39:  - optional future extraction if approvals/webhooks need their own lifecycle\n/home/sebas/work/projects/ballbox/docs/implemented-host-app.md:13:  - `/admin/payments`\n/home/sebas/work/projects/ballbox/docs/implemented-host-app.md:22:- Ballbox owns native MercadoPago QR order creation at `/api/integrations/payments/orders` and native webhook intake at `/notification/mercadopago`.\n/home/sebas/work/projects/ballbox/docs/implemented-host-app.md:23:- Native payment persistence validates canonical `payment-vm_{vendingMachineId}-txn_{machineTxnId}` references before writing local approved sessions.\n/home/sebas/work/projects/ballbox/docs/implemented-host-app.md:24:- Ballbox exposes admin payments operations under `/api/admin/payments/*`.\n/home/sebas/work/projects/ballbox/docs/implemented-host-app.md:26:- Route JSON/envelope helper boundaries now live in shared `lib/http/*-route-helpers.ts` modules (network, payments, players, sports) instead of route-local helper files under `app/api`.\n/home/sebas/work/projects/ballbox/docs/implemented-host-app.md:50:- Browser e2e currently covers TVs offline runtime, active admin navigation, mobile smoke for `/admin/network` and `/admin/tvs`, network CRUD, payments CRUD/reconciliation smoke, players CRUD, and sports CRUD.\n/home/sebas/work/projects/ballbox/docs/coaches-opportunity-brief.md:9:- Ballbox today already has host app, admin, network, TVs, payments, players, and a sports foundation.\n/home/sebas/work/projects/ballbox/docs/coaches-opportunity-brief.md:56:  - focuses on one recurring operational loop instead of trying to solve scheduling, CRM, payments, and growth all at once\n/home/sebas/work/projects/ballbox/docs/coach-availability-rfc.md:45:- Booking writes or payment flow.\n/home/sebas/work/projects/ballbox/docs/coach-availability-rfc.md:196:- Current UI opens on a dashboard with per-club metrics plus a strip of days with booked classes, then shows affiliation, assigned sede when present, editable weekly availability inside allowed venue/club hours, reusable sales packages, and a Mercado Pago placeholder field inside `Mi Perfil`. A third `Alumnos` section now handles the student roster, contacts, and manually occupied slots.\n/home/sebas/work/projects/ballbox/docs/coach-availability-rfc.md:206:- Coaches can also save a Mercado Pago alias/email placeholder for future payout wiring.\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:5:- Builds on `docs/payments-machine-rollout-rfc.md`.\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:8:Implement one machine-payment flow in Ballbox that:\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:10:- creates Mercado Pago QR orders\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:11:- persists approved payments through the Ballbox webhook\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:12:- supports two payment-owner modes without forking the stack:\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:24:- order create route: `app/api/integrations/payments/orders/route.ts`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:25:- webhook intake: `app/notification/mercadopago/route.ts`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:26:- provider helper: `lib/payments-mercadopago.ts`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:27:- payment persistence + correlation: `lib/payments.ts`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:28:- payment contracts: `lib/contracts/payments.ts`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:32:- webhook fetch path currently assumes one Mercado Pago config\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:39:- which payment-owner mode applies to this machine/request/order\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:40:- which Mercado Pago config should be used\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:43:- `lib/payments-mercadopago-config.ts`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:48:- return a normalized config object used by both order-create and webhook-fetch flows\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:58:  webhookSecret: string | null;\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:64:## 2. Resolve payment owner per machine\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:68:- add machine-level payment ownership fields to the Ballbox data model\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:72:- `paymentOwnerMode`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:73:- `paymentOwnerKey`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:74:- optional override `paymentExternalPosId`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:77:- `paymentOwnerMode`: `BALLBOX` or `TENANT`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:78:- `paymentOwnerKey`: resolver key for the MP config to use\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:79:- `paymentExternalPosId`: optional machine-specific override when not using the owner default POS\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:89:- `payment-vm_{vendingMachineId}-txn_{machineTxnId}`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:92:But add enough persistence so webhook-triggered fetch can derive config without guessing.\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:94:Recommended minimum persisted fields on payment/session side:\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:98:- `paymentOwnerMode`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:99:- `paymentOwnerKey`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:101:If `PaymentSession` should remain approved-only and lean, add a lightweight pre-approval payment operation record instead.\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:103:## 4. Introduce a pre-approval payment operation record\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:105:- webhook can arrive before a final approved `PaymentSession` exists\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:109:- add a lightweight table for initiated machine payments\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:121:- `paymentOwnerMode`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:122:- `paymentOwnerKey`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:130:- webhook can resolve order id -> `PaymentOperation` -> correct MP config\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:149:- `lib/payments-machine-flow.ts`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:154:- create or reuse payment operation row\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:155:- call Mercado Pago order create\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:173:## 7. TCN route should sit on top of the machine-payment service\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:176:- TCN route should translate between TCN contract and Ballbox machine-payment service only\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:179:- `app/api/integrations/tcn/payments/init/route.ts` or similar\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:184:- call machine-payment service\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:189:That avoids a separate payment stack for admin testing vs machine runtime.\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:192:- `/api/integrations/payments/orders` becomes a Ballbox test/operator entrypoint\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:194:- both converge on one machine-payment service underneath\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:199:Add machine ownership to `VendingMachine` and payment initiation state to a new `PaymentOperation` table.\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:203:- webhook correlation becomes reliable\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:216:1. webhook payload yields `orderId`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:218:3. from that row Ballbox gets `paymentOwnerMode` + `paymentOwnerKey`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:237:- webhook replays should be no-op once the approval is persisted\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:248:Add machine-payment service layer.\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:254:Move `/api/integrations/payments/orders` onto that service.\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:260:Update webhook route to resolve config from `PaymentOperation` first.\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:267:- webhook route is idempotent with repeated notifications\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:276:- `BALLBOX` machine order create -> webhook persist\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:277:- `TENANT` machine order create -> webhook persist\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:278:- webhook config resolution by `providerOrderId`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:282:- exact TCN payment-success / dispense handshake\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:283:- whether tenant webhook/POS setup needs any special MP product variation\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:289:- a shared machine-payment service\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:295:- `docs/payments-machine-rollout-rfc.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:296:- `docs/tcn-payments-integration-plan.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:297:- `docs/tcn-payments-execution-plan.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-implementation-rfc.md:298:- `docs/implemented-payments.md`\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:15:  - P0.1 fail-closed payments callback auth\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:19:  - P1.6 first route-helper/envelope standardization pass across `network`, `players`, `sports`, and `payments`\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:22:  - P0.3 remaining admin clients: `payments`, `tvs`\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:33:### 1. Fail closed on payments callback auth\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:36:- Risk: `app/api/integrations/payments/approved/route.ts` can accept writes in a misconfigured environment.\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:39:  - `app/api/integrations/payments/approved/route.ts`\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:42:  - It weakens the whole payments integration if env setup drifts.\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:60:  - Split by domain: `network`, `tvs`, `payments`, `players`, `sports`, `classes`.\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:80:  - `components/payments-admin-client.tsx`\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:100:  - apply the same pattern to `payments-admin-client.tsx`\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:129:  - `components/payments-admin-client.tsx`\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:149:  - Inconsistent candidates: `app/api/admin/tvs/screens/[screenId]/route.ts`, `app/api/admin/tvs/tv-devices/route.ts`, `app/api/admin/payments/sessions/route.ts`\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:158:- Follow-on slices shipped: players, sports, and payments route families now use the same helper pattern for JSON parsing plus strict success/error envelopes, including focused invalid-payload contract coverage.\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:241:  - `app/api/integrations/payments/health/route.ts`\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:265:### 14. Tighten domain lifecycle modeling in sports and payments\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:269:  - `lib/payments.ts`\n/home/sebas/work/projects/ballbox/docs/maintainability-priorities-2026-03.md:284:1. Fix payments callback auth and add env validation.\n/home/sebas/work/projects/ballbox/docs/coaches-wedges-matrix.md:15:| Collections/admin follow-up | Chasing payments and reminders consumes time | Time savings, maybe cashflow | Low | Medium | Medium | Could be too generic and weakly differentiated |\n/home/sebas/work/projects/ballbox/docs/coaches-wedges-matrix.md:35:- If a wedge requires broad CRM/payments/attendance/product surface from day one, narrow it or drop it.\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:49:  - deep relative helper imports removed from network, players, sports, and payments route handlers\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:69:  - public webhook smoke against the native MercadoPago webhook path\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:70:  - real payment persisted as approved in `/admin/payments`\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:72:- Progress (2026-04-14): payments migration to host app started in one feature branch; health/sessions now expose internal MercadoPago mode, Ballbox ships `/notification/mercadopago` intake with order fetch verification, and native order creation now exists at `/api/integrations/payments/orders`.\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:73:- Progress (2026-04-19): PAY-2 cleanup removed bridge-oriented operational status from host-app health/docs; OPS-1 is now focused on validating the native MercadoPago order-create + webhook-persist path only.\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:74:- Progress (2026-04-23): TCN protocol review shows the `additional hardware devices` note is about machine-side QR scanning, while the machine payment flow (`FunCode=8000`) already returns `CodeUrl` for machine-screen QR display. This means the admin QR page should be treated as a provider test harness, and production integration should move to a TCN adapter layer.\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:75:- Progress (2026-05-05): first production order-create attempt against `https://ballbox.app/api/integrations/payments/orders` failed before buyer payment with Mercado Pago `400 unsupported_properties` because `notification_url` was rejected (`additionalProperties '$.notification_url' not allowed`). Ballbox should stop sending inline `notification_url` for this account/API surface and rely on the existing account-level Mercado Pago webhook configuration before rerunning the real-payment check.\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:76:- Closure (2026-05-13): a real approved payment now persists locally and is visible in `/admin/payments`. Mercado Pago webhook noise from `topic_merchant_order_wh` remains intentionally ignored. Closure required two Ballbox compatibility fixes for live provider payloads: product id fallback from `items[0].external_code` and robust parsing of `total_amount` when Mercado Pago returns a string.\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:144:### PAY-2 Full payments migration into Ballbox host app\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:149:  - native MercadoPago webhook + QR order lifecycle is now owned in Ballbox routes/lib\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:153:  - `/notification/mercadopago`\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:154:  - `/api/integrations/payments/orders`\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:155:  - `app/api/integrations/payments/health/route.ts`\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:156:  - `app/api/integrations/payments/sessions/route.ts`\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:157:  - `docs/implemented-payments.md`\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:158:- Expected payoff: one-repo payments ownership, simpler operations, faster debugging\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:165:  - define the Ballbox machine-facing adapter for TCN payment init (`FunCode=8000`) over the existing MercadoPago order-create route\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:166:  - map TCN `MachineID`, `TradeNo`, `SlotNo`, `Price`, `NotityUrl`, and response `CodeUrl` to Ballbox-native payment fields\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:167:  - define the payment-success handshake back to TCN so approved payments can unlock dispense\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:168:  - support one shared machine payment flow with two payment-owner modes:\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:171:  - keep `/admin/payments` positioned as an operator test/debug harness rather than the production vending UX\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:174:  - TCN protocol evidence is documented in `docs/tcn-payments-integration-plan.md`\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:175:  - master rollout direction is documented in `docs/payments-machine-rollout-rfc.md`\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:176:  - technical implementation shape is documented in `docs/payments-machine-implementation-rfc.md`\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:183:### PAY-4 Mercado Pago native split for club revenue share\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:189:  - document Mercado Pago native split as the only future automation path under consideration for club payouts\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:193:  - Ballbox currently runs QR vending payments through the native Mercado Pago order/webhook flow, so split automation is a separate future decision\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:195:  - keep this behind real-world payments validation first (`OPS-1`) and machine-facing TCN adapter definition (`PAY-3`)\n/home/sebas/work/projects/ballbox/docs/next-steps-queue.md:196:- Expected payoff: a clear path from manual settlements to a future Mercado Pago split if the machine flow and business volume justify it\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md:1:# TCN payments open questions\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md:10:   - Mercado Pago deep link\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md:12:2. After payment approval, how does the machine learn that the vend can proceed?\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md:18:4. What is the exact payload shape expected for the payment-success notify/result message?\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md:25:7. Are there any timeout / expiry expectations for the QR payment window from the machine side?\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md:26:8. What should Ballbox return to the machine when payment creation fails or times out?\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md:28:10. Are there additional payment-related endpoints beyond `8000` required for a production dispense flow?\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md:30:## Questions for Mercado Pago / internal validation\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md:32:2. Does current Ballbox order creation produce the same QR/deeplink payload shape expected by a buyer using Mercado Pago app?\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md:33:3. Is the current webhook exposure stable enough for real public notifications on the production-like Ballbox URL?\n/home/sebas/work/projects/ballbox/docs/tcn-payments-open-questions.md:37:- A resolved field-mapping note added back into `docs/tcn-payments-integration-plan.md`\n/home/sebas/work/projects/ballbox/docs/coaches-interview-script.md:44:- User speaks in vague preferences, not real recurring events.\n/home/sebas/work/projects/ballbox/docs/coaches-solution-thesis.md:36:- Not assuming the first win is payments\n/home/sebas/work/projects/ballbox/docs/implemented-sports.md:14:- `/coaches/settings` now opens on a coach workspace split into `Calendar`, `Performance`, `Alumnos`, and `Horarios y Clases`: calendar shows the current week in an hour-by-hour class matrix, groups simultaneous reservations into one individual or group class, surfaces each student's basic profile data (name, sexo, edad, categoria), marks which reservations are paid vs pending, and starts with a large `Agregar clase` CTA that takes the coach into `Alumnos`; `Performance` shows club-level results plus weekly earnings and student consistency rows, while `Horarios y Clases` auto-saves club selection, availability, packages, and Mercado Pago setup without manual save buttons and no longer shows the club's court-fee pricing to the coach. Pending autosave writes are also flushed if the coach leaves the page before the debounce finishes.\n/home/sebas/work/projects/ballbox/docs/implemented-sports.md:32:- `Coach` now also stores a Mercado Pago placeholder handle and reusable `CoachSalesPackage` rows for price, duration, class type, and max-student setup.\n/home/sebas/work/projects/ballbox/docs/implemented-sports.md:90:- The selected slot is still a local lead preference, not a confirmed reservation; ATC availability can move between render and submit, and Ballbox rejects stale selections when revalidation no longer finds the slot.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:5:- Use this as the master document for payment ownership modes, TCN integration, onboarding, and rollout sequencing.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:9:- Support two payment-owner modes in that flow:\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:10:  - `BALLBOX`: Ballbox owns the Mercado Pago account that collects funds.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:11:  - `TENANT`: the client/tenant owns the Mercado Pago account that collects funds.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:16:- Do not block rollout on Mercado Pago native split or marketplace approval.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:20:- The immediate risk is not payout automation. The immediate risk is getting the machine payment path working end to end.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:21:- TCN machine integration and Mercado Pago webhook persistence are still the highest-risk technical pieces.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:25:- Running all machines through Ballbox keeps one integration surface, one webhook surface, and one observability path.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:29:- TCN machine payment adapter\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:30:- Mercado Pago provider integration through Ballbox\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:31:- machine-level payment-owner mode selection\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:34:- webhook handling through Ballbox\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:39:- Mercado Pago marketplace/split as a requirement for launch\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:51:2. Ballbox creates the Mercado Pago order with Ballbox credentials\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:53:4. Mercado Pago notifies Ballbox webhook\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:54:5. Ballbox fetches order details, verifies approval, persists payment\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:67:2. Ballbox creates the Mercado Pago order using tenant credentials/config\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:69:4. Mercado Pago notifies the same Ballbox webhook endpoint\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:70:5. Ballbox fetches order details with the tenant-specific credentials, verifies approval, persists payment\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:71:6. tenant owns funds; Ballbox is not doing revenue-share settlement for those payments\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:81:- unified webhook and persistence behavior\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:82:- centralized debugging for payment-approved-but-no-vend cases\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:87:- Ballbox owns the payment orchestration path\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:88:- tenant owns the payment account\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:97:- `paymentOwnerMode = BALLBOX | TENANT`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:98:- payment config reference for Mercado Pago\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:103:Ballbox needs to choose the right Mercado Pago credentials/config before creating the order and before fetching webhook-triggered order details.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:106:Keep one Ballbox webhook endpoint:\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:107:- `/notification/mercadopago`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:109:But Ballbox must be able to determine which payment config applies when an event arrives.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:111:- provider order / external reference -> vending machine -> payment owner mode -> MP config\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:116:- Ballbox should implement the TCN payment adapter over the native Mercado Pago provider layer.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:120:- `docs/tcn-payments-integration-plan.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:121:- `docs/tcn-payments-open-questions.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:122:- `docs/tcn-payments-execution-plan.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:128:- prove Ballbox native Mercado Pago order + webhook persistence works publicly\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:131:- one real approved payment persisted locally\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:135:- `docs/mercadopago-webhook-replay-notes-2026-04-23.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:146:- `docs/tcn-payments-open-questions.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:148:### Phase 2. Single technical path with two payment-owner modes\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:153:- machine-level payment owner resolution\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:155:- webhook handling that can resolve the correct config\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:165:- real payment test per machine/account context\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:180:- Mercado Pago split / marketplace if it fits the later buyer flow\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:190:5. confirm public webhook reachability from Ballbox\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:191:6. run one real payment test\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:204:- confirm they want to collect in their own Mercado Pago account\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:206:- confirm they configure Ballbox webhook endpoint in their MP account if required by the final provider setup\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:208:- run one real payment test with their account\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:209:- do not promise heavy ongoing support for their Mercado Pago operations\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:215:- Clubs mainly care about net outcome and avoiding extra invoicing burden, not about ownership of the payment rails themselves.\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:220:- tenant-specific webhook/config resolution may require extra correlation fields\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:221:- real webhook validation is not fully closed yet\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:224:- guided Adidas setup may still stall on account/POS/webhook details\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:231:- do not overbuild settlement tooling before real machine payments work\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:234:- one Ballbox-collected machine completes payment flow end to end\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:235:- one tenant-collected machine completes payment flow end to end\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:236:- Ballbox persists approved payments for both owner modes\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:242:- `docs/implemented-payments.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:243:- `docs/tcn-payments-integration-plan.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:244:- `docs/tcn-payments-open-questions.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:245:- `docs/tcn-payments-execution-plan.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:246:- `docs/payments-club-settlement-strategy.md`\n/home/sebas/work/projects/ballbox/docs/payments-machine-rollout-rfc.md:247:- `docs/mercadopago-webhook-replay-notes-2026-04-23.md`\n/home/sebas/work/projects/ballbox/docs/coaches-form-current.md:15:- Detect whether court reservation, payments, club coordination, or growth/admin issues appear often enough to justify follow-up interviews.\n/home/sebas/work/projects/ballbox/docs/coaches-form-current.md:119:- Whether scheduling, attendance reminders, payments, court reservation, club friction, or acquisition appear frequently in self-report.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:1:# TCN payments execution plan\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:4:Ordered execution plan for getting from current Ballbox native Mercado Pago support to real TCN machine payments.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:7:- Goal: prove Ballbox native Mercado Pago flow works end to end without TCN hardware.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:9:  - `docs/implemented-payments.md`\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:10:  - `docs/mercadopago-webhook-replay-notes-2026-04-23.md`\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:12:  - validate public webhook reachability for `/notification/mercadopago`\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:13:  - run one real approved payment\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:14:  - confirm local `PaymentSession` persistence in `/admin/payments`\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:17:  - one real approved payment persists locally through webhook flow\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:22:  - `docs/tcn-payments-integration-plan.md`\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:23:  - `docs/tcn-payments-open-questions.md`\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:24:  - `test-results/tcn-payment-protocol/findings-2026-04-23.md`\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:30:  - `CodeUrl` meaning and payment-success handshake are confirmed\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:35:  - `docs/tcn-payments-integration-plan.md`\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:46:- Goal: add the TCN-facing Ballbox endpoints over existing Mercado Pago primitives.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:51:  - map TCN requests to Ballbox/Mercado Pago order creation\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:52:  - map approved-payment state back into TCN success flow\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:61:  - test payment approval -> vend path\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:64:  - one real vend succeeds through Ballbox-backed payment flow\n/home/sebas/work/projects/ballbox/docs/tcn-payments-execution-plan.md:71:  - `docs/payments-club-settlement-strategy.md`\n/home/sebas/work/projects/ballbox/docs/atc-integration-discovery.md:132:- no visible webhook/event model for booking changes\n/home/sebas/work/projects/ballbox/docs/streetcast-parity.md:6:- Local media cache: covered by screen-scoped browser cache with cached blob playback preference.\n/home/sebas/work/projects/ballbox/docs/index.md:33:- `docs/implemented-payments.md`\n/home/sebas/work/projects/ballbox/docs/index.md:52:- `docs/payments-machine-rollout-rfc.md`\n/home/sebas/work/projects/ballbox/docs/index.md:53:- `docs/payments-machine-implementation-rfc.md`\n/home/sebas/work/projects/ballbox/docs/index.md:54:- `docs/tcn-payments-integration-plan.md`\n/home/sebas/work/projects/ballbox/docs/index.md:55:- `docs/tcn-payments-open-questions.md`\n/home/sebas/work/projects/ballbox/docs/index.md:56:- `docs/tcn-payments-execution-plan.md`\n/home/sebas/work/projects/ballbox/docs/index.md:57:- `docs/payments-club-settlement-strategy.md`\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:1:# Mercado Pago webhook replay notes\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:6:- Replayed real Ballbox Mercado Pago webhook payloads against `https://ballbox.app/notification/mercadopago`.\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:13:- Ballbox ignored both because Mercado Pago order fetch returned the orders as expired:\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:17:- The webhook endpoint is live.\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:20:- These specific replay ids are no longer useful for persistence validation because the orders expired in Mercado Pago.\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:24:  - a fresh approved `order.processed` id still valid in Mercado Pago, or\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:25:  - a real buyer-side payment to create a new approved order.\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:28:- Keep the webhook path as-is.\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:29:- When resuming, use a fresh approved order id from a recent live payment or the buyer app flow.\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:32:- Attempted a new production QR order create against `https://ballbox.app/api/integrations/payments/orders` before the real buyer-payment step.\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:33:- Result: Ballbox returned provider failure details from Mercado Pago:\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:39:  - `OPS-1` is blocked before payment approval, not at webhook persistence\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:42:  - rely on the Mercado Pago account-level webhook configuration already associated with the production setup\n/home/sebas/work/projects/ballbox/docs/mercadopago-webhook-replay-notes-2026-04-23.md:43:  - then rerun `OPS-1` with a fresh real payment\n/home/sebas/work/projects/ballbox/docs/coaches-icp-segmentation.md:39:- Strong evidence that payment/collections pain dominates over scheduling pain.\n/home/sebas/work/projects/ballbox/docs/payments-club-settlement-strategy.md:5:- Do not force Mercado Pago split payments into the current vending QR flow.\n/home/sebas/work/projects/ballbox/docs/payments-club-settlement-strategy.md:6:- Treat Mercado Pago native split as a future option, not the default operating model.\n/home/sebas/work/projects/ballbox/docs/payments-club-settlement-strategy.md:9:- Current Ballbox payments flow is QR/order-based at `/v1/orders`.\n/home/sebas/work/projects/ballbox/docs/payments-club-settlement-strategy.md:10:- Mercado Pago split docs point to marketplace / checkout flows, OAuth, and seller onboarding.\n/home/sebas/work/projects/ballbox/docs/payments-club-settlement-strategy.md:16:- The first rollout uses two payment-owner modes documented in `docs/payments-machine-rollout-rfc.md`:\n/home/sebas/work/projects/ballbox/docs/payments-club-settlement-strategy.md:18:  - `TENANT`: the tenant/client collects directly in their own Mercado Pago account; no Ballbox settlement is needed for those payments.\n/home/sebas/work/projects/ballbox/docs/payments-club-settlement-strategy.md:54:### Mercado Pago native split\n/home/sebas/work/projects/ballbox/docs/payments-club-settlement-strategy.md:55:Best if Ballbox later changes the buyer flow to a supported Mercado Pago checkout path.\n/home/sebas/work/projects/ballbox/docs/payments-club-settlement-strategy.md:69:- only if we replatform the buyer payment flow to something MP split supports\n/home/sebas/work/projects/ballbox/docs/payments-club-settlement-strategy.md:83:- Revisit Mercado Pago native split only after machine payments are stable and the club count justifies it.\n/home/sebas/work/projects/ballbox/docs/atc-access-request-checklist.md:17:- Any webhook/event support for booking changes\n/home/sebas/work/projects/ballbox/docs/implemented-network.md:28:- `Screen` and `TvDevice` also live in the same shared core and are consumed today by TVs and payments flows.\n/home/sebas/work/projects/ballbox/docs/implemented-network.md:33:- Cross-links from TVs/payments back into `/admin/network` are not in place yet.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:4:- Ballbox owns the admin surface, native MercadoPago webhook intake, and native QR order creation.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:5:- `/notification/mercadopago` is the first-party MercadoPago QR webhook route that fetches the upstream order, ignores unsupported merchant-order topics, and persists approved orders.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:6:- `/api/integrations/payments/orders` is the first-party QR order creation route.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:7:- `/api/integrations/payments/sessions` lists Ballbox-local approved payment records plus native MercadoPago config status.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:8:- `/admin/payments` now manages local approved payment sessions directly for reconciliation/correction and also generates live MercadoPago QR orders for arbitrary amounts or product-priced orders.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:9:- The admin QR generator should now be treated as an operator test/debug harness for Mercado Pago and webhook validation, not as the final buyer-facing vending-machine payment UX.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:10:- The QR generator accepts money values in major units with decimals (for example `15.00` or `1000.00`) and converts them to Mercado Pago minor units before submission.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:13:- `/api/admin/payments/operations`\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:14:- `/api/admin/payments/sessions`\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:15:- `/api/admin/payments/sessions/[sessionId]`\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:16:- `/api/integrations/payments/health`\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:17:- `/api/integrations/payments/sessions`\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:18:- `/api/integrations/payments/orders`\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:19:- `/notification/mercadopago`\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:22:- Ballbox persists approved payment records as `PaymentSession` rows in Ballbox Postgres.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:23:- Native MercadoPago webhook intake fetches the upstream order, maps approved orders into the canonical Ballbox payment shape, and persists them locally.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:28:- Playwright now covers local `/admin/payments` create, edit, and delete flows with deterministic cleanup of E2E `PaymentSession` rows.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:31:- Ballbox native MercadoPago webhook path is `/notification/mercadopago`.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:32:- Ballbox native QR order creation path is `/api/integrations/payments/orders`.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:33:- For the current Ballbox Mercado Pago account/API surface, QR order create relies on the account-level webhook configuration instead of sending inline `notification_url` in the order payload, because Mercado Pago rejects that field on `POST /v1/orders` for this setup.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:35:- The order route rejects values below Mercado Pago's minimum charge (`15.00 ARS`) before calling the provider.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:36:- QR webhook persistence now depends on the upstream order fetch plus canonical-reference mapping; merchant-order topic events are ignored.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:37:- Legacy approved-callback path `/api/integrations/payments/approved` is removed as an operational integration and now returns `410 PAYMENTS_APPROVED_CALLBACK_REMOVED`.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:38:- Native payment correlation requires canonical `externalReference` values shaped as `payment-vm_{vendingMachineId}-txn_{machineTxnId}`.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:42:- Host app now owns the native MercadoPago order creation + webhook persistence path inside Ballbox.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:43:- Real-world validation is now closed: one real public webhook and one real approved payment were persisted and verified in `/admin/payments` on 2026-05-13.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:46:- First rollout planning now assumes one shared technical flow with two payment-owner modes: `BALLBOX` for club machines Ballbox collects on, and `TENANT` for client-owned collection setups such as Adidas rental machines; see `docs/payments-machine-rollout-rfc.md`.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:48:- The webhook route is fetch-first: the webhook is just the trigger, and Ballbox verifies the order state by fetching Mercado Pago before persisting.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:49:- TCN protocol review indicates the `additional hardware devices` warning applies to machine-side QR scanning, while the payment flow (`FunCode=8000`) returns `CodeUrl` for machine-screen QR display; see `docs/tcn-payments-integration-plan.md` and `test-results/tcn-payment-protocol/findings-2026-04-23.md`.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:50:- Recent replay validation against two older live `ORD...` ids returned `MERCADOPAGO_ORDER_NOT_APPROVED_expired`; see `docs/mercadopago-webhook-replay-notes-2026-04-23.md` when resuming webhook persistence checks.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:53:- End-to-end payment validation succeeded against Ballbox native MercadoPago webhook configuration.\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:58:  - public HTTPS webhook endpoint `/notification/mercadopago`\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:60:  - a real payment was approved upstream\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:61:  - MercadoPago reached Ballbox webhook publicly\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:62:  - Ballbox fetched order details and recorded the approved payment locally\n/home/sebas/work/projects/ballbox/docs/implemented-payments.md:64:  - the session was visible in `/admin/payments`\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:1:# TCN payments integration plan\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:4:- Treat the current `/admin/payments` QR generator as an operator test harness, not the final production payment UX for vending machines.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:10:- The payment section (`2.1.5 Integral exchange`, `FunCode=8000`) already defines a dynamic payment flow:\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:18:2. TCN machine requests Ballbox payment session using the TCN payment contract.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:19:3. Ballbox creates a Mercado Pago QR order.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:20:4. Ballbox maps the Mercado Pago output into the TCN response shape and returns `CodeUrl`.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:22:6. Buyer scans with Mercado Pago app on phone.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:23:7. Payment provider notifies Ballbox webhook.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:24:8. Ballbox validates/persists approved payment.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:29:- Define a Ballbox route for TCN `8000` payment-init requests.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:37:- Confirm whether TCN expects raw payment URL, QR payload string, or a specific provider deep link in `CodeUrl`.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:40:- Map how Ballbox should signal payment success back into the TCN flow.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:42:- Confirm how TCN links approved payment to dispense using `TradeNo` and/or `SlotNo`.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:49:- `/admin/payments` remains useful for:\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:50:  - Mercado Pago config checks\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:52:  - webhook validation\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:54:- Do not frame it as the final vending-machine payment UX.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:58:- Exact success callback / notify shape between Ballbox and TCN after payment approval.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:59:- Whether machine-side polling (`4000`) participates in payment completion or only app-driven vend/load flows.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:60:- Whether TCN needs additional payment-status endpoints beyond `8000` for a full dispense flow.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:64:- Keep Mercado Pago-native Ballbox routes as the provider layer underneath that adapter.\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:67:- `test-results/tcn-payment-protocol/Protocol 2.5V English version.pdf`\n/home/sebas/work/projects/ballbox/docs/tcn-payments-integration-plan.md:68:- `test-results/tcn-payment-protocol/findings-2026-04-23.md`\n","truncated":true,"truncatedBy":"bytes","totalLines":470,"totalBytes":79919,"outputLines":327,"outputBytes":51149,"lastLinePartial":false,"firstLineExceedsLimit":false,"maxLines":2000,"maxBytes":51200},"fullOutputPath":"/tmp/pi-bash-940c7268f6667360.log"},"isError":false,"timestamp":1778915175353}}
{"type":"message","id":"19bb8a21","parentId":"3714b591","timestamp":"2026-05-16T07:06:23.253Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Inspecting documentation for endpoints**\n\nI need a concise answer along with links to the documentation and specifics on what to send. It might help to scrape the exact endpoints. I could check if the provider uses something like a /v1/orders webhook. I'll quickly inspect the MP docs for references related to order creation and webhooks too. This way, I can gather all the relevant information efficiently!","thinkingSignature":"{\"id\":\"rs_08ae000d0bfd110c016a08176873948194b5b4495878b09e15\",\"type\":\"reasoning\",\"encrypted_content\":\"gAAAAABqCBdudklI3Ka_VtiBLPGF9YPzPXp9M0i7_uwT07aDC4DqWZTHGtJw_YYOPuj9ZSxCweQL7IeKbJtSyckcudkiUyPSAktWX0_xSACKm2h8dQ-v0KSf6EW1EGOa1Myb7v-5ZnRNvUep0JUCmw57CetoqVBrf7LWfrJJbWjOi8X2oYUFz9vJndd42zmgY_k1ONFp5k0Ko-hO1cm90JV18ilUNC6O2cpUEuGEbj9VwnYo5x78HHQQAfe9a8_weAYYe3vwTyKzheq4V8Ju0c_L2ljzIRLaGwKvIwrAU0mGif_mhdkNkrLqmle5puDnSeAORbzKVc_uKuEerw8Qp0XYmgoTLQmq_2opk_Dg554LaxIJ1JJwimPfBIhvylrlBM5i1H_LlVMuzLbSanEfXMuBRHTvoXmx8lZ1xlJqwp1KPbgRKAyGCGHkJaE8X64Zm6dPN_4Mm3PQH4UfTys7EEL-ZXXli3eUHGhc6xb_T5WhLsVoyT4rcx-876efEshH1P4MxaGYyO8X27o6nBvXekqgi-18QCC9lLH9XCkVfEZbkLIaBDBUKsBKD1YiHz_L5QeYEz2-aECPaVUaAHigBMY5JSLV0l3C4LTlDGbutRzLWt9kkvHtZN4Ls3L-COhhZfdEH2QuTRWC6EC6qBZqYRLVKOMcLaayBk1IQdaNRFHCPgJlPrRpVpF217sZPNbbr_0oL7EBBlKICzC_LyMqpcEiE-1BF6y-6FmSggwfcwzArohE8er9ShvW1vUVE54_-glyZjRDaxfMUY3zyAEx8YYZTR-vc5nA5mMqIFaNNVemLA4vt7xsx1-DX6gTwAR3f1BZ6jxhzuYfkyJiBm_0NenMCDEgLTAqadnQM7NF2uPDuQMYQBIL8Bl82IOavXzEVh45uDKfJiwGibBA-NA1jBUV0UsnDDIbBd8IEtPiAXMpY05Xk-tnJKhYetMxlMJ-QW_sq4GG01RgrR7ANhbcBrB6lE5r9VeEe4-o7VXmgVsZFPd_2yeqmMEVMuWFfO4pJmuqpYIgBYGC7k057QKiUjpZ15tvYMsrVbwp0M2w6ysm5_cdr9G7Oz7g8QzNMN4yj5yoYLQJQDR6E-VE9kQqZllAc1aaaVgWsnmffMbnXXSmEab7NpraMFXWoFOv9MnrPA8XqO7Uifq9MpEemDfay7pRDeLxW-CrI-kH7Eqd8fwzt2qkdvBmAvX_ulRWCc0z3eKf4zFCfAnz\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Inspecting documentation for endpoints**\\n\\nI need a concise answer along with links to the documentation and specifics on what to send. It might help to scrape the exact endpoints. I could check if the provider uses something like a /v1/orders webhook. I'll quickly inspect the MP docs for references related to order creation and webhooks too. This way, I can gather all the relevant information efficiently!\"}]}"},{"type":"toolCall","id":"call_3Vg9lUtd8osnxVJJPApCuTLP|fc_08ae000d0bfd110c016a08176ef8b8819493d99df2774e6ce1","name":"bash","arguments":{"command":"python - <<'PY'\nimport requests,re,json\nu='https://www.mercadopago.com/developers/en/docs/qr-code/overview'\nhtml=requests.get(u,timeout=20,headers={'User-Agent':'Mozilla/5.0'}).text\nfor pat in ['QR Code','Create an order','orders','webhook','notifications','point_of_interaction','qr_data','v1/orders']:\n    if pat.lower() in html.lower():\n        print('FOUND',pat)\nprint(re.findall(r'https://www\\.mercadopago\\.com/developers/en/docs/[^\"]+', html)[:20])\nPY","timeout":25}},{"type":"toolCall","id":"call_cKVswKjwHRSDXSKGFBAe2cIX|fc_08ae000d0bfd110c016a08176ef8d48194bfdb00b3711d81f2","name":"bash","arguments":{"command":"python - <<'PY'\nimport requests,re\nu='https://www.mercadopago.com/developers/en/docs/checkout-api/integration-configuration/integrate-with-link-and-webhooks'\nhtml=requests.get(u,timeout=20,headers={'User-Agent':'Mozilla/5.0'}).text\nprint('status ok len',len(html))\nfor s in ['webhook','notifications','x-signature','order.processed','payment.created']:\n    print(s, s.lower() in html.lower())\nPY","timeout":25}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":13651,"output":359,"cacheRead":26112,"cacheWrite":0,"totalTokens":40122,"cost":{"input":0.034127500000000005,"output":0.005385,"cacheRead":0.006528,"cacheWrite":0,"total":0.046040500000000005}},"stopReason":"toolUse","timestamp":1778915175355,"responseId":"resp_08ae000d0bfd110c016a081767985481949f073611cc1313f8"}}
{"type":"message","id":"392f27ca","parentId":"19bb8a21","timestamp":"2026-05-16T07:06:24.992Z","message":{"role":"toolResult","toolCallId":"call_3Vg9lUtd8osnxVJJPApCuTLP|fc_08ae000d0bfd110c016a08176ef8b8819493d99df2774e6ce1","toolName":"bash","content":[{"type":"text","text":"FOUND QR Code\nFOUND orders\nFOUND webhook\nFOUND notifications\n[]\n"}],"isError":false,"timestamp":1778915184992}}
{"type":"message","id":"5d31581f","parentId":"392f27ca","timestamp":"2026-05-16T07:06:24.993Z","message":{"role":"toolResult","toolCallId":"call_cKVswKjwHRSDXSKGFBAe2cIX|fc_08ae000d0bfd110c016a08176ef8d48194bfdb00b3711d81f2","toolName":"bash","content":[{"type":"text","text":"status ok len 949815\nwebhook False\nnotifications True\nx-signature False\norder.processed False\npayment.created False\n"}],"isError":false,"timestamp":1778915184992}}
{"type":"message","id":"1a9da251","parentId":"5d31581f","timestamp":"2026-05-16T07:06:30.451Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Considering documentation improvements**\n\nI need to think about a better documentation path for Spanish users. It might be helpful to provide only high-level links. I should include information about creating orders and webhook documentation. If they need API specifications from Mercado Pago, it likely involves the \"Orders API\" rather than something QR-specific. I should also take a look at Ballbox's implemented documentation to understand the actual endpoints they are using.","thinkingSignature":"{\"id\":\"rs_08ae000d0bfd110c016a081772593c8194b0bebeecea03c61b\",\"type\":\"reasoning\",\"encrypted_content\":\"gAAAAABqCBd2SyNwXlXpbcAE7GpQyjCsiNnjNJYtJvkpN-WXmtZM2nwkfBiALjMKn8NNFen7C22WfoSV9xYsw1e4rI4hhSNEHGkeGzkQ6cS0_DpiDsOqn1a_QxejPtEoEV_4B_iU7j1sF3BKMNmO0cX3sxpWVXzoF3ddPVMwWgIv1hvoptUJImb5pd7yIsZV95cdiUqlTFZqAqFLWYs0LO8bOGuvoYAAtip_gFxCgX_RpGJAwkWGGnJ1UsijDbO7FEm2hPURFemwxhCm6dDPJf0zhTLe-3mR-bH_zFVoUk_3Gcddy9yE9j1ZLyLJXEUwp5xETmlKvKm2a2q0XsGFbySeDGis4n4xSc9wSCUXNQdamMPUJ6FwPCRdHVYMVfXWClfEoBaR2Nab5442SOdgWAwDa6NrZ78nEjy7lMc7b6PPJxLdH_2BalycXlixR_Uk7rxjSkzOFAt_J-tqVEKhV7CRBsMHw8_WoWu8uQJhcbxRwORPHw8uRHxS94fztdQjTnlM0g9I1nUZynp8ZcdMGe16PFpB7T2iQB3F9b6im-PU_We_jYuGQO2wmhUtS4ig8OPO1rQwWj1qR9UqyMntNyqZYszj_dqwrjGijMcvSB-2ROisn6I9YzSsDQDglfcvuasSyp6u8p1QLlLdGM5n41i8zJbiI3_s0L0hqUKTA-eOtk1AJIZafr-SZyMO2orSJKVejmKnzVJahVcv_vSAw44KBrLLn3FXe9VPJbDOFULrdAnpix6laBsSnNmbGAFVqbU5rEK2WWdObCjPfYw6UfTqqDIpwCjHUHQ3-FdCOe8XEuiXCNcgb3NOLyTpKzgzOBAI4CNIez8bMelXfMX6mQIHOHBnQWsvDeQuXmIH-MYoFpN5mrnnDVngHuisXFEyxAuDWSJZ0KSSnwXZN6LWtimcOGrTrvg-Yo51USC985mIJ7cM4BrQd3KcnW9MJNYchqCo1yMgeGS6eJqhZ9WG0Rpq5V9L40Qd7B8DxZ1jClhC8BGq50Fl-uUEKDlJCg5jfv2lYGFnpa7EWFBiDiUkOIppIiVp3GtNx70MBPT_1zQzJAJmSH5Ir-FN_8A4-L_MUv1Mj5jg2HkRmIePdqdsquJqp59xrxduOaKZwTxj9k2qER-rC1tyc5U-XtxGgF9gufe6bA2Cs-tywn_RX7WBy6RXOyyf9KnObUcyzTkugN_Tg6QYOv1pL7ZbvvOvjlB5ocyLTPuIFaAYDaWNIZ-DIb4KZ5f3YscLJ-JvNU_408qYj1o9bAaUSljU811aRgtaxPIkyvq-3N98tVOR6VxzFzpI3bMmwq__CFimW78ZVqM11TQFH3NxWEIt6Ycwx6NpzTt56UAmJEOV\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Considering documentation improvements**\\n\\nI need to think about a better documentation path for Spanish users. It might be helpful to provide only high-level links. I should include information about creating orders and webhook documentation. If they need API specifications from Mercado Pago, it likely involves the \\\"Orders API\\\" rather than something QR-specific. I should also take a look at Ballbox's implemented documentation to understand the actual endpoints they are using.\"}]}"},{"type":"toolCall","id":"call_jqEWW1LitvmNkmtK2QobvHHz|fc_08ae000d0bfd110c016a081776273c81948df5f54558576c67","name":"read","arguments":{"path":"/home/sebas/work/projects/ballbox/docs/implemented-payments.md","offset":31,"limit":20}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":760,"output":103,"cacheRead":39424,"cacheWrite":0,"totalTokens":40287,"cost":{"input":0.0019000000000000002,"output":0.001545,"cacheRead":0.009856,"cacheWrite":0,"total":0.013301}},"stopReason":"toolUse","timestamp":1778915184993,"responseId":"resp_08ae000d0bfd110c016a08177136148194a384f70edbfa36c3"}}
{"type":"message","id":"8180ac38","parentId":"1a9da251","timestamp":"2026-05-16T07:06:30.470Z","message":{"role":"toolResult","toolCallId":"call_jqEWW1LitvmNkmtK2QobvHHz|fc_08ae000d0bfd110c016a081776273c81948df5f54558576c67","toolName":"read","content":[{"type":"text","text":"- Ballbox native MercadoPago webhook path is `/notification/mercadopago`.\n- Ballbox native QR order creation path is `/api/integrations/payments/orders`.\n- For the current Ballbox Mercado Pago account/API surface, QR order create relies on the account-level webhook configuration instead of sending inline `notification_url` in the order payload, because Mercado Pago rejects that field on `POST /v1/orders` for this setup.\n- That route accepts an explicit amount for arbitrary charges or falls back to the Ballbox `Product.priceMinor` when the amount is omitted, which powers per-product QR generation in the admin UI.\n- The order route rejects values below Mercado Pago's minimum charge (`15.00 ARS`) before calling the provider.\n- QR webhook persistence now depends on the upstream order fetch plus canonical-reference mapping; merchant-order topic events are ignored.\n- Legacy approved-callback path `/api/integrations/payments/approved` is removed as an operational integration and now returns `410 PAYMENTS_APPROVED_CALLBACK_REMOVED`.\n- Native payment correlation requires canonical `externalReference` values shaped as `payment-vm_{vendingMachineId}-txn_{machineTxnId}`.\n- `NEXT_PUBLIC_SITE_URL` is required if Ballbox should expose a concrete `recommendedMercadoPagoWebhookUrl`.\n\n## Validation Status\n- Host app now owns the native MercadoPago order creation + webhook persistence path inside Ballbox.\n- Real-world validation is now closed: one real public webhook and one real approved payment were persisted and verified in `/admin/payments` on 2026-05-13.\n- Live MercadoPago payload quirks handled during closure: `topic_merchant_order_wh` remains intentionally ignored, `items[0].external_code` is accepted as product-id fallback, and `total_amount` is parsed from either string or number before persistence.\n- Club revenue share is currently handled through scheduled manual settlements/bookkeeping for Ballbox-collected machines; no provider-native split payout path is live.\n- First rollout planning now assumes one shared technical flow with two payment-owner modes: `BALLBOX` for club machines Ballbox collects on, and `TENANT` for client-owned collection setups such as Adidas rental machines; see `docs/payments-machine-rollout-rfc.md`.\n- The admin surface includes a live QR generator preview for provider-level scan-and-pay validation, but production vending flow should move behind the TCN machine protocol instead of relying on that admin page.\n- The webhook route is fetch-first: the webhook is just the trigger, and Ballbox verifies the order state by fetching Mercado Pago before persisting.\n- TCN protocol review indicates the `additional hardware devices` warning applies to machine-side QR scanning, while the payment flow (`FunCode=8000`) returns `CodeUrl` for machine-screen QR display; see `docs/tcn-payments-integration-plan.md` and `test-results/tcn-payment-protocol/findings-2026-04-23.md`.\n- Recent replay validation against two older live `ORD...` ids returned `MERCADOPAGO_ORDER_NOT_APPROVED_expired`; see `docs/mercadopago-webhook-replay-notes-2026-04-23.md` when resuming webhook persistence checks.\n\n[15 more lines in file. Use offset=51 to continue.]"}],"isError":false,"timestamp":1778915190457}}
{"type":"message","id":"f4ecf1b9","parentId":"8180ac38","timestamp":"2026-05-16T07:06:34.463Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Preparing final answer in Spanish**\n\nI see the user is looking for a final answer in Spanish. I'll need to include relevant links and maybe a message template to send to TCN, asking for the estimated time of arrival (ETA). It might also be a good idea to mention the Mercado Pago account-level webhook. Okay, let's start crafting that response!","thinkingSignature":"{\"id\":\"rs_08ae000d0bfd110c016a081777d94481949da1a59e836b9e5a\",\"type\":\"reasoning\",\"encrypted_content\":\"gAAAAABqCBd6uESRCV8i_MUAAspwLqcHzEPiNsOMdTh5qDU_Xb_aRugWX8JX_LvJvwQDnI8a7iu1u9sMhSr61JLW3uj5sJB0pB3BktJDfe1ThxDldLxqeOXenC5k4oZKtMSMiC8-YDEB8eRFCDf_NZQ0T47uq4mJivkpzDKtgEkE2c5VpweUOmjeJI_kG02cO4dmotsE4Ykca7vrlca7-LP1KWQY_galFt2jyJUCI5K0wkj3LFIYh8oWoNF1jnitVPw30RGWnaJ7tLv4RkfGGJv_SlQ9SNSitD-Zo3miwYp9kQqkFk0XpGUDRw3cMc4NU6ukPG_d9OXjgvvm7tH6WYt5ljusHeRbZHpApmEGnjmCvDROkYjb0ICMc8_3ZbzGqytK74Z1KIvMvySlBJWUfib0pDiPFHKYegFCJUQ7BtnSQwhmUzeqcqsikW7msjLRPA0Sxf7NLO9bMLO_GPCxuyhUlHoDPjsg9fzlLMPvXcl8-MWGxedRtmFxVANNWmu9cfffGMgv7eh7U6QNmyN0u68ml-MEKt7UiWP4M1WUs_bXHtw4IK75LPEwsi7zut42ZMLyEIYjdkE0Z4MCu2N7HXLTixyKeTUpvjGs_QdQy2Dzp2dej0pqt722z1my0c509UfLuEacUO5poi8ZAe4R0rcEmhYW2bS2U7hrpsOaf8RDlkBH2B4JjMPZlf-Ao8jkUQOTx-u-7ALvDS7dnpd2QfJdB6vLOLcU_ns2eLOwJvrNx66FNhKeJghxBhmG2744j4n3jqdTQXiCEkGbNAze_5vHXTRew-dJ8c5NPshr1PDm0gE6glCQVmFYYTVURvlzZQvri_BRw-oXzSTRFp4Jg-05rzviFyRM8f1VRvntCHdQiQS-fxnsPRhnKlv32YmbmJag9fqLZf2uB2PODzR8UhshNSUXd-4_Kj_y45tEmb8lsL38MiLyzCQYeVgseq2xZ2-lL4a-pUtGhUBrxDBgCIVXaUYk3-J9LNa9kkzy1pVnfBoqITAV27-QVgDAM4X3onfIVLDWlJMMRGW_N_Wn_PCkCNJcx2rfLmJgVPlXLUiuMKrcFkkKI4w7gtACYoaGdu1R_lq69OfWYLHfHEh9_cjUN5Am5i2uIvdjuIprulT6oPGP8-GL1LScgfMAltns13TM-VAZOsYf\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Preparing final answer in Spanish**\\n\\nI see the user is looking for a final answer in Spanish. I'll need to include relevant links and maybe a message template to send to TCN, asking for the estimated time of arrival (ETA). It might also be a good idea to mention the Mercado Pago account-level webhook. Okay, let's start crafting that response!\"}]}"},{"type":"toolCall","id":"call_kih8s1NTqwkIh5Z002Y83rVV|fc_08ae000d0bfd110c016a08177a3c0881949a1fe82e35786fd8","name":"todo","arguments":{"action":"update","id":2,"status":"completed"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":1033,"output":64,"cacheRead":39936,"cacheWrite":0,"totalTokens":41033,"cost":{"input":0.0025825,"output":0.00096,"cacheRead":0.009984,"cacheWrite":0,"total":0.0135265}},"stopReason":"toolUse","timestamp":1778915190471,"responseId":"resp_08ae000d0bfd110c016a081776a38c81949831d8c99b4c8462"}}
{"type":"message","id":"498cf447","parentId":"f4ecf1b9","timestamp":"2026-05-16T07:06:34.464Z","message":{"role":"toolResult","toolCallId":"call_kih8s1NTqwkIh5Z002Y83rVV|fc_08ae000d0bfd110c016a08177a3c0881949a1fe82e35786fd8","toolName":"todo","content":[{"type":"text","text":"Updated #2 (in_progress → completed)"}],"details":{"action":"update","params":{"action":"update","id":2,"status":"completed"},"tasks":[{"id":1,"subject":"Search user-provided PDFs/docs for MML app QR/webview flow mention","status":"completed","description":"Find only in passed docs/PDFs whether MML machine app mentions external QR in webview or describes that flow.","activeForm":"searching passed docs"},{"id":2,"subject":"Find Mercado Pago API docs relevant to TCN external QR payment integration","status":"completed","description":"Identify the Mercado Pago API/docs to send TCN so they can estimate delivery time vs hardware fallback.","activeForm":"finding Mercado Pago APIs"}],"nextId":3},"isError":false,"timestamp":1778915194464}}
{"type":"message","id":"b4a69945","parentId":"498cf447","timestamp":"2026-05-16T07:06:46.443Z","message":{"role":"assistant","content":[{"type":"text","text":"Sí. Lo más útil para pasarles es esto:\n\nDocs MP:\n- Orders API:\n  https://www.mercadopago.com/developers/en/docs/checkout-api/overview\n- QR Code docs:\n  https://www.mercadopago.com/developers/en/docs/qr-code/overview\n- Webhooks / notifications:\n  https://www.mercadopago.com/developers/en/docs/your-integrations/notifications/webhooks\n- API reference:\n  https://www.mercadopago.com/developers/en/reference\n\nQué les diría técnicamente:\n- nosotros generamos QR dinámico por orden\n- usamos Mercado Pago Orders API\n- la confirmación de pago llega por webhook\n- después nuestro backend puede devolverles\n  el estado aprobado / trigger de dispense\n\nImportante para no mandar humo:\n- en Ballbox ya validaste create order\n  + webhook real\n- además tu setup actual parece usar\n  `POST /v1/orders`\n- y en tu caso el webhook va por config\n  de cuenta, no inline `notification_url`\n\nO sea, el paquete mínimo que ellos\nnecesitan evaluar es:\n1. crear orden QR en MP\n2. recibir webhook de aprobación\n3. mapear ese pago a su software\n4. disparar dispense\n\nMensaje listo para pasarles:\n\nWe already have Mercado Pago integrated\non our side.\n\nRelevant Mercado Pago docs:\n- Orders API:\nhttps://www.mercadopago.com/developers/en/docs/checkout-api/overview\n- QR Code:\nhttps://www.mercadopago.com/developers/en/docs/qr-code/overview\n- Webhooks:\nhttps://www.mercadopago.com/developers/en/docs/your-integrations/notifications/webhooks\n- API reference:\nhttps://www.mercadopago.com/developers/en/reference\n\nOur flow is:\n1. create a dynamic QR order\n2. customer pays from phone\n3. Mercado Pago sends payment notification\n   to our backend\n4. backend confirms approved payment\n5. machine dispenses product\n\nCan your software team review this and\ntell us:\n- if this integration is feasible with\n  your standard payment software\n- what exact interface you need from us\n- and an estimated delivery time?\n\nIf this would take several weeks, we may\ninstead move forward with external\npayment hardware first.\n\nSi quieres, te lo compacto más para\nWhatsApp, con menos texto y más presión\npor ETA.","textSignature":"{\"v\":1,\"id\":\"msg_08ae000d0bfd110c016a08177ce13c8194b364373d321ab40b\",\"phase\":\"final_answer\"}"}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":604,"output":517,"cacheRead":40448,"cacheWrite":0,"totalTokens":41569,"cost":{"input":0.00151,"output":0.007755000000000001,"cacheRead":0.010112,"cacheWrite":0,"total":0.019377}},"stopReason":"stop","timestamp":1778915194465,"responseId":"resp_08ae000d0bfd110c016a08177beb9c8194938b2ab8f997b9b3"}}
{"type":"message","id":"bfb8f2e9","parentId":"b4a69945","timestamp":"2026-05-16T07:08:33.690Z","message":{"role":"user","content":[{"type":"text","text":"[telegram] dale"}],"timestamp":1778915313676}}
{"type":"message","id":"42250a8d","parentId":"bfb8f2e9","timestamp":"2026-05-16T07:08:39.608Z","message":{"role":"assistant","content":[{"type":"text","text":"Use este:\n\nWe already have Mercado Pago\nintegrated on our side.\n\nRelevant docs:\n- Orders API:\nhttps://www.mercadopago.com/developers/en/docs/checkout-api/overview\n- QR Code:\nhttps://www.mercadopago.com/developers/en/docs/qr-code/overview\n- Webhooks:\nhttps://www.mercadopago.com/developers/en/docs/your-integrations/notifications/webhooks\n- API reference:\nhttps://www.mercadopago.com/developers/en/reference\n\nOur expected flow is:\n1. customer selects product\n2. machine shows QR\n3. customer pays from phone\n4. Mercado Pago notifies our backend\n5. backend confirms payment\n6. machine dispenses product\n\nCould your software team review this\nand tell us:\n\n1. if this can be integrated into your\nstandard payment software\n2. what exact interface you need from us\n3. approximate delivery time\n\nIf this would take several weeks, we may\ngo first with external payment hardware,\nso an honest ETA would help us decide.","textSignature":"{\"v\":1,\"id\":\"msg_08ae000d0bfd110c016a0817f3479c81949116248534704af5\",\"phase\":\"final_answer\"}"}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":41370,"output":226,"cacheRead":0,"cacheWrite":0,"totalTokens":41596,"cost":{"input":0.103425,"output":0.0033900000000000002,"cacheRead":0,"cacheWrite":0,"total":0.10681500000000001}},"stopReason":"stop","timestamp":1778915313678,"responseId":"resp_08ae000d0bfd110c016a0817f1f3888194926031ad14bc81ca"}}
{"type":"message","id":"8b7cb74c","parentId":"42250a8d","timestamp":"2026-05-16T18:22:15.497Z","message":{"role":"user","content":[{"type":"text","text":"/new"}],"timestamp":1778955735482}}
{"type":"message","id":"df828354","parentId":"8b7cb74c","timestamp":"2026-05-16T18:22:19.784Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"call_pcS6AD1yZFfAgA1gVeK0EoPS|fc_08ae000d0bfd110c016a08b5db2fc081949ba738a667591e54","name":"bash","arguments":{"command":"/home/sebas/pi-config/bin/pi-telegram-new-session","timeout":30}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":41597,"output":33,"cacheRead":0,"cacheWrite":0,"totalTokens":41630,"cost":{"input":0.1039925,"output":0.000495,"cacheRead":0,"cacheWrite":0,"total":0.1044875}},"stopReason":"toolUse","timestamp":1778955735486,"responseId":"resp_08ae000d0bfd110c016a08b5d9a9188194bbbe6314e431e5fb"}}
{"type":"message","id":"4bef8b49","parentId":"df828354","timestamp":"2026-05-16T18:22:19.792Z","message":{"role":"toolResult","toolCallId":"call_pcS6AD1yZFfAgA1gVeK0EoPS|fc_08ae000d0bfd110c016a08b5db2fc081949ba738a667591e54","toolName":"bash","content":[{"type":"text","text":"queued new Telegram Pi session: pi-telegram\n"}],"isError":false,"timestamp":1778955739791}}
{"type":"message","id":"e721b54b","parentId":"4bef8b49","timestamp":"2026-05-16T18:22:21.153Z","message":{"role":"assistant","content":[{"type":"text","text":"Hecho. Roté la sesión.","textSignature":"{\"v\":1,\"id\":\"msg_08ae000d0bfd110c016a08b5dcb75481948cc450e04f8f85f2\",\"phase\":\"final_answer\"}"}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":691,"output":9,"cacheRead":40960,"cacheWrite":0,"totalTokens":41660,"cost":{"input":0.0017275,"output":0.000135,"cacheRead":0.010239999999999999,"cacheWrite":0,"total":0.012102499999999999}},"stopReason":"stop","timestamp":1778955739793,"responseId":"resp_08ae000d0bfd110c016a08b5dbefe88194a6d68d4d80560233"}}
