using System.Collections.Immutable; using System.Text.Json; namespace StellaOps.Aoc; public sealed partial class AocWriteGuard { private static void ValidateContent( JsonElement document, ImmutableArray.Builder violations) { if (document.TryGetProperty("content", out var content) && content.ValueKind == JsonValueKind.Object) { if (!content.TryGetProperty("raw", out var raw) || raw.ValueKind is JsonValueKind.Null or JsonValueKind.Undefined) { violations.Add(AocViolation.Create( AocViolationCode.MissingProvenance, "/content/raw", "Raw upstream payload must be preserved.")); } } else { violations.Add(AocViolation.Create( AocViolationCode.MissingRequiredField, "/content", "Content metadata is required.")); } } private static void ValidateLinkset( JsonElement document, ImmutableArray.Builder violations) { if (!document.TryGetProperty("linkset", out var linkset) || linkset.ValueKind != JsonValueKind.Object) { violations.Add(AocViolation.Create( AocViolationCode.MissingRequiredField, "/linkset", "Linkset metadata is required.")); } } }