Method Signature Change Risk
Disabled by default (severity None). Regex-based signature detection superseded by GCI0003. Re-enable in .gauntletci.json if needed.
Why this rule exists
Public method signatures are contracts. Removing a parameter, adding a required one, or changing the return type breaks every caller. These changes demand deprecation cycles, not silent breaking changes.
Code example
- public Task<User> GetUser(int id) { }
+ public Task<User> GetUser(Guid id) { }
+ // OR
- public void ProcessOrder(Order order) { }
+ public void ProcessOrder(Order order, ProcessOptions options) { } // no default [Obsolete("Use GetUserAsync(Guid)")]
public Task<User> GetUser(int id) => GetUserAsync(new Guid(id.ToString()));
+ public Task<User> GetUserAsync(Guid id) { }
+ // OR
+ public void ProcessOrder(Order order, ProcessOptions options = null) { } // default providedConfiguration
Disable or adjust the severity of this rule in .gauntletci.json:
{
"rules": {
"GCI0055": { "enabled": true, "severity": "Info" }
}
}See Configuration for the full schema.
Related rules
Behavioral Change Detection
Detects removed logic (Warn), incompatible method signature changes (Block), backward-compatible extensions (Info), and cryptographic boundary changes (Block).
Breaking Change Risk
Detects [Obsolete] attribute additions and removals on public APIs. Removing a deprecation guard is Block-severity; adding one is a Warn-level review signal.
Real-world evidence
Nullable Migration in Newtonsoft.Json
A 169-file nullable reference type migration changed public annotations and fixed null-parent behavior.
Signature Validation Telemetry in IdentityModel
Signature validation telemetry added issuer allowlisting and validation call-path changes.
Implemented in src/GauntletCI.Core/Rules/Implementations/GCI0055_*.cs.
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.
