namespace VanadiumGuard.Protocol { /// The only actions a client may take, and only when the server says so. public enum VerdictAction { /// Keep playing. The default for everything below the review threshold. Continue = 0, /// Show the player a message. For recoverable states, e.g. "close that tool". Warn = 1, /// Leave the session cleanly with a reason code. No crash, no data loss. Disconnect = 2, } /// Server response to a report or heartbeat. public sealed class Verdict { public VerdictAction Action { get; set; } = VerdictAction.Continue; /// Short stable code shown to the player and logged, e.g. VG-1001. public string? ReasonCode { get; set; } /// Player-facing text. Deliberately vague about what was detected. public string? PlayerMessage { get; set; } /// Grace period before the client acts, so an in-flight report can finish. public int DelayMs { get; set; } } }