Fission-AI/OpenSpec · error · ArchiveBlockedError
archive_spec_validation_failed
archive_spec_validation_failed
Error message
Rebuilt spec for '${specName}' failed validation. No files were changed. What it means
Error "Rebuilt spec for '${specName}' failed validation. No files were changed." thrown in Fission-AI/OpenSpec.
Source
Thrown at src/core/archive.ts:1666
: '')
: undefined;
// The marker was set and retirement was still refused. Saying
// nothing left the author who did exactly what the docs asked
// back in the original dead end with no signal that their
// marker had been read at all.
// The author asked for a retirement and got the bare
// validation abort. Name the lines that stood in the way.
const refusalReason =
retirementDeclared &&
p.unaccountedContent.length > 0 &&
(await isRetirableSpec(specName, p.rebuilt))
? `'${specName}' declares retire_capabilities, but the spec holds content the merge ` +
`cannot safely account for and deleting the file would take with it: ` +
`${describeUnaccountedContent(p.unaccountedContent)}. ` +
'Move it into `## Purpose` or a canonical requirement, or delete the spec by hand.'
: undefined;
if (json) {
throw new ArchiveBlockedError(
'archive_spec_validation_failed',
`Rebuilt spec for '${specName}' failed validation. No files were changed.`,
refusalReason ??
retirementHint ??
blockedRetirementHint ??
`Run ${withStoreFlag(root, `openspec validate ${specName}`)} after fixing the change deltas.`
);
}
console.log(chalk.red(`\nValidation errors in rebuilt spec for ${specName} (will not write changes):`));
for (const issue of report.issues) {
if (issue.level === 'ERROR') console.log(chalk.red(` ✗ ${issue.message}`));
else if (issue.level === 'WARNING') console.log(chalk.yellow(` ⚠ ${issue.message}`));
}
if (retirementHint) console.log(chalk.yellow(` → ${retirementHint}`));
if (blockedRetirementHint) console.log(chalk.yellow(` → ${blockedRetirementHint}`));
if (refusalReason) console.log(chalk.yellow(` → ${refusalReason}`));
console.log('Aborted. No files were changed.');
process.exitCode = 1;View on GitHub (pinned to 6926ccb18a)
When it happens
Trigger: Thrown at src/core/archive.ts:1666 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Fission-AI/OpenSpec@6926ccb18a (2026-08-25).
Data as JSON: /api/errors/0283dbaba3dea96d.
Report an issue: GitHub.