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,1372 @@
1
+ # plates/mx.yml — Mexico (PRD-PLATES gate L3).
2
+ #
3
+ # EVERY format, dimension, character-metric, alphabet and series-allocation
4
+ # claim in this file comes from ONE primary instrument and its predecessor,
5
+ # both read off the Diario Oficial de la Federación:
6
+ #
7
+ # * NOM-001-SCT-2-2016 — "Placas metálicas, calcomanías de identificación y
8
+ # tarjetas de circulación empleadas en automóviles, tractocamiones,
9
+ # autobuses, camiones, motocicletas, remolques, semirremolques,
10
+ # convertidores y grúas, matriculados en la República Mexicana, licencia
11
+ # federal de conductor, calcomanía de verificación físico-mecánica, listado
12
+ # de series asignadas por tipo de vehículo, servicio y entidad federativa o
13
+ # dependencia de gobierno, especificaciones y método de prueba",
14
+ # DOF 24 June 2016. In force sixty calendar days after publication
15
+ # (numeral 13, verbatim: "Para los efectos correspondientes, la presente
16
+ # Norma Oficial Mexicana entrará en vigor sesenta días naturales contados a
17
+ # partir de la fecha de su publicación en el Diario Oficial de la
18
+ # Federación") — 23 August 2016.
19
+ # * NOM-001-SCT-2-2000, DOF 26 January 2001, in force sixty calendar days
20
+ # later (27 March 2001) and CANCELLED by the 2016 NOM (Transitorio SEGUNDO,
21
+ # verbatim: "Una vez que entre en vigor la presente Norma Oficial Mexicana
22
+ # definitiva, se cancela la Norma Oficial Mexicana NOM-001-SCT-2-2000 …
23
+ # publicada en el Diario Oficial de la Federación el 26 de enero de 2001, y
24
+ # sus modificaciones publicadas con fecha 1 de julio de 2002 y 3 de marzo de
25
+ # 2003"). This is the ONE-SERIES-BACK layer.
26
+ # * The ACUERDO of 25 September 2000 (DOF) — the Secretarial agreement the
27
+ # NOM is issued under, which is where the PLATE VALIDITY rule lives and,
28
+ # decisively for this file, where the COLOURS are made optional.
29
+ #
30
+ # SIX STRUCTURAL FACTS THAT SHAPE THIS FILE
31
+ #
32
+ # 1. MEXICO IS FEDERATED IN ISSUANCE AND UNITARY IN FORMAT — SO IT GETS ONE
33
+ # FILE, NOT THIRTY-TWO. The 31 states and Ciudad de México each register
34
+ # their own vehicles and each design their own plate artwork, but the
35
+ # CHARACTER ORDER of every Mexican serial is fixed nationally by the SCT in
36
+ # Tabla C del Apéndice "B" Normativo, and the SERIAL RANGES are allocated
37
+ # nationally in Apéndice "C" Normativo so that no two states can collide.
38
+ # NOM 5.1.4.4, verbatim: "La conformación de los caracteres de
39
+ # identificación (letras y dígitos) que integran los números de serie para
40
+ # los diferentes tipos de placas, deben sujetarse a lo establecido en la
41
+ # Tabla C del Apéndice 'B' Normativo." Every `format.pattern` below is a row
42
+ # of that table. Contrast us-*.yml and (in this same wave) au-*/ca-*: those
43
+ # federations set their formats per state, Mexico does not.
44
+ #
45
+ # 2. THE COLOURS ARE OPTIONAL AND STATE-CHOSEN — SO NO STANDARD SERIES HERE
46
+ # CARRIES A BACKGROUND HEX. The 2000 Acuerdo, ARTICULO TERCERO, verbatim:
47
+ # "la combinación de colores a utilizar en los caracteres de identificación,
48
+ # fondo y leyendas, serán optativos, para lo cual deben utilizarse colores
49
+ # contrastantes, fondo oscuro con caracteres claros o fondo claro con
50
+ # caracteres oscuros, debiendo remitir a la Secretaría, por conducto de la
51
+ # Dirección General de Autotransporte Federal para su autorización, los
52
+ # modelos de placas que determinen." A Mexican plate's colours are therefore
53
+ # a per-state, per-canje FACT that changes every three years (see 3), not a
54
+ # national one — so `design.background.color` is ABSENT from every ordinary
55
+ # series in this file and its absence is a sourced finding, exactly as
56
+ # plates/gb.yml omits `design.plate` because no British regulation fixes it.
57
+ # The NOM prescribes colours in exactly one place — Sistema Nacional de
58
+ # Protección Civil (5.1.6.5.1: "Placa metálica de color rojo pantone 200C al
59
+ # 100%") — and that is the only series here that carries one.
60
+ #
61
+ # 3. THE THREE-YEAR CYCLE IS REAL, IT IS PRIMARY, AND IT IS NOT A REDESIGN
62
+ # MANDATE. Acuerdo ARTICULO SEPTIMO, verbatim: "La vigencia de las placas
63
+ # será de tres años, contados a partir de que las entidades federativas, el
64
+ # Distrito Federal o la Secretaría hayan realizado sus canjes totales de
65
+ # placas, ya sea en los años 1998, 1999 o 2000, de tal forma que los
66
+ # siguientes canjes totales deberán efectuarse en los años 2001, 2002 o 2003,
67
+ # según corresponda y así sucesivamente en los trienios posteriores." NOM
68
+ # 2016 numeral 9.4 keeps that rule alive by reference. What the instruments
69
+ # fix is a REPLACEMENT cycle (canje) whose phase differs per state; the
70
+ # widely repeated "Mexican states redesign their plates every three years"
71
+ # is the consequence, not the rule, and the artwork of a given state in a
72
+ # given trienio is NOT modelled here (PRD-PLATES §2.5).
73
+ #
74
+ # 4. THE HYPHENS ARE PHYSICAL. NOM Apéndice A, under every figure, verbatim:
75
+ # "Las dimensiones de los guiones serán de 16 x 5.6." — the group separator
76
+ # is a stamped 16 × 5.6 mm bar, not typography, and 5.1.4.3 says the figures
77
+ # "contienen un guión o dos guiones de separación entre letras y dígitos".
78
+ # Every regex here therefore spells the hyphen as a MANDATORY literal
79
+ # (PRD-PLATES §2.6 rule 2: regexes are written in printed form). The
80
+ # five-character motorcycle formats print NO separator and carry none.
81
+ #
82
+ # 5. FRONT AND REAR DIFFER — BY A LETTER, NOT A COLOUR. NOM 5.3.5, verbatim:
83
+ # "Asimismo, se colocarán en la esquina superior izquierda y en diferente
84
+ # color cada una, la letra 'F' para la placa frontal y la letra 'T' para la
85
+ # placa trasera del vehículo." Both plates carry the same serial; the F/T
86
+ # marker is what differs. `rear_differs: true` on the road series records it.
87
+ # 5.3.4: "Las placas deberán tener impreso el Escudo Nacional en la parte
88
+ # inferior izquierda."
89
+ #
90
+ # 6. FOUR LETTERS ARE FORBIDDEN, AND ONLY SINCE 2016. Apéndice C repeats under
91
+ # every per-entity table: "NOTA: EN LOS CARACTERES ALFABÉTICOS NO DEBERÁN
92
+ # UTILIZARSE LAS LETRAS I, Ñ, O, Q." No equivalent note appears anywhere in
93
+ # NOM-001-SCT-2-2000, so the 2001-era series in this file carry NO
94
+ # `regex_strict` — their alphabet is unrestricted so far as any primary
95
+ # secured for this pass says. Ñ is outside this dataset's serial alphabet
96
+ # (plates/_meta/separators.yml) and so never reaches a regex.
97
+ #
98
+ # REGEX POLICY (identical to plates/nl.yml, de.yml and gb.yml): `format.regex`
99
+ # is the LINT-ROUND-TRIPPABLE regex — the lint generates serials from
100
+ # `format.pattern` (L -> any A-Z, 9 -> any 0-9) and requires the regex to accept
101
+ # every one, so `regex` can never be narrower than the pattern's own alphabet.
102
+ # `format.regex_strict` carries the sourced 23-letter NOM alphabet, which
103
+ # `regex` cannot carry because the lint generates "I", "O" and "Q".
104
+ jurisdiction: mx
105
+ authority:
106
+ name: Secretaría de Comunicaciones y Transportes (SCT) — Dirección General de Autotransporte Federal
107
+ url: "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016"
108
+ binding: vehicle
109
+ binding_note: >-
110
+ Mexican plates bind to the VEHICLE: the NOM's stated purpose (Considerando)
111
+ is "que los vehículos automotores nacionales que circulan dentro del
112
+ territorio nacional, se encuentren debidamente identificados y se compruebe
113
+ la posesión legal de los mismos". Registration is state-level (the entidad
114
+ federativa or the Secretaría for federal carriers), and a change of state
115
+ means a new plate out of the receiving state's allocated range.
116
+
117
+ instrument:
118
+ citation: "NOM-001-SCT-2-2016, Norma Oficial Mexicana, expedida por el Comité Consultivo Nacional de Normalización de Transporte Terrestre (Subsecretaría de Transporte, SCT)"
119
+ published: "2016-06-24"
120
+ in_force: "2016-08-23" # publication + 60 días naturales (numeral 13)
121
+ in_force_rule: >-
122
+ Numeral 13 (Vigencia), verbatim: "Para los efectos correspondientes, la
123
+ presente Norma Oficial Mexicana entrará en vigor sesenta días naturales
124
+ contados a partir de la fecha de su publicación en el Diario Oficial de la
125
+ Federación."
126
+ cancels: "NOM-001-SCT-2-2000 (DOF 26-01-2001, y sus modificaciones DOF 01-07-2002 y 03-03-2003) — Transitorio SEGUNDO"
127
+ enabling: >-
128
+ Ley Orgánica de la Administración Pública Federal art. 36 fracc. I, XII y
129
+ XXVII; Ley Federal sobre Metrología y Normalización arts. 1, 38 fracc. II,
130
+ 40 fracc. XVI, 41, 43, 47, 51 y 64; Ley de Caminos, Puentes y Autotransporte
131
+ Federal art. 5 fracc. VI; Reglamento de Tránsito en Carreteras y Puentes de
132
+ Jurisdicción Federal art. 85; and the Acuerdo Secretarial published in the
133
+ DOF on 25 September 2000, Décimo Sexto.
134
+ draft_history: "PROY-NOM-001-SCT2-2012 was ordered published on 21 March 2013 (Considerando) — the definitive NOM arrived three years later."
135
+ source: "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # front matter, Considerandos, numerales 1-15, Apéndices A/B/C; accessed 2026-08-02"
136
+ licence: >-
137
+ DOF texts are edicts of the Mexican federal government. Ley Federal del
138
+ Derecho de Autor art. 14 fracc. VIII excludes from copyright protection
139
+ "los textos legislativos, reglamentarios, administrativos o judiciales, así
140
+ como sus traducciones oficiales" (publication of them as a compilation is
141
+ reserved to the State). Facts are extracted; no DOF text is redistributed
142
+ beyond the quoted fragments this file cites.
143
+
144
+ # ---------------------------------------------------------------------------
145
+ # Jurisdiction-wide facts, cited once and referenced per series.
146
+ # ---------------------------------------------------------------------------
147
+ charset_defaults:
148
+ letters: [A, B, C, D, E, F, G, H, J, K, L, M, N, P, R, S, T, U, V, W, X, Y, Z]
149
+ excluded_letters: [I, O, Q]
150
+ excluded_letters_also: ["Ñ"]
151
+ excluded_letters_note: >-
152
+ "NOTA: EN LOS CARACTERES ALFABÉTICOS NO DEBERÁN UTILIZARSE LAS LETRAS
153
+ I, Ñ, O, Q." — repeated verbatim under every per-entity allocation table in
154
+ Apéndice C Normativo of the 2016 NOM. The rule is NEW in 2016: no such note
155
+ appears in NOM-001-SCT-2-2000, whose own Apéndice C tables carry none.
156
+ source: "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice C Normativo, per-entity tables, closing NOTA"
157
+
158
+ common:
159
+ dimensions:
160
+ road: { w: 300, h: 150, unit: mm }
161
+ motorcycle_2016: { w: 215, h: 134, unit: mm }
162
+ motorcycle_2001: { w: 150, h: 100, unit: mm }
163
+ note: >-
164
+ NOM 5.1.1, verbatim: "Las placas metálicas para automóviles,
165
+ tractocamiones, autobuses, camiones, remolques, semirremolques y
166
+ convertidores (dolly), grúas deben ser rectangulares con las siguientes
167
+ dimensiones: Largo 300 mm / Ancho 150 mm." 5.1.2: "Placas metálicas para
168
+ motocicleta deben ser rectangulares con las siguientes dimensiones:
169
+ Largo 215 mm / Ancho 134 mm." The MOTORCYCLE plate GREW in 2016: the 2000
170
+ NOM's 5.1.1.2 gave 150 × 100 mm. The road plate is unchanged at 300 × 150
171
+ (the North American 12 × 6 inch convention).
172
+ corners: "radius 14,0 mm; a 3,0 mm hole 13,0 mm from the periphery in the upper-right corner for the SCT aluminium seal; four 20,0 × 6,0 mm mounting slots (two on motorcycle plates); 3,0 mm perimeter ceja (5.1.1.1, 5.1.2.1)"
173
+ source: "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # 5.1.1, 5.1.1.1, 5.1.2, 5.1.2.1"
174
+ characters:
175
+ emboss_height_mm: 2.0
176
+ stroke_width_road_mm: 5.6
177
+ stroke_width_motorcycle_mm: 5.0
178
+ hyphen_mm: { w: 16, h: 5.6 }
179
+ note: >-
180
+ 5.1.3.1, verbatim: "los caracteres de las placas metálicas para
181
+ automóviles, tractocamiones, autobuses, camiones, remolques,
182
+ semirremolques y convertidores (dolly), grúas, deben ser troquelados en
183
+ alto relieve con una altura de 2,0 mm y un ancho de rasgo de 5,6 mm …
184
+ utilizando los patrones de letras y dígitos establecidos en las figuras de
185
+ la 36 a la 39 del Apéndice A Normativo. Para el caso de motocicletas los
186
+ caracteres deberán ser troquelados en alto relieve con una altura de
187
+ 2,0 mm y un ancho de rasgo de 5,0 mm." 5.1.3.2: "El área de caracteres
188
+ alfanuméricos de la serie de placa deberá ser exclusiva y estar libre de
189
+ figuras, distintivos o leyendas que dificulten su lectura."
190
+ font_posture: >-
191
+ The glyph shapes are STATUTORY DRAWINGS (figuras 36-39 of Apéndice A
192
+ Normativo), not a named typeface — the same posture PRD-PLATES §6 records
193
+ for the UK, Germany and Spain. No licensable font is mandated and none is
194
+ recorded here.
195
+ source: "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # 5.1.3.1, 5.1.3.2, 5.1.4.3 (guiones 16 x 5.6)"
196
+ security:
197
+ two_d_code: "20 × 20 mm two-dimensional error-correcting code printed directly on the reflective sheeting, controlled by the SCT (5.3.11.1)"
198
+ seal: "aluminium rivet 6,5-7,5 mm bearing 'SCT' on the face and the manufacturer's registration number on the back (5.3.1), plus two engraved seals in the sheeting itself (5.3.2)"
199
+ escudo: "Escudo Nacional printed at the lower left of every plate (5.3.4)"
200
+ front_rear: "letter 'F' (frontal) or 'T' (trasera) in the upper-left corner, each in a different colour (5.3.5)"
201
+ source: "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # 5.3.1, 5.3.2, 5.3.4, 5.3.5, 5.3.11.1"
202
+ validity:
203
+ years: 3
204
+ note: >-
205
+ Acuerdo (DOF 25-09-2000) ARTICULO SEPTIMO, verbatim: "La vigencia de las
206
+ placas será de tres años, contados a partir de que las entidades
207
+ federativas, el Distrito Federal o la Secretaría hayan realizado sus
208
+ canjes totales de placas, ya sea en los años 1998, 1999 o 2000, de tal
209
+ forma que los siguientes canjes totales deberán efectuarse en los años
210
+ 2001, 2002 o 2003, según corresponda y así sucesivamente en los trienios
211
+ posteriores." NOM 2016 numeral 9.4 keeps it in force by reference: "La
212
+ vigencia de las placas y calcomanías se sujetará a lo dispuesto en el
213
+ artículo séptimo del Acuerdo Secretarial … publicado en el Diario Oficial
214
+ de la Federación el 25 de Septiembre de 2000." In practice states run
215
+ their canje on their own phase, so the trienio boundary is per-state and
216
+ is NOT modelled as a series period.
217
+ source: "https://www.dof.gob.mx/nota_detalle.php?codigo=2060390&fecha=25/09/2000 # ARTICULO SEPTIMO"
218
+ colours:
219
+ posture: state-optional
220
+ note: >-
221
+ See file header §2. Acuerdo ARTICULO TERCERO makes the colour combination
222
+ optativa for every canje from 2000 onward, subject only to contrast and to
223
+ SCT authorization of the model. Consequently `design.background.color` is
224
+ absent from the ordinary series in this file. Where a colour IS
225
+ prescribed — Protección Civil — it is carried on that series and cited.
226
+ source: "https://www.dof.gob.mx/nota_detalle.php?codigo=2060390&fecha=25/09/2000 # ARTICULO TERCERO, penultimate paragraph"
227
+
228
+ region_encoding_note: >-
229
+ Mexican plates encode the issuing entidad federativa NOT by a prefix but by
230
+ the RANGE the serial falls in — a national allocation in Apéndice C Normativo.
231
+ The table is large, closed and primary, so it lives in
232
+ plates/_decode/mx-entity-series.yml and is referenced from the series below.
233
+
234
+ series:
235
+
236
+ # =========================================================================
237
+ # TRANSPORTE PRIVADO — ENTIDADES FEDERATIVAS. Tabla C row 9. This is the
238
+ # national private format and the single most important record in this file.
239
+ # =========================================================================
240
+ - id: mx-private-car-2016
241
+ class: standard
242
+ categories: [car]
243
+ period: { start: 2016 }
244
+ period_evidence: enabling-instrument
245
+ matching: strict
246
+ format:
247
+ pattern: "LLL-999-L"
248
+ regex: '\A[A-Z]{3}-\d{3}-[A-Z]\z'
249
+ regex_strict: '\A[ABCDEFGHJKLMNPRSTUVWXYZ]{3}-\d{3}-[ABCDEFGHJKLMNPRSTUVWXYZ]\z'
250
+ charset:
251
+ letters: [A, B, C, D, E, F, G, H, J, K, L, M, N, P, R, S, T, U, V, W, X, Y, Z]
252
+ notes: "I, Ñ, O and Q are excluded by the Apéndice C nota — see charset_defaults"
253
+ progression: >-
254
+ Allocated as a contiguous interval per entidad federativa
255
+ (AAA-001-A … AFZ-999-Z is Aguascalientes, AGA-001-A … CYZ-999-Z is Baja
256
+ California, and so on to ZDA-001-A … ZHZ-999-Z for Zacatecas). Within a
257
+ state the NOM publishes only the interval, not the issue order.
258
+ design:
259
+ plate: { w: 300, h: 150, unit: mm }
260
+ background: { finish: retroreflective }
261
+ emblem: { present: true, rendered: placeholder, note: "Escudo Nacional at the lower left (5.3.4), plus whatever gráficos, emblemas, logotipos or escudos the state elects under 5.3.3" }
262
+ rear_differs: true
263
+ rear_differs_note: "same serial front and rear; the front plate carries 'F' and the rear 'T' in the upper-left corner, each in a different colour (5.3.5)"
264
+ colour_note: "state-optional, contrasting, SCT-authorized — see common.colours"
265
+ region_encoding: "plates/_decode/mx-entity-series.yml # private_entity, car_from/car_to"
266
+ sources:
267
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice B Normativo Tabla C, row 9 'Transporte Privado (Entidades Federativas) — Automóviles — AAA-000-A'"
268
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice A, Figura 18 'Transporte Privado Automóvil Entidades Federativas' (siete caracteres); guiones 16 x 5.6"
269
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice C Normativo, 'NUMERACIÓN DE LAS PLACAS TRANSPORTES PRIVADOS ASIGNADAS A CADA ENTIDAD FEDERATIVA' — the 31 per-state ranges carried in the decode file"
270
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=2060390&fecha=25/09/2000 # Acuerdo ARTICULO TERCERO (colours optional) and SEPTIMO (three-year vigencia)"
271
+ notes: >-
272
+ THE current private-car plate of the 31 Mexican states, three letters,
273
+ three digits, one letter, created by NOM-001-SCT-2-2016. period.start 2016
274
+ is the INSTRUMENT date: the NOM was published on 24 June 2016 and came into
275
+ force on 23 August 2016, and each state then reaches the new format on its
276
+ own canje date, so a 2016 start is the earliest any AAA-000-A plate can
277
+ exist, not the date every state began issuing them. Ciudad de México is NOT
278
+ in this series — it issues A00-AAA (see mx-cdmx-private-car-2016), which is
279
+ why a CDMX plate can never collide with a state plate.
280
+
281
+ - id: mx-private-truck-2016
282
+ class: standard
283
+ categories: [truck]
284
+ period: { start: 2016 }
285
+ period_evidence: enabling-instrument
286
+ matching: strict
287
+ format:
288
+ pattern: "LL-9999-L"
289
+ regex: '\A[A-Z]{2}-\d{4}-[A-Z]\z'
290
+ regex_strict: '\A[ABCDEFGHJKLMNPRSTUVWXYZ]{2}-\d{4}-[ABCDEFGHJKLMNPRSTUVWXYZ]\z'
291
+ charset: { notes: "no I/Ñ/O/Q — see charset_defaults" }
292
+ design:
293
+ plate: { w: 300, h: 150, unit: mm }
294
+ background: { finish: retroreflective }
295
+ emblem: { present: true, rendered: placeholder }
296
+ rear_differs: true
297
+ colour_note: "state-optional — see common.colours"
298
+ region_encoding: "plates/_decode/mx-entity-series.yml # private_entity, truck_from/truck_to"
299
+ sources:
300
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 9 'Camiones — AA-0000-A'"
301
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice A Figura 19 'Transporte Privado Camión, Tractocamión y Grúas Entidades Federativas' (siete caracteres)"
302
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice C per-entity truck ranges (AA-0001-A … AF-9999-Z Aguascalientes, etc.)"
303
+ notes: >-
304
+ Private TRUCK, TRACTOCAMIÓN and GRÚA registrations of the 31 states — a
305
+ different serial space from the private car series and a different shape,
306
+ which is what lets a Mexican decoder tell a camión from an automóvil
307
+ without any other signal.
308
+
309
+ - id: mx-private-bus-2016
310
+ class: standard
311
+ categories: [bus]
312
+ period: { start: 2016 }
313
+ period_evidence: enabling-instrument
314
+ matching: strict
315
+ format:
316
+ pattern: "99-LLL-99"
317
+ regex: '\A\d{2}-[A-Z]{3}-\d{2}\z'
318
+ regex_strict: '\A\d{2}-[ABCDEFGHJKLMNPRSTUVWXYZ]{3}-\d{2}\z'
319
+ design:
320
+ plate: { w: 300, h: 150, unit: mm }
321
+ background: { finish: retroreflective }
322
+ rear_differs: true
323
+ colour_note: "state-optional — see common.colours"
324
+ region_encoding: mechanism
325
+ sources:
326
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 9 'Autobuses — 00-AAA-00'"
327
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice A Figura 20 'Transporte Privado Autobús Entidades Federativas'"
328
+ notes: >-
329
+ Private BUS registrations of the 31 states. The NOM allocates the
330
+ per-entity bus ranges in a separate Apéndice C table which was NOT carried
331
+ into plates/_decode/mx-entity-series.yml in this pass (recorded gap); a
332
+ decoder can still identify the SHAPE as a state private bus.
333
+
334
+ - id: mx-private-trailer-2016
335
+ class: trailer
336
+ categories: [trailer, semitrailer]
337
+ period: { start: 2016 }
338
+ period_evidence: enabling-instrument
339
+ matching: strict
340
+ format:
341
+ pattern: "9LL-999-L"
342
+ regex: '\A\d[A-Z]{2}-\d{3}-[A-Z]\z'
343
+ regex_strict: '\A\d[ABCDEFGHJKLMNPRSTUVWXYZ]{2}-\d{3}-[ABCDEFGHJKLMNPRSTUVWXYZ]\z'
344
+ design:
345
+ plate: { w: 300, h: 150, unit: mm }
346
+ background: { finish: retroreflective }
347
+ rear_differs: false
348
+ colour_note: "state-optional — see common.colours"
349
+ region_encoding: mechanism
350
+ sources:
351
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 9 'Remolques — 0AA-000-A'"
352
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice A Figura 21 'Transporte Privado Remolque Entidades Federativas'"
353
+ notes: >-
354
+ Private TRAILER and SEMITRAILER registrations of the 31 states. A trailer
355
+ carries ONE plate, so `rear_differs` is false and the F/T rule of 5.3.5
356
+ does not bite here.
357
+
358
+ - id: mx-private-dolly-2016
359
+ class: trailer
360
+ categories: [dolly]
361
+ period: { start: 2016 }
362
+ period_evidence: enabling-instrument
363
+ matching: strict
364
+ format:
365
+ pattern: "L-99999"
366
+ regex: '\A[A-Z]-\d{5}\z'
367
+ regex_strict: '\A[ABCDEFGHJKLMNPRSTUVWXYZ]-\d{5}\z'
368
+ design:
369
+ plate: { w: 300, h: 150, unit: mm }
370
+ background: { finish: retroreflective }
371
+ rear_differs: false
372
+ region_encoding: mechanism
373
+ sources:
374
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C rows 8 and 9, 'Convertidor (Dolly) — A-00000'"
375
+ notes: >-
376
+ CONVERTIDOR (dolly) — the converter axle that turns a semitrailer into a
377
+ full trailer. Tabla C gives the SAME order (A-00000) for the Ciudad de
378
+ México and the Entidades Federativas rows, which is the one place the NOM
379
+ hands two issuers one shape; they are separated only by their allocated
380
+ ranges, so a dolly serial does not by itself say which issuer made it.
381
+
382
+ # =========================================================================
383
+ # TRANSPORTE PRIVADO — CIUDAD DE MÉXICO. Tabla C row 8. CDMX is a separate
384
+ # issuer with separate FORMATS, which is why it needs no separate file.
385
+ # =========================================================================
386
+ - id: mx-cdmx-private-car-2016
387
+ class: standard
388
+ categories: [car]
389
+ period: { start: 2016 }
390
+ period_evidence: enabling-instrument
391
+ matching: strict
392
+ format:
393
+ pattern: "L99-LLL"
394
+ regex: '\A[A-Z]\d{2}-[A-Z]{3}\z'
395
+ regex_strict: '\A[ABCDEFGHJKLMNPRSTUVWXYZ]\d{2}-[ABCDEFGHJKLMNPRSTUVWXYZ]{3}\z'
396
+ charset: { notes: "no I/Ñ/O/Q — see charset_defaults" }
397
+ progression: "one allocated interval, A01-AAA … Z99-ZZZ, 27'704,259 combinations"
398
+ design:
399
+ plate: { w: 300, h: 150, unit: mm }
400
+ background: { finish: retroreflective }
401
+ emblem: { present: true, rendered: placeholder }
402
+ rear_differs: true
403
+ colour_note: "CDMX chooses its own colours under the Acuerdo — see common.colours"
404
+ region_encoding: "plates/_decode/mx-entity-series.yml # private_cdmx, vehicle: car"
405
+ sources:
406
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 8 'Transporte Privado (Ciudad de México) — Automóviles — A00-AAA'"
407
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice A Figura 14 'Transporte Privado Automóvil Ciudad de México' (seis caracteres)"
408
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice C 'NUMERACIÓN DE LAS PLACAS ASIGNADAS A LA CIUDAD DE MÉXICO — TRANSPORTES PRIVADOS — A01-AAA - Z99-ZZZ'"
409
+ notes: >-
410
+ Private cars of the Ciudad de México — SIX characters where the states use
411
+ seven, and one single national range rather than 31 intervals. The pattern
412
+ is what identifies the issuer: no state plate has this shape.
413
+
414
+ - id: mx-cdmx-private-truck-2016
415
+ class: standard
416
+ categories: [truck]
417
+ period: { start: 2016 }
418
+ period_evidence: enabling-instrument
419
+ matching: strict
420
+ format:
421
+ pattern: "L-999-LL"
422
+ regex: '\A[A-Z]-\d{3}-[A-Z]{2}\z'
423
+ regex_strict: '\A[ABCDEFGHJKLMNPRSTUVWXYZ]-\d{3}-[ABCDEFGHJKLMNPRSTUVWXYZ]{2}\z'
424
+ progression: "A-001-AA … Z-999-ZZ, 12'154,833 combinations"
425
+ design:
426
+ plate: { w: 300, h: 150, unit: mm }
427
+ background: { finish: retroreflective }
428
+ rear_differs: true
429
+ region_encoding: "plates/_decode/mx-entity-series.yml # private_cdmx, vehicle: truck"
430
+ sources:
431
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 8 'Camiones — A-000-AA'; Apéndice A Figura 15"
432
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice C CDMX transportes privados camiones range"
433
+ notes: >-
434
+ Private trucks, tractocamiones and grúas of the Ciudad de México. NOTE the
435
+ collision hazard this file cannot remove: the SAME shape A-000-AA is what
436
+ the FEDERAL autotransporte transfronterizo de pasaje row of Tabla C also
437
+ prescribes, so a bare A-000-AA string is ambiguous between CDMX private
438
+ truck and federal cross-border passenger service, and only the plate's
439
+ leyendas and colours (which the NOM leaves to the issuer) resolve it.
440
+
441
+ - id: mx-cdmx-private-trailer-2016
442
+ class: trailer
443
+ categories: [trailer, semitrailer]
444
+ period: { start: 2016 }
445
+ period_evidence: enabling-instrument
446
+ matching: strict
447
+ format:
448
+ pattern: "L-9L-99"
449
+ regex: '\A[A-Z]-\d[A-Z]-\d{2}\z'
450
+ regex_strict: '\A[ABCDEFGHJKLMNPRSTUVWXYZ]-\d[ABCDEFGHJKLMNPRSTUVWXYZ]-\d{2}\z'
451
+ progression: "A-1A-01 … Z-9Z-99, 471,339 combinations"
452
+ design:
453
+ plate: { w: 300, h: 150, unit: mm }
454
+ background: { finish: retroreflective }
455
+ rear_differs: false
456
+ region_encoding: "plates/_decode/mx-entity-series.yml # private_cdmx, vehicle: trailer"
457
+ sources:
458
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 8 'Remolques — A-0A-00'; Apéndice A Figura 17 (cinco caracteres)"
459
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice C CDMX remolques range A-1A-01 - Z-9Z-99"
460
+ notes: >-
461
+ Private trailers and semitrailers of the Ciudad de México. Five characters
462
+ in three groups — the most distinctive shape in the whole Mexican set and
463
+ therefore a near-free identification for a parse API.
464
+
465
+ # =========================================================================
466
+ # TRANSPORTE PRIVADO FRONTERIZO — the BORDER-ZONE private series. Tabla C
467
+ # row 2. Seven entities only, all of them on a land border.
468
+ # =========================================================================
469
+ - id: mx-private-border-car-2016
470
+ class: standard
471
+ categories: [car]
472
+ period: { start: 2016 }
473
+ period_evidence: enabling-instrument
474
+ matching: strict
475
+ format:
476
+ pattern: "L99-LLL-9"
477
+ regex: '\A[A-Z]\d{2}-[A-Z]{3}-\d\z'
478
+ regex_strict: '\A[ABCDEFGHJKLMNPRSTUVWXYZ]\d{2}-[ABCDEFGHJKLMNPRSTUVWXYZ]{3}-\d\z'
479
+ design:
480
+ plate: { w: 300, h: 150, unit: mm }
481
+ background: { finish: retroreflective }
482
+ rear_differs: true
483
+ colour_note: "state-optional — see common.colours"
484
+ region_encoding: "plates/_decode/mx-entity-series.yml # private_border, car_from/car_to"
485
+ sources:
486
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 2 'Transporte Privado Fronterizo — Automóviles — A00-AAA-0'"
487
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice A Figura 8 'Para vehículos del Transporte Privado Local Fronterizo' (siete caracteres)"
488
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice C 'FRONTERIZOS — NUMERACIÓN DE LAS PLACAS ASIGNADAS A CADA ENTIDAD FEDERATIVA TRANSPORTES PRIVADOS' — seven entities: BC, BCS, Coahuila, Chiapas, Chihuahua, Sonora, Tamaulipas"
489
+ notes: >-
490
+ The FRONTERIZO private-car plate, issued in the border zone only, by the
491
+ seven entities Apéndice C lists (Baja California, Baja California Sur,
492
+ Coahuila, Chiapas, Chihuahua, Sonora, Tamaulipas). Its ranges live in the
493
+ Z-tail of the national space, deliberately far from the ordinary private
494
+ allocation. Border trucks, buses and trailers take AAA-000-A — the SAME
495
+ shape as the ordinary private CAR series — and are told apart only by
496
+ range, which is the sharpest reason this jurisdiction needs a decode file
497
+ rather than a prefix rule.
498
+
499
+ # =========================================================================
500
+ # MOTOCICLETAS — PRIVADAS. Tabla C row 16 gives THREE orders for one
501
+ # modality, so this is three series (one series = one PATTERN, the same rule
502
+ # plates/nl.yml applies to the GV sidecodes).
503
+ # =========================================================================
504
+ - id: mx-private-motorcycle-2016-a
505
+ class: motorcycle
506
+ categories: [motorcycle]
507
+ period: { start: 2016 }
508
+ period_evidence: enabling-instrument
509
+ matching: strict
510
+ format:
511
+ pattern: "L99LL"
512
+ regex: '\A[A-Z]\d{2}[A-Z]{2}\z'
513
+ regex_strict: '\A[ABCDEFGHJKLMNPRSTUVWXYZ]\d{2}[ABCDEFGHJKLMNPRSTUVWXYZ]{2}\z'
514
+ design:
515
+ plate: { w: 215, h: 134, unit: mm }
516
+ background: { finish: retroreflective }
517
+ rear_differs: false
518
+ note: "one plate, rear only; characters troquelados at 2,0 mm height and 5,0 mm stroke (5.1.3.1)"
519
+ region_encoding: mechanism
520
+ sources:
521
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 16 'Transporte Privado — Ciudad de México y Entidades Federativas Motocicleta — A00AA / 0A0AA / A0AA0'"
522
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice A Figura 29 'Transporte Privado Motocicleta Ciudad de México y Entidades Federativas' (cinco caracteres); 5.1.2 dimensions 215 x 134 mm"
523
+ notes: >-
524
+ Private MOTORCYCLE order A00AA — the first of the three arrangements Tabla
525
+ C sanctions for one and the same modality. Five characters and NO printed
526
+ hyphen (Figura 29 is a five-character figure). Both the Ciudad de México
527
+ and the Entidades Federativas issue from this row, so the shape does not
528
+ identify the issuer.
529
+
530
+ - id: mx-private-motorcycle-2016-b
531
+ class: motorcycle
532
+ categories: [motorcycle]
533
+ period: { start: 2016 }
534
+ period_evidence: enabling-instrument
535
+ matching: strict
536
+ format:
537
+ pattern: "9L9LL"
538
+ regex: '\A\d[A-Z]\d[A-Z]{2}\z'
539
+ regex_strict: '\A\d[ABCDEFGHJKLMNPRSTUVWXYZ]\d[ABCDEFGHJKLMNPRSTUVWXYZ]{2}\z'
540
+ design:
541
+ plate: { w: 215, h: 134, unit: mm }
542
+ background: { finish: retroreflective }
543
+ rear_differs: false
544
+ region_encoding: mechanism
545
+ sources:
546
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 16, second order '0A0AA'"
547
+ notes: >-
548
+ Private MOTORCYCLE order 0A0AA — the second of the three Tabla C
549
+ arrangements. Kept as its own entry because a series is one PATTERN and a
550
+ parse API must be able to score each shape independently.
551
+
552
+ - id: mx-private-motorcycle-2016-c
553
+ class: motorcycle
554
+ categories: [motorcycle]
555
+ period: { start: 2016 }
556
+ period_evidence: enabling-instrument
557
+ matching: strict
558
+ format:
559
+ pattern: "L9LL9"
560
+ regex: '\A[A-Z]\d[A-Z]{2}\d\z'
561
+ regex_strict: '\A[ABCDEFGHJKLMNPRSTUVWXYZ]\d[ABCDEFGHJKLMNPRSTUVWXYZ]{2}\d\z'
562
+ design:
563
+ plate: { w: 215, h: 134, unit: mm }
564
+ background: { finish: retroreflective }
565
+ rear_differs: false
566
+ region_encoding: mechanism
567
+ sources:
568
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 16, third order 'A0AA0'"
569
+ notes: >-
570
+ Private MOTORCYCLE order A0AA0 — the third of the three Tabla C
571
+ arrangements, and the only Mexican shape that both begins with a letter
572
+ and ends with a digit at five characters.
573
+
574
+ # =========================================================================
575
+ # SERVICIO PÚBLICO LOCAL — the state and CDMX for-hire series. Tabla C
576
+ # rows 10, 11 and 14.
577
+ # =========================================================================
578
+ - id: mx-public-car-2016
579
+ class: taxi
580
+ categories: [car]
581
+ period: { start: 2016 }
582
+ period_evidence: enabling-instrument
583
+ matching: strict
584
+ format:
585
+ pattern: "L-999-LLL"
586
+ regex: '\A[A-Z]-\d{3}-[A-Z]{3}\z'
587
+ regex_strict: '\A[ABCDEFGHJKLMNPRSTUVWXYZ]-\d{3}-[ABCDEFGHJKLMNPRSTUVWXYZ]{3}\z'
588
+ design:
589
+ plate: { w: 300, h: 150, unit: mm }
590
+ background: { finish: retroreflective }
591
+ rear_differs: true
592
+ colour_note: "state-optional — see common.colours"
593
+ region_encoding: "plates/_decode/mx-entity-series.yml # public_border for the seven border entities; the non-border public-local ranges were not carried in this pass"
594
+ sources:
595
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 11 'Público Local (Entidades Federativas) — Automóviles — A-000-AAA'"
596
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice A Figura 25 'Automóvil público local para Entidades Federativas' (siete caracteres)"
597
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 3 'Público Local (Fronterizos) — Automóviles, Camiones, Autobuses y Remolques — A-000-AAA' (same order, Z-tail ranges)"
598
+ notes: >-
599
+ SERVICIO PÚBLICO LOCAL cars — taxis and for-hire cars licensed by an
600
+ entidad federativa. `class: taxi` is used for the whole público-local
601
+ family because _meta/classes.yml has no for-hire-carrier value and taxi is
602
+ defined as "for-hire vehicles where separately serialized or colored",
603
+ which is exactly what this is. The BORDER público-local series shares the
604
+ identical order A-000-AAA and is separated only by range (Apéndice C
605
+ allocates it entirely inside the Z tail), so this series' regex is the
606
+ right shape claim for both and the decode file carries the border ranges.
607
+
608
+ - id: mx-public-truck-2016
609
+ class: taxi
610
+ categories: [truck]
611
+ period: { start: 2016 }
612
+ period_evidence: enabling-instrument
613
+ matching: strict
614
+ format:
615
+ pattern: "9-LLL-99L"
616
+ regex: '\A\d-[A-Z]{3}-\d{2}[A-Z]\z'
617
+ regex_strict: '\A\d-[ABCDEFGHJKLMNPRSTUVWXYZ]{3}-\d{2}[ABCDEFGHJKLMNPRSTUVWXYZ]\z'
618
+ design:
619
+ plate: { w: 300, h: 150, unit: mm }
620
+ background: { finish: retroreflective }
621
+ rear_differs: true
622
+ region_encoding: mechanism
623
+ sources:
624
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 11 'Camiones — 0-AAA-00A'; Apéndice A Figura 26"
625
+ notes: >-
626
+ Público-local FREIGHT vehicles of the entidades federativas — carriers
627
+ operating under a state concession rather than a federal permit, which is
628
+ the line the NOM draws between this series and the Autotransporte Federal
629
+ family below.
630
+
631
+ - id: mx-public-bus-2016
632
+ class: taxi
633
+ categories: [bus]
634
+ period: { start: 2016 }
635
+ period_evidence: enabling-instrument
636
+ matching: strict
637
+ format:
638
+ pattern: "L-99999-L"
639
+ regex: '\A[A-Z]-\d{5}-[A-Z]\z'
640
+ regex_strict: '\A[ABCDEFGHJKLMNPRSTUVWXYZ]-\d{5}-[ABCDEFGHJKLMNPRSTUVWXYZ]\z'
641
+ design:
642
+ plate: { w: 300, h: 150, unit: mm }
643
+ background: { finish: retroreflective }
644
+ rear_differs: true
645
+ region_encoding: mechanism
646
+ sources:
647
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 11 'Autobuses — A-00000-A'; Apéndice A Figura 27"
648
+ notes: >-
649
+ Público-local BUSES of the entidades federativas — the state-concession
650
+ urban and intercity bus fleets. Seven characters with a five-digit middle
651
+ group, a shape no other Mexican series uses.
652
+
653
+ - id: mx-cdmx-public-car-2016
654
+ class: taxi
655
+ categories: [car]
656
+ period: { start: 2016 }
657
+ period_evidence: enabling-instrument
658
+ matching: strict
659
+ format:
660
+ pattern: "L-9999-L"
661
+ regex: '\A[A-Z]-\d{4}-[A-Z]\z'
662
+ regex_strict: '\A[ABCDEFGHJKLMNPRSTUVWXYZ]-\d{4}-[ABCDEFGHJKLMNPRSTUVWXYZ]\z'
663
+ design:
664
+ plate: { w: 300, h: 150, unit: mm }
665
+ background: { finish: retroreflective }
666
+ rear_differs: true
667
+ region_encoding: mechanism
668
+ sources:
669
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 10 'Público Local (Ciudad de México) — Libre y Sitio — A-0000-A'"
670
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice A Figura 22 'Público local para la Ciudad de México, Libre y Sitio' (seis caracteres)"
671
+ notes: >-
672
+ The Mexico City TAXI plate — "libre" (cruising) and "sitio" (rank) taxis
673
+ share one order. Note the NOM shape A-0000-A is also the order Tabla C
674
+ row 1 gives to federal "Pasaje Económico y Mixto", so this string is
675
+ ambiguous on shape alone between a CDMX taxi and a federal economy
676
+ passenger vehicle; the leyendas resolve it.
677
+
678
+ - id: mx-cdmx-public-fixedroute-2016
679
+ class: taxi
680
+ categories: [bus, van]
681
+ period: { start: 2016 }
682
+ period_evidence: enabling-instrument
683
+ matching: strict
684
+ format:
685
+ pattern: "999-L-999"
686
+ regex: '\A\d{3}-[A-Z]-\d{3}\z'
687
+ regex_strict: '\A\d{3}-[ABCDEFGHJKLMNPRSTUVWXYZ]-\d{3}\z'
688
+ design:
689
+ plate: { w: 300, h: 150, unit: mm }
690
+ background: { finish: retroreflective }
691
+ rear_differs: true
692
+ region_encoding: mechanism
693
+ sources:
694
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 10 'Con itinerario fijo — 000-A-000'; Apéndice A Figura 23"
695
+ notes: >-
696
+ Mexico City FIXED-ROUTE public transport (microbuses, combis, the
697
+ "itinerario fijo" concessions) — a single letter between two three-digit
698
+ groups. The distinctive symmetry makes this the easiest CDMX shape to
699
+ recognise.
700
+
701
+ # =========================================================================
702
+ # DEMOSTRACIÓN (dealer/trade plates). Tabla C rows 6, 7 and 15. The CDMX row
703
+ # is the only Mexican series with LITERAL fixed letters.
704
+ # =========================================================================
705
+ - id: mx-cdmx-dealer-2016
706
+ class: dealer
707
+ categories: [car, truck, bus, trailer, motorcycle]
708
+ period: { start: 2016 }
709
+ period_evidence: enabling-instrument
710
+ matching: strict
711
+ format:
712
+ pattern: "DM-LL-9"
713
+ regex: '\ADM-[A-Z]{2}-\d\z'
714
+ regex_strict: '\ADM-[ABCDEFGHJKLMNPRSTUVWXYZ]{2}-\d\z'
715
+ charset: { fixed_letters: "DM", notes: "the first group is literally DM (demostración); allocated range DM-AA-1 … DM-ZZ-9" }
716
+ design:
717
+ plate: { w: 300, h: 150, unit: mm }
718
+ background: { finish: retroreflective }
719
+ rear_differs: true
720
+ region_encoding: mechanism
721
+ sources:
722
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 6 'Transporte Privado — Demostración, Ciudad de México (Todo tipo de vehículos) — DM-AA-0'"
723
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice C 'DM-AA-1 - DM-ZZ-9'; Apéndice A Figura 12 (cinco caracteres)"
724
+ notes: >-
725
+ Ciudad de México DEMOSTRACIÓN (dealer/demonstration) plates. The only
726
+ Mexican series whose leading group is a fixed literal — DM — which makes
727
+ it the one Mexican plate a machine can classify with certainty from the
728
+ first two characters.
729
+
730
+ - id: mx-dealer-2016
731
+ class: dealer
732
+ categories: [car, truck, bus, trailer]
733
+ period: { start: 2016 }
734
+ period_evidence: enabling-instrument
735
+ matching: strict
736
+ format:
737
+ pattern: "9-LL-99L"
738
+ regex: '\A\d-[A-Z]{2}-\d{2}[A-Z]\z'
739
+ regex_strict: '\A\d-[ABCDEFGHJKLMNPRSTUVWXYZ]{2}-\d{2}[ABCDEFGHJKLMNPRSTUVWXYZ]\z'
740
+ design:
741
+ plate: { w: 300, h: 150, unit: mm }
742
+ background: { finish: retroreflective }
743
+ rear_differs: true
744
+ region_encoding: mechanism
745
+ sources:
746
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 7 'Demostración Entidades Federativas (Todo tipo de vehículos) — 0-AA-00A'; Apéndice A Figura 13 (seis caracteres)"
747
+ notes: >-
748
+ DEMOSTRACIÓN plates of the entidades federativas — the state equivalent of
749
+ the CDMX DM series, but with no literal marker, so it is identifiable only
750
+ by shape.
751
+
752
+ - id: mx-dealer-motorcycle-2016
753
+ class: dealer
754
+ categories: [motorcycle]
755
+ period: { start: 2016 }
756
+ period_evidence: enabling-instrument
757
+ matching: strict
758
+ format:
759
+ pattern: "L999L"
760
+ regex: '\A[A-Z]\d{3}[A-Z]\z'
761
+ regex_strict: '\A[ABCDEFGHJKLMNPRSTUVWXYZ]\d{3}[ABCDEFGHJKLMNPRSTUVWXYZ]\z'
762
+ design:
763
+ plate: { w: 215, h: 134, unit: mm }
764
+ background: { finish: retroreflective }
765
+ rear_differs: false
766
+ region_encoding: mechanism
767
+ sources:
768
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 15 'Demostración — Ciudad de México y Entidades Federativas Motocicleta — A000A'"
769
+ notes: >-
770
+ MOTORCYCLE demonstration plates, one order for both the Ciudad de México
771
+ and the states — five characters, letter-digits-letter, no separator.
772
+
773
+ # =========================================================================
774
+ # AUTO ANTIGUO (historic). Tabla C row 12 — the shortest Mexican serials.
775
+ # =========================================================================
776
+ - id: mx-cdmx-historic-2016
777
+ class: historic
778
+ categories: [car, truck, motorcycle]
779
+ period: { start: 2016 }
780
+ period_evidence: enabling-instrument
781
+ matching: strict
782
+ format:
783
+ pattern: "9LL-99"
784
+ regex: '\A\d[A-Z]{2}-\d{2}\z'
785
+ regex_strict: '\A\d[ABCDEFGHJKLMNPRSTUVWXYZ]{2}-\d{2}\z'
786
+ design:
787
+ plate: { w: 300, h: 150, unit: mm }
788
+ background: { finish: retroreflective }
789
+ emblem: { present: true, rendered: placeholder, note: "5.1.6.3 requires a distintivo identifying the Auto Antiguo service plus the leyenda and pictograma of that service (figuras 31 y 32)" }
790
+ rear_differs: true
791
+ region_encoding: mechanism
792
+ sources:
793
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 12 'Transporte Privado (Autos Antiguos) — Ciudad de México — 0AA-00'"
794
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # 5.1.6.3 Auto Antiguo distintivo; Apéndice A Figura 31 (cinco caracteres)"
795
+ notes: >-
796
+ Ciudad de México AUTO ANTIGUO (historic vehicle) plates. The NOM prescribes
797
+ a distintivo, leyenda and pictograma for the class but — unlike Germany's H
798
+ suffix or Spain's histórico regime — sets NO age threshold: the eligibility
799
+ rule is state law and is not modelled here (recorded gap).
800
+
801
+ - id: mx-historic-2016
802
+ class: historic
803
+ categories: [car, truck, motorcycle]
804
+ period: { start: 2016 }
805
+ period_evidence: enabling-instrument
806
+ matching: strict
807
+ format:
808
+ pattern: "LL-9-L"
809
+ regex: '\A[A-Z]{2}-\d-[A-Z]\z'
810
+ regex_strict: '\A[ABCDEFGHJKLMNPRSTUVWXYZ]{2}-\d-[ABCDEFGHJKLMNPRSTUVWXYZ]\z'
811
+ design:
812
+ plate: { w: 300, h: 150, unit: mm }
813
+ background: { finish: retroreflective }
814
+ emblem: { present: true, rendered: placeholder }
815
+ rear_differs: true
816
+ region_encoding: mechanism
817
+ sources:
818
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 12 'Entidades Federativas — AA-0-A'; Apéndice A Figura 32 (cuatro caracteres)"
819
+ notes: >-
820
+ AUTO ANTIGUO plates of the entidades federativas — FOUR characters, the
821
+ shortest serial the 2016 NOM issues anywhere, and the only Mexican format
822
+ with a single-digit middle group.
823
+
824
+ # =========================================================================
825
+ # VEHÍCULO ECOLÓGICO. Tabla C row 17 — Mexico's EV/alternative-fuel series.
826
+ # =========================================================================
827
+ - id: mx-eco-2016
828
+ class: electric
829
+ categories: [car, truck, bus, motorcycle]
830
+ period: { start: 2016 }
831
+ period_evidence: enabling-instrument
832
+ matching: strict
833
+ format:
834
+ pattern: "99L-999"
835
+ regex: '\A\d{2}[A-Z]-\d{3}\z'
836
+ regex_strict: '\A\d{2}[ABCDEFGHJKLMNPRSTUVWXYZ]-\d{3}\z'
837
+ design:
838
+ plate: { w: 300, h: 150, unit: mm }
839
+ background: { finish: retroreflective }
840
+ emblem: { present: true, rendered: placeholder, note: "distintivo per figura 33 plus the leyenda VEHÍCULO ECOLÓGICO" }
841
+ rear_differs: true
842
+ region_encoding: mechanism
843
+ sources:
844
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 17 'Vehículo Ecológico — Ciudad de México y Entidades Federativas — 00A-000'"
845
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # 5.1.6.4, verbatim: placas 'para los vehículos que utilicen combustibles y/o energías alternas con motores denominados ecológicos para protección del medio ambiente, deben contar en su diseño con distintivo que los identifique, como el que se muestra en la figura 33 … Así como la leyenda VEHÍCULO ECOLÓGICO'"
846
+ notes: >-
847
+ VEHÍCULO ECOLÓGICO — the Mexican alternative-fuel/EV series, one order for
848
+ both the Ciudad de México and the states. Note the class is broader than
849
+ `electric` suggests: 5.1.6.4 covers any vehicle using "combustibles y/o
850
+ energías alternas", so hybrids and gas conversions qualify where the issuer
851
+ says they do.
852
+
853
+ # =========================================================================
854
+ # CAPACIDADES DIFERENTES (disability). Tabla C row 22 and row 1's federal
855
+ # equivalent.
856
+ # =========================================================================
857
+ - id: mx-cdmx-disability-2016
858
+ class: specialty
859
+ categories: [car, truck, bus, motorcycle]
860
+ period: { start: 2016 }
861
+ period_evidence: enabling-instrument
862
+ matching: strict
863
+ format:
864
+ pattern: "99-L-99"
865
+ regex: '\A\d{2}-[A-Z]-\d{2}\z'
866
+ regex_strict: '\A\d{2}-[ABCDEFGHJKLMNPRSTUVWXYZ]-\d{2}\z'
867
+ design:
868
+ plate: { w: 300, h: 150, unit: mm }
869
+ background: { finish: retroreflective }
870
+ emblem: { present: true, rendered: placeholder, note: "5.1.6.2: distintivo per figura 30 plus the leyenda y pictograma del servicio Capacidades Diferentes" }
871
+ rear_differs: true
872
+ region_encoding: mechanism
873
+ sources:
874
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 22 'Capacidades Diferentes — Ciudad de México todos los vehículos — 00-A-00'"
875
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # 5.1.6.2 Capacidades Diferentes distintivo; Apéndice A Figura 30 (cinco caracteres)"
876
+ notes: >-
877
+ CAPACIDADES DIFERENTES (disability) plates of the Ciudad de México.
878
+ `class: specialty` is the least-bad fit from _meta/classes.yml, which has
879
+ no disability value; the vocabulary gap is flagged in the jurisdiction
880
+ dossier rather than papered over with an invented class.
881
+
882
+ - id: mx-disability-2016
883
+ class: specialty
884
+ categories: [car, truck, bus, motorcycle]
885
+ period: { start: 2016 }
886
+ period_evidence: enabling-instrument
887
+ matching: strict
888
+ format:
889
+ pattern: "99-LLL"
890
+ regex: '\A\d{2}-[A-Z]{3}\z'
891
+ regex_strict: '\A\d{2}-[ABCDEFGHJKLMNPRSTUVWXYZ]{3}\z'
892
+ design:
893
+ plate: { w: 300, h: 150, unit: mm }
894
+ background: { finish: retroreflective }
895
+ emblem: { present: true, rendered: placeholder }
896
+ rear_differs: true
897
+ region_encoding: mechanism
898
+ sources:
899
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 22 'Entidades Federativas todos los vehículos — 00-AAA'"
900
+ notes: >-
901
+ CAPACIDADES DIFERENTES plates of the entidades federativas — five
902
+ characters in two groups, distinct from the CDMX three-group form, and one
903
+ of only two 2016 series that carry no letter after the digits.
904
+
905
+ # =========================================================================
906
+ # POLICE AND CIVIL PROTECTION. Tabla C rows 4, 5, 18, 19, 20.
907
+ # =========================================================================
908
+ - id: mx-police-2016
909
+ class: police
910
+ categories: [car, truck, van]
911
+ period: { start: 2016 }
912
+ period_evidence: enabling-instrument
913
+ matching: strict
914
+ format:
915
+ pattern: "LL-999L-9"
916
+ regex: '\A[A-Z]{2}-\d{3}[A-Z]-\d\z'
917
+ regex_strict: '\A[ABCDEFGHJKLMNPRSTUVWXYZ]{2}-\d{3}[ABCDEFGHJKLMNPRSTUVWXYZ]-\d\z'
918
+ design:
919
+ plate: { w: 300, h: 150, unit: mm }
920
+ background: { finish: retroreflective }
921
+ rear_differs: true
922
+ region_encoding: mechanism
923
+ sources:
924
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 4 'Corporaciones Policiacas y de Vigilancia — Patrullas de todo tipo de vehículos — AA-000A-0'"
925
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice A Figura 10 'Corporaciones policiacas y de vigilancia vehículo' (siete caracteres)"
926
+ notes: >-
927
+ PATRULLAS — police and public-security fleets of every level below the
928
+ federal police. A 2000-Acuerdo rule that the 2016 NOM does not repeat is
929
+ worth recording here: ARTICULO NOVENO of the Acuerdo required that "los
930
+ caracteres de identificación de las placas para las unidades de las
931
+ diferentes corporaciones policiacas y de vigilancia deben corresponder al
932
+ número económico que porte la unidad" — the plate had to match the fleet
933
+ number painted on the car.
934
+
935
+ - id: mx-police-motorcycle-2016
936
+ class: police
937
+ categories: [motorcycle]
938
+ period: { start: 2016 }
939
+ period_evidence: enabling-instrument
940
+ matching: strict
941
+ format:
942
+ pattern: "LL99L"
943
+ regex: '\A[A-Z]{2}\d{2}[A-Z]\z'
944
+ regex_strict: '\A[ABCDEFGHJKLMNPRSTUVWXYZ]{2}\d{2}[ABCDEFGHJKLMNPRSTUVWXYZ]\z'
945
+ design:
946
+ plate: { w: 215, h: 134, unit: mm }
947
+ background: { finish: retroreflective }
948
+ rear_differs: false
949
+ region_encoding: mechanism
950
+ sources:
951
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 4 (second entry) 'Patrullas de tipo motocicletas — AA00A'; Apéndice A Figura 11 (cinco caracteres)"
952
+ notes: >-
953
+ POLICE MOTORCYCLE plates — five characters, no separator, distinct from
954
+ every private motorcycle order by having TWO leading letters.
955
+
956
+ - id: mx-federal-police-2016
957
+ class: police
958
+ categories: [car, truck, van]
959
+ period: { start: 2016 }
960
+ period_evidence: enabling-instrument
961
+ matching: strict
962
+ format:
963
+ pattern: "LL-9999-L"
964
+ regex: '\A[A-Z]{2}-\d{4}-[A-Z]\z'
965
+ regex_strict: '\APF-\d{4}-[ABCDEFGHJKLMNPRSTUVWXYZ]\z'
966
+ charset: { fixed_letters: "PF", notes: "Apéndice C allocates the whole federal-police block as PF-0001-A … PF-9999-Z, so the leading pair is in practice the literal PF even though Tabla C spells the order generically as AA-0000-A" }
967
+ design:
968
+ plate: { w: 300, h: 150, unit: mm }
969
+ background: { finish: retroreflective }
970
+ rear_differs: true
971
+ region_encoding: none
972
+ sources:
973
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 5 'Policía Federal — Patrullas de todo tipo de vehículos — AA-0000-A'"
974
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice C 'SERIES ASIGNADAS PF-0001-A - PF-9999-Z'"
975
+ notes: >-
976
+ POLICÍA FEDERAL fleet plates. This is the one series in the file whose
977
+ ISSUING BODY no longer exists: the Policía Federal was wound up in 2019 and
978
+ its functions passed to the Guardia Nacional. The series is left OPEN
979
+ because no instrument secured for this pass closes it, and PF plates
980
+ remained in circulation; whether the Guardia Nacional issues from the same
981
+ block is a recorded gap. This is also the reason `regex_strict` is pinned
982
+ to the literal PF while `regex` keeps Tabla C's generic AA order — the tier
983
+ order (strict inside loose) holds and the honest wide claim survives.
984
+
985
+ - id: mx-emergency-2016
986
+ class: government
987
+ categories: [car, truck, van, bus]
988
+ period: { start: 2016 }
989
+ period_evidence: enabling-instrument
990
+ matching: strict
991
+ format:
992
+ pattern: "LL-999-LL"
993
+ regex: '\A[A-Z]{2}-\d{3}-[A-Z]{2}\z'
994
+ regex_strict: '\A[ABCDEFGHJKLMNPRSTUVWXYZ]{2}-\d{3}-[ABCDEFGHJKLMNPRSTUVWXYZ]{2}\z'
995
+ design:
996
+ plate: { w: 300, h: 150, unit: mm }
997
+ background: { finish: retroreflective }
998
+ emblem: { present: true, rendered: placeholder }
999
+ rear_differs: true
1000
+ region_encoding: mechanism
1001
+ sources:
1002
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C rows 18 and 19 'Ambulancias' and 'Bomberos — Ciudad de México y Entidades Federativas — AA-000-AA' (identical order)"
1003
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice A Figura 34 'Heroico Cuerpo de Bomberos y Ambulancias de Ciudad de México y Entidades Federativas' (siete caracteres)"
1004
+ notes: >-
1005
+ AMBULANCIAS and BOMBEROS. Tabla C gives them two rows and ONE order
1006
+ (AA-000-AA), and Apéndice A gives them ONE figure (34), so under
1007
+ PRD-PLATES §2.3 they are one series with a shared format and design rather
1008
+ than two — the color-only-variant rule applied to a leyenda-only variant.
1009
+
1010
+ - id: mx-civil-protection-2016
1011
+ class: government
1012
+ categories: [car, truck, van, bus, motorcycle]
1013
+ period: { start: 2016 }
1014
+ period_evidence: enabling-instrument
1015
+ matching: strict
1016
+ format:
1017
+ pattern: "99-LL-999"
1018
+ regex: '\A\d{2}-[A-Z]{2}-\d{3}\z'
1019
+ regex_strict: '\A\d{2}-[ABCDEFGHJKLMNPRSTUVWXYZ]{2}-\d{3}\z'
1020
+ design:
1021
+ plate: { w: 300, h: 150, unit: mm }
1022
+ background: { color: "#BA0C2F", finish: retroreflective, hex_basis: observed }
1023
+ foreground: "#FFFFFF"
1024
+ band: { side: top, color: "#63666A", content: "grey bar 300 × 25 mm, Pantone Cool Gray 10 at 60%, carrying four Sistema Nacional de Protección Civil symbols at Cool Gray 10 100%", hex_basis: observed }
1025
+ band_hex_note: >-
1026
+ The hex is an observed rendering of Cool Gray 10 at FULL strength (the
1027
+ symbols); the BAR itself is that colour at 60%, which the NOM states as a
1028
+ tint and which no hex in this file attempts to compute.
1029
+ emblem: { present: true, rendered: placeholder, note: "SNPC symbol at 3/4 as a background wash; SNPC symbol grey/red at mid-left; universal civil-protection symbol orange/blue at mid-right" }
1030
+ rear_differs: true
1031
+ region_encoding: mechanism
1032
+ sources:
1033
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 20 'Protección Civil — Coordinación Nacional de Protección Civil / Ciudad de México y Entidades Federativas todos los vehículos — 00-AA-000'"
1034
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # 5.1.6.5.1-5.1.6.5.3, verbatim: 'Placa metálica de color rojo pantone 200C al 100%'; the 300 x 25 mm grey bars top and bottom at Cool gray 10 al 60%; 'la palabra PROTECCIÓN CIVIL y debajo de ésta la palabra MÉXICO, ambas escritas en mayúsculas y color rojo pantone 200C al 100%'; the entity name and Código Fiscal on the lower bar"
1035
+ notes: >-
1036
+ SISTEMA NACIONAL DE PROTECCIÓN CIVIL — the ONLY series in this file whose
1037
+ colours the NOM prescribes, which is why it is the only one carrying a
1038
+ background hex. The hexes are `observed` renderings of the NAMED Pantone
1039
+ references (200 C red, Cool Gray 10 grey): PRD-PLATES §6 lets us build to a
1040
+ colour standard and forbids reproducing it, and Pantone's own coordinates
1041
+ are a licensed dataset, so the numbered colour is cited and the hex is
1042
+ marked observed — the same posture plates/gb.yml takes for BS AU 145e.
1043
+
1044
+ # =========================================================================
1045
+ # AUTOTRANSPORTE FEDERAL — the SCT's own series (Tabla C row 1), issued by
1046
+ # the Secretaría rather than by any state, for federally permitted carriers.
1047
+ # =========================================================================
1048
+ - id: mx-federal-freight-2016
1049
+ class: standard
1050
+ categories: [truck, bus, trailer]
1051
+ period: { start: 2016 }
1052
+ period_evidence: enabling-instrument
1053
+ matching: strict
1054
+ format:
1055
+ pattern: "99-LL-9L"
1056
+ regex: '\A\d{2}-[A-Z]{2}-\d[A-Z]\z'
1057
+ regex_strict: '\A\d{2}-[ABCDEFGHJKLMNPRSTUVWXYZ]{2}-\d[ABCDEFGHJKLMNPRSTUVWXYZ]\z'
1058
+ progression: >-
1059
+ Apéndice C allocates the federal space by traffic: carga 01-AA-1A …
1060
+ 99-CZ-9Z (motrices) and 01-TX-1A … 99-VZ-9Z (remolques); pasaje
1061
+ 01-HA-1A … 99-JZ-9Z; turismo 01-RA-1A … 99-RZ-9Z; con inversión
1062
+ extranjera, arrendamiento, transfronterizo and internacional each get
1063
+ their own blocks. The SECOND GROUP is the discriminator.
1064
+ design:
1065
+ plate: { w: 300, h: 150, unit: mm }
1066
+ background: { finish: retroreflective }
1067
+ rear_differs: true
1068
+ region_encoding: none
1069
+ sources:
1070
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 1 'Autotransporte Federal — Carga, Pasaje y Turismo, con inversión extranjera, arrendamiento … — 00-AA-0A' (also Transfronterizo de carga, Transporte Internacional Largo Recorrido, and Grúas de Arrastre)"
1071
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice A Figura 1 'Para vehículos Motrices y Remolques del Servicio de Autotransporte Federal (Carga, Pasaje, Turismo y Arrendamiento)' (seis caracteres)"
1072
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice C 'SERVICIO DE AUTOTRANSPORTE FEDERAL (CARGA, PASAJE Y TURISMO)' range blocks"
1073
+ notes: >-
1074
+ AUTOTRANSPORTE FEDERAL — the federally permitted road-haulage and
1075
+ intercity-passenger fleet, plated by the SCT rather than by a state and
1076
+ recognisable anywhere in Mexico. `class: standard` is used because
1077
+ _meta/classes.yml has no commercial-carrier value and this is the ordinary
1078
+ registration of those vehicles; the same choice plates/us-fl.yml makes for
1079
+ its Apportioned series. FOUR distinct Tabla C modalities share this one
1080
+ order — carga/pasaje/turismo, transfronterizo de carga, transporte
1081
+ internacional de largo recorrido, and grúas de arrastre — separated only by
1082
+ their Apéndice C range blocks.
1083
+
1084
+ - id: mx-federal-transfer-2016
1085
+ class: temporary
1086
+ categories: [car, truck, bus, trailer]
1087
+ period: { start: 2016 }
1088
+ period_evidence: enabling-instrument
1089
+ matching: strict
1090
+ format:
1091
+ pattern: "99-L9-LL"
1092
+ regex: '\A\d{2}-[A-Z]\d-[A-Z]{2}\z'
1093
+ regex_strict: '\A\d{2}-[ABCDEFGHJKLMNPRSTUVWXYZ]\d-[ABCDEFGHJKLMNPRSTUVWXYZ]{2}\z'
1094
+ progression: "01-A1-AA … 99-C9-ZZ"
1095
+ design:
1096
+ plate: { w: 300, h: 150, unit: mm }
1097
+ background: { finish: retroreflective }
1098
+ rear_differs: true
1099
+ region_encoding: none
1100
+ sources:
1101
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 1 'Traslado Nacional (Para todo tipo de vehículos) — 00-A0-AA'"
1102
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice C 'TRASLADO NACIONAL — SERIES ASIGNADAS 01-A1-AA - 99-C9-ZZ'; Apéndice A Figura 5"
1103
+ notes: >-
1104
+ TRASLADO NACIONAL — the federal transfer/ferry plate for moving an
1105
+ unregistered vehicle across the country, which is Mexico's `temporary`
1106
+ class in the PRD vocabulary sense (short-validity, movement-only). Distinct
1107
+ from the state DEMOSTRACIÓN plates above, which are bound to a dealer
1108
+ rather than to a journey.
1109
+
1110
+ - id: mx-federal-transfer-motorcycle-2016
1111
+ class: temporary
1112
+ categories: [motorcycle]
1113
+ period: { start: 2016 }
1114
+ period_evidence: enabling-instrument
1115
+ matching: strict
1116
+ format:
1117
+ pattern: "MT999L"
1118
+ regex: '\AMT\d{3}[A-Z]\z'
1119
+ regex_strict: '\AMT\d{3}[ABCDEFGHJKLMNPRSTUVWXYZ]\z'
1120
+ charset:
1121
+ fixed_letters: "MT"
1122
+ notes: >-
1123
+ Apéndice C, verbatim: "NOTA: En la numeración de placas para traslado
1124
+ de motocicleta no se modifican las letras 'MT'." Range MT001A …
1125
+ MT999Z. Tabla C spells the order generically as AA000A; the NOTA is
1126
+ what fixes the pair, so the literal is written into the pattern.
1127
+ design:
1128
+ plate: { w: 215, h: 134, unit: mm }
1129
+ background: { finish: retroreflective }
1130
+ rear_differs: false
1131
+ region_encoding: none
1132
+ sources:
1133
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 1 'Traslado Nacional (Para Motocicletas) — AA000A'"
1134
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice C 'TRASLADO NACIONAL MOTOCICLETAS — MT001A - MT999Z' + the NOTA fixing 'MT'"
1135
+ notes: >-
1136
+ MOTORCYCLE TRASLADO NACIONAL. One of only two Mexican series with a fixed
1137
+ literal prefix (the other is CDMX DM), and the cleanest example in this
1138
+ file of Apéndice C constraining what Tabla C leaves generic.
1139
+
1140
+ - id: mx-federal-inspection-2016
1141
+ class: government
1142
+ categories: [car, truck, van]
1143
+ period: { start: 2016 }
1144
+ period_evidence: enabling-instrument
1145
+ matching: strict
1146
+ format:
1147
+ pattern: "LL-99"
1148
+ regex: '\A[A-Z]{2}-\d{2}\z'
1149
+ regex_strict: '\AA[DEFGHJKLMNPRSTUVWXYZ]-\d{2}\z'
1150
+ charset: { notes: "Apéndice C allocates AD-01 … AZ-99, so the first letter is A and the second runs D-Z inside the NOM alphabet" }
1151
+ design:
1152
+ plate: { w: 300, h: 150, unit: mm }
1153
+ background: { finish: retroreflective }
1154
+ rear_differs: true
1155
+ region_encoding: none
1156
+ sources:
1157
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Tabla C row 1 'Inspección de Vías Generales de Comunicación Federal — AA-00'"
1158
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # Apéndice C 'SERIES ASIGNADAS AD-01 - AZ-99'; Apéndice A Figura 7 (cuatro caracteres)"
1159
+ notes: >-
1160
+ SCT road-inspection vehicles (Inspección de Vías Generales de
1161
+ Comunicación) — four characters, joint-shortest in the file with the state
1162
+ Auto Antiguo series, and the only Mexican format with two letters followed
1163
+ by exactly two digits.
1164
+
1165
+ # =========================================================================
1166
+ # ONE SERIES BACK — NOM-001-SCT-2-2000 (DOF 26-01-2001, in force
1167
+ # 27-03-2001, cancelled when the 2016 NOM took effect on 23-08-2016).
1168
+ # Apéndice C Normativo of that NOM is the source of every order below.
1169
+ # =========================================================================
1170
+ - id: mx-private-car-2001
1171
+ class: standard
1172
+ categories: [car]
1173
+ period: { start: 2001, end: 2016 }
1174
+ period_evidence: instrument-in-force
1175
+ matching: strict
1176
+ format:
1177
+ pattern: "LLL-99-99"
1178
+ regex: '\A[A-Z]{3}-\d{2}-\d{2}\z'
1179
+ design:
1180
+ plate: { w: 300, h: 150, unit: mm }
1181
+ background: { finish: retroreflective }
1182
+ rear_differs: false
1183
+ note: "the 2000 NOM has no F/T rule; 5.3.5's front/rear letters are a 2016 addition"
1184
+ region_encoding: mechanism
1185
+ sources:
1186
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=774741&fecha=26/01/2001 # NOM-001-SCT-2-2000, Apéndice C Normativo, row 8 'Transportes Privados (Entidades Federativas) — Automóviles — AAA-00-00'"
1187
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=774737&fecha=26/01/2001 # NOM-001-SCT-2-2000 numeral 5.1.1 (300 x 150 mm) and the 'entrará en vigor sesenta días naturales después de su publicación' clause"
1188
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # 2016 NOM Transitorio SEGUNDO — the cancellation that ends this period"
1189
+ notes: >-
1190
+ THE ONE-BACK national private car format — three letters and two
1191
+ two-digit groups, the shape most Mexicans still picture when they picture a
1192
+ plate. PERIOD DISCIPLINE, and it matters here: 2001 is an INSTRUMENT date,
1193
+ not a first-issue date. NOM-001-SCT-2-2000 was published on 26 January 2001
1194
+ and took effect sixty calendar days later, but its own numeral 5.1.4
1195
+ addresses states that "ya hayan efectuado su canje total de placas" in 1998
1196
+ or 1999 — so AAA-00-00 plates were already on the road when the instrument
1197
+ that documents them appeared, and the true creation date of the format is
1198
+ NOT pinned by any primary secured in this pass. period.end 2016 is the
1199
+ cancellation of the 2000 NOM by the 2016 NOM's Transitorio SEGUNDO; plates
1200
+ already issued stayed valid to the end of their trienio and beyond.
1201
+
1202
+ - id: mx-private-truck-2001
1203
+ class: standard
1204
+ categories: [truck]
1205
+ period: { start: 2001, end: 2016 }
1206
+ period_evidence: instrument-in-force
1207
+ matching: strict
1208
+ format:
1209
+ pattern: "LL-99-999"
1210
+ regex: '\A[A-Z]{2}-\d{2}-\d{3}\z'
1211
+ design:
1212
+ plate: { w: 300, h: 150, unit: mm }
1213
+ background: { finish: retroreflective }
1214
+ rear_differs: false
1215
+ region_encoding: mechanism
1216
+ sources:
1217
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=774741&fecha=26/01/2001 # Apéndice C row 8 'Camiones — AA-00-000'"
1218
+ notes: >-
1219
+ One-back private TRUCK format of the entidades federativas. Two letters and
1220
+ a 2+3 digit split — replaced in 2016 by AA-0000-A, which keeps the two
1221
+ leading letters and moves to a single four-digit block plus a check letter.
1222
+
1223
+ - id: mx-private-bus-2001
1224
+ class: standard
1225
+ categories: [bus]
1226
+ period: { start: 2001, end: 2016 }
1227
+ period_evidence: instrument-in-force
1228
+ matching: strict
1229
+ format:
1230
+ pattern: "9-LLL-99"
1231
+ regex: '\A\d-[A-Z]{3}-\d{2}\z'
1232
+ design:
1233
+ plate: { w: 300, h: 150, unit: mm }
1234
+ background: { finish: retroreflective }
1235
+ rear_differs: false
1236
+ region_encoding: mechanism
1237
+ sources:
1238
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=774741&fecha=26/01/2001 # Apéndice C row 8 'Autobuses — 0-AAA-00'"
1239
+ notes: >-
1240
+ One-back private BUS format of the entidades federativas — the closest
1241
+ shape in the whole Mexican corpus to the 2016 private bus order
1242
+ (00-AAA-00), differing only in the leading group's width, which is exactly
1243
+ the kind of near-collision an era-inference engine has to handle.
1244
+
1245
+ - id: mx-private-trailer-2001
1246
+ class: trailer
1247
+ categories: [trailer, semitrailer]
1248
+ period: { start: 2001, end: 2016 }
1249
+ period_evidence: instrument-in-force
1250
+ matching: strict
1251
+ format:
1252
+ pattern: "9-LL-9999"
1253
+ regex: '\A\d-[A-Z]{2}-\d{4}\z'
1254
+ design:
1255
+ plate: { w: 300, h: 150, unit: mm }
1256
+ background: { finish: retroreflective }
1257
+ rear_differs: false
1258
+ region_encoding: mechanism
1259
+ sources:
1260
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=774741&fecha=26/01/2001 # Apéndice C row 8 'Remolques — 0-AA-0000'"
1261
+ notes: >-
1262
+ One-back private TRAILER format of the entidades federativas, replaced in
1263
+ 2016 by 0AA-000-A.
1264
+
1265
+ - id: mx-cdmx-private-car-2001
1266
+ class: standard
1267
+ categories: [car]
1268
+ period: { start: 2001, end: 2016 }
1269
+ period_evidence: instrument-in-force
1270
+ matching: strict
1271
+ format:
1272
+ pattern: "999-LLL"
1273
+ regex: '\A\d{3}-[A-Z]{3}\z'
1274
+ design:
1275
+ plate: { w: 300, h: 150, unit: mm }
1276
+ background: { finish: retroreflective }
1277
+ rear_differs: false
1278
+ region_encoding: mechanism
1279
+ sources:
1280
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=774741&fecha=26/01/2001 # Apéndice C row 7 'Transportes Privados (Distrito Federal) — Automóviles — 000-AAA'"
1281
+ notes: >-
1282
+ One-back DISTRITO FEDERAL private car format. Note the name change the
1283
+ instruments record: the 2000 NOM says Distrito Federal throughout, the 2016
1284
+ NOM says Ciudad de México throughout — the 2016 constitutional reform is
1285
+ visible in the plate law. The format also inverts: 000-AAA became A00-AAA.
1286
+
1287
+ - id: mx-cdmx-private-truck-2001
1288
+ class: standard
1289
+ categories: [truck]
1290
+ period: { start: 2001, end: 2016 }
1291
+ period_evidence: instrument-in-force
1292
+ matching: strict
1293
+ format:
1294
+ pattern: "99-99-LL"
1295
+ regex: '\A\d{2}-\d{2}-[A-Z]{2}\z'
1296
+ design:
1297
+ plate: { w: 300, h: 150, unit: mm }
1298
+ background: { finish: retroreflective }
1299
+ rear_differs: false
1300
+ region_encoding: mechanism
1301
+ sources:
1302
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=774741&fecha=26/01/2001 # Apéndice C row 7 'Camiones — 00-00-AA'"
1303
+ notes: >-
1304
+ One-back DISTRITO FEDERAL private truck format — two digit pairs then two
1305
+ letters, a shape the 2016 NOM abandons entirely.
1306
+
1307
+ - id: mx-public-car-2001
1308
+ class: taxi
1309
+ categories: [car]
1310
+ period: { start: 2001, end: 2016 }
1311
+ period_evidence: instrument-in-force
1312
+ matching: strict
1313
+ format:
1314
+ pattern: "99-99-LLL"
1315
+ regex: '\A\d{2}-\d{2}-[A-Z]{3}\z'
1316
+ design:
1317
+ plate: { w: 300, h: 150, unit: mm }
1318
+ background: { finish: retroreflective }
1319
+ rear_differs: false
1320
+ region_encoding: mechanism
1321
+ sources:
1322
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=774741&fecha=26/01/2001 # Apéndice C row 10 'Público Local (Entidades Federativas) — Automóviles — 00-00-AAA' (and row 3, the fronterizo equivalent, same order)"
1323
+ notes: >-
1324
+ One-back PÚBLICO LOCAL car format of the entidades federativas. The 2000
1325
+ NOM gives the SAME order to the border público-local row, so this shape
1326
+ covered both, exactly as A-000-AAA does in the 2016 NOM.
1327
+
1328
+ - id: mx-historic-2001
1329
+ class: historic
1330
+ categories: [car, truck, motorcycle]
1331
+ period: { start: 2001, end: 2016 }
1332
+ period_evidence: instrument-in-force
1333
+ matching: strict
1334
+ format:
1335
+ pattern: "LL-99"
1336
+ regex: '\A[A-Z]{2}-\d{2}\z'
1337
+ design:
1338
+ plate: { w: 300, h: 150, unit: mm }
1339
+ background: { finish: retroreflective }
1340
+ rear_differs: false
1341
+ region_encoding: mechanism
1342
+ sources:
1343
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=774741&fecha=26/01/2001 # Apéndice C row 11 'Transportes Privados (Autos Antiguos) — Entidades Federativas — AA-00'"
1344
+ notes: >-
1345
+ One-back AUTO ANTIGUO format of the entidades federativas — four
1346
+ characters, and the same shape the 2000 NOM gives to SCT road-inspection
1347
+ vehicles (row 13, AA-00), which the 2016 NOM keeps for inspection while
1348
+ moving historics to AA-0-A. A four-character Mexican string is therefore
1349
+ genuinely ambiguous across eras and classes and a parse API must say so.
1350
+
1351
+ - id: mx-police-2001
1352
+ class: police
1353
+ categories: [car, truck, van, motorcycle]
1354
+ period: { start: 2001, end: 2016 }
1355
+ period_evidence: instrument-in-force
1356
+ matching: strict
1357
+ format:
1358
+ pattern: "99-999"
1359
+ regex: '\A\d{2}-\d{3}\z'
1360
+ design:
1361
+ plate: { w: 300, h: 150, unit: mm }
1362
+ background: { finish: retroreflective }
1363
+ rear_differs: false
1364
+ region_encoding: none
1365
+ sources:
1366
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=774741&fecha=26/01/2001 # Apéndice C row 4 'Corporaciones Policiacas y de Vigilancia — Todo tipo de vehículos — 00-000'"
1367
+ - "https://www.dof.gob.mx/nota_detalle.php?codigo=2060390&fecha=25/09/2000 # Acuerdo ARTICULO NOVENO — the plate characters had to correspond to the unit's número económico"
1368
+ notes: >-
1369
+ One-back POLICE format — five DIGITS and nothing else, the only
1370
+ all-numeric series either NOM ever prescribed, and the direct consequence
1371
+ of the Acuerdo's rule that a patrol plate had to reproduce the vehicle's
1372
+ fleet number. The 2016 NOM abandons it for AA-000A-0.