{"record":{"id":"12e62af83b5117ae","repo":"hasura/graphql-engine","slug":"duplicate-compatibility-config-found","errorCode":null,"errorMessage":"duplicate compatibility config found","messagePattern":"duplicate compatibility config found","errorType":"validation","errorClass":"CompatibilityError","httpStatus":null,"severity":"error","filePath":"v3/crates/compatibility/src/config.rs","lineNumber":29,"sourceCode":"    // TODO: add flags.\n}\n\n#[derive(Clone, Debug, PartialEq, serde::Serialize, opendds_derive::OpenDd)]\n#[serde(rename_all = \"camelCase\")]\n#[serde(deny_unknown_fields)]\n#[opendd(json_schema(id = \"v2/CompatibilityConfig\"))]\n/// The compatibility configuration of the Hasura metadata.\npub struct CompatibilityConfigV2 {\n    /// Any backwards incompatible changes made to Hasura DDN after this date won't impact the metadata.\n    pub date: CompatibilityDate,\n    // TODO: add flags.\n}\n\n#[derive(Debug, PartialEq, thiserror::Error)]\npub enum CompatibilityError {\n    #[error(\"no compatibility config found\")]\n    NoCompatibilityConfigFound,\n    #[error(\"duplicate compatibility config found\")]\n    DuplicateCompatibilityConfig,\n    #[error(\"compatibility date {specified} is too old, oldest supported date is {oldest}\")]\n    DateTooOld {\n        specified: CompatibilityDate,\n        oldest: CompatibilityDate,\n    },\n    #[error(\"compatibility date {0} is in the future\")]\n    DateInTheFuture(CompatibilityDate),\n}\n","sourceCodeStart":11,"sourceCodeEnd":39,"githubUrl":"https://github.com/hasura/graphql-engine/blob/724551b9ae87845594ef0408cff0e50eb6c90dc5/v3/crates/compatibility/src/config.rs#L11-L39","documentation":"Two or more compatibility configuration entries overlap for the same date/range, so resolution is ambiguous.","triggerScenarios":"Loading compatibility configs where multiple entries match a single compatibility date, e.g. duplicated entries in the config file or overlapping ranges.","commonSituations":"Copy-pasted entries in a compatibility config file; merged config files containing the same date twice; tooling that appends instead of replaces entries.","solutions":["Search the compatibility config source for entries matching the same date and remove duplicates","Validate config after generation/merge to assert uniqueness","Regenerate the config from a canonical source"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"const dates = configs.map(c => c.date);\nif (new Set(dates).size !== dates.length) throw new Error('duplicate compatibility config');","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Generate configs from one canonical source","Validate uniqueness in CI"],"tags":["configuration","compatibility","duplicate"],"backgroundTag":"duplicate-config-entry","analyzedSha":"724551b9ae87845594ef0408cff0e50eb6c90dc5","analyzedAt":"2026-08-28T07:32:55.105Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}