{"record":{"id":"902f18b1301bd2e9","repo":"Yeachan-Heo/oh-my-codex","slug":"tmux-pane-is-not-proven-live-reconciledpaneid","errorCode":null,"errorMessage":"tmux pane is not proven live: ${reconciledPaneId}","messagePattern":"tmux pane is not proven live: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"src/team/tmux-session.ts","lineNumber":3120,"sourceCode":"    }\n    const newlyObservedPaneIds = afterTopology.panes\n      .filter((pane) => !beforeSplitPaneIds.has(pane.paneId) && pane.startCommand.includes(splitReceipt))\n      .map((pane) => pane.paneId);\n    if (newlyObservedPaneIds.length === 1) {\n      const reconciledPaneId = newlyObservedPaneIds[0]!;\n      persistRestoredHudCleanupDebtSync(cwd, {\n        schema_version: 1,\n        operation: 'restored_hud_cleanup',\n        pane_id: reconciledPaneId,\n        pane_pid: null,\n        leader_pane_id: normalizedLeaderPaneId,\n        leader_pane_pid: options.expectedLeaderPanePid ?? leaderPanePid,\n        leader_pane_owner_id: options.expectedLeaderPaneOwnerId?.trim() || null,\n        hud_owner_leader_pane_id: normalizedLeaderPaneId,\n      }, options.stateRoot);\n      const reconciledProof = readExactPaneProofSync(reconciledPaneId);\n      if (reconciledProof.status === 'unavailable') throw new ExactPaneProofUnavailableError(reconciledProof);\n      if (reconciledProof.status === 'gone') throw new Error(`tmux pane is not proven live: ${reconciledPaneId}`);\n      persistRestoredHudCleanupDebtSync(cwd, {\n        schema_version: 1,\n        operation: 'restored_hud_cleanup',\n        pane_id: reconciledPaneId,\n        pane_pid: reconciledProof.pid,\n        leader_pane_id: normalizedLeaderPaneId,\n        leader_pane_pid: options.expectedLeaderPanePid ?? leaderPanePid,\n        leader_pane_owner_id: options.expectedLeaderPaneOwnerId?.trim() || null,\n        hud_owner_leader_pane_id: normalizedLeaderPaneId,\n      }, options.stateRoot);\n    }\n    throw new Error('restored_hud_split_output_ambiguous');\n  }\n  persistRestoredHudCleanupDebtSync(cwd, {\n    schema_version: 1,\n    operation: 'restored_hud_cleanup',\n    pane_id: paneId,\n    pane_pid: null,","sourceCodeStart":3102,"sourceCodeEnd":3138,"githubUrl":"https://github.com/Yeachan-Heo/oh-my-codex/blob/3ad79a8a6fe6e95fdbb8c00e40716fffe4011ce2/src/team/tmux-session.ts#L3102-L3138","documentation":"Thrown by restoreStandaloneHudPane's reconciliation path: split-window output could not be parsed, exactly one new pane carrying the split receipt was found via topology diff, a cleanup debt was persisted for it, but readExactPaneProofSync(reconciledPaneId) then returned status 'gone'. The freshly created HUD pane already died (or the proof read raced with reaping), so the library cannot bind a PID to the cleanup debt and throws.","triggerScenarios":"The HUD pane created by split-window exits before its liveness proof is read — HUD process fails immediately (node/entry path invalid on the spawned shell, env assignment failure), or the pane is killed by a concurrent actor right after creation.","commonSituations":"resolveLeaderNodePath/resolveOmxCliEntryPath resolving differently inside the pane's shell (PATH differences); shell quoting/env issues in the exec env command on the target cwd; pane killed by a parallel restore; aggressive pane exit reaping.","solutions":["Check whether the pane died because the HUD command failed: run the same node <omxEntry> hud --watch command manually in a split","Verify the node binary and omx CLI entry paths are valid from the pane's working directory and shell","Look for concurrent restores/users killing panes and serialize them","Retry the restore after fixing the HUD startup failure"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// Smoke-test the HUD command before restoring\nexecSync(`${nodePath} ${omxEntry} hud --watch --check`, { stdio: 'pipe' }); // if such a check mode exists","typeGuard":null,"tryCatchPattern":"try { restoreStandaloneHudPane(id, cwd, opts); } catch (e) { if (e instanceof Error && e.message.startsWith('tmux pane is not proven live')) { /* new HUD pane died on spawn: test HUD command manually, fix node/entry paths, retry */ } else throw e; }","preventionTips":["Validate resolveLeaderNodePath() and resolveOmxCliEntryPath() resolve inside the pane's shell, not just the parent","Watch for persisted cleanup debt files after this error and clear/honor them","Ensure the -c start directory is valid"],"tags":["tmux","hud","pane-exit","startup-failure"],"backgroundTag":"child-process-exited-immediately","analyzedSha":"3ad79a8a6fe6e95fdbb8c00e40716fffe4011ce2","analyzedAt":"2026-08-27T22:18:39.783Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}