Skip to content

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

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions