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,959 @@
1
+ # plates/hu.yml — Hungary (PRD-PLATES gate L1, wave 2).
2
+ #
3
+ # WHAT IS PRIMARY HERE AND WHAT IS NOT — read this before trusting any line.
4
+ #
5
+ # TWO instruments were reached in their own official databases and are cited as
6
+ # primaries:
7
+ #
8
+ # * 326/2011. (XII. 28.) Korm. rendelet a közúti közlekedési igazgatási
9
+ # feladatokról, a közúti közlekedési okmányok kiadásáról és visszavonásáról
10
+ # — the decree that governs Hungarian registration plates today. Read on the
11
+ # Nemzeti Jogszabálytár (njt.jog.gov.hu) and on net.jogtar.hu, 2026-08-02.
12
+ # * 303/2021. (VI. 1.) Korm. rendelet a közúti közlekedési igazgatási
13
+ # feladatokról, a közúti közlekedési okmányok kiadásáról és visszavonásáról
14
+ # szóló 326/2011. (XII. 28.) Korm. rendelet módosításáról — THE 2022 FORMAT
15
+ # CHANGE, and its commencement sentence is quoted verbatim below.
16
+ #
17
+ # EVERYTHING ELSE IN THIS FILE IS SECONDARY, AND IT IS TAGGED, PER FACT, WITH
18
+ # `evidence_tier: secondary-wikipedia` AND THE ARTICLE URL. That tagging is
19
+ # deliberate and exhaustive: one `grep -n secondary-wikipedia plates/hu.yml`
20
+ # enumerates every fact in this file that rests on Wikipedia, so the whole
21
+ # Wikipedia-derived surface can be re-decided in one pass if the programme ever
22
+ # revisits the directive. An untagged Wikipedia-derived fact would be the defect;
23
+ # there is intended to be none. The facts are re-expressed in this schema's own
24
+ # shape and ordering — nothing here mirrors an article's table layout.
25
+ #
26
+ # THE FOUR STRUCTURAL FACTS THAT SHAPE THIS FILE
27
+ #
28
+ # 1. THE 2022 CHANGE IS DATED TO THE DAY, BY THE INSTRUMENT ITSELF, AND THE
29
+ # INSTRUMENT IS NOT THE SERIES DATE. 303/2021. (VI. 1.) Korm. rendelet was
30
+ # made and published on 1 June 2021. Its own commencement provision reads,
31
+ # verbatim: "Ez a rendelet 2022. július 1-jén lép hatályba." So the
32
+ # instrument's date is 2021 and the SERIES date is 2022-07-01, thirteen
33
+ # months later. This file records 2022, not 2021 — which is exactly the trap
34
+ # plates/es.yml fell into once (a 1999-2000 decree window shipped as the
35
+ # period for a format that ran three decades) and the reason PRD-PLATES §5.3
36
+ # puts era boundaries at the top of the audit. The thirteen-month gap is not
37
+ # incidental: it is the lead time the plate manufacturer and the county
38
+ # government offices were given.
39
+ #
40
+ # 2. HUNGARY DOES NOT ENCODE REGION, AND THERE IS THEREFORE NO hu-* DECODE
41
+ # TABLE. This is a POSITIVE FINDING, not a gap, and it is the same shape as
42
+ # the Finnish outcome in plates/fi.yml. Neither the 1990 three-letter series
43
+ # nor the 2022 four-letter series carries a geographic element; letter blocks
44
+ # are allocated nationally and sequentially by use-class (taxi, trailer,
45
+ # commercial), never by county. A 2012 proposal to add a geographic marker
46
+ # was abandoned. Consequently every series below carries
47
+ # `region_encoding: none`, no plates/_decode/hu-*.yml file is authored, and a
48
+ # parse API must NEVER return a Hungarian county from a Hungarian serial. The
49
+ # pre-1958 systems DID encode region (a single letter for the district — B
50
+ # for the Budapest area, D for Debrecen) and are described in
51
+ # `historic_regional_systems` below, but they are not modelled as series and
52
+ # no decode table is authored for them either, because no primary listing the
53
+ # district letters was reached.
54
+ #
55
+ # 3. THE SPEC — COLOURS, DIMENSIONS, THE PLATE-TYPE TABLE — LIVES IN THE
56
+ # MELLÉKLETEK OF 326/2011, AND THE MELLÉKLETEK WERE NOT TEXT-EXTRACTABLE IN
57
+ # THIS PASS. The decree's operative sections were read (§ 42, § 53 "A
58
+ # rendszámtábla és a regisztrációs matrica", §§ 58-59 the individually chosen
59
+ # and individually produced plate, §§ 60-62 the special plate, §§ 63 and 63/A
60
+ # the temporary plate) and they DELEGATE the detail to numbered mellékletek.
61
+ # Both njt.jog.gov.hu and net.jogtar.hu render the decree's body but truncate
62
+ # before the annexes at the sizes this pass could retrieve, and the Magyar
63
+ # Közlöny PDF archive at kozlonyok.hu answers with a certificate that does not
64
+ # cover its own hostname. That is a RECORDED DEAD END, listed in
65
+ # `dead_ends` below with every URL tried, and it is why every colour and every
66
+ # millimetre in this file is `secondary-wikipedia` and every hex is
67
+ # `hex_basis: observed`. Nothing here is dressed as a spec claim.
68
+ #
69
+ # 4. THE VOWEL/CONSONANT RULE IS REAL, DISTINCTIVE, AND DELIBERATELY NOT
70
+ # ENCODED AS A REGEX. The 2022 series' first letter pair must be two vowels
71
+ # or two consonants, and the Hungarian digraphs CS, GY, TY, LY, NY, SZ, ZS
72
+ # are barred. To turn that into a `regex_strict` this file would have to
73
+ # decide which Latin letters count as vowels for the purpose (is Y a vowel
74
+ # here? is I issued at all, given that I, O and Q are avoided elsewhere in
75
+ # the system?), and the source states the rule without stating the letter
76
+ # sets. Inventing them would be precisely the confident guess PRD-PLATES
77
+ # forbids, so the rule is recorded verbatim in `format.charset` and NO
78
+ # `regex_strict` is shipped for the standard series. The gap is named in
79
+ # `verifier_targets`.
80
+ jurisdiction: hu
81
+ authority:
82
+ name: Belügyminisztérium — közúti közlekedési igazgatási hatóság (326/2011. (XII. 28.) Korm. rendelet)
83
+ url: "https://njt.jog.gov.hu/jogszabaly/2011-326-20-22"
84
+ binding: vehicle
85
+ binding_note: >-
86
+ VEHICLE-bound. § 42 (7) of 326/2011. (XII. 28.) Korm. rendelet, verbatim: "A
87
+ jármű forgalomba helyezése nyilvántartásba vétellel, a forgalmi engedély, a
88
+ rendszámtábla ... kiadásával valósul meg" — the plate is issued as part of
89
+ putting THE VEHICLE into service, so vehicle-keyed consumers may join on it.
90
+ Note the one qualification the same decree creates: §§ 58-59 govern the
91
+ "egyénileg kiválasztott" (individually chosen) and "egyedileg előállított"
92
+ (individually produced) plate, which is a right of the applicant rather than
93
+ of the vehicle; whether that right survives a change of vehicle was NOT
94
+ established in this pass and is a recorded gap.
95
+ instrument:
96
+ citation: "326/2011. (XII. 28.) Korm. rendelet a közúti közlekedési igazgatási feladatokról, a közúti közlekedési okmányok kiadásáról és visszavonásáról"
97
+ kihirdetve: "2011-12-28"
98
+ structure_read: >-
99
+ § 42 (forgalomba helyezés), § 53 (A rendszámtábla és a regisztrációs
100
+ matrica), §§ 58-59 (az egyénileg kiválasztott és az egyedileg előállított
101
+ rendszámtábla), §§ 60-62 (A különleges rendszámtábla), § 63 and § 63/A (Az
102
+ ideiglenes rendszámtábla), plus § 1/C which names the Központi Kormányablak
103
+ as exclusively competent for the "I" betűjelű ideiglenes rendszámtábla.
104
+ Every one of these sections delegates its detail to a melléklet.
105
+ amendment_that_changed_the_format:
106
+ citation: "303/2021. (VI. 1.) Korm. rendelet a közúti közlekedési igazgatási feladatokról, a közúti közlekedési okmányok kiadásáról és visszavonásáról szóló 326/2011. (XII. 28.) Korm. rendelet módosításáról"
107
+ kihirdetve: "2021-06-01"
108
+ hatalyba_lepes: "2022-07-01"
109
+ verbatim: "Ez a rendelet 2022. július 1-jén lép hatályba."
110
+ note: >-
111
+ THE INSTRUMENT-DATE RULE IN ONE LINE. Made 2021-06-01, in force
112
+ 2022-07-01. The series date is the second one. Any dataset that shipped
113
+ "2021" for the four-letter Hungarian plate took the instrument's own date
114
+ for the series period and is wrong by thirteen months.
115
+ source: "https://njt.jog.gov.hu/jogszabaly/2021-303-20-22 # 303/2021. (VI. 1.) Korm. rendelet — title and commencement provision read on the Nemzeti Jogszabálytár, accessed 2026-08-02"
116
+ source: "https://njt.jog.gov.hu/jogszabaly/2011-326-20-22 # 326/2011. (XII. 28.) Korm. rendelet, consolidated text on the Nemzeti Jogszabálytár, accessed 2026-08-02; corroborated against https://net.jogtar.hu/jogszabaly?docid=a1100326.kor"
117
+
118
+ # ---------------------------------------------------------------------------
119
+ # Jurisdiction-wide facts, cited once and referenced per series.
120
+ # ---------------------------------------------------------------------------
121
+ common:
122
+ region_encoding:
123
+ finding: none
124
+ evidence_tier: secondary-wikipedia
125
+ statement: >-
126
+ NO HUNGARIAN SERIES IN THIS FILE ENCODES GEOGRAPHY, AND NO hu-* DECODE
127
+ TABLE IS AUTHORED. Letter blocks in both the 1990 and the 2022 systems are
128
+ allocated nationally by use-class, not by county; a proposal to introduce
129
+ a geographic marker was raised in 2012 and abandoned. This mirrors the
130
+ Finnish outcome (plates/fi.yml) and is a sourced NEGATIVE: "no decode
131
+ table" is the correct deliverable for Hungary, not a missing one.
132
+ consumer_rule: >-
133
+ A parse API must not return a Hungarian county, city or region from a
134
+ Hungarian serial of any post-1958 series. There is no information there to
135
+ return.
136
+ source: "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Hungary # the current system has no geographic linkage; the 2012 geographic-marker proposal was discarded. Accessed 2026-08-02"
137
+ historic_regional_systems:
138
+ evidence_tier: secondary-wikipedia
139
+ finding: >-
140
+ Region WAS encoded before 1958, and is recorded here as context rather than
141
+ as data. From 1910 a district letter preceded the number (B for the
142
+ Budapest area, D for Debrecen, and so on across fifteen districts), with
143
+ the year of issue added from 1922; two-letter/three-number and
144
+ one-letter/four-number arrangements followed through the 1930s and 1940s.
145
+ NO PRIMARY listing the district letters was reached in this pass, so
146
+ neither a series nor a decode table is authored for the pre-1958 world.
147
+ The instruments NAMED by the secondary as governing those systems, offered
148
+ here as locators for a later pass and not as citations for any claim, are
149
+ 57.000/1910. számú belügyminisztériumi rendelet and 5397/1920. számú
150
+ ME-rendelet.
151
+ source: "https://hu.wikipedia.org/wiki/Magyarorsz%C3%A1gi_forgalmi_rendsz%C3%A1mok # pre-1958 formats and the two decrees named as their basis. Accessed 2026-08-02"
152
+ alphabet:
153
+ evidence_tier: secondary-wikipedia
154
+ letters_avoided: [I, O, Q]
155
+ statement: >-
156
+ The letter O is not issued (confusable with the digit 0), and I, O and Q
157
+ are avoided in the standard series. The secondary states the avoidance
158
+ without stating the positions it binds, and states separately that I, O and
159
+ Q may not be the FINAL character of a standard serial — two rules that do
160
+ not obviously compose. Neither is written into any regex in this file.
161
+ vowel_consonant_rule_2022:
162
+ verbatim: "Az első két betű vagy két magánhangzó vagy két mássalhangzó kell legyen, de a CS, GY, TY, LY, NY, SZ, ZS betűkombinációk nem használhatók."
163
+ translation: >-
164
+ The first two letters must be either two vowels or two consonants, and
165
+ the digraph combinations CS, GY, TY, LY, NY, SZ and ZS may not be used.
166
+ not_encoded_because: >-
167
+ The source gives the RULE but not the LETTER SETS. Encoding it would
168
+ require this file to decide, unsourced, which Latin letters count as
169
+ vowels for the purpose and whether I is issued at all. See header fact 4.
170
+ source: "https://hu.wikipedia.org/wiki/Magyarorsz%C3%A1gi_forgalmi_rendsz%C3%A1mok # the vowel/consonant and digraph rule, verbatim. Accessed 2026-08-02"
171
+ design_defaults:
172
+ evidence_tier: secondary-wikipedia
173
+ plate_mm: { w: 520, h: 110 }
174
+ colours_note: >-
175
+ Hungary's statutory colour and dimension specification lives in the
176
+ mellékletek of 326/2011, which this pass could not retrieve (see
177
+ `dead_ends`). Every colour in this file is therefore an OBSERVED rendering
178
+ of a NAMED colour reported by a secondary — never a spec claim, never a
179
+ cited chromaticity gamut. Contrast plates/at.yml, whose CIE quadrangles
180
+ come out of KDV Anlage 5e, and plates/es.yml, whose gamut constraint is in
181
+ Anexo XVIII. Hungary has neither in this file, and says so.
182
+ standard_colours: "black characters on a white retroreflective ground, front and rear"
183
+ source: "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Hungary # 520 x 110 mm; black on white. Accessed 2026-08-02"
184
+ euro_band:
185
+ side: left
186
+ content: eu-stars+H
187
+ evidence_tier: secondary-wikipedia
188
+ from: "2004-05-01"
189
+ note: >-
190
+ The EU band arrived with accession. The secondary dates the first
191
+ EU-format Hungarian plate to 1 May 2004 and names its serial as JDA-001 —
192
+ a first-issue claim, tagged `secondary-first-issue` on the series, not an
193
+ instrument claim. No Hungarian instrument prescribing the band's geometry
194
+ was reached; the only hard Euroband geometry secured anywhere in this
195
+ programme remains German (FZV Anlage 4).
196
+ source: "https://hu.wikipedia.org/wiki/Magyarorsz%C3%A1gi_forgalmi_rendsz%C3%A1mok # EU-format plates from 2004-05-01, first serial JDA-001. Accessed 2026-08-02"
197
+ coat_of_arms_2022:
198
+ evidence_tier: secondary-wikipedia
199
+ present: true
200
+ note: >-
201
+ The 2022 plate added the Hungarian coat of arms, and the secondary places
202
+ it in the gap between the two letter pairs. If that placement is right,
203
+ Hungary joins Italy (the marchio ufficiale) and Austria (the Landeswappen)
204
+ in the class of jurisdictions whose printed "separator" is in fact an
205
+ EMBLEM occupying the gap — see PRD-PLATES §2.6 and the never_separator
206
+ note in _meta/separators.yml. The dataset accordingly writes that gap as
207
+ the emitted SPACE and carries the emblem in `design.emblem`; no glyph is
208
+ ever inside a Hungarian serial. THE PLACEMENT ITSELF IS SECONDARY and is a
209
+ named verifier target — if the arms in fact sit at the plate edge, the
210
+ pattern is unaffected but `design.emblem.position` is wrong.
211
+ licensing: >-
212
+ The coat of arms of Hungary is a state symbol whose use is regulated
213
+ independently of copyright. PRD-PLATES §3 placeholder rule applies:
214
+ renders carry `emblem: {present: true, rendered: placeholder}`.
215
+ source: "https://hu.wikipedia.org/wiki/Magyarorsz%C3%A1gi_forgalmi_rendsz%C3%A1mok # the coat of arms was added with the 2022 format. Accessed 2026-08-02"
216
+ personalisation:
217
+ statutory_basis: >-
218
+ PRIMARY. §§ 58-59 of 326/2011. (XII. 28.) Korm. rendelet govern "az
219
+ egyénileg kiválasztott és az egyedileg előállított rendszámtábla" — the
220
+ individually CHOSEN plate (a serial picked out of the ordinary grammar)
221
+ and the individually PRODUCED plate (a serial made to order). Two distinct
222
+ products, both inside the official frame, hence PRD-PLATES §2.3 sub-entry
223
+ treatment rather than a series of their own. The fee, the eligibility and
224
+ the grammar each product must obey are in the mellékletek and were not
225
+ retrieved.
226
+ source: "https://njt.jog.gov.hu/jogszabaly/2011-326-20-22 # §§ 58-59 headings and scope, Nemzeti Jogszabálytár, accessed 2026-08-02"
227
+
228
+ # ---------------------------------------------------------------------------
229
+ # Dead ends — recorded so the next pass does not repeat them (PRD-PLATES §5.3).
230
+ # ---------------------------------------------------------------------------
231
+ dead_ends:
232
+ - what: "The mellékletek (annexes) of 326/2011 — the plate-type table, colours, dimensions and the serial grammar."
233
+ tried:
234
+ - "https://njt.jog.gov.hu/jogszabaly/2011-326-20-22 # renders the body; the retrieval truncated inside Chapter IV, before any melléklet"
235
+ - "https://net.jogtar.hu/jogszabaly?docid=a1100326.kor # same document, same truncation; §§ 1/C and 42(7) were readable and are quoted above"
236
+ - "https://njt.hu/jogszabaly/2011-326-20-22 # socket hang up"
237
+ - "https://net.jogtar.hu/jogszabaly?docid=a2100303.kor # HTTP 404"
238
+ outcome: "NOT RETRIEVED. Every colour, dimension and plate-type row below is secondary-wikipedia in consequence."
239
+ - what: "The Magyar Közlöny issue of 2021-06-01 carrying 303/2021. (VI. 1.) Korm. rendelet in full, which would contain the new melléklet text."
240
+ tried:
241
+ - "https://www.kozlonyok.hu/nkonline/MKPDF/hiteles/MK21102.pdf # TLS failure: the certificate presented covers *.mhk.hu and does not include kozlonyok.hu"
242
+ - "https://kozlonyok.hu/nkonline/MKPDF/hiteles/MK21102.pdf # same certificate failure"
243
+ - "https://www.mhk.hu/nkonline/MKPDF/hiteles/MK21102.pdf # socket closed"
244
+ outcome: "NOT RETRIEVED. The commencement sentence was obtained from the Nemzeti Jogszabálytár instead, which is sufficient for the date but not for the annex text."
245
+ - what: "The 1990 instrument that started the ABC-123 series, and 1/1958. BM. és KPM. együttes rendelet."
246
+ tried: ["the two consolidated-law databases above carry only law still in force; neither pre-2011 instrument was located"]
247
+ outcome: "NOT RETRIEVED. The 1958 decree is cited below as a NAMED LOCATOR only (`secondary-locator-unverified`); no 1990 instrument is named at all, and the 1990 series is dated by a reported first issue."
248
+
249
+ verifier_targets:
250
+ - "The mellékletek of 326/2011 — every colour, dimension and plate-type row in this file is waiting on them."
251
+ - "Which Latin letters the vowel/consonant rule treats as vowels, and whether I is issued in the 2022 series at all (header fact 4)."
252
+ - "The position of the coat of arms on the 2022 plate (between the letter pairs, or at the edge)."
253
+ - "Whether ABC-123 plates continued to be issued from stock after 2022-07-01; this file assumes a clean cutover and says so in hu-standard-2004."
254
+ - "The instrument that started the 1990 ABC-123 series. None was located."
255
+
256
+ series:
257
+
258
+ # =========================================================================
259
+ # THE CURRENT STANDARD SERIES — four letters, three digits, from 2022-07-01.
260
+ # =========================================================================
261
+ - id: hu-standard-2022
262
+ class: standard
263
+ categories: [car, van, truck, bus]
264
+ period: { start: 2022 }
265
+ period_evidence: enacted-commencement
266
+ period_commencement: "2022-07-01"
267
+ period_commencement_verbatim: "Ez a rendelet 2022. július 1-jén lép hatályba."
268
+ matching: strict
269
+ format:
270
+ pattern: "LL LL-999"
271
+ regex: '\A[A-Z]{2} ?[A-Z]{2}-?\d{3}\z'
272
+ charset:
273
+ evidence_tier: secondary-wikipedia
274
+ rule_verbatim: "Az első két betű vagy két magánhangzó vagy két mássalhangzó kell legyen, de a CS, GY, TY, LY, NY, SZ, ZS betűkombinációk nem használhatók."
275
+ letters_avoided: [I, O, Q]
276
+ notes: >-
277
+ NOT ENCODED AS A REGEX, DELIBERATELY. The rule above is the sourced
278
+ text; the letter sets it presupposes (which letters are vowels; whether
279
+ I is issued) are not sourced, so no `regex_strict` is shipped. See the
280
+ file header, fact 4. A consumer that needs the tightening must wait for
281
+ the melléklet.
282
+ separator_note: >-
283
+ The gap between the two letter pairs is reported to be occupied by the
284
+ Hungarian coat of arms, not by a separator glyph; the hyphen before the
285
+ digits is printed. Both are written per PRD-PLATES §2.6: the emblem gap
286
+ as an optional emitted SPACE, the printed hyphen as an optional emitted
287
+ HYPHEN-MINUS. `pattern` shows the canonical printed form.
288
+ progression: >-
289
+ Not established. No block-allocation order for the four-letter space was
290
+ sourced, so a 2022-series Hungarian plate cannot be dated from its serial
291
+ by anything in this file. Recorded gap.
292
+ design:
293
+ plate: { w: 520, h: 110, unit: mm }
294
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
295
+ foreground: "#000000"
296
+ band: { side: left, color: "#003399", content: eu-stars+H, hex_basis: observed, stars_color: "#FFCC00" }
297
+ emblem: { present: true, rendered: placeholder, position: "between the two letter pairs", position_evidence: secondary-wikipedia, note: "the Hungarian coat of arms, added with the 2022 format" }
298
+ rear_differs: false
299
+ evidence_tier: secondary-wikipedia
300
+ region_encoding: none
301
+ region_encoding_mechanism: >-
302
+ NONE. See common.region_encoding — Hungary encodes no geography and this
303
+ dataset ships no hu-* decode table.
304
+ variants:
305
+ - class: personalized
306
+ format: { pattern: "LL LL-999", regex: '\A[A-Z]{2} ?[A-Z]{2}-?\d{3}\z' }
307
+ note: >-
308
+ EGYÉNILEG KIVÁLASZTOTT / EGYEDILEG ELŐÁLLÍTOTT RENDSZÁMTÁBLA — §§ 58-59
309
+ of 326/2011 create two distinct personalisation products: a plate whose
310
+ serial the applicant CHOOSES out of the ordinary grammar, and a plate
311
+ individually PRODUCED to order. A sub-entry rather than a series
312
+ (PRD-PLATES §2.3) because neither is reported to change the format or
313
+ the design. Which of the two may depart from the ordinary grammar, and
314
+ how far, is in the mellékletek and is a recorded gap.
315
+ sources:
316
+ - "https://njt.jog.gov.hu/jogszabaly/2011-326-20-22 # §§ 58-59, 'Az egyénileg kiválasztott és az egyedileg előállított rendszámtábla' — section scope read on the Nemzeti Jogszabálytár, accessed 2026-08-02"
317
+ sources:
318
+ - "https://njt.jog.gov.hu/jogszabaly/2021-303-20-22 # 303/2021. (VI. 1.) Korm. rendelet — the amending instrument and its commencement, 'Ez a rendelet 2022. július 1-jén lép hatályba.' PERIOD CLAIM"
319
+ - "https://njt.jog.gov.hu/jogszabaly/2011-326-20-22 # 326/2011. (XII. 28.) Korm. rendelet as amended — the governing decree; § 53 'A rendszámtábla és a regisztrációs matrica'; §§ 58-59 personalisation"
320
+ - "https://hu.wikipedia.org/wiki/Magyarorsz%C3%A1gi_forgalmi_rendsz%C3%A1mok # secondary-wikipedia: FORMAT (AA AA-999, two letter pairs then three digits), the vowel/consonant and digraph rule verbatim, the coat of arms. Accessed 2026-08-02"
321
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Hungary # secondary-wikipedia: COLOURS (black on white) and DIMENSIONS (520 x 110 mm); no geographic encoding. Accessed 2026-08-02"
322
+ notes: >-
323
+ THE CURRENT HUNGARIAN PLATE, AND THE FILE'S ONE HARD DATE. In force from 1
324
+ July 2022 by the express commencement provision of 303/2021. (VI. 1.) Korm.
325
+ rendelet, which is itself dated 1 June 2021 — thirteen months earlier. The
326
+ period recorded here is the commencement, never the instrument's own date.
327
+ The seventh character was added because the six-character space was running
328
+ out, not because anything geographic was introduced: the 2022 plate is as
329
+ regionally silent as the 1990 one. Format, colours and dimensions are
330
+ secondary-wikipedia and are tagged as such per claim in `sources`; only the
331
+ DATE and the personalisation sections are primary.
332
+
333
+ # =========================================================================
334
+ # ONE SERIES BACK — three letters, three digits, with the EU band.
335
+ # =========================================================================
336
+ - id: hu-standard-2004
337
+ class: standard
338
+ categories: [car, van, truck, bus]
339
+ period: { start: 2004, end: 2022 }
340
+ period_evidence: secondary-first-issue
341
+ period_end_evidence: enacted-commencement
342
+ period_note: >-
343
+ START is a reported FIRST ISSUE, not an instrument: the secondary dates the
344
+ first EU-format Hungarian plate to 1 May 2004 — accession day — and names
345
+ its serial JDA-001. END is instrument-dated: issuance of the six-character
346
+ format stopped when 303/2021's commencement took effect on 2022-07-01.
347
+ Whether county government offices issued ABC-123 plates from remaining
348
+ stock after that day was NOT established and is a named verifier target;
349
+ if they did, this series' end moves and the two standard series overlap in
350
+ fact as well as at the boundary year.
351
+ matching: strict
352
+ format:
353
+ pattern: "LLL-999"
354
+ regex: '\A[A-Z]{3}-?\d{3}\z'
355
+ charset:
356
+ evidence_tier: secondary-wikipedia
357
+ letters_avoided: [I, O, Q]
358
+ notes: >-
359
+ O is reported never to be issued (confusable with 0), and I, O and Q
360
+ are reported not to occur as the final character. Not encoded, for the
361
+ same reason as the 2022 series: the rules as reported do not compose
362
+ into a single sourced alphabet.
363
+ blocks_reserved:
364
+ - { block: "EAA-EDZ", use: taxi, evidence_tier: secondary-wikipedia }
365
+ - { block: "FIA-FZZ", use: "commercial goods vehicles", evidence_tier: secondary-wikipedia }
366
+ - { block: "X**", use: "trailers, until the block was exhausted in 2014", evidence_tier: secondary-wikipedia }
367
+ - { block: "W**", use: "trailers, from 2014 until 2022", evidence_tier: secondary-wikipedia }
368
+ progression: >-
369
+ Sequential by letter block, nationally, with blocks reserved by USE and
370
+ never by place (see `blocks_reserved`). The first EU-band plate is
371
+ reported as JDA-001, which is the only anchor this file has for dating a
372
+ 1990-system serial, and it is a single reported point rather than a
373
+ published allocation table.
374
+ design:
375
+ plate: { w: 520, h: 110, unit: mm }
376
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
377
+ foreground: "#000000"
378
+ band: { side: left, color: "#003399", content: eu-stars+H, hex_basis: observed, stars_color: "#FFCC00" }
379
+ emblem: { present: false }
380
+ rear_differs: false
381
+ evidence_tier: secondary-wikipedia
382
+ region_encoding: none
383
+ sources:
384
+ - "https://hu.wikipedia.org/wiki/Magyarorsz%C3%A1gi_forgalmi_rendsz%C3%A1mok # secondary-wikipedia: EU-format plates from 2004-05-01, first serial JDA-001; the ABC-123 format. PERIOD START. Accessed 2026-08-02"
385
+ - "https://njt.jog.gov.hu/jogszabaly/2021-303-20-22 # 303/2021. (VI. 1.) Korm. rendelet, in force 2022-07-01 — PERIOD END, primary"
386
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Hungary # secondary-wikipedia: the reserved letter blocks (taxi EAA-EDZ, commercial FIA-FZZ, trailers X then W) and the colours. Accessed 2026-08-02"
387
+ notes: >-
388
+ THE EU-BAND SIX-CHARACTER PLATE — the format most Hungarian vehicles on the
389
+ road still carry. Distinct from hu-standard-1990 only in DESIGN (the band);
390
+ the serial grammar is character-for-character the same and the letter
391
+ sequence ran continuously across the 2004 boundary, so a JDA-001-or-later
392
+ serial implies the band while an earlier one does not. Distinct from
393
+ hu-standard-2022 in FORMAT. Existing plates were not recalled at either
394
+ boundary: both older designs remain valid on the road, which is why this
395
+ file models three overlapping-at-the-edges standard series rather than one.
396
+
397
+ - id: hu-standard-1990
398
+ class: standard
399
+ categories: [car, van, truck, bus]
400
+ period: { start: 1990, end: 2004 }
401
+ period_evidence: secondary-first-issue
402
+ period_note: >-
403
+ START: the secondary reports issuance beginning in August 1990 with AAB-001
404
+ as the first plate. No instrument introducing the series was located — a
405
+ recorded gap, and the reason this is `secondary-first-issue` rather than
406
+ `enacted-commencement`. END is the EU band's arrival on 2004-05-01, which is
407
+ a design change and not a format change.
408
+ matching: strict
409
+ format:
410
+ pattern: "LLL-999"
411
+ regex: '\A[A-Z]{3}-?\d{3}\z'
412
+ charset:
413
+ evidence_tier: secondary-wikipedia
414
+ letters_avoided: [I, O, Q]
415
+ notes: "as hu-standard-2004 — the same grammar and the same reported letter avoidances; the 2004 change touched only the design."
416
+ design:
417
+ plate: { w: 520, h: 110, unit: mm }
418
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
419
+ foreground: "#000000"
420
+ band: { side: none }
421
+ band_note: "No EU band before 2004-05-01; the left field carried no blue zone."
422
+ emblem: { present: false }
423
+ rear_differs: false
424
+ evidence_tier: secondary-wikipedia
425
+ region_encoding: none
426
+ sources:
427
+ - "https://hu.wikipedia.org/wiki/Magyarorsz%C3%A1gi_forgalmi_rendsz%C3%A1mok # secondary-wikipedia, verbatim: 'A sorozat kibocsátása 1990 augusztusában kezdődött meg, hivatalosan az első ilyen rendszám az AAB-001-es volt.' PERIOD START + FORMAT. Accessed 2026-08-02"
428
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Hungary # secondary-wikipedia: the 1990-2022 three-letter/three-number system and its colours. Accessed 2026-08-02"
429
+ notes: >-
430
+ THE POST-COMMUNIST REFORM PLATE. Hungary changed system as the old order
431
+ ended: the two-letter/four-digit plate of 1958 gave way in August 1990 to
432
+ ABC-123, and the change dropped the commercial/private colour inversion
433
+ that had been the visual signature of the previous system. This entry
434
+ exists as its own series rather than as a design note on hu-standard-2004
435
+ because the EU band is a design difference of exactly the kind PRD-PLATES
436
+ §2.3 makes a series boundary — the same cut plates/it.yml makes at 1999.
437
+
438
+ # =========================================================================
439
+ # THE PRE-1990 SYSTEM — the real "one system back".
440
+ # =========================================================================
441
+ - id: hu-standard-1958
442
+ class: standard
443
+ categories: [car, van, truck, bus, motorcycle]
444
+ period: { start: 1958, end: 1990 }
445
+ period_evidence: secondary-locator-unverified
446
+ period_note: >-
447
+ The secondary dates the six-character two-letter/four-digit plate to autumn
448
+ 1958 and NAMES its legal basis as "1/1958. BM. és KPM. együttes rendelet" —
449
+ a joint decree of the Interior and Transport ministries. That instrument was
450
+ NOT retrieved (the Hungarian consolidated-law databases carry only law in
451
+ force), so the decree is recorded as a LOCATOR for a later pass and the
452
+ period claim rests on the secondary alone. Hence
453
+ `secondary-locator-unverified` and not `enacted-commencement`.
454
+ matching: recall-only
455
+ format:
456
+ pattern: "LL 99-99"
457
+ regex: '\A[A-Z]{2} ?\d{2}-?\d{2}\z'
458
+ pattern_note: >-
459
+ RECALL-ONLY, and the reason is the SEPARATORS rather than the characters.
460
+ The character shape — two letters then four digits — is consistently
461
+ reported, but the printed grouping is rendered in the enthusiast web with
462
+ a middle dot ("AB·12·34"), which is not a character this dataset emits
463
+ (_meta/separators.yml: emitted separators are HYPHEN-MINUS and SPACE
464
+ only, and the middle dot is in the FORGIVING set, so a lenient consumer
465
+ deletes it and reaches the same serial either way). Because this file
466
+ cannot say from a primary whether the plate printed one gap or two, or
467
+ which glyph occupied them, the regex accepts a range of arrangements and
468
+ a match is a shape hit, never a validity claim.
469
+ charset:
470
+ evidence_tier: secondary-wikipedia
471
+ notes: "No alphabet restriction was sourced for this era. Recorded gap."
472
+ design:
473
+ background: { color: "#FFFFFF", finish: painted, hex_basis: observed }
474
+ foreground: "#000000"
475
+ band: { side: none }
476
+ emblem: { present: false }
477
+ inversion:
478
+ evidence_tier: secondary-wikipedia
479
+ rule: >-
480
+ THE COLOUR CARRIED THE OWNERSHIP CLASS, and this is the one genuinely
481
+ distinctive design fact of the period: private vehicles ran black
482
+ characters on white, while commercial/state vehicles ran the inverse —
483
+ WHITE CHARACTERS ON BLACK. Same format, opposite colours, and the
484
+ inversion disappeared with the 1990 reform. Modelled here as a
485
+ documented colour inversion on one series rather than as two series,
486
+ because format and period are identical (PRD-PLATES §2.3).
487
+ inverse_background: "#000000"
488
+ inverse_foreground: "#FFFFFF"
489
+ evidence_tier: secondary-wikipedia
490
+ region_encoding: none
491
+ region_encoding_note: >-
492
+ The two letters of this series are NOT a district code. Region encoding in
493
+ Hungary ended with the pre-1958 systems (see common.historic_regional_
494
+ systems); no source consulted attributes geography to the 1958 letter pair,
495
+ and none is asserted.
496
+ sources:
497
+ - "https://hu.wikipedia.org/wiki/Magyarorsz%C3%A1gi_forgalmi_rendsz%C3%A1mok # secondary-wikipedia, verbatim: '1958 őszén vezették be a hatkarakteres rendszámokat, amelyek két betűből és négy számból álltak'; names 1/1958. BM. és KPM. együttes rendelet as the basis. PERIOD + FORMAT. Accessed 2026-08-02"
498
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Hungary # secondary-wikipedia: black on white for private vehicles, white on black for commercial ones, 1958-1990. COLOURS. Accessed 2026-08-02"
499
+ notes: >-
500
+ THE SOCIALIST-ERA PLATE. Two letters and four digits from autumn 1958 until
501
+ the August 1990 reform, with the private/commercial colour inversion
502
+ described above. This is the layer either side of which Hungary changed
503
+ political system, and it is the file's weakest-evidenced standard series:
504
+ the instrument is named but unread, and the printed separator is unknown.
505
+ Both facts are recorded rather than smoothed over, and the series is
506
+ `recall-only` in consequence.
507
+
508
+ # =========================================================================
509
+ # TAXI — the yellow plate, before and after the format change.
510
+ # =========================================================================
511
+ - id: hu-taxi-2022
512
+ class: taxi
513
+ categories: [car]
514
+ period: { start: 2022 }
515
+ period_evidence: enacted-commencement
516
+ period_commencement: "2022-07-01"
517
+ matching: strict
518
+ format:
519
+ pattern: "TX LL-999"
520
+ regex: '\ATX ?[A-Z]{2}-?\d{3}\z'
521
+ design:
522
+ plate: { w: 520, h: 110, unit: mm }
523
+ background: { color: "#FFCC00", finish: retroreflective, hex_basis: observed }
524
+ foreground: "#000000"
525
+ band: { side: left, color: "#003399", content: eu-stars+H, hex_basis: observed }
526
+ emblem: { present: true, rendered: placeholder }
527
+ evidence_tier: secondary-wikipedia
528
+ region_encoding: none
529
+ sources:
530
+ - "https://hu.wikipedia.org/wiki/Magyarorsz%C3%A1gi_forgalmi_rendsz%C3%A1mok # secondary-wikipedia: TX AA-999 on yellow for hired transport under the 2022 system. FORMAT + COLOUR. Accessed 2026-08-02"
531
+ - "https://njt.jog.gov.hu/jogszabaly/2021-303-20-22 # 303/2021. (VI. 1.) Korm. rendelet, in force 2022-07-01 — the date the 2022 system began. PERIOD"
532
+ notes: >-
533
+ THE 2022 TAXI PLATE. Hungary moved taxis from a reserved letter BLOCK
534
+ inside the ordinary series to a dedicated TX prefix when the format changed
535
+ — a structural simplification: under the 1990 system a taxi was identified
536
+ by where its serial fell in the national sequence, and under the 2022
537
+ system it is identified by two literal characters. The yellow ground
538
+ survived the change.
539
+
540
+ - id: hu-taxi-1990
541
+ class: taxi
542
+ categories: [car]
543
+ period: { start: 1990, end: 2022 }
544
+ period_evidence: corroboration-only
545
+ period_note: >-
546
+ The EAA-EDZ block is reported without a first-issue date. The start recorded
547
+ here is the start of the SYSTEM the block sits inside (August 1990), not a
548
+ sourced first issue for taxis, and the end is the 2022-07-01 commencement.
549
+ `corroboration-only` marks exactly that: the block is corroborated, its own
550
+ dates are not.
551
+ matching: strict
552
+ format:
553
+ pattern: "ELL-999"
554
+ regex: '\AE[A-Z]{2}-?\d{3}\z'
555
+ regex_strict: '\AE[A-D][A-Z]-?\d{3}\z'
556
+ charset:
557
+ evidence_tier: secondary-wikipedia
558
+ notes: >-
559
+ The sourced fact is the BLOCK, EAA to EDZ — first letter E, second
560
+ letter A to D. `regex` carries the round-trippable form (E plus two
561
+ letters), `regex_strict` carries the sourced block bound. The tier
562
+ order regex_strict subset regex holds by construction.
563
+ design:
564
+ plate: { w: 520, h: 110, unit: mm }
565
+ background: { color: "#FFCC00", finish: retroreflective, hex_basis: observed }
566
+ foreground: "#000000"
567
+ band: { side: left, color: "#003399", content: eu-stars+H, hex_basis: observed, note: "from 2004-05-01 only; earlier taxi plates of this block carried no band" }
568
+ evidence_tier: secondary-wikipedia
569
+ region_encoding: none
570
+ sources:
571
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Hungary # secondary-wikipedia: taxis allocated the EAA-EDZ block on yellow. FORMAT + COLOUR + BLOCK. Accessed 2026-08-02"
572
+ - "https://hu.wikipedia.org/wiki/Magyarorsz%C3%A1gi_forgalmi_rendsz%C3%A1mok # secondary-wikipedia: the 1990 system's dates, which bound this series. Accessed 2026-08-02"
573
+ notes: >-
574
+ THE BLOCK-ALLOCATED TAXI PLATE. Under the 1990 system a Hungarian taxi
575
+ carried an ordinary six-character serial drawn from a reserved range, on a
576
+ yellow ground — so the FORMAT is the standard one and only the block and
577
+ the colour distinguish it. It is a series rather than a sub-entry because
578
+ the design differs (PRD-PLATES §2.3). Its dates are the system's, not its
579
+ own; see period_note.
580
+
581
+ # =========================================================================
582
+ # ELECTRIC — the green plate, spanning the format change.
583
+ # =========================================================================
584
+ - id: hu-electric-2015
585
+ class: electric
586
+ categories: [car, van, truck, bus]
587
+ period: { start: 2015, end: 2022 }
588
+ period_evidence: secondary-dated
589
+ period_note: "The secondary dates the green plate to October 2015; the end is the 2022-07-01 format change, after which the same class continues on the four-letter grammar (hu-electric-2022)."
590
+ matching: recall-only
591
+ format:
592
+ pattern: "LLL-999"
593
+ regex: '\A[A-Z]{3}-?\d{3}\z'
594
+ pattern_note: >-
595
+ RECALL-ONLY. The green plate is reported as a COLOUR treatment of the
596
+ ordinary six-character serial, with no reserved letter block sourced, so
597
+ this regex is the whole 1990-system serial space and a match says only
598
+ "this has the shape of a 1990-system Hungarian plate" — never "this is a
599
+ green plate". A parse API must take the colour from the image, not from
600
+ the string.
601
+ design:
602
+ plate: { w: 520, h: 110, unit: mm }
603
+ background: { color: "#B5E3B5", finish: retroreflective, hex_basis: observed, note: "reported as a pale green ground; no spec value was reached, so the hex is an observed rendering of a named colour" }
604
+ foreground: "#000000"
605
+ band: { side: left, color: "#003399", content: eu-stars+H, hex_basis: observed }
606
+ evidence_tier: secondary-wikipedia
607
+ region_encoding: none
608
+ sources:
609
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Hungary # secondary-wikipedia: green plates for electric and plug-in hybrid vehicles since October 2015. PERIOD START. Accessed 2026-08-02"
610
+ - "https://hu.wikipedia.org/wiki/Magyarorsz%C3%A1gi_forgalmi_rendsz%C3%A1mok # secondary-wikipedia: the pale-green 'eco' plate. COLOUR. Accessed 2026-08-02"
611
+ notes: >-
612
+ HUNGARY'S GREEN PLATE, FIRST GENERATION. Introduced in October 2015 for
613
+ pure-electric and plug-in hybrid vehicles, as a coloured ground on the
614
+ ordinary serial rather than as a distinct serial space. Hungary is
615
+ therefore unlike China (a distinct format for NEVs) and like Austria
616
+ (green LETTERING on the ordinary plate, KFG § 49 Abs. 4 Z 5) in kind,
617
+ though the Austrian rule is instrument-sourced and this one is not.
618
+
619
+ - id: hu-electric-2022
620
+ class: electric
621
+ categories: [car, van, truck, bus]
622
+ period: { start: 2022 }
623
+ period_evidence: enacted-commencement
624
+ period_commencement: "2022-07-01"
625
+ matching: recall-only
626
+ format:
627
+ pattern: "LL LL-999"
628
+ regex: '\A[A-Z]{2} ?[A-Z]{2}-?\d{3}\z'
629
+ pattern_note: "recall-only for the same reason as hu-electric-2015: the green ground carries no reserved block that this pass could source, so the regex is the whole 2022 serial space."
630
+ design:
631
+ plate: { w: 520, h: 110, unit: mm }
632
+ background: { color: "#B5E3B5", finish: retroreflective, hex_basis: observed }
633
+ foreground: "#000000"
634
+ band: { side: left, color: "#003399", content: eu-stars+H, hex_basis: observed }
635
+ emblem: { present: true, rendered: placeholder }
636
+ evidence_tier: secondary-wikipedia
637
+ region_encoding: none
638
+ sources:
639
+ - "https://hu.wikipedia.org/wiki/Magyarorsz%C3%A1gi_forgalmi_rendsz%C3%A1mok # secondary-wikipedia: the eco plate on the 2022 four-letter grammar, pale green. FORMAT + COLOUR. Accessed 2026-08-02"
640
+ - "https://njt.jog.gov.hu/jogszabaly/2021-303-20-22 # 303/2021. (VI. 1.) Korm. rendelet, in force 2022-07-01. PERIOD"
641
+ notes: >-
642
+ THE GREEN PLATE AFTER THE FORMAT CHANGE — the same environmental class on
643
+ the seven-character grammar. Modelled as its own series rather than as a
644
+ period extension because the FORMAT differs from hu-electric-2015, which is
645
+ the PRD-PLATES §2.3 boundary; the two are otherwise the same programme and
646
+ that continuity is the reason both carry the same class.
647
+
648
+ # =========================================================================
649
+ # DIPLOMATIC — the one Hungarian series with a decode that is NOT geographic.
650
+ # =========================================================================
651
+ - id: hu-diplomatic-2017
652
+ class: diplomatic
653
+ categories: [car, van]
654
+ period: { start: 2017 }
655
+ period_evidence: secondary-dated
656
+ period_note: >-
657
+ The secondary dates the DT and CK series' expiry to 2017 and describes the
658
+ CD six-digit series as the current one, which places the CD series' start at
659
+ that changeover. No instrument was reached. The 2022 format change did NOT
660
+ touch this series as far as any source consulted says — the diplomatic plate
661
+ is numeric and was never part of the letter-space exhaustion that drove the
662
+ 2022 reform.
663
+ matching: strict
664
+ format:
665
+ pattern: "CD 999-999"
666
+ regex: '\ACD ?\d{3}-?\d{3}\z'
667
+ progression:
668
+ evidence_tier: secondary-wikipedia
669
+ note: >-
670
+ THE FIRST THREE DIGITS ARE A COUNTRY CODE and the last three are a rank
671
+ or sequence within the mission — a genuine decode, but a MISSION decode
672
+ rather than a geographic one, so it does not disturb this file's
673
+ no-decode-table finding. Two reported points: 001 is the Holy See and
674
+ 020 the United States. The full mission-to-code mapping was NOT sourced
675
+ and is NOT authored here; PRD-PLATES puts diplomatic decode tables at
676
+ gate L4, and plates/fi.yml made the same call for the Finnish table.
677
+ design:
678
+ plate: { w: 520, h: 110, unit: mm }
679
+ background: { color: "#4A90D9", finish: retroreflective, hex_basis: observed, note: "reported as a light blue ground; no spec value reached" }
680
+ foreground: "#FFFFFF"
681
+ band: { side: left, color: "#003399", content: eu-stars+H, hex_basis: observed }
682
+ evidence_tier: secondary-wikipedia
683
+ region_encoding: none
684
+ sources:
685
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Hungary # secondary-wikipedia: CD plus six digits on light blue, first three digits a country code (001 Holy See, 020 United States); DT and CK expired 2017. FORMAT + COLOUR + PERIOD. Accessed 2026-08-02"
686
+ - "https://hu.wikipedia.org/wiki/Magyarorsz%C3%A1gi_forgalmi_rendsz%C3%A1mok # secondary-wikipedia: CD 999-999 on blue. Accessed 2026-08-02"
687
+ notes: >-
688
+ THE CURRENT DIPLOMATIC PLATE. Six digits behind a CD prefix, on a light blue
689
+ ground, with the leading triple naming the sending state. Note what this
690
+ series is NOT: it is not evidence that Hungary encodes region. The only
691
+ Hungarian decode of any kind in this file is a decode of FOREIGN MISSIONS,
692
+ and even that is described rather than tabulated, because the mapping was
693
+ not sourced.
694
+
695
+ - id: hu-diplomatic-1990
696
+ class: diplomatic
697
+ categories: [car, van]
698
+ period: { start: 1990, end: 2017 }
699
+ period_evidence: secondary-dated
700
+ period_note: "The secondary gives this series as 1990-2017, expiring when the CD six-digit series took over."
701
+ matching: strict
702
+ format:
703
+ pattern: "DT-9999"
704
+ regex: '\ADT-?\d{4}\z'
705
+ design:
706
+ plate: { w: 520, h: 110, unit: mm }
707
+ background: { color: "#003087", finish: retroreflective, hex_basis: observed, note: "reported as a dark blue ground" }
708
+ foreground: "#FFFFFF"
709
+ band: { side: left, color: "#003399", content: eu-stars+H, hex_basis: observed, note: "from 2004-05-01 only" }
710
+ evidence_tier: secondary-wikipedia
711
+ region_encoding: none
712
+ sources:
713
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Hungary # secondary-wikipedia: DT plus four digits on dark blue, 1990-2017, for personnel holding immunity. FORMAT + COLOUR + PERIOD. Accessed 2026-08-02"
714
+ notes: >-
715
+ THE DT SERIES — dark blue, four digits, issued to immunity-holding
716
+ personnel from the 1990 reform until 2017. A companion series in the same
717
+ era, CK on red-over-white for non-Hungarian embassy STAFF without immunity,
718
+ is described in `unmodelled_series` below rather than authored, because its
719
+ format was reported without a period this file could bound at both ends.
720
+
721
+ # =========================================================================
722
+ # TRAILERS — the block that ran out, and its replacement.
723
+ # =========================================================================
724
+ - id: hu-trailer-1990
725
+ class: trailer
726
+ categories: [trailer]
727
+ period: { start: 1990, end: 2014 }
728
+ period_evidence: corroboration-only
729
+ period_note: >-
730
+ END is the better-sourced boundary: the X block is reported EXHAUSTED in
731
+ 2014, which is a capacity event rather than a legal one and is dated only
732
+ to the year. START is the 1990 system's start, not a sourced first issue
733
+ for trailers.
734
+ matching: strict
735
+ format:
736
+ pattern: "XLL-999"
737
+ regex: '\AX[A-Z]{2}-?\d{3}\z'
738
+ design:
739
+ plate: { w: 520, h: 110, unit: mm }
740
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
741
+ foreground: "#000000"
742
+ band: { side: left, color: "#003399", content: eu-stars+H, hex_basis: observed, note: "from 2004-05-01 only" }
743
+ evidence_tier: secondary-wikipedia
744
+ region_encoding: none
745
+ sources:
746
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Hungary # secondary-wikipedia: trailers used the X series until it was exhausted in 2014. FORMAT + PERIOD END. Accessed 2026-08-02"
747
+ notes: >-
748
+ THE X TRAILER BLOCK. A worked example of why letter-block allocation is a
749
+ capacity system and not a taxonomy: the block did not change because the
750
+ law changed, it changed because it filled up, and the date this file can
751
+ give is therefore a year and not a day. Note the collision hazard for a
752
+ parse API — the secondary also reports an unrelated X-prefixed series for
753
+ RENTAL vehicles discontinued in July 2004, with a different shape (X plus
754
+ one letter plus four digits); see `unmodelled_series`.
755
+
756
+ - id: hu-trailer-2014
757
+ class: trailer
758
+ categories: [trailer]
759
+ period: { start: 2014, end: 2022 }
760
+ period_evidence: corroboration-only
761
+ period_note: "START is the reported exhaustion of the X block in 2014; END is the 2022-07-01 format change. Neither boundary is instrument-sourced."
762
+ matching: strict
763
+ format:
764
+ pattern: "WLL-999"
765
+ regex: '\AW[A-Z]{2}-?\d{3}\z'
766
+ design:
767
+ plate: { w: 520, h: 110, unit: mm }
768
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
769
+ foreground: "#000000"
770
+ band: { side: left, color: "#003399", content: eu-stars+H, hex_basis: observed }
771
+ evidence_tier: secondary-wikipedia
772
+ region_encoding: none
773
+ sources:
774
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Hungary # secondary-wikipedia: the W series carried trailers from 2014 until 2022. FORMAT + PERIOD. Accessed 2026-08-02"
775
+ notes: >-
776
+ THE W TRAILER BLOCK — the X block's successor, and the shortest-lived
777
+ Hungarian block in this file: eight years, ended not by exhaustion but by
778
+ the 2022 reform. WHAT REPLACED IT AFTER 2022-07-01 WAS NOT ESTABLISHED and
779
+ is a recorded gap; this file does not guess a post-2022 trailer prefix.
780
+
781
+ # =========================================================================
782
+ # HISTORIC AND TEMPORARY.
783
+ # =========================================================================
784
+ - id: hu-historic-2022
785
+ class: historic
786
+ categories: [car, van, truck, bus, motorcycle]
787
+ period: { start: 2022 }
788
+ period_evidence: enacted-commencement
789
+ period_commencement: "2022-07-01"
790
+ period_note: >-
791
+ The OT (old-timer) plate itself PREDATES 2022 — the secondary describes an
792
+ earlier OT-plus-four-digit form without giving it a start date, which is
793
+ why only the post-2022 form is authored here and the earlier one is
794
+ recorded in `unmodelled_series`. Dating a series to a system change it
795
+ survived would be the instrument-date error in another dress.
796
+ matching: strict
797
+ format:
798
+ pattern: "OT LL-999"
799
+ regex: '\AOT ?[A-Z]{2}-?\d{3}\z'
800
+ eligibility:
801
+ evidence_tier: secondary-wikipedia
802
+ rule: "vehicle at least 30 years old and in original specification"
803
+ design:
804
+ plate: { w: 520, h: 110, unit: mm }
805
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
806
+ foreground: "#000000"
807
+ band: { side: left, color: "#003399", content: eu-stars+H, hex_basis: observed }
808
+ emblem: { present: true, rendered: placeholder }
809
+ evidence_tier: secondary-wikipedia
810
+ region_encoding: none
811
+ sources:
812
+ - "https://hu.wikipedia.org/wiki/Magyarorsz%C3%A1gi_forgalmi_rendsz%C3%A1mok # secondary-wikipedia: OT AA-999 under the 2022 system. FORMAT. Accessed 2026-08-02"
813
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Hungary # secondary-wikipedia: OT for vehicles at least 30 years old in original specification. ELIGIBILITY. Accessed 2026-08-02"
814
+ - "https://njt.jog.gov.hu/jogszabaly/2021-303-20-22 # 303/2021. (VI. 1.) Korm. rendelet, in force 2022-07-01. PERIOD"
815
+ notes: >-
816
+ THE OLD-TIMER PLATE on the 2022 grammar. Hungary's historic regime is a
817
+ PLATE regime, unlike Italy's, which has none at all (plates/it.yml
818
+ no_historic_series) and routes veteran vehicles through the temporary
819
+ series instead. The thirty-year threshold is the same order as the German
820
+ H-Kennzeichen's.
821
+
822
+ - id: hu-temporary-2022
823
+ class: temporary
824
+ categories: [car, van, truck, bus, motorcycle, trailer]
825
+ period: { start: 2022 }
826
+ period_evidence: enacted-commencement
827
+ period_commencement: "2022-07-01"
828
+ matching: recall-only
829
+ format:
830
+ pattern: "I 99LL"
831
+ regex: '\AI ?\d{2} ?[A-Z]{2}\z'
832
+ pattern_note: >-
833
+ RECALL-ONLY AND HONESTLY UNCERTAIN. That an "I" betűjelű ideiglenes
834
+ rendszámtábla EXISTS is PRIMARY — § 1/C of 326/2011 names the Központi
835
+ Kormányablak as exclusively competent to issue it. Its SERIAL SHAPE is
836
+ not: the secondary renders it "I 99AA DD", where the trailing pair is
837
+ believed to be a validity marker rather than part of the serial, and this
838
+ file could not confirm that from the mellékletek. The regex covers the
839
+ serial part only and a match is a shape hit. This is a named verifier
840
+ target.
841
+ design:
842
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
843
+ foreground: "#000000"
844
+ evidence_tier: secondary-wikipedia
845
+ region_encoding: none
846
+ sources:
847
+ - "https://njt.jog.gov.hu/jogszabaly/2011-326-20-22 # PRIMARY: § 1/C, the Központi Kormányablak's exclusive competence for the 'I' betűjelű ideiglenes rendszámtábla; §§ 63 and 63/A, 'Az ideiglenes rendszámtábla'. EXISTENCE + LETTER"
848
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Hungary # secondary-wikipedia: the general 'I' plate consolidated the former SP, M and Y categories from July 2022. SCOPE. Accessed 2026-08-02"
849
+ notes: >-
850
+ THE CONSOLIDATED TEMPORARY PLATE. The 2022 reform did more than lengthen
851
+ the serial: it collapsed several single-purpose categories — motorsport
852
+ (SP), agricultural (M) and slow-vehicle (Y) — into one "I" plate. This is
853
+ the only special series in the file whose EXISTENCE is primary-sourced
854
+ while its FORMAT is not, and the entry is written to make that asymmetry
855
+ visible rather than to hide it behind a confident regex.
856
+
857
+ - id: hu-temporary-1990
858
+ class: temporary
859
+ categories: [car, van, truck, bus, motorcycle, trailer]
860
+ period: { start: 1990, end: 2022 }
861
+ period_evidence: corroboration-only
862
+ period_note: >-
863
+ START is the 1990 system's start rather than a sourced first issue; END is
864
+ the 2022-07-01 commencement, after which the "I" plate consolidated these
865
+ categories. The individual letters' own dates were not sourced.
866
+ matching: recall-only
867
+ format:
868
+ pattern: "L99999"
869
+ regex: '\A[A-Z] ?\d{5}\z'
870
+ pattern_note: >-
871
+ RECALL-ONLY: a UNION over four distinct purposes that shared one shape —
872
+ one letter and five digits. The letters and their meanings, as reported:
873
+ E for a plate valid up to 180 days; P for trial running; Z for export,
874
+ valid 30 days; V for customs. A match tells a consumer the string has the
875
+ shape of a pre-2022 Hungarian temporary plate and nothing more — it
876
+ cannot say which of the four, and it will also match unrelated
877
+ single-letter series of the same shape.
878
+ letters:
879
+ evidence_tier: secondary-wikipedia
880
+ E: "temporary, maximum 180 days"
881
+ P: "trial running"
882
+ Z: "export, 30 days"
883
+ V: "customs"
884
+ design:
885
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
886
+ foreground: "#000000"
887
+ evidence_tier: secondary-wikipedia
888
+ region_encoding: none
889
+ sources:
890
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Hungary # secondary-wikipedia: E, P, Z and V temporary plates, one letter plus five numbers, with their validity rules. FORMAT + SCOPE. Accessed 2026-08-02"
891
+ - "https://njt.jog.gov.hu/jogszabaly/2011-326-20-22 # PRIMARY: §§ 63 and 63/A, 'Az ideiglenes rendszámtábla' — the temporary-plate sections of the governing decree"
892
+ notes: >-
893
+ THE FOUR-LETTER TEMPORARY FAMILY of the 1990 system. Note the EXPORT letter
894
+ Z in particular: Hungary, unlike Austria (plates/at.yml records that Austria
895
+ has no export series at all and uses the green Überstellungskennzeichen
896
+ instead), does issue a dedicated export plate, and it is one of the four
897
+ here. Because all four share a shape, they are one recall-only series with
898
+ a documented letter key rather than four series with identical regexes.
899
+
900
+ # =========================================================================
901
+ # MOPEDS.
902
+ # =========================================================================
903
+ - id: hu-moped-2014
904
+ class: moped
905
+ categories: [moped]
906
+ period: { start: 2014 }
907
+ period_evidence: secondary-dated
908
+ period_note: "The secondary dates the moped plate requirement to 2014. Whether the 2022 reform changed its shape was not established — a recorded gap, and the reason the series is left open rather than closed at 2022."
909
+ matching: recall-only
910
+ format:
911
+ pattern: "S LLL-99"
912
+ regex: '\AS ?[A-Z]{3}-?\d{2}\z'
913
+ pattern_note: >-
914
+ RECALL-ONLY BECAUSE THE ARRANGEMENT IS INFERRED. The sourced fact is the
915
+ CHARACTER INVENTORY — an S prefix, three letters, two digits — not the
916
+ printed grouping. This file's pattern is its best reading of that
917
+ inventory and the regex accepts a range of separator arrangements around
918
+ it, so a match is a shape hit. Named as a verifier target.
919
+ design:
920
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
921
+ foreground: "#000000"
922
+ evidence_tier: secondary-wikipedia
923
+ region_encoding: none
924
+ sources:
925
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Hungary # secondary-wikipedia: moped plates since 2014, S plus three letters plus two numbers. PERIOD + CHARACTER INVENTORY. Accessed 2026-08-02"
926
+ notes: >-
927
+ HUNGARY'S MOPED PLATE, mandatory from 2014 — late by European standards
928
+ (the Netherlands and Germany have run moped plates for decades) and worth
929
+ recording as such. The entry is deliberately `recall-only`: the file knows
930
+ what characters are on the plate and does not know how they are grouped,
931
+ and saying so is more useful to a consumer than a confident regex would be.
932
+
933
+ # ---------------------------------------------------------------------------
934
+ # Described but NOT modelled — every one of these is a real reported series
935
+ # that this pass could not bound well enough to author. Listed so the next pass
936
+ # starts from a map rather than from nothing (the plates/it.yml
937
+ # `unsourced_series` shape).
938
+ # ---------------------------------------------------------------------------
939
+ unmodelled_series:
940
+ evidence_tier: secondary-wikipedia
941
+ source: "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Hungary # every row below. Accessed 2026-08-02"
942
+ reason_not_modelled: >-
943
+ Each lacks at least one of: a start date this file could defend, a format
944
+ whose grouping is known, or a colour. PRD-PLATES §5.3 prefers the recorded
945
+ gap to the averaged guess, and a well-evidenced gap is a deliverable.
946
+ rows:
947
+ - { token: "H + letter + 4 digits", use: military, note: "the letter is reported to denote vehicle kind (A cars, B buses, N motorcycles, T trucks); a tricolour design is reported. Reported to have become HA under the 2022 system. No date at either end." }
948
+ - { token: "R + letter + 4 digits", use: police, note: "RB reported as the common form; RR 00-49 law enforcement and RR 50-99 customs. Reported to have become RA under the 2022 system. No date at either end." }
949
+ - { token: "MA + 4 digits", use: ambulance, note: "reported introduced 2006; no format grouping and no colour sourced, and `ambulance` is not in _meta/classes.yml — it would land as `government`, which is a judgement this file declines to make unsourced." }
950
+ - { token: "BA", use: "prison service", note: "2022-system prefix; nothing else sourced." }
951
+ - { token: "NA", use: "national tax and customs administration", note: "2022-system prefix; nothing else sourced." }
952
+ - { token: "CK + 4 digits", use: "non-immunity embassy staff", note: "red on white, reported expired 2017; no start date sourced." }
953
+ - { token: "C + letter + 4 digits", use: "foreign residents", note: "reported last issued April 2009; no start date sourced." }
954
+ - { token: "X + letter + 4 digits", use: "rental vehicles", note: "reported discontinued July 2004. COLLIDES IN PREFIX with the X trailer block (hu-trailer-1990) but not in shape — a parse hazard worth recording." }
955
+ - { token: "SP + 2 digits + 2 digits", use: motorsport, note: "restricted use; replaced by the general I plate in July 2022. No start date sourced." }
956
+ - { token: "M + 6 digits", use: agricultural, note: "green on white, three-year validity; replaced by the general I plate in July 2022. No start date sourced." }
957
+ - { token: "Y + 3 letters + 3 digits", use: "slow vehicles", note: "red on white; moved onto the normal series in July 2022. No start date sourced." }
958
+ - { token: "OT + 4 digits", use: "old-timer, pre-2022 form", note: "the predecessor of hu-historic-2022; no start date sourced, which is why only the post-2022 form is authored." }
959
+ - { token: "grey repeater plate", use: "bicycle-rack repeater", note: "reported from April 2017. A REPEATER plate has no class in _meta/classes.yml; adding one is a vocabulary PR (PRD-PLATES §2.3), not a data-file decision." }