vehicles 0.6.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 (186) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +164 -0
  3. data/CHANGELOG.md +274 -0
  4. data/README.md +55 -10
  5. data/data/PROVENANCE-vehicles.md +12 -0
  6. data/data/plates/PROVENANCE.md +5 -4
  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/fr-departements.yml +191 -0
  14. data/data/plates/_decode/gb-age-identifiers.yml +170 -0
  15. data/data/plates/_decode/gb-memory-tags.yml +202 -0
  16. data/data/plates/_decode/gr-prefectures.yml +1408 -0
  17. data/data/plates/_decode/hr-cities.yml +315 -0
  18. data/data/plates/_decode/ie-counties.yml +227 -0
  19. data/data/plates/_decode/in-state-codes.yml +169 -0
  20. data/data/plates/_decode/is-districts-1938.yml +116 -0
  21. data/data/plates/_decode/it-provinces.yml +348 -0
  22. data/data/plates/_decode/jp-office-marks.yml +960 -0
  23. data/data/plates/_decode/jp-use-marks.yml +205 -0
  24. data/data/plates/_decode/kr-authority-marks.yml +146 -0
  25. data/data/plates/_decode/kr-use-syllables.yml +194 -0
  26. data/data/plates/_decode/lu-series-order.yml +638 -0
  27. data/data/plates/_decode/mx-entity-series.yml +380 -0
  28. data/data/plates/_decode/my-index-marks.yml +271 -0
  29. data/data/plates/_decode/no-counties-1913.yml +148 -0
  30. data/data/plates/_decode/no-districts.yml +901 -0
  31. data/data/plates/_decode/pl-powiats.yml +567 -0
  32. data/data/plates/_decode/pt-trailer-services.yml +96 -0
  33. data/data/plates/_decode/ro-counties.yml +213 -0
  34. data/data/plates/_decode/se-diplomatic.yml +220 -0
  35. data/data/plates/_decode/si-regions.yml +123 -0
  36. data/data/plates/_decode/sk-districts.yml +314 -0
  37. data/data/plates/_decode/th-registration-elements.yml +208 -0
  38. data/data/plates/_decode/ua-regions.yml +393 -0
  39. data/data/plates/_decode/za-licence-marks.yml +215 -0
  40. data/data/plates/_meta/classes.yml +1 -0
  41. data/data/plates/_meta/separators.yml +102 -0
  42. data/data/plates/ad.yml +961 -0
  43. data/data/plates/ar.yml +762 -0
  44. data/data/plates/at.yml +1424 -0
  45. data/data/plates/au-act.yml +472 -0
  46. data/data/plates/au-nsw.yml +282 -0
  47. data/data/plates/au-nt.yml +431 -0
  48. data/data/plates/au-qld.yml +272 -0
  49. data/data/plates/au-sa.yml +248 -0
  50. data/data/plates/au-tas.yml +302 -0
  51. data/data/plates/au-vic.yml +215 -0
  52. data/data/plates/au-wa.yml +309 -0
  53. data/data/plates/be.yml +1840 -0
  54. data/data/plates/br.yml +1152 -0
  55. data/data/plates/ca-ab.yml +430 -0
  56. data/data/plates/ca-bc.yml +697 -0
  57. data/data/plates/ca-mb.yml +499 -0
  58. data/data/plates/ca-nb.yml +537 -0
  59. data/data/plates/ca-nl.yml +743 -0
  60. data/data/plates/ca-ns.yml +808 -0
  61. data/data/plates/ca-nt.yml +610 -0
  62. data/data/plates/ca-nu.yml +280 -0
  63. data/data/plates/ca-on.yml +881 -0
  64. data/data/plates/ca-pe.yml +592 -0
  65. data/data/plates/ca-qc.yml +1036 -0
  66. data/data/plates/ca-sk.yml +256 -0
  67. data/data/plates/ca-yt.yml +656 -0
  68. data/data/plates/ch.yml +1273 -0
  69. data/data/plates/cn.yml +1431 -0
  70. data/data/plates/cy.yml +688 -0
  71. data/data/plates/cz.yml +1179 -0
  72. data/data/plates/de.yml +553 -118
  73. data/data/plates/dk.yml +1647 -0
  74. data/data/plates/ee.yml +1275 -0
  75. data/data/plates/es.yml +228 -32
  76. data/data/plates/fi.yml +1271 -0
  77. data/data/plates/fr.yml +1265 -0
  78. data/data/plates/gb.yml +1188 -0
  79. data/data/plates/gr.yml +721 -0
  80. data/data/plates/hr.yml +860 -0
  81. data/data/plates/hu.yml +959 -0
  82. data/data/plates/ie.yml +775 -0
  83. data/data/plates/in.yml +1172 -0
  84. data/data/plates/is.yml +667 -0
  85. data/data/plates/it.yml +1317 -0
  86. data/data/plates/jp.yml +3650 -0
  87. data/data/plates/kr.yml +1375 -0
  88. data/data/plates/li.yml +1010 -0
  89. data/data/plates/lt.yml +879 -0
  90. data/data/plates/lu.yml +842 -0
  91. data/data/plates/lv.yml +924 -0
  92. data/data/plates/mc.yml +1024 -0
  93. data/data/plates/mt.yml +854 -0
  94. data/data/plates/mx.yml +1372 -0
  95. data/data/plates/my.yml +685 -0
  96. data/data/plates/nl.yml +44 -0
  97. data/data/plates/no.yml +1018 -0
  98. data/data/plates/nz.yml +1699 -0
  99. data/data/plates/pl.yml +1296 -0
  100. data/data/plates/pt.yml +847 -0
  101. data/data/plates/ro.yml +785 -0
  102. data/data/plates/se.yml +1091 -0
  103. data/data/plates/si.yml +1105 -0
  104. data/data/plates/sk.yml +1439 -0
  105. data/data/plates/sm.yml +1119 -0
  106. data/data/plates/th.yml +1150 -0
  107. data/data/plates/ua.yml +1672 -0
  108. data/data/plates/us-ak.yml +763 -0
  109. data/data/plates/us-al.yml +457 -0
  110. data/data/plates/us-ar.yml +427 -0
  111. data/data/plates/us-as.yml +454 -0
  112. data/data/plates/us-az.yml +430 -0
  113. data/data/plates/us-ca.yml +892 -0
  114. data/data/plates/us-co.yml +452 -0
  115. data/data/plates/us-ct.yml +427 -0
  116. data/data/plates/us-dc.yml +614 -0
  117. data/data/plates/us-de.yml +551 -0
  118. data/data/plates/us-fl.yml +319 -96
  119. data/data/plates/us-ga.yml +644 -0
  120. data/data/plates/us-gu.yml +658 -0
  121. data/data/plates/us-hi.yml +585 -0
  122. data/data/plates/us-ia.yml +438 -0
  123. data/data/plates/us-id.yml +531 -0
  124. data/data/plates/us-il.yml +516 -0
  125. data/data/plates/us-in.yml +324 -0
  126. data/data/plates/us-ks.yml +351 -0
  127. data/data/plates/us-ky.yml +770 -0
  128. data/data/plates/us-la.yml +568 -0
  129. data/data/plates/us-ma.yml +379 -0
  130. data/data/plates/us-md.yml +536 -0
  131. data/data/plates/us-me.yml +445 -0
  132. data/data/plates/us-mi.yml +408 -0
  133. data/data/plates/us-mn.yml +411 -0
  134. data/data/plates/us-mo.yml +356 -0
  135. data/data/plates/us-mp.yml +402 -0
  136. data/data/plates/us-ms.yml +432 -0
  137. data/data/plates/us-mt.yml +619 -0
  138. data/data/plates/us-nc.yml +602 -0
  139. data/data/plates/us-nd.yml +419 -0
  140. data/data/plates/us-ne.yml +483 -0
  141. data/data/plates/us-nh.yml +394 -0
  142. data/data/plates/us-nj.yml +547 -0
  143. data/data/plates/us-nm.yml +574 -0
  144. data/data/plates/us-nv.yml +655 -0
  145. data/data/plates/us-ny.yml +592 -0
  146. data/data/plates/us-oh.yml +404 -0
  147. data/data/plates/us-ok.yml +513 -0
  148. data/data/plates/us-or.yml +392 -0
  149. data/data/plates/us-pa.yml +506 -0
  150. data/data/plates/us-pr.yml +507 -0
  151. data/data/plates/us-ri.yml +445 -0
  152. data/data/plates/us-sc.yml +605 -0
  153. data/data/plates/us-sd.yml +428 -0
  154. data/data/plates/us-tn.yml +471 -0
  155. data/data/plates/us-tx.yml +535 -0
  156. data/data/plates/us-ut.yml +384 -0
  157. data/data/plates/us-va.yml +567 -0
  158. data/data/plates/us-vi.yml +489 -0
  159. data/data/plates/us-vt.yml +458 -0
  160. data/data/plates/us-wa.yml +484 -0
  161. data/data/plates/us-wi.yml +509 -0
  162. data/data/plates/us-wv.yml +446 -0
  163. data/data/plates/us-wy.yml +523 -0
  164. data/data/plates/va.yml +604 -0
  165. data/data/plates/za.yml +1141 -0
  166. data/data/vehicles.json +160653 -105090
  167. data/lib/vehicles/configuration.rb +17 -3
  168. data/lib/vehicles/dataset.rb +73 -18
  169. data/lib/vehicles/fuzzy.rb +115 -0
  170. data/lib/vehicles/http.rb +48 -0
  171. data/lib/vehicles/make.rb +36 -6
  172. data/lib/vehicles/mcp_server.rb +5 -5
  173. data/lib/vehicles/model.rb +21 -2
  174. data/lib/vehicles/plates/series.rb +172 -18
  175. data/lib/vehicles/plates/template_fill.rb +188 -0
  176. data/lib/vehicles/plates/templates.rb +162 -0
  177. data/lib/vehicles/plates.rb +12 -0
  178. data/lib/vehicles/providers/hosted_provider.rb +28 -55
  179. data/lib/vehicles/validators/vehicle_make_validator.rb +3 -1
  180. data/lib/vehicles/validators/vehicle_model_validator.rb +1 -1
  181. data/lib/vehicles/version.rb +1 -1
  182. data/lib/vehicles.rb +32 -16
  183. data/rakelib/data_refresh.rake +109 -0
  184. data/rakelib/plates_refresh.rake +29 -0
  185. data/sig/vehicles.rbs +18 -0
  186. metadata +164 -2
@@ -0,0 +1,879 @@
1
+ # plates/lt.yml — Lithuania (PRD-PLATES gate L1, EU/EEA wave 2). DRAFT for
2
+ # verification: researched by an Opus L1 researcher, never applied directly.
3
+ #
4
+ # THE LITHUANIAN SOURCE POSITION, STATED HONESTLY UP FRONT
5
+ #
6
+ # This file is materially WEAKER-SOURCED than plates/ee.yml, and the difference
7
+ # is not a research shortfall to be papered over — it is the finding.
8
+ #
9
+ # * WHAT IS PRIMARY. Every FORMAT, COLOUR and DIMENSION claim below comes
10
+ # from AB Regitra, the state enterprise that runs the Lithuanian vehicle
11
+ # register and issues the plates — i.e. from the authority's own published
12
+ # description of its own product, one page per plate type. Regitra also
13
+ # states, on several of those pages, the DATE from which a plate type has
14
+ # been available, which is first-class period evidence of the
15
+ # `secondary-first-issue` kind (an authority asserting its own first issue,
16
+ # not an instrument commanding it).
17
+ # * WHAT IS MISSING. THE INSTRUMENT ITSELF. No Lithuanian legal act was
18
+ # reached in this pass: the order (susisiekimo ministro / vidaus reikalų
19
+ # ministro įsakymas) or government resolution that prescribes the plates,
20
+ # and the Lithuanian standard LST 1447 that the trade refers to, were not
21
+ # located at a fetchable URL, and Regitra's own legal-information pages
22
+ # returned 404. Consequently NOT ONE series in this file carries
23
+ # `instrument-in-force`. See gaps.instrument.
24
+ # * WHAT THAT COSTS. Nothing in this file may be read as "the law says".
25
+ # It is "the issuing authority says", which is weaker in kind, and every
26
+ # `period_evidence` value records which.
27
+ #
28
+ # THREE STRUCTURAL FACTS
29
+ #
30
+ # 1. LITHUANIA VARIES THE MARK BY VEHICLE KIND, AND THAT IS THE SYSTEM'S
31
+ # SIGNATURE. Regitra's general-use page gives FIVE different compositions
32
+ # on one page: cars three letters + three numbers; trailers and semi-trailers
33
+ # two letters + three numbers; motorcycles three numbers + two letters;
34
+ # mopeds two numbers + three letters; powerful quadricycles two numbers +
35
+ # two letters. Each is its own series here, because each is its own format.
36
+ # Note especially that the MOTORCYCLE mark runs digits-first while the CAR
37
+ # mark runs letters-first — the same inversion Finland legislates (fi.yml
38
+ # structural fact 2), arrived at independently.
39
+ #
40
+ # 2. THE CLASS IS IN THE FIRST CHARACTER, FOR FOUR CLASSES. T = taksi,
41
+ # H = istorinė (historic), P = the temporary/commercial plate, E = electric.
42
+ # These are fixed literal prefixes on otherwise numeric marks, which makes
43
+ # Lithuanian special-class plates unusually machine-separable — and is why
44
+ # those series carry real `regex` grammars rather than catch-alls.
45
+ #
46
+ # 3. THE VYTIS IS A DATED DESIGN CHANGE AND IS NOT THE EU BAND. Regitra's
47
+ # current pages show the coat of arms of Lithuania (Vytis) on general-use,
48
+ # taxi and electric plates. The EU band is a SEPARATE, EARLIER change. This
49
+ # file keeps them as two events with two dates and two evidence tiers, per
50
+ # the standing instruction that band adoption is never merged with a format
51
+ # or design change.
52
+ #
53
+ # SEPARATORS — READ BEFORE TRUSTING A PATTERN. Regitra states the COMPOSITION
54
+ # of every mark (how many letters, how many digits, in what order) but does NOT
55
+ # state what, if anything, is printed between the groups, and this pass reached
56
+ # no statutory drawing for Lithuania (contrast Estonia, where Lisa 3 dimensions
57
+ # every gap). The patterns below therefore spell:
58
+ # * a SPACE on the 520 x 110 car and trailer marks, where a printed gap is
59
+ # universally shown in the authority's own plate imagery; and
60
+ # * NO separator on the small square blanks and on the T/H/P/E class marks,
61
+ # which the authority and the secondary sources alike render solid
62
+ # ("T06868", "H02401", "P28737").
63
+ # Both choices are RECORDED INFERENCES, flagged per series, and both are made
64
+ # safe by PRD-PLATES §2.6: a separator-forgiving consumer collapses the two
65
+ # printed forms to one canonical serial either way.
66
+ jurisdiction: lt
67
+ authority:
68
+ name: AB Regitra (State Enterprise Regitra — the Lithuanian vehicle register and plate issuer)
69
+ url: "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/"
70
+ binding: vehicle
71
+ instrument:
72
+ status: >-
73
+ NOT PINNED. No Lithuanian legal act governing registration plates was
74
+ reached in this pass. The candidates that should be pinned by a verifier
75
+ with access to e-tar.lt / e-seimas.lrs.lt are: the Minister of Transport
76
+ and Communications order approving the vehicle registration rules
77
+ ("Motorinių transporto priemonių ir jų priekabų registravimo taisyklės"),
78
+ the order approving the plate standard, and the Lithuanian standard
79
+ LST 1447 (plate dimensions and typeface), whose edition and current status
80
+ are unknown to this pass.
81
+ authority_pages_used:
82
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/of-general-use/ # the five compositions, the five plate formats, colours, the EU band and the Vytis placement"
83
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/diplomatic-of-foreign-missions-and-of-international-organisations/ # green ground, digit-group semantics, and the 11 October 2004 availability date"
84
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/temporary-commercial/ # P prefix, red characters, and the 3 April 2018 change to unlimited validity"
85
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/taxi/ # T prefix, the 13 July 2006 first issue and the 3 April 2018 white standard"
86
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/for-historic-cars/ # H prefix and the 1 July 2014 first issue"
87
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/for-electric-vehicles/ # E prefix and the 1 July 2016 first issue"
88
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/personal/ # personalised character counts and content rules"
89
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/exclusive/ # the premium-combination catalogue — see out_of_scope.exclusive"
90
+
91
+ common:
92
+ plate_formats:
93
+ note: >-
94
+ Regitra numbers its blanks 1 to 5 and reuses the numbering across every
95
+ plate type, so the same five sizes carry all classes:
96
+ sizes:
97
+ format_1: { w: 520, h: 110, unit: mm, use: "cars, trailers, semi-trailers, motorcycles" }
98
+ format_2: { w: 300, h: 150, unit: mm, use: "cars, trailers, semi-trailers" }
99
+ format_3: { w: 250, h: 150, unit: mm, use: "motorcycles, powerful quadricycles" }
100
+ format_4: { w: 145, h: 120, unit: mm, use: "mopeds" }
101
+ format_5: { w: 185, h: 210, unit: mm, use: "motorcycles" }
102
+ dimension_caution: >-
103
+ Regitra's general-use page gives format 5 as 185 x 210 mm; its
104
+ diplomatic page gives the same slot as 182 x 210 mm. A 3 mm disagreement
105
+ between two pages of the same authority is RECORDED, not averaged
106
+ (PRD-PLATES §5.3). Neither figure is traceable to an instrument here.
107
+ source: "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/of-general-use/"
108
+ colours:
109
+ hex_basis_note: >-
110
+ No Lithuanian instrument was reached, so there is no RGB/RAL source of
111
+ any kind for this jurisdiction. Regitra names colours in words only —
112
+ the general-use surface is "white, light reflective" with "black" edging,
113
+ letters and numbers; the diplomatic surface is "green, light reflective
114
+ and with a repetitive safety mark" with white characters; the temporary
115
+ surface is white with "red" characters. Every hex below is
116
+ `hex_basis: observed` and is a RENDER FALLBACK, not a specification.
117
+ eu_band:
118
+ side: left
119
+ content: eu-stars+LT
120
+ definition: >-
121
+ Regitra: there is "a blue strip on its left edge" carrying the EU symbol
122
+ and the "LT" distinguishing mark in white. Lithuania's distinguishing
123
+ sign is LT.
124
+ started: 2004
125
+ dating: >-
126
+ SECONDARY ONLY, AND KEPT SEPARATE FROM EVERY FORMAT CHANGE. Lithuania
127
+ acceded to the European Union on 1 May 2004. The plate band's own start
128
+ date was not established from any instrument or from Regitra, which
129
+ describes the band as a present fact without dating it. The English
130
+ Wikipedia article states that all plates issued since 2004 bear the band,
131
+ and that plates issued between the restoration of independence and
132
+ accession bore a similar stripe carrying a small Lithuanian flag in the
133
+ band's place. That is the whole of the evidence and it is secondary.
134
+ predecessor: "a stripe of the same shape bearing the Lithuanian national flag instead of the EU symbol — see lt-standard-national"
135
+ source: "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Lithuania # SECONDARY, per-fact: the 2004 band and the pre-2004 national-flag stripe"
136
+ vytis:
137
+ what: "the coat of arms of Lithuania (Vytis), a mounted armoured knight"
138
+ placement: >-
139
+ Regitra, general-use page: on format 1 the Vytis "is displayed between the
140
+ blue band and the letters"; on the other formats it sits above the EU
141
+ symbol on the blue band itself. The same placement is described on the
142
+ taxi and electric-vehicle pages.
143
+ started: 2023
144
+ dating: >-
145
+ THE PRESENCE IS PRIMARY, THE DATE IS SECONDARY. That the Vytis is on
146
+ current Lithuanian plates is stated by the issuing authority on three of
147
+ its own pages. WHEN it arrived is not stated by Regitra anywhere this pass
148
+ reached; the October 2023 date comes from the English Wikipedia article
149
+ and is carried as `secondary-dated`. It is a DESIGN change only — no
150
+ source suggests the mark's composition changed with it.
151
+ sources:
152
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/of-general-use/ # PRIMARY: the Vytis is present and its placement is specified"
153
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Lithuania # SECONDARY, per-fact: that plates issued since October 2023 carry the coat of arms"
154
+ charset:
155
+ excluded_letters_claim: >-
156
+ Q, W and X are reported not to be used in Lithuanian registration marks.
157
+ This is SECONDARY (English Wikipedia) and was not confirmed by Regitra or
158
+ by any instrument, so it is NOT encoded in any regex or regex_strict in
159
+ this file — recorded here so a verifier can either pin it and tighten the
160
+ strict twins, or refute it. Encoding an unverified exclusion would make
161
+ the dataset reject valid marks, which is the worse failure.
162
+ source: "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Lithuania # SECONDARY, per-fact"
163
+
164
+ # ---------------------------------------------------------------------------
165
+ # THE DECODE QUESTION, ANSWERED NO — AND THIS ONE IS A GENUINE DISPUTE.
166
+ # ---------------------------------------------------------------------------
167
+ region_encoding_gap:
168
+ decision: "NO decode table is shipped for Lithuania. `region_encoding: none` on every series."
169
+ the_dispute: >-
170
+ THIS IS THE ONE PLACE WHERE MY OWN BRIEF AND MY SOURCES DISAGREE, AND IT IS
171
+ RECORDED RATHER THAN RESOLVED. The research brief for this slice described
172
+ Lithuania as having a "historically meaningful FIRST letter". The English
173
+ Wikipedia article instead states that the SECOND letter designated the
174
+ county of registration, and that from 2004 the area designation was
175
+ abolished and any letter became admissible in that position. The two
176
+ accounts identify DIFFERENT POSITIONS in the mark. No Lithuanian
177
+ instrument, and no Regitra page, was reached that settles it. Shipping a
178
+ positional decode table while unsure WHICH POSITION it decodes would be the
179
+ precise failure PRD-PLATES §2.4 warns about — a decode table that makes the
180
+ parse API lie — so none is shipped, in either position.
181
+ also_unresolved: >-
182
+ Even taking the county reading at face value, the scheme is described as
183
+ ABOLISHED in 2004, so any table would be a historic-only decode covering
184
+ marks issued before then, whose start date is equally unpinned.
185
+ what_would_close_it: >-
186
+ The pre-2004 Lithuanian registration rules, or a Regitra allocation
187
+ instruction, either of which would state which position carried the code
188
+ and when it stopped.
189
+ sources:
190
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Lithuania # SECONDARY, per-fact: the SECOND-letter county reading and its 2004 abolition — cited as the reason for the gap, not as data"
191
+
192
+ out_of_scope:
193
+ exclusive:
194
+ status: "A SALES CATEGORY, NOT A SERIES — deliberately not authored."
195
+ detail: >-
196
+ Regitra sells "exclusive" numbers — combinations such as a letter group
197
+ followed by 777, three identical letters with a low serial, and other
198
+ premium patterns — in four priced groups. These are ORDINARY general-use
199
+ marks in the ordinary general-use format, distinguished only by
200
+ desirability and price. Under PRD-PLATES §2.3 that is neither a format nor
201
+ a design nor a period difference, so it is not a series; a consumer that
202
+ needs it wants a price list, not a plate record.
203
+ source: "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/exclusive/"
204
+ military:
205
+ status: "NOT RESEARCHED TO A SOURCE IN THIS PASS — no series authored."
206
+ detail: >-
207
+ Lithuanian Armed Forces vehicles are reported to carry marks of the shape
208
+ LK + three digits + a letter, on a black plate with white characters and a
209
+ Lithuanian flag at the left, adopted November 2008. That is SECONDARY and
210
+ uncorroborated by any page this pass reached; Regitra does not list a
211
+ military type among the nine it issues, which is consistent with the
212
+ military register being separate. No format, colour or period is asserted.
213
+ source: "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Lithuania # SECONDARY, per-fact — pinned as a lead, not used as data"
214
+ bicycle_carrier_plate:
215
+ status: "NOT A VEHICLE REGISTRATION — recorded, not authored."
216
+ detail: >-
217
+ Regitra lists among its nine plate types "a plate to mark the bicycles
218
+ that are being carried" — a repeater plate for a rear-mounted bicycle
219
+ rack. It duplicates the towing vehicle's existing mark rather than
220
+ carrying one of its own, so it has no serial grammar of its own, and under
221
+ PRD-PLATES §2.7 it would in any case be a `recall-only` echo of whatever
222
+ series the car belongs to. Not authored.
223
+ source: "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/"
224
+
225
+ gaps:
226
+ instrument: >-
227
+ THE PRINCIPAL GAP. No Lithuanian legal instrument was pinned: not the
228
+ registration rules, not the plate standard, not LST 1447. Regitra's
229
+ /lt/teisine-informacija/teises-aktai/ and /lt/paslaugos/valstybinio-numerio-zenklai/
230
+ both returned HTTP 404 in this pass, and no e-tar.lt or e-seimas.lrs.lt
231
+ document was reached. Consequence: every series here is dated on an
232
+ authority statement or a secondary, never on an instrument, and the file
233
+ contains no `instrument-in-force` value at all. This is the single highest-
234
+ value target for a verifier on this jurisdiction.
235
+ independence_transition: >-
236
+ THE SLICE'S NAMED RISK, AND IT IS OPEN FOR LITHUANIA. Lithuania declared the
237
+ restoration of its independence on 11 March 1990 — EARLIER than Estonia's
238
+ and Latvia's 1991 restorations, which is exactly why these three dates must
239
+ never be shared between the three files. But the date on which Lithuania
240
+ began ISSUING its own plates, and the instrument that ordered it, were NOT
241
+ established. The only evidence reached frames the pre-EU series as running
242
+ "between the restoration of Lithuanian independence in 1990 and the
243
+ country's accession to the European Union in 2004", which dates the series
244
+ to a CONSTITUTIONAL event rather than to a plate instrument. lt-standard-national
245
+ therefore starts at 1990 on that secondary framing, and its true first-issue
246
+ date is very likely LATER than 1990 and is unknown. Do not report 1990 as an
247
+ instrument date and do not let it migrate to ee.yml or lv.yml.
248
+ vytis_instrument: >-
249
+ The order that added the Vytis to Lithuanian plates was not located; only
250
+ its presence (Regitra, primary) and its approximate date (secondary) are
251
+ recorded. lt-standard-vytis's 2023 start is `secondary-dated` in consequence.
252
+ printed_separators: >-
253
+ No statutory drawing was reached for any Lithuanian plate, so what is
254
+ printed between the mark's groups is inferred per series and flagged in each
255
+ `separator_note`. Estonia's Lisa 3 is the model of what would close this.
256
+ motorcycle_layout: >-
257
+ Motorcycle plates are issued on format 3 (250 x 150 mm) and format 5
258
+ (185 x 210 mm), both far from the 520 x 110 proportion, so the mark is
259
+ almost certainly printed on TWO ROWS. No source reached states the row
260
+ split, so no `rows:` value is asserted for those series.
261
+
262
+ series:
263
+
264
+ # =========================================================================
265
+ # THE GENERAL-USE CAR MARK — three letters, three numbers.
266
+ # Regitra: "three letters and three numbers", formats 1 and 2.
267
+ # =========================================================================
268
+ - id: lt-standard-vytis
269
+ class: standard
270
+ categories: [car, van, truck, bus]
271
+ period: { start: 2023 }
272
+ period_evidence: secondary-dated
273
+ matching: strict
274
+ format:
275
+ pattern: "LLL 999"
276
+ regex: '\A[A-Z]{3} \d{3}\z'
277
+ charset:
278
+ letters: "3"
279
+ digits: "3"
280
+ notes: >-
281
+ Q, W and X are reported unused (common.charset) but that is secondary
282
+ and unverified, so no strict twin narrows this series. The mark is
283
+ allocated without any published geographic or temporal semantics —
284
+ see region_encoding_gap.
285
+ separator_note: >-
286
+ RECORDED INFERENCE. Regitra states the composition but not the printed
287
+ separator. A gap between the letter and digit groups is shown in the
288
+ authority's own plate imagery on the 520 x 110 blank, and is spelled
289
+ here as a space per PRD-PLATES §2.6 rule 2. On the 300 x 150 blank the
290
+ mark is very likely set on two rows with no separator at all; a
291
+ forgiving consumer collapses both forms to one serial.
292
+ design:
293
+ plate: { w: 520, h: 110, unit: mm }
294
+ plate_variants:
295
+ - { w: 300, h: 150, unit: mm, note: "Regitra format 2" }
296
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed, spec_note: "Regitra: the surface is 'white, light reflective'; no RGB source exists for Lithuania" }
297
+ foreground: "#000000"
298
+ border: { color: "#000000", note: "Regitra: the edging, letters and numbers are black" }
299
+ band: { side: left, color: "#003399", content: eu-stars+LT, hex_basis: observed }
300
+ emblem: { present: true, rendered: placeholder, content: "Vytis, the coat of arms of Lithuania, between the blue band and the letters on format 1; above the EU symbol on the band on the other formats", note: "PRD-PLATES §3 emblem rule: rendered as a neutral placeholder unless the artwork's licence is affirmatively clean" }
301
+ rear_differs: false
302
+ region_encoding: none
303
+ sources:
304
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/of-general-use/ # PRIMARY (authority): 'three letters and three numbers' for cars; formats 1 (520x110) and 2 (300x150); white light-reflective surface, black edging and characters; the blue strip with the EU symbol and LT; the Vytis and its placement"
305
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Lithuania # SECONDARY, per-fact: that plates issued since October 2023 bear the coat of arms — the sole evidence for period.start"
306
+ notes: >-
307
+ THE CURRENT LITHUANIAN CAR PLATE. Split from lt-standard-eu on ONE
308
+ dated design change — the addition of the Vytis — and on nothing else:
309
+ the mark's composition, the colours, the blanks and the EU band are all
310
+ unchanged across the boundary. period.start 2023 is `secondary-dated` and
311
+ is the weakest claim in this series; the Vytis's PRESENCE, by contrast, is
312
+ stated by the issuing authority and is solid. If a verifier cannot confirm
313
+ the October 2023 date, the correct remedy is to MERGE this series back
314
+ into lt-standard-eu, not to invent a different date.
315
+
316
+ - id: lt-standard-eu
317
+ class: standard
318
+ categories: [car, van, truck, bus]
319
+ period: { start: 2004, end: 2023 }
320
+ period_evidence: secondary-dated
321
+ matching: strict
322
+ format:
323
+ pattern: "LLL 999"
324
+ regex: '\A[A-Z]{3} \d{3}\z'
325
+ charset: { notes: "identical to lt-standard-vytis — the Vytis is a design change, not a format change" }
326
+ separator_note: "as lt-standard-vytis; a recorded inference"
327
+ design:
328
+ plate: { w: 520, h: 110, unit: mm }
329
+ plate_variants:
330
+ - { w: 300, h: 150, unit: mm }
331
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
332
+ foreground: "#000000"
333
+ border: { color: "#000000" }
334
+ band: { side: left, color: "#003399", content: eu-stars+LT, hex_basis: observed }
335
+ emblem: { present: false, note: "no Vytis on this series — that is the whole of the difference from lt-standard-vytis" }
336
+ rear_differs: false
337
+ region_encoding: none
338
+ sources:
339
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/of-general-use/ # PRIMARY (authority): the composition, blanks, colours and EU band that this series shares with its successor"
340
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Lithuania # SECONDARY, per-fact: 'All plates issued since 2004 also bear a blue EU identification stripe on their left-hand edge' — the sole evidence for period.start; and the October 2023 coat-of-arms change, which dates period.end"
341
+ notes: >-
342
+ THE EU-BAND SERIES, 2004 to 2023 — and the record that keeps the band
343
+ separate from everything else. period.start 2004 is the BAND's date, not
344
+ a format date: the three-letters-three-numbers composition is older than
345
+ the band and ran unchanged across the 2004 boundary, which is why
346
+ lt-standard-national carries the same format with a different left-hand
347
+ stripe. Both ends of this series are secondary; neither is an instrument
348
+ date. Lithuania acceded to the EU on 1 May 2004 but no source reached ties
349
+ the plate change to that day, so the year alone is recorded.
350
+
351
+ - id: lt-standard-national
352
+ class: standard
353
+ categories: [car, van, truck, bus]
354
+ period: { start: 1990, end: 2004 }
355
+ period_evidence: secondary-dated
356
+ matching: strict
357
+ format:
358
+ pattern: "LLL 999"
359
+ regex: '\A[A-Z]{3} \d{3}\z'
360
+ charset:
361
+ notes: >-
362
+ The composition is carried forward from the current series and is a
363
+ RECORDED INFERENCE for this period, not a quoted one: no source
364
+ reached states the pre-2004 composition directly, only that the
365
+ pre-2004 plates differed in the STRIPE. The middle-letter county code
366
+ reported for this era is deliberately not encoded — see
367
+ region_encoding_gap.
368
+ design:
369
+ plate: { w: 520, h: 110, unit: mm }
370
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
371
+ foreground: "#000000"
372
+ border: { color: "#000000" }
373
+ band: { side: left, content: "lt-flag", note: "a stripe of the same shape and position as the later EU band, bearing a small Lithuanian flag instead of the EU symbol; no colour specification was reached, so no hex is claimed" }
374
+ emblem: { present: false }
375
+ rear_differs: false
376
+ region_encoding: none
377
+ sources:
378
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Lithuania # SECONDARY, per-fact: plates issued 'between the restoration of Lithuanian independence in 1990 and the country's accession to the European Union in 2004 bore a similar stripe with a small Lithuanian flag in place of the flag of the European Union' — the sole evidence for this series"
379
+ notes: >-
380
+ THE INDEPENDENCE-ERA SERIES, AND THE WEAKEST RECORD IN THIS FILE — kept
381
+ because omitting it would imply Lithuanian plates began at EU accession.
382
+ READ gaps.independence_transition BEFORE USING period.start. 1990 is the
383
+ date of the RESTORATION OF INDEPENDENCE (11 March 1990), which the single
384
+ secondary source uses to bound the series; it is almost certainly EARLIER
385
+ than the first Lithuanian plate issue, and no instrument was found. It is
386
+ tagged `secondary-dated` and must not be reported as an instrument date.
387
+ It is also NOT Estonia's date and NOT Latvia's: Lithuania restored
388
+ independence in March 1990, Estonia and Latvia in 1991, and the three
389
+ plate transitions were separate national acts on separate timetables.
390
+ Soviet-era Lithuanian plates are not modelled — they belong to the
391
+ union-wide system, outside this jurisdiction file.
392
+
393
+ # =========================================================================
394
+ # THE OTHER GENERAL-USE COMPOSITIONS — one series per format, all from the
395
+ # same Regitra page.
396
+ # =========================================================================
397
+ - id: lt-trailer
398
+ class: trailer
399
+ categories: [trailer, semitrailer]
400
+ period: { start: 2004 }
401
+ period_evidence: secondary-locator-unverified # the 2004 start is INHERITED from the EU-band date, not sourced for this series: a locator, unverified
402
+ matching: strict
403
+ format:
404
+ pattern: "LL 999"
405
+ regex: '\A[A-Z]{2} \d{3}\z'
406
+ charset: { notes: "TWO letters, against three on a car — the trailer mark is a character shorter and is therefore trivially separable from lt-standard-*" }
407
+ separator_note: "as lt-standard-vytis; a recorded inference"
408
+ design:
409
+ plate: { w: 520, h: 110, unit: mm }
410
+ plate_variants:
411
+ - { w: 300, h: 150, unit: mm }
412
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
413
+ foreground: "#000000"
414
+ border: { color: "#000000" }
415
+ band: { side: left, color: "#003399", content: eu-stars+LT, hex_basis: observed }
416
+ region_encoding: none
417
+ sources:
418
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/of-general-use/ # PRIMARY (authority): trailers and semi-trailers carry 'two letters and three numbers', on formats 1 and 2"
419
+ notes: >-
420
+ THE TRAILER MARK. Modelled as its own series because the FORMAT differs
421
+ from the car mark by a letter — not merely the class. period.start is
422
+ carried from the EU-band date and inherits its secondary evidence; no
423
+ source dates the trailer composition itself.
424
+
425
+ - id: lt-motorcycle
426
+ class: motorcycle
427
+ categories: [motorcycle]
428
+ period: { start: 2004 }
429
+ period_evidence: secondary-locator-unverified # the 2004 start is INHERITED from the EU-band date, not sourced for this series: a locator, unverified
430
+ matching: strict
431
+ format:
432
+ pattern: "999LL"
433
+ regex: '\A\d{3}[A-Z]{2}\z'
434
+ charset:
435
+ notes: >-
436
+ DIGITS FIRST, then two letters — the inverse of the car mark, and the
437
+ most useful structural tell on a Lithuanian plate. Regitra:
438
+ motorcycles carry "three numbers and two letters".
439
+ separator_note: >-
440
+ RECORDED INFERENCE, and a cautious one: the motorcycle blanks are
441
+ 250 x 150 and 185 x 210 mm, so the mark is almost certainly set on two
442
+ rows and prints no separator. No source reached states the row split
443
+ (gaps.motorcycle_layout), so the pattern spells the mark solid and no
444
+ `rows:` value is asserted.
445
+ design:
446
+ plate: { w: 250, h: 150, unit: mm }
447
+ plate_variants:
448
+ - { w: 185, h: 210, unit: mm, note: "Regitra format 5; the diplomatic page gives this blank as 182 x 210 — see common.plate_formats.dimension_caution" }
449
+ - { w: 520, h: 110, unit: mm, note: "Regitra lists motorcycles among the users of format 1 as well" }
450
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
451
+ foreground: "#000000"
452
+ border: { color: "#000000" }
453
+ band: { side: left, color: "#003399", content: eu-stars+LT, hex_basis: observed }
454
+ region_encoding: none
455
+ sources:
456
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/of-general-use/ # PRIMARY (authority): motorcycles carry 'three numbers and two letters', on formats 3 and 5 (and format 1 is listed for motorcycles too)"
457
+ notes: >-
458
+ THE MOTORCYCLE MARK — digits before letters, mirroring exactly the
459
+ Finnish L-class inversion recorded in fi.yml, and reached by a different
460
+ legal route. A consumer must not infer Lithuania from a digits-first mark
461
+ alone: Estonia's A1 car mark is also digits-first, with three digits and
462
+ three letters against Lithuania's three and two.
463
+
464
+ - id: lt-moped
465
+ class: moped
466
+ categories: [moped]
467
+ period: { start: 2004 }
468
+ period_evidence: secondary-locator-unverified # the 2004 start is INHERITED from the EU-band date, not sourced for this series: a locator, unverified
469
+ matching: strict
470
+ format:
471
+ pattern: "99LLL"
472
+ regex: '\A\d{2}[A-Z]{3}\z'
473
+ charset: { notes: "two digits then THREE letters — Regitra: mopeds carry 'two numbers and three letters'" }
474
+ separator_note: "recorded inference; the 145 x 120 mm moped blank is close to square and the mark is spelled solid"
475
+ design:
476
+ plate: { w: 145, h: 120, unit: mm }
477
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
478
+ foreground: "#000000"
479
+ border: { color: "#000000" }
480
+ band: { side: left, color: "#003399", content: eu-stars+LT, hex_basis: observed }
481
+ region_encoding: none
482
+ sources:
483
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/of-general-use/ # PRIMARY (authority): mopeds carry 'two numbers and three letters' on format 4 (145x120)"
484
+ notes: >-
485
+ THE MOPED MARK, on Lithuania's smallest blank. Note the collision hazard
486
+ this file makes explicit: the Lithuanian moped mark (two digits, three
487
+ letters) has EXACTLY the same shape as the Estonian reduced-size car mark
488
+ ee-standard-a3. Only the plate size and the band's country code separate
489
+ them, so a parse API must not treat this shape as diagnostic of either
490
+ jurisdiction on its own.
491
+
492
+ - id: lt-quadricycle
493
+ class: motorcycle
494
+ categories: [quadricycle]
495
+ period: { start: 2004 }
496
+ period_evidence: secondary-locator-unverified # the 2004 start is INHERITED from the EU-band date, not sourced for this series: a locator, unverified
497
+ matching: strict
498
+ format:
499
+ pattern: "99LL"
500
+ regex: '\A\d{2}[A-Z]{2}\z'
501
+ charset: { notes: "Regitra: powerful quadricycles carry 'two numbers and two letters' — the shortest general-use mark Lithuania issues" }
502
+ separator_note: "recorded inference; spelled solid on the 250 x 150 blank"
503
+ design:
504
+ plate: { w: 250, h: 150, unit: mm }
505
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
506
+ foreground: "#000000"
507
+ border: { color: "#000000" }
508
+ band: { side: left, color: "#003399", content: eu-stars+LT, hex_basis: observed }
509
+ region_encoding: none
510
+ sources:
511
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/of-general-use/ # PRIMARY (authority): powerful quadricycles carry 'two numbers and two letters' on format 3 (250x150)"
512
+ notes: >-
513
+ THE QUADRICYCLE MARK. CLASS CAVEAT: `motorcycle` is the nearest value in
514
+ _meta/classes.yml, which has no quadricycle class; the vehicle kind is
515
+ carried precisely in `categories` instead. Its four-character mark is the
516
+ shortest in the Lithuanian general-use system and shares its blank with
517
+ lt-motorcycle, from which it differs by one digit.
518
+
519
+ # =========================================================================
520
+ # CLASS-PREFIXED SERIES — T, H, P, E. These carry the strongest grammars in
521
+ # the file because the class letter is a fixed literal.
522
+ # =========================================================================
523
+ - id: lt-taxi
524
+ class: taxi
525
+ categories: [car]
526
+ period: { start: 2006 }
527
+ period_evidence: secondary-first-issue
528
+ matching: strict
529
+ format:
530
+ pattern: "T99999"
531
+ regex: '\AT\d{5}\z'
532
+ charset:
533
+ literal_prefix: T
534
+ notes: "Regitra: the taxi mark is 'a letter T and five numbers'. T is a fixed literal, so this regex IS the authority's grammar and needs no strict twin."
535
+ design:
536
+ plate: { w: 520, h: 110, unit: mm }
537
+ plate_variants:
538
+ - { w: 300, h: 150, unit: mm }
539
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
540
+ foreground: "#000000"
541
+ border: { color: "#000000" }
542
+ band: { side: left, color: "#003399", content: eu-stars+LT, hex_basis: observed }
543
+ emblem: { present: true, rendered: placeholder, content: "Vytis" }
544
+ variants:
545
+ - class: taxi
546
+ design: { background: { color: "#F2C200", finish: retroreflective, hex_basis: observed }, foreground: "#000000" }
547
+ note: >-
548
+ THE EARLIER YELLOW TAXI PLATE. Regitra states that the white standard
549
+ described above was approved from 3 April 2018 and that yellow plates
550
+ issued earlier remain valid and "don't have to be changed". Recorded
551
+ as a colour-only variant per PRD-PLATES §2.3 rather than as its own
552
+ series, because the mark and the blanks are unchanged — only the
553
+ ground colour differs. Its own start is the series start, 13 July 2006.
554
+ sources:
555
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/taxi/"
556
+ region_encoding: none
557
+ sources:
558
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/taxi/ # PRIMARY (authority): 'a letter T and five numbers'; formats 1 and 2; white with black characters, the earlier yellow plates still valid; the Vytis; first available 13 July 2006; the white standard approved 3 April 2018"
559
+ notes: >-
560
+ THE TAXI PLATE. period.start 2006 is `secondary-first-issue`: the issuing
561
+ authority states the date on which this plate type became available to
562
+ users (13 July 2006), which is a first-issue assertion by the issuer
563
+ rather than an instrument commanding it. The 2018 colour change is carried
564
+ as a variant, NOT as a period boundary, because the mark did not change
565
+ and both colours remain lawfully in use.
566
+
567
+ - id: lt-historic
568
+ class: historic
569
+ categories: [car, van, truck, bus]
570
+ period: { start: 2014 }
571
+ period_evidence: secondary-first-issue
572
+ matching: strict
573
+ format:
574
+ pattern: "H99999"
575
+ regex: '\AH\d{5}\z'
576
+ charset:
577
+ literal_prefix: H
578
+ notes: "Regitra: historic cars carry 'the letter H plus five numbers'. Motorcycles carry H plus FOUR numbers and are a separate series."
579
+ design:
580
+ plate: { w: 520, h: 110, unit: mm }
581
+ plate_variants:
582
+ - { w: 300, h: 150, unit: mm }
583
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
584
+ foreground: "#000000"
585
+ border: { color: "#000000" }
586
+ band: { side: left, color: "#003399", content: eu-stars+LT, hex_basis: observed }
587
+ variants:
588
+ - class: historic
589
+ design: { background: { color: "#6B4423", finish: retroreflective, hex_basis: observed }, foreground: "#FFFFFF" }
590
+ note: >-
591
+ THE EARLIER BROWN HISTORIC PLATE. Regitra: "The brown coloured vehicle
592
+ registration number license plates that have been issued earlier don't
593
+ have to be changed." The white standard was approved from 3 April
594
+ 2018. Colour-only variant, same reasoning as the yellow taxi plate.
595
+ The brown hex is a render fallback — no source gives a value.
596
+ sources:
597
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/for-historic-cars/"
598
+ region_encoding: none
599
+ sources:
600
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/for-historic-cars/ # PRIMARY (authority): H + five numbers for cars; formats 1, 2, 3, 4, 5; white reflective with black characters and the blue strip; earlier brown plates need not be changed; first available 1 July 2014; standard approved 3 April 2018"
601
+ notes: >-
602
+ THE HISTORIC-VEHICLE PLATE. period.start 2014 is the authority's own
603
+ statement that plates of this type have been available to users since
604
+ 1 July 2014 — `secondary-first-issue`. Unlike Estonia's and Finland's
605
+ historic plates, the Lithuanian one is NOT a black retro plate: it is an
606
+ ordinary white EU-band plate distinguished only by the H prefix, and its
607
+ predecessor was brown rather than black.
608
+
609
+ - id: lt-historic-motorcycle
610
+ class: historic
611
+ categories: [motorcycle, moped]
612
+ period: { start: 2014 }
613
+ period_evidence: secondary-first-issue
614
+ matching: strict
615
+ format:
616
+ pattern: "H9999"
617
+ regex: '\AH\d{4}\z'
618
+ charset: { notes: "Regitra: historic motorcycles carry 'H plus four numbers' — one digit shorter than the car mark" }
619
+ design:
620
+ plate: { w: 250, h: 150, unit: mm }
621
+ plate_variants:
622
+ - { w: 185, h: 210, unit: mm }
623
+ - { w: 145, h: 120, unit: mm, note: "mopeds" }
624
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
625
+ foreground: "#000000"
626
+ border: { color: "#000000" }
627
+ band: { side: left, color: "#003399", content: eu-stars+LT, hex_basis: observed }
628
+ region_encoding: none
629
+ sources:
630
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/for-historic-cars/ # PRIMARY (authority): motorcycles use 'H' plus four numbers, on formats 3, 4 and 5"
631
+ notes: >-
632
+ THE HISTORIC MOTORCYCLE PLATE. Separate series from lt-historic on the
633
+ digit count (four, not five). Categories are disjoint from lt-historic's,
634
+ so the two never collide in the lint's overlap test despite sharing a
635
+ class and a start date.
636
+
637
+ - id: lt-temporary-commercial
638
+ class: temporary
639
+ categories: [car, van, truck, bus, trailer]
640
+ period: { start: 2018 }
641
+ period_evidence: secondary-first-issue
642
+ matching: strict
643
+ format:
644
+ pattern: "P99999"
645
+ regex: '\AP\d{5}\z'
646
+ charset:
647
+ literal_prefix: P
648
+ notes: "Regitra: cars and trailers carry 'P' + five digits; motorcycles 'P' + four (a separate series)."
649
+ design:
650
+ plate: { w: 520, h: 110, unit: mm }
651
+ plate_variants:
652
+ - { w: 300, h: 150, unit: mm }
653
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed, spec_note: "Regitra: the surface is 'white, light reflective'" }
654
+ foreground: "#E1341E"
655
+ border: { color: "#E1341E", note: "Regitra: 'the edging, letters and numbers ... are red'" }
656
+ band: { side: left, color: "#003399", content: eu-stars+LT, hex_basis: observed, note: "the temporary plate DOES carry the EU band, unusually for a trade plate" }
657
+ validity:
658
+ rule: >-
659
+ Regitra: "Since 3 April 2018 the vehicle registration number license
660
+ plates of this type are issued for an unlimited period." Operators
661
+ receive a two-year usage right in the register, extendable on payment.
662
+ territorial_limit: >-
663
+ Regitra states these plates are valid only within Lithuania and that
664
+ "their use is unlawful" outside the country's borders — an important
665
+ constraint for any consumer treating them as ordinary registrations.
666
+ region_encoding: none
667
+ sources:
668
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/temporary-commercial/ # PRIMARY (authority): P + five digits for cars and trailers, P + four for motorcycles; formats 1, 2 and 3; white with RED characters and the blue EU strip; unlimited validity since 3 April 2018; valid only in Lithuania"
669
+ notes: >-
670
+ THE COMMERCIAL/TRADE PLATE — Lithuania's dealer plate in substance, but
671
+ classed `temporary` because _meta/classes.yml defines that value as
672
+ short-validity plates and defines `dealer` as a plate bound to a business
673
+ rather than a vehicle. The Lithuanian plate is genuinely both, and the
674
+ 2018 move to unlimited validity pulls it further toward `dealer`; the
675
+ class choice is flagged rather than silently made. period.start 2018 is
676
+ the authority's own date for the CURRENT regime, not for the plate type as
677
+ such, which is older and undated here — a deliberate under-claim.
678
+
679
+ - id: lt-temporary-commercial-motorcycle
680
+ class: temporary
681
+ categories: [motorcycle]
682
+ period: { start: 2018 }
683
+ period_evidence: secondary-first-issue
684
+ matching: strict
685
+ format:
686
+ pattern: "P9999"
687
+ regex: '\AP\d{4}\z'
688
+ charset: { notes: "Regitra: motorcycles carry 'P' + four digits on format 3" }
689
+ design:
690
+ plate: { w: 250, h: 150, unit: mm }
691
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
692
+ foreground: "#E1341E"
693
+ border: { color: "#E1341E" }
694
+ band: { side: left, color: "#003399", content: eu-stars+LT, hex_basis: observed }
695
+ region_encoding: none
696
+ sources:
697
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/temporary-commercial/ # PRIMARY (authority): 'P' + four digits for motorcycles, format 3 (250x150)"
698
+ notes: >-
699
+ THE MOTORCYCLE TRADE PLATE. Separate series from
700
+ lt-temporary-commercial on the digit count. Its categories are disjoint
701
+ from that series', so no overlap arises.
702
+
703
+ - id: lt-electric
704
+ class: electric
705
+ categories: [car, van]
706
+ period: { start: 2016 }
707
+ period_evidence: secondary-first-issue
708
+ matching: strict
709
+ format:
710
+ pattern: "EL9999"
711
+ regex: '\AE[A-Z]\d{4}\z'
712
+ charset:
713
+ literal_prefix: E
714
+ notes: >-
715
+ Regitra: the mark is "two letters (letter 'E' and any other letter in
716
+ alphabet ascending order) and four numbers that indicate a serial
717
+ number". The first letter is a fixed E; the second is a free letter
718
+ that advances alphabetically as blocks are exhausted, which is a
719
+ PROGRESSION rule, not a constraint on any single mark. The regex
720
+ therefore leaves the second letter free — narrowing it to the blocks
721
+ issued so far would reject valid future marks.
722
+ progression: >-
723
+ The second letter advances in alphabetical order across serial blocks
724
+ (Regitra). This is the only published progression rule in the Lithuanian
725
+ system and is the one place a Lithuanian mark carries era information.
726
+ design:
727
+ plate: { w: 520, h: 110, unit: mm }
728
+ plate_variants:
729
+ - { w: 300, h: 150, unit: mm }
730
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
731
+ foreground: "#000000"
732
+ border: { color: "#000000" }
733
+ band: { side: left, color: "#003399", content: eu-stars+LT, hex_basis: observed }
734
+ emblem: { present: true, rendered: placeholder, content: "Vytis" }
735
+ eligibility:
736
+ rule: >-
737
+ Originally pure electric vehicles. Regitra: from 3 April 2018 the type
738
+ was extended to plug-in hybrids — vehicles with "an electric
739
+ rechargeable energy storage system, which can be recharged externally".
740
+ region_encoding: none
741
+ sources:
742
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/for-electric-vehicles/ # PRIMARY (authority): E + one free letter + four digits; formats 1 and 2; white with black characters, blue EU strip and the Vytis; first available 1 July 2016; extended to plug-in hybrids from 3 April 2018"
743
+ notes: >-
744
+ THE ELECTRIC-VEHICLE PLATE. period.start 2016 is the authority's own
745
+ first-issue date (1 July 2016). Note that this is a DISTINGUISHING mark
746
+ rather than a different-coloured plate: unlike China's green EV plates,
747
+ the Lithuanian EV plate is an ordinary white plate whose serial begins
748
+ with E, so the class is readable from the string alone — which is what
749
+ makes it worth a series rather than a flag.
750
+
751
+ - id: lt-personalised
752
+ class: personalized
753
+ categories: [car, van, truck, bus, trailer]
754
+ period: { start: 2004 }
755
+ period_evidence: secondary-locator-unverified # the 2004 start is INHERITED from the EU-band date, not sourced for this series: a locator, unverified
756
+ matching: strict
757
+ format:
758
+ pattern: "LLLLL9"
759
+ regex: '\A(?=[A-Z0-9]*\d)[A-Z0-9]{1,6}\z'
760
+ charset:
761
+ max_symbols: 6
762
+ rule: >-
763
+ Regitra: cars and trailers may carry "from 1 to 6 characters, one of
764
+ which must be a number"; motorcycles from 1 to 5. The regex encodes
765
+ exactly that — one to six characters from the serial alphabet, with a
766
+ lookahead requiring at least one digit somewhere. UNLIKE Estonia's A2,
767
+ Lithuania publishes NO ordering rule, so letters and digits may
768
+ interleave freely and the regex does not impose a letters-then-digits
769
+ shape.
770
+ content_rules: >-
771
+ Regitra excludes vulgar, jargon and swear words, concepts offensive to
772
+ races or religions, and inscriptions coinciding with the names of
773
+ states, international organisations or their abbreviations. Not
774
+ machine-encodable; recorded.
775
+ design:
776
+ plate: { w: 520, h: 110, unit: mm }
777
+ plate_variants:
778
+ - { w: 300, h: 150, unit: mm }
779
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
780
+ foreground: "#000000"
781
+ border: { color: "#000000" }
782
+ band: { side: left, color: "#003399", content: eu-stars+LT, hex_basis: observed }
783
+ region_encoding: none
784
+ sources:
785
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/personal/ # PRIMARY (authority): 1-6 characters for cars and trailers and 1-5 for motorcycles, at least one a number; the content restrictions; formats 1, 2, 3 and 5; white with black characters and the blue EU strip"
786
+ notes: >-
787
+ THE PERSONALISED PLATE. period.start 2004 is inherited from the EU-band
788
+ date and is NOT sourced for this type specifically — Regitra gives no
789
+ first-issue date for personalised plates, so this is the file's most
790
+ speculative start and is flagged as such. The motorcycle ceiling of five
791
+ characters is recorded in `charset` but not given its own series, because
792
+ the grammar is otherwise identical and a five-character mark already
793
+ matches this regex.
794
+
795
+ # =========================================================================
796
+ # DIPLOMATIC — the one Lithuanian series with published digit semantics.
797
+ # =========================================================================
798
+ - id: lt-diplomatic
799
+ class: diplomatic
800
+ categories: [car, van]
801
+ period: { start: 2004 }
802
+ period_evidence: secondary-first-issue
803
+ matching: strict
804
+ format:
805
+ pattern: "999999"
806
+ regex: '\A\d{6}\z'
807
+ charset:
808
+ digits: "6 on a car; 5 on a motorcycle or trailer (a separate series)"
809
+ notes: >-
810
+ An all-numeric mark, unique in the Lithuanian system, and the only one
811
+ whose positions carry published meaning. Regitra: the first two digits
812
+ are the foreign mission's code, assigned by the Department of
813
+ Protocol, drawn from the ranges 01-43, 60 and 80-91; the third digit is
814
+ the vehicle category (1 head of mission, 2 mission vehicle,
815
+ 3 diplomatic personnel's personal vehicle, 4 administrative and
816
+ technical staff's personal vehicle); the last three are the serial.
817
+ composition_note: >-
818
+ The third digit's four values are enumerated by the authority and are
819
+ encoded nowhere else in this file; they are recorded here rather than as
820
+ a decode table because a four-row enumeration is a `charset` fact, not a
821
+ table (PRD-PLATES §2.4 puts small mappings inline by design). The
822
+ MISSION-CODE mapping — which country is 01, which is 14 — is NOT
823
+ published by Regitra and is NOT shipped; see notes.
824
+ separator_note: >-
825
+ RECORDED INFERENCE. The mark is reported to print as three groups
826
+ (two digits, one digit, three digits). No source reached dimensions the
827
+ gaps, so the pattern spells the mark solid and a forgiving consumer
828
+ recovers the grouped form.
829
+ design:
830
+ plate: { w: 520, h: 110, unit: mm }
831
+ plate_variants:
832
+ - { w: 300, h: 150, unit: mm }
833
+ background: { color: "#0E7A3C", finish: retroreflective, hex_basis: observed, spec_note: "Regitra: the surface is 'green, light reflective and with a repetitive safety mark'; no RGB source exists" }
834
+ foreground: "#FFFFFF"
835
+ border: { color: "#FFFFFF", note: "Regitra: 'The edging, letters and numbers ... are white'" }
836
+ band: { side: none, note: "no EU band is described on the diplomatic plate by the authority; recorded as described, not assumed" }
837
+ region_encoding: none
838
+ sources:
839
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/diplomatic-of-foreign-missions-and-of-international-organisations/ # PRIMARY (authority): six digits on a car and five on a motorcycle or trailer; the 01-43/60/80-91 mission-code ranges; the third-digit category values; green reflective ground with white characters; 'available for the users since 11 October 2004'"
840
+ notes: >-
841
+ THE DIPLOMATIC PLATE — green, all-numeric, and the only Lithuanian mark
842
+ with published positional semantics. period.start 2004 is
843
+ `secondary-first-issue` on the authority's own statement that the type has
844
+ been available since 11 October 2004 — a date in October, NOT the 1 May
845
+ accession date and NOT the same event as the EU band, which this series
846
+ does not even carry. NO MISSION-CODE DECODE TABLE IS SHIPPED: the
847
+ authority publishes the code RANGES but not the country mapping, and the
848
+ individual assignments circulate only in secondary compilations. A decode
849
+ table of embassies built from those would be exactly the confident guess
850
+ this dataset refuses; the ranges are recorded instead so a consumer knows
851
+ the field exists and how wide it is.
852
+
853
+ - id: lt-diplomatic-motorcycle
854
+ class: diplomatic
855
+ categories: [motorcycle, trailer]
856
+ period: { start: 2004 }
857
+ period_evidence: secondary-first-issue
858
+ matching: strict
859
+ format:
860
+ pattern: "99999"
861
+ regex: '\A\d{5}\z'
862
+ charset: { notes: "five digits, against six on a car — Regitra states the difference explicitly" }
863
+ design:
864
+ plate: { w: 250, h: 150, unit: mm }
865
+ plate_variants:
866
+ - { w: 185, h: 210, unit: mm, note: "given as 182 x 210 on this authority page — see common.plate_formats.dimension_caution" }
867
+ background: { color: "#0E7A3C", finish: retroreflective, hex_basis: observed }
868
+ foreground: "#FFFFFF"
869
+ border: { color: "#FFFFFF" }
870
+ band: { side: none }
871
+ region_encoding: none
872
+ sources:
873
+ - "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/diplomatic-of-foreign-missions-and-of-international-organisations/ # PRIMARY (authority): 'motorcycles and trailers display five numbers'"
874
+ notes: >-
875
+ THE DIPLOMATIC MOTORCYCLE AND TRAILER PLATE. Separate series from
876
+ lt-diplomatic on the digit count. Because the mark loses a digit, the
877
+ published positional semantics of the six-digit car mark cannot be
878
+ assumed to carry over unchanged, and no source reached states how the
879
+ five digits divide — recorded as an open question rather than inferred.