colregs 0.1.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/LICENSE +194 -26
  2. package/PROVENANCE.md +45 -12
  3. package/README.md +222 -23
  4. package/data/applicability.json +1252 -190
  5. package/data/deprecated-identifiers.json +7 -0
  6. package/data/facts.json +556 -113
  7. package/data/geometry.json +33 -33
  8. package/data/images.json +51 -25
  9. package/data/lights.json +35 -35
  10. package/data/rules.json +787 -3
  11. package/docs/adr/0001-name-and-jurisdiction-model.md +119 -1
  12. package/docs/adr/0003-language-as-a-dimension.md +220 -0
  13. package/docs/adr/0004-licence-layering.md +78 -0
  14. package/docs/adr/0005-rule-categories-and-the-situation-record.md +323 -0
  15. package/docs/adr/0006-json-schema-and-identifier-diff.md +95 -0
  16. package/docs/adr/0007-rule26-overrides-and-aground.md +68 -0
  17. package/docs/adr/0008-mooring-buoy-modifier.md +87 -0
  18. package/docs/budgets.json +162 -0
  19. package/docs/conventions.md +27 -0
  20. package/docs/gates.json +84 -0
  21. package/docs/identifiers.md +435 -0
  22. package/docs/part-b-invariants.md +922 -0
  23. package/docs/requirements.md +1251 -23
  24. package/docs/verification/2026-08-30-q6-q8.md +278 -0
  25. package/docs/verification/2026-09-05-rule27f-rule28-anchor-scenarios.md +330 -0
  26. package/fixtures/applicability-fixtures.json +361 -227
  27. package/fixtures/situation-fixtures.json +3673 -0
  28. package/package.json +16 -4
  29. package/schema/applicability-fixtures.schema.json +49 -0
  30. package/schema/applicability.schema.json +401 -0
  31. package/schema/deprecated-identifiers.schema.json +29 -0
  32. package/schema/facts.schema.json +793 -0
  33. package/schema/geometry.schema.json +239 -0
  34. package/schema/images.schema.json +53 -0
  35. package/schema/lights.schema.json +131 -0
  36. package/schema/rules.schema.json +50 -0
  37. package/schema/situation-fixtures.schema.json +325 -0
@@ -0,0 +1,278 @@
1
+ # Verification: Q-6 and Q-8 primary-source claims
2
+
3
+ Date: 2026-08-30
4
+
5
+ Scope: convert four recalled claims underlying Q-6, Q-8, and ADR 0004 into
6
+ cited primary-source evidence or refutations, for PR #4. Verdict
7
+ interpretation (what this means for GATE-1, GATE-6, or ADR 0004) is left to
8
+ the review session — this file records evidence only.
9
+
10
+ ---
11
+
12
+ ## CLAIM 1 (Q-8, load-bearing) — REFUTED
13
+
14
+ **Claim**: 33 CFR 83 (US Inland Rules) preserves COLREGS Part C paragraph
15
+ structure at the paragraph-path level — i.e. every path in `data/rules.json`
16
+ for Rules 20–31 is either citation-compatible (same path, same text) or
17
+ cleanly absent, never same-spelling-different-text.
18
+
19
+ **Method**: fetched 33 CFR 83 Subpart C (§§ 83.20–83.31) from eCFR
20
+ (`https://www.ecfr.gov/api/renderer/v1/content/enhanced/current/title-33?part=83`,
21
+ retrieved 2026-08-30, cross-spot-checked against Cornell LII's mirror with no
22
+ contradictions) and diffed it paragraph-by-paragraph against all 90 paths
23
+ this repo's `data/rules.json` carries for Rules 20–31 (source: USCG
24
+ amalgamated international text, retrieved 2026-08-29).
25
+
26
+ **Verdict: REFUTED.** Of 90 paths, **18 are the dangerous case** (the
27
+ first pass stated 15 but its own table had 14; see the 2026-09-05
28
+ correction) — identical path spelling, materially different denoted text —
29
+ plus one structural path-mismatch, one whole-rule clean absence, and two
30
+ clean intl-only absences. 68 of 90 are citation-compatible
31
+ (90 − 18 − 1 − 1 − 2).
32
+
33
+ ### Diff table
34
+
35
+ | Path | Int'l | 33 CFR 83 | Match | Note |
36
+ |---|---|---|---|---|
37
+ | 20(a)–20(e) | Y | Y | SAME | Trivial wording only (CFR adds an Annex I cross-ref at 20(e)). |
38
+ | **21(a)** | Y | Y | **DIFFERENT** | CFR appends "except that on a vessel of less than 12 meters in length the masthead light shall be placed as nearly as practicable to the fore and aft centerline of the vessel." Inland-only: the USCG amalgamated page wraps it in `‹‹ ››` and the 1972 treaty text lacks it (see the 2026-09-05 correction below). Repo text is correct. |
39
+ | **21(b)** | Y | Y | **DIFFERENT** | Same pattern: CFR appends the "<12 meters … as nearly as practicable to the fore and aft centerline" clause to the combined-lantern sentence. Inland-only; repo text is correct. |
40
+ | 21(c)–21(f) | Y | Y | SAME | Verbatim. |
41
+ | — (no `21(g)` in intl) | N | Y | US-only insertion | `83.21(g)` defines "Special flashing light" (yellow, 50–70 fpm, forward, 180–225° arc). Confirmed to genuinely live at Rule 21(g) — not misfiled elsewhere. Feeds the `22(a)/(b)/(c)` and `24(f)` mutations below. |
42
+ | 22 | Y | Y | SAME | Verbatim intro. |
43
+ | **22(a)** | Y | Y | **DIFFERENT** | CFR adds "(vi) A special flashing light, 2 miles" — tied to 21(g). |
44
+ | **22(b)** | Y | Y | **DIFFERENT** | Same addition. |
45
+ | **22(c)** | Y | Y | **DIFFERENT** | Same addition. |
46
+ | 22(d) | Y | Y | SAME | CFR (d)(ii) is "[Reserved]" — no material change to (i). |
47
+ | 23(a), 23(a)(i–iv) | Y | Y | SAME | Verbatim. |
48
+ | **23(b)** | Y | Y | **DIFFERENT** | CFR appends "where it can best be seen." Inland-only: `‹‹ ››`-marked on the USCG page, absent from the 1972 treaty text. Repo text is correct. |
49
+ | 23(c) | Y | Y | SAME | Verbatim (WIG craft). |
50
+ | **23(d)(i)** | Y | **N** | **path mismatch** | CFR 83.23 has no lettered sub-paragraphs under (d) — the equivalent content sits at bare `83.23(d)`, not `23(d)(i)`. Content matches; the path spelling doesn't exist in CFR. A structural landmine for a future `us/inland` fixture. |
51
+ | 23(d)(ii) | Y | N | intl-only (clean) | The <7m/≤7kt exception has no CFR 83.23 counterpart. |
52
+ | 23(d)(iii) | Y | N | intl-only (clean) | The off-centerline masthead-light provision has no CFR 83.23 counterpart. |
53
+ | — | — | Y | US-only insertion | `83.23(e)`: Great Lakes vessels may substitute lighting. No intl counterpart. |
54
+ | 24(a), 24(a)(i–v), 24(b) | Y | Y | SAME | Verbatim. |
55
+ | **24(c)** | Y | Y | **DIFFERENT** | Repo/intl (c)(iii) = "a sternlight." CFR 83.24(c)(iii) = "Two towing lights in a vertical line." CFR also references a Western Rivers exception repo/intl lacks. |
56
+ | **24(d)** | Y | Y | **DIFFERENT** | Repo/intl: "...comply with Rule 23(a)(ii)." CFR: "...comply with Rule 23(a)(i) and 23(a)(ii)" — genuinely broader reference. |
57
+ | 24(e) | Y | Y | SAME | Trivial wording. |
58
+ | **24(f)** | Y | Y | **DIFFERENT** | CFR (f)(i)/(f)(ii) each add "and a special flashing light" (tied to 21(g)); CFR adds an entirely new (f)(iii) (vessels towed on both sides) absent from repo/intl. |
59
+ | **24(g)** | Y | Y | **DIFFERENT** | Repo/intl (g)(ii): "two additional all-round white lights." CFR (g)(ii): "four all-round white lights." CFR also adds (g)(v) (searchlight toward the tow), absent from repo/intl. (Repo's own `24(g)(i)` remains a documented gap, orthogonal to this finding.) |
60
+ | 24(h) | Y | Y | SAME | Verbatim. |
61
+ | **24(i)** | Y | Y | **DIFFERENT** | Repo/intl closes "...in particular by illuminating the towline." CFR closes "The searchlight authorized by Rule 36 (§ 83.36) may be used to illuminate the tow," and references a new (j) repo/intl lacks. |
62
+ | — | — | Y | US-only insertion | `83.24(j)(i)/(ii)`: Western Rivers pushing/towing-alongside exception. No intl counterpart. |
63
+ | 25(a)–25(c) | Y | Y | SAME | Verbatim. |
64
+ | **25(d)(i)** | Y | Y | **DIFFERENT** | True IMO text has no "all-round white light" option. CFR inserts "she shall exhibit an all-round white light or" before the existing clause. |
65
+ | **25(d)(ii)** | Y | Y | **DIFFERENT** | Same insertion. |
66
+ | **25(e)** | Y | Y | **DIFFERENT** | True IMO text ends "...conical shape, apex downwards." CFR appends: "A vessel of less than 12 meters in length is not required to exhibit this shape, but may do so." |
67
+ | 26(a)–26(c)(iii) | Y | Y | SAME | Verbatim (trivial wording only). |
68
+ | **26(d)** | Y | Y | **DIFFERENT (structural)** | Repo/intl 26(d) has substantive text (Annex II fishing-proximity signals apply). CFR `83.26(d)` = "[Reserved]" — same path, no text; content relocated to a new Inland-only `83.26(f)`. |
69
+ | 26(e) | Y | Y | SAME | Verbatim. |
70
+ | — | — | Y | US-only insertion | `83.26(f)(i)–(iii)`: full fishing-proximity signal text (trawler shooting/hauling, pair-trawling, purse-seiner), reproducing Annex II content directly inside Rule 26. |
71
+ | 27(a), 27(a)(i–iii), 27(b), 27(b)(i–iv) | Y | Y | SAME | Trivial wording only. |
72
+ | **27(c)** | Y | Y | **DIFFERENT** | Repo/intl: "A **power-driven** vessel...in addition to the lights prescribed in **Rule 24(a)**..." CFR drops "power-driven" (broadens scope) and cites all of Rule 24, not just 24(a). |
73
+ | 27(d), 27(d)(i–iii) | Y | Y | SAME | Verbatim. |
74
+ | — | — | Y | US-only insertion | `83.27(d)(iv)`: new subparagraph on dredge-pipeline lighting. |
75
+ | 27(e), 27(e)(i–ii), 27(f)–27(h) | Y | Y | SAME | Trivial wording only. |
76
+ | 28 | Y | **N ("Reserved")** | whole-rule clean absence | `§ 83.28` is entirely "[Reserved] (Rule 28)" — "constrained by her draft" is not an Inland Rules concept at all. |
77
+ | 29(a), 29(a)(i–iii) | Y | Y | SAME | Trivial wording only. |
78
+ | **29(b)** | Y | Y | **DIFFERENT** | CFR 83.29(b) drops the word "similar" ("prescribed for a vessel of her length"); the IMO text and the USCG international text both carry it, so the repo's "similar" is verbatim, not a quirk. |
79
+ | 30(a)–30(d) | Y | Y | SAME | Verbatim; the 50m/100m thresholds match on both sides. |
80
+ | **30(e)** | Y | Y | **DIFFERENT** | True IMO text: "...not in or near a narrow channel, fairway or where other vessels normally navigate..." CFR inserts "anchorage," into that list — narrows the exemption. |
81
+ | 30(f) | Y | Y | SAME | Verbatim; 12m/aground threshold matches. |
82
+ | — | — | Y | US-only insertion | `83.30(g)–(l)`: special-anchorage exemption, moored-barge lighting, mooring-buoy rules, named river-mile-marker exemptions. Large Inland-only block. |
83
+ | 31 | Y | Y | SAME | Trivial wording only. |
84
+
85
+ ### Correction, 2026-09-05 (issue #6)
86
+
87
+ The first pass marked 21(a), 21(b) and 23(b) `SAME*` with a note that the
88
+ repo's text had a transcription gap, and called 29(b)'s "similar" a repo
89
+ quirk. Re-checked against primary sources, all four calls were wrong:
90
+
91
+ - On the USCG amalgamated page, every clause the table said the repo
92
+ "omits" sits inside `‹‹ ››` — the page's legend defines double angle
93
+ brackets as Inland Rules text. The repo transcribes the International
94
+ text only, so their absence is correct, not a gap.
95
+ - The deposited 1972 treaty text (UNTS Vol. 1050, I-15824, Rules
96
+ 21, 23 and 29) has none of the three clauses and does carry "similar" in
97
+ 29(b). No later IMO amendment touched 21(a), 21(b), 23(b) or 29(b):
98
+ A.464(XII) is the only resolution that edits Part C definitions and its
99
+ items touch Rules 22, 23(c)/(d), 24, 25(b), 27, 28, 29(a)(iii) and 30,
100
+ among others — none of them 21(a), 21(b), 23(b) or 29(b). The <12 m
101
+ centreline-displacement provision it introduced lives at what is now
102
+ Rule 23(d)(iii), which the repo carries.
103
+ - The rows are now classified as CFR-side divergences (`DIFFERENT`), which
104
+ raises the dangerous-case count from 14 to 18 and leaves the verdict
105
+ unchanged. (The first pass stated 15, but its own table carried only 14
106
+ `DIFFERENT` rows; the count is now taken by tallying the table's Match
107
+ column — 17 `DIFFERENT` plus 26(d)'s `DIFFERENT (structural)` — and every
108
+ such row is a single path in `data/rules.json`.)
109
+
110
+ Sources for the correction, all retrieved 2026-09-05: eCFR
111
+ `https://www.ecfr.gov/api/renderer/v1/content/enhanced/current/title-33?part=83`
112
+ (§§ 83.21(a), 83.21(b), 83.23(b), 83.29(b)); USCG
113
+ `https://www.navcen.uscg.gov/navigation-rules-amalgamated` (raw HTML, the
114
+ `‹‹ ››` markers and the legend); UNTS
115
+ `https://treaties.un.org/doc/Publication/UNTS/Volume%201050/volume-1050-I-15824-English.pdf`;
116
+ `https://navcen.uscg.gov/sites/default/files/pdf/navRules/IMO_A464_12_COLREGS_Amd_19NOV81.pdf`;
117
+ `https://wwwcdn.imo.org/localresources/en/KnowledgeCentre/IndexofIMOResolutions/AssemblyDocuments/A.910(22).pdf`.
118
+
119
+ **Sources**: eCFR Title 33 Part 83 Subpart C, retrieved 2026-08-30 via
120
+ `https://www.ecfr.gov/api/renderer/v1/content/enhanced/current/title-33?part=83`;
121
+ cross-checked against `law.cornell.edu/cfr/text/33/83.24`, `83.27`, `83.30`.
122
+ `data/rules.json` (this repo, USCG amalgamated international text, retrieved
123
+ 2026-08-29) as the international side; mutation candidates additionally
124
+ cross-checked against independent COLREGS transcriptions (cultofsea.com, the
125
+ IALA COLREG reference site) to rule out repo transcription artifacts being
126
+ mistaken for CFR-side divergence.
127
+
128
+ ---
129
+
130
+ ## CLAIM 2 (Q-8, secondary) — REFUTED
131
+
132
+ **Claim**: no IMO amendment since 1972 has renumbered a Part C (Rules 20–31)
133
+ paragraph — insertions only (e.g. WIG craft at 23(c) in 2001).
134
+
135
+ **Method**: fetched the IMO resolution PDFs for all seven COLREG amendment
136
+ resolutions directly from `wwwcdn.imo.org`, and classified each amendment's
137
+ effect on Rules 20–31 as no change / insertion / renumbering.
138
+
139
+ **Verdict: REFUTED.** The seven-resolution list itself is correct with no
140
+ corrections needed. But two amendments demonstrably renumbered Part C
141
+ paragraphs — including the WIG amendment the claim cites as the model
142
+ insertion case.
143
+
144
+ | Amendment | In force | Effect on Part C | Detail |
145
+ |---|---|---|---|
146
+ | A.464(XII), 1981 | 1 Jun 1983 | **RENUMBERING** | Item 16: "Reletter existing paragraph (g), which becomes paragraph (h)" — pre-1983 Rule 24(g) becomes 24(h); new content is inserted as the new 24(g). Item 22: Rule 27(d)(iv) is deleted and (iv) renumbered to (iii). |
147
+ | A.626(15), 1987 | 19 Nov 1989 | no change | Touches Rules 1(e), 3(h), 8(f), 10(a)/(c), Annex I/IV only. |
148
+ | A.678(16), 1989 | 19 Apr 1991 | no change | Sole amendment is Rule 10(d) (TSS). |
149
+ | A.736(18), 1993 | 4 Nov 1995 | no change (lettering) | Rule 26(b)(i)/(c)(i)/(d) text amended in place; no reletter within Rules 20–31. |
150
+ | **A.910(22), 2001** | 29 Nov 2003 | **RENUMBERING** | Item 4, verbatim: "Add a new paragraph (c) as follows **and renumber accordingly**." Pre-2001 Rule 23(c) (small power-driven vessel <12m alternative lights) becomes 23(d); the new WIG-craft paragraph takes over the path `23(c)`. |
151
+ | A.1004(25), 2007 | 1 Dec 2009 | no change | Sole amendment is Annex IV (distress signals). |
152
+ | A.1085(28), 2013 | 1 Jan 2016 | no change | Adds Part F (Rules 39–41); doesn't touch Rules 20–31. |
153
+
154
+ The WIG amendment specifically is the counterexample: it is not a clean
155
+ append. The resolution's own operative text orders a renumber, and the
156
+ pre-existing small-vessel provision at `23(c)` was displaced to `23(d)` when
157
+ WIG lighting took the `23(c)` path.
158
+
159
+ **Sources**: IMO resolution PDFs, `wwwcdn.imo.org/localresources/en/KnowledgeCentre/IndexofIMOResolutions/AssemblyDocuments/{A.910(22),A.626(15),A.678(16),A.736(18),A.1004(25),A.1085(28)}.pdf`;
160
+ A.464(XII) via `navcen.uscg.gov/sites/default/files/pdf/navRules/IMO_A464_12_COLREGS_Amd_19NOV81.pdf` (full text matches IMO's own).
161
+
162
+ ---
163
+
164
+ ## CLAIM 3 (Q-6) — VERIFIED (Arabic component partially)
165
+
166
+ **Claim**: COLREG 72 was done in English and French, both equally authentic;
167
+ official Spanish and Russian translations deposited with the original;
168
+ Arabic and Chinese texts exist via IMO's official languages.
169
+
170
+ **Method**: fetched the actual UNTS deposit — Vol. 1050, registration
171
+ I-15824 (registered by IMCO/IMO 8 August 1977) — and quoted Article IX of
172
+ the Convention proper directly, rather than a secondary summary.
173
+
174
+ **Verdict: VERIFIED** for the English/French and Spanish/Russian
175
+ components, directly against the deposited treaty text. **VERIFIED for
176
+ Chinese, PARTIALLY VERIFIED for Arabic** on the third component (mechanism
177
+ confirmed, Arabic edition indicated but not independently re-fetched).
178
+
179
+ Exact quote, Article IX ("LANGUAGES"), immediately before the signature
180
+ clause:
181
+
182
+ > "The present Convention is established, together with the Regulations, in
183
+ > a single copy in the English and French languages, both texts being
184
+ > equally authentic. Official translations in the Russian and Spanish
185
+ > languages shall be prepared and deposited with the signed original."
186
+ >
187
+ > "DONE at London this twentieth day of October one thousand nine hundred
188
+ > and seventy-two."
189
+
190
+ The UNTS registration header separately notes the bundled Final Act (a
191
+ distinct instrument, not the Convention/Regulations) is authentic in
192
+ English, French, Russian **and** Spanish — that is a different document and
193
+ doesn't change the Convention's own English/French-only authenticity.
194
+
195
+ Arabic/Chinese: IMO's own multilingualism page confirms Arabic, Chinese,
196
+ English, French, Russian and Spanish as IMO's six official languages
197
+ (`imo.org/en/about/pages/imo-multilingualism.aspx`). A Chinese COLREG
198
+ edition is directly catalogued on IMO's e-publications platform (ISBN
199
+ 9789280160512, "避碰规则"), as is a Russian edition (ISBN 9789280141078,
200
+ "МППСС"). An Arabic edition is repeatedly indicated as available on the
201
+ same platform, but direct fetches to its product page returned HTTP 403
202
+ (bot-blocked); this rests on search-result paraphrase, not a page the agent
203
+ loaded and quoted itself — flagged as the one sub-claim not confirmed to
204
+ the same standard as the rest.
205
+
206
+ **Sources**: UNTS Vol. 1050, I-15824,
207
+ `https://treaties.un.org/doc/Publication/UNTS/Volume%201050/volume-1050-I-15824-English.pdf`
208
+ (retrieved 2026-08-30); `imo.org/en/about/pages/imo-multilingualism.aspx`;
209
+ `imo-epublications.org/content/books/9789280160512` (Chinese),
210
+ `imo-epublications.org/content/books/9789280141078` (Russian).
211
+
212
+ ---
213
+
214
+ ## CLAIM 4 (ADR 0004) — VERIFIED
215
+
216
+ **Claim**: signalk-server is Apache-2.0, and the prominent community plugins
217
+ are too; the plugin model loads plugins in-process, which is why ADR 0004
218
+ argues "every layer it consumes has to stay permissive."
219
+
220
+ **Method**: fetched `signalk-server`'s LICENSE file directly from GitHub;
221
+ identified actual top plugins by npm weekly download count via the npm
222
+ downloads API rather than a guessed list; fetched each plugin's LICENSE
223
+ file or npm registry `license` field; fetched SignalK's own plugin
224
+ developer docs for the loading-model claim.
225
+
226
+ **Verdict: VERIFIED**, after excluding one self-owned data point (below).
227
+
228
+ 1. **signalk-server license — VERIFIED Apache-2.0.** LICENSE file at
229
+ `raw.githubusercontent.com/SignalK/signalk-server/master/LICENSE` reads
230
+ "Apache License / Version 2.0."
231
+
232
+ 2. **In-process plugin loading — VERIFIED.** SignalK's plugin developer
233
+ docs (`github.com/SignalK/signalk-server/blob/master/docs/develop/plugins/README.md`)
234
+ state plugins install into the server's own `node_modules`, are
235
+ standard Node.js/TypeScript projects that export `(app) => {...}`
236
+ receiving the live server `app` object by reference, with `start`/`stop`/
237
+ `schema` called directly by the server process — standard `require()`/
238
+ module-graph loading, same process and memory space, no IPC or sandbox
239
+ boundary for the standard (non-WASM) plugin path.
240
+
241
+ 3. **"Prominent community plugins are permissively licensed" — VERIFIED**,
242
+ once one data point is excluded on conflict-of-interest grounds, not
243
+ evidentiary ones. The initial download-based sample turned up one
244
+ apparent counterexample, `signalk-noaa-space-weather`
245
+ (`github.com/mark-brannan/signalk-noaa-space-weather/blob/main/LICENSE`,
246
+ AGPL-3.0-or-later, 4,351 weekly downloads), which sits in the same
247
+ download band as several permissively-licensed independents also
248
+ checked (`signalk-to-nmea2000`, ISC; `signalk-n2kais-to-nmea0183`, ISC;
249
+ `@signalk/udp-nmea-plugin`, Apache-2.0). That plugin is maintained by
250
+ this repo's own author (Mark Brannan), was only recently relicensed to
251
+ AGPL, and carries 1 GitHub star — it is not third-party community
252
+ evidence either for or against the ADR's claim, so it is excluded here
253
+ rather than counted as a refutation. With it excluded, every
254
+ independently-installed plugin checked in this pass is permissively
255
+ licensed (Apache-2.0 or ISC); one further plugin, `sk-ais-status-plugin`,
256
+ claims `"Apache-20"` in package.json (not a real SPDX identifier) but
257
+ carries no LICENSE file in its repo — unverifiable, not counted either
258
+ way. This is also consistent with the independent, larger stars-based
259
+ sample cited in ADR 0004 itself (19 of the top 20 SignalK-ecosystem
260
+ projects by GitHub stars are Apache-2.0, one MIT — GitHub comment
261
+ `mark-brannan/colregs#4` at `issuecomment-5467185331`), which used a
262
+ different metric and a different population and did not include
263
+ `signalk-noaa-space-weather` (1 star, well outside a top-20-by-stars
264
+ cutoff).
265
+
266
+ **Bearing on ADR 0004**: all three premises the "every layer it consumes
267
+ has to stay permissive" argument needs — signalk-server's own license,
268
+ in-process loading, and ecosystem permissiveness among independent,
269
+ third-party plugins — check out. No open tension with ADR 0004's evidence
270
+ comment remains once the self-owned outlier is set aside for the reason
271
+ given above, not because its license doesn't count.
272
+
273
+ **Sources**: `raw.githubusercontent.com/SignalK/signalk-server/master/LICENSE`;
274
+ `raw.githubusercontent.com/SignalK/signalk-server/master/docs/develop/plugins/README.md`;
275
+ npm downloads API (`api.npmjs.org/downloads/point/last-week/<pkg>`, window
276
+ 2026-08-23–2026-08-29); per-package LICENSE files and npm registry `license`
277
+ fields as cited inline above; `github.com/mark-brannan/signalk-noaa-space-weather`
278
+ repo metadata (1 star, AGPL-3.0 license) via `gh api`.
@@ -0,0 +1,330 @@
1
+ # Verification: anchored-vessel scenarios under Rule 27(f) and Rule 28
2
+
3
+ Date: 2026-09-05
4
+
5
+ Scope: corroborating real-world evidence, for issue #14, on two questions the
6
+ rule text alone cannot settle — (Q1) whether mine countermeasures vessels
7
+ genuinely operate and signal under Rule 27(f) while **at anchor**, and (Q2)
8
+ whether "constrained by her draught" is understood to apply, lapse, or persist
9
+ for a vessel **at anchor**. Rule text is treated as already established and is
10
+ quoted only where the quotation is itself the evidence. Verdict interpretation
11
+ for `data/applicability.json` is left to the implementing session; this file
12
+ records evidence.
13
+
14
+ ---
15
+
16
+ ## QUESTION 1 (Rule 27(f) at anchor) — CORROBORATED
17
+
18
+ **Question**: is the "at anchor" branch of Rule 27(f) genuine operational
19
+ practice, or a legally-provided corner case never seen in the water?
20
+
21
+ **Verdict: CORROBORATED as a deliberate, purposive provision, and partially
22
+ corroborated as observed practice.** The strongest evidence is legislative
23
+ rather than operational: the anchored branch does not date from 1972 — it was
24
+ *added* in 1981, in the same amendment that widened the rule from
25
+ "minesweeping" to "mine clearance". Direct documentary evidence that an
26
+ anchored MCM vessel actually hoisted the three balls was not found; evidence
27
+ that MCM vessels routinely anchor inside their operating area was.
28
+
29
+ ### 1a. The anchored branch is a 1981 addition, not original drafting
30
+
31
+ Original 1972 text, Rule 27(f), verbatim:
32
+
33
+ > "(f) A vessel engaged in minesweeping operations shall, in addition to the
34
+ > lights prescribed for a power-driven vessel in Rule 23, exhibit three
35
+ > all-round green lights or three balls. One of these lights or shapes shall be
36
+ > exhibited at or near the foremast head and one at each end of the fore yard.
37
+ > These lights or shapes indicate that it is dangerous for another vessel to
38
+ > approach closer than 1,000 metres astern or 500 metres on either side of the
39
+ > minesweeper."
40
+
41
+ No Rule 30 branch. No "as appropriate". The anchored alternative arrives with
42
+ IMO (IMCO) resolution **A.464(XII), adopted 19 November 1981** (in force
43
+ 1 June 1983), item 24, which replaces the whole paragraph:
44
+
45
+ > "A vessel engaged in mineclearance operations shall in addition to the lights
46
+ > prescribed for a power-driven vessel in Rule 23 **or to the lights or shape
47
+ > prescribed for a vessel at anchor in Rule 30 as appropriate**, exhibit three
48
+ > all-round green lights or three balls..."
49
+
50
+ The same resolution (items 19 and 23) replaces "minesweeping" with "mine
51
+ clearance" throughout, which Cockcroft & Lameijer explain was done "to include
52
+ other operations such as minehunting" — i.e. exactly the class of operation
53
+ (sonar hunting, ROV/diver disposal) in which a vessel holds a fixed position
54
+ rather than towing a sweep. A drafting body that inserts an anchored branch at
55
+ the same moment it extends the rule to station-keeping operations is legislating
56
+ for a case it expected to occur, not tidying prose.
57
+
58
+ Cockcroft's commentary on Rule 27 confirms the wider design intent behind
59
+ "special operations at anchor" signals — the 1960 Regulations' Rule 11(d)
60
+ already required certain hampered vessels to show hampered-vessel signals *in
61
+ addition to* anchor signals, "to warn other vessels to keep well clear", and
62
+ Rule 27(b)(iv) of the 1972 Regulations carries that forward.
63
+
64
+ **Confidence: high** for the legislative-history claim. Both texts were read
65
+ directly (1972 original and the 1981 resolution's own operative text), not via
66
+ a secondary summary.
67
+
68
+ ### 1b. MCM vessels do anchor in the operating area
69
+
70
+ USS *Guardian* (MCM-5) Command Operations Report for calendar 1993 (US Navy
71
+ Naval History and Heritage Command archives), chronology entries, verbatim:
72
+
73
+ > "Underway Corpus Christi OPAREA for mine counter measures (MCM) training.
74
+ > Anchored during evening hours."
75
+ >
76
+ > "Underway Corpus Christi OPAREA for MCM training. Anchored each evening."
77
+ >
78
+ > "Underway Corpus Christi OPAREA for MCM training. Anchored at night."
79
+ > (twice)
80
+
81
+ Four separate periods in one year in which an MCM ship anchored inside its MCM
82
+ operating area rather than returning to port. This is a US Navy primary source
83
+ and directly supports the "pause in operations while anchored in the operating
84
+ area" scenario. It does **not** state what lights were shown: a ship anchored
85
+ overnight with hunting suspended is arguably no longer "engaged in mine
86
+ clearance operations", in which case Rule 30 alone applies. So this
87
+ corroborates the operational posture, not the signal.
88
+
89
+ **Confidence: high** that MCM vessels anchor in their operating areas;
90
+ **low** that this particular case involved the 27(f) display.
91
+
92
+ ### 1c. Practitioner/training material treats anchored MCM as a standard case
93
+
94
+ eColregs (COLREGs training resource, ecolregs.com) carries four
95
+ dedicated entries specifically for the anchored case — "A vessel engaged in
96
+ mine clearance operations at anchor — lights" and "— shapes", alongside the
97
+ underway pair. The anchored-lights page renders three all-round green lights
98
+ per Rule 27(f) *plus* the two Rule 30(a) anchor lights for a 50–100 m vessel.
99
+ Where its catalogue thinks a status only exists underway, it says so in the
100
+ entry title (see Q2 below) — so the existence of a separately-titled "at
101
+ anchor" entry for mine clearance is a positive signal about how the case is
102
+ understood.
103
+
104
+ **Confidence: medium.** Authoritative-flavoured training material, but it is
105
+ teaching the rule, not reporting a sighting.
106
+
107
+ ### 1d. What was NOT found
108
+
109
+ - No NATO / USN / RN mine warfare doctrine publication (unclassified) stating
110
+ that an anchored MCM vessel displays the 27(f) signal. NWP 3-15 / MCWP
111
+ 3-3.1.2 and JP 3-15 were located but neither addresses COLREG signalling for
112
+ anchored MCM units in the portions reachable publicly.
113
+ - No IMO NCSR/NAV correspondence specific to Rule 27(f) and anchoring.
114
+ - No casualty or incident report involving an anchored MCM vessel's lights.
115
+ - UK Admiralty Annual Notice to Mariners **No. 10** ("Mine-laying and mine
116
+ countermeasures exercises — Waters around the British Isles", source: Ministry
117
+ of Defence (Navy)) is the closest operational instrument found. It directs
118
+ that ships engaged in operations "will show the lights or shapes prescribed in
119
+ the International Regulations for Preventing Collisions at Sea 1972, Rule
120
+ 27(f)" and that approaching within 1000 metres is dangerous, and it describes
121
+ minehunters "controlling a wire-guided submersible or working in conjunction
122
+ with an inflatable rubber dinghy from which divers may be operating at up to
123
+ 1000 metres from the minehunter" — a station-keeping posture. It never
124
+ mentions anchoring either way. **Absence of a prohibition, not evidence of the
125
+ practice.**
126
+
127
+ **Net**: the anchored branch of 27(f) is a purposive 1981 insertion tied to the
128
+ extension of the rule to minehunting; MCM vessels demonstrably anchor in their
129
+ operating areas; no source found says the anchored display is a dead letter, and
130
+ none was found documenting it in use. Modelling the anchored branch is
131
+ well-founded; claiming it is commonly seen is not.
132
+
133
+ **Sources**:
134
+ - Original 1972 COLREG text, Centre for International Law, NUS,
135
+ `https://cil.nus.edu.sg/wp-content/uploads/2019/02/1972-Convention-on-Regulations-for-Preventing-Collisions-at-Sea.pdf`
136
+ (retrieved 2026-09-05; Rule 27(f) and Rule 28 read verbatim).
137
+ - IMCO resolution A.464(XII), 19 November 1981, via USCG NAVCEN,
138
+ `https://www.navcen.uscg.gov/sites/default/files/pdf/navRules/IMO_A464_12_COLREGS_Amd_19NOV81.pdf`
139
+ (items 19, 23, 24; retrieved 2026-09-05).
140
+ - A. N. Cockcroft & J. N. F. Lameijer, *A Guide to the Collision Avoidance
141
+ Rules*, 6th ed. (Elsevier/Butterworth-Heinemann), commentary on Rules 3(g),
142
+ 3(h), 3(i), 18(d), 27 and 28. Consulted 2026-09-05 from an unlicensed
143
+ online copy; excerpts below are kept short and should be re-checked against
144
+ a licensed edition before being quoted downstream.
145
+ - USS *Guardian* (MCM-5) Command Operations Report 1993, Naval History and
146
+ Heritage Command,
147
+ `https://www.history.navy.mil/content/dam/nhhc/research/archives/command-operation-reports/ship-command-operation-reports/g/guardian-mcm-5-ii/pdf/1993.pdf`
148
+ (retrieved 2026-09-05).
149
+ - UKHO Admiralty Annual Notice to Mariners No. 10, NP247(1),
150
+ `https://msi.admiralty.co.uk/nms/annual/10.pdf` (retrieved 2026-09-05).
151
+ - eColregs, "A vessel engaged in mine clearance operations at anchor — lights"
152
+ (item 360) and "— shapes" (item 362), `https://www.ecolregs.com/`
153
+ (retrieved 2026-09-05).
154
+
155
+ ---
156
+
157
+ ## QUESTION 2 (constrained by her draught, at anchor) — REFUTED as a valid state
158
+
159
+ **Question**: is `activity: constrained-by-draught` + `position: anchored` a
160
+ real operational state anyone models or lights, or is it inapplicable the
161
+ moment the vessel stops being underway?
162
+
163
+ **Verdict: REFUTED.** Every source located that speaks to the point at all
164
+ treats the Rule 28 signal as an underway-only signal. No source was found —
165
+ commentary, IMO guidance, case law, P&I bulletin, pilotage guidance or training
166
+ material — that contemplates a vessel at anchor showing the Rule 28 signal or
167
+ holding CBD status. The refutation rests on four independent lines, none of
168
+ which is merely a restatement of Rule 3(h).
169
+
170
+ ### 2a. The standard commentary says so directly
171
+
172
+ Cockcroft & Lameijer, comment on Rule 28, after noting that the signal is
173
+ optional and that without it the Rule 18 privilege does not apply:
174
+
175
+ > "The three red lights must be shown in conjunction with the lights for a
176
+ > power-driven vessel under way."
177
+
178
+ That sentence is the direct answer: the Rule 28 signal is defined only as
179
+ an addition to the *underway* power-driven light set. There is no anchored
180
+ composite.
181
+
182
+ The same commentary, on Rule 3(h), also gives the status an explicit
183
+ termination condition tied to navigation, not to a vessel's dimensions:
184
+
185
+ > "The signals should only be shown when the ability to alter course is severely
186
+ > restricted. On passing clear of the area of relatively shallow water the
187
+ > signals must no longer be displayed."
188
+
189
+ **Confidence: high.** This is the most-cited English-language COLREG
190
+ commentary, and the sentence is unambiguous. (Caveat as above on the copy used.)
191
+
192
+ ### 2b. IMO's own approved guidance presupposes a vessel making way
193
+
194
+ Two "guidance for the uniform application" items approved by the IMO Maritime
195
+ Safety Committee, as reproduced in Cockcroft. The first (on Rule 3(h)) says
196
+ navigable width as well as depth counts, and that a vessel with small underkeel
197
+ clearance but adequate room to take avoiding action is not CBD. The second (on
198
+ Rule 18(d)) says a CBD vessel
199
+
200
+ > "should, when showing the signals prescribed by Rule 28, have her engines
201
+ > ready for immediate manœuvre and proceed at safe speed as required by Rule 6."
202
+
203
+ The second is decisive on its face: IMO's condition for *showing* the Rule 28
204
+ signal is that the vessel proceed at a safe speed with engines ready — a
205
+ description of a vessel underway and making way. An anchored vessel cannot
206
+ satisfy it. The first repeatedly frames the test in terms of *navigating* and
207
+ *manœuvrability*.
208
+
209
+ **Confidence: high on content, medium on citation form.** These items were read
210
+ in Cockcroft's reproduction, not fetched from an IMO document; the IMO document
211
+ number carrying them was not located in this pass. Anyone citing them formally
212
+ should chase the underlying MSC circular / guidance annex first.
213
+
214
+ ### 2c. The 1987 amendment strengthened, not loosened, the underway framing
215
+
216
+ Assembly resolution A.626(15) (1987, in force 19 November 1989) changed Rule
217
+ 3(h) from "available depth of navigable water" to "available depth **and width**
218
+ of navigable water". Cockcroft: "The purpose of this amendment was to confirm
219
+ and strengthen the above clarification." The direction of travel over 15 years
220
+ of amendment is toward *manœuvring room while navigating*, and away from a
221
+ draught-based property a hull carries around with it. A ship at anchor has no
222
+ "course she is following" to deviate from, and the amendment history shows IMO
223
+ tightening rather than relaxing that reading.
224
+
225
+ **Confidence: high** for the resolution number and in-force date (confirmed in
226
+ this repo's 2026-08-30 verification pass, CLAIM 2); **medium** for the specific
227
+ wording change, which rests on Cockcroft alone; **medium** for the inference
228
+ drawn from it.
229
+
230
+ ### 2d. Structural: Annex I positions the Rule 28 lights relative to masthead lights
231
+
232
+ Annex I, as amended by A.464(XII) item 38, new §2(f)(ii):
233
+
234
+ > "When it is impracticable to carry the all-round lights prescribed by Rule
235
+ > 27(b)(i) or Rule 28 below the masthead lights, they may be carried above the
236
+ > after masthead light(s) or vertically in between the forward masthead light(s)
237
+ > and after masthead light(s)..."
238
+
239
+ and item 44, new §3(c), likewise positions the Rule 28 lights "vertically
240
+ between the forward masthead light(s) and the after masthead light(s)". The
241
+ positioning rules for the Rule 28 lights are written *entirely* in terms of
242
+ masthead lights, which a vessel at anchor does not exhibit. There is no Annex I
243
+ provision positioning the Rule 28 lights relative to Rule 30 anchor lights —
244
+ unlike, e.g., the treatment mine clearance gets in Rule 27(f) itself.
245
+
246
+ **Confidence: high.** Read directly from the resolution text.
247
+
248
+ ### 2e. Nobody models the combination
249
+
250
+ eColregs enumerates the light/shape catalogue exhaustively and titles each
251
+ entry by status. It carries "A vessel restricted in her ability to manœuvre when
252
+ at anchor — lights" and "A vessel engaged in mine clearance operations at anchor
253
+ — lights/shapes", i.e. it does model anchored variants where they exist. For
254
+ Rule 28 it carries only:
255
+
256
+ - "A vessel constrained by her draught under 50 m **underway** — lights"
257
+ - "A vessel constrained by her draught over 50 m **underway** — lights"
258
+ - "A vessel constrained by her draught **underway** — shapes"
259
+
260
+ No anchored variant exists in the catalogue, and the word "underway" is in the
261
+ title of every CBD entry — a distinction the same catalogue does not make for
262
+ statuses it considers position-neutral.
263
+
264
+ **Confidence: medium-high.** Absence of an entry is weaker than a positive
265
+ statement, but this catalogue demonstrably *does* create anchored entries where
266
+ it thinks they exist, which makes the absence meaningful.
267
+
268
+ ### 2f. On the "anchored deep-draught tanker awaiting the tide" scenario
269
+
270
+ Searched for, not found: no P&I club circular, flag-state guidance, pilotage
271
+ instruction, IMO interpretive document or admiralty judgment was located that
272
+ addresses a deep-draught vessel's CBD status while anchored awaiting sufficient
273
+ rise of tide. **No corroborating evidence found** that anyone treats this as a
274
+ named operational state. The nearest adjacent authority found is the boundary
275
+ rule on when a vessel counts as anchored at all — Cockcroft, comment on Rule
276
+ 3(i):
277
+
278
+ > "A vessel is only considered to be at anchor when the anchor is down and is
279
+ > holding. Vessels using an anchor to turn in the river, or riding to their
280
+ > chains with anchors unshackled, or dredging with the tide, or dragging their
281
+ > anchors have been held to be under way."
282
+
283
+ That is a case-law-backed statement (Cockcroft cites it as held, though the
284
+ cases are not named at that point in the text) and it cuts the other way from
285
+ the modelling question: it narrows "at anchor" rather than widening CBD. A ship
286
+ dredging down a channel on her anchor is *underway* and may therefore be CBD;
287
+ one brought up and holding is not underway and, on 2a–2d, is not CBD.
288
+
289
+ ### 2g. What was NOT found
290
+
291
+ - No admiralty case in which a vessel's CBD status while anchored was in issue.
292
+ - No P&I club loss-prevention bulletin on Rule 28 and anchoring.
293
+ - No IMO NCSR/NAV correspondence on the point.
294
+ - No practitioner-forum thread (gCaptain, YBW or similar) squarely on "can you
295
+ be CBD at anchor" — searches surfaced only general Rule 28 and general
296
+ anchoring threads. Practitioner testimony is therefore **absent**, not
297
+ supporting or contradicting.
298
+
299
+ **Net**: the combination `constrained-by-draught` + `anchored` has no support in
300
+ any source located, and four independent lines of evidence — commentary, IMO
301
+ approved guidance, amendment history, and Annex I's light-positioning rules —
302
+ point the other way. It should be treated as an invalid combination, not as an
303
+ under-specified one.
304
+
305
+ **Sources**:
306
+ - Cockcroft & Lameijer, *A Guide to the Collision Avoidance Rules*, 6th ed.,
307
+ comments on Rules 3(g)–3(i), 18(d), 27, 28 (caveat as cited in Q1).
308
+ - IMCO resolution A.464(XII), 19 November 1981, items 38 and 44 (Annex I), via
309
+ USCG NAVCEN, URL as cited in Q1.
310
+ - Original 1972 COLREG text, CIL NUS, URL as cited in Q1 (Rule 3(h) pre-1987
311
+ wording; Rule 28 unchanged since 1972).
312
+ - IMO Assembly resolution A.626(15) — number and date confirmed in
313
+ `docs/verification/2026-08-30-q6-q8.md`, CLAIM 2; wording change per Cockcroft.
314
+ - eColregs Rule 28 catalogue entries (items 89, 90, 91) and Rule 27/30 anchored
315
+ entries (items 294, 360, 362), `https://www.ecolregs.com/`
316
+ (retrieved 2026-09-05).
317
+ - Negative results: WebSearch across IMO, P&I, admiralty-reporter and
318
+ practitioner-forum sources, 2026-09-05, returned nothing on point (see 2f,
319
+ 2g).
320
+
321
+ ---
322
+
323
+ ## Method note
324
+
325
+ All searching was done on 2026-09-05 via WebSearch/WebFetch plus direct
326
+ retrieval of source PDFs. Where a search engine's own prose summary asserted a
327
+ conclusion (several did, e.g. "Rule 28's provisions cease to apply when
328
+ anchored"), that summary was **discarded** and not used as evidence: it is model
329
+ output, not a source. Only text read directly out of a fetched document is
330
+ quoted above.