colregs 0.2.4 → 0.3.0
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.
- package/PROVENANCE.md +3 -3
- package/README.md +11 -4
- package/data/corpora.json +41 -0
- package/data/editions.json +27 -0
- package/data/rules.json +171 -599
- package/data/text/intl/2016/en-US.uscg.json +877 -0
- package/data/text/intl/2016/es.boe.json +23 -0
- package/data/text/intl/2016/fi.finlex.json +22 -0
- package/data/text/us/inland/2014/en-US.ecfr.json +22 -0
- package/data/version.json +1 -1
- package/docs/adr/0001-name-and-jurisdiction-model.md +42 -2
- package/docs/adr/0003-language-as-a-dimension.md +8 -7
- package/docs/adr/0012-trace-and-rule2-departure-api.md +3 -4
- package/docs/adr/0013-corpus-files-with-editions.md +70 -0
- package/docs/budgets.json +13 -3
- package/docs/gates.json +3 -3
- package/docs/requirements.md +41 -29
- package/docs/timeline.md +102 -0
- package/docs/verification/2026-09-09-text-slug-straw-man.md +3 -2
- package/package.json +1 -1
- package/schema/corpora.schema.json +68 -0
- package/schema/corpus.schema.json +329 -0
- package/schema/editions.schema.json +47 -0
- package/schema/rules.schema.json +20 -90
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "intl@2016.es.boe",
|
|
3
|
+
"edition": "intl@2016",
|
|
4
|
+
"edition_status": "claimed",
|
|
5
|
+
"language": "es",
|
|
6
|
+
"source_id": "boe",
|
|
7
|
+
"tier": "national",
|
|
8
|
+
"normalization": "NFC",
|
|
9
|
+
"source": {
|
|
10
|
+
"publisher": "Agencia Estatal Boletín Oficial del Estado",
|
|
11
|
+
"title": "Instrumento de Adhesión de España al Convenio sobre el Reglamento internacional para prevenir los abordajes, 1972",
|
|
12
|
+
"url": "https://www.boe.es/",
|
|
13
|
+
"retrieved": null
|
|
14
|
+
},
|
|
15
|
+
"rights": {
|
|
16
|
+
"source_text": "BOE aviso legal: reuse permitted, commercial and non-commercial; consolidated texts must not be represented as official",
|
|
17
|
+
"redistribution_basis": "BOE aviso legal, with attribution",
|
|
18
|
+
"attribution": "Fuente de los datos: Agencia Estatal Boletín Oficial del Estado",
|
|
19
|
+
"package_licence": "Apache-2.0"
|
|
20
|
+
},
|
|
21
|
+
"note": "Stub: the BOE instrument id is not yet located; resolve it and the retrieval date before any text lands -- Q-7.",
|
|
22
|
+
"paragraphs": {}
|
|
23
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "intl@2016.fi.finlex",
|
|
3
|
+
"edition": "intl@2016",
|
|
4
|
+
"edition_status": "claimed",
|
|
5
|
+
"language": "fi",
|
|
6
|
+
"source_id": "finlex",
|
|
7
|
+
"tier": "national",
|
|
8
|
+
"normalization": "NFC",
|
|
9
|
+
"source": {
|
|
10
|
+
"publisher": "Finlex (Oikeusministeriö), Suomen säädöskokoelman sopimussarja",
|
|
11
|
+
"title": "Asetus kansainvälisistä säännöistä yhteentörmäämisen ehkäisemiseksi merellä vuonna 1972 tehdyn yleissopimuksen voimaansaattamisesta, SopS 30/1977",
|
|
12
|
+
"url": "https://www.finlex.fi/fi/sopimukset/sopsteksti/1977/19770030",
|
|
13
|
+
"retrieved": "2026-09-12"
|
|
14
|
+
},
|
|
15
|
+
"rights": {
|
|
16
|
+
"source_text": "Tekijänoikeuslaki 404/1961 §9: no copyright in treaties and their official translations",
|
|
17
|
+
"redistribution_basis": "Finlex FAQ: published materials carry no usage restriction; open data CC BY 4.0",
|
|
18
|
+
"package_licence": "Apache-2.0"
|
|
19
|
+
},
|
|
20
|
+
"note": "Stub: identity and provenance only; the Finnish text is not transcribed yet. GATE-2 is adopted in docs/gates.json, settled by ADR 0013, so nothing structural blocks it.",
|
|
21
|
+
"paragraphs": {}
|
|
22
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "us/inland@2014.en-US.ecfr",
|
|
3
|
+
"edition": "us/inland@2014",
|
|
4
|
+
"edition_status": "claimed",
|
|
5
|
+
"language": "en-US",
|
|
6
|
+
"source_id": "ecfr",
|
|
7
|
+
"tier": "national",
|
|
8
|
+
"normalization": "NFC",
|
|
9
|
+
"source": {
|
|
10
|
+
"publisher": "Office of the Federal Register, eCFR",
|
|
11
|
+
"title": "33 CFR Part 83, Navigation Rules (Inland)",
|
|
12
|
+
"url": "https://www.ecfr.gov/current/title-33/chapter-I/subchapter-E/part-83",
|
|
13
|
+
"retrieved": null
|
|
14
|
+
},
|
|
15
|
+
"rights": {
|
|
16
|
+
"source_text": "Work of the United States Government, not subject to copyright in the United States (17 U.S.C. 105)",
|
|
17
|
+
"redistribution_basis": "17 U.S.C. 105",
|
|
18
|
+
"package_licence": "Apache-2.0"
|
|
19
|
+
},
|
|
20
|
+
"note": "Stub: a second jurisdiction, so the key shape is exercised on both axes; the delta itself waits on Q-11 -- REQ-SCOPE-3.",
|
|
21
|
+
"paragraphs": {}
|
|
22
|
+
}
|
package/data/version.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# ADR 0001 — Package name, and jurisdiction as a dimension
|
|
2
2
|
|
|
3
3
|
Date: 2026-08-29
|
|
4
|
-
Status: accepted; amended 2026-09-05 and 2026-09-
|
|
5
|
-
see Amendments). CEVNI's text stays blocked; ADR 0010
|
|
4
|
+
Status: accepted; amended 2026-09-05, 2026-09-09 and 2026-09-12 (licence
|
|
5
|
+
terms verified, see Amendments). CEVNI's text stays blocked; ADR 0010
|
|
6
|
+
unblocks modelling it.
|
|
6
7
|
|
|
7
8
|
## Context
|
|
8
9
|
|
|
@@ -225,3 +226,42 @@ corpus candidates, previously unchecked. Q-6 (authenticity) verified
|
|
|
225
226
|
`es` clears REQ-PROV-2; `fi` and `en`/`fr` via UNTS stay open. Updating
|
|
226
227
|
`docs/requirements.md` Q-7 for this is left as a follow-up (concurrent
|
|
227
228
|
edits to that file are in flight elsewhere).
|
|
229
|
+
|
|
230
|
+
### 2026-09-12 — UNTS and Finlex resolved (issue #81, Q-7)
|
|
231
|
+
|
|
232
|
+
Re-ran both 2026-09-09 checks with a fetch that renders what looked like a
|
|
233
|
+
JS-only shell. Finlex turned out not to need a browser: its Next.js page
|
|
234
|
+
ships the article text inline in a React Server Components payload that a
|
|
235
|
+
plain fetch already receives, just not as visible HTML.
|
|
236
|
+
|
|
237
|
+
**Finlex (`fi`) — resolved clean.** §9, Tekijänoikeuslaki 404/1961: no
|
|
238
|
+
copyright in laws and decrees; in other documents enacted via the Statutes
|
|
239
|
+
Collection and in treaties and similar instruments containing international
|
|
240
|
+
obligations; in the decisions and statements of an authority or other public
|
|
241
|
+
body; or in official translations of the above. Finlex's own FAQ
|
|
242
|
+
(`finlex.fi/fi/ukk`, Ministry of Justice) states published materials carry
|
|
243
|
+
no usage restrictions, and machine-readable open data is licensed CC BY 4.0.
|
|
244
|
+
EFFI's contested claim concerns the compiled database, not the statute text
|
|
245
|
+
§9 already excludes; Finlex's current primary statement outranks that
|
|
246
|
+
secondary source.
|
|
247
|
+
|
|
248
|
+
**UNTS (`en`/`fr`) — resolved, and it does not clear.** Checked the UNTS
|
|
249
|
+
intro and FAQ pages on treaties.un.org and the copyright and terms-of-use
|
|
250
|
+
pages on un.org directly; none needed a browser. No UNTS-specific rights
|
|
251
|
+
page exists anywhere in that set — every path leads to the same general UN
|
|
252
|
+
terms already found blocking CEVNI: personal, non-commercial use, with no
|
|
253
|
+
right to resell, redistribute or create derivative works. Confirmed
|
|
254
|
+
blocked, not merely ambiguous.
|
|
255
|
+
|
|
256
|
+
Per Q-7's per-language routing, `es` (BOE, cleared 2026-09-09) is the
|
|
257
|
+
corpus that unblocks the first non-`intl` text; `fi` is now open alongside
|
|
258
|
+
it. UNTS stays closed pending written UN permission or a national
|
|
259
|
+
republication of the authentic `en`/`fr` text.
|
|
260
|
+
|
|
261
|
+
Sources: `fi` —
|
|
262
|
+
<https://www.finlex.fi/fi/laki/ajantasa/1961/19610404> (§9);
|
|
263
|
+
<https://www.finlex.fi/fi/ukk> (usage terms, CC BY 4.0). UNTS —
|
|
264
|
+
<https://treaties.un.org/Pages/Content.aspx?path=DB/UNTS/pageIntro_en.xml>;
|
|
265
|
+
<https://treaties.un.org/Pages/Overview.aspx?path=overview/faq/page1_en.xml>;
|
|
266
|
+
<https://www.un.org/en/about-us/copyright>;
|
|
267
|
+
<https://www.un.org/en/about-us/terms-of-use>.
|
|
@@ -79,8 +79,10 @@ with BCP 47 codes, structured as three layers:
|
|
|
79
79
|
consolidated state*: the skeleton declares, as data, the amendment state
|
|
80
80
|
it consolidates, and every corpus declares the amendment state its
|
|
81
81
|
source reflects (REQ-LANG-10). A mismatch is legitimate but
|
|
82
|
-
machine-visible — declared staleness, never silence.
|
|
83
|
-
|
|
82
|
+
machine-visible — declared staleness, never silence. (GATE-2 adopted in
|
|
83
|
+
ADR 0013: `data/editions.json` now registers editions in force
|
|
84
|
+
*concurrently*, so "historical states are prior package versions" holds
|
|
85
|
+
only for a fully superseded edition, not one still in transition.) A
|
|
84
86
|
renumbering amendment is a major version under REQ-PKG-4 — but it is
|
|
85
87
|
resolved by *issuing new paragraph paths and deprecating the old ones*
|
|
86
88
|
(REQ-MODEL-10/11), never by repointing an existing path at different
|
|
@@ -204,11 +206,10 @@ check. What was declined, and why — recorded so it isn't re-argued:
|
|
|
204
206
|
renumbering lands — or when Q-8's check of the first national
|
|
205
207
|
amalgamation shows paragraph paths do not survive it.
|
|
206
208
|
- **A full temporal/legal-version model** (instrument → edition → corpus as
|
|
207
|
-
first-class layers; GATE-2).
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
that is a new ADR.
|
|
209
|
+
first-class layers; GATE-2). Declined *here*; the cheap 80% (declared
|
|
210
|
+
amendment state, machine-visible mismatch) was adopted instead. **Re-taken
|
|
211
|
+
and adopted in ADR 0013**, on the trigger this bullet named: a
|
|
212
|
+
jurisdiction requiring multiple concurrent editions.
|
|
212
213
|
- **`dir: ltr|rtl` metadata per language.** Derivable from the language
|
|
213
214
|
tag via CLDR by any consumer that needs it; storing it invites drift.
|
|
214
215
|
|
|
@@ -183,9 +183,8 @@ trace becomes a fixture; a certified grid, a `Rule2DepartureModel`.
|
|
|
183
183
|
2. `Trace`, `appliedConductEntries` against those fixtures — phase 3
|
|
184
184
|
starts here.
|
|
185
185
|
3. `evaluateConduct` with verdicts and phases; the constants above.
|
|
186
|
-
4. `evaluateRule2Departure` once a grid exists. Until then the name is
|
|
187
|
-
|
|
188
|
-
is a stub wearing a status.
|
|
186
|
+
4. `evaluateRule2Departure` once a grid exists. ~~Until then the name is reserved and nothing exported: a stub answering `inconclusive-in-model` is a stub wearing a status.~~
|
|
187
|
+
**Struck. Reserving the name was never the policy here: a name gets an export the day it is written down, throwing or answering `inconclusive-in-model`. Withholding an export to look careful is the failure mode, not the stub. — Solace, 2026-09-13**
|
|
189
188
|
|
|
190
189
|
## Register
|
|
191
190
|
|
|
@@ -200,4 +199,4 @@ trace becomes a fixture; a certified grid, a `Rule2DepartureModel`.
|
|
|
200
199
|
| Vague-quantity constants live in colregs; `SolverParameters` on the model and echoed on the finding, `colregs_version` naming the release solved against; nothing else on the model is API | ✎ | the first constant a conduct entry reads; Q-19's sensitivity matrix |
|
|
201
200
|
| `Rule2DepartureFinding` field set — `rules`, `Rule2DepartureAdvisory[]`, no banner cite (it is a function of `status`); the status alphabet is colregs' (ADR 0005 §5), not this package's to rename | ✎ | proposal v4 §4's sensitivity matrix; Q-19, Q-20 |
|
|
202
201
|
| No *situation* input names a departure; the grid does, and is named in every finding | ✎ | — |
|
|
203
|
-
|
|
|
202
|
+
| A name is exported the day it is written down, throwing or answering `inconclusive-in-model`; exports carry TSDoc's `@beta` release tag until a fixture backs them | ✎ | — |
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# ADR 0013 — Rule text as corpus files under an edition registry (GATE-2 adopted)
|
|
2
|
+
|
|
3
|
+
Date: 2026-09-12
|
|
4
|
+
Status: accepted (2026-09-13)
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
|
|
8
|
+
ADR 0003 made language a dimension and sketched its layout, but nothing
|
|
9
|
+
landed, and its GATE-2 (an edition layer between instrument and corpus) is
|
|
10
|
+
due for re-take *before* the first non-English corpus. Finlex (`fi`) and BOE
|
|
11
|
+
(`es`) are both licence-clear (ADR 0001, 2026-09-12), so the next text to
|
|
12
|
+
land forces the key shape. This ADR fixes the keys and leaves the words for
|
|
13
|
+
issue #98. A sibling proposal (branch `multi-jurisdiction-schema`, option A)
|
|
14
|
+
confirms GATE-2 declined instead; the two are meant to be read side by side.
|
|
15
|
+
|
|
16
|
+
## Decision
|
|
17
|
+
|
|
18
|
+
1. **`data/rules.json` is the skeleton.** Per paragraph: `path`, `rule`,
|
|
19
|
+
`jurisdiction`, `images`. No `text`, no `rule_title`, no source, and no
|
|
20
|
+
amendment state of its own. It gains `24(g)(i)`: the Convention has the
|
|
21
|
+
path; the USCG page lacks the words, which is the corpus's gap.
|
|
22
|
+
2. **`data/editions.json` is the registry: jurisdiction → instrument →
|
|
23
|
+
editions.** An edition id is `<jurisdiction>@<tag>` (`intl@2016`,
|
|
24
|
+
`us/inland@2014`), carrying `amended_through`, `in_force` and optionally
|
|
25
|
+
`superseded_by`. **The tag is the `in_force` year, nothing else** — the
|
|
26
|
+
amending instrument (an IMO resolution, a Federal Register cite) belongs
|
|
27
|
+
in `amended_through`, never in the tag. Each jurisdiction names the
|
|
28
|
+
edition the skeleton consolidates. Two editions of
|
|
29
|
+
one jurisdiction may be registered at once, which is GATE-2's trigger
|
|
30
|
+
case expressed as data rather than as a diff between strings.
|
|
31
|
+
3. **One file per corpus**,
|
|
32
|
+
`data/text/<jurisdiction>/<tag>/<language>.<source_id>.json`, identity
|
|
33
|
+
`<edition>.<language>.<source_id>`. A corpus names its `edition` and
|
|
34
|
+
nothing about jurisdiction or amendment state: both are the edition's.
|
|
35
|
+
CI checks the edition is registered and the filename agrees.
|
|
36
|
+
4. **A corpus paragraph is `rule_title` + `text`** (or ADR 0010's withheld
|
|
37
|
+
fields). Corpus metadata otherwise as in option A: `tier`,
|
|
38
|
+
`normalization`, `source` (REQ-PROV-6), `rights` (three statements),
|
|
39
|
+
`gaps`, optional `translation_of`.
|
|
40
|
+
5. **`data/corpora.json` indexes the files**, derived and drift-checked.
|
|
41
|
+
6. **GATE-2 is re-taken and adopted.** The cost is one registry file and
|
|
42
|
+
one extra path segment; the gain is that "which consolidated state" is an
|
|
43
|
+
identifier compared by equality, not free text compared by eye, and a
|
|
44
|
+
stub must name an edition before it names anything else.
|
|
45
|
+
|
|
46
|
+
## What the stubs show
|
|
47
|
+
|
|
48
|
+
Four corpora ship: `intl@2016.en-US.uscg` (today's text, moved verbatim),
|
|
49
|
+
`intl@2016.fi.finlex`, `intl@2016.es.boe` and `us/inland@2014.en-US.ecfr`,
|
|
50
|
+
the last three empty. The edition layer forces a claim option A lets a stub
|
|
51
|
+
defer: the Finnish and Spanish stubs assert they reflect `intl@2016` before
|
|
52
|
+
anyone has checked, and the `us/inland@2014` edition is recalled, not
|
|
53
|
+
verified, and says so. That is the honest cost of this option and the reason
|
|
54
|
+
to look at both.
|
|
55
|
+
|
|
56
|
+
## Consequences
|
|
57
|
+
|
|
58
|
+
- Breaking file layout (REQ-PKG-4): `data/rules.json` no longer carries
|
|
59
|
+
text. colregs-engine's conformance research reads only `paragraphs` keys
|
|
60
|
+
and is unaffected; anything reading `.text` moves to the en-US corpus.
|
|
61
|
+
- ADR 0010's withheld mechanics move to the corpus paragraph, where the
|
|
62
|
+
text is; the skeleton has nothing to withhold.
|
|
63
|
+
- A new IMO amendment is a new registered edition, a new skeleton pointer,
|
|
64
|
+
and new corpus files under a new directory; the old ones may stay until
|
|
65
|
+
the last consumer moves, marked `superseded_by`. Under option A the same
|
|
66
|
+
event is an in-place edit of every corpus's `amendment_state`.
|
|
67
|
+
- REQ-LANG-1, -3, -5, -9, -10 and REQ-PROV-6 move from unimplemented to
|
|
68
|
+
implemented for the data on file; catalogs (REQ-LANG-6) are untouched.
|
|
69
|
+
- Landing Finnish or Spanish words is an edit to one file and one number in
|
|
70
|
+
the index, and still waits on this ADR being accepted (REQ-GATE-2).
|
package/docs/budgets.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$comment": "Prose budgets enforced by prose-budget (the engine in dotfiles .local/bin), run locally by npm test and in CI by the shared workflow. Raising a number or adding an exception is a deliberate, reviewable diff.",
|
|
3
3
|
"lines": {
|
|
4
|
-
"README.md":
|
|
5
|
-
"AGENTS.md":
|
|
4
|
+
"README.md": 360,
|
|
5
|
+
"AGENTS.md": 200,
|
|
6
6
|
"CLAUDE.md": 10,
|
|
7
7
|
"docs/requirements.md": 1500,
|
|
8
8
|
"docs/identifiers.md": 450,
|
|
9
9
|
"docs/part-b-invariants.md": 950,
|
|
10
|
+
"docs/adr/0001-name-and-jurisdiction-model.md": 280,
|
|
10
11
|
"docs/adr/0007-rule26-overrides-and-aground.md": 90,
|
|
11
12
|
"docs/adr/0008-mooring-buoy-modifier.md": 90,
|
|
12
13
|
"docs/adr/0009-data-version-stamp.md": 90,
|
|
@@ -15,11 +16,14 @@
|
|
|
15
16
|
"docs/adr/0012-trace-and-rule2-departure-api.md": 203,
|
|
16
17
|
"docs/verification/2026-09-09-text-slug-straw-man.md": 270,
|
|
17
18
|
"required": true,
|
|
18
|
-
"pending": []
|
|
19
|
+
"pending": [],
|
|
20
|
+
"docs/adr/0013-corpus-files-with-editions.md": 95,
|
|
21
|
+
"docs/timeline.md": 130
|
|
19
22
|
},
|
|
20
23
|
"json_prose": {
|
|
21
24
|
"targets": [
|
|
22
25
|
"data/*.json",
|
|
26
|
+
"data/text/**/*.json",
|
|
23
27
|
"fixtures/*.json"
|
|
24
28
|
],
|
|
25
29
|
"keys": [
|
|
@@ -86,6 +90,7 @@
|
|
|
86
90
|
"AGENTS.md",
|
|
87
91
|
"CLAUDE.md",
|
|
88
92
|
"data/*.json",
|
|
93
|
+
"data/text/**/*.json",
|
|
89
94
|
"fixtures/*.json",
|
|
90
95
|
"test/*.mjs",
|
|
91
96
|
"docs/**/*.md"
|
|
@@ -96,6 +101,7 @@
|
|
|
96
101
|
"AGENTS.md",
|
|
97
102
|
"CLAUDE.md",
|
|
98
103
|
"data/*.json",
|
|
104
|
+
"data/text/**/*.json",
|
|
99
105
|
"fixtures/*.json",
|
|
100
106
|
"test/*.mjs"
|
|
101
107
|
],
|
|
@@ -104,6 +110,7 @@
|
|
|
104
110
|
"AGENTS.md",
|
|
105
111
|
"CLAUDE.md",
|
|
106
112
|
"data/*.json",
|
|
113
|
+
"data/text/**/*.json",
|
|
107
114
|
"fixtures/*.json",
|
|
108
115
|
"test/*.mjs"
|
|
109
116
|
],
|
|
@@ -112,6 +119,7 @@
|
|
|
112
119
|
"AGENTS.md",
|
|
113
120
|
"CLAUDE.md",
|
|
114
121
|
"data/*.json",
|
|
122
|
+
"data/text/**/*.json",
|
|
115
123
|
"fixtures/*.json",
|
|
116
124
|
"test/*.mjs"
|
|
117
125
|
],
|
|
@@ -120,6 +128,7 @@
|
|
|
120
128
|
"AGENTS.md",
|
|
121
129
|
"CLAUDE.md",
|
|
122
130
|
"data/*.json",
|
|
131
|
+
"data/text/**/*.json",
|
|
123
132
|
"fixtures/*.json",
|
|
124
133
|
"test/*.mjs"
|
|
125
134
|
]
|
|
@@ -155,6 +164,7 @@
|
|
|
155
164
|
"CLAUDE.md",
|
|
156
165
|
"docs/**/*.md",
|
|
157
166
|
"data/*.json",
|
|
167
|
+
"data/text/**/*.json",
|
|
158
168
|
"fixtures/*.json"
|
|
159
169
|
]
|
|
160
170
|
},
|
package/docs/gates.json
CHANGED
|
@@ -36,9 +36,9 @@
|
|
|
36
36
|
"declined_in": "docs/adr/0003-language-as-a-dimension.md",
|
|
37
37
|
"closing_event": "first-non-english-corpus",
|
|
38
38
|
"trigger": "a jurisdiction publishing two editions in force concurrently",
|
|
39
|
-
"status": "
|
|
40
|
-
"settled_by":
|
|
41
|
-
"note": "
|
|
39
|
+
"status": "adopted",
|
|
40
|
+
"settled_by": "docs/adr/0013-corpus-files-with-editions.md",
|
|
41
|
+
"note": "Re-taken and adopted ahead of its due date (translation #1) — ADR 0013 introduces the edition registry directly."
|
|
42
42
|
},
|
|
43
43
|
{
|
|
44
44
|
"id": "GATE-3",
|
package/docs/requirements.md
CHANGED
|
@@ -438,8 +438,7 @@ official languages, and many states gazette their own legally binding
|
|
|
438
438
|
translation. (Recalled, not yet verified against the primary sources — Q-6.)
|
|
439
439
|
See ADR 0003.
|
|
440
440
|
|
|
441
|
-
- **REQ-LANG-1**
|
|
442
|
-
data)** — Language MUST be a dimension orthogonal to jurisdiction,
|
|
441
|
+
- **REQ-LANG-1** — Language MUST be a dimension orthogonal to jurisdiction,
|
|
443
442
|
identified by BCP 47 tags. Which body of rules applies and which text of
|
|
444
443
|
them is displayed are independent questions; neither MUST ever be inferred
|
|
445
444
|
from the other, and no property beyond the language of the text — not
|
|
@@ -452,8 +451,7 @@ See ADR 0003.
|
|
|
452
451
|
and renaming an identifier is a breaking change (REQ-PKG-4). Immutability
|
|
453
452
|
itself is REQ-MODEL-10; this requirement adds only that identifiers are
|
|
454
453
|
never localized.
|
|
455
|
-
- **REQ-LANG-3**
|
|
456
|
-
corpus per jurisdiction × language × source)** — Rule text MUST be storable
|
|
454
|
+
- **REQ-LANG-3** — Rule text MUST be storable
|
|
457
455
|
as a **corpus** per (jurisdiction × language × source), keyed by paragraph
|
|
458
456
|
path, holding at most one text per path, with corpus-level provenance and
|
|
459
457
|
one declared status tier:
|
|
@@ -468,8 +466,7 @@ See ADR 0003.
|
|
|
468
466
|
rule applies per corpus, against that corpus's own source.
|
|
469
467
|
- **REQ-LANG-4** — Adding a language MUST be additive: no schema change, no
|
|
470
468
|
edits to existing corpora or catalogs (the language mirror of REQ-SCOPE-4).
|
|
471
|
-
- **REQ-LANG-5**
|
|
472
|
-
are unwritten)** — Corpora MAY be partial. Coverage MUST be declared in
|
|
469
|
+
- **REQ-LANG-5** — Corpora MAY be partial. Coverage MUST be declared in
|
|
473
470
|
machine-readable form, and CI MUST fail on a corpus key that does not
|
|
474
471
|
resolve to a known paragraph path, and on a corpus filename that disagrees
|
|
475
472
|
with the file's internal metadata. Silence MUST NOT imply coverage (the
|
|
@@ -495,15 +492,13 @@ See ADR 0003.
|
|
|
495
492
|
- **REQ-LANG-8** — A `community`-tier corpus MUST record who produced and
|
|
496
493
|
who reviewed it. Machine translation without named human review MUST NOT
|
|
497
494
|
be accepted.
|
|
498
|
-
- **REQ-LANG-9**
|
|
499
|
-
form)** — Verbatim (REQ-MODEL-1) is defined at the Unicode level: each
|
|
495
|
+
- **REQ-LANG-9** — Verbatim (REQ-MODEL-1) is defined at the Unicode level: each
|
|
500
496
|
corpus MUST declare the normalization form applied to its text (NFC unless
|
|
501
497
|
declared otherwise) and MUST NOT insert or strip bidi control characters,
|
|
502
498
|
localize numerals, punctuation, units or quotation marks, or otherwise "fix"
|
|
503
499
|
the source text. Rendering direction is a consumer concern and MUST stay out
|
|
504
500
|
of the data.
|
|
505
|
-
- **REQ-LANG-10**
|
|
506
|
-
declares an amendment state)** — The structural skeleton MUST declare, as
|
|
501
|
+
- **REQ-LANG-10** — The structural skeleton MUST declare, as
|
|
507
502
|
data, the amendment state it consolidates (e.g. "COLREGS 72 as amended
|
|
508
503
|
through …"). Every corpus MUST declare the amendment state its source
|
|
509
504
|
reflects. The two MAY differ — a corpus transcribed from an older
|
|
@@ -527,8 +522,7 @@ See ADR 0003.
|
|
|
527
522
|
- **REQ-PROV-5** — Images MUST be addressable as data: an image record per file,
|
|
528
523
|
naming what it illustrates by entry id or paragraph path. Unexplained filename
|
|
529
524
|
prefixes are a provenance defect.
|
|
530
|
-
- **REQ-PROV-6**
|
|
531
|
-
rights are one flat field)** — Source identity MUST be structured data —
|
|
525
|
+
- **REQ-PROV-6** — Source identity MUST be structured data —
|
|
532
526
|
publisher, title, edition, publication and effective dates, URL, retrieval
|
|
533
527
|
date — not a prose string. Rights MUST be recorded separately for the source
|
|
534
528
|
text, for the basis on which this package redistributes it, and for the
|
|
@@ -699,20 +693,21 @@ Each gate names the declined design, the closing event, and the trigger.
|
|
|
699
693
|
second-jurisdiction bundle — justified by Q-11 and GATE-2, no longer by
|
|
700
694
|
a cross-jurisdiction trigger route.
|
|
701
695
|
|
|
702
|
-
-
|
|
703
|
-
(ADR 0003, declined; the adopted 80% is REQ-LANG-10).
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
696
|
+
- ~~**GATE-2 — instrument → edition → corpus as first-class layers**~~
|
|
697
|
+
(ADR 0003, declined; the adopted 80% is REQ-LANG-10). **Re-taken and
|
|
698
|
+
adopted, ADR 0013** — ahead of its due date (translation #1): the
|
|
699
|
+
edition registry lands directly, rather than waiting for the trigger
|
|
700
|
+
below to fire.
|
|
701
|
+
*Closing event, as declined*: the second corpus of any one jurisdiction
|
|
702
|
+
— which, read against ADR 0003's sequencing, means **the first
|
|
703
|
+
non-English corpus**, not a distant milestone. A French or Finnish text
|
|
704
|
+
of `intl` is a second corpus of `intl`. With one corpus, re-homing it
|
|
705
|
+
under an edition parent is a single file move; the cost scales with
|
|
709
706
|
corpora × languages immediately thereafter.
|
|
710
|
-
*Trigger*: a jurisdiction publishing two editions in force
|
|
707
|
+
*Trigger, as declined*: a jurisdiction publishing two editions in force
|
|
711
708
|
concurrently — an old and a new text running in parallel through a
|
|
712
709
|
transition period. REQ-LANG-10's declared amendment state makes such a
|
|
713
|
-
pair machine-visible, which is what
|
|
714
|
-
*Re-take required before translation #1 lands* — the edition-layer
|
|
715
|
-
decision is due at the first added translation, not at 1.0.
|
|
710
|
+
pair machine-visible, which is what gave this trigger its foothold.
|
|
716
711
|
|
|
717
712
|
- **GATE-3 — legal-status × translation-status as two enums**
|
|
718
713
|
(ADR 0003, half-adopted: one tier for legal authority in REQ-LANG-3,
|
|
@@ -842,6 +837,14 @@ Tracked here until resolved; each becomes an ADR.
|
|
|
842
837
|
not only as a whole: clearing one candidate source unblocks that corpus
|
|
843
838
|
alone, which is the cheap path when a demo needs a specific language
|
|
844
839
|
early.
|
|
840
|
+
**BOE (`es`) and Finlex (`fi`) verified clean, 2026-09-09 and 2026-09-12**
|
|
841
|
+
(ADR 0001 amendments) — both permit the reuse REQ-PROV-2 needs. The UNTS
|
|
842
|
+
deposit (`en`/`fr`) is confirmed **blocked**, not merely unverified: no
|
|
843
|
+
UNTS-specific rights statement exists, and the reachable terms are the
|
|
844
|
+
same personal/non-commercial, no-derivative-works terms that block CEVNI.
|
|
845
|
+
`es` is the cheapest language to ship the first non-`intl` corpus; UNTS
|
|
846
|
+
needs written UN permission or a national republication before `en`/`fr`
|
|
847
|
+
can use the deposit route.
|
|
845
848
|
- **Q-8** — Does the paragraph path survive the first national amalgamation?
|
|
846
849
|
GATE-1's accepted risk rests on paragraph paths being immutable
|
|
847
850
|
(REQ-MODEL-10) — adding and deprecating are fine, but a path that keeps its
|
|
@@ -1421,16 +1424,25 @@ nothing is blocked while open.
|
|
|
1421
1424
|
- **Q-51** — **What arms 13(d)'s latch?** *A:* 13(b)'s deeming, at the first
|
|
1422
1425
|
state the geometry holds. *B:* 13(a)'s duty actually attaching. They differ
|
|
1423
1426
|
where the geometry holds but a condition on 13(a) does not — `Q-50`'s
|
|
1424
|
-
surface.
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
+
surface. Pencilled **B** ✎ (Solace, 2026-09-14): the latch arms when the
|
|
1428
|
+
duty attaches. KIVELI [2025] EWHC 1185 (Admlty) holds the analogous Rule 14
|
|
1429
|
+
latch arms on risk of collision and then persists; no authority was found on
|
|
1430
|
+
overtaking geometry with no risk of collision. Free to reverse: four entries
|
|
1431
|
+
(`13a`, `13b-*`, `13d`) and their fixtures, and nothing consumes the one
|
|
1432
|
+
state this changes the answer for. Settled by: a decision on Rule 13 itself,
|
|
1433
|
+
or Cockcroft & Lameijer on whether overtaking status needs risk of
|
|
1434
|
+
collision.
|
|
1427
1435
|
- **Q-52** — **What does 13(d)'s latch forbid?** *Narrow:* reclassification to
|
|
1428
1436
|
*crossing* only, as the paragraph says, leaving head-on to Rule 14 on the
|
|
1429
1437
|
geometry of the moment. *Broad:* the encounter stays an overtaking and no
|
|
1430
1438
|
other Section II classification attaches. Both preserve the duty; they differ
|
|
1431
|
-
on encounter type, which Rule 17's phases and 14(a) hang off.
|
|
1432
|
-
**broad
|
|
1433
|
-
`
|
|
1439
|
+
on encounter type, which Rule 17's phases and 14(a) hang off.
|
|
1440
|
+
Pencilled **broad** ✎ (Solace, 2026-09-14), which is also the data's
|
|
1441
|
+
default: `13d` yields `encounter: overtaking` from history alone, `14b` and
|
|
1442
|
+
`15a-crossing` gate on `was_overtaking: false`. 13(a)'s "notwithstanding"
|
|
1443
|
+
already displaces Rule 14; eCOLREGs states the broad reading as conventional.
|
|
1444
|
+
Settled by: a case or commentary on an overtaking becoming a head-on; none
|
|
1445
|
+
found.
|
|
1434
1446
|
- **Q-53** — **Does 17(a)(ii) suspend 17(a)(i)'s duty, or add an exception?**
|
|
1435
1447
|
*Suspension:* "may, however" lifts the duty once non-compliance is apparent;
|
|
1436
1448
|
a monitor then flags nothing. *Exception:* the duty stands and a departure is
|
package/docs/timeline.md
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Timeline
|
|
2
|
+
|
|
3
|
+
When COLREG 1972 changed, and how long each jurisdiction took to catch up.
|
|
4
|
+
Public record, every row cited. Relevant to this package because
|
|
5
|
+
`jurisdiction` (`intl`, `us/inland`, …) is a first-class dimension here, not
|
|
6
|
+
an afterthought — this is the evidence that national texts genuinely lag
|
|
7
|
+
the IMO instrument, by years, and by different amounts per country.
|
|
8
|
+
|
|
9
|
+
## 1. IMO instrument history
|
|
10
|
+
|
|
11
|
+
| Date | Event | What changed | Source | Verified? |
|
|
12
|
+
|---|---|---|---|---|
|
|
13
|
+
| 1972-10-20 | COLREG 1972 adopted | Replaced 1960 Collision Regs; made TSS mandatory (Rule 10) | [imo.org](https://www.imo.org/en/About/Conventions/Pages/COLREG.aspx) | verified |
|
|
14
|
+
| 1977-07-15 | Entry into force | Binding on ratifying states | [imo.org](https://www.imo.org/en/About/Conventions/Pages/COLREG.aspx) | verified |
|
|
15
|
+
| 1981-11-19 → 1983-06-01 | 1981 amdts, Res. A.464(XII) | Rule 10: exempted safety-operation and cable-laying vessels in TSS | [imo.org](https://www.imo.org/en/ourwork/safety/pages/preventing-collisions.aspx) | verified |
|
|
16
|
+
| 1987-11-19 → 1989-11-19 | 1987 amdts, Res. A.626(15) | New Rule 1(e), 8(f); Rule 3(h) def.; Rule 10(c) clarified; Annexes I & IV updated (light positions, GMDSS) | [imo.org](https://www.imo.org/en/ourwork/safety/pages/preventing-collisions.aspx) | verified |
|
|
17
|
+
| 1989-10-19 → 1991-04-19 | 1989 amdts, Res. A.678(16) | Rule 10: further restricted inshore-traffic-zone use | [imo.org](https://www.imo.org/en/ourwork/safety/pages/preventing-collisions.aspx) | verified |
|
|
18
|
+
| 1993-11-04 → 1995-11-04 | 1993 amdts, Res. A.736(18) | Light-positioning rules revised; Annex IV gained SART signals | [imo.org](https://www.imo.org/en/ourwork/safety/pages/preventing-collisions.aspx) | verified |
|
|
19
|
+
| 2001-11-29 → 2003-11-29 | 2001 amdts, Res. A.910(22) | Added Wing-in-Ground (WIG) craft: Rule 3 def., Rules 8(a),18,23,31,33,35; Annex I & III updates | [imo.org](https://www.imo.org/en/ourwork/safety/pages/preventing-collisions.aspx) | verified |
|
|
20
|
+
| 2007-11-29 → 2009-12-01 | 2007 amdts, Res. A.1004(25) | Annex IV (distress signals) replaced wholesale: added DSC, Inmarsat, EPIRB signals | [imo.org](https://www.imo.org/en/ourwork/safety/pages/preventing-collisions.aspx) | verified |
|
|
21
|
+
| 2013-12-04 → 2016-01-01 | 2013 amdts, Res. A.1085(28) | New Part F (Rules 39–41) appended: compulsory Member State Audit Scheme verification | [imo.org](https://www.imo.org/en/ourwork/safety/pages/preventing-collisions.aspx) | verified |
|
|
22
|
+
|
|
23
|
+
No amendment adopted since 2013; autonomous-ship ("MASS") work is ongoing but has not produced one — [Wikipedia](https://en.wikipedia.org/wiki/Convention_on_the_International_Regulations_for_Preventing_Collisions_at_Sea).
|
|
24
|
+
|
|
25
|
+
**Renumbering:** none of the seven amendments renumbers or deletes an existing rule; each adds a paragraph, a definition, or (2013) an appended Part. Annex IV's 2007 replacement kept its number and position.
|
|
26
|
+
|
|
27
|
+
**Languages:** Article IX makes English and French "equally authentic"; Russian and Spanish are official translations, not authentic text — [Convention text, CIL NUS](https://cil.nus.edu.sg/wp-content/uploads/2019/02/1972-Convention-on-Regulations-for-Preventing-Collisions-at-Sea.pdf), verified. IMO's own official languages (for documents generally, not this treaty) are Arabic, Chinese, English, French, Russian, Spanish — [imo.org](https://www.imo.org/en/About/Conventions/Pages/COLREG.aspx), verified.
|
|
28
|
+
|
|
29
|
+
## 2. National instruments
|
|
30
|
+
|
|
31
|
+
### United States
|
|
32
|
+
|
|
33
|
+
| Date | Event | What changed | Source | Verified? |
|
|
34
|
+
|---|---|---|---|---|
|
|
35
|
+
| 1977 | Int'l Navigation Rules Act of 1977 | Adopted COLREG 1972 for international waters | [FR 2014-14413](https://www.federalregister.gov/documents/2014/07/02/2014-14413/changes-to-the-inland-navigation-rules) | verified |
|
|
36
|
+
| enacted 1980-12-24, eff. 1981-12-24 | Inland Navigational Rules Act, Pub. L. 96-591 | Created a separate, COLREG-modeled U.S. Inland Rules | [Pub. L. 96-591](https://www.navcen.uscg.gov/sites/default/files/pdf/navRules/PLaw_96_591_%2094%20_Stat_3415_1980_Inland_Navigation_Rules.pdf) | verified |
|
|
37
|
+
| 2010-04-15 | 75 FR 19544 | Moved Inland Rules from U.S. Code to 33 CFR 83–88; future changes by rulemaking, not statute | [FR 2014-14413](https://www.federalregister.gov/documents/2014/07/02/2014-14413/changes-to-the-inland-navigation-rules) | verified |
|
|
38
|
+
| 2014-08-01 | Final rule, "Changes to the Inland Navigation Rules" | Incorporated the 2001 & 2007 IMO amendments (WIG craft, new Annex IV); renumbered the CFR to track COLREG rule numbers | [FR 2014-14413](https://www.federalregister.gov/documents/2014/07/02/2014-14413/changes-to-the-inland-navigation-rules) | verified |
|
|
39
|
+
|
|
40
|
+
### United Kingdom
|
|
41
|
+
|
|
42
|
+
| Date | Event | What changed | Source | Verified? |
|
|
43
|
+
|---|---|---|---|---|
|
|
44
|
+
| 1996-05-01 | SI 1996/75 in force | Domestic effect for COLREG as then amended | [legislation.gov.uk](https://www.legislation.gov.uk/uksi/1996/75/made) | verified |
|
|
45
|
+
| 2004-05-28 | MSN 1781 first published | MCA notice carrying the technical Rules text | [gov.uk](https://www.gov.uk/government/publications/msn-1781-distress-signals-and-preventing-collisions) | verified |
|
|
46
|
+
| 2016 | MSN 1781 Amendment 2 | Reissued, superseding the original | [gov.uk PDF](https://assets.publishing.service.gov.uk/media/5dfa3bcced915d54a89bd4ab/MSN1781_Amendment2_2016.pdf) | date verified; which IMO round it applies unverified |
|
|
47
|
+
| 2023-11-21 | MSN 1781 Amendment 3 | Non-COLREG: scope re Watercraft Order 2023 | [gov.uk](https://www.gov.uk/government/publications/msn-1781-mf-amendment-3-the-merchant-shipping-regulations-1996-colreg) | verified |
|
|
48
|
+
|
|
49
|
+
### Canada
|
|
50
|
+
|
|
51
|
+
| Date | Event | What changed | Source | Verified? |
|
|
52
|
+
|---|---|---|---|---|
|
|
53
|
+
| 1978 base | Collision Regs, C.R.C. c. 1416 | Incorporates COLREG "with Canadian Modifications" | [Justice Laws](https://laws-lois.justice.gc.ca/eng/regulations/C.R.C.,_c._1416/) | verified |
|
|
54
|
+
| ongoing | SOR/78-528, SOR/83-202, etc. | Periodic amendments track IMO and add Canadian mods | [publications.gc.ca](https://publications.gc.ca/site/eng/9.662001/publication.html) | verified |
|
|
55
|
+
| 2023-06-07 | Most recent amendment | Current to 2026-07-21, last amended 2023-06-07 | [Justice Laws](https://laws-lois.justice.gc.ca/eng/regulations/C.R.C.,_c._1416/page-4.html) | verified |
|
|
56
|
+
|
|
57
|
+
### Finland
|
|
58
|
+
|
|
59
|
+
| Date | Event | What changed | Source | Verified? |
|
|
60
|
+
|---|---|---|---|---|
|
|
61
|
+
| 1977, SopS 30/1977 | Decree bringing COLREG 1972 into force | Ratified 1977-01-28 | [Finlex](https://finlex.fi/fi/sopimukset/sopsteksti/1977/19770030) | verified |
|
|
62
|
+
| 1983-07-04 | Decree incorporating the 1981 amdts | Applied Res. A.464(XII) | [Finlex](https://finlex.fi/fi/sopimukset/sopsteksti/1983/19830037) | verified |
|
|
63
|
+
| approved 2008-12-19, force 2009-12-01 | Decree incorporating the 2007 amdts | Applied Res. A.1004(25); domestic entry into force matches the global date exactly | [Finlex](https://finlex.fi/fi/valtiosopimukset/sopimussarja/2009/12) | verified |
|
|
64
|
+
|
|
65
|
+
### Spain
|
|
66
|
+
|
|
67
|
+
| Date | Event | What changed | Source | Verified? |
|
|
68
|
+
|---|---|---|---|---|
|
|
69
|
+
| 1977-07-09 | BOE publishes accession instrument | Corrections followed in 1978 and 1981 | [BOE-A-1977-15605](https://www.boe.es/buscar/act.php?id=BOE-A-1977-15605) | verified |
|
|
70
|
+
| adopted 2001-11-29, BOE pub. 2003-02-11, eff. 2003-11-29 | 2001 amdts (A.910(22)) | BOE publication preceded the global entry into force by ~9 months | [BOE-A-2003-2716](https://www.boe.es/buscar/doc.php?id=BOE-A-2003-2716) | verified |
|
|
71
|
+
| adopted 2007-11-29, BOE pub. 2010-03-20, eff. 2009-12-01 | 2007 amdts (A.1004(25)) | BOE publication came ~3.5 months *after* the global entry into force | [BOE-A-2010-4648](https://www.boe.es/buscar/doc.php?id=BOE-A-2010-4648) | verified |
|
|
72
|
+
|
|
73
|
+
### Germany
|
|
74
|
+
|
|
75
|
+
| Date | Event | What changed | Source | Verified? |
|
|
76
|
+
|---|---|---|---|---|
|
|
77
|
+
| enacted 1976-06-29 | Ratification statute, BGBl. 1976 II S. 1017 | Approved German accession | [dejure.org](https://dejure.org/BGBl/1976/BGBl._II_S._1017) | verified |
|
|
78
|
+
| announced 1977-06-01, eff. 1977-07-15 | Bekanntmachung of entry into force | Matches the global date | [gesetze-im-internet.de](https://www.gesetze-im-internet.de/seestro1972_bk/SeeStrO1972%C3%9Cbk.pdf) | verified |
|
|
79
|
+
| through the 2013 amdt (28th Assembly) | Ordinance updating the Convention annex | Cites the IMO Assembly session directly, not re-legislated | [buzer.de](https://www.buzer.de/gesetz/5250/a72559.htm) | verified |
|
|
80
|
+
|
|
81
|
+
### Australia
|
|
82
|
+
|
|
83
|
+
| Date | Event | What changed | Source | Verified? |
|
|
84
|
+
|---|---|---|---|---|
|
|
85
|
+
| 2009-12-01 | Marine Orders Part 30, Issue 8 | Repealed Issue 7; timed to match the 2007 amdts' entry into force, same day | [PDF](https://www.marinerescueportjackson.com.au/ddlfiles/colregs.pdf) | verified |
|
|
86
|
+
| 2016-07-19 | Marine Order 30 (2016) | Remade under the Navigation Act 2012, replacing the 1912 Act | [legislation.gov.au](https://www.legislation.gov.au/F2016L01187/asmade) | verified |
|
|
87
|
+
|
|
88
|
+
### Europe, inland — CEVNI
|
|
89
|
+
|
|
90
|
+
| Date | Event | What changed | Source | Verified? |
|
|
91
|
+
|---|---|---|---|---|
|
|
92
|
+
| 1962 (Res. 4); refounded as Res. 24, 1985-11-15 | Original / refounding resolution | UNECE code adapting COLREG-style rules for inland waterways | [waterways.cz PDF](https://waterways.cz/documents/European_Code_for_Inland_Waterways_E.pdf) | verified |
|
|
93
|
+
| 2009 | CEVNI Rev. 4 | ECE/TRANS/SC.3/115/Rev.4 | [UN Digital Library](https://digitallibrary.un.org/record/1489444) | verified |
|
|
94
|
+
| 2015 | CEVNI Rev. 5 | ECE/TRANS/SC.3/115/Rev.5 | [UN Digital Library](https://digitallibrary.un.org/record/1489444) | verified |
|
|
95
|
+
| 2022 Rev. 6; Amdt 1 in 2025-04 | CEVNI Rev. 6 and first amendment | Latest edition; the amendment issued separately | [UNECE](https://unece.org/transport/documents/2025/04/standards/cevni-european-code-inland-waterways-resolution-no-24) | Rev. 6's 2022 date unverified (year only); Amdt 1 date verified |
|
|
96
|
+
|
|
97
|
+
## 3. Cadence
|
|
98
|
+
|
|
99
|
+
- **IMO gap between amendments:** seven amendments, 1981–2013 — 6y, 2y, 4y, 8y (max, 1993→2001), 6y, 6y. Mean ≈5.3y. None since 2013.
|
|
100
|
+
- **National lag varies by country and by amendment, not on a fixed schedule.** Finland and Australia both brought the 2007 amendments into force on 1 Dec 2009 — the same day as the global date. The U.S. did not incorporate the 2001 and 2007 amendments until an August 2014 rule: 13- and 7-year lags on the same two rounds.
|
|
101
|
+
- **Gazette date can trail legal effect.** Spain's 2007-amendment text was published in the BOE on 20 Mar 2010, ~3.5 months after it was already binding (1 Dec 2009) — a publishing lag, not two rule-numbering schemes concurrently in force. No case of the latter was found (absence not proven).
|
|
102
|
+
- **Citation style differs by country:** Spain and Finland cite the IMO resolution number and dates directly; the U.S. and Canada cite Federal Register/SOR numbers plus a "current to" date; the UK cites an SI number plus an MSN amendment; CEVNI cites a revision plus amendment number.
|
|
@@ -5,8 +5,9 @@ text, and names a slug as a straw man to be built and judged rather than
|
|
|
5
5
|
argued about. This is the build and the judgement. The research issue is
|
|
6
6
|
colregs#83; nothing here decides the pencil item.
|
|
7
7
|
|
|
8
|
-
Everything below is reproducible from `scripts/text-slug.mjs` over
|
|
9
|
-
`data/
|
|
8
|
+
Everything below is reproducible from `scripts/text-slug.mjs` over the
|
|
9
|
+
en-US corpus (`data/text/intl/2016/en-US.uscg.json` since ADR 0013 moved the
|
|
10
|
+
words out of `data/rules.json`). Nothing was written into `data/`.
|
|
10
11
|
|
|
11
12
|
## What the pipeline does
|
|
12
13
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "colregs",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "COLREGS 72 and its national amalgamations as language-neutral JSON — rule text, light definitions, and applicability predicates — with cross-implementation fixtures",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|