{"record":{"id":"450090dd58eac14c","repo":"Fission-AI/OpenSpec","slug":"the-metadata-filename-retirement-authorization-450090","errorCode":null,"errorMessage":"The ${METADATA_FILENAME} retirement authorization changed while archive was awaiting confirmation.","messagePattern":"The (.+?) retirement authorization changed while archive was awaiting confirmation\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"src/core/archive.ts","lineNumber":1524,"sourceCode":"          );\n          if (!shouldUpdateSpecs) {\n            console.log('Skipping spec updates. Proceeding with archive.');\n          }\n        }\n\n        if (shouldUpdateSpecs) {\n          // The confirmation may stay open while another editor changes a main\n          // spec. Never apply the proposal built before the prompt to a newer\n          // baseline: in particular, a stale retirement decision must not\n          // delete a requirement added while the prompt was waiting.\n          if (prepareError === undefined) {\n            try {\n              const currentRetirementMarker = readRetireCapabilitiesMarker(changeDir);\n              if (\n                currentRetirementMarker.declared !== retirementMarker.declared ||\n                currentRetirementMarker.invalidReason !== retirementMarker.invalidReason\n              ) {\n                throw new Error(\n                  `The ${METADATA_FILENAME} retirement authorization changed while archive was awaiting confirmation.`\n                );\n              }\n              const currentUpdates = await findSpecUpdates(changeDir, mainSpecsDir);\n              const currentById = new Map(currentUpdates.map((update) => [update.id, update]));\n              if (currentUpdates.length !== prepared.length) {\n                throw new Error('The change specs changed while archive was awaiting confirmation.');\n              }\n              for (const proposed of prepared) {\n                const current = currentById.get(proposed.update.id);\n                if (!current) {\n                  throw new Error(\n                    `The delta for '${proposed.update.id}' changed while archive was awaiting confirmation.`\n                  );\n                }\n                if (\n                  (await fingerprintPath(current.source)) !== proposed.sourceFingerprint ||\n                  (await fingerprintPath(current.target)) !== proposed.targetFingerprint","sourceCodeStart":1506,"sourceCodeEnd":1542,"githubUrl":"https://github.com/Fission-AI/OpenSpec/blob/6926ccb18afa4ff621112813e9968334576ee11a/src/core/archive.ts#L1506-L1542","documentation":"Error \"The ${METADATA_FILENAME} retirement authorization changed while archive was awaiting confirmation.\" thrown in Fission-AI/OpenSpec.","triggerScenarios":"Thrown at src/core/archive.ts:1524 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"}