abhigyanpatwari/GitNexus · error
Unsupported analyzer runtime payload entry: ${absolutePath}
Error message
Unsupported analyzer runtime payload entry: ${absolutePath} What it means
Thrown by collectArtifacts from the final `else if (!stat.isFile() && !stat.isSymbolicLink())` branch — the catch-all for lstat results that are neither file nor directory nor symlink (directories are handled earlier, unfollowed symlinks earlier still). This covers special filesystem entries (FIFOs, sockets, block/char devices) that the analyzer cannot hash and therefore refuses to include in an identity receipt.
Source
Thrown at gitnexus/src/core/analyzer-identity.ts:1412
budget.artifacts += 1;
if (budget.artifacts > limits.runtimePayloads) {
throw new Error(
`Analyzer runtime payload scan exceeded ${limits.runtimePayloads} payloads: ${root}`,
);
}
if (budget.bytes + payloadBytes > limits.runtimeBytes) {
throw new Error(
`Analyzer runtime scan exceeded ${limits.runtimeBytes} bytes: ${absolutePath}`,
);
}
budget.bytes += payloadBytes;
artifacts.push({
absolutePath,
canonicalPath: `${canonicalPrefix}/${relativePath}`,
kind: stat.isSymbolicLink() ? 'symlink' : 'file',
});
} else if (!stat.isFile() && !stat.isSymbolicLink()) {
throw new Error(`Unsupported analyzer runtime payload entry: ${absolutePath}`);
}
}
}
return artifacts;
}
function collectVendoredGrammarInputs(
packageRoot: string,
directoryGuards: Map<string, DependencyDirectoryGuard>,
options: AnalyzerIdentityResolveOptions,
budget: RuntimeArtifactScanBudget,
limits: AnalyzerIdentityTraversalLimits,
): {
manifests: DependencyInputs['vendoredManifests'];
artifacts: RuntimeArtifact[];
} {
const vendorRoot = path.join(packageRoot, 'vendor');
if (!existsSync(vendorRoot) || !lstatSync(vendorRoot).isDirectory()) {View on GitHub (pinned to d540b00184)
Solutions
- Inspect and remove the special file: `ls -la <absolutePath>` then `rm <absolutePath>` if it is a leftover FIFO/socket.
- Find all special files in the tree: `find <packageRoot> -type p -o -type s -o -type b -o -type c` and clean them.
- Ensure the test/build step that created the FIFO cleans up in a finally block or `afterEach`.
- Run the analyzer against a clean checkout that does not include OS-special files.
Example fix
// before: a test left a named pipe at /pkg/test/fixtures/sock // -> "Unsupported analyzer runtime payload entry: /pkg/test/fixtures/sock" // // after: remove special files and fix the test cleanup // $ find . -type p -o -type s -delete // // in the test: afterAll(() => fs.rmSync(fifoPath))
Defensive patterns
Strategy: validation
Validate before calling
const { execSync } = require('node:child_process');
function assertNoSpecialFiles(packageRoot) {
let out;
try {
out = execSync(
'find . -not -path "*/node_modules/*" \\( -type p -o -type s -o -type b -o -type c \\) -print',
{ cwd: packageRoot, stdio: ['ignore','pipe','ignore'] }
).toString();
} catch (e) { out = e.stdout?.toString() ?? ''; }
const found = out.split('\n').filter(Boolean);
if (found.length) {
throw new Error(`Special filesystem entries present (FIFO/socket/device); remove before analyze:\n${found.slice(0,20).join('\n')}`);
}
}
// assertNoSpecialFiles(process.cwd()); Prevention
- Do not leave named pipes or sockets in the project tree from test runs; clean them in afterEach/finally.
- Audit before analyze: `find . -type p -o -type s -o -type b -o -type c`.
- Avoid bind-mounting /dev entries into the analyzer container.
- Treat this error as a hard signal: the analyzer will not hash non-file/non-dir/non-symlink entries.
When it happens
Trigger: During the recursive scan, an entry's lstat is neither isDirectory(), isFile(), nor isSymbolicLink(). On POSIX this means a FIFO/socket/device node; on any platform it can also be an OS-specific type the Node fs layer reports as 'other'. The throw names the absolutePath.
Common situations: A developer created a named pipe or socket in the package tree (e.g. a leftover `mkfifo` from a test, an IPC socket file, a `/dev/` bind into the build container); a test harness that creates FIFOs for fixtures and left them in place; a container overlay that presents device nodes into the scanned root; on some network filesystems an entry type the local fs reports as non-standard.
Related errors
- Analyzer runtime payload directory is unavailable: ${absolut
- Analyzer runtime payload scan exceeded ${limits.runtimeEntri
- Analyzer runtime payload scan exceeded depth ${limits.runtim
- Analyzer runtime payload scan exceeded ${limits.runtimePaylo
- Analyzer runtime scan exceeded ${limits.runtimeBytes} bytes:
AI-assisted analysis of abhigyanpatwari/GitNexus@d540b00184 (2026-08-12).
Data as JSON: /api/errors/46fc63c97f95a4ac.
Report an issue: GitHub.