{"record":{"id":"46fc63c97f95a4ac","repo":"abhigyanpatwari/GitNexus","slug":"unsupported-analyzer-runtime-payload-entry-abso","errorCode":null,"errorMessage":"Unsupported analyzer runtime payload entry: ${absolutePath}","messagePattern":"Unsupported analyzer runtime payload entry: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"gitnexus/src/core/analyzer-identity.ts","lineNumber":1414,"sourceCode":"        budget.artifacts += 1;\n        if (budget.artifacts > limits.runtimePayloads) {\n          throw new Error(\n            `Analyzer runtime payload scan exceeded ${limits.runtimePayloads} payloads: ${root}`,\n          );\n        }\n        if (budget.bytes + payloadBytes > limits.runtimeBytes) {\n          throw new Error(\n            `Analyzer runtime scan exceeded ${limits.runtimeBytes} bytes: ${absolutePath}`,\n          );\n        }\n        budget.bytes += payloadBytes;\n        artifacts.push({\n          absolutePath,\n          canonicalPath: `${canonicalPrefix}/${relativePath}`,\n          kind: stat.isSymbolicLink() ? 'symlink' : 'file',\n        });\n      } else if (!stat.isFile() && !stat.isSymbolicLink()) {\n        throw new Error(`Unsupported analyzer runtime payload entry: ${absolutePath}`);\n      }\n    }\n  }\n  return artifacts;\n}\n\nfunction collectVendoredGrammarInputs(\n  packageRoot: string,\n  directoryGuards: Map<string, DependencyDirectoryGuard>,\n  options: AnalyzerIdentityResolveOptions,\n  budget: RuntimeArtifactScanBudget,\n  limits: AnalyzerIdentityTraversalLimits,\n): {\n  manifests: DependencyInputs['vendoredManifests'];\n  artifacts: RuntimeArtifact[];\n} {\n  const vendorRoot = path.join(packageRoot, 'vendor');\n  if (!existsSync(vendorRoot) || !lstatSync(vendorRoot).isDirectory()) {","sourceCodeStart":1396,"sourceCodeEnd":1432,"githubUrl":"https://github.com/abhigyanpatwari/GitNexus/blob/52924ef12c2290ceee4612526a828ec4cdf2047f/gitnexus/src/core/analyzer-identity.ts#L1396-L1432","documentation":"During the runtime payload walk, an entry must be a regular file, a symbolic link, or a directory; anything else (FIFO, socket, device node, or a stat result reporting none of these kinds) is rejected with this error naming the offending absolute path. The hasher refuses to include or skip exotic filesystem entries because they cannot be hashed deterministically and could hide mutation, so identity computation fails closed.","triggerScenarios":"resolveAnalyzerRunnerIdentity() walking the analyzer package/build trees encounters a directory entry where !stat.isFile() && !stat.isSymbolicLink() && the entry was not handled as a directory earlier — e.g. mkfifo pipes, unix sockets created by a running server inside the tree, /dev-style special files bind-mounted in containers, or broken stat kinds on exotic filesystems.","commonSituations":"Running `gitnexus serve` or a dev watcher whose working directories sit inside the analyzed package tree and create socket/pid/named-pipe files; Docker volumes with special device nodes; WSL or network filesystems returning unusual d_type values.","solutions":["Remove the special file named in the message: rm <absolutePath> (verify it is not an active service socket first — stop the process that owns it).","Move runtime state (sockets, pipes, caches) out of the gitnexus package/build tree, e.g. point TMPDIR and serve working dirs elsewhere.","If it recurs from a container mount, re-run the analysis on a plain local filesystem path instead of the special mount.","Re-run analyze after cleanup to confirm the walk completes."],"exampleFix":"# before: serve creates a socket inside the package tree\n$ gitnexus serve &   # writes gitnexus.sock under package root\n$ npx gitnexus analyze\n# Unsupported analyzer runtime payload entry: /.../gitnexus.sock\n\n# after: keep runtime sockets out of the scanned tree\n$ gitnexus serve --workdir /tmp/gitnexus-serve &\nnpx gitnexus analyze","handlingStrategy":"validation","validationCode":"// Pre-flight: reject special files in the trees you control before analyze:\nimport { readdirSync, statSync } from 'node:fs';\nimport { join } from 'node:path';\nfunction findNonRegularEntries(root: string): string[] {\n  const bad: string[] = [];\n  for (const entry of readdirSync(root, { withFileTypes: true })) {\n    const p = join(root, entry.name);\n    const s = statSync(p); // throws on broken symlink; wrap if needed\n    if (!s.isFile() && !s.isSymbolicLink() && !s.isDirectory()) bad.push(p);\n    else if (s.isDirectory()) bad.push(...findNonRegularEntries(p));\n  }\n  return bad;\n}","typeGuard":null,"tryCatchPattern":"try {\n  await analyze({ repo: '.' });\n} catch (err) {\n  if (err instanceof Error && err.message.startsWith('Unsupported analyzer runtime payload entry:')) {\n    const path = err.message.slice('Unsupported analyzer runtime payload entry: '.length);\n    await fs.rm(path, { force: true }); // after confirming it is not an active socket\n    return analyze({ repo: '.' });\n  }\n  throw err;\n}","preventionTips":["Keep long-running services (serve, watchers) from creating sockets/pipes inside the analyzer package tree.","Set TMPDIR and runtime state dirs outside the scanned installation.","Avoid analyzing trees on exotic mounts that synthesize special device nodes.","Treat recurrence as a signal a process is actively writing into the install."],"tags":["analyzer-identity","filesystem","special-files","validation"],"backgroundTag":"unsupported-filesystem-entry","analyzedSha":"52924ef12c2290ceee4612526a828ec4cdf2047f","analyzedAt":"2026-08-20T23:29:22.980Z","contentChangedAt":"2026-08-20T23:29:22.980Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}