colregs 0.2.4 → 0.3.1

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 (57) hide show
  1. package/PROVENANCE.md +3 -3
  2. package/README.md +19 -10
  3. package/data/applicability.json +219 -244
  4. package/data/corpora.json +41 -0
  5. package/data/editions.json +27 -0
  6. package/data/facts.json +4 -4
  7. package/data/geometry.json +8 -8
  8. package/data/i18n/en.json +27 -0
  9. package/data/i18n/fi.json +25 -0
  10. package/data/images.json +32 -32
  11. package/data/operations.json +79 -0
  12. package/data/rules.json +176 -599
  13. package/data/text/intl/2016/en-US.uscg.json +877 -0
  14. package/data/text/intl/2016/es.boe.json +23 -0
  15. package/data/text/intl/2016/fi.finlex.json +22 -0
  16. package/data/text/us/inland/2014/en-US.ecfr.json +22 -0
  17. package/data/version.json +1 -1
  18. package/docs/adr/0001-name-and-jurisdiction-model.md +42 -2
  19. package/docs/adr/0003-language-as-a-dimension.md +8 -7
  20. package/docs/adr/0006-json-schema-and-identifier-diff.md +2 -0
  21. package/docs/adr/0011-api-shape.md +1 -1
  22. package/docs/adr/0012-trace-and-rule2-departure-api.md +3 -4
  23. package/docs/adr/0013-corpus-files-with-editions.md +70 -0
  24. package/docs/adr/0014-engine-interface-owned-by-colregs.md +103 -0
  25. package/docs/adr/0015-rule-ids-are-paragraph-keys.md +191 -0
  26. package/docs/budgets.json +17 -17
  27. package/docs/gates.json +3 -3
  28. package/docs/identifiers.md +49 -51
  29. package/docs/maritime-sources.md +58 -0
  30. package/docs/normative-language.md +103 -0
  31. package/docs/part-b-invariants.md +31 -29
  32. package/docs/requirements.md +118 -97
  33. package/docs/timeline.md +102 -0
  34. package/docs/verification/2026-09-09-text-slug-straw-man.md +3 -2
  35. package/fixtures/applicability-fixtures.json +190 -190
  36. package/fixtures/situation-fixtures.json +287 -287
  37. package/package.json +1 -1
  38. package/schema/applicability-fixtures.schema.json +4 -13
  39. package/schema/applicability.schema.json +27 -27
  40. package/schema/conduct-evaluation.schema.json +135 -0
  41. package/schema/corpora.schema.json +68 -0
  42. package/schema/corpus.schema.json +329 -0
  43. package/schema/display-evaluation.schema.json +146 -0
  44. package/schema/editions.schema.json +47 -0
  45. package/schema/encounter-evaluation.schema.json +109 -0
  46. package/schema/evaluation.schema.json +149 -0
  47. package/schema/fact-record.schema.json +30 -0
  48. package/schema/i18n-catalog.schema.json +47 -0
  49. package/schema/operations.schema.json +124 -0
  50. package/schema/rule2-departure-finding.schema.json +72 -0
  51. package/schema/rule2-departure-model.schema.json +159 -0
  52. package/schema/rules.schema.json +20 -90
  53. package/schema/situation-fixtures.schema.json +10 -146
  54. package/schema/situation.schema.json +72 -0
  55. package/schema/trace.schema.json +33 -0
  56. package/data/deprecated-identifiers.json +0 -7
  57. package/schema/deprecated-identifiers.schema.json +0 -29
package/PROVENANCE.md CHANGED
@@ -3,7 +3,7 @@
3
3
  Everything in this package is transcribed or copied from US Government
4
4
  publications. Nothing here is authoritative: consult the published rules.
5
5
 
6
- ## Rule text — `data/rules.json`
6
+ ## Rule text — `data/text/intl/2016/en-US.uscg.json`
7
7
 
8
8
  - **Source:** USCG Navigation Center, *Navigation Rules, International —
9
9
  Inland* (amalgamated), <https://www.navcen.uscg.gov/navigation-rules-amalgamated>
@@ -16,8 +16,8 @@ publications. Nothing here is authoritative: consult the published rules.
16
16
  - **Rights:** a work of the US Government, not subject to copyright in the
17
17
  United States (17 U.S.C. 105).
18
18
  - **Known hole:** Rule 24(g)(i) is absent from the source page. Rather than
19
- reconstruct it from memory, `rules.json` records it under `gaps` and the
20
- paragraph is omitted. 24(g) covers inconspicuous, partly submerged tows and
19
+ reconstruct it from memory, the corpus records it under `gaps` and carries
20
+ no text for it; the skeleton still has the path. 24(g) covers inconspicuous, partly submerged tows and
21
21
  is outside the applicability table in this release.
22
22
  - **Withheld text is not a gap.** A `gaps` entry is a paragraph we could not
23
23
  obtain. A paragraph with `text_status: withheld` is one we hold but may not
package/README.md CHANGED
@@ -26,13 +26,15 @@ See a [live demo](https://mark-brannan.github.io/searoom/) of searoom and the co
26
26
  > by the published rules.
27
27
 
28
28
  ```text
29
- data/rules.json rule text, keyed by paragraph path and jurisdiction
29
+ data/rules.json the skeleton: paragraph paths, rule numbers, jurisdictions -- no text
30
+ data/editions.json which edition of which instrument each jurisdiction is on
31
+ data/text/ rule text, one corpus per edition x language x source
32
+ data/corpora.json index of those corpora and how much each covers
30
33
  data/lights.json the six Rule 21 lights: colour, arc, Rule 22 range
31
34
  data/facts.json the fact record, and how to decode SignalK navigation.state
32
35
  data/applicability.json predicate -> lights, each entry also carrying modality, citation, jurisdiction
33
36
  data/geometry.json Annex I: heights, spacings, colour, intensity
34
37
  data/images.json every image, its source, and what it illustrates
35
- data/deprecated-identifiers.json retired identifiers: what they denoted, when, and their replacement
36
38
  images/ 38 USCG diagrams + 5 arc GIFs
37
39
  fixtures/ fact records and the entries that apply to them
38
40
  ```
@@ -59,7 +61,10 @@ mooring buoy, lives only under `us/inland`
59
61
  ## The layers
60
62
 
61
63
  **Rule text.** Verbatim, keyed by *paragraph path*, like `27(a)(i)`, because
62
- the paragraph is the unit you actually cite. Where a licence bars republishing
64
+ the paragraph is the unit you actually cite. The paths live in a
65
+ language-neutral skeleton; the words live in corpora, one per edition,
66
+ language and source, each with its own provenance and legal tier. A mixed
67
+ rendering across corpora is never a single authoritative edition. Where a licence bars republishing
63
68
  a jurisdiction's words, the paragraph is still modelled and its text withheld
64
69
  rather than paraphrased — evaluation never reads the text.
65
70
 
@@ -76,21 +81,22 @@ loses.
76
81
 
77
82
  **Applicability entries.** Each is a predicate over facts, a set of lights or
78
83
  references to other entries, a modality, a citation, and a jurisdiction. Every
79
- entry has an id (`25b`, `27a-mw`) a consumer can point at.
84
+ entry has an id (`rule:25b`, `rule:27a_iii`) a consumer can point at.
80
85
 
81
- **Identifiers.** Citation-derived ids (paragraph paths, entry ids) carry no
82
- prefix, because the path *is* the citation. Vocabulary ids do:
86
+ **Identifiers.** Paragraph paths carry no prefix, because the path *is* the
87
+ citation. Every other id names its namespace: `rule:30a`,
83
88
  `light:masthead`, `fact:activity`, `activity:nuc`, `rel:in_lieu_of`. Every
84
- identifier is immutable once published; retirements go through
85
- [`data/deprecated-identifiers.json`](data/deprecated-identifiers.json). See
89
+ identifier is immutable from 1.0.0; before then it may be renamed or
90
+ discarded outright, and the deprecation registry is absent. See
86
91
  [`docs/identifiers.md`](docs/identifiers.md).
87
92
 
88
93
  ## Design
89
94
 
90
95
  Requirements-first: sessions work against the numbered requirements in
91
96
  [`docs/requirements.md`](docs/requirements.md) and decisions live in
92
- [`docs/adr/`](docs/adr/) rather than being argued again. Four ideas carry
93
- most of it.
97
+ [`docs/adr/`](docs/adr/) rather than being argued again; the amendment and
98
+ national-adoption history is in [`docs/timeline.md`](docs/timeline.md). Four
99
+ ideas carry most of it.
94
100
 
95
101
  **The paragraph is the unit.** Rule text, citations and composition all key
96
102
  on the paragraph path. Citation unit and composition unit turn out to be the
@@ -171,6 +177,9 @@ both vessels give-way.
171
177
  `fixtures/applicability-fixtures.json` and `fixtures/situation-fixtures.json`
172
178
  are the cross-implementation contract: an implementation in any language
173
179
  should reproduce those exactly.
180
+ [`data/operations.json`](data/operations.json) names the verbs an engine
181
+ implements and binds each to its input schema, its result schema and the
182
+ fixture file that exercises it ([ADR 0014](docs/adr/0014-engine-interface-owned-by-colregs.md)).
174
183
 
175
184
  ## Provenance and licence
176
185