{"record":{"id":"f50f9eb51051ce1c","repo":"emberjs/ember.js","slug":"deprecation-override-for-id-not-found","errorCode":null,"errorMessage":"deprecation override for ${id} not found","messagePattern":"deprecation override for (.+?) not found","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/@ember/-internals/glimmer/lib/environment.ts","lineNumber":81,"sourceCode":"    }\n  },\n\n  deprecate(msg: string, test: unknown, options: { id: string }) {\n    if (DEBUG) {\n      let { id } = options;\n\n      if (id === 'argument-less-helper-paren-less-invocation') {\n        throw new Error(\n          `A resolved helper cannot be passed as a named argument as the syntax is ` +\n            `ambiguously a pass-by-reference or invocation. Use the ` +\n            `\\`{{helper 'foo-helper}}\\` helper to pass by reference or explicitly ` +\n            `invoke the helper with parens: \\`{{(fooHelper)}}\\`.`\n        );\n      }\n\n      let override = VM_DEPRECATION_OVERRIDES.filter((o) => o.id === id)[0];\n\n      if (!override) throw new Error(`deprecation override for ${id} not found`);\n\n      // allow deprecations to be disabled in the VM_DEPRECATION_OVERRIDES array below\n      if (!override.disabled) {\n        deprecate(override.message ?? msg, Boolean(test), override);\n      }\n    }\n  },\n});\n\nif (DEBUG) {\n  debug?.setTrackingTransactionEnv?.({\n    debugMessage(obj, keyName) {\n      let dirtyString = keyName\n        ? `\\`${keyName}\\` on \\`${getDebugName?.(obj)}\\``\n        : `\\`${getDebugName?.(obj)}\\``;\n\n      return `You attempted to update ${dirtyString}, but it had already been used previously in the same computation.  Attempting to update a value after using it in a computation can cause logical errors, infinite revalidation bugs, and performance issues, and is not supported.`;\n    },","sourceCodeStart":63,"sourceCodeEnd":99,"githubUrl":"https://github.com/emberjs/ember.js/blob/26f97246a8bf2e28edf26ac3093da2e86c04ffc5/packages/@ember/-internals/glimmer/lib/environment.ts#L63-L99","documentation":"Glimmer's DEBUG deprecate hook looks up the deprecation id in VM_DEPRECATION_OVERRIDES; if an id isn't listed there, it throws 'deprecation override for ${id} not found'. This is an internal consistency check: every VM-raised deprecation must have a registered override.","triggerScenarios":"A VM/template deprecation is triggered in DEBUG with an id missing from VM_DEPRECATION_OVERRIDES — e.g. custom/third-party code calling the environment's deprecate with a novel id, or an ember-source internal/id mismatch after version drift.","commonSituations":"Mismatched ember-source internals (addons shimming the environment), custom deprecate calls in debug builds, running an ember-source canary where override lists changed.","solutions":["Use Ember.deprecate (or the normal deprecation pipeline) rather than the glimmer environment's deprecate for custom messages","Add/align the id in VM_DEPRECATION_OVERRIDES if you own ember-source-level code","Align ember-source and related package versions to eliminate id mismatches"],"exampleFix":"// before\nenv.deprecate('custom msg', false, { id: 'my-custom-deprecation' });\n// after\nEmber.deprecate('custom msg', false, { id: 'my-custom-deprecation', until: '5.0.0', for: 'my-addon' });","handlingStrategy":"validation","validationCode":"// DEBUG-only guard: only call with ids known to the VM\nconst KNOWN_IDS = new Set(VM_DEPRECATION_OVERRIDES.map(o => o.id));\nif (!KNOWN_IDS.has(id)) throw new Error(`unregistered VM deprecation id: ${id}`);","typeGuard":"function hasVmOverride(id) { return VM_DEPRECATION_OVERRIDES.some(o => o.id === id); }","tryCatchPattern":"try { env.deprecate(msg, test, { id }); } catch (e) { if (String(e.message).startsWith('deprecation override for') && e.message.includes('not found')) { /* route to Ember.deprecate instead */ } throw e; }","preventionTips":["Use public Ember.deprecate, not glimmer env internals","Register any VM-level deprecation id in VM_DEPRECATION_OVERRIDES","Keep ember-source and glimmer packages version-aligned","Test DEBUG builds to surface these early"],"tags":["ember","glimmer","deprecation","debug"],"backgroundTag":"missing-deprecation-override","analyzedSha":"26f97246a8bf2e28edf26ac3093da2e86c04ffc5","analyzedAt":"2026-09-01T05:01:28.182Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}