Fission-AI/OpenSpec · error · Error

Archive rollback would overwrite a concurrent change at ${sn

Error message

Archive rollback would overwrite a concurrent change at ${snapshot.target}. The displaced spec was retained at ${snapshot.displacedPath}.

What it means

Error "Archive rollback would overwrite a concurrent change at ${snapshot.target}. The displaced spec was retained at ${snapshot.displacedPath}." thrown in Fission-AI/OpenSpec.

Source

Thrown at src/core/archive.ts:911

            outcome,
            ...(outcome === 'write' ? { expectedContent: Buffer.from(rebuilt) } : {}),
          };
        }
        throw error;
      }
    })
  );
}

async function restoreSpecSnapshots(snapshots: SpecSnapshot[]): Promise<void> {
  const errors: Error[] = [];
  for (const snapshot of [...snapshots].reverse()) {
    try {
      if (snapshot.outcome === 'retire') {
        if (snapshot.displacedPath !== undefined) {
          try {
            await fs.lstat(snapshot.target);
            throw new Error(
              `Archive rollback would overwrite a concurrent change at ${snapshot.target}. ` +
                `The displaced spec was retained at ${snapshot.displacedPath}.`
            );
          } catch (error) {
            if ((error as NodeJS.ErrnoException).code !== 'ENOENT') throw error;
          }
          await fs.rename(snapshot.displacedPath, snapshot.target);
          snapshot.displacedPath = undefined;
          continue;
        }
        try {
          const current = await fs.lstat(snapshot.target);
          const unchangedSymlink =
            snapshot.symlink !== undefined &&
            current.isSymbolicLink() &&
            (await fs.readlink(snapshot.target)) === snapshot.symlink;
          // Re-read to confirm the target still holds the snapshot content; a
          // mismatch means a concurrent edit, and rollback throws below rather

View on GitHub (pinned to 6926ccb18a)

When it happens

Trigger: Thrown at src/core/archive.ts:911 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/69f7126f2afd48c6. Report an issue: GitHub.