All rules

Data and Schema Compatibility

Detects removed serialization attributes and enum member removals that may break wire formats or persisted data.

Why this rule exists

Removing an enum value or [JsonPropertyName] attribute breaks every consumer that has that value persisted in a database, on a queue, or in a snapshot. The deploy succeeds; the next read fails.

Code example

Triggers the rule
  public enum OrderStatus
  {
      Pending,
-     Processing,
      Shipped
  }
Passes the rule
  public enum OrderStatus
  {
      Pending,
      [Obsolete("Use Fulfilled")] Processing,
      Shipped,
+     Fulfilled,
  }

Configuration

Disable or adjust the severity of this rule in .gauntletci.json:

{
  "rules": {
    "GCI0021": { "enabled": true, "severity": "Block" }
  }
}

See Configuration for the full schema.

Related rules

Discussed in

Implemented in src/GauntletCI.Core/Rules/Implementations/GCI0021_*.cs.

About the author

Eric Cogen -- Founder, GauntletCI

Twenty years as a senior technical consultant building and modernizing enterprise platforms across .NET, AWS, serverless, microservices, and AI-driven systems.