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,961 @@
1
+ # plates/ad.yml — Andorra (PRD-PLATES gate L1, microstates group).
2
+ # DRAFT for verification. All primary text fetched from the BOPA document store
3
+ # (bopadocuments.blob.core.windows.net), 2026-08-02.
4
+ #
5
+ # ---------------------------------------------------------------------------
6
+ # THE INSTRUMENTS, and two corrections to the obvious assumptions
7
+ # ---------------------------------------------------------------------------
8
+ # * Llei 12/2021, del 13 de maig, del Codi de la circulació — BOPA núm. 62,
9
+ # any 2021, published 1 June 2021, in force three months after publication.
10
+ # THE CODE IN FORCE. It repeals the 1999 Codi expressly. Art. 108(1):
11
+ # "Les dimensions i les característiques de les matrícules es regulen per
12
+ # la via reglamentària."
13
+ # * Llei del Codi de la circulació, de 10-6-99 — BOPA núm. 40, any 1999,
14
+ # published 13 July 1999, in force fifteen days later. REPEALED. Its
15
+ # art. 147 is historically important because it put the PLATE CATALOGUE
16
+ # INSIDE THE LAW: "Aquest Codi inclou el catàleg de plaques de matrícula
17
+ # vigents a Andorra."
18
+ # * Decret 456/2022, del 9-11-2022 — BOPA núm. 135, any 2022, published
19
+ # 15 November 2022, IN FORCE 16 NOVEMBER 2022. THE PLATE REGULATION IN
20
+ # FORCE, and the source of nearly every design fact below.
21
+ # * Decret del 23-02-2011 — BOPA núm. 14, any 2011, published 1 March 2011,
22
+ # in force 2 March 2011. REPEALED, but read here because its art. 3.2 is
23
+ # the origin of the current numbering sentence.
24
+ # * Llei 24/2014, del 30 d'octubre, de plaques de matrícula personalitzada —
25
+ # BOPA núm. 67, any 2014, published 25 November 2014.
26
+ #
27
+ # TWO PREMISES THAT TURN OUT TO BE WRONG, both worth stating because both are
28
+ # the natural assumption: the 1999 Codi is NOT the code in force (Llei 12/2021
29
+ # replaced it), and the 2011 Reglament is NOT the regulation in force
30
+ # (Decret 456/2022 replaced it, via Decret 265/2021).
31
+ #
32
+ # ---------------------------------------------------------------------------
33
+ # THE CENTRAL FINDING: THE 2011 INSTRUMENT DID NOT CREATE THE 2011 FORMAT
34
+ # ---------------------------------------------------------------------------
35
+ # This is the sharpest instrument-date trap in the whole microstates group,
36
+ # because here the instrument's date and the reported series start AGREE — and
37
+ # citing the instrument would still be wrong.
38
+ #
39
+ # The numbering rule, art. 3.2 of the 2011 Decret and re-enacted verbatim as
40
+ # art. 6.2 of Decret 456/2022:
41
+ # "A les plaques de matrícula s'inscriu un grup de 5 caràcters que va des del
42
+ # 00000 fins al 99999. A continuació, la primera xifra se substitueix per una
43
+ # lletra de la A a la Z, i es manté el caràcter numèric dels 4 darrers
44
+ # caràcters (A0000-Z9999), sense utilitzar les lletres de l'alfabet que puguin
45
+ # crear confusió, combinant dues lletres i tres números (AA000-ZZ999), i així
46
+ # successivament."
47
+ #
48
+ # Read what that sentence actually does. It describes ONE CONTINUOUS SCHEME in
49
+ # three stages — five digits, then a letter plus four digits, then two letters
50
+ # plus three digits, "i així successivament" (and so on) — and the trigger for
51
+ # advancing is EXHAUSTION, not a date. The instrument does not INTRODUCE the
52
+ # lettered form; it restates a scheme that already ran. So:
53
+ #
54
+ # * THE PRE-2011 FORMAT IS NOW ESTABLISHED FROM PRIMARY TEXT: five numeric
55
+ # digits, 00000 to 99999. That closes the gap every secondary account
56
+ # leaves open — none of them states the old grammar.
57
+ # * NO INSTRUMENT ANYWHERE DATES THE FIRST A0000 PLATE. The 2011 Decret's own
58
+ # innovations, per its exposició de motius, were the reduced plate, plastic
59
+ # and rubber enduro/trial plates, images on the retroreflective ground, and
60
+ # adding the "AND" distinguishing mark — NOT the lettered serial.
61
+ # * Consequently `ad-standard-letter` is dated `agency-stated-date` from the
62
+ # Automòbil Club d'Andorra's page, NOT `instrument-in-force` from the
63
+ # Decret. Citing the Decret for that date would be precisely the Spanish
64
+ # error, and it would be very easy to commit because the years coincide.
65
+ #
66
+ # ---------------------------------------------------------------------------
67
+ # THE CO-PRINCIPALITY'S PUBLICATION FORMULA, since the brief asked
68
+ # ---------------------------------------------------------------------------
69
+ # Laws are approved by the Consell General at Casa de la Vall and then
70
+ # sanctioned and promulgated JOINTLY BY BOTH CO-PRINCES before BOPA
71
+ # publication. Llei 12/2021 closes: "Nosaltres els coprínceps la sancionem i
72
+ # promulguem i n'ordenem la publicació en el Butlletí Oficial del Principat
73
+ # d'Andorra. / Emmanuel Macron, President de la República Francesa, Copríncep
74
+ # d'Andorra / Joan Enric Vives Sicília, Bisbe d'Urgell, Copríncep d'Andorra."
75
+ # REGLAMENTS carry no co-princely sanction — they are Govern decrees signed by
76
+ # the Cap de Govern. That matters for citation: the plate rules live in decrees,
77
+ # so no plate specification in this file bears a co-princely signature.
78
+ #
79
+ # ---------------------------------------------------------------------------
80
+ # SOURCING NOTE — how these URLs were obtained, and their limits
81
+ # ---------------------------------------------------------------------------
82
+ # www.bopa.ad is a JavaScript application and EVERY legacy www.bopa.ad/bopa/...
83
+ # deep link is dead, returning the app shell rather than the document. The
84
+ # citations below therefore point at BOPA's own document store, which serves
85
+ # the AS-PUBLISHED text. portaljuridicandorra.ad carries consolidated versions
86
+ # but marks them "Text refós sense caràcter oficial" — an UNOFFICIAL
87
+ # consolidation — so it is cited only for navigation, never for wording.
88
+ # Folder numbering on the blob store is `any = year - 1988`.
89
+ #
90
+ # ---------------------------------------------------------------------------
91
+ # period_evidence VOCABULARY used in this file:
92
+ # instrument-in-force the instrument's own commencement date
93
+ # instrument-in-force-upper-bound earliest instrument READ carrying it; the
94
+ # true start is earlier and unreached
95
+ # agency-stated-date an official agency page states the date
96
+ # and no instrument does
97
+ # secondary-wikipedia WIKIPEDIA-DERIVED (mandatory tag)
98
+ # All except `secondary-wikipedia` are values already in use across plates/*.yml.
99
+ #
100
+ # format_evidence VOCABULARY: statutory | agency-stated | secondary-wikipedia
101
+ # ---------------------------------------------------------------------------
102
+ jurisdiction: ad
103
+ authority:
104
+ name: Govern d'Andorra, Registre de Vehicles — Decret 456/2022, del 9-11-2022, Reglament de la fabricació i la instal·lació de les plaques de matrícula
105
+ url: "https://bopadocuments.blob.core.windows.net/bopa-documents/034135/html/GR20221110_09_12_43.html"
106
+ binding: vehicle
107
+ binding_note: >-
108
+ Llei 12/2021 art. 96(1): "Per posar en circulació els vehicles de motor, els
109
+ ciclomotors, els remolcs i els semiremolcs, cal haver-los matriculat i que
110
+ portin les plaques de matrícula amb els caràcters que els assigni el Registre
111
+ de Vehicles" — the characters are assigned to the VEHICLE by the Registre de
112
+ Vehicles. No provision reserves a number to a person across vehicles.
113
+ instrument:
114
+ code:
115
+ citation: "Llei 12/2021, del 13 de maig, del Codi de la circulació"
116
+ gazette: "BOPA núm. 62, any 2021"
117
+ published: "2021-06-01"
118
+ entry_in_force: "three months after publication (disposició final novena)"
119
+ url: "https://bopadocuments.blob.core.windows.net/bopa-documents/033062/html/CGL20210528_13_01_20.html"
120
+ delegation: "art. 108(1): dimensions and characteristics are regulated by reglament; art. 96(1): the Registre de Vehicles assigns the characters"
121
+ repeals: "the Llei del Codi de la circulació of 10 June 1999 and its successive modifications, expressly"
122
+ recorded_discrepancy: >-
123
+ BOPA's index metadata gives publication as 1 June 2021, while the preamble
124
+ of Decret 456/2022 refers to the law as "publicada al Butlletí Oficial del
125
+ Principat d'Andorra del 2 de juny del 2021". A one-day disagreement
126
+ between two official sources, recorded rather than resolved; `published`
127
+ carries BOPA's own date.
128
+ plate_reglament:
129
+ citation: "Decret 456/2022, del 9-11-2022, d'aprovació del Reglament de la fabricació i la instal·lació de les plaques de matrícula en vehicles i ginys mecànics no aptes per a la via pública"
130
+ gazette: "BOPA núm. 135, any 2022"
131
+ published: "2022-11-15"
132
+ entry_in_force: "2022-11-16"
133
+ in_force_clause: "article únic: '…que entrarà en vigor l'endemà de ser publicat al Butlletí Oficial del Principat d'Andorra'"
134
+ url: "https://bopadocuments.blob.core.windows.net/bopa-documents/034135/html/GR20221110_09_12_43.html"
135
+ recorded_typo: >-
136
+ BOPA's own sumari mistypes this decree as "Decret 456/2011, del 9-11-2022".
137
+ The document header reads 456/2022 and that is the correct citation.
138
+ Recorded because the erroneous form is in an official index and a verifier
139
+ will meet it.
140
+ chain:
141
+ - "Decret del 23-02-2011 (base) — BOPA núm. 14/2011, published 1 March 2011, in force 2 March 2011"
142
+ - "Correcció d'errata del 9-03-2011 — BOPA núm. 16/2011, 15 March 2011"
143
+ - "Decret del 27-07-2011 (modifies arts. 12 and 17, adds art. 19) — BOPA núm. 49/2011, 2 August 2011"
144
+ - "Decret del 10-12-2014 — BOPA núm. 70/2014, 16 December 2014"
145
+ - "Decret 265/2021, del 18-8-2021 — BOPA núm. 93/2021, 31 August 2021; replaced the 2011 Reglament, itself now repealed"
146
+ - "Decret 456/2022, del 9-11-2022 — BOPA núm. 135/2022, 15 November 2022; IN FORCE"
147
+ - "Correcció d'errata del 30-11-2022 — BOPA núm. 142/2022, 6 December 2022"
148
+ - "Correcció d'errata de l'1-3-2023 — BOPA núm. 33/2023, 7 March 2023"
149
+ related:
150
+ - "Decret 534/2022, del 14-12-2022, Reglament relatiu a la matriculació i al Registre de Vehicles — BOPA núm. 148/2022, 21 December 2022"
151
+ - "Decret 11/2024, del 10-1-2024, Reglament de vehicles històrics — BOPA núm. 7/2024, 16 January 2024"
152
+
153
+ # ---------------------------------------------------------------------------
154
+ # Jurisdiction-wide facts.
155
+ # ---------------------------------------------------------------------------
156
+ common:
157
+ numbering:
158
+ rule: >-
159
+ Decret 456/2022 art. 6.2, re-enacting art. 3.2 of the 2011 Decret verbatim:
160
+ "A les plaques de matrícula s'inscriu un grup de 5 caràcters que va des del
161
+ 00000 fins al 99999. A continuació, la primera xifra se substitueix per una
162
+ lletra de la A a la Z, i es manté el caràcter numèric dels 4 darrers
163
+ caràcters (A0000-Z9999), sense utilitzar les lletres de l'alfabet que puguin
164
+ crear confusió, combinant dues lletres i tres números (AA000-ZZ999), i així
165
+ successivament."
166
+ three_stages:
167
+ - { stage: 1, grammar: "00000-99999", modelled_as: ad-standard-numeric }
168
+ - { stage: 2, grammar: "A0000-Z9999", modelled_as: ad-standard-letter }
169
+ - { stage: 3, grammar: "AA000-ZZ999", modelled_as: "NOT MODELLED — see below" }
170
+ stage_three_not_modelled: >-
171
+ The two-letter stage is PROVIDED FOR but no evidence was found that it has
172
+ been reached, and no instrument or agency page dates it. A series with no
173
+ start and no evidence of issuance would be a guess, so it is recorded here
174
+ and not created. A verifier who finds a two-letter Andorran plate in
175
+ circulation should open `ad-standard-twoletter` against this note: the
176
+ grammar is already sourced from art. 6.2 and only the start needs
177
+ establishing.
178
+ rollover_is_by_exhaustion: >-
179
+ THE CRITICAL STRUCTURAL FACT. Stages advance on EXHAUSTION, not on a date.
180
+ The instrument writes all three stages in one sentence, in the future
181
+ tense of an automatic process, so NO stage boundary is a legal event with
182
+ a date attached. This is why the 2011 Decret must not be cited as the
183
+ start of the lettered series — see the header.
184
+ source: "https://bopadocuments.blob.core.windows.net/bopa-documents/034135/html/GR20221110_09_12_43.html # Decret 456/2022 art. 6.2"
185
+ alphabet:
186
+ excluded: [I, O, Q]
187
+ rule: >-
188
+ Decret 456/2022 art. 6.3 makes explicit what the 2011 text left as
189
+ "lletres de l'alfabet que puguin crear confusió": "Se suprimeixen les
190
+ lletres I, O i Q del sistema de numeració… a fi d'evitar tota confusió amb
191
+ els números 1 i 0, respectivament." Three letters, and the reason is given
192
+ — I and Q for 1, O for 0. NOTE the 2011 instrument stated the PRINCIPLE
193
+ without naming the letters, so a pre-2022 exclusion list is not sourced.
194
+ letters: [A, B, C, D, E, F, G, H, J, K, L, M, N, P, R, S, T, U, V, W, X, Y, Z]
195
+ count: 23
196
+ source: "https://bopadocuments.blob.core.windows.net/bopa-documents/034135/html/GR20221110_09_12_43.html # Decret 456/2022 art. 6.3"
197
+ plate_layout:
198
+ rule: >-
199
+ Decret 456/2022 art. 6.1: "Al costat esquerre superior de la matrícula hi
200
+ figura l'escut nacional del Principat d'Andorra. Al costat esquerre
201
+ inferior, a sota de l'escut, hi ha el distintiu nacional 'AND' amb lletres
202
+ de color blau. A la part inferior, sota els caràcters estampats en relleu
203
+ de color negre mat, s'hi troba la llegenda 'PRINCIPAT D'ANDORRA' amb
204
+ lletres de color blau."
205
+ base: "art. 4.1: 'la base de les plaques de matrícula és d'alumini, d'un gruix d'1,35 mm'"
206
+ tolerance: "art. 6.4: ± 0,5 mm on the plate dimensions"
207
+ source: "https://bopadocuments.blob.core.windows.net/bopa-documents/034135/html/GR20221110_09_12_43.html # Decret 456/2022 arts. 4.1, 6.1, 6.4"
208
+ country_sign:
209
+ letters: "AND"
210
+ on_plate: true
211
+ rule: >-
212
+ UNUSUAL AND WORTH NOTING: Andorra puts its distinguishing mark ON the
213
+ plate, in the band below the arms, rather than relying on a separate
214
+ oval. The 2011 Decret's exposició de motius says why, and cites the treaty:
215
+ "s'ha incorporat l'indicatiu AND, en la forma que preveu el punt 3 de
216
+ l'annex 3 de la Convenció sobre la circulació vial… feta l'any 1968 a
217
+ Viena, en la versió consolidada de l'any 2006."
218
+ legacy_rule: >-
219
+ Decret 456/2022 art. 20.3: plates of a model earlier than the current one,
220
+ which do not carry the inscribed AND, must display the separate oval AND
221
+ sticker. So both arrangements are lawfully on the road simultaneously.
222
+ treaty_note: >-
223
+ The 2006 CONSOLIDATED version of Vienna Annex 3 is what permits the sign
224
+ to be incorporated into the plate. PRD-PLATES §4 records that the 1968
225
+ Convention AS ADOPTED forbade exactly that (Annex 3 §3) and flags the
226
+ amendment as UNVERIFIED because UNECE was unreachable. This Andorran
227
+ instrument is INDIRECT CORROBORATION that the amendment exists and is in
228
+ force — a national instrument relying on it by name and article — but it
229
+ is not the amendment itself, and it does not discharge the §4 caution.
230
+ Recorded as a lead for whoever pins the UNECE text.
231
+ source: "https://bopadocuments.blob.core.windows.net/bopa-documents/023014/html/6BEF6.html # Decret del 23-02-2011, exposició de motius"
232
+ euro_band:
233
+ present: false
234
+ note: "Andorra is not in the EU. No instrument read provides for a band, and the AND mark occupies the left-hand position a Euro band would take."
235
+ colour_spec:
236
+ basis: pantone
237
+ rule: >-
238
+ ANDORRA IS THE ONLY JURISDICTION IN THIS MICROSTATES GROUP THAT SPECIFIES
239
+ ITS COLOURS BY A NAMED COLOUR SYSTEM ACROSS THE WHOLE CATALOGUE. Decret
240
+ 456/2022 names Pantone references per series: 2945 (dark blue, diplomatic
241
+ and consular), 299 (lighter blue, embassy administrative staff), 485 (red,
242
+ temporary, historic, dealer, special and machinery), 342 (green, dealer
243
+ ground), 300 (blue, special-vehicle legends). Contrast Liechtenstein and
244
+ Monaco, whose instruments name colours only in words.
245
+ hex_basis_note: >-
246
+ Every hex below is `hex_basis: pantone-converted`. Pantone references are
247
+ physical standards with no authoritative sRGB value, so the hex is a
248
+ conventional conversion and THE PANTONE REFERENCE IS THE CITABLE FACT. A
249
+ spec constraining a colour system is not a hex claim — the same discipline
250
+ es.yml applies to the CIE chromaticity boxes of Anexo XVIII.
251
+ arms_note: >-
252
+ The arms' own proportions and Pantones are referenced but NOT reproduced
253
+ in the plate decree, and the referenced graphic annex was not extractable.
254
+ Recorded gap.
255
+ annex_gap:
256
+ status: RECORDED GAP
257
+ detail: >-
258
+ Decret 456/2022 refers to an annex, "Catàleg oficial de plaques de matrícula
259
+ i distintius del Principat d'Andorra", as figures 1-18. IT IS A GRAPHICS
260
+ ANNEX and carries no machine-readable text; it could not be extracted. The
261
+ 1999 Codi's equivalent catalogue is in the same position — only three of
262
+ its graphic pages are digitised on BOPA, and all three were rendered and
263
+ are something else entirely (a stopping-distance diagram, a driving-test
264
+ circuit and hazmat placards). SO NO PLATE ARTWORK OR GLYPH SPECIFICATION
265
+ FROM EITHER CATALOGUE IS AVAILABLE, and every layout fact in this file
266
+ comes from the articles' prose rather than from the figures.
267
+ font:
268
+ name: null
269
+ note: "No typeface is named in any Andorran instrument read, and the graphic annex that might carry a Schriftmuster is unextractable (see annex_gap). Per PRD-PLATES §6 the render layer uses the schematic fallback."
270
+ emblem:
271
+ present: true
272
+ rendered: placeholder
273
+ note: "l'escut nacional del Principat d'Andorra, upper left (art. 6.1). PRD-PLATES §3 placeholder rule. LICENCE ROUTE LOCATED 2026-08-03 (render-program hunt): Commons Coat of arms of Andorra.svg is PUBLIC DOMAIN, extmetadata-verified — asset + ledger row at plates/_art/ad/. Depiction consumers may render the real arms."
274
+ origin:
275
+ instrument_named: "Ordinació del Consell General del 13 de maig de 1929"
276
+ rule: >-
277
+ A DATED ORIGIN, from a primary instrument — but at one remove. The
278
+ exposició de motius of Llei 24/2014 states: "L'Ordinació del Consell
279
+ General del 13 de maig de 1929 obligava a declarar tots els vehicles
280
+ matriculats i per matricular. Al llarg d'aquests 85 anys, les plaques de
281
+ matrícula han evolucionat en la forma i en el fons." So 13 May 1929 is
282
+ named in a law in force, which is much better than the "around 1930"
283
+ of the secondary accounts.
284
+ limit: >-
285
+ THE 1929 ORDINACIÓ ITSELF IS NOT REACHABLE. BOPA's archive begins in 1989
286
+ (any 1 = 1989) and no pre-1989 Andorran instrument was found digitised
287
+ anywhere. The Ordinació's TEXT — and therefore the plate format it
288
+ established — is unknown. No series is created for it: see
289
+ not_modelled.
290
+ source: "https://bopadocuments.blob.core.windows.net/bopa-documents/026067/html/lo26067002.html # Llei 24/2014, exposició de motius"
291
+ not_modelled:
292
+ - "THE ORIGINAL 'AND + FOUR DIGITS' SERIES IS NOT MODELLED, and that is a deliberate refusal. The layout is described only by secondary sources, one of which sources it to a collectables auction listing. No instrument describing it was found; the 1929 Ordinació that would carry it is not digitised and BOPA's archive starts in 1989. Creating a series would mean inventing a period and a grammar for a plate this pass could not see. The 1929 DATE is recorded in common.origin because a law in force states it; the FORMAT is not."
293
+ - "NO OFFICIAL / GOVERNMENT SERIES EXISTS IN THE REGLAMENT. Decret 456/2022's article list (arts. 6-19, plus the distintius, the personalised series and art. 27 event plates) is exhaustive and contains no government fleet series. The flag-coloured government plate described by secondary sources has NO primary basis located. Not modelled — a searched-for negative."
294
+ - "NO DISTINCT ELECTRIC PLATE EXISTS, and the reason is sourced: Llei 12/2021, disposició final setena, puts the environmental classification on a WINDSCREEN STICKER instead — 'El corresponent distintiu adhesiu es col·loca al marge inferior dret del parabrises del vehicle. L'Automòbil Club d'Andorra serà l'encarregat de subministrar les etiquetes' (the ZERO / ECO labels). A sourced negative, not an omission."
295
+ - "NO DISTINCT TRAILER SERIES EXISTS. Decret 456/2022 art. 6 covers 'vehicles automòbils, remolcs i semiremolcs' under the ordinary plate, so an Andorran trailer registration is indistinguishable from a car registration."
296
+ - "EVENT PLATES (art. 27) let the Govern create bespoke plates for summits, state visits and the Games of the Small States. No standing grammar exists, so nothing is modelled."
297
+ - "THE TWO-LETTER STAGE (AA000-ZZ999) is provided for by art. 6.2 but undated and unevidenced — see common.numbering.stage_three_not_modelled."
298
+
299
+ region_encoding: none
300
+ region_encoding_note: >-
301
+ Andorra encodes no geography. Its seven parròquies do not appear in a
302
+ registration.
303
+
304
+ series:
305
+
306
+ # =========================================================================
307
+ # THE ORDINARY SERIES — two stages of one continuous scheme, split because
308
+ # the FORMAT differs, dated by two different kinds of evidence.
309
+ # =========================================================================
310
+ - id: ad-standard-letter
311
+ class: standard
312
+ categories: [car, van, truck, bus, trailer, semitrailer]
313
+ period: { start: 2011 }
314
+ period_evidence: agency-stated-date
315
+ period_note: >-
316
+ READ THIS — IT IS THE MOST IMPORTANT NOTE IN THE FILE. 2011 rests on the
317
+ Automòbil Club d'Andorra's page, which is the ONLY source at any tier
318
+ tying a year to the lettered form: "Des de l'any 2011, les plaques de
319
+ matrícula dels vehicles d'Andorra estan formades per quatre xifres de
320
+ color negre precedides per una lletra sobre fons de color blanc." The ACA
321
+ manufactures Andorran plates under Govern concession (Reglament art. 3.1),
322
+ so it is an authoritative agency — but it is NOT an instrument, and it
323
+ does not give a first-issue date.
324
+ WHY NO INSTRUMENT IS CITED HERE, THOUGH ONE IS DATED 2011: the Decret of
325
+ 23 February 2011 does not introduce this format. Its art. 3.2 describes
326
+ the five-digit stage and the lettered stage in ONE SENTENCE as a
327
+ continuous scheme advancing on exhaustion, and its stated innovations were
328
+ the reduced plate, enduro/trial plates, ground images and the AND mark.
329
+ Citing that Decret for this date would attach an instrument's window to a
330
+ series it did not create — the exact defect PRD-PLATES §9 and the Spanish
331
+ es-provincial case exist to prevent. The coincidence of years makes it a
332
+ more dangerous trap than usual, not a safer one.
333
+ matching: strict
334
+ format:
335
+ pattern: "L9999"
336
+ regex: '\A[A-Z]\d{4}\z'
337
+ regex_strict: '\A[ABCDEFGHJKLMNPRSTUVWXYZ]\d{4}\z'
338
+ format_evidence: statutory
339
+ charset:
340
+ excluded: [I, O, Q]
341
+ notes: >-
342
+ `regex_strict` carries the 23-letter alphabet of Decret 456/2022
343
+ art. 6.3. The exclusion list is sourced only from 2022 onward — the
344
+ 2011 text stated the principle ("lletres… que puguin crear confusió")
345
+ without naming the letters, so a plate issued between the start of the
346
+ lettered stage and 2022 might in principle carry I, O or Q. `regex`
347
+ keeps [A-Z] for that reason as well as for the round-trip.
348
+ progression: >-
349
+ The letter advances only when the four digits exhaust, per art. 6.2's
350
+ continuous-scheme sentence. There is NO date encoded and no geography.
351
+ separator: none
352
+ separator_note: "art. 6.2 describes 'un grup de 5 caràcters' with no separator glyph; the pattern spells the serial unbroken."
353
+ design:
354
+ plate: { w: 340, h: 120, unit: mm, tolerance_mm: 0.5, note: "art. 6.4" }
355
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
356
+ foreground: "#000000"
357
+ foreground_note: "'caràcters estampats en relleu de color negre mat' — embossed MATT black (art. 6.1)"
358
+ band: { side: none }
359
+ emblem: { present: true, rendered: placeholder, position: upper-left }
360
+ national_mark: { text: "AND", color: "#003399", position: "lower left, beneath the arms", hex_basis: observed }
361
+ legend: { text: "PRINCIPAT D'ANDORRA", color: "#003399", position: "bottom, beneath the serial", hex_basis: observed }
362
+ base: { material: aluminium, thickness_mm: 1.35 }
363
+ rear_differs: false
364
+ variants:
365
+ - name: "reduced (M1)"
366
+ format: { pattern: "L9999" }
367
+ plate: { w: 275, h: 90, unit: mm }
368
+ note: "a smaller plate for M1 vehicles, same grammar and same furniture — a size option rather than a distinct series, so a variant per PRD-PLATES §2.3"
369
+ region_encoding: none
370
+ notes: >-
371
+ THE CURRENT ORDINARY SERIES — one letter and four digits, black on white,
372
+ arms upper left, AND beneath them, PRINCIPAT D'ANDORRA along the bottom.
373
+ Trailers and semi-trailers share this series, so an Andorran trailer plate
374
+ is textually indistinguishable from a car plate. Its period rests on an
375
+ agency page rather than an instrument, uniquely in this file, and the
376
+ reason is set out at length in period_note.
377
+ sources:
378
+ - "https://bopadocuments.blob.core.windows.net/bopa-documents/034135/html/GR20221110_09_12_43.html # Decret 456/2022 arts. 4.1, 6.1-6.4 — the grammar, the I/O/Q exclusions, 340x120 mm, the layout and the aluminium base"
379
+ - "https://aca.ad/serveis/plaques-de-matricula # OFFICIAL AGENCY PAGE (Automòbil Club d'Andorra, concessionaire under art. 3.1): 'Des de l'any 2011…' — the sole source for the year"
380
+
381
+ - id: ad-standard-numeric
382
+ class: standard
383
+ categories: [car, van, truck, bus, trailer, semitrailer]
384
+ period: { start: 1999, ended: true }
385
+ year_end_min: 2011
386
+ period_evidence: instrument-in-force-upper-bound
387
+ period_note: >-
388
+ BOTH ENDS ARE HONEST APPROXIMATIONS AND THE FILE SAYS SO.
389
+ START: 1999 is an UPPER BOUND, not an origin. The Llei del Codi de la
390
+ circulació of 10 June 1999 is the earliest instrument reached that carries
391
+ a plate catalogue at all (art. 147: "Aquest Codi inclou el catàleg de
392
+ plaques de matrícula vigents a Andorra"), and the five-digit grammar is
393
+ confirmed from the 2011 Decret describing it as the base stage. The format
394
+ certainly predates 1999 — BOPA's archive begins in 1989 and pre-1989
395
+ Andorran law is not digitised, so how far back it runs is unknowable from
396
+ here.
397
+ END: `ended: true` with `year_end_min: 2011` rather than a claimed end
398
+ year. The five-digit stage closed when 99999 exhausted, which is an event,
399
+ not a legal act, and no source dates it. 2011 is the earliest year the
400
+ lettered stage is reported to have been running.
401
+ matching: strict
402
+ format:
403
+ pattern: "99999"
404
+ regex: '\A\d{5}\z'
405
+ format_evidence: statutory
406
+ format_note: >-
407
+ FIVE NUMERIC DIGITS, 00000 to 99999 — established from primary text, and
408
+ this is the gap-closing fact of the Andorran dossier. Every secondary
409
+ account describes the pre-2011 plates as "black on white" without ever
410
+ stating the grammar; art. 6.2 of Decret 456/2022 (and art. 3.2 of the
411
+ 2011 Decret before it) states it exactly, in the course of describing
412
+ the scheme's first stage.
413
+ progression: "sequential from 00000; leading zeros are part of the form, since the range is written as beginning 00000"
414
+ design:
415
+ plate: { w: 340, h: 120, unit: mm, note: "assumed continuous with the current plate; the 2011 Decret introduced the REDUCED size, implying the 340x120 size predates it" }
416
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
417
+ foreground: "#000000"
418
+ band: { side: none }
419
+ emblem: { present: true, rendered: placeholder }
420
+ national_mark:
421
+ text: "AND"
422
+ present: false
423
+ note: >-
424
+ THE AND MARK WAS NOT ON THIS PLATE. It was added by the 2011 Decret —
425
+ its exposició de motius lists "s'ha incorporat l'indicatiu AND" among
426
+ that instrument's innovations — which is why art. 20.3 of the current
427
+ Reglament requires older plates to carry the separate oval sticker
428
+ instead. This is the one design fact that genuinely distinguishes the
429
+ pre-2011 plate, and unlike the serial change it IS dated by an
430
+ instrument.
431
+ rear_differs: false
432
+ region_encoding: none
433
+ notes: >-
434
+ THE FIVE-DIGIT SERIES — Andorra's ordinary plate before the lettered
435
+ stage. Modelled separately from ad-standard-letter because the format
436
+ differs, even though the two are stages of one scheme in the instrument's
437
+ own words. Note the asymmetry in the evidence: the SERIAL change between
438
+ the two series is undated, while the AND MARK change that accompanied it
439
+ is dated by the 2011 Decret. Overlaps ad-standard-letter, which is
440
+ genuine — plates already issued stayed valid.
441
+ sources:
442
+ - "https://bopadocuments.blob.core.windows.net/bopa-documents/034135/html/GR20221110_09_12_43.html # Decret 456/2022 art. 6.2 — the 00000-99999 base stage"
443
+ - "https://bopadocuments.blob.core.windows.net/bopa-documents/023014/html/6BEF6.html # Decret del 23-02-2011 art. 3.2 and exposició de motius — the same grammar, and the AND mark as a 2011 innovation"
444
+ - "https://bopadocuments.blob.core.windows.net/bopa-documents/011040/html/199A6.html # Llei del Codi de la circulació de 10-6-99 art. 147 — the plate catalogue sat inside the Code"
445
+
446
+ - id: ad-motorcycle
447
+ class: motorcycle
448
+ categories: [motorcycle]
449
+ period: { start: 2011 }
450
+ period_evidence: agency-stated-date
451
+ matching: strict
452
+ format:
453
+ pattern: "L9999"
454
+ regex: '\A[A-Z]\d{4}\z'
455
+ regex_strict: '\A[ABCDEFGHJKLMNPRSTUVWXYZ]\d{4}\z'
456
+ format_evidence: statutory
457
+ format_note: >-
458
+ THE SAME SERIAL GRAMMAR AS CARS — art. 7 gives motorcycles their own
459
+ SIZES but not their own numbering. There is no dedicated motorcycle
460
+ letter block, contrary to some secondary accounts.
461
+ design:
462
+ plate: { w: 225, h: 115, unit: mm, note: "horizontal motorcycle plate (art. 7)" }
463
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
464
+ foreground: "#000000"
465
+ band: { side: none }
466
+ emblem: { present: true, rendered: placeholder }
467
+ national_mark: { text: "AND", color: "#003399" }
468
+ legend: { text: "PRINCIPAT D'ANDORRA", color: "#003399" }
469
+ rear_differs: false
470
+ variants:
471
+ - name: "vertical (enduro / trial)"
472
+ format: { pattern: "L9999" }
473
+ plate: { w: 100, h: 168, unit: mm }
474
+ note: >-
475
+ art. 7.4 — a PORTRAIT plate in two zones split by a blue band, the
476
+ letter or letters above and the four digits below. The 2011 Decret
477
+ introduced plastic and rubber enduro/trial plates specifically, per
478
+ its exposició de motius, which is a genuinely unusual material
479
+ provision.
480
+ region_encoding: none
481
+ notes: >-
482
+ MOTORCYCLES. Two shapes — a 225x115 mm horizontal plate and a 100x168 mm
483
+ portrait plate for enduro and trial machines, the latter permitted in
484
+ plastic or rubber. Same serial grammar as the car series, so the plate's
485
+ SIZE and not its string is what identifies it.
486
+ sources:
487
+ - "https://bopadocuments.blob.core.windows.net/bopa-documents/034135/html/GR20221110_09_12_43.html # Decret 456/2022 art. 7 and art. 7.4"
488
+
489
+ - id: ad-moped
490
+ class: moped
491
+ categories: [moped]
492
+ period: { start: 2011 }
493
+ period_evidence: instrument-in-force-upper-bound
494
+ matching: strict
495
+ format:
496
+ pattern: "99999"
497
+ regex: '\A\d{5}\z'
498
+ format_evidence: statutory
499
+ format_note: >-
500
+ FIVE DIGITS — mopeds kept the numeric grammar the car series left
501
+ behind, and run their own independent number space from 00000 to 99999.
502
+ So a five-digit Andorran plate today is a moped, while a five-digit
503
+ plate from before the lettered stage was a car. The same string, two
504
+ meanings, separated only by the plate it is printed on and by era.
505
+ design:
506
+ plate: { w: 106, h: 66, unit: mm, note: "art. 8 — the smallest Andorran plate" }
507
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
508
+ foreground: "#000000"
509
+ border: { color: "#003399", hex_basis: observed }
510
+ legend: { text: "ANDORRA", color: "#003399", panel_color: "#FFD700", note: "blue lettering on a YELLOW panel — the only yellow element in the Andorran catalogue" }
511
+ emblem: { present: true, rendered: placeholder, position: "bottom left, the flag shield" }
512
+ band: { side: none }
513
+ rear_differs: false
514
+ region_encoding: none
515
+ notes: >-
516
+ CICLOMOTORS (mopeds). A distinctive little plate — blue border, the legend
517
+ ANDORRA in blue on a yellow panel, and the flag shield at the bottom left
518
+ rather than the national arms at the top left. It is the one Andorran
519
+ series that does not follow the common layout.
520
+ sources:
521
+ - "https://bopadocuments.blob.core.windows.net/bopa-documents/034135/html/GR20221110_09_12_43.html # Decret 456/2022 art. 8"
522
+
523
+ # =========================================================================
524
+ # THE DIPLOMATIC FAMILY — four series, three ranks, two Pantones.
525
+ # =========================================================================
526
+ - id: ad-diplomatic-cmd
527
+ class: diplomatic
528
+ categories: [car, van]
529
+ period: { start: 2011 }
530
+ period_evidence: instrument-in-force-upper-bound
531
+ matching: strict
532
+ format:
533
+ pattern: "CMD9L"
534
+ regex: '\ACMD[- ]?\d[- ]?[A-Z]\z'
535
+ format_evidence: statutory
536
+ format_note: >-
537
+ art. 9: CMD, then ONE digit, then a letter identifying the STATE. Heads
538
+ of diplomatic mission only, which is why a single digit suffices.
539
+ design:
540
+ plate: { w: 340, h: 120, unit: mm }
541
+ background: { color: "#1F3A93", finish: retroreflective, hex_basis: pantone-converted, spec_note: "Pantone 2945 — dark blue, named in the instrument" }
542
+ foreground: "#FFFFFF"
543
+ band: { side: none }
544
+ emblem: { present: true, rendered: placeholder }
545
+ rear_differs: false
546
+ region_encoding: none
547
+ notes: >-
548
+ CAPS DE MISSIÓ DIPLOMÀTICA — heads of diplomatic mission. White on Pantone
549
+ 2945 dark blue. The trailing letter is a STATE code, which makes this the
550
+ only genuine decode field in the Andorran system; the code table itself
551
+ was NOT located and is a recorded gap.
552
+ sources:
553
+ - "https://bopadocuments.blob.core.windows.net/bopa-documents/034135/html/GR20221110_09_12_43.html # Decret 456/2022 art. 9"
554
+
555
+ - id: ad-diplomatic-cd
556
+ class: diplomatic
557
+ categories: [car, van]
558
+ period: { start: 2011 }
559
+ period_evidence: instrument-in-force-upper-bound
560
+ matching: strict
561
+ format:
562
+ pattern: "CD99L"
563
+ regex: '\ACD[- ]?\d{2}[- ]?[A-Z]\z'
564
+ format_evidence: statutory
565
+ format_note: "art. 10: CD, two digits (00-99), then the State letter"
566
+ design:
567
+ plate: { w: 340, h: 120, unit: mm }
568
+ background: { color: "#1F3A93", finish: retroreflective, hex_basis: pantone-converted, spec_note: "Pantone 2945" }
569
+ foreground: "#FFFFFF"
570
+ band: { side: none }
571
+ emblem: { present: true, rendered: placeholder }
572
+ rear_differs: false
573
+ region_encoding: none
574
+ notes: >-
575
+ COS DIPLOMÀTIC — the diplomatic corps proper, below head-of-mission rank.
576
+ Two digits rather than the CMD series' one, on the same Pantone 2945
577
+ ground. The three-way split CMD / CD / A by rank, each with its own digit
578
+ count, is unusually granular for a microstate.
579
+ sources:
580
+ - "https://bopadocuments.blob.core.windows.net/bopa-documents/034135/html/GR20221110_09_12_43.html # Decret 456/2022 art. 10"
581
+
582
+ - id: ad-consular-cc
583
+ class: consular
584
+ categories: [car, van]
585
+ period: { start: 2011 }
586
+ period_evidence: instrument-in-force-upper-bound
587
+ matching: strict
588
+ format:
589
+ pattern: "CC999L"
590
+ regex: '\ACC[- ]?\d{3}[- ]?[A-Z]\z'
591
+ format_evidence: statutory
592
+ format_note: "art. 11: CC, THREE digits (000-999), then the State letter — the widest block in the diplomatic family"
593
+ design:
594
+ plate: { w: 340, h: 120, unit: mm }
595
+ background: { color: "#1F3A93", finish: retroreflective, hex_basis: pantone-converted, spec_note: "Pantone 2945" }
596
+ foreground: "#FFFFFF"
597
+ band: { side: none }
598
+ emblem: { present: true, rendered: placeholder }
599
+ rear_differs: false
600
+ region_encoding: none
601
+ notes: >-
602
+ COS CONSULAR. Shares the Pantone 2945 ground with the diplomatic series
603
+ and is distinguished only by the CC prefix and by having three digits.
604
+ sources:
605
+ - "https://bopadocuments.blob.core.windows.net/bopa-documents/034135/html/GR20221110_09_12_43.html # Decret 456/2022 art. 11"
606
+
607
+ - id: ad-diplomatic-staff-a
608
+ class: diplomatic
609
+ categories: [car, van]
610
+ period: { start: 2011 }
611
+ period_evidence: instrument-in-force-upper-bound
612
+ matching: strict
613
+ format:
614
+ pattern: "A99L"
615
+ regex: '\AA[- ]?\d{2}[- ]?[A-Z]\z'
616
+ format_evidence: statutory
617
+ format_note: >-
618
+ art. 12: the letter A, two digits, then the State letter. This is why A
619
+ appears in Llei 24/2014's list of prefixes a personalised plate may not
620
+ imitate, alongside MT, CD, CMD and CC.
621
+ design:
622
+ plate: { w: 340, h: 120, unit: mm }
623
+ background: { color: "#3E6DB5", finish: retroreflective, hex_basis: pantone-converted, spec_note: "Pantone 299 — a LIGHTER blue than the 2945 of the CMD/CD/CC series, and the distinction is deliberate and statutory" }
624
+ foreground: "#FFFFFF"
625
+ band: { side: none }
626
+ emblem: { present: true, rendered: placeholder }
627
+ rear_differs: false
628
+ region_encoding: none
629
+ notes: >-
630
+ ADMINISTRATIVE AND TECHNICAL STAFF of embassies. Kept separate from
631
+ ad-diplomatic-cd because the instrument gives it a DIFFERENT PANTONE —
632
+ 299 against 2945 — so rank is encoded in the shade of blue as well as in
633
+ the prefix. That is a real design fact and would be lost by folding this
634
+ into the CD series.
635
+ sources:
636
+ - "https://bopadocuments.blob.core.windows.net/bopa-documents/034135/html/GR20221110_09_12_43.html # Decret 456/2022 art. 12"
637
+
638
+ # =========================================================================
639
+ # TEMPORARY, TRADE, HISTORIC AND MACHINERY.
640
+ # =========================================================================
641
+ - id: ad-temporary-mt
642
+ class: temporary
643
+ categories: [car, van, motorcycle]
644
+ period: { start: 1999 }
645
+ period_evidence: instrument-in-force-upper-bound
646
+ period_note: >-
647
+ The MT series is older than the current Reglament: the 1999 Codi already
648
+ carried it at art. 156 — "En les plaques de matriculació temporal, hi han
649
+ de constar les lletres MT, seguides del número d'ordre, del mes i de l'any
650
+ en curs" — so 1999 is an upper bound resting on a repealed but read
651
+ instrument, and the current spec is art. 13 of Decret 456/2022.
652
+ matching: strict
653
+ format:
654
+ pattern: "MT 9999"
655
+ regex: '\AMT[- ]?\d{4}\z'
656
+ format_evidence: statutory
657
+ format_note: >-
658
+ MT IS TREATED AS PART OF THE SERIAL, and that is sourced rather than
659
+ assumed: Llei 24/2014 art. 7.1(i) forbids a personalised plate from
660
+ consisting of "les lletres 'MT', 'CD', 'CMD', 'A', 'CC', seguides de
661
+ xifres" — grouping MT with the unambiguous diplomatic serial prefixes.
662
+ Contrast "la paraula PROVA" in the same provision, which the statute
663
+ treats as a WORD and which this file therefore models as a legend rather
664
+ than as serial (see ad-dealer-prova).
665
+ expiry_marking: >-
666
+ The plate also carries the expiry MONTH in Roman numerals and the YEAR
667
+ in Arabic numerals, in a red field at the upper right. That is a
668
+ validity device, not a serial component, and it does not appear in the
669
+ pattern.
670
+ design:
671
+ plate: { w: 340, h: 120, unit: mm, note: "225x115 mm for motorcycles" }
672
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
673
+ foreground: "#000000"
674
+ accent: { color: "#E1051E", hex_basis: pantone-converted, spec_note: "Pantone 485 — the MT panel, the expiry panel, the AND mark and the legend are all in this red on this series" }
675
+ band: { side: none }
676
+ emblem: { present: true, rendered: placeholder }
677
+ rear_differs: false
678
+ region_encoding: none
679
+ notes: >-
680
+ MATRÍCULA TEMPORAL — temporary/tourist registration. Distinguished from
681
+ the ordinary plate by red furniture rather than by a coloured ground: the
682
+ AND mark and the PRINCIPAT D'ANDORRA legend, blue on every other white
683
+ plate, are red here.
684
+ sources:
685
+ - "https://bopadocuments.blob.core.windows.net/bopa-documents/034135/html/GR20221110_09_12_43.html # Decret 456/2022 art. 13"
686
+ - "https://bopadocuments.blob.core.windows.net/bopa-documents/011040/html/199A6.html # Llei del Codi de la circulació de 10-6-99 art. 156 — the MT series' earlier basis"
687
+ - "https://bopadocuments.blob.core.windows.net/bopa-documents/026067/html/lo26067002.html # Llei 24/2014 art. 7.1(i) — MT grouped with the serial prefixes"
688
+
689
+ - id: ad-dealer-prova
690
+ class: dealer
691
+ categories: [car, van, motorcycle]
692
+ period: { start: 1999 }
693
+ period_evidence: instrument-in-force-upper-bound
694
+ period_note: >-
695
+ Also older than the current Reglament: the 1999 Codi art. 151(b) carried
696
+ it — "Les plaques han de contenir la menció 'PROVA', han de portar gravat
697
+ un número d'ordre i l'any del seu lliurament, que també és l'any de
698
+ validesa." Current spec at art. 16 of Decret 456/2022.
699
+ matching: strict
700
+ format:
701
+ pattern: "999"
702
+ regex: '\A\d{1,3}\z'
703
+ printed_form: "PROVA 999"
704
+ format_evidence: statutory
705
+ format_note: >-
706
+ THE SERIAL IS THE THREE DIGITS; "PROVA" IS A LEGEND. art. 16.1 says so
707
+ in terms — "A la part inferior s'hi troba la llegenda 'PROVA'" — and
708
+ Llei 24/2014 art. 7.1(i) reinforces it by calling PROVA "la paraula"
709
+ (the word) where it calls MT, CD, CMD, A and CC "les lletres" grouped
710
+ with digits. The statute's own vocabulary distinguishes a legend from a
711
+ serial prefix, and this file follows it.
712
+ matching_caveat: >-
713
+ As with sm-police, taking the legend out leaves a regex of one to three
714
+ digits, which is NOT DISCRIMINATIVE. The series is identified by its
715
+ unmistakable colours, not by its string. `printed_form` records what a
716
+ human reads.
717
+ expiry_marking: "the plate also carries the expiry month in Roman numerals and the year, per art. 16"
718
+ design:
719
+ plate: { w: 300, h: 190, unit: mm, note: "art. 16 — a tall, near-square plate unlike any other in the catalogue" }
720
+ background: { color: "#00A651", finish: retroreflective, hex_basis: pantone-converted, spec_note: "Pantone 342 — GREEN ground, verbatim: 'El fons de les plaques és de color verd (fons Pantone 342)'" }
721
+ foreground: "#E1051E"
722
+ foreground_note: "RED characters, Pantone 485 — 'El bordó és de color vermell (fons Pantone 485)'"
723
+ hex_basis: pantone-converted
724
+ border: { color: "#E1051E", hex_basis: pantone-converted }
725
+ legend: { text: "PROVA", position: bottom }
726
+ band: { side: none }
727
+ emblem: { present: true, rendered: placeholder }
728
+ rear_differs: false
729
+ region_encoding: none
730
+ notes: >-
731
+ DEALER / TEST PLATES, and visually the most striking in the catalogue: RED
732
+ characters on a GREEN ground, both Pantone-specified, on a 300x190 mm
733
+ plate. Nothing else in the microstates group looks remotely like it.
734
+ sources:
735
+ - "https://bopadocuments.blob.core.windows.net/bopa-documents/034135/html/GR20221110_09_12_43.html # Decret 456/2022 art. 16.1"
736
+ - "https://bopadocuments.blob.core.windows.net/bopa-documents/011040/html/199A6.html # Llei del Codi de la circulació de 10-6-99 art. 151(b)"
737
+
738
+ - id: ad-historic-failed-itv
739
+ class: historic
740
+ categories: [car, van, motorcycle]
741
+ period: { start: 2011 }
742
+ period_evidence: instrument-in-force-upper-bound
743
+ matching: strict
744
+ format:
745
+ pattern: "L99"
746
+ regex: '\A[A-Z]\d{2}\z'
747
+ format_evidence: statutory
748
+ format_note: "art. 14: one letter and two digits — the shortest serial in the Andorran system"
749
+ design:
750
+ plate: { w: 330, h: 140, unit: mm }
751
+ background: { color: "#E1051E", finish: retroreflective, hex_basis: pantone-converted, spec_note: "Pantone 485 RED GROUND — the only red-ground plate in the catalogue" }
752
+ foreground: "#000000"
753
+ legend: { text: "VEHICLE HISTÒRIC" }
754
+ band: { side: none }
755
+ emblem: { present: true, rendered: placeholder }
756
+ rear_differs: false
757
+ region_encoding: none
758
+ notes: >-
759
+ HISTORIC VEHICLES THAT HAVE NOT PASSED THE ROADWORTHINESS TEST — "type I"
760
+ in the Reglament's scheme (art. 14). Andorra splits its historic regime by
761
+ ITV OUTCOME rather than by vehicle age, giving red plates to vehicles that
762
+ failed and white ones to those that passed. That is a genuinely unusual
763
+ design decision and it is why two historic series appear here.
764
+ sources:
765
+ - "https://bopadocuments.blob.core.windows.net/bopa-documents/034135/html/GR20221110_09_12_43.html # Decret 456/2022 art. 14"
766
+
767
+ - id: ad-historic-passed-itv
768
+ class: historic
769
+ categories: [car, van, motorcycle]
770
+ period: { start: 2011 }
771
+ period_evidence: instrument-in-force-upper-bound
772
+ matching: strict
773
+ format:
774
+ pattern: "58999"
775
+ regex: '\A5[89]\d{3}\z'
776
+ format_evidence: statutory
777
+ format_note: >-
778
+ A RESERVED NUMERIC BLOCK, 58001 to 59999 (art. 15) — carved out of the
779
+ ordinary five-digit space rather than given its own prefix. The human
780
+ pattern spells a representative value from the 58xxx half because the
781
+ pattern DSL cannot express a numeric range; `regex` covers the whole
782
+ block. The lower bound 58001 is not encoded, so the regex accepts 58000,
783
+ which the block does not contain.
784
+ design:
785
+ plate: { w: 330, h: 140, unit: mm }
786
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
787
+ foreground: "#000000"
788
+ border: { color: "#000000" }
789
+ band: { side: none }
790
+ emblem: { present: true, rendered: placeholder }
791
+ rear_differs: false
792
+ region_encoding: none
793
+ notes: >-
794
+ HISTORIC VEHICLES THAT HAVE PASSED THE ROADWORTHINESS TEST — "type II"
795
+ (art. 15). Black on white with a black border, and identified by a
796
+ RESERVED NUMBER RANGE rather than by any letter. It is the only Andorran
797
+ series whose identity lives entirely in its numeric block, which makes it
798
+ the one case where a bare five-digit string can be attributed with
799
+ confidence. Note the consequence for ad-moped, whose 00000-99999 space
800
+ nominally includes this block.
801
+ sources:
802
+ - "https://bopadocuments.blob.core.windows.net/bopa-documents/034135/html/GR20221110_09_12_43.html # Decret 456/2022 art. 15"
803
+
804
+ - id: ad-special-vehicle
805
+ class: standard
806
+ categories: [machine, truck]
807
+ period: { start: 1999 }
808
+ period_evidence: instrument-in-force-upper-bound
809
+ period_note: >-
810
+ The 1999 Codi art. 204.7 already required special-vehicle plates of a
811
+ distinct type — "Les matrícules han de ser de les dimensions i del tipus
812
+ especials diferents de les matrícules normals i segons el model oficial" —
813
+ so 1999 is an upper bound; art. 17 of Decret 456/2022 is the current spec.
814
+ matching: strict
815
+ format:
816
+ pattern: "9999"
817
+ regex: '\A\d{4}\z'
818
+ format_evidence: statutory
819
+ format_note: >-
820
+ FOUR numeric characters, 0000 to 9999, verbatim: "A les plaques de
821
+ matrícula s'hi inscriu un grup de quatre caràcters numèrics que va des
822
+ del 0000 fins al 9999." Recorded against secondary accounts that give
823
+ three.
824
+ design:
825
+ plate: { w: 225, h: 115, unit: mm }
826
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed, spec_note: "verbatim: 'El fons de les plaques és retroreflector, de color blanc' — WHITE, against secondary accounts that describe a sky-blue ground" }
827
+ foreground: "#E1051E"
828
+ foreground_note: "red, Pantone 485, embossed, with a matching border"
829
+ hex_basis: pantone-converted
830
+ legend: { text: "VEHICLE ESPECIAL", color: "#005B99", hex_basis: pantone-converted, spec_note: "Pantone 300 blue, top" }
831
+ legend_bottom: { text: "PRINCIPAT D'ANDORRA", color: "#005B99", hex_basis: pantone-converted }
832
+ band: { side: none }
833
+ emblem: { present: true, rendered: placeholder }
834
+ rear_differs: false
835
+ region_encoding: none
836
+ notes: >-
837
+ VEHICLES ESPECIALS. Red characters on a WHITE retroreflective ground with
838
+ blue Pantone 300 legends. Two corrections to the secondary record are
839
+ carried here: the ground is white and not sky blue, and the serial is FOUR
840
+ digits and not three. Both come from art. 17.1 verbatim.
841
+ sources:
842
+ - "https://bopadocuments.blob.core.windows.net/bopa-documents/034135/html/GR20221110_09_12_43.html # Decret 456/2022 art. 17.1"
843
+ - "https://bopadocuments.blob.core.windows.net/bopa-documents/011040/html/199A6.html # Llei del Codi de la circulació de 10-6-99 art. 204.7"
844
+
845
+ - id: ad-snow-vehicle
846
+ class: standard
847
+ categories: [snow-vehicle]
848
+ period: { start: 2011 }
849
+ period_evidence: instrument-in-force-upper-bound
850
+ matching: strict
851
+ format:
852
+ pattern: "9999"
853
+ regex: '\A\d{4}\z'
854
+ format_evidence: statutory
855
+ design:
856
+ plate: { w: 225, h: 115, unit: mm }
857
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
858
+ foreground: "#E1051E"
859
+ hex_basis: pantone-converted
860
+ legend: { text: "MOTO DE NEU", color: "#005B99", hex_basis: pantone-converted }
861
+ band: { side: none }
862
+ emblem: { present: true, rendered: placeholder }
863
+ rear_differs: false
864
+ region_encoding: none
865
+ notes: >-
866
+ MOTOS DE NEU — snowmobiles, with their own plate under art. 18. A
867
+ Pyrenean microstate having a statutory snowmobile plate is exactly the
868
+ kind of jurisdiction-specific series a general dataset misses; it shares
869
+ the special-vehicle design and differs only in its legend.
870
+ sources:
871
+ - "https://bopadocuments.blob.core.windows.net/bopa-documents/034135/html/GR20221110_09_12_43.html # Decret 456/2022 art. 18"
872
+
873
+ - id: ad-giny-mecanic
874
+ class: standard
875
+ categories: [machine]
876
+ period: { start: 2011 }
877
+ period_evidence: instrument-in-force-upper-bound
878
+ matching: strict
879
+ format:
880
+ pattern: "9999"
881
+ regex: '\A\d{4}\z'
882
+ format_evidence: statutory
883
+ design:
884
+ plate: { w: 225, h: 115, unit: mm }
885
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
886
+ foreground: "#E1051E"
887
+ hex_basis: pantone-converted
888
+ bottom_band: { h: 25, unit: mm, color: "#E1051E", note: "a 25 mm red band along the bottom carrying 'NO APTE VIA PÚBLICA' in white" }
889
+ legend: { text: "GINY MECÀNIC", color: "#E1051E" }
890
+ legend_warning: { text: "NO APTE VIA PÚBLICA", color: "#FFFFFF" }
891
+ band: { side: none }
892
+ emblem: { present: true, rendered: placeholder }
893
+ rear_differs: false
894
+ region_encoding: none
895
+ notes: >-
896
+ GINYS MECÀNICS — off-road machinery NOT roadworthy, and the plate says so
897
+ on its face: a red band along the bottom reading "NO APTE VIA PÚBLICA"
898
+ (not fit for the public highway) in white. The Reglament's own title names
899
+ these machines, which is why it is called a regulation on plates "en
900
+ vehicles i ginys mecànics no aptes per a la via pública". A plate that
901
+ declares its own vehicle unfit for the road is unique in this dataset.
902
+ sources:
903
+ - "https://bopadocuments.blob.core.windows.net/bopa-documents/034135/html/GR20221110_09_12_43.html # Decret 456/2022 art. 19"
904
+
905
+ # =========================================================================
906
+ # PERSONALISED PLATES — by LAW, not by decree, and with a grammar that is a
907
+ # constraint rather than a template.
908
+ # =========================================================================
909
+ - id: ad-personalized
910
+ class: personalized
911
+ categories: [car, van, motorcycle]
912
+ period: { start: 2014 }
913
+ period_evidence: instrument-in-force
914
+ period_note: >-
915
+ Llei 24/2014, del 30 d'octubre, BOPA núm. 67, any 2014, published
916
+ 25 November 2014. Note that Andorra puts personalised plates in a LAW
917
+ passed by the Consell General and sanctioned by both Co-Princes, where
918
+ San Marino uses a decree — a markedly higher instrument for the same
919
+ subject.
920
+ matching: recall-only
921
+ format:
922
+ pattern: "LL999"
923
+ regex: '\A(?=[A-Z0-9]{2,5}\z)[A-Z]+\d*\z'
924
+ format_evidence: statutory
925
+ format_note: >-
926
+ `recall-only`, because the regex is WIDER than the statutory grammar in
927
+ one respect it cannot capture. Llei 24/2014 art. 7.1 gives a set of
928
+ constraints rather than a template: only letters, or letters THEN digits
929
+ in that order (a) and (c); Catalan alphabet, uppercase, unaccented (b);
930
+ minimum 2 and maximum 5 characters (g); and — the rule the regex cannot
931
+ express — "La matrícula de 5 caràcters ha de tenir un mínim de 2
932
+ lletres" (h). The regex enforces the length bound and the letters-then-
933
+ digits ordering but accepts a five-character string with only one
934
+ letter, which (h) forbids. A match is therefore a shape hit.
935
+ reserved_strings:
936
+ rule: >-
937
+ art. 7.1(i): a personalised plate may not consist only of the letters
938
+ "MT", "CD", "CMD", "A" or "CC" followed by digits, nor of the word
939
+ "PROVA" — i.e. it may not imitate the temporary, diplomatic, consular,
940
+ embassy-staff or dealer series. This enumeration is what lets this
941
+ file distinguish serial PREFIXES from LEGENDS elsewhere; see
942
+ ad-dealer-prova.
943
+ design:
944
+ plate: { w: 340, h: 120, unit: mm }
945
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
946
+ foreground: "#000000"
947
+ band: { side: none }
948
+ emblem: { present: true, rendered: placeholder }
949
+ national_mark: { text: "AND", color: "#003399" }
950
+ legend: { text: "PRINCIPAT D'ANDORRA", color: "#003399" }
951
+ rear_differs: false
952
+ region_encoding: none
953
+ notes: >-
954
+ PLAQUES DE MATRÍCULA PERSONALITZADA, from 2014. Two features are worth a
955
+ consumer's attention: the grammar is a CONSTRAINT SET rather than an
956
+ enumerated pattern list (unlike San Marino's, which was enumerated until
957
+ 2022 and then also became a constraint), and the reserved-string rule at
958
+ art. 7.1(i) is the cleanest statutory statement in this whole dossier of
959
+ which alphabetic markers Andorra regards as serial prefixes.
960
+ sources:
961
+ - "https://bopadocuments.blob.core.windows.net/bopa-documents/026067/html/lo26067002.html # Llei 24/2014, del 30 d'octubre, art. 7.1 lit. a-i"