{"record":{"id":"00d2495a6fdc1428","repo":"Fission-AI/OpenSpec","slug":"the-delta-for-proposed-update-id-changed-befo","errorCode":null,"errorMessage":"The delta for '${proposed.update.id}' changed before the change could be archived.","messagePattern":"The delta for '(.+?)' changed before the change could be archived\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"src/core/archive.ts","lineNumber":1910,"sourceCode":"            specsUpdated = wroteAny;\n            totals = writeTotals;\n            if (!json) {\n            console.log(\n              `Totals: + ${writeTotals.added}, ~ ${writeTotals.modified}, - ${writeTotals.removed}, → ${writeTotals.renamed}`\n            );\n            console.log(\n              wroteAny\n                ? 'Specs updated successfully.'\n                : 'Specs already in sync; no files changed.'\n            );\n            }\n\n            for (const proposed of prepared) {\n              if (\n                (await fingerprintPath(proposed.update.source)) !==\n                proposed.sourceFingerprint\n              ) {\n                throw new Error(\n                  `The delta for '${proposed.update.id}' changed before the change could be archived.`\n                );\n              }\n            }\n            if (hasRetirements) {\n              await assertRetirementAuthorization(\n                changeDir,\n                retirementAuthorizationFingerprint!\n              );\n            }\n            const verifyArchivedDeltas = async (\n              stagedSource?: string\n            ): Promise<void> => {\n              if (hasRetirements) {\n                await assertRetirementAuthorization(\n                  archivePath,\n                  retirementAuthorizationFingerprint!,\n                  // Archived changes are nested one level deeper than active","sourceCodeStart":1892,"sourceCodeEnd":1928,"githubUrl":"https://github.com/Fission-AI/OpenSpec/blob/6926ccb18afa4ff621112813e9968334576ee11a/src/core/archive.ts#L1892-L1928","documentation":"Final consistency guard: after specs are written but before the change directory is moved into the archive, each delta's source fingerprint is re-checked against the prepared value. Fires when a delta file changed between the write phase and the final archive move, so the archived copy would not represent the change as validated; the archive aborts.","triggerScenarios":"Thrown at src/core/archive.ts:1910 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Re-run the archive once deltas stop changing","Find and stop the process editing the change directory"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"6926ccb18afa4ff621112813e9968334576ee11a","analyzedAt":"2026-08-25T12:29:45.729Z","contentChangedAt":"2026-08-25T12:29:45.729Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}