affaan-m/ECC · error · Error
--config-dir must exist and contain a regular sixtytwo.yaml…
Error message
--config-dir must exist and contain a regular sixtytwo.yaml before any process is started.
What it means
After confirming --config-dir is absolute, validateNodeQualificationArgs resolves it with fs.realpathSync.native and verifies it is a directory containing a regular file named sixtytwo.yaml. Any resolution/stat failure or missing file throws this error, emphasizing the check happens before any process is started.
Solutions
- Create/verify the directory and place sixtytwo.yaml inside it: mkdir -p /abs/dir && test -f /abs/dir/sixtytwo.yaml
- Point --config-dir at the exact directory that contains sixtytwo.yaml, not a parent
- Check the path resolves on this machine (no broken symlinks): realpath /abs/dir
- Ensure read permissions on the directory and the yaml file
Example fix
// before
args.push('--config-dir', '/opt/ito') // no sixtytwo.yaml here
// after
args.push('--config-dir', '/opt/ito/config') // contains sixtytwo.yaml
// or create it:
// fs.mkdirSync('/opt/ito/config', {recursive:true}); fs.writeFileSync('/opt/ito/config/sixtytwo.yaml', cfg) Defensive patterns
Strategy: validation
Validate before calling
const fs = require('fs');
function cfgDirOk(d) {
try { return fs.statSync(d).isDirectory() && fs.statSync(require('path').join(d, 'sixtytwo.yaml')).isFile(); }
catch { return false; }
}
if (!cfgDirOk(configDir)) throw new Error('sixtytwo.yaml missing from config dir'); Try / catch
try {
runEccItoEvals(configDir);
} catch (e) {
if (e.message.includes('sixtytwo.yaml')) {
console.error(`Place sixtytwo.yaml in ${configDir} or fix the path`);
} else throw e;
} Prevention
- Pre-flight check the directory and sixtytwo.yaml existence before invoking the CLI
- In CI, add an explicit step asserting the config checkout landed in the right directory
- Point --config-dir at the directory that directly contains sixtytwo.yaml, not a parent
When it happens
Trigger: Running `ecc ito evals --live-sixtytwo ... --config-dir /abs/dir` where /abs/dir does not exist, is a file, or lacks a sixtytwo.yaml file directly inside it; symlink loops or permission errors during realpathSync also land here.
Common situations: Pointing at the parent directory instead of the one containing sixtytwo.yaml; a typo in the directory name; CI environments where the config checkout step was skipped; using a path that only exists on another machine.
Understand the failure class
Background: "Config file not found": what it means and how to fix it in docker-sync, Maven, Vagrant, Turborepo and other tools — this error's family across 60 libraries.
Related errors
- all overlays must be readable local files
- all takes must be readable local files
- base video must be a readable local file
- exceeds the -byte limit
- must be a regular file
AI-assisted analysis of affaan-m/ECC@8321021c54 (2026-09-16).
Data as JSON: /api/errors/5b7d834bbf82cd74.
Report an issue: GitHub.
Appendix: source
Thrown at scripts/ito.js:135
requiredOptionValue(args, "--cluster");
const nodes = requiredOptionValue(args, "--nodes");
if (!nodes.split(",").every((node) => node.trim().length > 0)) {
throw new Error("--nodes must explicitly list one or more non-empty nodes.");
}
const configDirectory = requiredOptionValue(args, "--config-dir");
if (!path.isAbsolute(configDirectory)) {
throw new Error("--config-dir must be an existing absolute directory.");
}
try {
const resolved = fs.realpathSync.native(configDirectory);
if (
!fs.statSync(resolved).isDirectory()
|| !fs.statSync(path.join(resolved, "sixtytwo.yaml")).isFile()
) {
throw new Error("invalid qualification configuration");
}
} catch {
throw new Error(
"--config-dir must exist and contain a regular sixtytwo.yaml before any process is started."
);
}
}
function parseArgs(argv, environment = process.env) {
const args = [...argv];
if (
args.length === 0
|| args.includes("--help")
|| args.includes("-h")
) {
return Object.freeze({ help: true, invocationArgs: [] });
}
if (environment.ECC_DRY_RUN === "1" || args.includes("--dry-run")) {
throw new Error(
"Itô compute has no paper or dry-run success mode. No CLI operation was invoked."View on GitHub (pinned to 8321021c54)