namespace ZB.MOM.WW.OtOpcUa.Runtime.Tests.Drivers;

/// <summary>
///     Shared xUnit <c>Skip</c> reason constants for 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>
/// </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).

    // DiscoveryInjectionDormantV3 was removed with the injection path itself (§8.2, Gitea #507). The 18
    // tests it skipped were v2 characterization tests — they asserted an equipment-rooted graft
    // (EquipmentRootNodeId == "EQ-1") that v3 cannot produce, so they were deleted rather than unskipped.
    // Discovered raw tags are authored through the /raw browse-commit flow; IRediscoverable now surfaces a
    // re-browse prompt instead (DriverInstanceActorRediscoverySignalTests).

    /// <summary>Equipment↔device host binding is architecturally retired in v3.</summary>
    public const string EquipmentDeviceBindingRetired =
        "v3: equipment no longer binds a driver/device (EquipmentNode has no DriverInstanceId/DeviceId/" +
        "DeviceHost) — equipment references raw tags via UnsTagReference. The device-endpoint merge this " +
        "test characterized is now covered by DeploymentArtifactRawPathTests " +
        "(ParseDriverInstances_computes_nested_RawPath_and_merges_device_endpoint).";
}
