{"record":{"id":"6c61c96a16ca94e2","repo":"Fission-AI/OpenSpec","slug":"spec-inputs-for-proposed-update-id-changed-be","errorCode":null,"errorMessage":"Spec inputs for '${proposed.update.id}' changed before archive could apply them. No files were changed; review the new content and rerun.","messagePattern":"Spec inputs for '(.+?)' changed before archive could apply them\\. No files were changed; review the new content and rerun\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"src/core/archive.ts","lineNumber":1716,"sourceCode":"            .filter(\n              ({ outcome, counts }) =>\n                outcome === 'retire' ||\n                (outcome === 'write' &&\n                  counts.added + counts.modified + counts.removed + counts.renamed > 0)\n            )\n            .map(({ update, outcome, rebuilt }) => ({\n              update,\n              outcome: outcome as 'write' | 'retire',\n              rebuilt,\n            }));\n          const hasRetirements = mutations.some(({ outcome }) => outcome === 'retire');\n          await assertDistinctMutationTargets(mutations);\n          for (const proposed of prepared) {\n            if (\n              (await fingerprintPath(proposed.update.source)) !== proposed.sourceFingerprint ||\n              (await fingerprintPath(proposed.update.target)) !== proposed.targetFingerprint\n            ) {\n              throw new Error(\n                `Spec inputs for '${proposed.update.id}' changed before archive could apply them. ` +\n                  'No files were changed; review the new content and rerun.'\n              );\n            }\n          }\n          const specSnapshots = await captureSpecSnapshots(mutations);\n          const specSnapshotsByTarget = new Map(\n            specSnapshots.map((snapshot) => [snapshot.target, snapshot])\n          );\n\n          const mutationAttempts = new Set<string>();\n          try {\n            // All validations passed; write files and display counts\n            const writeTotals = { added: 0, modified: 0, removed: 0, renamed: 0 };\n            let wroteAny = false;\n          for (const p of prepared) {\n            // Deletions are deferred to the loop below.\n            if (p.outcome !== 'write') continue;","sourceCodeStart":1698,"sourceCodeEnd":1734,"githubUrl":"https://github.com/Fission-AI/OpenSpec/blob/6926ccb18afa4ff621112813e9968334576ee11a/src/core/archive.ts#L1698-L1734","documentation":"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.","triggerScenarios":"Thrown at src/core/archive.ts:1716 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"6926ccb18afa4ff621112813e9968334576ee11a","analyzedAt":"2026-08-25T12:29:45.729Z","schemaVersion":2},"datasetVersion":"2026-08-25T16:17:27.014Z"}