{"record":{"id":"fc3877c7845337ad","repo":"Fission-AI/OpenSpec","slug":"the-active-delta-for-proposed-update-id-chang","errorCode":null,"errorMessage":"The active delta for '${proposed.update.id}' changed during the fallback copy.","messagePattern":"The active delta for '(.+?)' changed during the fallback copy\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"src/core/archive.ts","lineNumber":1963,"sourceCode":"                );\n                if (\n                  (await fingerprintPortableContent(archivedSource)) !==\n                  proposed.sourceContentFingerprint\n                ) {\n                  throw new Error(\n                    `The archived delta for '${proposed.update.id}' changed during the final move.`\n                  );\n                }\n                if (stagedSource) {\n                  const stagedDelta = path.join(\n                    stagedSource,\n                    path.relative(changeDir, proposed.update.source)\n                  );\n                  if (\n                    (await fingerprintPortableContent(stagedDelta)) !==\n                    proposed.sourceContentFingerprint\n                  ) {\n                    throw new Error(\n                      `The active delta for '${proposed.update.id}' changed during the fallback copy.`\n                    );\n                  }\n                }\n              }\n            };\n            await moveDirectory(changeDir, archivePath, {\n              verifyCopiedDestination: verifyArchivedDeltas,\n            });\n            changeArchived = true;\n            await verifyArchivedDeltas();\n            await finalizeRetirementBackups(specSnapshots, mainSpecsDir);\n          } catch (error) {\n            if (error instanceof MoveDestinationRetainedError) {\n              changeArchived = true;\n              try {\n                await finalizeRetirementBackups(specSnapshots, mainSpecsDir);\n              } catch (cleanupError) {","sourceCodeStart":1945,"sourceCodeEnd":1981,"githubUrl":"https://github.com/Fission-AI/OpenSpec/blob/6926ccb18afa4ff621112813e9968334576ee11a/src/core/archive.ts#L1945-L1981","documentation":"In the fallback copy path (when the archive move retained the destination), verifies the still-active (pre-move) copy of each delta against its prepared content fingerprint. Fires when the active delta changed during the copy, meaning the change directory is no longer internally consistent with what was archived; flags a failed or unsafe fallback.","triggerScenarios":"Thrown at src/core/archive.ts:1963 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Stop concurrent writes to the change directory and re-run","Remove any leftover staged .openspec-move-* directory before retrying"],"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"}