{"record":{"id":"44fe888ab89439e3","repo":"vectordotdev/vector","slug":"fragment-s-have-a-deprecated-since-version-newer-than-the","errorCode":null,"errorMessage":"{} fragment(s) have a deprecated_since version newer than the next release ({}.{}). Update deprecated_since to {} or earlier.","messagePattern":"(.+?) fragment\\(s\\) have a deprecated_since version newer than the next release \\((.+?)\\.(.+?)\\)\\. Update deprecated_since to (.+?) or earlier\\.","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"vdev/src/commands/deprecation/check.rs","lineNumber":63,"sourceCode":"        // Reject any fragment with a deprecated_since newer than the next\n        // minor release. Skipped (with a warning) when the checkout has no\n        // release tags so shallow CI/source checkouts can still validate\n        // fragment frontmatter + generated JSON.\n        match git::latest_release_version() {\n            Ok(latest) => {\n                let next_minor = Version::new(latest.major, latest.minor + 1, 0);\n                let future: Vec<_> = entries\n                    .iter()\n                    .filter(|e| e.deprecated_since.0 > next_minor)\n                    .collect();\n                if !future.is_empty() {\n                    for e in &future {\n                        eprintln!(\n                            \"  future  {} (deprecated_since: {}, next release: {}.{})\",\n                            e.filename, e.deprecated_since, next_minor.major, next_minor.minor\n                        );\n                    }\n                    bail!(\n                        \"{} fragment(s) have a deprecated_since version newer than the next release ({}.{}). \\\n                         Update deprecated_since to {} or earlier.\",\n                        future.len(),\n                        next_minor.major,\n                        next_minor.minor,\n                        next_minor\n                    );\n                }\n            }\n            Err(e) => {\n                eprintln!(\n                    \"Warning: skipping future-version validation; could not determine latest release version: {e}\"\n                );\n            }\n        }\n\n        let on_disk = std::fs::read_to_string(&json_path).unwrap_or_default();\n        let expected = deprecation::rendered_json(&repo_root)?;","sourceCodeStart":45,"sourceCodeEnd":81,"githubUrl":"https://github.com/vectordotdev/vector/blob/bdb87aeaa4c4ff27c0ba643c1c77b21bf2ef4013/vdev/src/commands/deprecation/check.rs#L45-L81","documentation":"Thrown by `cargo vdev deprecation check` when one or more deprecation fragments declare a `deprecated_since` version that is newer than the computed next release minor version. The deprecation policy requires announcements to target the current or an earlier minor than the upcoming release.","triggerScenarios":"Any fragment in the deprecation directory has deprecated_since > next_minor (next release major.minor), producing a non-empty `future` list which triggers the bail after listing each offending fragment.","commonSituations":"Happens when an author writes deprecated_since = \"0.50.0\" while the next release is 0.49, or when a release slips and previously-valid fragments are now ahead of the next minor.","solutions":["Edit the listed fragment files and lower `deprecated_since` to the next release version or earlier.","If the version is correct, wait for the next minor release cycle before enacting.","Regenerate/verify the next-release computation (git::latest_release_version + minor+1) to confirm expectations.","Re-run `cargo vdev deprecation check` after edits."],"exampleFix":"# before (next release is 0.49)\ndeprecated_since = \"0.50.0\"\n# after\ndeprecated_since = \"0.49.0\"","handlingStrategy":"validation","validationCode":"let next = Version::new(latest.major, latest.minor + 1, 0);\nlet since: Version = fragment.deprecated_since.parse()?;\nif since > next { eprintln!(\"{}: lower deprecated_since to {} or earlier\", fragment.filename, next); }","typeGuard":"fn deprecated_since_is_current(since: &Version, next: &Version) -> bool { since <= next }","tryCatchPattern":"match result { Err(e) if e.to_string().contains(\"deprecated_since version newer than the next release\") => { eprintln!(\"Edit the listed fragments' deprecated_since field\"); } Err(e) => return Err(e), Ok(v) => v }","preventionTips":["Set deprecated_since to the current or next minor at authoring time","Re-validate fragments whenever the release train slips","Run `cargo vdev deprecation check` locally before pushing"],"tags":["deprecation","versioning","validation"],"backgroundTag":"value-out-of-range","analyzedSha":"bdb87aeaa4c4ff27c0ba643c1c77b21bf2ef4013","analyzedAt":"2026-09-16T02:53:35.741Z","contentChangedAt":"2026-09-16T02:53:35.741Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}