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
- Open resources/skills/current-manifest.json and confirm the skill name is present in the skills array.
- If the skill was renamed, update the targetName/controlName constants at the top of the script to match the new name.
- Re-run manifest generation (whatever produces current-manifest.json) to ensure the skill is declared.
- 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
- Keep the test's targetName/controlName constants next to the manifest and update them together when renaming a skill.
- Run a manifest schema check (type-guard above) at script start to fail with a clearer message.
- Regenerate the manifest with the same tooling that the release pipeline uses.
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
- No historical released snapshot is available for ${name}
- ${tag} does not contain ${name}
- Unsupported historical tree entry: ${entry}
- Renderer manifest is missing entry: ${key}
- Renderer entry ${sourceEntry} executes entry ${dependency}
AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12).
Data as JSON: /api/errors/c24ef1cc1bb80e1c.
Report an issue: GitHub.