stablyai/orca · error
${tag} does not contain ${name}
Error message
${tag} does not contain ${name} What it means
materializePackage() runs 'git ls-tree -r -z <tag> -- skills/<name>' to enumerate the historical skill's files at that tag. If the command returns zero entries, the tag's tree has no path under skills/<name>, so there is nothing to check out for the round-trip.
Source
Thrown at config/scripts/verify-skill-update-roundtrip.mjs:83
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}`)
}
async function materializePackage(name, tag, destination) {
const prefix = `skills/${name}/`
const entries = execFileSync('git', ['ls-tree', '-r', '-z', tag, '--', `skills/${name}`])
.toString('utf8')
.split('\0')
.filter(Boolean)
if (entries.length === 0) {
throw new Error(`${tag} does not contain ${name}`)
}
for (const entry of entries) {
const match = /^(\d+) (\w+) ([a-f0-9]+)\t(.+)$/.exec(entry)
if (!match || match[2] !== 'blob') {
throw new Error(`Unsupported historical tree entry: ${entry}`)
}
const relativePath = match[4].slice(prefix.length)
const destinationPath = path.join(destination, ...relativePath.split('/'))
await mkdir(path.dirname(destinationPath), { recursive: true })
await writeFile(destinationPath, execFileSync('git', ['cat-file', 'blob', match[3]]))
if (process.platform !== 'win32' && match[1] === '100755') {
await chmod(destinationPath, 0o755)
}
}
}
async function seedPlacement(name, tag) {
const canonical = path.join(home, '.agents', 'skills', name)View on GitHub (pinned to 1136503c6a)
Solutions
- Run 'git ls-tree -r <tag> -- skills/<name>' manually to confirm the skill exists at that path in that tag.
- If the skill moved, point materializePackage at the historical path or pick a tag where the skill lived at the current path.
- Ensure the script runs in a full (non-shallow) checkout or fetch the tag depth first.
- Verify the script's working directory is the repo root before invoking git.
Defensive patterns
Strategy: validation
Validate before calling
// Pre-check the tree before delegating to materializePackage:
import { execFileSync } from 'node:child_process'
function tagHasSkill(name, tag) {
const out = execFileSync('git', ['ls-tree', '-r', '--name-only', tag, '--', `skills/${name}`], { encoding: 'utf8' })
return out.trim().length > 0
}
if (!tagHasSkill(targetName, historicalTag)) {
throw new Error(`Tag ${historicalTag} lacks skills/${targetName}; pick a different baseline tag`)
} Prevention
- Run the round-trip only in a full (unshallow) checkout, or fetch the tag with sufficient depth.
- Pin the historical baseline tag to one known to contain the skill at the current path.
- When relocating a skill, retire the old path's round-trip and add a new one for the new path.
When it happens
Trigger: The skill did not exist at that tag under the expected path skills/<name>; the skill lived at a different path historically; the tag string is wrong (typo, missing 'v'); git is running in a worktree or shallow clone that lacks the tag's tree.
Common situations: Skill was relocated between releases (e.g. skills/foo moved to skills/bar); shallow CI clone that doesn't have the historical tag object; tag ref typo; running the script from a directory that isn't the repo root so git resolves paths against the wrong tree.
Related errors
- Unsupported historical tree entry: ${entry}
- Current manifest is missing ${name}
- No historical released snapshot is available for ${name}
- Failed to load commit history
- ${name} must be a positive integer, received ${value}
AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12).
Data as JSON: /api/errors/e488fb8d6bf96b0e.
Report an issue: GitHub.