Ice Protection Sizing (vehicle-design/sizing/ice-protection-sizing)
Use when the task is sizing the steady thermal ice protection system of an
aircraft surface: choosing evaporative anti-icing, running-wet anti-icing
or cyclic de-icing, computing the two-sided protected area of the band,
estimating the droplet catch efficiency from the median volume diameter
(MVD) and airspeed, computing the evaporative heat flux, the running-wet
surface temperature and the freezing fraction, and converting the heat
flux and area into the required electrothermal power or bleed air mass
flow, closed by a protect or not protect verdict against the available
power margin. This leaf implements the steady thermal sizing model in
pure Python, stdlib only, with the FAR/CS 25 Appendix C continuous maximum
icing condition as the reference context. It pairs with engine-sizing and
nacelle-sizing (surfaces that need the protection), fuselage-sizing for
the windshield area context, and vehicle-design/conceptual/constraint-analysis
for the power offtake margin around the verdict.
Domain quick reference
- Free-stream total temperature: T_tot = T_inf * (1 + 0.2 * M^2). The
adiabatic wall temperature equals T_tot under a turbulent recovery
factor of about 1 (assumption stated in the module); the kinetic
heating rise is T_kin = T_tot - T_inf.
- Catch efficiency, preliminary reference-only correlation (module
constants ETA_K1 = 0.55, MVD_REF = 20 micron, V_REF = 100 m/s,
CHORD_REF = 0.5 m): eta = min(1, 0.55 * (mvd / 20)^0.6 * (v / 100)^0.4
- (0.5 / chord)^0.5). Eta rises with the MVD and airspeed and falls
with the chord, capped at 1.
- Water catch rate per unit span: m_wdot = eta * LWC * v * chord (kg/s
per m span), with LWC the liquid water content (kg/m3) and chord the
surface chord (m). The total catch over the protected segment is
m_wdot * span.
- Protected area: A = 2 * band_fraction * chord * span (m2), the two
sides of the leading edge band, band length chord fraction times chord
times span.
- Freezing fraction (simplified running-wet form, T_frz = 273.15 K,
cp_water = 4186 J/(kg K), L_f = 3.34e5 J/kg): n = min(1, max(0,
cp_water * (T_frz - T_surf) / L_f)). Evaporative anti-ice runs n = 0;
running wet holds part frozen for 0 < n < 1 and n = 0 at or above the
freeze temperature.
- Convective coefficient (flat plate turbulent, reference-only):
h_c = 0.0296 * k * Re^0.8 * Pr^(1/3) / chord with Re = rho * v * chord
/ mu, Pr = 0.72, and k, mu power-law fits in temperature (k = 0.0244 *
(T / 273.15)^0.85, mu = 1.716e-5 * (T / 273.15)^0.75 W/(m K), Pa s).
Convective loss: q_conv = h_c * (T_surf - T_inf).
- Evaporative loss: q_evap = m_evap_dot * L_e / A (W/m2), L_e = 2.501e6
J/kg. Evaporative anti-icing required flux: q_req = q_conv + q_evap +
sensible heating of the catch to T_surf, evaluated at the module
operating skin temperature T_EVAP = 303.15 K (about 30 C).
- Running-wet anti-icing required flux at the protected limit:
q_req = q_conv - kinetic heating contribution = h_c * (T_surf - T_inf
- T_kin), with T_surf = T_frz (273.15 K) at the limit where the freeze
fraction reaches zero; the sustained surface temperature for a flux q
is T_surf = T_inf + T_kin + q / h_c.
- Cyclic de-icing: q_req = q_conv at the shed temperature T_SHED = 276.15
K (273.15 K plus 3 K margin); no shedding dynamics.
- Required power: P_req = q_req * A (W), electrical for electrothermal;
bleed mass flow m_dot = P_req / (cp_air * (T_bleed - T_inf)) for a
pneumatic system, cp_air = 1005 J/(kg K).
- Verdict: protect the surface when it is on the icing-critical list and
P_req sits within the available power margin; otherwise flag.
- Units are SI throughout: K, m, m/s, kg/m3, micron for MVD, W, W/m2,
kg/s.
Workflow
- Fix the icing design point: T_inf, Mach, airspeed v, density rho,
liquid water content LWC and median volume diameter MVD; get the total
and kinetic temperatures with total_temperature and
kinetic_temperature_rise.
- Decide the surface: if it is icing critical, set the protected band
geometry (chord, span, band fraction) and compute the two-sided area
with protected_area.
- Compute the catch efficiency with catch_efficiency (mvd, v, chord)
and the catch rate per unit span with water_catch_rate; multiply by
the span for the total catch over the segment.
- Evaluate the running-wet limit: convective_heat_transfer_coefficient
at the film temperature, convective_heat_loss at T_frz, then
running_wet_heat_flux at T_frz; confirm running_wet_surface_temperature
returns T_frz and freezing_fraction is zero at the limit.
- For evaporative anti-icing, sum the convective, evaporative and
sensible terms with anti_ice_evaporative_heat_flux (all catch
evaporates, surface above freezing); for cyclic de-icing use
de_ice_heat_flux at the shed temperature.
- Convert to the system demand: required_power for the electrothermal
case, bleed_mass_flow for the bleed air case at the bleed supply
temperature.
- Close with protect_verdict against the available power; if the
evaporative mode exceeds the margin, rerun the running-wet and de-ice
modes at the lower flux and re-check the freeze fraction.
- Confirm the deterministic checks with the contract test
scripts/test_ice_protection_sizing.py.
Worked example
Transport wing leading edge protected band: chord c = 0.45 m, protected
segment span 12 m, band chord fraction 0.08, so A_protected = 2 * 0.08 *
0.45 * 12 = 0.864 m2. Flight M = 0.78 at T_inf = 218 K (v ~ 235 m/s,
rho ~ 0.365 kg/m3), LWC = 0.44 g/m3 (0.44e-3 kg/m3), MVD = 20 micron.
- Total temperature 218 * (1 + 0.2 * 0.78^2) = 244.53 K; kinetic rise
26.53 K.
- Catch efficiency: eta = 0.55 * (20/20)^0.6 * (235/100)^0.4 *
(0.5/0.45)^0.5 = 0.816, in the expected 0.5 to 0.9 band.
- Water catch rate: 0.816 * 0.44e-3 * 235 * 0.45 = 0.03797 kg/s per m
span, 0.4556 kg/s over the 12 m segment.
- Film temperature (T_frz + T_inf) / 2 = 245.6 K gives h_c = 169.0 W/m2K
from the flat plate correlation; q_conv at 273.15 K is 169.0 * 55.15
= 9322.9 W/m2.
- Evaporative anti-icing at the 303.15 K operating skin: evaporating the
full catch over the band costs q_evap = 0.4556 * 2.501e6 / 0.864 =
1.319e6 W/m2, so q_req = q_conv + q_evap + sensible heating = 1.521e6
W/m2 and P_req = 1.314e6 W (about 1.31 MW) for the segment. This is
the physics of full-catch evaporation: evaporative anti-icing is only
practical on small, high-flux surfaces such as inlet lips, and the mode
decision below lands on running wet for the wing band.
- Running-wet limit: q_req = h_c * (273.15 - 218 - 26.53) = 4838.7 W/m2,
P_req = 4.18 kW for the segment, T_surf = 273.15 K exactly and the
freezing fraction is zero at the protected limit.
- Cyclic de-ice at the shed temperature 276.15 K: q_req = 9830.0 W/m2,
P_req = 8.49 kW.
- Verdict: against a 100 kW anti-ice power budget the evaporative mode is
flagged (1.31 MW exceeds the margin), while the running-wet mode at
4.18 kW protects the surface; the freeze-fraction check at the limit is
zero. The running-wet bleed demand is 4180.7 / (1005 * (450 - 218)) =
0.0179 kg/s at a 450 K bleed supply.
All of these numbers are reproduced exactly by the contract test.
Pitfalls
- Choosing evaporative anti-icing for a wing band: full-catch
evaporation costs q_evap ~ 1.3 MW per m2 of catch (1.31 MW in the
worked example) and is only practical on small, high-flux surfaces
like inlet lips; the mode decision must fall back to running wet
(4.18 kW) or cyclic de-ice for large bands.
- Forgetting the kinetic heating credit: the running-wet flux is
q_req = h_c * (T_surf - T_inf - T_kin) with the kinetic rise
(26.53 K in the worked example) reducing the required heat; an
adiabatic-wall calculation without the recovery credit over-sizes
the anti-ice demand.
- Reading the freeze fraction sign: n is min(1, max(0, cp_water *
(T_frz - T_surf) / L_f)), so it is 0 at and above 273.15 K and 1
only for a very cold surface; a running-wet surface at the limit
has zero freeze fraction by construction.
- Sizing the catch on the wrong chord or span: the catch rate is
per unit span (eta * LWC * v * chord) and the protected area is
TWO-sided (2 * band_fraction * chord * span); mixing per-meter
with total values mis-sizes both the catch and the power.
- Quoting the electrothermal power for a bleed-air system: the
required power converts to bleed mass flow through the bleed
supply temperature (0.0179 kg/s at 450 K in the worked example),
and a bleed supply at or below the free-stream temperature raises
ValueError.
- Verdict without the power margin: protect_verdict compares the
mode's P_req against the AVAILABLE power (the 100 kW budget
rejects the 1.31 MW evaporative mode), so the mode and the margin
are one decision.
Verification
- Confirm total_temperature(218, 0.78) = 244.53 K and the kinetic rise
is 26.53 K.
- Confirm catch_efficiency(20, 235, 0.45) = 0.816, inside the 0.5 to 0.9
band, rising with MVD and airspeed and falling with chord, capped at 1.
- Confirm water_catch_rate returns 0.03797 kg/s per m span and scales
linearly in eta, LWC, v and chord.
- Confirm freezing_fraction is 0 at and above 273.15 K, between 0 and 1
just below freezing, and 1 for a very cold surface.
- Confirm the running-wet round trip: running_wet_surface_temperature of
running_wet_heat_flux at any surface temperature returns that
temperature, and at the protected limit it returns 273.15 K with zero
freeze fraction.
- Confirm required_power reproduces 4.18 kW (running wet) and 1.314 MW
(evaporative) for the worked example band, and bleed_mass_flow the
0.0179 kg/s running-wet bleed demand.
- Confirm every non-physical input raises ValueError: negative airspeed,
non-positive chord, negative LWC, non-positive MVD, non-positive
temperatures, negative heat flux, non-positive area, out-of-range
band fraction or catch efficiency, bleed supply at or below the free
stream temperature, and negative available power.
- Run the contract test offline: python3
scripts/test_ice_protection_sizing.py (35 tests, deterministic).
Related leaves
- vehicle-design/sizing/engine-sizing: the engine is the bleed source for
a pneumatic anti-ice system; the bleed mass flow demand feeds back into
the engine sizing offtake.
- vehicle-design/sizing/nacelle-sizing: the nacelle lip is a protected
surface; its geometry sets the protected area for the inlet anti-ice
calculation.
- vehicle-design/sizing/fuselage-sizing: fuselage windshield area context
for the surfaces that need protection against ice.
- vehicle-design/conceptual/constraint-analysis: the power offtake margin
against which the protect verdict is drawn.
Behavior contract (gate 3)
Run the deterministic contract test (stdlib unittest, offline):
python3 scripts/test_ice_protection_sizing.py
The test covers the worked example values (total and kinetic temperature,
catch efficiency in the 0.5 to 0.9 band, catch rate, protected area,
convective coefficient and loss, evaporative loss and flux decomposition,
the running-wet limit flux and the round-trip identity of the surface
temperature, de-ice flux, required power for both modes and the bleed
mass flow), the correlation trends, the freezing fraction limits, and
ValueError rejection of non-physical inputs, 35 test methods in total.
Compliance
- Standards referenced, not reproduced: far-25 and cs-25 resolve in
standards-map.yaml, both reference-only; the FAR/CS 25 Appendix C
continuous maximum icing condition is named and paraphrased (typical
LWC and MVD orders), with no reproduced tables or text.
- compliance: STANDARDS-REF, gated: false.
1---2name: ice-protection-sizing3description: Use when you must size the thermal ice protection system for an aircraft surface in FAR/CS 25 Appendix C continuous maximum icing: choose evaporative anti-icing, running-wet anti-icing or cyclic de-icing, compute the protected area from the icing-critical geometry, estimate the droplet catch efficiency from MVD and airspeed, compute the evaporative heat flux and running-wet surface temperature with the freezing fraction, size the electrothermal power or bleed air mass flow, and return the protect verdict with the protection mode, required power or bleed flow and surface temperature. Trigger: ice protection, anti-ice, de-ice, evaporative anti-icing, running wet, catch efficiency, protected area, heat flux, bleed air mass flow, MVD.4license: Apache-2.05---67# Ice Protection Sizing (vehicle-design/sizing/ice-protection-sizing)89Use when the task is sizing the steady thermal ice protection system of an10aircraft surface: choosing evaporative anti-icing, running-wet anti-icing11or cyclic de-icing, computing the two-sided protected area of the band,12estimating the droplet catch efficiency from the median volume diameter13(MVD) and airspeed, computing the evaporative heat flux, the running-wet14surface temperature and the freezing fraction, and converting the heat15flux and area into the required electrothermal power or bleed air mass16flow, closed by a protect or not protect verdict against the available17power margin. This leaf implements the steady thermal sizing model in18pure Python, stdlib only, with the FAR/CS 25 Appendix C continuous maximum19icing condition as the reference context. It pairs with engine-sizing and20nacelle-sizing (surfaces that need the protection), fuselage-sizing for21the windshield area context, and vehicle-design/conceptual/constraint-analysis22for the power offtake margin around the verdict.2324## Domain quick reference2526- Free-stream total temperature: T_tot = T_inf * (1 + 0.2 * M^2). The27 adiabatic wall temperature equals T_tot under a turbulent recovery28 factor of about 1 (assumption stated in the module); the kinetic29 heating rise is T_kin = T_tot - T_inf.30- Catch efficiency, preliminary reference-only correlation (module31 constants ETA_K1 = 0.55, MVD_REF = 20 micron, V_REF = 100 m/s,32 CHORD_REF = 0.5 m): eta = min(1, 0.55 * (mvd / 20)^0.6 * (v / 100)^0.433 * (0.5 / chord)^0.5). Eta rises with the MVD and airspeed and falls34 with the chord, capped at 1.35- Water catch rate per unit span: m_wdot = eta * LWC * v * chord (kg/s36 per m span), with LWC the liquid water content (kg/m3) and chord the37 surface chord (m). The total catch over the protected segment is38 m_wdot * span.39- Protected area: A = 2 * band_fraction * chord * span (m2), the two40 sides of the leading edge band, band length chord fraction times chord41 times span.42- Freezing fraction (simplified running-wet form, T_frz = 273.15 K,43 cp_water = 4186 J/(kg K), L_f = 3.34e5 J/kg): n = min(1, max(0,44 cp_water * (T_frz - T_surf) / L_f)). Evaporative anti-ice runs n = 0;45 running wet holds part frozen for 0 < n < 1 and n = 0 at or above the46 freeze temperature.47- Convective coefficient (flat plate turbulent, reference-only):48 h_c = 0.0296 * k * Re^0.8 * Pr^(1/3) / chord with Re = rho * v * chord49 / mu, Pr = 0.72, and k, mu power-law fits in temperature (k = 0.0244 *50 (T / 273.15)^0.85, mu = 1.716e-5 * (T / 273.15)^0.75 W/(m K), Pa s).51 Convective loss: q_conv = h_c * (T_surf - T_inf).52- Evaporative loss: q_evap = m_evap_dot * L_e / A (W/m2), L_e = 2.501e653 J/kg. Evaporative anti-icing required flux: q_req = q_conv + q_evap +54 sensible heating of the catch to T_surf, evaluated at the module55 operating skin temperature T_EVAP = 303.15 K (about 30 C).56- Running-wet anti-icing required flux at the protected limit:57 q_req = q_conv - kinetic heating contribution = h_c * (T_surf - T_inf58 - T_kin), with T_surf = T_frz (273.15 K) at the limit where the freeze59 fraction reaches zero; the sustained surface temperature for a flux q60 is T_surf = T_inf + T_kin + q / h_c.61- Cyclic de-icing: q_req = q_conv at the shed temperature T_SHED = 276.1562 K (273.15 K plus 3 K margin); no shedding dynamics.63- Required power: P_req = q_req * A (W), electrical for electrothermal;64 bleed mass flow m_dot = P_req / (cp_air * (T_bleed - T_inf)) for a65 pneumatic system, cp_air = 1005 J/(kg K).66- Verdict: protect the surface when it is on the icing-critical list and67 P_req sits within the available power margin; otherwise flag.68- Units are SI throughout: K, m, m/s, kg/m3, micron for MVD, W, W/m2,69 kg/s.7071## Workflow72731. Fix the icing design point: T_inf, Mach, airspeed v, density rho,74 liquid water content LWC and median volume diameter MVD; get the total75 and kinetic temperatures with total_temperature and76 kinetic_temperature_rise.772. Decide the surface: if it is icing critical, set the protected band78 geometry (chord, span, band fraction) and compute the two-sided area79 with protected_area.803. Compute the catch efficiency with catch_efficiency (mvd, v, chord)81 and the catch rate per unit span with water_catch_rate; multiply by82 the span for the total catch over the segment.834. Evaluate the running-wet limit: convective_heat_transfer_coefficient84 at the film temperature, convective_heat_loss at T_frz, then85 running_wet_heat_flux at T_frz; confirm running_wet_surface_temperature86 returns T_frz and freezing_fraction is zero at the limit.875. For evaporative anti-icing, sum the convective, evaporative and88 sensible terms with anti_ice_evaporative_heat_flux (all catch89 evaporates, surface above freezing); for cyclic de-icing use90 de_ice_heat_flux at the shed temperature.916. Convert to the system demand: required_power for the electrothermal92 case, bleed_mass_flow for the bleed air case at the bleed supply93 temperature.947. Close with protect_verdict against the available power; if the95 evaporative mode exceeds the margin, rerun the running-wet and de-ice96 modes at the lower flux and re-check the freeze fraction.978. Confirm the deterministic checks with the contract test98 scripts/test_ice_protection_sizing.py.99100## Worked example101102Transport wing leading edge protected band: chord c = 0.45 m, protected103segment span 12 m, band chord fraction 0.08, so A_protected = 2 * 0.08 *1040.45 * 12 = 0.864 m2. Flight M = 0.78 at T_inf = 218 K (v ~ 235 m/s,105rho ~ 0.365 kg/m3), LWC = 0.44 g/m3 (0.44e-3 kg/m3), MVD = 20 micron.106107- Total temperature 218 * (1 + 0.2 * 0.78^2) = 244.53 K; kinetic rise108 26.53 K.109- Catch efficiency: eta = 0.55 * (20/20)^0.6 * (235/100)^0.4 *110 (0.5/0.45)^0.5 = 0.816, in the expected 0.5 to 0.9 band.111- Water catch rate: 0.816 * 0.44e-3 * 235 * 0.45 = 0.03797 kg/s per m112 span, 0.4556 kg/s over the 12 m segment.113- Film temperature (T_frz + T_inf) / 2 = 245.6 K gives h_c = 169.0 W/m2K114 from the flat plate correlation; q_conv at 273.15 K is 169.0 * 55.15115 = 9322.9 W/m2.116- Evaporative anti-icing at the 303.15 K operating skin: evaporating the117 full catch over the band costs q_evap = 0.4556 * 2.501e6 / 0.864 =118 1.319e6 W/m2, so q_req = q_conv + q_evap + sensible heating = 1.521e6119 W/m2 and P_req = 1.314e6 W (about 1.31 MW) for the segment. This is120 the physics of full-catch evaporation: evaporative anti-icing is only121 practical on small, high-flux surfaces such as inlet lips, and the mode122 decision below lands on running wet for the wing band.123- Running-wet limit: q_req = h_c * (273.15 - 218 - 26.53) = 4838.7 W/m2,124 P_req = 4.18 kW for the segment, T_surf = 273.15 K exactly and the125 freezing fraction is zero at the protected limit.126- Cyclic de-ice at the shed temperature 276.15 K: q_req = 9830.0 W/m2,127 P_req = 8.49 kW.128- Verdict: against a 100 kW anti-ice power budget the evaporative mode is129 flagged (1.31 MW exceeds the margin), while the running-wet mode at130 4.18 kW protects the surface; the freeze-fraction check at the limit is131 zero. The running-wet bleed demand is 4180.7 / (1005 * (450 - 218)) =132 0.0179 kg/s at a 450 K bleed supply.133134All of these numbers are reproduced exactly by the contract test.135136137## Pitfalls138139- Choosing evaporative anti-icing for a wing band: full-catch140 evaporation costs q_evap ~ 1.3 MW per m2 of catch (1.31 MW in the141 worked example) and is only practical on small, high-flux surfaces142 like inlet lips; the mode decision must fall back to running wet143 (4.18 kW) or cyclic de-ice for large bands.144- Forgetting the kinetic heating credit: the running-wet flux is145 q_req = h_c * (T_surf - T_inf - T_kin) with the kinetic rise146 (26.53 K in the worked example) reducing the required heat; an147 adiabatic-wall calculation without the recovery credit over-sizes148 the anti-ice demand.149- Reading the freeze fraction sign: n is min(1, max(0, cp_water *150 (T_frz - T_surf) / L_f)), so it is 0 at and above 273.15 K and 1151 only for a very cold surface; a running-wet surface at the limit152 has zero freeze fraction by construction.153- Sizing the catch on the wrong chord or span: the catch rate is154 per unit span (eta * LWC * v * chord) and the protected area is155 TWO-sided (2 * band_fraction * chord * span); mixing per-meter156 with total values mis-sizes both the catch and the power.157- Quoting the electrothermal power for a bleed-air system: the158 required power converts to bleed mass flow through the bleed159 supply temperature (0.0179 kg/s at 450 K in the worked example),160 and a bleed supply at or below the free-stream temperature raises161 ValueError.162- Verdict without the power margin: protect_verdict compares the163 mode's P_req against the AVAILABLE power (the 100 kW budget164 rejects the 1.31 MW evaporative mode), so the mode and the margin165 are one decision.166## Verification167168- Confirm total_temperature(218, 0.78) = 244.53 K and the kinetic rise169 is 26.53 K.170- Confirm catch_efficiency(20, 235, 0.45) = 0.816, inside the 0.5 to 0.9171 band, rising with MVD and airspeed and falling with chord, capped at 1.172- Confirm water_catch_rate returns 0.03797 kg/s per m span and scales173 linearly in eta, LWC, v and chord.174- Confirm freezing_fraction is 0 at and above 273.15 K, between 0 and 1175 just below freezing, and 1 for a very cold surface.176- Confirm the running-wet round trip: running_wet_surface_temperature of177 running_wet_heat_flux at any surface temperature returns that178 temperature, and at the protected limit it returns 273.15 K with zero179 freeze fraction.180- Confirm required_power reproduces 4.18 kW (running wet) and 1.314 MW181 (evaporative) for the worked example band, and bleed_mass_flow the182 0.0179 kg/s running-wet bleed demand.183- Confirm every non-physical input raises ValueError: negative airspeed,184 non-positive chord, negative LWC, non-positive MVD, non-positive185 temperatures, negative heat flux, non-positive area, out-of-range186 band fraction or catch efficiency, bleed supply at or below the free187 stream temperature, and negative available power.188- Run the contract test offline: python3189 scripts/test_ice_protection_sizing.py (35 tests, deterministic).190191## Related leaves192193- vehicle-design/sizing/engine-sizing: the engine is the bleed source for194 a pneumatic anti-ice system; the bleed mass flow demand feeds back into195 the engine sizing offtake.196- vehicle-design/sizing/nacelle-sizing: the nacelle lip is a protected197 surface; its geometry sets the protected area for the inlet anti-ice198 calculation.199- vehicle-design/sizing/fuselage-sizing: fuselage windshield area context200 for the surfaces that need protection against ice.201- vehicle-design/conceptual/constraint-analysis: the power offtake margin202 against which the protect verdict is drawn.203204## Behavior contract (gate 3)205206Run the deterministic contract test (stdlib unittest, offline):207208 python3 scripts/test_ice_protection_sizing.py209210The test covers the worked example values (total and kinetic temperature,211catch efficiency in the 0.5 to 0.9 band, catch rate, protected area,212convective coefficient and loss, evaporative loss and flux decomposition,213the running-wet limit flux and the round-trip identity of the surface214temperature, de-ice flux, required power for both modes and the bleed215mass flow), the correlation trends, the freezing fraction limits, and216ValueError rejection of non-physical inputs, 35 test methods in total.217218## Compliance219220- Standards referenced, not reproduced: far-25 and cs-25 resolve in221 standards-map.yaml, both reference-only; the FAR/CS 25 Appendix C222 continuous maximum icing condition is named and paraphrased (typical223 LWC and MVD orders), with no reproduced tables or text.224- compliance: STANDARDS-REF, gated: false.