///|
/// Retains either complete accepted evidence or the exact parser failure.
pub(all) enum RomanAnalysisStatus {
  AnalysisAccepted(ParseReport)
  AnalysisRejected(RomanReportError)
} derive(Eq, Debug)

///|
/// Describes one input without discarding rejected-input diagnostics.
pub(all) struct RomanAnalysisReport {
  original : String
  config : ParseConfig
  status : RomanAnalysisStatus
  diagnostics : Array[RomanDiagnostic]
  replacement : String?
  observed_unicode_compatibility : Bool
  observed_outer_whitespace : Bool
} derive(Eq, Debug)