feat: implement first limited Pipe annotation Apply

This commit is contained in:
codex
2026-08-03 10:50:51 +03:00
parent 1bfb91bc4b
commit bd5f47d811
6 changed files with 298 additions and 12 deletions
@@ -177,6 +177,10 @@ public sealed record AnnotationPlanningRequest
public required OrthoViewportInfo Viewport { get; init; }
public IReadOnlyList<PlantObjectSnapshot> Objects { get; init; } = Array.Empty<PlantObjectSnapshot>();
public IReadOnlyList<ExistingAnnotation> Existing { get; init; } = Array.Empty<ExistingAnnotation>();
// Test-only limited Apply intent. It is part of the canonical plan and is
// deliberately explicit: the planner must never choose an arbitrary Pipe.
public string? LimitedApplyTargetSnapshotId { get; init; }
public string? LimitedApplyRuleId { get; init; }
}
public interface IAnnotationPlanBuilder { AnnotationPlan Build(AnnotationPlanningRequest request); }