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

  1. Inspect and remove the special file: `ls -la <absolutePath>` then `rm <absolutePath>` if it is a leftover FIFO/socket.
  2. Find all special files in the tree: `find <packageRoot> -type p -o -type s -o -type b -o -type c` and clean them.
  3. Ensure the test/build step that created the FIFO cleans up in a finally block or `afterEach`.
  4. 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

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


AI-assisted analysis of abhigyanpatwari/GitNexus@d540b00184 (2026-08-12). Data as JSON: /api/errors/46fc63c97f95a4ac. Report an issue: GitHub.