Skip to content

FR: enforce @deprecated — the attr ships in all five ports and nothing reads it #305

Closed

Description

@dmealing

Gap

deprecated and replacedBy are registered documentation common-attrs in all five ports — and nothing reads them. No validation pass, no verify check, no codegen behavior.

A deprecation you cannot enforce is a comment.

Prior art (open source)

dbt pairs deprecation with a date, so a model can be marked as going away on a schedule rather than indefinitely. https://docs.getdbt.com/reference/dbt_project.yml

Direction

Smallest useful version, using vocabulary that already ships:

  1. verify warns when a node depends on a deprecated node (via extends, @objectRef, @references, origin @from/@of/@via).
  2. Where replacedBy is present, name the replacement in the diagnostic.
  3. Optionally, a deprecation date that escalates warn → error once passed.

Interacts with #4 (severity + suppressions): the escalation story is much better if a project can suppress a specific deprecation with a recorded reason while it migrates.

Notes

  • Additive and opt-in: a model with no deprecated attrs sees no diagnostics.
  • Needs cross-port conformance so a deprecation warns identically everywhere.

Activity

  1. added
    FRRoadmap feature request tracked in spec/roadmap.md
    on Oct 2, 2026
  2. added this to the 1.1 milestone on Oct 2, 2026
  3. dmealing commented on Oct 3, 2026

    @dmealing
    MemberAuthor

    Shipped in 1.0.12: meta verify advisory WARN_DEPRECATED_REFERENCE, naming replacedBy. Date-based escalation waits for #302 (severity + suppressions).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    FRRoadmap feature request tracked in spec/roadmap.md

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions