{ "planPath": "docs/plans/2026-06-11-alias-tag.md", "designPath": "docs/plans/2026-06-11-alias-tag-design.md", "branch": "feat/uns-alias-tag", "baseBranch": "master", "baseSha": "305023aa", "status": "in_progress", "note": "Galaxy alias tag: an equipment-scoped Tag bound to GalaxyMxGateway surfacing a Galaxy attribute under a UNS name via direct subscription, replacing relay VirtualTags. Approach A reuses the Tag entity; NO entity/EF migration. Same-file contention: Phase7Composer.cs+DeploymentArtifact.cs in T2 only; EquipmentScriptPaths.cs in T1 only; DraftValidator.cs+Tag.cs in T3 only; IUnsTreeService.cs+UnsTreeService.cs serialize T4->T5->T7; EquipmentPage.razor serializes T6->T8. T1/T2/T3 parallel after T0. BuildAliasTag (T5) reused by the converter (T7). EquipmentTagRow gains DEFAULTED IsAlias/Source so existing constructions compile.", "tasks": [ { "id": 285, "planTask": 0, "subject": "T0: Create feature branch", "classification": "trivial", "status": "completed", "blockedBy": [] }, { "id": 286, "planTask": 1, "subject": "T1: Commons TryParseRelayBody + tests", "classification": "small", "status": "completed", "blockedBy": [ 285 ], "parallelizableWith": [ 287, 288 ] }, { "id": 287, "planTask": 2, "subject": "T2: Broaden equipment-tag filter (composer + artifact)", "classification": "high-risk", "status": "completed", "blockedBy": [ 285 ], "parallelizableWith": [ 286, 288 ] }, { "id": 288, "planTask": 3, "subject": "T3: DraftValidator alias-reference check + Tag doc", "classification": "standard", "status": "completed", "blockedBy": [ 285 ], "parallelizableWith": [ 286, 287 ] }, { "id": 289, "planTask": 4, "subject": "T4: Service read-side (DTO, gateway lookup, Source)", "classification": "standard", "status": "completed", "blockedBy": [ 285 ] }, { "id": 290, "planTask": 5, "subject": "T5: Service write-side (Create/Update alias + guard)", "classification": "standard", "status": "completed", "blockedBy": [ 289 ] }, { "id": 291, "planTask": 6, "subject": "T6: AliasTagModal + Tags-tab Add-alias wiring", "classification": "standard", "status": "completed", "blockedBy": [ 290 ] }, { "id": 292, "planTask": 7, "subject": "T7: Converter service method + DTOs + tests", "classification": "high-risk", "status": "completed", "blockedBy": [ 286, 290 ] }, { "id": 293, "planTask": 8, "subject": "T8: Converter UI (per-equipment + fleet-wide)", "classification": "standard", "status": "completed", "blockedBy": [ 291, 292 ] }, { "id": 294, "planTask": 9, "subject": "T9: Docs (Uns.md, CLAUDE.md)", "classification": "small", "status": "completed", "blockedBy": [] }, { "id": 295, "planTask": 10, "subject": "T10: Full-suite gate + live /run + finish", "classification": "verification", "status": "in_progress", "blockedBy": [ 287, 288, 291, 292, 293, 294 ] } ], "lastUpdated": "2026-06-11" }