{"record":{"id":"704b327b76bf6712","repo":"coleam00/Archon","slug":"failed-to-inspect-the-overlay-diff-extractdocke","errorCode":null,"errorMessage":"Failed to inspect the overlay diff: ${extractDockerError(err)}","messagePattern":"Failed to inspect the overlay diff: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/isolation/src/container/overlay.ts","lineNumber":125,"sourceCode":"      ...HELPER_HARDENING,\n      // Bypass the runner image ENTRYPOINT (the overlay-mount entrypoint that needs\n      // ARCHON_WORKSPACE_PATH) — this helper only reads the volume, no overlay mount.\n      '--entrypoint',\n      'bash',\n      '-v',\n      `${target.volume}:/upper:ro`,\n      '-v',\n      `${target.hostRoot}:/lower:ro`,\n      target.image,\n      '-c',\n      buildSummaryScript(),\n      'archon-overlay',\n      `/upper/${UPPER_DATA_SUBPATH}`,\n      '/lower',\n      target.hostRoot,\n    ]));\n  } catch (err) {\n    throw new Error(`Failed to inspect the overlay diff: ${extractDockerError(err)}`);\n  }\n\n  const added: string[] = [];\n  const modified: string[] = [];\n  const deleted: string[] = [];\n  const symlinks: { path: string; target: string; escapes: boolean }[] = [];\n  const skipped: { path: string; reason: string }[] = [];\n  let total = 0;\n\n  for (const { tag, fields } of parseRecords(stdout)) {\n    const path = fields[0] ?? '';\n    if (tag === 'A') {\n      total++;\n      pushCapped(added, path);\n    } else if (tag === 'M') {\n      total++;\n      pushCapped(modified, path);\n    } else if (tag === 'D') {","sourceCodeStart":107,"sourceCodeEnd":143,"githubUrl":"https://github.com/coleam00/Archon/blob/0773b9745896ef0612e709c80845a0f7db315b19/packages/isolation/src/container/overlay.ts#L107-L143","documentation":"summarizeOverlayChanges inspects the overlay diff by running docker commands that diff the overlay's upper layer against the lower layer. If the docker invocation fails, the raw docker error is extracted and rethrown wrapped in this message.","triggerScenarios":"Calling summary/changeSummary when the docker diff/inspect command fails — daemon unreachable, container removed mid-call, or the overlay directories missing on the host.","commonSituations":"Container stopped/removed between start and summary; daemon restarted; host root path (hostRoot) no longer accessible; Docker daemon permission problems.","solutions":["Run the docker diff command manually to see the raw failure","Ensure the container still exists and is running before summarizing","Check Docker daemon health and socket permissions","Re-run the summary after daemon/container access is restored"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"const state = await backend.presence(containerName);\nif (state !== 'running') throw new Error('container must be running before summarize');","typeGuard":null,"tryCatchPattern":"try {\n  const summary = await backend.summary(envId);\n} catch (err) {\n  if (String(err).startsWith('Failed to inspect the overlay diff')) {\n    // container/daemon state changed; verify container is running and retry\n  }\n  throw err;\n}","preventionTips":["Only summarize while the container is running and before cleanup","Verify daemon health before summary operations","Avoid stopping/removing the container concurrently"],"tags":["docker","overlayfs","diff"],"backgroundTag":"overlay-diff-inspection-failed","analyzedSha":"0773b9745896ef0612e709c80845a0f7db315b19","analyzedAt":"2026-09-01T02:28:07.064Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T05:18:18.240Z"}