Forge
csharpdeeb25a2
1namespace CascadeIDE.Contracts;
2
3/// <summary>
4/// Уровень стабильности контракта SDK.
5/// </summary>
6/// <remarks>
7/// Это внутренняя маркировка для ясности границ в active-dev (см. ADR 0024), не публичное обещание совместимости.
8/// </remarks>
9public enum ApiStability
10{
11 /// <summary>Контракт можно ломать свободно в ходе активной разработки.</summary>
12 Experimental = 0,
13 /// <summary>Контракт является опорным: breaking-change делается осознанно (с миграцией/заметкой).</summary>
14 Stable = 1
15}
16
17/// <summary>
18/// Маркер стабильности API/контракта.
19/// </summary>
20/// <remarks>
21/// В сочетании с namespace (`...Contracts.Experimental` / `...Contracts.Stable`) даёт “видимость по умолчанию”
22/// и точечную метку для анализа/инструментов.
23/// </remarks>
24[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Interface | AttributeTargets.Enum
25 | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Event,
26 Inherited = false,
27 AllowMultiple = false)]
28public sealed class ApiStabilityAttribute : Attribute
29{
30 /// <summary>Создать маркер стабильности.</summary>
31 public ApiStabilityAttribute(ApiStability stability) => Stability = stability;
32
33 /// <summary>Заданная стабильность API/контракта.</summary>
34 public ApiStability Stability { get; }
35}
36
37
View only · write via MCP/CIDE