Fisheries VMS Domain · Lesson 2 of ∞ · ← Lesson 1

Surveillance, in detail

IUU fishing's three failure modes — and why e-Boat splits "event" from "violation"

One acronym hides three different legal problems. e-Boat's data model hides a matching split, and it isn't accidental.

Lesson 1 introduced IUU fishing as the umbrella problem MCS exists to solve. It's worth pulling the acronym apart, because the three letters are not three flavours of the same thing — they're three genuinely different failure modes, and a mature system needs to tell them apart.

LetterFailure modeExample
IllegalFishing in violation of a state's laws or an RFMO's binding rulesFishing inside a closed area; fishing without a valid licence
UnreportedFishing that happened but wasn't declared, or was declared falselyLanding more fish than the catch report states
UnregulatedFishing in areas or for stocks with no applicable conservation rules, or by stateless vesselsA vessel with no flag state fishing in an unregulated high-seas pocket

Source: FAO's IUU fishing framework hub.

Why the split matters to e-Boat

Only the first ("Illegal") is something a live-position system like e-Boat can catch in the moment — a geofence crossing is detectable the instant it happens. "Unreported" is a mismatch between two data sources (position/activity vs. declared catch) that surfaces later, often by cross-checking against e-fish. "Unregulated" is mostly a jurisdictional/legal question, not something telemetry resolves at all. Keep this in mind whenever a ToR requirement talks about detecting something — ask which of the three it's actually catching.

Event vs. violation: not the same ToR category

The compliance matrix (docs/compliance/README.md in the repo) splits what looks like one topic — "things that happen" — into two separate requirement groups:

ToR groupIDsWhat it covers
Event type catalogue, event captureC-040..C-051Anything notable that happened — broader than a breach
Violations: catalogue, capture, historyC-052..C-065A detected breach of a control rule specifically

The relationship is: every violation is an event, but not every event is a violation. A vessel entering port is an event. A vessel entering a closed fishing area is an event and a violation. This mirrors the MCS pillars directly — Monitoring produces the event stream (raw facts), Surveillance is the process of checking that stream against Control rules and flagging the subset that breaks them.

In the codebase this shows up as a pipeline, not a single check: EBoat.Gateway normalises incoming telemetry into events; EBoat.GeofenceEvaluator checks position events against geofence rules; EBoat.RuleEngine holds the configurable logic for what counts as a breach; a match produces a violation record, which EBoat.Notifications then acts on. Four separate components for what world practice calls, informally, just "catching a violation" — because each step is genuinely a different concern (ingest, geometry, policy, follow-through), and conflating them is how systems end up with unauditable violation logic buried in ingest code.

Check your recall

Something unclear, or want to go deeper on any term here? Ask the agent that built this lesson — it's your teacher for this workspace, not just a lesson generator.