namespace ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests;

/// <summary>
///     Shared xUnit <c>Skip</c> reason constants for OpcUaServer tests whose subject was RETIRED by v3
///     rather than merely deferred — architectural tombstones that keep the removed coverage discoverable
///     and name what replaced it, so nobody re-writes a test for a concept that no longer exists.
///     <para><b>A skip reason is a claim with an expiry date.</b> The one this file used to carry
///     (<c>EquipmentTagsDarkBatch4</c>, "dark until Batch 4") outlived its own condition by a release —
///     see the note below. If you add one here, state the condition precisely enough that a reader can
///     check whether it has already happened.</para>
///     Mirrors <c>Runtime.Tests.Drivers.DarkAddressSpaceReasons</c>.
/// </summary>
internal static class DarkAddressSpaceReasons
{
    // EquipmentTagsDarkBatch4 was RETIRED (2026-07-28) once its own unblock condition was examined. It read
    // "dark until Batch 4"; Batch 4 shipped as v3.0 and RETIRED the equipment-tag plan set rather than
    // lighting it, so every test wearing this reason was waiting on something that had already happened and
    // gone the other way. Each was resolved on its merits rather than left to read as pending work:
    //   - revived onto the raw/UNS shape that replaced the subject (the real-SDK dual-namespace
    //     materialisation E2E in AddressSpaceApplierHierarchyTests; the cluster-scoping rebuild and the
    //     four primary-gate write/alarm cases in Runtime.Tests),
    //   - folded into a live parity test whose corpus was widened to cover them (array + native-alarm
    //     intent, now in DeploymentArtifactRawUnsParityTests),
    //   - or deleted, where the subject itself is retired (equipment-namespace EquipmentTags, the
    //     dot-joint {{equip}}.X token — superseded by the slash-joint form in
    //     DeploymentArtifactEquipRefParityTests).

    /// <summary>Equipment↔device host binding is architecturally retired in v3.</summary>
    public const string EquipmentDeviceBindingRetired =
        "v3: equipment no longer binds a driver/device — Equipment lost DriverInstanceId/DeviceId and " +
        "Compose no longer takes a devices list, so EquipmentNode's DriverInstanceId/DeviceId/DeviceHost " +
        "projection is always null. Equipment references raw tags via UnsTagReference. The device-endpoint " +
        "merge this suite characterized now lives in Runtime.Tests DeploymentArtifactRawPathTests; the " +
        "host-extraction unit is Commons.Tests DeviceConfigIntentTests.";
}
