{"record":{"id":"95e5587504f20c40","repo":"affaan-m/ECC","slug":"executable-override-does-not-point-to-a-readabl","errorCode":null,"errorMessage":"${EXECUTABLE_OVERRIDE} does not point to a readable local Itô CLI file.","messagePattern":"(.+?) does not point to a readable local Itô CLI file\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"scripts/ito.js","lineNumber":212,"sourceCode":"      \"run npm ci and npm run check, then set\",\n      `${EXECUTABLE_OVERRIDE} to the explicit absolute dist/bin/ito.js path.`,\n    ].join(\" \"));\n  }\n\n  if (!path.isAbsolute(configured)) {\n    throw new Error(\n      `${EXECUTABLE_OVERRIDE} must be an absolute path explicitly configured by the operator.`\n    );\n  }\n  return assertUsableExecutable(configured);\n}\n\nfunction assertUsableExecutable(candidate) {\n  let canonicalCandidate;\n  try {\n    canonicalCandidate = fs.realpathSync.native(candidate);\n  } catch {\n    throw new Error(\n      `${EXECUTABLE_OVERRIDE} does not point to a readable local Itô CLI file.`\n    );\n  }\n  if (!isCanonicalItoEntry(canonicalCandidate)) {\n    throw new Error(\n      `${EXECUTABLE_OVERRIDE} must point to the canonical dist/bin/ito.js entry.`\n    );\n  }\n  if (!isUsableExecutable(canonicalCandidate)) {\n    throw new Error(\n      `${EXECUTABLE_OVERRIDE} does not point to a readable local Itô CLI file.`\n    );\n  }\n  return canonicalCandidate;\n}\n\nfunction isCanonicalItoEntry(candidate) {\n  const pathSegments = path","sourceCodeStart":194,"sourceCodeEnd":230,"githubUrl":"https://github.com/affaan-m/ECC/blob/06c5e118c4d3e6c3b7f9445f973a2194c82de193/scripts/ito.js#L194-L230","documentation":"This is the first failure inside assertUsableExecutable: fs.realpathSync.native(candidate) threw, meaning the configured path could not be resolved at all — typically ENOENT (some component of the path does not exist), EACCES (no permission on a parent directory), or a symlink loop. The message reports it as 'not a readable local Itô CLI file' before canonical-entry or permission checks run.","triggerScenarios":"ECC_ITO_CLI_EXECUTABLE points at dist/bin/ito.js that was never built (npm run build/check skipped), the repo was moved or deleted, or a parent directory is unreadable by the current user.","commonSituations":"Forgetting the build step so dist/ does not exist; cloning ito-cloud-runtime fresh after the env var already points to the old checkout path; running under a different container user that cannot traverse the repo directory.","solutions":["Check the path component-by-component: ls -l \"$ECC_ITO_CLI_EXECUTABLE\" — fix whichever parent is missing.","If dist/bin/ito.js is absent, rebuild: cd cli/ito-compute-cli && npm ci && npm run check.","If the repo moved, re-export ECC_ITO_CLI_EXECUTABLE to the new absolute location."],"exampleFix":"# before\n$ ls \"$ECC_ITO_CLI_EXECUTABLE\"\nls: cannot access '.../dist/bin/ito.js': No such file or directory\n\n# after — build the CLI, then retry\n$ cd ito-cloud-runtime/cli/ito-compute-cli && npm ci && npm run check\n$ ls \"$ECC_ITO_CLI_EXECUTABLE\"  # now resolves","handlingStrategy":"validation","validationCode":"import fs from 'node:fs';\nfunction assertItoEntryResolves(p) {\n  let real;\n  try { real = fs.realpathSync.native(p); }\n  catch { throw new Error(`ECC_ITO_CLI_EXECUTABLE path does not resolve: ${p} (build the CLI or fix the path)`); }\n  return real;\n}","typeGuard":"function itoEntryResolves(p) {\n  try { fs.realpathSync.native(p); return true; } catch { return false; }\n}","tryCatchPattern":null,"preventionTips":["Verify the build artifact exists immediately after building: test -f dist/bin/ito.js.","Pin the env var to the checkout's absolute path and update it when the repo moves."],"tags":["filesystem","env-var","ito","build"],"backgroundTag":"file-not-found","analyzedSha":"06c5e118c4d3e6c3b7f9445f973a2194c82de193","analyzedAt":"2026-08-18T11:27:13.915Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}