stablyai/orca · error · Error

Renderer manifest is missing entry: ${key}

Error message

Renderer manifest is missing entry: ${key}

What it means

assertEntryIsolation walks each Vite entry's import/dynamicImport graph and requires every referenced manifest key to exist and be an object. A missing entry means the manifest is internally inconsistent — an import points at a chunk key the build did not emit. This is separate from 159 because it fires during the isolation check, before any file staging.

Source

Thrown at config/scripts/project-renderer-web-client.mjs:40

function assertEntryIsolation() {
  const entryKeys = new Set(
    Object.entries(manifest)
      .filter(([, entry]) => entry?.isEntry === true)
      .map(([key]) => key)
  )

  for (const sourceEntry of entryKeys) {
    const visited = new Set()
    const pending = [sourceEntry]
    while (pending.length > 0) {
      const key = pending.pop()
      if (visited.has(key)) {
        continue
      }
      visited.add(key)
      const entry = manifest[key]
      if (!entry || typeof entry !== 'object') {
        throw new Error(`Renderer manifest is missing entry: ${key}`)
      }
      for (const dependency of [...(entry.imports ?? []), ...(entry.dynamicImports ?? [])]) {
        if (entryKeys.has(dependency) && dependency !== sourceEntry) {
          throw new Error(`Renderer entry ${sourceEntry} executes entry ${dependency}`)
        }
        pending.push(dependency)
      }
    }
  }
}

function addOutputPath(outputPath) {
  if (
    typeof outputPath !== 'string' ||
    outputPath.length === 0 ||
    outputPath.startsWith('/') ||
    /^[A-Za-z]:/.test(outputPath) ||
    outputPath.includes('\\') ||

View on GitHub (pinned to 1136503c6a)

Solutions

  1. Rebuild the renderer cleanly: remove out/renderer and rerun the Vite build before projecting
  2. Open out/renderer/.vite/manifest.json and confirm the dangling key K exists as a top-level entry
  3. Pin the Vite/Rollup version if an upgrade changed chunk naming
  4. If projecting against a hand-curated manifest, validate it with a schema check before this script
Defensive patterns

Strategy: validation

Validate before calling

function manifestHasAllKeys(manifest, keys) {
  for (const k of keys) {
    if (!manifest[k] || typeof manifest[k] !== 'object') {
      throw new Error(`manifest missing entry: ${k}`)
    }
  }
}

Type guard

function isManifestEntry(v) {
  return v && typeof v === 'object' && (typeof v.file === 'string' || Array.isArray(v.imports))
}

Prevention

When it happens

Trigger: manifest[sourceEntry].imports or .dynamicImports contains a key K, but manifest[K] is undefined or not an object. Happens with a partially-written manifest, a stale manifest from an aborted build, or a Vite version that emits import strings the walker does not expect.

Common situations: out/renderer/.vite/manifest.json left over from a previous build with different entry names; a build that crashed mid-write; manual edits to the manifest; or a Vite/Rollup upgrade that changed chunk naming so old import references dangle.

Related errors


AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12). Data as JSON: /api/errors/65dff7fb3bd25a61. Report an issue: GitHub.