stablyai/orca · error

No historical released snapshot is available for ${name}

Error message

No historical released snapshot is available for ${name}

What it means

historicalRelease() walks releaseMapping.releases in reverse (newest first) looking for the most recent release whose skills[name] revision is a number strictly less than the current skill's releaseRevision, and that has a matching snapshot in snapshot-registry.json. It throws when no prior release shipped an older revision of that skill with a preserved snapshot — i.e. there is no valid previous version to round-trip the update from.

Source

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

  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}`)
}

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('/'))

View on GitHub (pinned to 1136503c6a)

Solutions

  1. Confirm the skill has shipped in at least one prior release by inspecting release-mapping.json releases[].skills[name].
  2. Verify snapshot-registry.json contains an entry for that skill at the older releaseRevision.
  3. If this is a new skill, add a prior snapshot or skip the round-trip test until a release has shipped it.
  4. Regenerate the snapshot and release-mapping artifacts with the documented tooling to restore consistency.
Defensive patterns

Strategy: validation

Validate before calling

// Before the round-trip, confirm a historical snapshot exists:
function hasHistorical(name) {
  const current = currentSkill(name)
  return releaseMapping.releases.some((r) => {
    const rev = r.skills[name]
    return typeof rev === 'number' && rev < current.releaseRevision &&
      registry.skills[name]?.some((s) => s.releaseRevision === rev)
  })
}
if (!hasHistorical(targetName)) {
  console.warn(`Skipping round-trip: no historical snapshot for ${targetName}`)
  process.exit(0)
}

Prevention

When it happens

Trigger: A brand-new skill with no prior release history; the snapshot registry missing the historical revision entry; release-mapping.json malformed or lacking releases entries that reference this skill; all prior releases reference the same or higher revision than current.

Common situations: Adding the first skill to the update system before any release ships it; regenerating snapshot-registry.json and dropping older revisions; release-mapping.json not updated after a release; skill's releaseRevision was decremented or left unchanged across releases.

Related errors


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