Fission-AI/OpenSpec · error · Error

Spec inputs for '${proposed.update.id}' changed before archi

Error message

Spec inputs for '${proposed.update.id}' changed before archive could apply them. No files were changed; review the new content and rerun.

What it means

Error "Spec inputs for '${proposed.update.id}' changed before archive could apply them. No files were changed; review the new content and rerun." thrown in Fission-AI/OpenSpec.

Source

Thrown at src/core/archive.ts:1716

            .filter(
              ({ outcome, counts }) =>
                outcome === 'retire' ||
                (outcome === 'write' &&
                  counts.added + counts.modified + counts.removed + counts.renamed > 0)
            )
            .map(({ update, outcome, rebuilt }) => ({
              update,
              outcome: outcome as 'write' | 'retire',
              rebuilt,
            }));
          const hasRetirements = mutations.some(({ outcome }) => outcome === 'retire');
          await assertDistinctMutationTargets(mutations);
          for (const proposed of prepared) {
            if (
              (await fingerprintPath(proposed.update.source)) !== proposed.sourceFingerprint ||
              (await fingerprintPath(proposed.update.target)) !== proposed.targetFingerprint
            ) {
              throw new Error(
                `Spec inputs for '${proposed.update.id}' changed before archive could apply them. ` +
                  'No files were changed; review the new content and rerun.'
              );
            }
          }
          const specSnapshots = await captureSpecSnapshots(mutations);
          const specSnapshotsByTarget = new Map(
            specSnapshots.map((snapshot) => [snapshot.target, snapshot])
          );

          const mutationAttempts = new Set<string>();
          try {
            // All validations passed; write files and display counts
            const writeTotals = { added: 0, modified: 0, removed: 0, renamed: 0 };
            let wroteAny = false;
          for (const p of prepared) {
            // Deletions are deferred to the loop below.
            if (p.outcome !== 'write') continue;

View on GitHub (pinned to 6926ccb18a)

When it happens

Trigger: Thrown at src/core/archive.ts:1716 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/6c61c96a16ca94e2. Report an issue: GitHub.