vehicles 0.9.0 → 0.9.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 (195) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +57 -7
  3. data/README.md +353 -69
  4. data/data/PROVENANCE-vehicles.md +2 -2
  5. data/data/plates/PROVENANCE.md +2 -2
  6. data/data/plates/_decode/at-districts.yml +2 -2
  7. data/data/plates/_decode/cn-issuing-offices.yml +2 -2
  8. data/data/plates/_decode/cn-provinces.yml +2 -2
  9. data/data/plates/_decode/cz-kraj.yml +1 -1
  10. data/data/plates/_decode/dk-serial-blocks.yml +1 -1
  11. data/data/plates/_decode/es-provinces.yml +1 -1
  12. data/data/plates/_decode/fr-departements.yml +2 -2
  13. data/data/plates/_decode/gb-age-identifiers.yml +1 -1
  14. data/data/plates/_decode/gb-memory-tags.yml +1 -1
  15. data/data/plates/_decode/gr-prefectures.yml +1 -1
  16. data/data/plates/_decode/hr-cities.yml +3 -3
  17. data/data/plates/_decode/ie-counties.yml +3 -3
  18. data/data/plates/_decode/in-state-codes.yml +2 -2
  19. data/data/plates/_decode/it-provinces.yml +3 -3
  20. data/data/plates/_decode/jp-office-marks.yml +2 -2
  21. data/data/plates/_decode/jp-use-marks.yml +2 -2
  22. data/data/plates/_decode/kr-authority-marks.yml +1 -1
  23. data/data/plates/_decode/mx-entity-series.yml +1 -1
  24. data/data/plates/_decode/my-index-marks.yml +4 -4
  25. data/data/plates/_decode/pt-trailer-services.yml +1 -1
  26. data/data/plates/_decode/ro-counties.yml +1 -1
  27. data/data/plates/_decode/se-diplomatic.yml +1 -1
  28. data/data/plates/_decode/si-regions.yml +1 -1
  29. data/data/plates/_decode/ua-regions.yml +1 -1
  30. data/data/plates/_meta/classes.yml +1 -1
  31. data/data/plates/_meta/separators.yml +1 -1
  32. data/data/plates/ad.yml +555 -52
  33. data/data/plates/ar.yml +8 -8
  34. data/data/plates/at.yml +91 -10
  35. data/data/plates/au-act.yml +13 -13
  36. data/data/plates/au-nsw.yml +9 -9
  37. data/data/plates/au-nt.yml +13 -14
  38. data/data/plates/au-qld.yml +7 -7
  39. data/data/plates/au-sa.yml +7 -7
  40. data/data/plates/au-tas.yml +10 -10
  41. data/data/plates/au-vic.yml +6 -6
  42. data/data/plates/au-wa.yml +8 -8
  43. data/data/plates/be.yml +11 -11
  44. data/data/plates/br.yml +14 -14
  45. data/data/plates/ca-ab.yml +10 -10
  46. data/data/plates/ca-bc.yml +6 -6
  47. data/data/plates/ca-mb.yml +4 -4
  48. data/data/plates/ca-nb.yml +9 -9
  49. data/data/plates/ca-nl.yml +11 -11
  50. data/data/plates/ca-ns.yml +12 -12
  51. data/data/plates/ca-nt.yml +7 -7
  52. data/data/plates/ca-nu.yml +7 -7
  53. data/data/plates/ca-on.yml +21 -21
  54. data/data/plates/ca-pe.yml +13 -13
  55. data/data/plates/ca-qc.yml +11 -11
  56. data/data/plates/ca-sk.yml +6 -6
  57. data/data/plates/ca-yt.yml +6 -6
  58. data/data/plates/ch.yml +14 -14
  59. data/data/plates/cn.yml +9 -9
  60. data/data/plates/cy.yml +6 -6
  61. data/data/plates/cz.yml +9 -9
  62. data/data/plates/de.yml +8 -8
  63. data/data/plates/dk.yml +12 -12
  64. data/data/plates/ee.yml +13 -13
  65. data/data/plates/eg.yml +708 -0
  66. data/data/plates/es.yml +8 -8
  67. data/data/plates/fi.yml +14 -14
  68. data/data/plates/fr.yml +12 -12
  69. data/data/plates/gb.yml +16 -16
  70. data/data/plates/gr.yml +14 -14
  71. data/data/plates/hr.yml +15 -15
  72. data/data/plates/hu.yml +16 -16
  73. data/data/plates/ie.yml +7 -7
  74. data/data/plates/in.yml +7 -7
  75. data/data/plates/is.yml +3 -3
  76. data/data/plates/it.yml +21 -21
  77. data/data/plates/jp.yml +121 -121
  78. data/data/plates/kr.yml +6 -6
  79. data/data/plates/li.yml +6 -6
  80. data/data/plates/lt.yml +10 -10
  81. data/data/plates/lu.yml +4 -4
  82. data/data/plates/lv.yml +9 -9
  83. data/data/plates/mc.yml +4 -4
  84. data/data/plates/mt.yml +5 -5
  85. data/data/plates/mx.yml +7 -7
  86. data/data/plates/my.yml +18 -18
  87. data/data/plates/ng.yml +346 -0
  88. data/data/plates/nl.yml +5 -5
  89. data/data/plates/no.yml +7 -7
  90. data/data/plates/nz.yml +18 -18
  91. data/data/plates/pl.yml +4 -4
  92. data/data/plates/pt.yml +13 -5
  93. data/data/plates/ro.yml +14 -14
  94. data/data/plates/se.yml +13 -13
  95. data/data/plates/si.yml +8 -8
  96. data/data/plates/sk.yml +15 -15
  97. data/data/plates/sm.yml +7 -7
  98. data/data/plates/th.yml +10 -10
  99. data/data/plates/tr.yml +432 -0
  100. data/data/plates/ua.yml +9 -9
  101. data/data/plates/us-ak.yml +11 -11
  102. data/data/plates/us-al.yml +12 -12
  103. data/data/plates/us-ar.yml +15 -15
  104. data/data/plates/us-as.yml +10 -10
  105. data/data/plates/us-az.yml +10 -10
  106. data/data/plates/us-ca.yml +13 -13
  107. data/data/plates/us-co.yml +14 -14
  108. data/data/plates/us-ct.yml +24 -24
  109. data/data/plates/us-dc.yml +7 -7
  110. data/data/plates/us-de.yml +10 -10
  111. data/data/plates/us-fl.yml +17 -17
  112. data/data/plates/us-ga.yml +10 -10
  113. data/data/plates/us-gu.yml +11 -11
  114. data/data/plates/us-hi.yml +11 -11
  115. data/data/plates/us-ia.yml +9 -9
  116. data/data/plates/us-id.yml +13 -13
  117. data/data/plates/us-il.yml +11 -11
  118. data/data/plates/us-in.yml +9 -9
  119. data/data/plates/us-ks.yml +8 -8
  120. data/data/plates/us-ky.yml +11 -11
  121. data/data/plates/us-la.yml +11 -11
  122. data/data/plates/us-ma.yml +10 -10
  123. data/data/plates/us-md.yml +7 -7
  124. data/data/plates/us-me.yml +16 -16
  125. data/data/plates/us-mi.yml +8 -8
  126. data/data/plates/us-mn.yml +13 -13
  127. data/data/plates/us-mo.yml +13 -13
  128. data/data/plates/us-mp.yml +12 -12
  129. data/data/plates/us-ms.yml +8 -8
  130. data/data/plates/us-mt.yml +12 -12
  131. data/data/plates/us-nc.yml +12 -12
  132. data/data/plates/us-nd.yml +10 -10
  133. data/data/plates/us-ne.yml +10 -10
  134. data/data/plates/us-nh.yml +8 -8
  135. data/data/plates/us-nj.yml +8 -8
  136. data/data/plates/us-nm.yml +14 -14
  137. data/data/plates/us-nv.yml +18 -18
  138. data/data/plates/us-ny.yml +17 -17
  139. data/data/plates/us-oh.yml +13 -13
  140. data/data/plates/us-ok.yml +12 -12
  141. data/data/plates/us-or.yml +15 -15
  142. data/data/plates/us-pa.yml +14 -14
  143. data/data/plates/us-pr.yml +15 -15
  144. data/data/plates/us-ri.yml +10 -10
  145. data/data/plates/us-sc.yml +7 -7
  146. data/data/plates/us-sd.yml +12 -12
  147. data/data/plates/us-tn.yml +8 -8
  148. data/data/plates/us-tx.yml +17 -17
  149. data/data/plates/us-ut.yml +12 -12
  150. data/data/plates/us-va.yml +14 -14
  151. data/data/plates/us-vi.yml +16 -16
  152. data/data/plates/us-vt.yml +9 -9
  153. data/data/plates/us-wa.yml +18 -18
  154. data/data/plates/us-wi.yml +8 -8
  155. data/data/plates/us-wv.yml +9 -9
  156. data/data/plates/us-wy.yml +10 -10
  157. data/data/plates/va.yml +7 -7
  158. data/data/plates/za.yml +11 -11
  159. data/data/vehicles.json +121081 -62015
  160. data/lib/generators/vehicles/templates/initializer.rb +21 -12
  161. data/lib/generators/vehicles/templates/vehicles_refresh_job.rb +8 -4
  162. data/lib/vehicles/color.rb +8 -1
  163. data/lib/vehicles/colors.rb +14 -10
  164. data/lib/vehicles/configuration.rb +82 -3
  165. data/lib/vehicles/data_source.rb +220 -0
  166. data/lib/vehicles/dataset.rb +38 -6
  167. data/lib/vehicles/dataset_resolution.rb +39 -3
  168. data/lib/vehicles/dataset_slice.rb +90 -0
  169. data/lib/vehicles/hosted_result.rb +94 -0
  170. data/lib/vehicles/http.rb +75 -7
  171. data/lib/vehicles/id_lookup.rb +37 -0
  172. data/lib/vehicles/kind_rule.rb +63 -0
  173. data/lib/vehicles/labels.rb +131 -0
  174. data/lib/vehicles/make.rb +45 -19
  175. data/lib/vehicles/model.rb +66 -19
  176. data/lib/vehicles/model_match.rb +16 -2
  177. data/lib/vehicles/model_matcher.rb +6 -7
  178. data/lib/vehicles/plates/series.rb +87 -8
  179. data/lib/vehicles/plates/template_fill.rb +2 -2
  180. data/lib/vehicles/plates/templates.rb +9 -5
  181. data/lib/vehicles/plates.rb +54 -8
  182. data/lib/vehicles/providers/hosted_provider.rb +145 -32
  183. data/lib/vehicles/providers/local_provider.rb +2 -2
  184. data/lib/vehicles/refresh_result.rb +74 -0
  185. data/lib/vehicles/refresher.rb +190 -54
  186. data/lib/vehicles/release_checks.rb +72 -0
  187. data/lib/vehicles/text_matcher.rb +19 -10
  188. data/lib/vehicles/validators/vehicle_make_validator.rb +18 -1
  189. data/lib/vehicles/validators/vehicle_model_validator.rb +17 -1
  190. data/lib/vehicles/version.rb +1 -1
  191. data/lib/vehicles.rb +119 -67
  192. data/rakelib/data_refresh.rake +1 -1
  193. data/rakelib/plates_refresh.rake +1 -1
  194. data/sig/vehicles.rbs +67 -13
  195. metadata +13 -2
data/data/plates/de.yml CHANGED
@@ -1,4 +1,4 @@
1
- # plates/de.yml — Germany (PRD-PLATES gate L0 pilot).
1
+ # plates/de.yml — Germany (the plates spec gate L0 pilot).
2
2
  #
3
3
  # EVERY format, colour and class claim here comes from the consolidated
4
4
  # Fahrzeug-Zulassungsverordnung (FZV) of 20 July 2023, BGBl. 2023 I Nr. 199,
@@ -272,7 +272,7 @@ common:
272
272
  licence: >-
273
273
  NO LICENSABLE FONT IS MANDATED. The legal object is a statutory
274
274
  Schriftmuster (a drawing), exactly as the EU dossier found for the UK and
275
- Spain. Per PRD-PLATES §6 the render layer derives glyphs from the
275
+ Spain. Per the plates spec §6 the render layer derives glyphs from the
276
276
  statutory drawing, never from a third-party FE-Schrift TTF whose own
277
277
  licence is unstated. Germany is additionally the affirmatively favourable
278
278
  case (PD-VzKat / §5(1) UrhG: designs published inside statutory
@@ -302,7 +302,7 @@ common:
302
302
  source: "https://www.gesetze-im-internet.de/fzv_2023/anlage_1.html # Anlage 1 (zu § 9 Absatz 1 Satz 4), Fundstelle BGBl. 2023 I Nr. 199, S. 67 — the five shapes and the umlaut exclusion, verbatim"
303
303
 
304
304
  # Anlage 2 FZV — the SMALL, CLOSED, primary code table (contrast the district
305
- # list, which is not in the FZV at all). Inlined per PRD-PLATES §2.4's
305
+ # list, which is not in the FZV at all). Inlined per the plates spec §2.4's
306
306
  # "inline table (small) or a reference (large)" rule.
307
307
  region_encoding_tables:
308
308
  anlage2_federal_and_diplomatic:
@@ -395,7 +395,7 @@ series:
395
395
  foreground: "#000000"
396
396
  border: { color: "#000000", note: "Anlage 4 permits black, GREEN or RED borders depending on plate type" }
397
397
  band: { side: left, color: "#003399", content: eu-stars+D, hex_basis: observed, note: "the FZV states the star-wreath ratio and cross-references Reg. 2411/98 for the 'D', but gives no RGB/RAL for the blue field" }
398
- emblem: { present: true, rendered: placeholder, note: "the Stempelplakette carries the FARBIGES WAPPEN DES LANDES (§ 12 Abs. 3) — a coat of arms per Land. PRD-PLATES §3 placeholder rule applied at write time; SUPERSEDED 2026-08-03: ALL 16 Land arms are licence-cleared in plates/_art/de-<land>/ (PD family, extmetadata-verified, ledgered) — depiction consumers may render the coloured arms in the seal. The remaining gap is the district→Land mapping (the future de-districts table) for serial-driven resolution." }
398
+ emblem: { present: true, rendered: placeholder, note: "the Stempelplakette carries the FARBIGES WAPPEN DES LANDES (§ 12 Abs. 3) — a coat of arms per Land. The plates spec §3 placeholder rule applied at write time; SUPERSEDED 2026-08-03: ALL 16 Land arms are licence-cleared in plates/_art/de-<land>/ (PD family, extmetadata-verified, ledgered) — depiction consumers may render the coloured arms in the seal. The remaining gap is the district→Land mapping (the future de-districts table) for serial-driven resolution." }
399
399
  seal: { name: Stempelplakette, diameter_mm: null, content: "coloured Land arms, Land name, registration authority name, unique Druckstücknummer, and a CONCEALED security code that can only be revealed irreversibly; self-destroying on removal", source_note: "§ 12 Abs. 3 FZV + Anlage 5" }
400
400
  rear_differs: false
401
401
  display: "front and rear on motor vehicles; rear only on trailers, motorcycles and class L5e vehicles; front only on single-axle tractors (§ 12 Abs. 5 FZV)"
@@ -669,7 +669,7 @@ series:
669
669
  Nr. 4: in the Betriebszeitraum field, "die Zahl über dem Bindestrich" is the
670
670
  start month and "die Zahl unter dem Bindestrich" the end month, set in
671
671
  DIN 1451-2:1986-02. A single `pattern` string cannot carry a stacked
672
- two-number field — this is the same schema pressure PRD-PLATES §2.2 records
672
+ two-number field — this is the same schema pressure the plates spec §2.2 records
673
673
  for Japan, arriving in Germany.
674
674
  design:
675
675
  plate: { w: 520, h: 110, unit: mm }
@@ -702,7 +702,7 @@ series:
702
702
  pages is partial) — recorded gap, deliberately not asserted. Its own
703
703
  series rather than a variant because the DESIGN differs (an added
704
704
  operating-period field) while the serial grammar does not — the
705
- PRD-PLATES §2.3 test resolves cleanly. It composes with other classes:
705
+ the plates spec §2.3 test resolves cleanly. It composes with other classes:
706
706
  green plates (§ 10 Abs. 2), Oldtimerkennzeichen and E-Kennzeichen can
707
707
  all be issued AS seasonal plates, which means class is genuinely
708
708
  multi-valued here and the single-`class` schema cannot express the
@@ -1008,7 +1008,7 @@ series:
1008
1008
  table, not for this series' start. Two facts a decode table must carry,
1009
1009
  both verbatim from Anlage 2 (2023): BG (Bundespolizei) is "noch gültig,
1010
1010
  wird nicht mehr zugeteilt" — still valid, no longer assigned, exactly
1011
- the ended-but-on-the-road case PRD-PLATES's `ended: true` semantics
1011
+ the ended-but-on-the-road case the plates spec's `ended: true` semantics
1012
1012
  exist for at the series level and that decode rows need at the row
1013
1013
  level. And the CONSULAR case has no code of its own: career consular
1014
1014
  posts carry "das Unterscheidungszeichen des Verwaltungsbezirkes am Sitz
@@ -1035,7 +1035,7 @@ series:
1035
1035
  foreground: "#000000"
1036
1036
  band: { side: left, color: "#003399", content: eu-stars+D }
1037
1037
  region_encoding: inline
1038
- region_encoding_note: "prefix decode in region_encoding_tables.anlage2_federal_and_diplomatic.diplomatic; the mission-number sub-decode is NOT authored (PRD-PLATES puts diplomatic decode tables at L4)"
1038
+ region_encoding_note: "prefix decode in region_encoding_tables.anlage2_federal_and_diplomatic.diplomatic; the mission-number sub-decode is NOT authored (the plates spec puts diplomatic decode tables at L4)"
1039
1039
  sources:
1040
1040
  - "https://www.gesetze-im-internet.de/fzv_2023/anlage_2.html # Anlage 2 Nr. 3: '0, B oder BN — Diplomatische Vertretungen oder internationale Organisationen und in Abhängigkeit vom Status der bevorrechtigten Person', registered at Berlin or Bonn"
1041
1041
  - "https://www.gesetze-im-internet.de/fzv_2023/__9.html # § 9 Abs. 1 Satz 6-7"
data/data/plates/dk.yml CHANGED
@@ -1,4 +1,4 @@
1
- # plates/dk.yml — Denmark (PRD-PLATES gate L1, wave 2).
1
+ # plates/dk.yml — Denmark (the plates spec gate L1, wave 2).
2
2
  #
3
3
  # WHAT IS PRIMARY HERE, AND WHAT IS NOT. Every claim in this file names its
4
4
  # layer, and the layers are:
@@ -32,7 +32,7 @@
32
32
  # letter alphabet, the blocked two-letter combinations, and the
33
33
  # ønskenummerplade's 1992 start.
34
34
  #
35
- # THE FOUR DATES THIS FILE EXISTS TO GET RIGHT (PRD-PLATES §9: era boundaries
35
+ # THE FOUR DATES THIS FILE EXISTS TO GET RIGHT (the plates spec §9: era boundaries
36
36
  # are folklore-prone; each of these is dated to the DAY by an instrument's own
37
37
  # commencement clause, and each replaces a vaguer number in circulation):
38
38
  #
@@ -78,7 +78,7 @@
78
78
  # names colours in WORDS ("hvid/sort/rød") and never gives a value.
79
79
  # Consequently EVERY hex below is `hex_basis: observed` and indicative.
80
80
  # * NO FONT. No typeface is named or drawn anywhere in the instrument, so
81
- # per PRD-PLATES §6 there is no licensable font to clear and no statutory
81
+ # per the plates spec §6 there is no licensable font to clear and no statutory
82
82
  # Schriftmuster to derive glyphs from; the schematic fallback applies.
83
83
  # * NO PUBLISHED SERIES REGISTER. § 68, stk. 3 delegates: "Skatteforvaltningen
84
84
  # kan inddele registreringsnumre i serier efter køretøjers art eller
@@ -110,7 +110,7 @@
110
110
  # regler om mærkning af køretøjer med særlige nummerplader eller mærkater."
111
111
  #
112
112
  # SEPARATOR POLICY: the printed gaps on a Danish plate are GAPS, not glyphs —
113
- # no Danish instrument prescribes any separator character. Per PRD-PLATES §2.6
113
+ # no Danish instrument prescribes any separator character. Per the plates spec §2.6
114
114
  # they are written as the emitted SPACE in `pattern` and as an optional " ?" in
115
115
  # every regex. SKAT's catalogue renders the five-digit car number as two groups
116
116
  # ("AF 22 454"), which is why the canonical printed form here is "LL 99 999".
@@ -306,7 +306,7 @@ common:
306
306
  swatches. This is the posture se.yml records for Sweden and de.yml for
307
307
  the German "grünes Kennzeichen"; it is not a defect in the pass.
308
308
  font_note: >-
309
- NO TYPEFACE IS MANDATED and no statutory drawing exists. Per PRD-PLATES
309
+ NO TYPEFACE IS MANDATED and no statutory drawing exists. Per the plates spec
310
310
  §6 the render layer therefore has neither a licence to clear nor a
311
311
  Schriftmuster to derive from; the schematic fallback applies and the gap
312
312
  is recorded here rather than papered over with a lookalike TTF.
@@ -389,7 +389,7 @@ series:
389
389
  a separator character. SKAT's catalogue renders the five-digit number
390
390
  as two groups ("AF 22 454"), which is the canonical printed form used
391
391
  here; the regex accepts the space or its absence at both positions per
392
- PRD-PLATES §2.6.
392
+ the plates spec §2.6.
393
393
  design:
394
394
  plate: { w: 504, h: 120, unit: mm }
395
395
  plate_variants:
@@ -485,7 +485,7 @@ series:
485
485
  registreringsafgiftsloven and lov om vægtafgift af motorkøretøjer m.v.
486
486
  This file records the REGISTERED USE, which is what the plate colour
487
487
  tracks, and does not restate rates — rates change and are outside
488
- PRD-PLATES §2.5's scope.
488
+ the plates spec §2.5's scope.
489
489
  region_encoding: "plates/_decode/dk-serial-blocks.yml"
490
490
  region_encoding_file: dk-serial-blocks.yml
491
491
  sources:
@@ -886,11 +886,11 @@ series:
886
886
  narrower than the regex above — and that grammar cannot be written.
887
887
  The human-pattern DSL spells a digit position as "9", so a LITERAL 9
888
888
  is unspellable, and any regex fixing the leading 9 fails the
889
- round-trip against every pattern the DSL can express (PRD-PLATES
889
+ round-trip against every pattern the DSL can express (the plates spec
890
890
  §5.2). The diplomatic series escape the same trap only because their
891
891
  block starts 76/77, whose digits are not the token. `regex` is
892
892
  therefore deliberately wider than what this series issues — a match
893
- is a shape hit, not a taxi claim — and per PRD-PLATES §2.7 that is
893
+ is a shape hit, not a taxi claim — and per the plates spec §2.7 that is
894
894
  `recall-only`, which in turn forbids a `regex_strict`. The block
895
895
  lives in `format.block` and in plates/_decode/dk-serial-blocks.yml,
896
896
  where a parse API should read it.
@@ -1434,7 +1434,7 @@ series:
1434
1434
  registered on ordinary yellow commercial plates; SKAT's 2012 catalogue
1435
1435
  still stocks the dedicated plate, so this file records the dedicated plate
1436
1436
  as open and flags the conflict rather than resolving it — the sources
1437
- disagree and PRD-PLATES §5.3 says record, do not average.
1437
+ disagree and the plates spec §5.3 says record, do not average.
1438
1438
 
1439
1439
  # =========================================================================
1440
1440
  # LUFTHAVNSPLADER — airside-only plates. Included because SKAT stocks them,
@@ -1538,7 +1538,7 @@ series:
1538
1538
 
1539
1539
  # ---------------------------------------------------------------------------
1540
1540
  # GAPS — what this pass could NOT establish. Recorded here because a stated
1541
- # gap is a finding and a silent one is a defect (PRD-PLATES §5.1
1541
+ # gap is a finding and a silent one is a defect (the plates spec §5.1
1542
1542
  # jurisdiction-completeness).
1543
1543
  # ---------------------------------------------------------------------------
1544
1544
  gaps:
@@ -1552,7 +1552,7 @@ gaps:
1552
1552
  U+002E is in _meta/separators.yml's `forgiving` set but NOT in its
1553
1553
  `emitted` set, so the dataset cannot spell this plate's printed form
1554
1554
  without either failing the lint or misrepresenting the plate by writing a
1555
- hyphen or a space in place of the stop. Per PRD-PLATES §2.6 that is a
1555
+ hyphen or a space in place of the stop. Per the plates spec §2.6 that is a
1556
1556
  schema amendment (a `never_separator` entry, or an addition to `emitted`
1557
1557
  with its rationale), not a data entry, and it is out of scope for a
1558
1558
  jurisdiction pass. No Forsvarsministeriet instrument was located.
data/data/plates/ee.yml CHANGED
@@ -1,4 +1,4 @@
1
- # plates/ee.yml — Estonia (PRD-PLATES gate L1, EU/EEA wave 2). DRAFT for
1
+ # plates/ee.yml — Estonia (the plates spec gate L1, EU/EEA wave 2). DRAFT for
2
2
  # verification: researched by an Opus L1 researcher, never applied directly.
3
3
  #
4
4
  # THE ESTONIAN SOURCE CHAIN, AND WHY THE CURRENT LAYER IS UNUSUALLY CLEAN
@@ -45,7 +45,7 @@
45
45
  # reads "520x113" for A1, A2, A4, A5, A8, A10, D1, E2 and A12; the drawings
46
46
  # in Lisa 3 dimension the same 113 mm height (10,5 + 77 + 11,5 + border).
47
47
  # The 110 mm figure that circulates for Estonia is NOT what the instrument
48
- # says. This is recorded, not averaged (PRD-PLATES §5.3).
48
+ # says. This is recorded, not averaged (the plates spec §5.3).
49
49
  #
50
50
  # 3. THE TRANSIT PLATE'S GROUND IS "VÄRVITU" — COLOURLESS, NOT WHITE. Lisa 1
51
51
  # gives D1 and D2 "Värvitu aluspõhi, punased sümbolid". Every other white
@@ -87,7 +87,7 @@
87
87
  # distinguishes them. On A1 the groups are divided by a GAP whose width is
88
88
  # specified as a field boundary in Lisa 3 (25 mm between the digit field and
89
89
  # the letter field) with no glyph — spelled here as a space, per
90
- # PRD-PLATES §2.6. On D1/D2 the transit plates a HYPHEN IS DRAWN, and Lisa 3
90
+ # the plates spec §2.6. On D1/D2 the transit plates a HYPHEN IS DRAWN, and Lisa 3
91
91
  # dimensions it explicitly (44 mm wide x 11 mm high on D1) — so those patterns
92
92
  # spell a literal "-". Same dataset, two honest separators, both from drawings.
93
93
  jurisdiction: ee
@@ -159,13 +159,13 @@ common:
159
159
  Estonian-specific letters (Õ Ä Ö Ü) appear in any näidis, so unlike
160
160
  Finland's 29-glyph annex there is no Å/Ä/Ö question here — the Estonian
161
161
  repertoire as drawn is A-Z and 0-9, which is exactly the dataset's serial
162
- alphabet (PRD-PLATES §2.6). This is a rare clean fit and is stated so it
162
+ alphabet (the plates spec §2.6). This is a rare clean fit and is stated so it
163
163
  is not mistaken for an assumption.
164
164
  glyph_standard: >-
165
165
  § 3(6): the symbol images must conform to "Eesti standardi EVS 597:2004
166
166
  lisale B" AND to the Lisa 3 drawings. EVS 597:2004 is a purchasable
167
167
  Estonian standard and its text is NOT pinned in this pass (the same
168
- posture PRD-PLATES §4 takes to SAE J686) — recorded as a gap. The
168
+ posture the plates spec §4 takes to SAE J686) — recorded as a gap. The
169
169
  drawings in Lisa 3 are free and are what the render layer derives from.
170
170
  stroke_widths: >-
171
171
  § 3(4), verbatim: "Registreerimismärkidel kasutatavate sümbolite joonte
@@ -277,7 +277,7 @@ common:
277
277
  tüüp 1 (49 mm, 7 mm stroke), tüüp 2 (77 mm, 11 mm stroke), tüüp 3 (49 mm,
278
278
  7 mm stroke) and tüüp 4 (77 mm, 11 mm stroke). Tüüp 1/2 and tüüp 3/4 pair
279
279
  by height but differ in width table (Lisa 2), tüüp 3/4 being the narrower
280
- condensed cut. Exactly the UK/DE/ES/FI pattern of PRD-PLATES §6: the legal
280
+ condensed cut. Exactly the UK/DE/ES/FI pattern of the plates spec §6: the legal
281
281
  object is a drawing plus a width table, not a licensable typeface.
282
282
  symbol_sizes: >-
283
283
  Lisa 2 Tabel 1 (heights, then widths for digits 1 / 3 / all others and
@@ -314,7 +314,7 @@ region_encoding_gap:
314
314
  region. Those two statements are not consistent with each other, no primary
315
315
  was located for either, and the pre-2019 office-letter mapping appears in
316
316
  that article as a TABLE. Shipping a decode table on that evidence would
317
- manufacture precision the sources do not carry, and PRD-PLATES §2.4 warns
317
+ manufacture precision the sources do not carry, and the plates spec §2.4 warns
318
318
  in terms that a decode table which cannot state its own reliability will
319
319
  make the parse API lie (the France/SIV finding).
320
320
  what_would_close_it: >-
@@ -362,7 +362,7 @@ out_of_scope:
362
362
  detail: >-
363
363
  § 3(6) binds the symbol images to "Eesti standardi EVS 597:2004 lisale B"
364
364
  as well as to Lisa 3. EVS 597:2004 is sold by the Estonian Centre for
365
- Standardisation and its text was not purchased for this pass. PRD-PLATES
365
+ Standardisation and its text was not purchased for this pass. The plates spec
366
366
  §4's SAE J686 posture applies verbatim: never quote the standard's
367
367
  dimensions except via a free instrument. Everything this file states about
368
368
  glyph geometry comes from Lisa 2 and Lisa 3, both free.
@@ -449,7 +449,7 @@ series:
449
449
  NO separator GLYPH is prescribed. § 3(1) puts the digits and the letters
450
450
  in two SEPARATE FIELDS and näidis 1 dimensions the boundary between them
451
451
  at 25 mm (digit field 157 max, letter field 225 max, inside a 520 mm
452
- plate). Spelled here as a space per PRD-PLATES §2.6 rule 2. § 3(2) adds
452
+ plate). Spelled here as a space per the plates spec §2.6 rule 2. § 3(2) adds
453
453
  the alignment: digits flush LEFT in the digit field, letters flush RIGHT
454
454
  in the letter field, symbols at most 28 mm apart within a field.
455
455
  design:
@@ -611,7 +611,7 @@ series:
611
611
  recolours whatever mark the vehicle would otherwise carry. Modelled as its
612
612
  own series rather than a colour variant because the DESIGN differs and the
613
613
  issuing CLASS differs (tähtajaline registreerimine — time-limited
614
- registration), which PRD-PLATES §2.3 makes sufficient. Its dimensions and
614
+ registration), which the plates spec §2.3 makes sufficient. Its dimensions and
615
615
  band are inherited from A1 and are a RECORDED INFERENCE: the instrument
616
616
  does not restate them for this variant. Distinct from ee-transit-d1/d2,
617
617
  which are a different class with a different format and their own drawings.
@@ -865,7 +865,7 @@ series:
865
865
  The same invariant PROOV and four digits as A8. The pattern spells NO
866
866
  separator because none is printed: näidis 18 is a TWO-ROW plate with
867
867
  PROOV on the upper row (215 mm field) and the digits on the lower
868
- (134 mm field), which PRD-PLATES §2.6 collapses to one canonical
868
+ (134 mm field), which the plates spec §2.6 collapses to one canonical
869
869
  serial — the same two-printed-forms/one-mark situation fi.yml records
870
870
  for Finnish two-row plates.
871
871
  design:
@@ -975,7 +975,7 @@ series:
975
975
  CO-OCCURRENCE is forbidden, which a one-letter group cannot produce. The
976
976
  twin is therefore narrower than the law and a verifier should relax it to
977
977
  '\A(?!W)[A-Z] \d{3}\z'. Recorded rather than silently corrected because
978
- the researcher-verifier split (PRD-PLATES §5.3) is the point.
978
+ the researcher-verifier split (the plates spec §5.3) is the point.
979
979
 
980
980
  # =========================================================================
981
981
  # L-CATEGORY. Lisa 1: B1 and B3 kirja tüüp 3, 177x101. B1 white/black,
@@ -1222,7 +1222,7 @@ series:
1222
1222
  - "https://www.riigiteataja.ee/aktilisa/1030/6202/2012/MKM_m45_lisa3.pdf # näidis 16 — two-row '6269 / EO', plate 212 x 135, rows 49 mm + 9 mm + 49 mm"
1223
1223
  notes: >-
1224
1224
  THE TWO-ROW TRACTOR PLATE. Same mark as ee-agricultural-e2, different
1225
- blank and layout, therefore a separate series under PRD-PLATES §2.3
1225
+ blank and layout, therefore a separate series under the plates spec §2.3
1226
1226
  (design differs) — and separately useful to a consumer because the printed
1227
1227
  form has no separator to forgive. Overlaps ee-agricultural-e2 in period
1228
1228
  and categories because Lisa 1 offers the two sizes as alternatives for the