Fission-AI/OpenSpec · error · Error
Change "${changeName}" not found at ${proposalPath}
Error message
Change "${changeName}" not found at ${proposalPath} What it means
Error "Change "${changeName}" not found at ${proposalPath}" thrown in Fission-AI/OpenSpec.
Source
Thrown at src/commands/change.ts:86
});
changeName = selected;
} else {
if (changes.length === 0) {
console.error('No change specified. No active changes found.');
} else {
console.error(`No change specified. Available IDs: ${changes.join(', ')}`);
}
console.error('Hint: use "openspec change list" to view available changes.');
process.exitCode = 1;
return;
}
}
const changeDir = path.join(changesPath, changeName);
const proposalPath = path.join(changeDir, 'proposal.md');
if (!isChangeDirectoryName(changesPath, changeDir)) {
throw new Error(`Change "${changeName}" not found at ${proposalPath}`);
}
try {
await fs.access(proposalPath);
} catch {
// A change can exist without a proposal: `openspec new change` scaffolds
// only .openspec.yaml, and a custom schema need not define a proposal
// artifact. Say which of the two cases this is instead of reporting a
// change that does exist as missing. A stray file under changes/ is not a
// change, and naming it one would point the user at a `status --change`
// call that cannot work.
const isChangeDirectory = await fs
.stat(changeDir)
.then((stats) => stats.isDirectory())
.catch(() => false);
if (isChangeDirectory) {
throw new Error(
`Change "${changeName}" has no proposal.md yet. ` +View on GitHub (pinned to 6926ccb18a)
When it happens
Trigger: Thrown at src/commands/change.ts:86 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/565cd020b1cd39c1.
Report an issue: GitHub.