vehicles 0.4.1 → 0.8.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.
Files changed (189) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +164 -0
  3. data/CHANGELOG.md +321 -0
  4. data/README.md +88 -15
  5. data/data/PROVENANCE-vehicles.md +12 -0
  6. data/data/plates/PROVENANCE.md +10 -0
  7. data/data/plates/_decode/at-districts.yml +287 -0
  8. data/data/plates/_decode/ch-cantons.yml +110 -0
  9. data/data/plates/_decode/cn-issuing-offices.yml +463 -0
  10. data/data/plates/_decode/cn-provinces.yml +614 -0
  11. data/data/plates/_decode/cz-kraj.yml +159 -0
  12. data/data/plates/_decode/dk-serial-blocks.yml +327 -0
  13. data/data/plates/_decode/es-provinces.yml +116 -0
  14. data/data/plates/_decode/fr-departements.yml +191 -0
  15. data/data/plates/_decode/gb-age-identifiers.yml +170 -0
  16. data/data/plates/_decode/gb-memory-tags.yml +202 -0
  17. data/data/plates/_decode/gr-prefectures.yml +1408 -0
  18. data/data/plates/_decode/hr-cities.yml +315 -0
  19. data/data/plates/_decode/ie-counties.yml +227 -0
  20. data/data/plates/_decode/in-state-codes.yml +169 -0
  21. data/data/plates/_decode/is-districts-1938.yml +116 -0
  22. data/data/plates/_decode/it-provinces.yml +348 -0
  23. data/data/plates/_decode/jp-office-marks.yml +960 -0
  24. data/data/plates/_decode/jp-use-marks.yml +205 -0
  25. data/data/plates/_decode/kr-authority-marks.yml +146 -0
  26. data/data/plates/_decode/kr-use-syllables.yml +194 -0
  27. data/data/plates/_decode/lu-series-order.yml +638 -0
  28. data/data/plates/_decode/mx-entity-series.yml +380 -0
  29. data/data/plates/_decode/my-index-marks.yml +271 -0
  30. data/data/plates/_decode/no-counties-1913.yml +148 -0
  31. data/data/plates/_decode/no-districts.yml +901 -0
  32. data/data/plates/_decode/pl-powiats.yml +567 -0
  33. data/data/plates/_decode/pt-trailer-services.yml +96 -0
  34. data/data/plates/_decode/ro-counties.yml +213 -0
  35. data/data/plates/_decode/se-diplomatic.yml +220 -0
  36. data/data/plates/_decode/si-regions.yml +123 -0
  37. data/data/plates/_decode/sk-districts.yml +314 -0
  38. data/data/plates/_decode/th-registration-elements.yml +208 -0
  39. data/data/plates/_decode/ua-regions.yml +393 -0
  40. data/data/plates/_decode/za-licence-marks.yml +215 -0
  41. data/data/plates/_meta/classes.yml +26 -0
  42. data/data/plates/_meta/separators.yml +102 -0
  43. data/data/plates/ad.yml +961 -0
  44. data/data/plates/ar.yml +762 -0
  45. data/data/plates/at.yml +1424 -0
  46. data/data/plates/au-act.yml +472 -0
  47. data/data/plates/au-nsw.yml +282 -0
  48. data/data/plates/au-nt.yml +431 -0
  49. data/data/plates/au-qld.yml +272 -0
  50. data/data/plates/au-sa.yml +248 -0
  51. data/data/plates/au-tas.yml +302 -0
  52. data/data/plates/au-vic.yml +215 -0
  53. data/data/plates/au-wa.yml +309 -0
  54. data/data/plates/be.yml +1840 -0
  55. data/data/plates/br.yml +1152 -0
  56. data/data/plates/ca-ab.yml +430 -0
  57. data/data/plates/ca-bc.yml +697 -0
  58. data/data/plates/ca-mb.yml +499 -0
  59. data/data/plates/ca-nb.yml +537 -0
  60. data/data/plates/ca-nl.yml +743 -0
  61. data/data/plates/ca-ns.yml +808 -0
  62. data/data/plates/ca-nt.yml +610 -0
  63. data/data/plates/ca-nu.yml +280 -0
  64. data/data/plates/ca-on.yml +881 -0
  65. data/data/plates/ca-pe.yml +592 -0
  66. data/data/plates/ca-qc.yml +1036 -0
  67. data/data/plates/ca-sk.yml +256 -0
  68. data/data/plates/ca-yt.yml +656 -0
  69. data/data/plates/ch.yml +1273 -0
  70. data/data/plates/cn.yml +1431 -0
  71. data/data/plates/cy.yml +688 -0
  72. data/data/plates/cz.yml +1179 -0
  73. data/data/plates/de.yml +1107 -0
  74. data/data/plates/dk.yml +1647 -0
  75. data/data/plates/ee.yml +1275 -0
  76. data/data/plates/es.yml +888 -0
  77. data/data/plates/fi.yml +1271 -0
  78. data/data/plates/fr.yml +1265 -0
  79. data/data/plates/gb.yml +1188 -0
  80. data/data/plates/gr.yml +721 -0
  81. data/data/plates/hr.yml +860 -0
  82. data/data/plates/hu.yml +959 -0
  83. data/data/plates/ie.yml +775 -0
  84. data/data/plates/in.yml +1172 -0
  85. data/data/plates/is.yml +667 -0
  86. data/data/plates/it.yml +1317 -0
  87. data/data/plates/jp.yml +3650 -0
  88. data/data/plates/kr.yml +1375 -0
  89. data/data/plates/li.yml +1010 -0
  90. data/data/plates/lt.yml +879 -0
  91. data/data/plates/lu.yml +842 -0
  92. data/data/plates/lv.yml +924 -0
  93. data/data/plates/mc.yml +1024 -0
  94. data/data/plates/mt.yml +854 -0
  95. data/data/plates/mx.yml +1372 -0
  96. data/data/plates/my.yml +685 -0
  97. data/data/plates/nl.yml +1016 -0
  98. data/data/plates/no.yml +1018 -0
  99. data/data/plates/nz.yml +1699 -0
  100. data/data/plates/pl.yml +1296 -0
  101. data/data/plates/pt.yml +847 -0
  102. data/data/plates/ro.yml +785 -0
  103. data/data/plates/se.yml +1091 -0
  104. data/data/plates/si.yml +1105 -0
  105. data/data/plates/sk.yml +1439 -0
  106. data/data/plates/sm.yml +1119 -0
  107. data/data/plates/th.yml +1150 -0
  108. data/data/plates/ua.yml +1672 -0
  109. data/data/plates/us-ak.yml +763 -0
  110. data/data/plates/us-al.yml +457 -0
  111. data/data/plates/us-ar.yml +427 -0
  112. data/data/plates/us-as.yml +454 -0
  113. data/data/plates/us-az.yml +430 -0
  114. data/data/plates/us-ca.yml +892 -0
  115. data/data/plates/us-co.yml +452 -0
  116. data/data/plates/us-ct.yml +427 -0
  117. data/data/plates/us-dc.yml +614 -0
  118. data/data/plates/us-de.yml +551 -0
  119. data/data/plates/us-fl.yml +741 -0
  120. data/data/plates/us-ga.yml +644 -0
  121. data/data/plates/us-gu.yml +658 -0
  122. data/data/plates/us-hi.yml +585 -0
  123. data/data/plates/us-ia.yml +438 -0
  124. data/data/plates/us-id.yml +531 -0
  125. data/data/plates/us-il.yml +516 -0
  126. data/data/plates/us-in.yml +324 -0
  127. data/data/plates/us-ks.yml +351 -0
  128. data/data/plates/us-ky.yml +770 -0
  129. data/data/plates/us-la.yml +568 -0
  130. data/data/plates/us-ma.yml +379 -0
  131. data/data/plates/us-md.yml +536 -0
  132. data/data/plates/us-me.yml +445 -0
  133. data/data/plates/us-mi.yml +408 -0
  134. data/data/plates/us-mn.yml +411 -0
  135. data/data/plates/us-mo.yml +356 -0
  136. data/data/plates/us-mp.yml +402 -0
  137. data/data/plates/us-ms.yml +432 -0
  138. data/data/plates/us-mt.yml +619 -0
  139. data/data/plates/us-nc.yml +602 -0
  140. data/data/plates/us-nd.yml +419 -0
  141. data/data/plates/us-ne.yml +483 -0
  142. data/data/plates/us-nh.yml +394 -0
  143. data/data/plates/us-nj.yml +547 -0
  144. data/data/plates/us-nm.yml +574 -0
  145. data/data/plates/us-nv.yml +655 -0
  146. data/data/plates/us-ny.yml +592 -0
  147. data/data/plates/us-oh.yml +404 -0
  148. data/data/plates/us-ok.yml +513 -0
  149. data/data/plates/us-or.yml +392 -0
  150. data/data/plates/us-pa.yml +506 -0
  151. data/data/plates/us-pr.yml +507 -0
  152. data/data/plates/us-ri.yml +445 -0
  153. data/data/plates/us-sc.yml +605 -0
  154. data/data/plates/us-sd.yml +428 -0
  155. data/data/plates/us-tn.yml +471 -0
  156. data/data/plates/us-tx.yml +535 -0
  157. data/data/plates/us-ut.yml +384 -0
  158. data/data/plates/us-va.yml +567 -0
  159. data/data/plates/us-vi.yml +489 -0
  160. data/data/plates/us-vt.yml +458 -0
  161. data/data/plates/us-wa.yml +484 -0
  162. data/data/plates/us-wi.yml +509 -0
  163. data/data/plates/us-wv.yml +446 -0
  164. data/data/plates/us-wy.yml +523 -0
  165. data/data/plates/va.yml +604 -0
  166. data/data/plates/za.yml +1141 -0
  167. data/data/vehicles.json +160653 -105090
  168. data/lib/vehicles/configuration.rb +18 -2
  169. data/lib/vehicles/dataset.rb +73 -18
  170. data/lib/vehicles/fuzzy.rb +115 -0
  171. data/lib/vehicles/http.rb +48 -0
  172. data/lib/vehicles/make.rb +36 -6
  173. data/lib/vehicles/mcp_server.rb +5 -5
  174. data/lib/vehicles/model.rb +42 -6
  175. data/lib/vehicles/plates/jurisdiction.rb +32 -0
  176. data/lib/vehicles/plates/series.rb +291 -0
  177. data/lib/vehicles/plates/template_fill.rb +188 -0
  178. data/lib/vehicles/plates/templates.rb +162 -0
  179. data/lib/vehicles/plates.rb +122 -0
  180. data/lib/vehicles/providers/hosted_provider.rb +49 -58
  181. data/lib/vehicles/providers/local_provider.rb +4 -3
  182. data/lib/vehicles/validators/vehicle_make_validator.rb +3 -1
  183. data/lib/vehicles/validators/vehicle_model_validator.rb +1 -1
  184. data/lib/vehicles/version.rb +1 -1
  185. data/lib/vehicles.rb +53 -16
  186. data/rakelib/data_refresh.rake +109 -0
  187. data/rakelib/plates_refresh.rake +29 -0
  188. data/sig/vehicles.rbs +18 -0
  189. metadata +174 -2
@@ -0,0 +1,924 @@
1
+ # plates/lv.yml — Latvia (PRD-PLATES gate L1, EU/EEA wave 2). DRAFT for
2
+ # verification: researched by an Opus L1 researcher, never applied directly.
3
+ #
4
+ # THE LATVIAN SOURCE CHAIN — THE FULL INSTRUMENT LINE, DATED TO THE DAY
5
+ #
6
+ # Latvia is the best-documented of the three Baltic files for INSTRUMENT
7
+ # CONTINUITY: likumi.lv carries the whole succession of registration
8
+ # regulations back to 1998, each with its own commencement and repeal date, and
9
+ # the current one carries the plate description as an ANNEX rather than
10
+ # delegating it away. The chain actually verified in this pass:
11
+ #
12
+ # Satiksmes ministrijas 20.06.1998. noteikumi Nr. 37 in force 01.07.1998
13
+ # Satiksmes ministrijas 22.03.1999. noteikumi Nr. 10 in force 01.04.1999
14
+ # Satiksmes ministrijas 05.12.2000. noteikumi Nr. 25 in force 07.12.2000
15
+ # MK 27.04.2004. noteikumi Nr. 446 in force 01.05.2004
16
+ # MK 22.12.2009. noteikumi Nr. 1610 in force 30.12.2009
17
+ # MK 30.11.2010. noteikumi Nr. 1080 (CURRENT) in force 04.12.2010
18
+ #
19
+ # THE CRITICAL STRUCTURAL FACT: MK 1080 IS ONLY HALF THE LAW.
20
+ # Its 7. pielikums ("Numura zīmju apraksts") fixes plate TYPES and DIMENSIONS,
21
+ # SYMBOL COUNTS and the SPECIAL-PURPOSE COLOURS — and deliberately stops there.
22
+ # It states no base colour for an ordinary plate, no character height, no
23
+ # typeface and nothing about the EU band, because punkts 6 defers all of that
24
+ # to the national standard: "Ja numura zīme atbilst piemērojamo standartu
25
+ # prasībām, tad tā atbilst šo noteikumu prasībām." The standard is LVS 20
26
+ # ("Transportlīdzekļu valsts reģistrācijas numura zīmes"), it is PAYWALLED and
27
+ # not on likumi.lv, and its text was NOT obtained. Every colour, height and
28
+ # font fact a render layer wants therefore sits behind a wall this pass did not
29
+ # cross — recorded as gaps.lvs_20, and the reason `design.background` here is
30
+ # sourced to CSDD's own wording rather than to the regulation.
31
+ #
32
+ # FOUR FACTS THAT SHAPE THIS FILE
33
+ #
34
+ # 1. THE INDEPENDENCE TRANSITION IS DATED, AND IT IS A WINDOW, NOT A DAY.
35
+ # This is the slice's headline finding and it is PRIMARY. Latvia did not
36
+ # switch in one act: Satiksmes ministrijas 20.09.1994. noteikumi Nr. 1 set a
37
+ # ROLLING withdrawal of the Soviet-pattern plates — see
38
+ # `soviet_withdrawal` below for the verbatim text and the three dates.
39
+ # NOTE WHAT THIS IS NOT: it is not the date the Latvian series STARTED. That
40
+ # instrument regulates the EXCHANGE of old plates for new ones already in
41
+ # existence, so the new series necessarily predates it. See
42
+ # gaps.series_start.
43
+ #
44
+ # 2. THE HYPHEN IS STATUTORY, AND ONLY ON ONE PLATE TYPE. 7. pielikums 2.3:
45
+ # "A tipa numura zīmēs burti no cipariem atdalīti ar horizontālu svītru."
46
+ # A horizontal stroke separates the letters from the digits — on the A type
47
+ # ONLY. B, C, F and G types carry the same marks with no stroke prescribed.
48
+ # So Latvia's famous "AA-1234" is specifically the 520 x 110 plate, and the
49
+ # same mark on a motorcycle prints without the hyphen.
50
+ #
51
+ # 3. THE CHARSET RULE EXISTED AND WAS REPEALED, TO THE DAY. Q, W, X and Y were
52
+ # excluded from general-use marks from 04.12.2010 until 31.12.2015 and the
53
+ # exclusion was deleted with effect from 01.01.2016. Both ends are primary
54
+ # and both are recorded — this is the single most likely thing for a
55
+ # competing dataset to have wrong, because the rule is still widely repeated
56
+ # as current. See common.charset.
57
+ #
58
+ # 4. "RED ON WHITE" IS A MIS-DESCRIPTION AND THIS FILE DOES NOT REPEAT IT.
59
+ # Latvia uses red in THREE different ways and the regulation distinguishes
60
+ # them: the DIPLOMATIC plate has a red BACKGROUND ("fons ir sarkanā krāsā"),
61
+ # the TRADE plate has red SYMBOLS on an ordinary ground ("simboli ir sarkanā
62
+ # krāsā"), and the TRANSIT plate carries a red FIELD of specified size
63
+ # ("izvietots noteikta izmēra sarkanas krāsas laukums") rather than being
64
+ # red overall. Three different claims, three different series.
65
+ jurisdiction: lv
66
+ authority:
67
+ name: CSDD — Ceļu satiksmes drošības direkcija (Road Traffic Safety Directorate)
68
+ url: "https://www.csdd.lv/transportlidzeklis/transportlidzekla-numura-zimes/izvelne/"
69
+ binding: vehicle
70
+ instrument:
71
+ act:
72
+ citation: "Ceļu satiksmes likums"
73
+ delegating_provisions: "10. panta 1.^4 daļa, 10.^2 panta ceturtā daļa, 21. panta otrā daļa (and Nolietotu transportlīdzekļu apsaimniekošanas likuma 6. panta trešā daļa)"
74
+ quoted: >-
75
+ MK 1080's own izdošanas norma, verbatim: "Izdoti saskaņā ar Ceļu
76
+ satiksmes likuma 10. panta 1.^4 daļu, 10.^2 panta ceturto daļu un
77
+ 21. panta otro daļu un Nolietotu transportlīdzekļu apsaimniekošanas
78
+ likuma 6. panta trešo daļu". The Act also fixes HOW MANY plates a vehicle
79
+ carries — 9. panta otrā daļa: "Mehāniskajiem transportlīdzekļiem jābūt
80
+ divām valsts reģistrācijas numura zīmēm, bet motocikliem, tricikliem,
81
+ kvadricikliem, traktortehnikai (izņemot lauksaimniecības mašīntraktoru),
82
+ mopēdiem un piekabēm, kuru izgatavotājs paredzējis uzstādīt tikai vienu
83
+ numura zīmi, — vienai valsts reģistrācijas numura zīmei."
84
+ source: "https://likumi.lv/ta/id/45467-celu-satiksmes-likums # 9. panta otrā daļa (one or two plates); 4.^1 panta ceturtā daļa (trade plates delegated to the Cabinet)"
85
+ regulation:
86
+ citation: "Ministru kabineta 2010. gada 30. novembra noteikumi Nr. 1080 „Transportlīdzekļu reģistrācijas noteikumi”"
87
+ adopted: "2010-11-30"
88
+ published: "Latvijas Vēstnesis, 192, 03.12.2010"
89
+ in_force_from: "2010-12-04"
90
+ status: "spēkā esošs (in force as at this pass)"
91
+ plate_annex: "7. pielikums „Numura zīmju apraksts” — current wording per MK 13.02.2024. noteikumi Nr. 97, in force 22.02.2024"
92
+ repealed_predecessor: >-
93
+ MK 1080 punkts 86, verbatim: "Atzīt par spēku zaudējušiem Ministru
94
+ kabineta 2009.gada 22.decembra noteikumus Nr.1610 „Transportlīdzekļu
95
+ reģistrācijas noteikumi” (Latvijas Vēstnesis, 2009, 204.nr.)."
96
+ amendment_count: "14 amending regulations to date: Nr. 645/2012, 174/2014, 796/2015, 29/2017, 294/2017, 495/2018, 678/2018, 560/2019, 637/2020, 479/2021, 682/2021, 97/2024, 418/2025, 170/2026"
97
+ source: "https://likumi.lv/ta/id/222145-transportlidzeklu-registracijas-noteikumi # the consolidated text; 7. pielikums carries every format claim in this file"
98
+ standard:
99
+ citation: "LVS 20 „Transportlīdzekļu valsts reģistrācijas numura zīmes”"
100
+ editions_traced: "LVS 20-92 (bound by CSDD rīkojums 04.01.1996 and by MK 19.01.1999 Nr. 15); LVS 20:2003 (bound by MK 446 from 01.05.2004); LVS 20:2003/A1:2006; LVS 20:2009 (named by CSDD's current page)"
101
+ deferral_clause: >-
102
+ MK 1080 7. pielikums punkts 6, verbatim: "Ja numura zīme atbilst
103
+ piemērojamo standartu prasībām, tad tā atbilst šo noteikumu prasībām."
104
+ status: "PAYWALLED AND NOT OBTAINED — see gaps.lvs_20. No dimension, colour or typeface claim in this file rests on it."
105
+ source: "https://www.csdd.lv/numura-zimju-apraksts/vispareja-informacija-2 # CSDD: 'Valsts numura zīmes tiek izgatavotas atbilstoši standartā LVS 20:2009 „Transportlīdzekļu valsts reģistrācijas numura zīmes” noteiktajiem nosacījumiem.'"
106
+
107
+ # ---------------------------------------------------------------------------
108
+ # THE INDEPENDENCE-ERA TRANSITION — LATVIA'S OWN DATES, ITS OWN INSTRUMENT.
109
+ # Recorded here rather than as a series because the plates being withdrawn are
110
+ # Soviet, i.e. outside this jurisdiction file.
111
+ # ---------------------------------------------------------------------------
112
+ soviet_withdrawal:
113
+ instrument: "Satiksmes ministrijas 20.09.1994. noteikumi Nr. 1 „Noteikumi par vecā parauga transporta līdzekļu valsts reģistrācijas numura zīmju un vadītāja apliecību nomaiņu”"
114
+ adopted: "1994-09-20"
115
+ in_force_from: "1994-09-20"
116
+ published: "Latvijas Vēstnesis 112, 24.09.1994"
117
+ purpose: >-
118
+ Verbatim: "…Satiksmes ministrija nosaka šādu kārtību vecā parauga (bijušās
119
+ PSRS parauga) transporta līdzekļu valsts reģistrācijas numura zīmju un
120
+ vadītāja apliecību nomaiņai pret jaunā parauga Latvijas Republikas valsts
121
+ reģistrācijas numura zīmēm un vadītāja apliecībām." — the procedure for
122
+ exchanging OLD-PATTERN (former USSR pattern) plates for NEW-PATTERN Republic
123
+ of Latvia plates.
124
+ three_dates:
125
+ - "1995-01-01 — from this date a vehicle needed new-pattern plates to leave Latvia: 'Sākot ar 1995.gada 1.janvāri, lai izbrauktu ar transporta līdzekli ārpus Latvijas Republikas, transporta līdzeklim nepieciešamas: - jaunā parauga valsts reģistrācijas numura zīmes…'"
126
+ - "1995 — plates bearing CYRILLIC letters had to be exchanged by the end of the vehicle's roadworthiness-test term: '1995.gadā transporta līdzekļiem vecā parauga valsts reģistrācijas numura zīmes, kurās ir slāvu alfabēta burti, jānomaina ar jaunā parauga… līdz norādītā transporta līdzekļa tehniskās apskates termiņa beigām.'"
127
+ - "1996 — ALL remaining old-pattern plates had to be exchanged: '1996.gadā visiem transporta līdzekļiem vecā parauga valsts reģistrācijas numura zīmes jānomaina…'"
128
+ enforcement_corroboration:
129
+ - "https://likumi.lv/ta/id/34016 # CSDD rīkojums Nr. 11-3/1, 06.01.1995, p. 1.8: no roadworthiness test for vehicles with Cyrillic-lettered plates — 'Valsts tehniskā apskate netiek veikta transporta līdzekļiem, kuriem ir numura zīmes ar slāvu alfabēta burtiem…'"
130
+ - "https://likumi.lv/ta/id/38869 # CSDD rīkojums Nr. 11-3/2, 04.01.1996, p. 1.8: no test for plates not conforming to LVS 20-92 — the enforcement moves from an alphabet test to a STANDARD test in one year"
131
+ reading: >-
132
+ THE POINT, AND THE TRAP. This is a WITHDRAWAL window for the Soviet plate,
133
+ not the birth of the Latvian one. It gives Latvia three primary dates
134
+ (1.1.1995 for foreign travel, 1995 for Cyrillic plates, 1996 for the rest)
135
+ and it gives NONE of them to Estonia or Lithuania, whose transitions were
136
+ separate national acts on separate timetables. Latvia's neighbours are NOT
137
+ covered by this instrument and must never inherit its dates.
138
+ source: "https://likumi.lv/ta/id/239628 # Satiksmes ministrijas 20.09.1994. noteikumi Nr. 1"
139
+
140
+ common:
141
+ plate_types:
142
+ note: "7. pielikums punkts 1 — seven lettered blanks, each with its own millimetre size and its own mounting rule."
143
+ types:
144
+ A: { w: 520, h: 110, unit: mm, use: "front and rear; NOT fitted to motorcycles, tricycles, quadricycles or mopeds" }
145
+ B: { w: 280, h: 200, unit: mm, use: "rear, where the vehicle's construction cannot take an A type" }
146
+ C: { w: 240, h: 130, unit: mm, use: "rear of motorcycles, tricycles and quadricycles" }
147
+ E: { w: 300, h: 110, unit: mm, use: "vehicles issued special-purpose plates" }
148
+ F: { w: 177, h: 130, unit: mm, use: "rear of motorcycles, tricycles and quadricycles that cannot take a C type" }
149
+ G: { w: 133, h: 165, unit: mm, use: "rear of mopeds" }
150
+ H: { w: 133, h: 165, unit: mm, use: "rear of off-road vehicles" }
151
+ csdd_divergence: >-
152
+ CSDD's own type page reproduces A, B, C, F, G and H with the same
153
+ millimetres but OMITS the E type, which the regulation retains, and adds a
154
+ practice rule the regulation does not contain: "Ja transportlīdzeklim
155
+ iepriekš bija izsniegta E tipa numura zīme, veicot numuru maiņu, CSDD
156
+ izsniedz C tipa numura zīmi." A divergence between the instrument and the
157
+ issuing authority, recorded and not averaged (PRD-PLATES §5.3).
158
+ sources:
159
+ - "https://likumi.lv/ta/id/222145-transportlidzeklu-registracijas-noteikumi # 7. pielikums 1.1-1.7"
160
+ - "https://www.csdd.lv/numura-zimju-apraksts/nr-zimju-tipi-19 # CSDD's type table and the E-to-C replacement practice"
161
+ charset:
162
+ alphabet: "Latin alphabet letters and Arabic numerals — 7. pielikums says only 'latīņu alfabēta burti', with no diacritics rule"
163
+ excluded_letters_history:
164
+ rule_text: >-
165
+ 7. pielikums punkts 2.7, in the wording in force 04.12.2010 to
166
+ 31.12.2015, verbatim: "vispārējās izmantošanas numura zīmēs, izņemot šo
167
+ noteikumu 12.punktā minētās numura zīmes, nevar tikt izmantoti latīņu
168
+ alfabēta burti „Q”, „W”, „X” un „Y”." The identical provision stood in
169
+ the predecessor MK 1610/2009, 7. pielikums p. 2.7.
170
+ repealed_by: >-
171
+ Ministru kabineta 22.12.2015. noteikumi Nr. 796, item 1.35: "svītrot
172
+ 7. pielikuma 2.7. apakšpunktu", with commencement "Noteikumi stājas spēkā
173
+ 2016. gada 1. janvārī."
174
+ in_force: "2010-12-04 to 2015-12-31 (and earlier under MK 1610 from 30.12.2009)"
175
+ current_position: >-
176
+ NO LETTER EXCLUSION IS IN FORCE. From 1 January 2016 the regulation says
177
+ only "latīņu alfabēta burti". THIS IS THE FILE'S SHARPEST CORRECTION:
178
+ the claim that Latvia excludes Q is repeated as current in secondary
179
+ compilations and is NOT supported by the regulation as it stands. If an
180
+ exclusion still operates in practice it does so through LVS 20 or CSDD
181
+ allocation practice, neither of which could be sourced — so no regex or
182
+ regex_strict in this file excludes any letter. Encoding an unverified
183
+ exclusion would reject valid marks, the worse failure.
184
+ verification: "the boundary was checked by fetching the consolidated text at 31.12.2015 (rule present) and at 01.01.2016 (rule absent)"
185
+ sources:
186
+ - "https://likumi.lv/ta/id/222145/redakcijas-datums/2010/12/04/ # the original redaction carrying p. 2.7"
187
+ - "https://likumi.lv/ta/id/278917 # MK 22.12.2015. Nr. 796, item 1.35 and its 01.01.2016 commencement"
188
+ - "https://likumi.lv/ta/id/202855 # MK 1610/2009, 7. pielikums p. 2.7 — the same exclusion, earlier"
189
+ no_leading_zero: true
190
+ no_leading_zero_basis: >-
191
+ Not stated as a prohibition but implied by the way the annex counts:
192
+ the digits "veido skaitļus no 1 līdz 9999" (form NUMBERS from 1 to 9999),
193
+ i.e. a numeric range rather than a digit string. Encoded in
194
+ `regex_strict` as [1-9]\d{0,3}, never in `regex`.
195
+ vanity_content_rule: >-
196
+ MK 1080 p. 12.3: an individual mark must not be "latviešu valodas
197
+ normatīvajām prasībām neatbilstošs burtu salikums" — a letter combination
198
+ not conforming to the normative requirements of the Latvian language.
199
+ Not machine-encodable; recorded.
200
+ colours:
201
+ hex_basis_note: >-
202
+ READ THIS BEFORE USING ANY HEX IN THIS FILE. MK 1080 states colours ONLY
203
+ for special-purpose plates (red diplomatic ground, red trade symbols, red
204
+ transit field, yellow taxi ground, green off-road symbols, black military
205
+ ground with white symbols, blue electric symbols). For an ORDINARY plate
206
+ the regulation states NO colour at all — punkts 6 defers to LVS 20, which
207
+ is paywalled and unread. The only authority statement located for the
208
+ ordinary plate's colour is CSDD's contrast of the general-use "baltās"
209
+ (white) plates with the taxi "dzeltenās" (yellow) ones. Every hex below is
210
+ `hex_basis: observed`; the white is CSDD-worded, and none of it is a
211
+ colorimetric specification.
212
+ retroreflection: '7. pielikums 5.4: "numura zīmēm ir atstarojoša materiāla pārklājums, un tās ir aizsargātas pret koroziju" — reflective coating and corrosion protection, for every plate except where a class rule says otherwise (the military plate is expressly non-reflective).'
213
+ source: "https://www.csdd.lv/transportlidzekla-numura-zimes/taksometru-numuru-zimes # CSDD's 'dzeltenās' vs 'baltās' wording — the sole authority basis for the ordinary plate being white"
214
+ eu_band:
215
+ side: left
216
+ content: eu-stars+LV
217
+ dating: >-
218
+ NOT ESTABLISHED, AND DELIBERATELY NOT GUESSED. No Latvian instrument
219
+ names, defines or dates the EU band. A full-text search of the likumi.lv
220
+ corpus for the phrase "Eiropas Savienības simboliku" returns exactly ONE
221
+ act — MK 1080 — which refers to plates bearing EU symbols as an existing
222
+ category without ever defining or dating them (p. 11.^2: "…ja nomainītās
223
+ numura zīmes ir ar Eiropas Savienības simboliku…"; p. 14: "…kas nav jaunā
224
+ parauga numura zīmes ar Eiropas Savienības simboliku…"). There is no
225
+ transitional provision fixing a start date.
226
+ nearest_dated_event: >-
227
+ The only dated, instrument-backed event in the vicinity is the change of
228
+ BINDING STANDARD: MK 27.04.2004. noteikumi Nr. 446 required plates to
229
+ conform to "valsts standartu LVS 20:2003" and commenced on Latvia's
230
+ accession day — punkts 82: "Noteikumi stājas spēkā ar 2004.gada
231
+ 1.maiju." Whether LVS 20:2003 is the edition that introduced the star band
232
+ in place of the flag+LV COULD NOT BE VERIFIED, because the standard is
233
+ paywalled. 1 May 2004 is therefore recorded as the standard-change date
234
+ and is NOT asserted as the band date.
235
+ predecessor: "before the EU band, a small Latvian flag with the letters LV occupied the left of the plate (secondary)"
236
+ sources:
237
+ - "https://likumi.lv/ta/id/88052/redakcijas-datums/2004/05/01/ # MK 446 as commenced 01.05.2004, punkts 7 (LVS 20:2003) and punkts 82 (commencement)"
238
+ - "https://likumi.lv/ta/id/222145-transportlidzeklu-registracijas-noteikumi # p. 11.^2 and p. 14 — EU-symbol plates referred to but never dated"
239
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Latvia # SECONDARY, per-fact: that a Latvian flag with LV occupied the band position before 2004"
240
+
241
+ region_encoding_gap:
242
+ decision: "NO decode table is shipped for Latvia. `region_encoding: none` on every series."
243
+ basis: >-
244
+ Unlike Estonia and Lithuania, this is not a case of a scheme abolished — it
245
+ is a case of a scheme that never existed. MK 1080's 7. pielikums assigns
246
+ meaning to a symbol position in exactly FOUR places, all of them class
247
+ markers rather than geography: the trade plate's first letter (A-E, the
248
+ vehicle type) and its last digit (the year of validity); the trial plate's
249
+ "IZM"; the diplomatic plate's "C"/"CC"/"CD"; and the military plate's
250
+ "L"/"LA". Every one of those is encoded inline in the relevant series'
251
+ `charset`, which PRD-PLATES §2.4 makes the right home for a small mapping.
252
+ No Latvian instrument or CSDD page reached in this pass encodes region,
253
+ district or era anywhere in a general-use mark.
254
+ source: "https://likumi.lv/ta/id/222145-transportlidzeklu-registracijas-noteikumi # 7. pielikums, read in full for positional semantics"
255
+
256
+ out_of_scope:
257
+ president:
258
+ status: "NO SERIAL — cannot be a series under this schema."
259
+ detail: >-
260
+ MK 1080 punkts 15: "Valsts prezidenta automašīnai kopā ar numura zīmēm
261
+ izsniedz numura zīmes, kuru centrā attēlots lielais Latvijas Republikas
262
+ valsts ģerbonis." The President's car is issued, ALONGSIDE its ordinary
263
+ plates, plates bearing the greater coat of arms of Latvia in the centre.
264
+ No mark, no pattern, no regex. Note the Latvian construction differs from
265
+ Estonia's and Finland's: those permit the arms INSTEAD OF plates, Latvia
266
+ issues them IN ADDITION TO them.
267
+ source: "https://likumi.lv/ta/id/222145-transportlidzeklu-registracijas-noteikumi # punkts 15"
268
+ historic_vs:
269
+ status: "A SERIES MARKER WITH NO PUBLISHED FORMAT — no series authored."
270
+ detail: >-
271
+ MK 1080 punkts 76 refers to "VS sērijas numura zīmes" for a vēsturiskais
272
+ spēkrats (historic vehicle): "Ja vēsturiskais spēkrats ir reģistrēts,
273
+ piešķirot VS sērijas numura zīmes, tad, zaudējot vēsturiskā spēkrata
274
+ statusu, jāveic valsts reģistrācijas numura maiņa." So a VS series
275
+ demonstrably exists and is named in the body of the regulation — but
276
+ 7. pielikums, which is where every format lives, gives it NO entry: no
277
+ symbol count, no plate type, no colour. A pattern would be a guess, so
278
+ none is written. This is a genuine, narrow, well-located gap: a verifier
279
+ needs only the VS row that the annex does not have.
280
+ source: "https://likumi.lv/ta/id/222145-transportlidzeklu-registracijas-noteikumi # punkts 76"
281
+ export:
282
+ status: "NOT A SEPARATE CLASS IN LATVIA — recorded so its absence is not read as an omission."
283
+ detail: >-
284
+ Several jurisdictions in this dataset have a distinct export plate.
285
+ Latvia does not: export is handled by the TRANSIT plate, and MK 1080
286
+ p. 13.1 says so — transit plates are issued to a vehicle "kuru paredzēts
287
+ izvest no Latvijas" (which it is intended to take out of Latvia). See
288
+ lv-transit, which therefore carries `categories` and a note covering the
289
+ export use rather than a separate series existing for it.
290
+
291
+ gaps:
292
+ lvs_20: >-
293
+ THE PRINCIPAL GAP, AND IT IS STRUCTURAL. LVS 20 is where Latvia keeps its
294
+ base plate colours, character heights and typeface, by the express deferral
295
+ in 7. pielikums punkts 6. It is sold by the national standards body, its
296
+ catalogue is JS-rendered, and no edition was obtained: not LVS 20-92, not
297
+ LVS 20:2003, not /A1:2006, not LVS 20:2009 (the edition CSDD's current page
298
+ names). PRD-PLATES §4's SAE J686 posture applies exactly — never quote the
299
+ standard's values until it is bought. Consequence: this file carries NO
300
+ character height and NO font for any Latvian series, and its ordinary-plate
301
+ colours rest on CSDD's wording rather than on a specification.
302
+ series_start: >-
303
+ THE INDEPENDENCE-ERA START DATE IS NOT ESTABLISHED. The 20.09.1994
304
+ instrument dates the WITHDRAWAL of Soviet plates (see soviet_withdrawal) but
305
+ presupposes the Latvian series already exists. A title search of likumi.lv
306
+ across 01.01.1990-31.12.1999 returns exactly one plate-related act — that
307
+ one — and the earliest registration rules held there are from 1998, so no
308
+ instrument establishing the new series is reachable on likumi.lv at all.
309
+ The nearest primary anchor is the DESIGNATION of the standard, LVS 20-92,
310
+ whose suffix implies a 1992 edition and which is named as binding by
311
+ CSDD rīkojums 04.01.1996 and by MK 19.01.1999 Nr. 15. The widely repeated
312
+ "1993" is SECONDARY and unsupported by any instrument reached. lv-standard-1993
313
+ is tagged accordingly and its start must not be reported as an instrument date.
314
+ eu_band_date: >-
315
+ Not established — see common.eu_band.dating. Do NOT report 1 May 2004 as
316
+ the band date; it is the date LVS 20:2003 became binding, which is a
317
+ different claim.
318
+ 2026_redesign: >-
319
+ Secondary reporting indicates a 2026 Latvian plate redesign replacing the
320
+ hyphen with a coat of arms. The 2026 amending regulation located
321
+ (MK 24.03.2026. Nr. 170, in force 28.03.2026) does NOT touch 7. pielikums,
322
+ and no dated plate-design provision was traced. NO series is authored for it
323
+ and the hyphen is recorded as current. Flagged for the quarterly audit.
324
+ chain_discontinuity: >-
325
+ likumi.lv records MK 446 as ceasing 31.07.2009 while its successor MK 1610
326
+ only commenced 30.12.2009 — a five-month hole in the chain that no located
327
+ instrument fills. Recorded rather than explained away.
328
+ lvs_20_2019: >-
329
+ A secondary source claims a LVS 20:2019 edition; CSDD's live pages still
330
+ name LVS 20:2009. Unresolved, and immaterial to any claim in this file
331
+ because no LVS content is used.
332
+
333
+ series:
334
+
335
+ # =========================================================================
336
+ # THE GENERAL-USE MARK. 7. pielikums 2.2: "A, B un C tipa numura zīmēs, kuras
337
+ # paredzētas uzstādīšanai mehāniskajiem transportlīdzekļiem, ir divi latīņu
338
+ # alfabēta burti un no viena līdz četriem cipariem, kas veido skaitļus no 1
339
+ # līdz 9999."
340
+ # =========================================================================
341
+ - id: lv-standard
342
+ class: standard
343
+ categories: [car, van, truck, bus]
344
+ period: { start: 2004 }
345
+ period_evidence: enabling-instrument
346
+ matching: strict
347
+ format:
348
+ pattern: "LL-9999"
349
+ regex: '\A[A-Z]{2}-\d{1,4}\z'
350
+ regex_strict: '\A[A-Z]{2}-[1-9]\d{0,3}\z'
351
+ charset:
352
+ letters: "2 Latin alphabet letters. NO letter is excluded — the Q/W/X/Y exclusion was repealed with effect from 01.01.2016 (see common.charset)."
353
+ digits: "1 to 4, forming a NUMBER from 1 to 9999 — hence no leading zero, which is what regex_strict carries and regex cannot"
354
+ separator_note: >-
355
+ THE HYPHEN IS STATUTORY AND TYPE-SPECIFIC. 7. pielikums 2.3, verbatim:
356
+ "A tipa numura zīmēs burti no cipariem atdalīti ar horizontālu svītru."
357
+ The horizontal stroke is prescribed for the A type ONLY; the B and C
358
+ blanks carry the same mark with no stroke prescribed. The pattern
359
+ spells the A-type printed form, per PRD-PLATES §2.6 rule 2, and a
360
+ separator-forgiving consumer recovers the B/C form.
361
+ design:
362
+ plate: { w: 520, h: 110, unit: mm }
363
+ plate_variants:
364
+ - { w: 280, h: 200, unit: mm, note: "B type — rear only, where the construction cannot take an A type; no hyphen prescribed" }
365
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed, spec_note: "THE REGULATION STATES NO COLOUR for an ordinary plate — punkts 6 defers to LVS 20, unread. This hex rests on CSDD calling general-use plates 'baltās'. Not a specification." }
366
+ foreground: "#000000"
367
+ band: { side: left, color: "#003399", content: eu-stars+LV, hex_basis: observed, note: "no Latvian instrument defines or dates the band — see common.eu_band" }
368
+ characters: { note: "NO character height or typeface is recorded: both live in LVS 20, which was not obtained (gaps.lvs_20)" }
369
+ rear_differs: false
370
+ region_encoding: none
371
+ sources:
372
+ - "https://likumi.lv/ta/id/222145-transportlidzeklu-registracijas-noteikumi # 7. pielikums 2.2 (two letters and one to four digits forming 1-9999), 2.3 (the A-type hyphen), 1.1-1.2 (A and B dimensions), 5.4 (reflective coating); punkts 7 (a mark is assigned on first registration in Latvia)"
373
+ - "https://likumi.lv/ta/id/88052/redakcijas-datums/2004/05/01/ # MK 446 punkts 7 and punkts 82 — LVS 20:2003 made binding from 1 May 2004, the dated event this series' start rests on"
374
+ - "https://www.csdd.lv/numura-zimju-apraksts/vispareja-informacija-2 # CSDD: plates are made to LVS 20:2009"
375
+ - "https://likumi.lv/ta/id/45467-celu-satiksmes-likums # 9. panta otrā daļa — two plates on a mechanical vehicle"
376
+ notes: >-
377
+ THE CURRENT LATVIAN PLATE — "AA-1234", and the hyphen is in the
378
+ instrument, not in typography. READ period.start CAREFULLY: 2004 is the
379
+ date MK 446 made the LVS 20:2003 standard binding (in force 1 May 2004,
380
+ Latvia's accession day), which is the nearest dated instrument event to
381
+ the modern plate. It is NOT a verified EU-band date and NOT a format
382
+ change: the two-letters-plus-up-to-four-digits grammar is materially older
383
+ and ran across the boundary unchanged, which is why lv-standard-1993
384
+ carries the same format with a different left-hand device. Tagged
385
+ `enabling-instrument` because MK 446 is the instrument that enabled the
386
+ current design regime, not because it prescribed this mark.
387
+
388
+ - id: lv-standard-1993
389
+ class: standard
390
+ categories: [car, van, truck, bus]
391
+ period: { start: 1993, end: 2004 }
392
+ period_evidence: secondary-dated
393
+ matching: strict
394
+ format:
395
+ pattern: "LL-9999"
396
+ regex: '\A[A-Z]{2}-\d{1,4}\z'
397
+ charset:
398
+ notes: >-
399
+ No regex_strict. The Q/W/X/Y exclusion is first traceable to
400
+ MK 1610/2009 and cannot be projected back onto a series that closed in
401
+ 2004 — the instrument-date rule forbids exactly that anachronism. The
402
+ leading-zero reading likewise comes from the 2009/2010 annex wording.
403
+ design:
404
+ plate: { w: 520, h: 110, unit: mm }
405
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
406
+ foreground: "#000000"
407
+ band: { side: left, content: "lv-flag", note: "a small Latvian flag with the letters LV occupied the band position before the EU symbols (secondary); no colour or geometry specification was reached, so no hex is claimed" }
408
+ characters: { note: "governed by LVS 20-92, unobtained" }
409
+ rear_differs: false
410
+ region_encoding: none
411
+ sources:
412
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Latvia # SECONDARY, per-fact: that Soviet plates with the Latin letters LA and LT were used until 1993 when the new Latvian type was introduced, and that a small Latvian flag with LV occupied the left of the plate until 2004 — the sole evidence for period.start"
413
+ - "https://likumi.lv/ta/id/239628 # PRIMARY: Satiksmes ministrijas 20.09.1994. noteikumi Nr. 1 — presupposes this series already exists and sets the Soviet-plate withdrawal window; see soviet_withdrawal"
414
+ - "https://likumi.lv/ta/id/38869 # PRIMARY: CSDD rīkojums 04.01.1996 binding plates to LVS 20-92, whose designation implies a 1992 edition — the nearest primary anchor to this series' start"
415
+ notes: >-
416
+ THE INDEPENDENCE-ERA SERIES, AND THE ONE RECORD IN THIS FILE WHOSE START
417
+ IS NOT PRIMARY. 1993 is SECONDARY and unsupported by any instrument
418
+ reachable on likumi.lv, where a title search across the whole 1990s
419
+ returns exactly one plate-related act and the earliest registration rules
420
+ are from 1998 (gaps.series_start). Two PRIMARY facts bracket it without
421
+ dating it: the standard is designated LVS 20-92, implying a 1992 edition,
422
+ and the 20.09.1994 changeover regulation already treats the new Latvian
423
+ plate as existing. The FORMAT is carried forward from lv-standard and is a
424
+ RECORDED INFERENCE for this period. Distinct from lv-standard in exactly
425
+ one respect — the left-hand device — which is why they are two series.
426
+ Latvia's Soviet-era predecessor plates are not modelled here; their
427
+ withdrawal is recorded under soviet_withdrawal.
428
+
429
+ - id: lv-trailer
430
+ class: trailer
431
+ categories: [trailer, semitrailer]
432
+ period: { start: 2010 }
433
+ period_evidence: instrument-in-force
434
+ matching: strict
435
+ format:
436
+ pattern: "L-9999"
437
+ regex: '\A[A-Z]-(?:\d{1,4}|\d{1,2}[A-Z]{2}|\d{1,2}[A-Z])\z'
438
+ charset:
439
+ letters: "ONE leading letter, against two on a car"
440
+ digits: "1 to 4"
441
+ notes: >-
442
+ 7. pielikums 2.2, verbatim: "A, B un C tipa numura zīmēs, kuras
443
+ paredzētas uzstādīšanai piekabēm (puspiekabēm), ir viens latīņu
444
+ alfabēta burts un no viena līdz četriem cipariem… Piekabēm,
445
+ puspiekabēm un mopēdiem paredzēto numura zīmju pēdējo divu ciparu
446
+ simbolu vietā var lietot burtu simbolus." One letter and up to four
447
+ digits — AND the last TWO digit positions may be replaced by letters,
448
+ which is why the regex carries three alternatives rather than one.
449
+ This substitution rule is unique to trailers and mopeds.
450
+ separator_note: "the A-type hyphen rule (2.3) applies; B and C types print no stroke"
451
+ design:
452
+ plate: { w: 520, h: 110, unit: mm }
453
+ plate_variants:
454
+ - { w: 280, h: 200, unit: mm, note: "B type" }
455
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
456
+ foreground: "#000000"
457
+ band: { side: left, color: "#003399", content: eu-stars+LV, hex_basis: observed }
458
+ region_encoding: none
459
+ sources:
460
+ - "https://likumi.lv/ta/id/222145-transportlidzeklu-registracijas-noteikumi # 7. pielikums 2.2 — the trailer mark and the letters-for-digits substitution"
461
+ - "https://likumi.lv/ta/id/45467-celu-satiksmes-likums # 9. panta otrā daļa — a trailer designed for one plate carries one"
462
+ notes: >-
463
+ THE TRAILER MARK — one letter where a car has two, and the only Latvian
464
+ general-use mark whose TRAILING positions may be letters. That
465
+ substitution is the reason this series' regex is a three-way union rather
466
+ than a simple shape, and it is fully sourced, so `matching` stays strict.
467
+ period.start 2010 is instrument-dated on MK 1080 and is a FLOOR: the
468
+ trailer mark is older and its own start is unpinned.
469
+
470
+ - id: lv-moped
471
+ class: moped
472
+ categories: [moped]
473
+ period: { start: 2010 }
474
+ period_evidence: instrument-in-force
475
+ matching: strict
476
+ format:
477
+ pattern: "L-999"
478
+ regex: '\A[A-Z]-(?:\d{1,3}|\d[A-Z]{2}|\d{1,2}[A-Z])\z'
479
+ charset:
480
+ notes: >-
481
+ 7. pielikums 2.2: "A tipa numura zīmēs, kuras paredzētas uzstādīšanai
482
+ mopēdiem, ir viens latīņu alfabēta burts un no viena līdz trijiem
483
+ cipariem, kas veido skaitļus no 1 līdz 999", and 2.6 gives the G type
484
+ the same one-letter, one-to-three-digit mark. The trailer/moped
485
+ letters-for-digits substitution (last two positions) applies here too.
486
+ separator_note: "hyphen on the A type; the G type (133 x 165 mm, mopeds) is a tall blank and prints no stroke"
487
+ design:
488
+ plate: { w: 133, h: 165, unit: mm }
489
+ plate_variants:
490
+ - { w: 520, h: 110, unit: mm, note: "A type, where fitted" }
491
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
492
+ foreground: "#000000"
493
+ band: { side: left, color: "#003399", content: eu-stars+LV, hex_basis: observed }
494
+ region_encoding: none
495
+ sources:
496
+ - "https://likumi.lv/ta/id/222145-transportlidzeklu-registracijas-noteikumi # 7. pielikums 2.2 (A type for mopeds) and 2.6 (G type), 1.6 (G dimensions)"
497
+ notes: >-
498
+ THE MOPED MARK. Shares the trailer's one-letter shape but caps the digits
499
+ at three rather than four, and shares its letters-for-digits substitution.
500
+ The G blank is 133 x 165 mm — TALLER THAN IT IS WIDE, one of only two such
501
+ plates in the file (the other is the off-road H type, identical in size).
502
+
503
+ - id: lv-motorcycle
504
+ class: motorcycle
505
+ categories: [motorcycle, tricycle, quadricycle]
506
+ period: { start: 2010 }
507
+ period_evidence: instrument-in-force
508
+ matching: strict
509
+ format:
510
+ pattern: "LL9999"
511
+ regex: '\A[A-Z]{2}\d{1,4}\z'
512
+ regex_strict: '\A[A-Z]{2}[1-9]\d{0,3}\z'
513
+ charset:
514
+ notes: "the same two-letter, one-to-four-digit mark as a car (7. pielikums 2.2 covers the C type in the same sentence) — only the blank differs"
515
+ separator_note: >-
516
+ NO HYPHEN. 2.3 prescribes the stroke for the A type only, and a
517
+ motorcycle takes the C type (240 x 130 mm) or the F type. The pattern
518
+ therefore spells the mark solid — the same Latvian mark prints WITH a
519
+ hyphen on a car and WITHOUT one on a motorcycle, which is exactly the
520
+ situation PRD-PLATES §2.6 exists to make safe.
521
+ design:
522
+ plate: { w: 240, h: 130, unit: mm }
523
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
524
+ foreground: "#000000"
525
+ band: { side: left, color: "#003399", content: eu-stars+LV, hex_basis: observed }
526
+ region_encoding: none
527
+ sources:
528
+ - "https://likumi.lv/ta/id/222145-transportlidzeklu-registracijas-noteikumi # 7. pielikums 2.2 (C type shares the car mark), 1.3 (C dimensions), 2.3 (hyphen is A-type only)"
529
+ - "https://likumi.lv/ta/id/45467-celu-satiksmes-likums # 9. panta otrā daļa — motorcycles, tricycles and quadricycles carry ONE plate"
530
+ notes: >-
531
+ THE MOTORCYCLE MARK on the C blank. Its mark space is IDENTICAL to
532
+ lv-standard's, so a Latvian mark alone does not say whether it is on a car
533
+ or a motorcycle — only the plate size and the absence of the hyphen do.
534
+ Its smaller sibling on the F blank caps the digits at three and is a
535
+ separate series.
536
+
537
+ - id: lv-motorcycle-f
538
+ class: motorcycle
539
+ categories: [motorcycle, tricycle, quadricycle]
540
+ period: { start: 2010 }
541
+ period_evidence: instrument-in-force
542
+ matching: strict
543
+ format:
544
+ pattern: "LL999"
545
+ regex: '\A[A-Z]{2}\d{1,3}\z'
546
+ regex_strict: '\A[A-Z]{2}[1-9]\d{0,2}\z'
547
+ charset:
548
+ notes: '7. pielikums 2.5, F type: "divi latīņu alfabēta burti un no viena līdz trijiem cipariem… no 1 līdz 999" — one digit shorter than the C type'
549
+ design:
550
+ plate: { w: 177, h: 130, unit: mm }
551
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
552
+ foreground: "#000000"
553
+ band: { side: left, color: "#003399", content: eu-stars+LV, hex_basis: observed }
554
+ region_encoding: none
555
+ sources:
556
+ - "https://likumi.lv/ta/id/222145-transportlidzeklu-registracijas-noteikumi # 7. pielikums 2.5 and 1.5 — the F type, for machines that cannot take a C type"
557
+ notes: >-
558
+ THE SMALL MOTORCYCLE PLATE, for machines whose construction will not take
559
+ the C blank. Separate series from lv-motorcycle on the digit ceiling
560
+ (three, not four). Overlaps it in period and categories because the two
561
+ blanks are alternatives for the same vehicles.
562
+
563
+ - id: lv-personalised
564
+ class: personalized
565
+ categories: [car, van, truck, bus, motorcycle, trailer]
566
+ period: { start: 2010 }
567
+ period_evidence: instrument-in-force
568
+ matching: strict
569
+ format:
570
+ pattern: "LLLL99"
571
+ regex: '\A(?:[A-Z]+ ?\d+|\d+ ?[A-Z]+)\z'
572
+ charset:
573
+ symbol_counts: "A type 2-8 symbols on one row; B type 2-7 (1-3 on the top row, 1-4 on the bottom); C type 2-8 with at most 4 per row; F type 2-5; G type 2-4"
574
+ rules: >-
575
+ 7. pielikums 3.7, verbatim: "…izmanto ne vairāk kā trīs vienādus
576
+ simbolus pēc kārtas… Burtu un ciparu simbolus nevar lietot pamīšus…"
577
+ — at most three identical symbols in a row, and letters and digits may
578
+ NOT alternate. 3.8: "…simbolus var atdalīt tikai ar vienu atstarpi.
579
+ Nosakot simbolu skaitu, šo atstarpi uzskata par atsevišķu simbolu." —
580
+ the symbols may be separated by exactly ONE space, and that space
581
+ COUNTS as a symbol for the length limit. That last rule is unusual
582
+ enough to be worth a consumer's attention: Latvia charges the
583
+ separator against the character budget.
584
+ notes: >-
585
+ The regex encodes the non-alternation rule (a run of letters and a run
586
+ of digits, in either order) and the optional single space. It does NOT
587
+ encode the per-type length ceilings, which differ by blank, nor the
588
+ three-identical-symbols rule; those are recorded above. The Latvian-
589
+ language propriety rule (MK 1080 p. 12.3) is not machine-encodable.
590
+ separator_note: "a single space is permitted between the groups and is counted as a symbol (3.8); the pattern spells the unspaced form and the regex accepts both"
591
+ design:
592
+ plate: { w: 520, h: 110, unit: mm }
593
+ plate_variants:
594
+ - { w: 280, h: 200, unit: mm, note: "B type, two rows" }
595
+ - { w: 240, h: 130, unit: mm, note: "C type, at most 4 symbols per row" }
596
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
597
+ foreground: "#000000"
598
+ band: { side: left, color: "#003399", content: eu-stars+LV, hex_basis: observed }
599
+ region_encoding: none
600
+ sources:
601
+ - "https://likumi.lv/ta/id/222145-transportlidzeklu-registracijas-noteikumi # 7. pielikums punkts 3 (per-type symbol counts), 3.7 (three-identical and non-alternation rules), 3.8 (the single space counted as a symbol); punkts 12.3 (the Latvian-language rule)"
602
+ notes: >-
603
+ THE INDIVIDUAL (VANITY) PLATE. Latvia publishes a genuinely detailed
604
+ grammar for it — per-blank length ceilings, a repetition cap, a
605
+ non-alternation rule and a separator that counts against the budget — and
606
+ the regex captures the two that are expressible without knowing which
607
+ blank is in use. Because the ceilings are per-type, a consumer that knows
608
+ the plate size can narrow further than this regex does.
609
+
610
+ # =========================================================================
611
+ # SPECIAL-PURPOSE CLASSES. 7. pielikums punkts 4 — and this is where Latvia
612
+ # DOES state colours, one class at a time.
613
+ # =========================================================================
614
+ - id: lv-transit
615
+ class: temporary
616
+ categories: [car, van, truck, bus, motorcycle, trailer]
617
+ period: { start: 2010 }
618
+ period_evidence: instrument-in-force
619
+ matching: strict
620
+ format:
621
+ pattern: "LL9999"
622
+ regex: '\A[A-Z]{2}\d{1,4}\z'
623
+ regex_strict: '\A[A-Z]{2}[1-9]\d{0,3}\z'
624
+ charset:
625
+ notes: "7. pielikums 4.1: A or C type, 3 to 6 symbols, of which the first two are letters and the rest digits forming numbers from 1 to 9999"
626
+ design:
627
+ plate: { w: 520, h: 110, unit: mm }
628
+ plate_variants:
629
+ - { w: 240, h: 130, unit: mm, note: "C type" }
630
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
631
+ foreground: "#000000"
632
+ marking: { red_field: true, note: '4.1.2, verbatim: "tranzīta numura zīmēs ir izvietots noteikta izmēra sarkanas krāsas laukums" — a red FIELD of specified size is placed on the plate. The regulation does not give the size or position here, and the plate is NOT red overall.' }
633
+ band: { side: left, color: "#003399", content: eu-stars+LV, hex_basis: observed }
634
+ validity:
635
+ rule: "CSDD: 'Tranzīta numura zīmju derīguma termiņš ir 30 dienas.' — 30 days."
636
+ purpose: "MK 1080 p. 13.1: issued to a vehicle intended to be taken out of Latvia — which is why Latvia has no separate export class (see out_of_scope.export)"
637
+ region_encoding: none
638
+ sources:
639
+ - "https://likumi.lv/ta/id/222145-transportlidzeklu-registracijas-noteikumi # 7. pielikums 4.1.1-4.1.2; punkts 13.1"
640
+ - "https://www.csdd.lv/transportlidzekla-numura-zimes/tranzita-numura-zimju-sanemsana # CSDD: the 30-day validity"
641
+ notes: >-
642
+ THE TRANSIT PLATE, which is also Latvia's EXPORT plate. Note precisely
643
+ what the red is: a red FIELD placed on the plate, not a red ground and not
644
+ red characters — the regulation uses a different formula for each of its
645
+ three red plates and this file keeps them apart. The red field's
646
+ dimensions and position are stated only as "noteikta izmēra" (of specified
647
+ size) without giving the size, which is a real gap in the instrument
648
+ itself and is recorded as such rather than filled from a photograph.
649
+
650
+ - id: lv-dealer
651
+ class: dealer
652
+ categories: [car, van, truck, bus, motorcycle, trailer]
653
+ period: { start: 2010 }
654
+ period_evidence: instrument-in-force
655
+ matching: strict
656
+ format:
657
+ pattern: "A9999" # the pattern spells the FIRST member of the
658
+ # closed {A,B,C,D,E} set as canonical, so the
659
+ # round-trip generates only serials the regex
660
+ # can accept (the fi.yml "MLL-999" device)
661
+ regex: '\A[A-E]\d{2,5}\z'
662
+ charset:
663
+ first_letter: [A, B, C, D, E]
664
+ notes: >-
665
+ 7. pielikums 4.2.2, verbatim: "pirmais simbols ir burts (A, B, C, D
666
+ vai E), kas norāda transportlīdzekļa veidu… Pēdējais cipars norāda
667
+ gadu, līdz kuram… derīga." TWO positions carry meaning: the FIRST
668
+ symbol is a letter from the closed set {A, B, C, D, E} denoting the
669
+ VEHICLE TYPE, and the LAST digit denotes the YEAR up to which the
670
+ plate is valid. The letter set is encoded in the regex; the
671
+ vehicle-type mapping behind each letter is NOT published in the annex
672
+ and is not invented here.
673
+ totals: "A type 3-6 symbols; C type 3-4"
674
+ design:
675
+ plate: { w: 520, h: 110, unit: mm }
676
+ plate_variants:
677
+ - { w: 240, h: 130, unit: mm, note: "C type, 3-4 symbols" }
678
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
679
+ foreground: "#D0021B"
680
+ border: { color: "#D0021B", note: '4.2.3, verbatim: "tirdzniecības numura zīmju simboli ir sarkanā krāsā" — red SYMBOLS on an otherwise ordinary plate' }
681
+ band: { side: left, color: "#003399", content: eu-stars+LV, hex_basis: observed }
682
+ region_encoding: none
683
+ sources:
684
+ - "https://likumi.lv/ta/id/222145-transportlidzeklu-registracijas-noteikumi # 7. pielikums 4.2.1-4.2.3"
685
+ - "https://likumi.lv/ta/id/45467-celu-satiksmes-likums # 4.^1 panta ceturtā daļa — trade-plate requirements delegated to the Cabinet"
686
+ notes: >-
687
+ THE TRADE PLATE (tirdzniecības numura zīme), and the most information-rich
688
+ Latvian mark: its first character encodes the vehicle type and its last
689
+ digit encodes the expiry year, so a single trade mark carries both a class
690
+ and an era. The vehicle-type meanings of A-E are NOT in the annex and no
691
+ decode is shipped for them — a narrow, well-located gap. Red symbols, not
692
+ a red plate: contrast lv-diplomatic.
693
+
694
+ - id: lv-trial
695
+ class: dealer
696
+ categories: [car, van, truck, bus, motorcycle, trailer]
697
+ period: { start: 2010 }
698
+ period_evidence: instrument-in-force
699
+ matching: strict
700
+ format:
701
+ pattern: "IZM999"
702
+ regex: '\AIZM\d{1,3}\z'
703
+ regex_strict: '\AIZM[1-9]\d{0,2}\z'
704
+ charset:
705
+ literal_prefix: IZM
706
+ notes: >-
707
+ 7. pielikums 4.3.2, verbatim: "pirmie trīs simboli ir burti, kas veido
708
+ burtu kombināciju „IZM”, bet pārējie simboli ir cipari… no 1 līdz
709
+ 999." IZM (izmēģinājums — trial) is a fixed literal, so this regex IS
710
+ the annex's grammar.
711
+ design:
712
+ plate: { w: 520, h: 110, unit: mm }
713
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
714
+ foreground: "#000000"
715
+ band: { side: left, color: "#003399", content: eu-stars+LV, hex_basis: observed }
716
+ region_encoding: none
717
+ sources:
718
+ - "https://likumi.lv/ta/id/222145-transportlidzeklu-registracijas-noteikumi # 7. pielikums 4.3.1-4.3.2; punkts 13.3"
719
+ notes: >-
720
+ THE TRIAL/EXPERIMENTAL PLATE (izmēģinājuma numura zīme). CLASS CAVEAT:
721
+ `dealer` is the nearest value in _meta/classes.yml — a plate bound to a
722
+ business rather than a vehicle — but a trial plate is bound to a testing
723
+ programme rather than to a trade, and the vocabulary has no better slot.
724
+ Flagged rather than forced. Its fixed IZM prefix makes it the most
725
+ unambiguous mark in the Latvian system.
726
+
727
+ - id: lv-diplomatic
728
+ class: diplomatic
729
+ categories: [car, van]
730
+ period: { start: 2010 }
731
+ period_evidence: instrument-in-force
732
+ matching: strict
733
+ format:
734
+ pattern: "CD9999"
735
+ regex: '\A(?:C|CC|CD)\d{2,5}\z'
736
+ charset:
737
+ letter_groups: [C, CC, CD]
738
+ notes: >-
739
+ 7. pielikums 4.4.2, verbatim: "pirmie simboli ir burti „C”, „CC” vai
740
+ „CD”… izvietoti numura zīmes augšējā rindā C tipa… vai kreisajā pusē
741
+ A tipa". Three letter groups, and the annex also fixes their PLACEMENT
742
+ — on the top row of a C-type plate, or on the left of an A-type. Total
743
+ symbols: A type 4-7, C type 4-6.
744
+ design:
745
+ plate: { w: 520, h: 110, unit: mm }
746
+ plate_variants:
747
+ - { w: 240, h: 130, unit: mm, note: "C type, letters on the top row" }
748
+ background: { color: "#C8102E", finish: retroreflective, hex_basis: observed, spec_note: '4.4.3, verbatim: "diplomātisko numura zīmju fons ir sarkanā krāsā" — the GROUND is red. No RGB is given anywhere; this hex is observed.' }
749
+ foreground: "#FFFFFF"
750
+ band: { side: left, color: "#003399", content: eu-stars+LV, hex_basis: observed }
751
+ region_encoding: none
752
+ sources:
753
+ - "https://likumi.lv/ta/id/222145-transportlidzeklu-registracijas-noteikumi # 7. pielikums 4.4.1-4.4.3; punkts 13.4"
754
+ notes: >-
755
+ THE DIPLOMATIC PLATE — and THE red plate, the one whose GROUND is red,
756
+ as against the trade plate's red symbols and the transit plate's red
757
+ field. The three-way {C, CC, CD} distinction is stated by the annex but
758
+ its MEANING is not: no Latvian instrument reached says which of the three
759
+ denotes a head of mission, a diplomat or a consular officer, and no
760
+ mission-code decode is published. Recorded, not guessed. The foreground
761
+ colour is an inference from contrast, not a quoted rule — the annex fixes
762
+ the ground only.
763
+
764
+ - id: lv-taxi
765
+ class: taxi
766
+ categories: [car, van]
767
+ period: { start: 2010 }
768
+ period_evidence: instrument-in-force
769
+ matching: strict
770
+ format:
771
+ pattern: "LL9999"
772
+ regex: '\A[A-Z]{2}\d{1,4}\z'
773
+ regex_strict: '\A[A-Z]{2}[1-9]\d{0,3}\z'
774
+ charset:
775
+ notes: >-
776
+ 7. pielikums 4.5.2: "pirmie divi simboli ir burti, bet pārējie ir
777
+ cipari… no 1 līdz 9999 (A) vai no 1 līdz 99 (E)". Two letters then
778
+ digits — the E type (300 x 110 mm) caps the digits at 99, giving 3-4
779
+ symbols against the A type's 3-6. NOTE: the widely circulated "TX"
780
+ taxi prefix is NOT in the annex and is not encoded; see notes.
781
+ design:
782
+ plate: { w: 520, h: 110, unit: mm }
783
+ plate_variants:
784
+ - { w: 300, h: 110, unit: mm, note: "E type — the special-purpose blank; digits capped at 99" }
785
+ background: { color: "#F5C400", finish: retroreflective, hex_basis: observed, spec_note: '4.5.3, verbatim: "taksometru numura zīmju fons ir dzeltenā krāsā" — a yellow ground. No RGB is given; observed.' }
786
+ foreground: "#000000"
787
+ band: { side: left, color: "#003399", content: eu-stars+LV, hex_basis: observed }
788
+ region_encoding: none
789
+ sources:
790
+ - "https://likumi.lv/ta/id/222145-transportlidzeklu-registracijas-noteikumi # 7. pielikums 4.5.1-4.5.3, 1.4 (E type dimensions); punkts 13.5"
791
+ - "https://www.csdd.lv/transportlidzekla-numura-zimes/taksometru-numuru-zimes # CSDD contrasts the taxi 'dzeltenās' plates with the general-use 'baltās' ones"
792
+ notes: >-
793
+ THE YELLOW TAXI PLATE. A CORRECTION WORTH STATING: secondary compilations
794
+ give Latvian taxi plates a "TX" (or TE/TQ) series prefix. The annex
795
+ prescribes only "two letters", with no reserved combination anywhere, and
796
+ no CSDD page reached names one. The prefix claim is therefore treated as
797
+ UNSOURCED and is not encoded — the letters are free in this regex. The one
798
+ thing that distinguishes a Latvian taxi mark in the string alone is
799
+ nothing; it is the yellow ground that does the work.
800
+
801
+ - id: lv-offroad
802
+ class: agricultural
803
+ categories: [offroad]
804
+ period: { start: 2010 }
805
+ period_evidence: instrument-in-force
806
+ matching: strict
807
+ format:
808
+ pattern: "LL999"
809
+ regex: '\A[A-Z]{2}\d{1,3}\z'
810
+ regex_strict: '\A[A-Z]{2}[1-9]\d{0,2}\z'
811
+ charset:
812
+ notes: "7. pielikums 4.6.1: H type, 3 to 5 symbols, first two letters, the rest digits forming numbers from 1 to 999"
813
+ design:
814
+ plate: { w: 133, h: 165, unit: mm }
815
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
816
+ foreground: "#00843D"
817
+ border: { color: "#00843D", note: '4.6.2, verbatim: "simboli ir zaļā krāsā" — GREEN SYMBOLS on an otherwise ordinary ground, not a green plate' }
818
+ band: { side: left, color: "#003399", content: eu-stars+LV, hex_basis: observed }
819
+ region_encoding: none
820
+ sources:
821
+ - "https://likumi.lv/ta/id/222145-transportlidzeklu-registracijas-noteikumi # 7. pielikums 4.6.1-4.6.2, 1.7 (H type dimensions); punkts 13.6"
822
+ notes: >-
823
+ THE OFF-ROAD VEHICLE PLATE (bezceļu transportlīdzekļu numura zīme), on the
824
+ tall 133 x 165 H blank. CLASS CAVEAT: `agricultural` is the nearest value
825
+ in _meta/classes.yml; a Latvian bezceļu transportlīdzeklis is an off-road
826
+ vehicle rather than farm equipment, and the vocabulary has no `offroad`
827
+ value. The vehicle kind is carried precisely in `categories` instead, and
828
+ the mismatch is flagged rather than hidden. Green symbols, white ground —
829
+ the third of Latvia's coloured-symbol classes.
830
+
831
+ - id: lv-military
832
+ class: military
833
+ categories: [car, van, truck, bus, motorcycle, trailer]
834
+ period: { start: 2010 }
835
+ period_evidence: instrument-in-force
836
+ matching: recall-only # SEE format.charset.dsl_collision — this regex is
837
+ # deliberately WIDER than the issuing grammar
838
+ # because the human-pattern DSL cannot spell the
839
+ # literal the annex prescribes.
840
+ format:
841
+ pattern: "LL9999"
842
+ regex: '\A[A-Z]{2}\d{1,4}\z'
843
+ charset:
844
+ letter_groups: [L, LA]
845
+ issuing_grammar: '\A(?:L|LA)\d{1,4}\z'
846
+ notes: >-
847
+ 7. pielikums 4.7.2, verbatim: "pirmie simboli ir burti „L” vai „LA”,
848
+ bet pārējie ir cipari". Two permitted letter groups, then digits. LA
849
+ is commonly expanded as Latvijas Armija; the annex does not say so and
850
+ this file does not assert it.
851
+ dsl_collision: >-
852
+ A GENUINE SCHEMA STRESSOR, RECORDED RATHER THAN WORKED AROUND
853
+ SILENTLY. PRD-PLATES §2.2 defines the human pattern DSL as 9=digit,
854
+ L=letter, everything else literal — so the DSL CANNOT SPELL A LITERAL
855
+ "L" (nor a literal "9"). Latvia's military mark begins with exactly
856
+ that letter. Because `pattern` must round-trip against `regex`, and
857
+ `pattern` can only generate a free letter in the first position, the
858
+ honest encoding is a WIDER regex plus `matching: recall-only` — a
859
+ match here is a shape hit, not a claim that the string is a valid
860
+ Latvian military mark. The true grammar is preserved above as
861
+ `issuing_grammar` so no information is lost, and it cannot live in
862
+ `regex_strict` because §2.7 forbids a strict twin on a recall-only
863
+ series. THE FIX IS A SCHEMA AMENDMENT (an escape for literal L/9 in
864
+ the DSL), not a data edit; flagged for PRD-PLATES §2.6.
865
+ design:
866
+ plate: { w: 520, h: 110, unit: mm }
867
+ plate_variants:
868
+ - { w: 280, h: 200, unit: mm, note: "B type" }
869
+ - { w: 240, h: 130, unit: mm, note: "C type" }
870
+ - { w: 300, h: 110, unit: mm, note: "E type" }
871
+ - { w: 177, h: 130, unit: mm, note: "F type" }
872
+ background: { color: "#000000", finish: non-retroreflective, hex_basis: observed, spec_note: '4.7.3, verbatim: "fons nav gaismu atstarojošs, tas ir melnā krāsā, bet simboli ir baltā krāsā" — the ground is expressly NON-REFLECTIVE and black, the symbols white. The only Latvian plate the regulation bars from retroreflection.' }
873
+ foreground: "#FFFFFF"
874
+ band: { side: none, note: "no EU band is prescribed for the military plate by the annex; recorded as prescribed, not assumed" }
875
+ region_encoding: none
876
+ sources:
877
+ - "https://likumi.lv/ta/id/222145-transportlidzeklu-registracijas-noteikumi # 7. pielikums 4.7.1-4.7.3; punkts 13.8"
878
+ notes: >-
879
+ THE MILITARY PLATE — black, non-reflective, white symbols, and issued on
880
+ the widest set of blanks in the Latvian system (A, B, C, E and F). It is
881
+ the one Latvian class whose colour rule the regulation states in full
882
+ (ground, reflectivity and symbols in one sentence), which is why this is
883
+ the only series here whose colours do not depend on the unread LVS 20.
884
+
885
+ - id: lv-electric
886
+ class: electric
887
+ categories: [car, van]
888
+ period: { start: 2016 }
889
+ period_evidence: agency-stated-date
890
+ matching: strict
891
+ format:
892
+ pattern: "LL-9999"
893
+ regex: '\A[A-Z]{2}-\d{1,4}\z'
894
+ regex_strict: '\A[A-Z]{2}-[1-9]\d{0,3}\z'
895
+ charset:
896
+ notes: >-
897
+ NO DISTINCT FORMAT. 7. pielikums 4.8, verbatim: "elektrotransportlīdzekļu
898
+ numura zīmju simboli ir zilā krāsā, un tie atbilst šā pielikuma 2. un
899
+ 3. punktā un 4.4. un 4.5. apakšpunktā noteiktajiem tipiem" — the marks
900
+ are BLUE and otherwise conform to the general-use, individual,
901
+ diplomatic and taxi types. So an electric plate is a colour treatment
902
+ applied to an existing grammar, and this series carries the ordinary
903
+ car grammar as its representative shape. A CORRECTION: the "EX"/"EY"
904
+ prefixes circulated in secondary compilations appear nowhere in
905
+ MK 1080 or on CSDD's pages and are NOT encoded.
906
+ design:
907
+ plate: { w: 520, h: 110, unit: mm }
908
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
909
+ foreground: "#0057B8"
910
+ border: { color: "#0057B8", note: '4.8: "simboli ir zilā krāsā" — blue symbols' }
911
+ band: { side: left, color: "#003399", content: eu-stars+LV, hex_basis: observed }
912
+ region_encoding: none
913
+ sources:
914
+ - "https://likumi.lv/ta/id/222145-transportlidzeklu-registracijas-noteikumi # 7. pielikums 4.8; punkts 13.7"
915
+ - "https://www.csdd.lv/transportlidzekla-numura-zimes/elektrotransportlidzeklu-numura-zimes # CSDD: electric plates are issued free of charge, and the entitlement 'attiecas arī uz transportlīdzekļiem, kuriem līdz 01.01.2016. bija piešķirtas vispārējās nozīmes… numura zīmes' — the only date evidence located for this class"
916
+ notes: >-
917
+ THE BLUE-SYMBOL ELECTRIC PLATE. period.start 2016 is
918
+ `agency-stated-date` and is INFERRED, not quoted: CSDD's page frames the
919
+ entitlement by reference to vehicles that held general-use plates before
920
+ 1 January 2016, which implies the class began about then but does not say
921
+ so. No amending regulation was traced to the insertion of 4.8. This is the
922
+ weakest date in the file and is flagged accordingly. Modelled as its own
923
+ series because the DESIGN differs (blue symbols) even though the FORMAT
924
+ does not — PRD-PLATES §2.3's design limb.