Forge
csharpdeeb25a2
1namespace CascadeIDE.Contracts;
2
3/// <summary>
4/// Маркер вычислительной единицы приложения («computing unit»): узкая статическая проекция, политика или нормализация данных.
5/// </summary>
6/// <remarks>
7/// Отличается от <c>*Orchestrator*</c>, MCP-хэндлеров координации и тонких адаптеров «только подписка на шину без свёртки».
8/// Допустимы локальные операции над путями и простыми проверками ОС там, где это часть правила нормализации, а не сценария с побочными эффектами.
9///
10/// Маркируются: статические CU в <c>Features/*/Application</c> (имя класса не оканчивается на <c>Orchestrator</c>),
11/// типы-компьюторы кабины в <c>Cockpit/ComputingUnits</c> (типы с <c>: ICockpitComputeUnit</c> и статические CCU-хелперы в том дереве).
12/// Не маркировать только-DTO (<c>record struct</c> полезная нагрузка), перечисления и пустые контрактные интерфейсы.
13///
14/// Поиск: <c>[ComputingUnit]</c>. Пара: <see cref="PresentationProjectionAttribute"/> (биндинг из снимка),
15/// <see cref="ApplicationOrchestratorAttribute"/> (координация), <see cref="IoBoundaryAttribute"/> (I/O), шина —
16/// <see cref="DataBusSubscriberAttribute"/> / <see cref="DataBusPublisherAttribute"/>.
17/// </remarks>
18[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct,
19 Inherited = false,
20 AllowMultiple = false)]
21public sealed class ComputingUnitAttribute : Attribute
22{
23 /// <summary>Создать маркер без текста-подсказки.</summary>
24 public ComputingUnitAttribute()
25 {
26 }
27
28 /// <summary>Создать маркер с необязательной подсказкой для обзора (категория единицы).</summary>
29 /// <param name="note">Краткая подсказка; не влияет на компиляцию.</param>
30 public ComputingUnitAttribute(string note) => Note = note;
31
32 /// <summary>Краткое текстовое уточнение для обзора (не семантика исполнения).</summary>
33 public string? Note { get; }
34}
35
View only · write via MCP/CIDE