{"record":{"id":"c2740b9e74a290f6","repo":"Fission-AI/OpenSpec","slug":"specname-plan-removed-length-removed-requi","errorCode":null,"errorMessage":"${specName} - ${plan.removed.length} REMOVED requirement(s) ignored for new spec (nothing to remove).","messagePattern":"(.+?) - (.+?) REMOVED requirement\\(s\\) ignored for new spec \\(nothing to remove\\)\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/core/specs-apply.ts","lineNumber":333,"sourceCode":"      const existingPurpose = extractPurposeSection(targetContent);\n      if (existingPurpose && existingPurpose !== deltaPurpose) {\n        warn(\n          `${specName} - delta Purpose ignored; ${specName} already has one. ` +\n            `Edit ${update.target} directly to change it.`\n        );\n      }\n    }\n  } catch {\n    // Target spec does not exist; MODIFIED and RENAMED are not allowed for new specs\n    // REMOVED will be ignored with a warning since there's nothing to remove\n    if (plan.modified.length > 0 || plan.renamed.length > 0) {\n      throw new Error(\n        `${specName}: target spec does not exist; only ADDED requirements are allowed for new specs. MODIFIED and RENAMED operations require an existing spec.`\n      );\n    }\n    // Warn about REMOVED requirements being ignored for new specs\n    if (plan.removed.length > 0) {\n      warn(\n        `${specName} - ${plan.removed.length} REMOVED requirement(s) ignored for new spec (nothing to remove).`\n      );\n    }\n    isNewSpec = true;\n    targetContent = buildSpecSkeleton(specName, changeName, deltaPurpose);\n    const overview = deltaPurpose ? readableOverview(targetContent, specName) : null;\n    if (deltaPurpose && !overview) {\n      // Keep the placeholder rather than turning this into a failure: these\n      // deltas archived cleanly before the Purpose carry-over existed.\n      targetContent = buildSpecSkeleton(specName, changeName);\n      warn(\n        `${specName} - delta Purpose ignored (it would leave the new spec unreadable); wrote the placeholder Purpose instead.`\n      );\n    } else if (overview && overview.length < MIN_PURPOSE_LENGTH) {\n      // The placeholder always cleared this threshold, so a carried Purpose is\n      // the first way archive can leave a spec that `validate --strict` fails.\n      // Measured on the parsed overview, which is what the validator reads.\n      warn(","sourceCodeStart":315,"sourceCodeEnd":351,"githubUrl":"https://github.com/Fission-AI/OpenSpec/blob/6926ccb18afa4ff621112813e9968334576ee11a/src/core/specs-apply.ts#L315-L351","documentation":"Error \"${specName} - ${plan.removed.length} REMOVED requirement(s) ignored for new spec (nothing to remove).\" thrown in Fission-AI/OpenSpec.","triggerScenarios":"Thrown at src/core/specs-apply.ts:333 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"}