colregs 0.3.0 → 0.3.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.
- package/README.md +13 -11
- package/data/applicability.json +478 -503
- package/data/facts.json +22 -22
- package/data/geometry.json +8 -8
- package/data/i18n/en.json +27 -0
- package/data/i18n/fi.json +25 -0
- package/data/images.json +32 -32
- package/data/operations.json +79 -0
- package/data/rules.json +5 -0
- package/data/version.json +1 -1
- package/docs/adr/0006-json-schema-and-identifier-diff.md +2 -0
- package/docs/adr/0011-api-shape.md +7 -7
- package/docs/adr/0012-trace-and-rule2-departure-api.md +2 -2
- package/docs/adr/0014-engine-interface-owned-by-colregs.md +103 -0
- package/docs/adr/0015-rule-ids-are-paragraph-keys.md +191 -0
- package/docs/adr/0016-encounter-roles-are-pooled-across-frames.md +82 -0
- package/docs/adr/0017-closed-vocabularies-are-prefixed-identifiers.md +105 -0
- package/docs/budgets.json +8 -15
- package/docs/decisions.md +6 -0
- package/docs/identifiers.md +121 -109
- package/docs/maritime-sources.md +58 -0
- package/docs/normative-language.md +103 -0
- package/docs/part-b-invariants.md +48 -45
- package/docs/requirements.md +147 -138
- package/fixtures/applicability-fixtures.json +190 -190
- package/fixtures/situation-fixtures.json +870 -599
- package/package.json +1 -1
- package/schema/applicability-fixtures.schema.json +4 -13
- package/schema/applicability.schema.json +77 -77
- package/schema/conduct-evaluation.schema.json +135 -0
- package/schema/display-evaluation.schema.json +146 -0
- package/schema/encounter-evaluation.schema.json +109 -0
- package/schema/evaluation.schema.json +149 -0
- package/schema/fact-record.schema.json +30 -0
- package/schema/facts.schema.json +4 -4
- package/schema/i18n-catalog.schema.json +47 -0
- package/schema/operations.schema.json +124 -0
- package/schema/rule2-departure-finding.schema.json +72 -0
- package/schema/rule2-departure-model.schema.json +159 -0
- package/schema/situation-fixtures.schema.json +30 -127
- package/schema/situation.schema.json +72 -0
- package/schema/trace.schema.json +33 -0
- package/data/deprecated-identifiers.json +0 -7
- package/schema/deprecated-identifiers.schema.json +0 -29
package/data/facts.json
CHANGED
|
@@ -459,7 +459,7 @@
|
|
|
459
459
|
]
|
|
460
460
|
},
|
|
461
461
|
"situation": {
|
|
462
|
-
"note": "The input a two-subject rule reads (ADR 0005, REQ-CAT-4). A situation wraps two per-vessel fact records without changing either: `
|
|
462
|
+
"note": "The input a two-subject rule reads (ADR 0005, REQ-CAT-4). A situation wraps two per-vessel fact records without changing either: `self.fact` and `other.fact` are exactly the record above, key for key. Beside them sit three new fact classes -- kinematic state (`kin:`), relative geometry (`geo:`) and history (`hist:`) -- which no `display` entry reads, so a consumer showing only lights never builds a situation or supplies one of these.",
|
|
463
463
|
"status": "pencil",
|
|
464
464
|
"adr": "0005",
|
|
465
465
|
"requirements": [
|
|
@@ -471,19 +471,19 @@
|
|
|
471
471
|
"form": "<subject>:<class>:<key>",
|
|
472
472
|
"doc": "docs/identifiers.md, section 'Two subjects'",
|
|
473
473
|
"subjects": {
|
|
474
|
-
"
|
|
475
|
-
"other": "the vessel
|
|
474
|
+
"self": "the vessel the rule addresses -- the subject of every one-subject entry in applicability.json today",
|
|
475
|
+
"other": "the vessel self is in an encounter with",
|
|
476
476
|
"pair": "the encounter itself. Only facts that are symmetric between the two vessels live here."
|
|
477
477
|
},
|
|
478
478
|
"classes": {
|
|
479
|
-
"fact": "the per-vessel fact record above, unchanged and unprefixed inside the record. `
|
|
480
|
-
"kin": "kinematic state: where a vessel is, where it is pointing, how fast it is going and turning, and what it handles like. `
|
|
481
|
-
"geo": "relative geometry. Under `
|
|
482
|
-
"hist": "what has already been true of this encounter and
|
|
479
|
+
"fact": "the per-vessel fact record above, unchanged and unprefixed inside the record. `self` and `other` only.",
|
|
480
|
+
"kin": "kinematic state: where a vessel is, where it is pointing, how fast it is going and turning, and what it handles like. `self` and `other` only.",
|
|
481
|
+
"geo": "relative geometry. Under `self`/`other` it is directional, measured in that subject's own frame; under `pair` it is symmetric between them.",
|
|
482
|
+
"hist": "what has already been true of this encounter and persists. `self` and `other` only; directional.",
|
|
483
483
|
"env": "environmental scope: a property of the water the encounter is in, not of either vessel. `pair` only -- a narrow channel is not one vessel's channel. Added by the Rule 18 PR, which is the first data to need it; fixtures/situation-fixtures.json flagged the gap before the class existed."
|
|
484
484
|
},
|
|
485
|
-
"bare_key": "A key with no subject segment means `
|
|
486
|
-
"directional_note": "Swapping `
|
|
485
|
+
"bare_key": "A key with no subject segment means `self:`. Every predicate in data/applicability.json today is therefore already a valid situation predicate, unedited, and every fixture in fixtures/applicability-fixtures.json is already a valid one-subject situation (REQ-CAT-4).",
|
|
486
|
+
"directional_note": "Swapping `self` and `other` reverses the encounter, which is what a `precedence` rule needs. It also earns the directional geometry class its keep: `self:geo:rel_bearing_deg` is the bearing of the other vessel off self's bow, and `other:geo:rel_bearing_deg` is the same fact from the other side -- which is aspect. Aspect is not a separate fact; it is the other subject's relative bearing."
|
|
487
487
|
},
|
|
488
488
|
"kinematics": {
|
|
489
489
|
"note": "A new fact class, not an extension of the fact record (ADR 0005 sec. 2). Absolute quantities, in the world frame, one set per vessel. `kin:dynamics` is the one exception left uncited -- it is not a COLREGS concept and no paragraph will ever justify it.",
|
|
@@ -536,7 +536,7 @@
|
|
|
536
536
|
],
|
|
537
537
|
"cite": null,
|
|
538
538
|
"cite_pending": null,
|
|
539
|
-
"note": "What the vessel handles like -- the manoeuvring envelope a solver bounds
|
|
539
|
+
"note": "What the vessel handles like -- the manoeuvring envelope a solver bounds self's actions by. Not a COLREGS concept and deliberately not derivable from the three axes: two power-driven vessels underway have identical facts and unrelated turning circles. The value list is a first cut and is Q-18; `dynamics:unknown` is the honest default and must stay in the set.",
|
|
540
540
|
"actuable": false,
|
|
541
541
|
"signalk": null
|
|
542
542
|
},
|
|
@@ -549,7 +549,7 @@
|
|
|
549
549
|
],
|
|
550
550
|
"cite": "12(b)",
|
|
551
551
|
"cite_pending": null,
|
|
552
|
-
"note": "Which side this vessel has the wind on, which 12(b) defines as the side opposite that on which the mainsail is carried, or for a square-rigged vessel the side opposite the largest fore-and-aft sail. `wind_side:unknown` is not a missing value: it is 12(a)(iii)'s case, a vessel with the wind on the port side who cannot determine with certainty which side the other has it on, and entry
|
|
552
|
+
"note": "Which side this vessel has the wind on, which 12(b) defines as the side opposite that on which the mainsail is carried, or for a square-rigged vessel the side opposite the largest fore-and-aft sail. `wind_side:unknown` is not a missing value: it is 12(a)(iii)'s case, a vessel with the wind on the port side who cannot determine with certainty which side the other has it on, and entry rule:12a_iii reads it. An absent fact would be silence, and silence satisfies nothing. Declared in `kin` rather than in the fact record because a display consumer never supplies it and the fact record does not change for Part B (REQ-CAT-4) -- but it is a sailing state and not kinematics, which is recorded as strain in Q-44 rather than fixed by widening the class.",
|
|
553
553
|
"actuable": false,
|
|
554
554
|
"signalk": null
|
|
555
555
|
}
|
|
@@ -562,7 +562,7 @@
|
|
|
562
562
|
"unit": "deg",
|
|
563
563
|
"cite": "13(b)",
|
|
564
564
|
"cite_pending": null,
|
|
565
|
-
"note": "Bearing of the *other* subject, 0-360 clockwise from this subject's own heading. Under `
|
|
565
|
+
"note": "Bearing of the *other* subject, 0-360 clockwise from this subject's own (self) heading. Under `self` this is relative bearing; under `other` it is aspect. Rule 13(b)'s overtaking sector is `other:geo:rel_bearing_deg` in (112.5, 247.5) -- self is more than 22.5 degrees abaft the other vessel's beam. The two sector edges are declared once in `constants` below (`overtaking_sector_from_deg`, `overtaking_sector_to_deg`) and entries rule:13b and rule:15a:crossing both read them, so the sector and its complement cannot drift apart.",
|
|
566
566
|
"actuable": false,
|
|
567
567
|
"signalk": null
|
|
568
568
|
},
|
|
@@ -590,7 +590,7 @@
|
|
|
590
590
|
"unit": "deg/min",
|
|
591
591
|
"cite": "7(d)(i)",
|
|
592
592
|
"cite_pending": null,
|
|
593
|
-
"note": "Rate of change of the compass bearing between the two vessels, signed. Rule 7(d)(i): a bearing that does not appreciably change means risk of collision exists. The Rules do not say what appreciably means; `constants.appreciable_bearing_change_deg_min` fixes it in pencil and entry
|
|
593
|
+
"note": "Rate of change of the compass bearing between the two vessels, signed. Rule 7(d)(i): a bearing that does not appreciably change means risk of collision exists. The Rules do not say what appreciably means; `constants.appreciable_bearing_change_deg_min` fixes it in pencil and entry rule:7d_i is the only reader.",
|
|
594
594
|
"actuable": false,
|
|
595
595
|
"signalk": null
|
|
596
596
|
},
|
|
@@ -633,10 +633,10 @@
|
|
|
633
633
|
"status": "pencil",
|
|
634
634
|
"note": "The relative geometry is redundant with the kinematic state, and a record may state a set that no two vessels can occupy (Q-48). A situation is geometrically consistent when every quantity it states agrees with every other under the equations below; a quantity the record does not state constrains nothing, so a record with bearings and no headings is not inconsistent, only unchecked. The suite enforces this on every situation fixture and on every situation its sweeps construct (REQ-VERIFY-8). This block is the definition, so that an engine applying the same check before it classifies applies this one and not a private one.",
|
|
635
635
|
"equations": {
|
|
636
|
-
"headings": "
|
|
636
|
+
"headings": "self:geo:rel_bearing_deg + self:kin:heading_deg + 180 == other:geo:rel_bearing_deg + other:kin:heading_deg (mod 360). Both bearings are of the same line of sight, read from its two ends, so this needs no positions.",
|
|
637
637
|
"positions": "The great-circle range and the initial bearings between the two kin:position values reproduce pair:geo:range_m and, less each subject's heading, both geo:rel_bearing_deg.",
|
|
638
|
-
"motion": "With each vessel moving along her heading at her kin:sog_kn, the relative velocity in
|
|
639
|
-
"steady_bearing": "A consequence of `motion` worth stating because Rule 15 rests on it: on a steady bearing with both vessels making way,
|
|
638
|
+
"motion": "With each vessel moving along her heading at her kin:sog_kn, the relative velocity in self's frame reproduces pair:geo:cpa_m, pair:geo:tcpa_s and pair:geo:bearing_change_deg_min, the last positive when the compass bearing of the other from self is increasing. The range and self's relative bearing the motion starts from are the stated pair:geo:range_m and self:geo:rel_bearing_deg, or, where the record leaves either out, the values the two kin:position fix. Course over ground is taken as heading: the record carries no set or drift.",
|
|
639
|
+
"steady_bearing": "A consequence of `motion` worth stating because Rule 15 rests on it: on a steady bearing with both vessels making way, self's speed times the sine of her relative bearing equals minus the other's speed times the sine of the aspect, so the two bearings lie on opposite sides. Two vessels each with the other on her starboard side are never on a collision course, which is why 15(a) never lays give-way on both -- and the suite asserts that over a sweep of steady-bearing geometries rather than over free bearings."
|
|
640
640
|
},
|
|
641
641
|
"tolerances": {
|
|
642
642
|
"bearing_deg": 1.0,
|
|
@@ -653,7 +653,7 @@
|
|
|
653
653
|
}
|
|
654
654
|
},
|
|
655
655
|
"history": {
|
|
656
|
-
"note": "The situation is not memoryless: Rule 13(d)
|
|
656
|
+
"note": "The situation is not memoryless: Rule 13(d) carries forward a classification that the instantaneous geometry would later contradict. History is directional -- it is self that was or was not the overtaking vessel -- so it takes a subject segment like the fact record does.",
|
|
657
657
|
"hist:was_overtaking": {
|
|
658
658
|
"type": "boolean",
|
|
659
659
|
"cite": "13(d)",
|
|
@@ -667,15 +667,15 @@
|
|
|
667
667
|
"unit": "s",
|
|
668
668
|
"cite": "13(d)",
|
|
669
669
|
"cite_pending": null,
|
|
670
|
-
"note": "Seconds since the
|
|
670
|
+
"note": "Seconds since the carried-forward classification first held, or null if none has held yet. Carried so a `conduct` monitor can say when the duty attached; a predicate at a point does not read it.",
|
|
671
671
|
"actuable": false,
|
|
672
672
|
"signalk": null
|
|
673
673
|
}
|
|
674
674
|
},
|
|
675
675
|
"record": {
|
|
676
|
-
"note": "The shape, as an illustration rather than a schema. `
|
|
676
|
+
"note": "The shape, as an illustration rather than a schema. `self.fact` and `other.fact` hold the fact record defined above, verbatim. `self` and `other` carry directional geometry; `pair` carries only the symmetric geometry. Absent is absent: a missing key never satisfies a constraint, exactly as in the one-subject evaluator.",
|
|
677
677
|
"shape": {
|
|
678
|
-
"
|
|
678
|
+
"self": {
|
|
679
679
|
"fact": "<the fact record above>",
|
|
680
680
|
"kin": "<kinematics>",
|
|
681
681
|
"geo": "<directional geometry>",
|
|
@@ -721,13 +721,13 @@
|
|
|
721
721
|
"status": "pencil",
|
|
722
722
|
"cite": null,
|
|
723
723
|
"cite_pending": "7(d)(i)",
|
|
724
|
-
"note": "Rule 7(d)(i) deems risk of collision to exist if the compass bearing of an approaching vessel 'does not appreciably change', and nowhere says what appreciably means. Read as a magnitude: entry
|
|
724
|
+
"note": "Rule 7(d)(i) deems risk of collision to exist if the compass bearing of an approaching vessel 'does not appreciably change', and nowhere says what appreciably means. Read as a magnitude: entry rule:7d_i gates on the open interval (-1.0, 1.0) so a bearing drawing out either way is treated alike, because the paragraph asks whether the bearing changes and not which way.",
|
|
725
725
|
"settled_by": "A source that fixes the figure -- Cockcroft & Lameijer, or an administration's guidance -- or a sensitivity sweep in colregs-engine showing which values change a region finding. Until then it is one session's number and any session may change it."
|
|
726
726
|
},
|
|
727
727
|
"head_on_half_angle_deg": {
|
|
728
728
|
"value": 11.25,
|
|
729
729
|
"unit": "deg",
|
|
730
|
-
"fact": "
|
|
730
|
+
"fact": "self:geo:rel_bearing_deg and other:geo:rel_bearing_deg",
|
|
731
731
|
"status": "pencil",
|
|
732
732
|
"cite": null,
|
|
733
733
|
"cite_pending": "14(b)",
|
package/data/geometry.json
CHANGED
|
@@ -92,8 +92,8 @@
|
|
|
92
92
|
"cite": "AnxI.2(f)(ii)",
|
|
93
93
|
"light": "light:all_round",
|
|
94
94
|
"applies_to_entries": [
|
|
95
|
-
"
|
|
96
|
-
"28"
|
|
95
|
+
"rule:27b_i",
|
|
96
|
+
"rule:28"
|
|
97
97
|
],
|
|
98
98
|
"text": "When it is impracticable to carry the all-round lights prescribed by Rule 27(b)(i) or Rule 28 below the masthead lights, they may be carried above the after masthead light(s) or vertically in between the forward masthead light(s) and after masthead light(s), provided that in the latter case the requirement of paragraph 3(c) shall be complied with."
|
|
99
99
|
},
|
|
@@ -162,8 +162,8 @@
|
|
|
162
162
|
{
|
|
163
163
|
"cite": "AnxI.2(j)",
|
|
164
164
|
"applies_to_entries": [
|
|
165
|
-
"
|
|
166
|
-
"
|
|
165
|
+
"rule:26b_i",
|
|
166
|
+
"rule:26c_i"
|
|
167
167
|
],
|
|
168
168
|
"datum": "sidelights",
|
|
169
169
|
"min_multiple_of_pair_spacing": 2,
|
|
@@ -172,7 +172,7 @@
|
|
|
172
172
|
{
|
|
173
173
|
"cite": "AnxI.2(k)",
|
|
174
174
|
"applies_to_entries": [
|
|
175
|
-
"30a"
|
|
175
|
+
"rule:30a"
|
|
176
176
|
],
|
|
177
177
|
"datum": "after anchor light",
|
|
178
178
|
"min_m": 4.5,
|
|
@@ -212,7 +212,7 @@
|
|
|
212
212
|
{
|
|
213
213
|
"cite": "AnxI.3(c)",
|
|
214
214
|
"applies_to_entries": [
|
|
215
|
-
"
|
|
215
|
+
"rule:27b_i"
|
|
216
216
|
],
|
|
217
217
|
"min_offset_from_centerline_m": 2,
|
|
218
218
|
"text": "When the lights prescribed in Rule 27(b)(i) are placed vertically between the forward masthead light(s) and the after masthead light(s), these all-round lights shall be placed at a horizontal distance of not less than 2 meters from the fore and aft centerline of the vessel in the athwartship direction."
|
|
@@ -227,7 +227,7 @@
|
|
|
227
227
|
{
|
|
228
228
|
"cite": "AnxI.4(a)",
|
|
229
229
|
"applies_to_entries": [
|
|
230
|
-
"
|
|
230
|
+
"rule:26c_ii"
|
|
231
231
|
],
|
|
232
232
|
"horizontal_from_identity_lights_m": {
|
|
233
233
|
"min": 2,
|
|
@@ -239,7 +239,7 @@
|
|
|
239
239
|
{
|
|
240
240
|
"cite": "AnxI.4(b)",
|
|
241
241
|
"applies_to_entries": [
|
|
242
|
-
"27d"
|
|
242
|
+
"rule:27d"
|
|
243
243
|
],
|
|
244
244
|
"horizontal_from_ram_lights_m": {
|
|
245
245
|
"min": 2
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "en",
|
|
3
|
+
"provenance": {
|
|
4
|
+
"contributors": [
|
|
5
|
+
"mark-brannan"
|
|
6
|
+
],
|
|
7
|
+
"reviewed_by": [
|
|
8
|
+
"mark-brannan"
|
|
9
|
+
],
|
|
10
|
+
"review_date": "2026-09-13"
|
|
11
|
+
},
|
|
12
|
+
"strings": {
|
|
13
|
+
"light": {
|
|
14
|
+
"light:masthead": "Masthead light",
|
|
15
|
+
"light:sidelight_starboard": "Starboard sidelight",
|
|
16
|
+
"light:sidelight_port": "Port sidelight",
|
|
17
|
+
"light:sternlight": "Sternlight",
|
|
18
|
+
"light:towing": "Towing light",
|
|
19
|
+
"light:all_round": "All-round light"
|
|
20
|
+
},
|
|
21
|
+
"modality": {
|
|
22
|
+
"modality:shall": "Required",
|
|
23
|
+
"modality:may": "Permitted",
|
|
24
|
+
"modality:shall-if-practicable": "Required if practicable"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "fi",
|
|
3
|
+
"provenance": {
|
|
4
|
+
"contributors": [
|
|
5
|
+
"claude-fable-5-1"
|
|
6
|
+
],
|
|
7
|
+
"reviewed_by": [],
|
|
8
|
+
"review_date": "2026-09-15"
|
|
9
|
+
},
|
|
10
|
+
"strings": {
|
|
11
|
+
"light": {
|
|
12
|
+
"light:masthead": "Mastovalo",
|
|
13
|
+
"light:sidelight_starboard": "Oikea sivuvalo",
|
|
14
|
+
"light:sidelight_port": "Vasen sivuvalo",
|
|
15
|
+
"light:sternlight": "Perävalo",
|
|
16
|
+
"light:towing": "Hinausvalo",
|
|
17
|
+
"light:all_round": "Ympäri näköpiirin näkyvä valo"
|
|
18
|
+
},
|
|
19
|
+
"modality": {
|
|
20
|
+
"modality:shall": "Pakollinen",
|
|
21
|
+
"modality:may": "Sallittu",
|
|
22
|
+
"modality:shall-if-practicable": "Pakollinen, jos mahdollista"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
package/data/images.json
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"23(d)(ii)"
|
|
22
22
|
],
|
|
23
23
|
"entries": [
|
|
24
|
-
"
|
|
24
|
+
"rule:23d_ii"
|
|
25
25
|
],
|
|
26
26
|
"depicts": "provision",
|
|
27
27
|
"transcript": [
|
|
@@ -59,9 +59,9 @@
|
|
|
59
59
|
"24(b)"
|
|
60
60
|
],
|
|
61
61
|
"entries": [
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"24b"
|
|
62
|
+
"rule:23a_i",
|
|
63
|
+
"rule:23a_ii",
|
|
64
|
+
"rule:24b"
|
|
65
65
|
],
|
|
66
66
|
"depicts": "provision",
|
|
67
67
|
"transcript": [
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"23(a)(ii)"
|
|
95
95
|
],
|
|
96
96
|
"entries": [
|
|
97
|
-
"
|
|
97
|
+
"rule:23a_ii"
|
|
98
98
|
],
|
|
99
99
|
"depicts": "exception",
|
|
100
100
|
"transcript": [
|
|
@@ -127,7 +127,7 @@
|
|
|
127
127
|
"23(b)"
|
|
128
128
|
],
|
|
129
129
|
"entries": [
|
|
130
|
-
"23b"
|
|
130
|
+
"rule:23b"
|
|
131
131
|
],
|
|
132
132
|
"depicts": "provision",
|
|
133
133
|
"transcript": [
|
|
@@ -160,7 +160,7 @@
|
|
|
160
160
|
"23(d)(i)"
|
|
161
161
|
],
|
|
162
162
|
"entries": [
|
|
163
|
-
"
|
|
163
|
+
"rule:23d_i"
|
|
164
164
|
],
|
|
165
165
|
"depicts": "provision",
|
|
166
166
|
"transcript": [
|
|
@@ -215,8 +215,8 @@
|
|
|
215
215
|
"24(a)(i)"
|
|
216
216
|
],
|
|
217
217
|
"entries": [
|
|
218
|
-
"
|
|
219
|
-
"
|
|
218
|
+
"rule:24a_i",
|
|
219
|
+
"rule:24a_ii_iv"
|
|
220
220
|
],
|
|
221
221
|
"depicts": "provision",
|
|
222
222
|
"transcript": [
|
|
@@ -249,7 +249,7 @@
|
|
|
249
249
|
"24(a)(v)"
|
|
250
250
|
],
|
|
251
251
|
"entries": [
|
|
252
|
-
"
|
|
252
|
+
"rule:24a_i:exceeds_200m"
|
|
253
253
|
],
|
|
254
254
|
"depicts": "provision",
|
|
255
255
|
"transcript": [
|
|
@@ -314,7 +314,7 @@
|
|
|
314
314
|
"24(e)"
|
|
315
315
|
],
|
|
316
316
|
"entries": [
|
|
317
|
-
"24e"
|
|
317
|
+
"rule:24e"
|
|
318
318
|
],
|
|
319
319
|
"depicts": "provision",
|
|
320
320
|
"transcript": [
|
|
@@ -437,7 +437,7 @@
|
|
|
437
437
|
"25(a)"
|
|
438
438
|
],
|
|
439
439
|
"entries": [
|
|
440
|
-
"25a"
|
|
440
|
+
"rule:25a"
|
|
441
441
|
],
|
|
442
442
|
"depicts": "provision",
|
|
443
443
|
"transcript": [
|
|
@@ -466,7 +466,7 @@
|
|
|
466
466
|
"25(b)"
|
|
467
467
|
],
|
|
468
468
|
"entries": [
|
|
469
|
-
"25b"
|
|
469
|
+
"rule:25b"
|
|
470
470
|
],
|
|
471
471
|
"depicts": "provision",
|
|
472
472
|
"transcript": [
|
|
@@ -498,7 +498,7 @@
|
|
|
498
498
|
"25(c)"
|
|
499
499
|
],
|
|
500
500
|
"entries": [
|
|
501
|
-
"25c"
|
|
501
|
+
"rule:25c"
|
|
502
502
|
],
|
|
503
503
|
"depicts": "provision",
|
|
504
504
|
"transcript": [
|
|
@@ -531,7 +531,7 @@
|
|
|
531
531
|
"25(d)(i)"
|
|
532
532
|
],
|
|
533
533
|
"entries": [
|
|
534
|
-
"
|
|
534
|
+
"rule:25d_i"
|
|
535
535
|
],
|
|
536
536
|
"depicts": "provision",
|
|
537
537
|
"transcript": [
|
|
@@ -564,7 +564,7 @@
|
|
|
564
564
|
"25(d)(ii)"
|
|
565
565
|
],
|
|
566
566
|
"entries": [
|
|
567
|
-
"
|
|
567
|
+
"rule:25d_ii"
|
|
568
568
|
],
|
|
569
569
|
"depicts": "provision",
|
|
570
570
|
"transcript": [
|
|
@@ -629,7 +629,7 @@
|
|
|
629
629
|
"26(b)(i)"
|
|
630
630
|
],
|
|
631
631
|
"entries": [
|
|
632
|
-
"
|
|
632
|
+
"rule:26b_i"
|
|
633
633
|
],
|
|
634
634
|
"depicts": "provision",
|
|
635
635
|
"transcript": [
|
|
@@ -665,7 +665,7 @@
|
|
|
665
665
|
"26(b)(iii)"
|
|
666
666
|
],
|
|
667
667
|
"entries": [
|
|
668
|
-
"
|
|
668
|
+
"rule:26b_iii"
|
|
669
669
|
],
|
|
670
670
|
"depicts": "provision",
|
|
671
671
|
"transcript": [
|
|
@@ -701,7 +701,7 @@
|
|
|
701
701
|
"26(c)(iii)"
|
|
702
702
|
],
|
|
703
703
|
"entries": [
|
|
704
|
-
"
|
|
704
|
+
"rule:26c_iii"
|
|
705
705
|
],
|
|
706
706
|
"depicts": "provision",
|
|
707
707
|
"transcript": [
|
|
@@ -740,7 +740,7 @@
|
|
|
740
740
|
"27(a)(i)"
|
|
741
741
|
],
|
|
742
742
|
"entries": [
|
|
743
|
-
"
|
|
743
|
+
"rule:27a_i"
|
|
744
744
|
],
|
|
745
745
|
"depicts": "provision",
|
|
746
746
|
"transcript": [
|
|
@@ -776,7 +776,7 @@
|
|
|
776
776
|
"27(a)(iii)"
|
|
777
777
|
],
|
|
778
778
|
"entries": [
|
|
779
|
-
"
|
|
779
|
+
"rule:27a_iii"
|
|
780
780
|
],
|
|
781
781
|
"depicts": "provision",
|
|
782
782
|
"transcript": [
|
|
@@ -812,7 +812,7 @@
|
|
|
812
812
|
"27(b)(iii)"
|
|
813
813
|
],
|
|
814
814
|
"entries": [
|
|
815
|
-
"
|
|
815
|
+
"rule:27b_iii"
|
|
816
816
|
],
|
|
817
817
|
"depicts": "provision",
|
|
818
818
|
"transcript": [
|
|
@@ -849,7 +849,7 @@
|
|
|
849
849
|
"27(b)(iv)"
|
|
850
850
|
],
|
|
851
851
|
"entries": [
|
|
852
|
-
"
|
|
852
|
+
"rule:27b_iv"
|
|
853
853
|
],
|
|
854
854
|
"depicts": "provision",
|
|
855
855
|
"transcript": [
|
|
@@ -924,7 +924,7 @@
|
|
|
924
924
|
"27(d)(ii)"
|
|
925
925
|
],
|
|
926
926
|
"entries": [
|
|
927
|
-
"27d"
|
|
927
|
+
"rule:27d"
|
|
928
928
|
],
|
|
929
929
|
"depicts": "provision",
|
|
930
930
|
"transcript": [
|
|
@@ -967,7 +967,7 @@
|
|
|
967
967
|
"27(d)(ii)"
|
|
968
968
|
],
|
|
969
969
|
"entries": [
|
|
970
|
-
"27d"
|
|
970
|
+
"rule:27d"
|
|
971
971
|
],
|
|
972
972
|
"depicts": "provision",
|
|
973
973
|
"transcript": [
|
|
@@ -1069,7 +1069,7 @@
|
|
|
1069
1069
|
"27(f)"
|
|
1070
1070
|
],
|
|
1071
1071
|
"entries": [
|
|
1072
|
-
"27f"
|
|
1072
|
+
"rule:27f"
|
|
1073
1073
|
],
|
|
1074
1074
|
"depicts": "provision",
|
|
1075
1075
|
"transcript": [
|
|
@@ -1106,7 +1106,7 @@
|
|
|
1106
1106
|
"28"
|
|
1107
1107
|
],
|
|
1108
1108
|
"entries": [
|
|
1109
|
-
"28"
|
|
1109
|
+
"rule:28"
|
|
1110
1110
|
],
|
|
1111
1111
|
"depicts": "provision",
|
|
1112
1112
|
"transcript": [
|
|
@@ -1142,7 +1142,7 @@
|
|
|
1142
1142
|
"29(a)(i)"
|
|
1143
1143
|
],
|
|
1144
1144
|
"entries": [
|
|
1145
|
-
"29a"
|
|
1145
|
+
"rule:29a"
|
|
1146
1146
|
],
|
|
1147
1147
|
"depicts": "provision",
|
|
1148
1148
|
"transcript": [
|
|
@@ -1175,7 +1175,7 @@
|
|
|
1175
1175
|
"29(a)(iii)"
|
|
1176
1176
|
],
|
|
1177
1177
|
"entries": [
|
|
1178
|
-
"29a"
|
|
1178
|
+
"rule:29a"
|
|
1179
1179
|
],
|
|
1180
1180
|
"depicts": "provision",
|
|
1181
1181
|
"transcript": [
|
|
@@ -1210,7 +1210,7 @@
|
|
|
1210
1210
|
"30(b)"
|
|
1211
1211
|
],
|
|
1212
1212
|
"entries": [
|
|
1213
|
-
"30b"
|
|
1213
|
+
"rule:30b"
|
|
1214
1214
|
],
|
|
1215
1215
|
"depicts": "provision",
|
|
1216
1216
|
"transcript": [
|
|
@@ -1246,7 +1246,7 @@
|
|
|
1246
1246
|
"30(c)"
|
|
1247
1247
|
],
|
|
1248
1248
|
"entries": [
|
|
1249
|
-
"30a"
|
|
1249
|
+
"rule:30a"
|
|
1250
1250
|
],
|
|
1251
1251
|
"depicts": "provision",
|
|
1252
1252
|
"transcript": [
|
|
@@ -1281,7 +1281,7 @@
|
|
|
1281
1281
|
"30(d)"
|
|
1282
1282
|
],
|
|
1283
1283
|
"entries": [
|
|
1284
|
-
"
|
|
1284
|
+
"rule:30d_i"
|
|
1285
1285
|
],
|
|
1286
1286
|
"depicts": "provision",
|
|
1287
1287
|
"transcript": [
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
{
|
|
2
|
+
"note": "The engine interface colregs owns: each verb ADR 0011 and ADR 0012 name, what it reads, what it answers, its entry-id companion and the fixture cases that bind it (ADR 0014).",
|
|
3
|
+
"operations": {
|
|
4
|
+
"evaluateDisplay": {
|
|
5
|
+
"adr": "0011",
|
|
6
|
+
"inputs": [
|
|
7
|
+
{
|
|
8
|
+
"name": "facts",
|
|
9
|
+
"schema": "schema/fact-record.schema.json"
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
"output": "schema/display-evaluation.schema.json",
|
|
13
|
+
"companion": {
|
|
14
|
+
"verb": "appliedDisplayEntries",
|
|
15
|
+
"output": "schema/evaluation.schema.json#/$defs/ruleIds"
|
|
16
|
+
},
|
|
17
|
+
"fixtures": [
|
|
18
|
+
{
|
|
19
|
+
"file": "fixtures/applicability-fixtures.json",
|
|
20
|
+
"case_inputs": [
|
|
21
|
+
"facts"
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"evaluateEncounter": {
|
|
27
|
+
"adr": "0011",
|
|
28
|
+
"inputs": [
|
|
29
|
+
{
|
|
30
|
+
"name": "situation",
|
|
31
|
+
"schema": "schema/situation.schema.json"
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"output": "schema/encounter-evaluation.schema.json",
|
|
35
|
+
"companion": {
|
|
36
|
+
"verb": "appliedEncounterEntries",
|
|
37
|
+
"output": "schema/evaluation.schema.json#/$defs/ruleIds"
|
|
38
|
+
},
|
|
39
|
+
"fixtures": [
|
|
40
|
+
{
|
|
41
|
+
"file": "fixtures/situation-fixtures.json",
|
|
42
|
+
"case_inputs": [
|
|
43
|
+
"situation"
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"evaluateConduct": {
|
|
49
|
+
"adr": "0012",
|
|
50
|
+
"inputs": [
|
|
51
|
+
{
|
|
52
|
+
"name": "trace",
|
|
53
|
+
"schema": "schema/trace.schema.json"
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"output": "schema/conduct-evaluation.schema.json",
|
|
57
|
+
"companion": {
|
|
58
|
+
"verb": "appliedConductEntries",
|
|
59
|
+
"output": "schema/evaluation.schema.json#/$defs/ruleIds"
|
|
60
|
+
},
|
|
61
|
+
"fixtures": []
|
|
62
|
+
},
|
|
63
|
+
"evaluateRule2Departure": {
|
|
64
|
+
"adr": "0012",
|
|
65
|
+
"inputs": [
|
|
66
|
+
{
|
|
67
|
+
"name": "situation",
|
|
68
|
+
"schema": "schema/situation.schema.json"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"name": "model",
|
|
72
|
+
"schema": "schema/rule2-departure-model.schema.json"
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
"output": "schema/rule2-departure-finding.schema.json",
|
|
76
|
+
"fixtures": []
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
package/data/rules.json
CHANGED
package/data/version.json
CHANGED