stablyai/orca · error · Error
Generated skill artifacts are stale:\n${stale.map((filePath)
Error message
Generated skill artifacts are stale:\n${stale.map((filePath) => path.relative(REPO_ROOT, filePath)).join('\n')}\nRun pnpm generate:skill-bundle-manifest. What it means
Thrown by verifyArtifacts when one or more committed skill artifacts (current-manifest.json, snapshot-registry.json, release-mapping.json) do not byte-match the freshly regenerated values, or are unreadable. The error lists the stale file paths relative to REPO_ROOT and names the regeneration command (generate-skill-bundle-manifest.mjs:620-645). This is a lint/CI guard ensuring generated artifacts stay in sync with the skills/ source tree.
Source
Thrown at config/scripts/generate-skill-bundle-manifest.mjs:639
const expected = [
[CURRENT_MANIFEST_PATH, artifacts.currentManifest, null],
[SNAPSHOT_REGISTRY_PATH, artifacts.snapshotRegistry, null],
[RELEASE_MAPPING_PATH, artifacts.releaseMapping, isToleratedReleaseMappingPrefix]
].filter(([filePath]) => paths.includes(filePath))
const stale = []
for (const [filePath, value, tolerated] of expected) {
try {
await access(filePath, constants.R_OK)
const committedText = await readFile(filePath, 'utf8')
if (committedText !== serialized(value) && !tolerated?.(committedText, artifacts)) {
stale.push(filePath)
}
} catch {
stale.push(filePath)
}
}
if (stale.length > 0) {
throw new Error(
`Generated skill artifacts are stale:\n${stale
.map((filePath) => path.relative(REPO_ROOT, filePath))
.join('\n')}\nRun pnpm generate:skill-bundle-manifest.`
)
}
}
async function main() {
const argv = process.argv.slice(2)
const rebuildFromTags = argv.includes('--rebuild-from-tags')
const releaseIndex = argv.indexOf('--release')
const releaseVersion = releaseIndex !== -1 ? argv[releaseIndex + 1] : null
if (releaseIndex !== -1 && !releaseVersion) {
throw new Error('--release requires a version argument, e.g. --release 1.4.160')
}
const committedRegistry = await readCommittedRegistry()
const committedMapping = await readCommittedReleaseMapping()View on GitHub (pinned to 1136503c6a)
Solutions
- Run `pnpm generate:skill-bundle-manifest` locally and commit the regenerated artifact files.
- Inspect the listed stale paths to see which artifact diverged; diff it against the regenerated version to confirm the change is expected.
- If the change is from a generator-logic refactor, ensure the refactor is intentional and update any relevant tests, then regenerate.
Example fix
# before: CI fails with 'Generated skill artifacts are stale' git commit -am "update skill content" # forgot to regenerate # after pnpm generate:skill-bundle-manifest git add resources/skills/*.json git commit -m "chore(skills): regenerate bundle manifest"
Defensive patterns
Strategy: validation
Validate before calling
// Run the generator before committing skill changes: // pnpm generate:skill-bundle-manifest // then stage resources/skills/*.json
Try / catch
try {
await import('./generate-skill-bundle-manifest.mjs')
} catch (error) {
if (/Generated skill artifacts are stale/.test(error.message)) {
// run pnpm generate:skill-bundle-manifest, re-stage, and re-run
} else throw error
} Prevention
- Run `pnpm generate:skill-bundle-manifest` as a pre-commit hook whenever files under skills/ change.
- Add the verify step to CI so drift is caught before merge.
- After any generator-logic refactor, regenerate all artifacts in the same commit.
When it happens
Trigger: Editing, adding, or deleting a file under skills/ without re-running the generator; a release-mapping row that was appended at cut but not committed; a schema bump or generator-logic change that alters serialization; a missing artifact file (access/R_OK fails).
Common situations: A PR that touches skill content but the author forgot `pnpm generate:skill-bundle-manifest`; CI lint catching drift after a merge; a generator refactor that changed key ordering or whitespace in JSON output; a rebase that dropped the regeneration commit.
Related errors
- invalid_environment
- [plain-node-entry-guard] daemon-entry.js was killed by ${res
- --release requires a version argument, e.g. --release 1.4.16
- [electron-package] ${command.label} failed with status ${res
- Mac release build workflow ${completedRun.html_url ?? comple
AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12).
Data as JSON: /api/errors/f05207d89bfdbfb7.
Report an issue: GitHub.