{
  "rule": {
    "rule_id": "R-GRADE",
    "ruleset": "2026.2",
    "version": 3,
    "layer": "entitlement",
    "authority": "ASL",
    "reference": "ASL OM-A 7.2",
    "name": "Room grade by rank",
    "description": "Room grade follows rank where the entity differentiates. Captains may hold an executive grade at long-haul stations; requests above grade require approval.",
    "severity": "approve",
    "applies_to": "crew",
    "applies_ranks": "CPT,FO",
    "applies_entities": "ASL Airlines Belgium,ASL Airlines France",
    "applies_regions": "ALL",
    "applies_duty": "overnight",
    "applies_channel": "ALL",
    "expression": "{\"field\":\"room_grade\",\"op\":\"<=\",\"param\":\"max_grade_for_rank\"}",
    "threshold": "rank-based",
    "approve_role": "travel_desk",
    "second_approver_above": null,
    "suspends_on_disruption": 0,
    "effective_from": "2026-01-01",
    "effective_to": null,
    "owner": "Crew Management",
    "enabled": 1
  },
  "params": [
    {
      "param_id": "PRP-14",
      "rule_id": "R-GRADE",
      "scope_type": "rank",
      "scope_value": "CC",
      "param_name": "max_grade_for_rank",
      "param_value": "standard",
      "unit": null,
      "note": null
    },
    {
      "param_id": "PRP-12",
      "rule_id": "R-GRADE",
      "scope_type": "rank",
      "scope_value": "CPT",
      "param_name": "max_grade_for_rank",
      "param_value": "executive",
      "unit": null,
      "note": "long-haul only"
    },
    {
      "param_id": "PRP-15",
      "rule_id": "R-GRADE",
      "scope_type": "rank",
      "scope_value": "ENG",
      "param_name": "max_grade_for_rank",
      "param_value": "standard",
      "unit": null,
      "note": null
    },
    {
      "param_id": "PRP-13",
      "rule_id": "R-GRADE",
      "scope_type": "rank",
      "scope_value": "FO",
      "param_name": "max_grade_for_rank",
      "param_value": "standard",
      "unit": null,
      "note": null
    }
  ],
  "byPeriod": [
    {
      "period": "2026-03",
      "n": 46,
      "cost": 4704.31,
      "refused": 0
    },
    {
      "period": "2026-04",
      "n": 49,
      "cost": 4557.56,
      "refused": 0
    },
    {
      "period": "2026-05",
      "n": 45,
      "cost": 4327.89,
      "refused": 0
    },
    {
      "period": "2026-06",
      "n": 52,
      "cost": 4974.19,
      "refused": 0
    },
    {
      "period": "2026-07",
      "n": 50,
      "cost": 5283.9800000000005,
      "refused": 0
    },
    {
      "period": "2026-08",
      "n": 38,
      "cost": 4266.23,
      "refused": 0
    }
  ],
  "recent": [
    {
      "breach_id": "PB-7768",
      "eval_id": "PE-15040",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 159.66,
      "resolved": "approved",
      "station": "LYS",
      "entity": "ASL Airlines France",
      "traveller_type": "crew",
      "channel": "travel_desk",
      "booking_id": "RS-8855039"
    },
    {
      "breach_id": "PB-7314",
      "eval_id": "PE-14060",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 155.87,
      "resolved": "approved",
      "station": "CDG",
      "entity": "ASL Airlines Belgium",
      "traveller_type": "crew",
      "channel": "automation",
      "booking_id": "RS-8854059"
    },
    {
      "breach_id": "PB-7186",
      "eval_id": "PE-13813",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 146.88,
      "resolved": "approved",
      "station": "BHX",
      "entity": "ASL Airlines Ireland",
      "traveller_type": "crew",
      "channel": "automation",
      "booking_id": "RS-8853812"
    },
    {
      "breach_id": "PB-7828",
      "eval_id": "PE-15184",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 146.3,
      "resolved": "approved",
      "station": "MAD",
      "entity": "ASL Airlines France",
      "traveller_type": "crew",
      "channel": "crew_app",
      "booking_id": "RS-8855183"
    },
    {
      "breach_id": "PB-7633",
      "eval_id": "PE-14728",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 143.48,
      "resolved": "approved",
      "station": "CDG",
      "entity": "ASL Airlines France",
      "traveller_type": "crew",
      "channel": "travel_desk",
      "booking_id": "RS-8854727"
    },
    {
      "breach_id": "PB-7504",
      "eval_id": "PE-14453",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 142.89,
      "resolved": "approved",
      "station": "HKG",
      "entity": "ASL Airlines Belgium",
      "traveller_type": "crew",
      "channel": "automation",
      "booking_id": "RS-8854452"
    },
    {
      "breach_id": "PB-7823",
      "eval_id": "PE-15177",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 140.94,
      "resolved": "approved",
      "station": "CDG",
      "entity": "ASL Airlines France",
      "traveller_type": "crew",
      "channel": "automation",
      "booking_id": "RS-8855176"
    },
    {
      "breach_id": "PB-7004",
      "eval_id": "PE-13411",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 140.47,
      "resolved": "approved",
      "station": "DUB",
      "entity": "ASL Airlines Ireland",
      "traveller_type": "crew",
      "channel": "automation",
      "booking_id": "RS-8853410"
    },
    {
      "breach_id": "PB-6867",
      "eval_id": "PE-13089",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 139.28,
      "resolved": "approved",
      "station": "BHX",
      "entity": "ASL Airlines Ireland",
      "traveller_type": "crew",
      "channel": "automation",
      "booking_id": "RS-8853088"
    },
    {
      "breach_id": "PB-7010",
      "eval_id": "PE-13416",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 138.4,
      "resolved": "approved",
      "station": "LGG",
      "entity": "ASL Airlines Ireland",
      "traveller_type": "crew",
      "channel": "crew_app",
      "booking_id": "RS-8853415"
    },
    {
      "breach_id": "PB-7120",
      "eval_id": "PE-13681",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 136.69,
      "resolved": "approved",
      "station": "LGG",
      "entity": "ASL Airlines Ireland",
      "traveller_type": "crew",
      "channel": "automation",
      "booking_id": "RS-8853680"
    },
    {
      "breach_id": "PB-7735",
      "eval_id": "PE-14984",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 135.63,
      "resolved": "approved",
      "station": "CDG",
      "entity": "ASL Airlines France",
      "traveller_type": "crew",
      "channel": "automation",
      "booking_id": "RS-8854983"
    },
    {
      "breach_id": "PB-7780",
      "eval_id": "PE-15073",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 135.43,
      "resolved": "approved",
      "station": "CDG",
      "entity": "ASL Airlines France",
      "traveller_type": "crew",
      "channel": "automation",
      "booking_id": "RS-8855072"
    },
    {
      "breach_id": "PB-6833",
      "eval_id": "PE-13010",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 134.39,
      "resolved": "approved",
      "station": "DUB",
      "entity": "ASL Airlines Ireland",
      "traveller_type": "crew",
      "channel": "automation",
      "booking_id": "RS-8853009"
    },
    {
      "breach_id": "PB-7127",
      "eval_id": "PE-13688",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 134.28,
      "resolved": "approved",
      "station": "STN",
      "entity": "ASL Airlines Ireland",
      "traveller_type": "crew",
      "channel": "travel_desk",
      "booking_id": "RS-8853687"
    },
    {
      "breach_id": "PB-7821",
      "eval_id": "PE-15174",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 128.6,
      "resolved": "approved",
      "station": "MRS",
      "entity": "ASL Airlines France",
      "traveller_type": "crew",
      "channel": "automation",
      "booking_id": "RS-8855173"
    },
    {
      "breach_id": "PB-7619",
      "eval_id": "PE-14708",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 127.87,
      "resolved": "approved",
      "station": "TLS",
      "entity": "ASL Airlines France",
      "traveller_type": "crew",
      "channel": "travel_desk",
      "booking_id": "RS-8854707"
    },
    {
      "breach_id": "PB-7369",
      "eval_id": "PE-14169",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 124.38,
      "resolved": "approved",
      "station": "BRU",
      "entity": "ASL Airlines Belgium",
      "traveller_type": "crew",
      "channel": "automation",
      "booking_id": "RS-8854168"
    },
    {
      "breach_id": "PB-7328",
      "eval_id": "PE-14088",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 123.65,
      "resolved": "approved",
      "station": "HKG",
      "entity": "ASL Airlines Belgium",
      "traveller_type": "crew",
      "channel": "automation",
      "booking_id": "RS-8854087"
    },
    {
      "breach_id": "PB-7405",
      "eval_id": "PE-14229",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 122.81,
      "resolved": "approved",
      "station": "BRU",
      "entity": "ASL Airlines Belgium",
      "traveller_type": "crew",
      "channel": "automation",
      "booking_id": "RS-8854228"
    },
    {
      "breach_id": "PB-6887",
      "eval_id": "PE-13135",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 122.02,
      "resolved": "approved",
      "station": "STN",
      "entity": "ASL Airlines Ireland",
      "traveller_type": "crew",
      "channel": "travel_desk",
      "booking_id": "RS-8853134"
    },
    {
      "breach_id": "PB-6798",
      "eval_id": "PE-12932",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 119.96,
      "resolved": "approved",
      "station": "CGN",
      "entity": "ASL Airlines Ireland",
      "traveller_type": "crew",
      "channel": "crew_app",
      "booking_id": "RS-8852931"
    },
    {
      "breach_id": "PB-7422",
      "eval_id": "PE-14266",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 119.82,
      "resolved": "approved",
      "station": "DXB",
      "entity": "ASL Airlines Belgium",
      "traveller_type": "crew",
      "channel": "travel_desk",
      "booking_id": "RS-8854265"
    },
    {
      "breach_id": "PB-7435",
      "eval_id": "PE-14292",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 118.73,
      "resolved": "approved",
      "station": "BRU",
      "entity": "ASL Airlines Belgium",
      "traveller_type": "crew",
      "channel": "automation",
      "booking_id": "RS-8854291"
    },
    {
      "breach_id": "PB-7280",
      "eval_id": "PE-13982",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 102.44,
      "resolved": "approved",
      "station": "BRU",
      "entity": "ASL Airlines Belgium",
      "traveller_type": "crew",
      "channel": "automation",
      "booking_id": "RS-8853981"
    },
    {
      "breach_id": "PB-7726",
      "eval_id": "PE-14952",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 102.08,
      "resolved": "approved",
      "station": "MRS",
      "entity": "ASL Airlines France",
      "traveller_type": "crew",
      "channel": "automation",
      "booking_id": "RS-8854951"
    },
    {
      "breach_id": "PB-7216",
      "eval_id": "PE-13870",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 95.87,
      "resolved": "approved",
      "station": "BRU",
      "entity": "ASL Airlines Belgium",
      "traveller_type": "crew",
      "channel": "automation",
      "booking_id": "RS-8853869"
    },
    {
      "breach_id": "PB-6858",
      "eval_id": "PE-13072",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 86.67,
      "resolved": "approved",
      "station": "LGG",
      "entity": "ASL Airlines Ireland",
      "traveller_type": "crew",
      "channel": "automation",
      "booking_id": "RS-8853071"
    },
    {
      "breach_id": "PB-6915",
      "eval_id": "PE-13187",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 81.22,
      "resolved": "approved",
      "station": "EMA",
      "entity": "ASL Airlines Ireland",
      "traveller_type": "crew",
      "channel": "automation",
      "booking_id": "RS-8853186"
    },
    {
      "breach_id": "PB-7218",
      "eval_id": "PE-13873",
      "period": "2026-08",
      "rule_id": "R-GRADE",
      "layer": "entitlement",
      "severity": "approve",
      "observed": "Grade above rank",
      "limit_value": "rank-based",
      "cost_impact": 78.37,
      "resolved": "approved",
      "station": "BRU",
      "entity": "ASL Airlines Belgium",
      "traveller_type": "crew",
      "channel": "automation",
      "booking_id": "RS-8853872"
    }
  ]
}