stablyai/orca · error

Current manifest is missing ${name}

Error message

Current manifest is missing ${name}

What it means

currentSkill() looks up a skill by name in the parsed resources/skills/current-manifest.json skills array. It throws when the named skill is absent — meaning the manifest the test is validating doesn't declare the skill the test expects to exercise.

Source

Thrown at config/scripts/verify-skill-update-roundtrip.mjs:56

  throw new Error(
    'Usage: verify-skill-update-roundtrip.mjs --cli=<version> --autocrlf=true|false --shape=symlink|copy --source=<owner/repo> --ref=<git-ref>'
  )
}

const sandbox = await mkdtemp(path.join(tmpdir(), 'orca-skill-update-roundtrip-'))
const home = path.join(sandbox, 'home')
const stateHome = path.join(home, '.state')
const fakeBin = path.join(sandbox, 'bin')
const targetName = 'orca-cli'
const controlName = 'orchestration'
const manifest = JSON.parse(await readFile('resources/skills/current-manifest.json', 'utf8'))
const registry = JSON.parse(await readFile('resources/skills/snapshot-registry.json', 'utf8'))
const releaseMapping = JSON.parse(await readFile('resources/skills/release-mapping.json', 'utf8'))

function currentSkill(name) {
  const skill = manifest.skills.find((entry) => entry.name === name)
  if (!skill) {
    throw new Error(`Current manifest is missing ${name}`)
  }
  return skill
}

function historicalRelease(name) {
  const current = currentSkill(name)
  for (const release of releaseMapping.releases.toReversed()) {
    const revision = release.skills[name]
    if (typeof revision !== 'number' || revision >= current.releaseRevision) {
      continue
    }
    const snapshot = registry.skills[name]?.find((entry) => entry.releaseRevision === revision)
    if (snapshot) {
      return { tag: `v${release.appVersion}`, snapshot }
    }
  }
  throw new Error(`No historical released snapshot is available for ${name}`)
}

View on GitHub (pinned to 1136503c6a)

Solutions

  1. Open resources/skills/current-manifest.json and confirm the skill name is present in the skills array.
  2. If the skill was renamed, update the targetName/controlName constants at the top of the script to match the new name.
  3. Re-run manifest generation (whatever produces current-manifest.json) to ensure the skill is declared.
  4. Check that you are on a branch whose manifest and script are from the same commit.
Defensive patterns

Strategy: type-guard

Type guard

// Narrow the manifest shape before relying on it:
function isSkillManifest(value) {
  return (
    value !== null &&
    typeof value === 'object' &&
    Array.isArray(value.skills) &&
    value.skills.every((s) => s && typeof s.name === 'string' && typeof s.packageDigest === 'string')
  )
}
if (!isSkillManifest(manifest)) {
  throw new Error('current-manifest.json is not a valid skill manifest')
}

Prevention

When it happens

Trigger: Renaming or removing a skill in current-manifest.json without updating the test's targetName/controlName constants; running the script against an older checkout whose manifest predates the skill; typo in the skill name passed to currentSkill().

Common situations: Skill was renamed in a refactor; manifest was regenerated and a skill entry dropped; test constants point at a skill that lives in a different manifest; branch divergence where the manifest and the test were not updated together.

Related errors


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