///|
/// Selects an ASCII Roman letter-case style requirement.
pub(all) enum RomanCaseRequirement {
  AnyRomanCase
  RequireRomanUppercase
  RequireRomanLowercase
} derive(Eq, Debug)

///|
/// Separates broad parsing acceptance from document style requirements.
pub(all) struct RomanLintPolicy {
  parse_config : ParseConfig
  case_requirement : RomanCaseRequirement
  allow_unicode : Bool
  allow_outer_whitespace : Bool
  require_canonical : Bool
  include_single_symbol : Bool
  retain_rejected_candidates : Bool
  max_candidate_length : Int
} derive(Eq, Debug)

///|
/// Returns retained analysis plus style-policy evidence.
pub(all) struct RomanLintReport {
  original : String
  policy : RomanLintPolicy
  analysis : RomanAnalysisReport
  style_diagnostics : Array[RomanDiagnostic]
  diagnostics : Array[RomanDiagnostic]
  replacement : String?
  error_count : Int
  warning_count : Int
  conforms : Bool
} derive(Eq, Debug)