Performance Term 6 carries penalties for contracted service that is not delivered, and the formal evidence for delivery comes through the operator's own regulatory returns. This page shows what a continuous independent record can and cannot add to that, including where it confirms the operator rather than contradicts them.
Round trips actually delivered in fiscal 2025 against the Core Service Level minimums in Schedule A, Appendix 1 of the consolidated Coastal Ferry Services Contract. The actuals are the operator's own filed figures. The minimums are parsed from the unofficial consolidated contract, which is the version published rather than the executed one, and the majors also carry an aggregate minimum of 12,394 round trips that this per-route table does not test.
This is what the annual cycle can tell you: a number, once a year, after the year has finished. It cannot tell you which sailings, or when, or whether the shortfall clustered in a fortnight of crew shortage or spread evenly across twelve months.
Before an independent record is worth anything as an oversight tool, it has to be tested against the reporting it would supplement. I geofenced the terminals and compared BC Ferries' announced departure and arrival times against what the radio observed on the same sailings. Distance from the observed berth event, in minutes:
This is the precondition for the rest of the page, not a conclusion drawn from it. Until the two records are shown to be measuring the same events, no comparison between them means anything.
Before claiming an independent record adds anything, it has to be shown to measure the same thing. Twelve directional route pairs, covering eight of the twenty-five designated routes, publish an actual time and can be checked directly:
The ratio is printed per pair rather than averaged into one number, because the average hides the thing a reader needs. Three pairs diverge and all three are named above. A record that cannot see a crossing has to say so, and one that sees more than the filings record has to say that too rather than round it away.
Berth codes: SWB Swartz Bay, TSA Tsawwassen, DUK Duke Point, HSB Horseshoe Bay, NAN Departure Bay, LNG Langdale, BOW Snug Cove, FUL Fulford Harbour, SGI Southern Gulf Islands.
Per-sailing actual times are published for eight of the twenty-five designated routes. For the rest the public record gives a contractual minimum and an annual total, and the quarterly returns give a route-quarter figure; what none of them gives is a sailing-by-sailing record a member of the public can inspect. A radio-derived crossing record does not care whether a route publishes actuals, because it does not ask.
Set out in three parts: what the legislation and the filings provide for, what the quarterly returns actually contain, and what remains open. The middle part is from reading every published return rather than inferring from one.
One of those provisions deserves stating against this page's own argument rather than buried in the list. Schedule B of the contract requires the operator to give the Province, within 60 days of each quarter, the missed sailings by route with the reason for each and whether each met the Temporary Service Disruption criteria. That is per-sailing detail with attributed cause, on a faster cycle than the section 65 return. It is not in the section 65 returns, which is what the count below measures, and it does not reach the Commissioner as part of the section 65 cycle. But anyone assuming per-sailing causes are simply unavailable to government would be wrong, and the argument this page can support is narrower for it: the chain is operator-prepared throughout, not that the detail does not exist.
So the reporting is real, detailed and regular, and it is aggregated. A route-quarter variance of 105 sailings is a number a regulator can act on; it is not a record of which sailings those were. That is the level at which an independent observation layer has something to add, and it is a narrower claim than the one this page made before I went and read the document.
Which is a narrower claim than "the Commission is missing something", and the only one I can support from outside. If the answer to any of the three unknowns above is "we already have that", the useful outcome of a first conversation is finding out which, before six more months are spent building the wrong thing.
Section 05 is about what the returns contain. This is what they say. Cancelled round trips by cause, per route, read out of the operator's own filings rather than summarised from them: the annual reports to the Commissioner and Appendix 3a of the quarterly returns. One measure is held constant throughout, cancellations of required round trips against the annual Core Service Level, because the filings also count cancellations two other ways and the three give different answers for the same quarter.
Three measures appear in these documents and mixing them is easy to do. A page headed "Year Ended" counts cancellations against the annual Core Service Level; one headed "Quarter Ended" counts cancellations of minimum required round trips against the daily minimum; section 2D counts every cancelled round trip against the published schedule. On the twelve directional pairs that publish an actual time where both exist, four quarters on the second measure come out below the same year on the first, because a sailing can be cancelled without breaching the daily minimum. Only the first measure is charted above.
So whether a missed round trip counts against Core Service Levels turns on the cause attributed to it, and the contract requires BC Ferries to state that cause for every missed sailing and to say whether it qualified. Those causes are also stated publicly at the time, in service notices, and then removed.
This is not a claim that any attribution is wrong. It is the observation that the contemporaneous public statement of cause is currently ephemeral, that the most-cited cause is the one the contract does not exempt, and that an archive of it costs nothing to keep once something is already polling.
Verifying delivery against Schedule A continuously rather than through periodic operator reporting. The contract is denominated in round trips per year. Crossings are observable daily. The same quantity, at a resolution that would let a shortfall be seen while the performance term is still running.
Distinguishing a coverage gap from a cancellation. This is the hard part, and the honest version is worse than an anecdote: absence of an observed crossing is not proof a sailing did not run, and on this archive that absence is systematic rather than occasional. One vessel, the Kahloke on Denman East to Hornby Island, has eight gaps longer than a day in six weeks, five of them between 64 and 71 hours, and they recur on a weekly Friday evening to Monday morning cadence. It records four Saturday crossings and no Sunday crossings at all, across the entire archive, on a route that runs a full weekend service. Fleet-wide there are 92 gaps longer than a day, the longest 317 hours.
So this is not a caveat about occasional reception. For at least one vessel the instrument is blind on the busiest days of the week, predictably, and nothing in the record announces it. Until that is characterised per vessel rather than described in general, the crossing archive cannot carry a compliance argument on the routes it covers, and the honest claim for it is narrower: it is a continuous record of what it did see, and it knows what it did not.
A cross-check on attributed cause, once the records overlap. The notice archive begins in July 2026 and the most recent filing read covers to March 2026, so nothing has yet been held against anything: the comparison becomes possible with the returns covering the quarters the archive has been running through. Section 08 is the piece with no equivalent elsewhere: what BC Ferries told the public was wrong, at the moment it was happening, held against what was later reported. Not to contradict it, but so that the question can be asked at all.
Contract minimums are parsed from the consolidated CFSC. Round-trip actuals, utilization, overloads, route financials and cancelled round trips by cause are read out of 22 annual reports to the Commissioner covering fiscal 2004 to fiscal 2026 and all 37 published s.65 quarterly returns covering March 2017 to March 2026, page by page, with the file and page recorded against every figure. Two gaps are in the documents rather than the reading: the fiscal 2011 report is a scanned image with no text layer. There is one gap fewer than this page claimed until recently: the fiscal 2020 report is filed under a name ending 2019, so an extractor keying on the filename never opened it, and its absence was mine rather than the Commission's. Operational observation is a Raspberry Pi and a software-defined radio on the BC coast, pooled with the AISHub exchange, running continuously since 12 July 2026 and archiving the operator's published conditions feed every five minutes.
The observation window is weeks, not years: nothing here is a substitute for a performance review, and no multi-year claim on this page rests on my own sample. AIS is strong independent evidence with real failure modes, including reception gaps and operator-entered fields. No per-vessel reception figure is published here yet, which is the first thing this record needs before any of it counts as evidence: without it a gap and an absence of service are indistinguishable, and the gaps are not rare.
Salish Ops is an independent project, not affiliated with or endorsed by British Columbia Ferry Services Inc., the BC Ferry Authority or the Office of the BC Ferries Commissioner. This is a prototype published for discussion, not a finished report.