cert-machine · HarborProof · first light — FuelEU Maritime, first live compliance year

HarborProof: the EU-MRV fleet under FuelEU Maritime's penalty formula

Re-sail the fleet's real year under the rule, and decide it

Replay a real year of operations under the rule that is in force, and get a verdict with a proof, not a forecast. Every ship in the official EU-MRV registry of 2025 — the first year FuelEU Maritime penalties exist — is re-fueled on paper under the regulation's own published arithmetic, in exact rationals over stated boxes: compliant by a margin, non-compliant with an exact penalty floor in EUR, or NEEDS DATA where the public record's own opacity leaves the verdict open. Nothing here is an estimate: every verdict is decided over a stated box, given the hypotheses §3 names; where an estimate would be needed, the instrument refuses instead.

tl;dr
  • The finding. All three of the regulation's own default oil rows sit ABOVE the limit that is live right now — an oil-only ship cannot comply with FuelEU by construction — and this page prices that exactly: the 12,620 registry ships whose 2025 reports are consistent with oil-only operation carry a penalty-exposure floor of EUR 1,190.7M on the year they already sailed, growing to EUR 3,308.3M under the 2030 limit, given 2025's operations re-sailed unchanged — with the exact zero-WtW blend fraction that flips each ship computed per ship (median 6.32%).
  • The mechanism. the official per-ship registry (verifier-checked annual fuel + CO2eq, sha-pinned) × Regulation (EU) 2023/1805's own formulas (constants transcribed from pinned OJ bytes) × exact rational interval arithmetic — verdicts decided over the WHOLE stated box, never at a point; boxes that straddle the limit are refused as NEEDS DATA, never guessed.
  • Check it. node instruments/fueleu/battery.js (10 checks, 5 reds) · python3 tools/extract-harbor-proof.py · node tools/build-report-harbor-proof.js
the registry
17,045 ships
EU MRV public emission report, period 2025 v45 — generated 28 Aug 2026, sha-pinned; every number a company's report, checked by its MRV verifier; none of them ours
decided
12,620
12,620 fully decided both years over their whole constrained box · 0 straddle a limit · 2,385 outside the oil hypothesis — the maybe-compliant ships, undecidable until their fuel mix is public
2025, the live year
12,620 over
ships whose WHOLE intensity box exceeds the 89.3368 gCO2eq/MJ limit in force right now (0 compliant) — every pinned oil row exceeds it, so oil-only operation is non-compliant by the rule's design
penalty floor, 2025
EUR 1,190.7M
the Annex IV arithmetic summed over the fleet at the FAVORABLE end of every box (floor-rounded cents) — before pooling, banking and borrowing, which are company-level flexibilities
re-sailed under 2030
EUR 3,308.3M
the -6% limit, given 2025's operations re-sailed unchanged: the exposure floor; the ceiling end of the boxes reaches EUR 3,332.4M
the flip threshold
6.32%
median exact fraction of scope energy that must come from a zero-WtW fuel to comply in 2030 — computed per ship, the disclosure-shaped number the rule is designed to force
§1 · the rule, pinned

A penalty that is a published exact formula

FuelEU Maritime (Regulation (EU) 2023/1805) caps the well-to-wake GHG intensity of the energy a ship uses: the reference value is 91,16 gCO2eq/MJ and the limit steps down -2% from 2025, -6% from 2030, -14,5% from 2035, -31%, -62%, -80% (Art. 4(2)). The compliance balance is (GHGIE_target − GHGIE_actual) × energy (Annex IV A) and the penalty is |CB| / (GHGIE_actual × 41 000) × EUR 2 400 (Annex IV B) — a closed-form function of numbers a company must already report. Its first reporting period is 2025, and the penalty for it fell due by 30 June 2026 (Art. 23, read from the pinned text): it is in force, not coming.

Every constant used here is transcribed from the pinned Official Journal bytes — corpus/sources/fueleu_reg-2023-1805_oj-l234_2023-09-22.pdf, sha256 492df4f7… — and the GWP factors from the pinned RED II Annex V C(4) (CO2 1 · CH4 25 · N2O 298). The instrument's battery re-derives the limits, a hand-computed penalty and a hand-computed flip threshold from those constants at every build, and a forged intensity one part in 10⁹ over the limit must flip the verdict — no tolerance window exists for an optimizer to land in.

§2 · the data

The fleet's own verified reports, not our measurements

The activity record is the EU-MRV public emission report for period 2025 — 17,045 ships' verifier-checked annual totals: fuel consumed, CO2eq emitted, and the voyage split (intra-EU / inbound / outbound / in-port) that determines FuelEU scope. Version 45, generated 28 August 2026, fetched from the THETIS-MRV public API and pinned: 1b139b29222dd58c…. The build re-hashes the bytes and refuses on drift; the extraction is stdlib Python, keeps every figure as the exact decimal string the registry printed, and is rerunnable in one command.

No ship's operation is modeled here: no speed curves, no engine assumptions, no AIS. The energy is the ship's own reported fuel; the scope share is the ship's own reported voyage split. What the registry does not say — which fuel, exactly — enters as a box under two stated hypotheses (§3), and the box is the honest price of the record's opacity.

§2b · the disclosure number

How much clean fuel, exactly — for every ship at once

A verdict tells an owner they fail. This tells them the price of passing: the exact fraction of scope energy that must come from a zero-well-to-wake fuel before the 2030 limit is cleared. It is computed per ship from that ship's own reported numbers, in exact rationals, and it is the number the regulation is designed to force into the open.

0 1,143 2,286 5.59% 6% 6.60% zero-WtW share of scope energy required to comply in 2030 (exact, per ship) ships median 6.32%
12,620 ships, each contributing one exact fraction. The whole fleet lives inside one percentage point — 5.59% to 6.60%, median 6.32%, 10th percentile 5.66% and 90th 6.54% — because what binds these ships is the regulation's own oil rows, not the particulars of how each one sailed. THE SPIKE is the part worth stopping on: 2,286 ships (18% of the decided fleet) land in a single bin 2.3 hundredths of a point wide, and between them they carry only 30 distinct values: every one of them reports between 3.2548 and 3.2566 g CO2eq per g of fuel, a ratio no pinned oil row gives (MGO's, with the pinned GWPs, is 3.2609). Two thousand independent measurements would not do that; one emission factor applied by default would. The chart is reading the registry's reporting practice, not the sea. The 44 equal bins, from the smallest fraction to the largest, are a chosen layout; the ratios above are not.
§3 · the method

Boxes, screens, and refusal — stated in full

The fossil-oil hypothesis. A decided ship is assumed to burn some mix of the regulation's three pinned oil rows (HFO, LFO, MGO): LCV in [0,0405, 0,0427] MJ/g, well-to-tank in [13,2, 14,4] gCO2eq/MJ. Its tank-to-wake intensity is not assumed at all — it is the ship's own reported CO2eq divided by its own reported fuel. A plausibility screen (prune-only, like every screen in this machine) admits the hypothesis only when some mix of the pinned rows reproduces that ratio — [3,1688, 3,2609] g/g, where the pinned oil rows themselves live; LNG burners, methanol, heavy bio blends and inconsistent reports fall outside and are counted, never decided. 2,385 ships sit there today.

The box is constrained by the ship's own numbers, then decided whole. The reported CO2eq/fuel ratio pins the feasible oil mixes to a one-parameter family, and the intensity extremes of that family sit at two-fuel vertex blends — computed exactly, so each box is tight: it contains every mix consistent with the observation and nothing else. COMPLIANT means every point of the box clears the limit; NON-COMPLIANT means every point exceeds it; a straddling box is NEEDS DATA, never guessed (0 today — the tightened boxes decide everything the screen admits). The undecided mass lives in the 2,385 ships OUTSIDE the oil screen — LNG, methanol, bio blends: precisely the candidates for actual compliance, and precisely the rows the public record cannot yet decide. The per-fuel breakdown FuelEU already makes companies compute would decide every one; NEEDS DATA is this page measuring that opacity. Penalty sums use directed rounding (floors on the floor, ceilings on the ceiling), so the stated exposure range is a theorem under the stated hypotheses, not an estimate.

What this is not. FuelEU compliance is assessed per company with banking, borrowing and pooling; these figures are the raw per-ship Annex IV arithmetic before those flexibilities, under the stated boxes — a mathematically certified counterfactual, not a compliance determination, not a verification statement in the class-society sense, and not legal advice. Scope shares inherit the stated uniform-fuel-mix-across-voyages hypothesis; ice-class and OPS derogations are not applied. Every one of these boundaries is a place the same instrument can sharpen as more of the record becomes public.

What every verdict rests on. The arithmetic is exact; what it is exact about is a set of premises. In the order a ship travels through them, each with the rung its checking reached — validated (against the thing itself, held out), compared (against a model that keeps more), verified (the code against an exact solution of its own equations) or assumed (adopted, chosen or read; no machine here checked it):

  1. assumed
    The registry's reports each ship's annual fuel, CO2eq and voyage split as its company reported them and its MRV verifier checked them; taken as reported. The CO2eq is the registry's, matched against the oil rows with the pinned GWPs; whether the registry used the same GWPs is not checked here, and the spike in §2b sits where no pinned row does.
  2. assumed
    The rule's constants read and transcribed from the pinned Official Journal bytes and RED II Annex V; the battery re-derives the limits, a penalty and a flip threshold from them against hand computations from the same constants, so the transcription itself was read, not machine-checked.
  3. assumed
    The fossil-oil hypothesis a ship whose reported CO2eq per gram of fuel some mix of the three pinned oil rows reproduces ([3,1688, 3,2609] g/g) burned such a mix. The screen prunes; it does not prove the fuel: any other fuel with the same ratio passes it.
  4. assumed
    One fuel mix on every voyage the FuelEU scope share is the ship's CO2eq voyage split read as an energy split, which holds if the mix is the same on every voyage.
  5. assumed
    2030, re-sailed the 2030 figures re-sail 2025's operations unchanged under the 2030 limit: a chosen scenario, not a forecast.

The arithmetic is exact; the weakest premise is assumed. Every verdict and every euro on this page is decided given these premises, and none of them is checked here against a ship.

§4 · the board

The twenty largest 2030 exposures, decided

Ranked by the FLOOR of the 2030 penalty box — the amount the Annex IV arithmetic yields even at the most favorable end of every stated box. Names and IMO numbers are the registry's own; these are public, verifier-checked reports, restated under a published formula. The 2030 columns hold given 2025's operations re-sailed unchanged.

IMOshiptypeFuelEU scope shareintensity box gCO2eq/MJ2025re-sailed 20302030 penalty box [EUR]zero-WtW blend to flip 2030
9351476CRUISE ROMARo-pax ship99.9%[91.73, 91.73]NON-COMPLIANTNON-COMPLIANT[5,965,247, 5,968,050][6.58%, 6.58%]
9837420MSC WORLD EUROPAPassenger ship (Cruise Passenger ship)100.0%[91.43, 91.47]NON-COMPLIANTNON-COMPLIANT[5,908,686, 5,992,305][6.27%, 6.32%]
9319466FINNMAIDRo-pax ship100.0%[91.72, 91.72]NON-COMPLIANTNON-COMPLIANT[4,932,759, 4,937,741][6.57%, 6.57%]
9319442FINNSTARRo-pax ship100.0%[91.72, 91.72]NON-COMPLIANTNON-COMPLIANT[4,712,065, 4,716,262][6.57%, 6.58%]
9349863COLOR MAGICRo-pax ship100.0%[91.61, 91.63]NON-COMPLIANTNON-COMPLIANT[4,670,631, 4,697,206][6.46%, 6.48%]
9336268FINNLADYRo-pax ship100.0%[91.71, 91.71]NON-COMPLIANTNON-COMPLIANT[4,658,412, 4,664,942][6.56%, 6.57%]
9278234COLOR FANTASYRo-pax ship100.0%[91.63, 91.64]NON-COMPLIANTNON-COMPLIANT[4,586,558, 4,609,434][6.48%, 6.50%]
9948592GNV POLARISRo-pax ship99.5%[91.71, 91.71]NON-COMPLIANTNON-COMPLIANT[4,519,505, 4,525,380][6.56%, 6.57%]
9565041BLUE STAR PATMOSRo-pax ship99.9%[91.73, 91.73]NON-COMPLIANTNON-COMPLIANT[4,443,812, 4,445,378][6.59%, 6.59%]
9359791MSC FANTASIAPassenger ship (Cruise Passenger ship)80.8%[91.44, 91.48]NON-COMPLIANTNON-COMPLIANT[4,089,115, 4,143,717][6.29%, 6.33%]
9351490CRUISE EUROPARo-pax ship100.0%[91.68, 91.69]NON-COMPLIANTNON-COMPLIANT[3,844,345, 3,854,800][6.53%, 6.54%]
9359806MSC SPLENDIDAPassenger ship (Cruise Passenger ship)93.8%[91.56, 91.59]NON-COMPLIANTNON-COMPLIANT[3,825,830, 3,856,226][6.41%, 6.44%]
9424883AZURAPassenger ship (Cruise Passenger ship)97.1%[91.62, 91.63]NON-COMPLIANTNON-COMPLIANT[3,712,017, 3,732,438][6.47%, 6.49%]
9378682SUPERSPEED 2Ro-pax ship99.9%[91.73, 91.73]NON-COMPLIANTNON-COMPLIANT[3,606,045, 3,607,739][6.58%, 6.58%]
9320087MSC MUSICAPassenger ship (Cruise Passenger ship)94.8%[91.62, 91.63]NON-COMPLIANTNON-COMPLIANT[3,596,133, 3,616,103][6.47%, 6.48%]
9803613MSC GRANDIOSAPassenger ship (Cruise Passenger ship)95.5%[91.67, 91.68]NON-COMPLIANTNON-COMPLIANT[3,551,304, 3,561,528][6.53%, 6.54%]
9351505CRUISE SARDEGNARo-pax ship99.9%[91.65, 91.66]NON-COMPLIANTNON-COMPLIANT[3,544,079, 3,557,914][6.50%, 6.52%]
9216028SUPERFAST IIIRo-pax ship100.0%[91.19, 91.23]NON-COMPLIANTNON-COMPLIANT[3,534,602, 3,582,991][6.03%, 6.07%]
9207584BLUE STAR 2Ro-pax ship99.9%[91.53, 91.56]NON-COMPLIANTNON-COMPLIANT[3,392,927, 3,424,662][6.38%, 6.41%]
9216030SUPERFAST IVRo-pax ship100.0%[91.63, 91.65]NON-COMPLIANTNON-COMPLIANT[3,363,901, 3,379,651][6.49%, 6.50%]

The full fleet: 12,620 ships decided in both years · 0 NEEDS DATA (box straddles a limit) · 2,385 outside the fossil-oil screen · 42 with unusable voyage splits · 1,998 with no reported EU-scope activity. Every count is recomputed from the pinned registry at this build.

§5 · what the flip threshold is for

The rule as an incentive machine, made exact

For every non-compliant ship the instrument computes the exact energy fraction that must come from a zero-well-to-wake fuel for the same operations to comply in 2030 — an interval, because the fuel-type opacity propagates. That number is what a charterer, a lender under the Poseidon Principles, or a fuel supplier actually negotiates about; today it is bought as consultancy estimate. Here it is a computation anyone can rerun, and the same arithmetic generalizes to any candidate fuel intensity — replace zero with the fuel's pinned WtW value and the blend fraction is one exact division away.

This page is first light for the observatory, not its final shape: the roadmap is per-fuel candidate boxes (methanol, ammonia, wind-assist), company-level aggregation with pooling arithmetic, AIS-replay voyage scoping, and committed FORECASTS of next year's margins graded by the Forecast Gym's machinery. The instrument, the pinned rule, and the registry join are the load-bearing parts, and they are live above.