vehicles 0.4.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +164 -0
  3. data/CHANGELOG.md +321 -0
  4. data/README.md +88 -15
  5. data/data/PROVENANCE-vehicles.md +12 -0
  6. data/data/plates/PROVENANCE.md +10 -0
  7. data/data/plates/_decode/at-districts.yml +287 -0
  8. data/data/plates/_decode/ch-cantons.yml +110 -0
  9. data/data/plates/_decode/cn-issuing-offices.yml +463 -0
  10. data/data/plates/_decode/cn-provinces.yml +614 -0
  11. data/data/plates/_decode/cz-kraj.yml +159 -0
  12. data/data/plates/_decode/dk-serial-blocks.yml +327 -0
  13. data/data/plates/_decode/es-provinces.yml +116 -0
  14. data/data/plates/_decode/fr-departements.yml +191 -0
  15. data/data/plates/_decode/gb-age-identifiers.yml +170 -0
  16. data/data/plates/_decode/gb-memory-tags.yml +202 -0
  17. data/data/plates/_decode/gr-prefectures.yml +1408 -0
  18. data/data/plates/_decode/hr-cities.yml +315 -0
  19. data/data/plates/_decode/ie-counties.yml +227 -0
  20. data/data/plates/_decode/in-state-codes.yml +169 -0
  21. data/data/plates/_decode/is-districts-1938.yml +116 -0
  22. data/data/plates/_decode/it-provinces.yml +348 -0
  23. data/data/plates/_decode/jp-office-marks.yml +960 -0
  24. data/data/plates/_decode/jp-use-marks.yml +205 -0
  25. data/data/plates/_decode/kr-authority-marks.yml +146 -0
  26. data/data/plates/_decode/kr-use-syllables.yml +194 -0
  27. data/data/plates/_decode/lu-series-order.yml +638 -0
  28. data/data/plates/_decode/mx-entity-series.yml +380 -0
  29. data/data/plates/_decode/my-index-marks.yml +271 -0
  30. data/data/plates/_decode/no-counties-1913.yml +148 -0
  31. data/data/plates/_decode/no-districts.yml +901 -0
  32. data/data/plates/_decode/pl-powiats.yml +567 -0
  33. data/data/plates/_decode/pt-trailer-services.yml +96 -0
  34. data/data/plates/_decode/ro-counties.yml +213 -0
  35. data/data/plates/_decode/se-diplomatic.yml +220 -0
  36. data/data/plates/_decode/si-regions.yml +123 -0
  37. data/data/plates/_decode/sk-districts.yml +314 -0
  38. data/data/plates/_decode/th-registration-elements.yml +208 -0
  39. data/data/plates/_decode/ua-regions.yml +393 -0
  40. data/data/plates/_decode/za-licence-marks.yml +215 -0
  41. data/data/plates/_meta/classes.yml +26 -0
  42. data/data/plates/_meta/separators.yml +102 -0
  43. data/data/plates/ad.yml +961 -0
  44. data/data/plates/ar.yml +762 -0
  45. data/data/plates/at.yml +1424 -0
  46. data/data/plates/au-act.yml +472 -0
  47. data/data/plates/au-nsw.yml +282 -0
  48. data/data/plates/au-nt.yml +431 -0
  49. data/data/plates/au-qld.yml +272 -0
  50. data/data/plates/au-sa.yml +248 -0
  51. data/data/plates/au-tas.yml +302 -0
  52. data/data/plates/au-vic.yml +215 -0
  53. data/data/plates/au-wa.yml +309 -0
  54. data/data/plates/be.yml +1840 -0
  55. data/data/plates/br.yml +1152 -0
  56. data/data/plates/ca-ab.yml +430 -0
  57. data/data/plates/ca-bc.yml +697 -0
  58. data/data/plates/ca-mb.yml +499 -0
  59. data/data/plates/ca-nb.yml +537 -0
  60. data/data/plates/ca-nl.yml +743 -0
  61. data/data/plates/ca-ns.yml +808 -0
  62. data/data/plates/ca-nt.yml +610 -0
  63. data/data/plates/ca-nu.yml +280 -0
  64. data/data/plates/ca-on.yml +881 -0
  65. data/data/plates/ca-pe.yml +592 -0
  66. data/data/plates/ca-qc.yml +1036 -0
  67. data/data/plates/ca-sk.yml +256 -0
  68. data/data/plates/ca-yt.yml +656 -0
  69. data/data/plates/ch.yml +1273 -0
  70. data/data/plates/cn.yml +1431 -0
  71. data/data/plates/cy.yml +688 -0
  72. data/data/plates/cz.yml +1179 -0
  73. data/data/plates/de.yml +1107 -0
  74. data/data/plates/dk.yml +1647 -0
  75. data/data/plates/ee.yml +1275 -0
  76. data/data/plates/es.yml +888 -0
  77. data/data/plates/fi.yml +1271 -0
  78. data/data/plates/fr.yml +1265 -0
  79. data/data/plates/gb.yml +1188 -0
  80. data/data/plates/gr.yml +721 -0
  81. data/data/plates/hr.yml +860 -0
  82. data/data/plates/hu.yml +959 -0
  83. data/data/plates/ie.yml +775 -0
  84. data/data/plates/in.yml +1172 -0
  85. data/data/plates/is.yml +667 -0
  86. data/data/plates/it.yml +1317 -0
  87. data/data/plates/jp.yml +3650 -0
  88. data/data/plates/kr.yml +1375 -0
  89. data/data/plates/li.yml +1010 -0
  90. data/data/plates/lt.yml +879 -0
  91. data/data/plates/lu.yml +842 -0
  92. data/data/plates/lv.yml +924 -0
  93. data/data/plates/mc.yml +1024 -0
  94. data/data/plates/mt.yml +854 -0
  95. data/data/plates/mx.yml +1372 -0
  96. data/data/plates/my.yml +685 -0
  97. data/data/plates/nl.yml +1016 -0
  98. data/data/plates/no.yml +1018 -0
  99. data/data/plates/nz.yml +1699 -0
  100. data/data/plates/pl.yml +1296 -0
  101. data/data/plates/pt.yml +847 -0
  102. data/data/plates/ro.yml +785 -0
  103. data/data/plates/se.yml +1091 -0
  104. data/data/plates/si.yml +1105 -0
  105. data/data/plates/sk.yml +1439 -0
  106. data/data/plates/sm.yml +1119 -0
  107. data/data/plates/th.yml +1150 -0
  108. data/data/plates/ua.yml +1672 -0
  109. data/data/plates/us-ak.yml +763 -0
  110. data/data/plates/us-al.yml +457 -0
  111. data/data/plates/us-ar.yml +427 -0
  112. data/data/plates/us-as.yml +454 -0
  113. data/data/plates/us-az.yml +430 -0
  114. data/data/plates/us-ca.yml +892 -0
  115. data/data/plates/us-co.yml +452 -0
  116. data/data/plates/us-ct.yml +427 -0
  117. data/data/plates/us-dc.yml +614 -0
  118. data/data/plates/us-de.yml +551 -0
  119. data/data/plates/us-fl.yml +741 -0
  120. data/data/plates/us-ga.yml +644 -0
  121. data/data/plates/us-gu.yml +658 -0
  122. data/data/plates/us-hi.yml +585 -0
  123. data/data/plates/us-ia.yml +438 -0
  124. data/data/plates/us-id.yml +531 -0
  125. data/data/plates/us-il.yml +516 -0
  126. data/data/plates/us-in.yml +324 -0
  127. data/data/plates/us-ks.yml +351 -0
  128. data/data/plates/us-ky.yml +770 -0
  129. data/data/plates/us-la.yml +568 -0
  130. data/data/plates/us-ma.yml +379 -0
  131. data/data/plates/us-md.yml +536 -0
  132. data/data/plates/us-me.yml +445 -0
  133. data/data/plates/us-mi.yml +408 -0
  134. data/data/plates/us-mn.yml +411 -0
  135. data/data/plates/us-mo.yml +356 -0
  136. data/data/plates/us-mp.yml +402 -0
  137. data/data/plates/us-ms.yml +432 -0
  138. data/data/plates/us-mt.yml +619 -0
  139. data/data/plates/us-nc.yml +602 -0
  140. data/data/plates/us-nd.yml +419 -0
  141. data/data/plates/us-ne.yml +483 -0
  142. data/data/plates/us-nh.yml +394 -0
  143. data/data/plates/us-nj.yml +547 -0
  144. data/data/plates/us-nm.yml +574 -0
  145. data/data/plates/us-nv.yml +655 -0
  146. data/data/plates/us-ny.yml +592 -0
  147. data/data/plates/us-oh.yml +404 -0
  148. data/data/plates/us-ok.yml +513 -0
  149. data/data/plates/us-or.yml +392 -0
  150. data/data/plates/us-pa.yml +506 -0
  151. data/data/plates/us-pr.yml +507 -0
  152. data/data/plates/us-ri.yml +445 -0
  153. data/data/plates/us-sc.yml +605 -0
  154. data/data/plates/us-sd.yml +428 -0
  155. data/data/plates/us-tn.yml +471 -0
  156. data/data/plates/us-tx.yml +535 -0
  157. data/data/plates/us-ut.yml +384 -0
  158. data/data/plates/us-va.yml +567 -0
  159. data/data/plates/us-vi.yml +489 -0
  160. data/data/plates/us-vt.yml +458 -0
  161. data/data/plates/us-wa.yml +484 -0
  162. data/data/plates/us-wi.yml +509 -0
  163. data/data/plates/us-wv.yml +446 -0
  164. data/data/plates/us-wy.yml +523 -0
  165. data/data/plates/va.yml +604 -0
  166. data/data/plates/za.yml +1141 -0
  167. data/data/vehicles.json +160653 -105090
  168. data/lib/vehicles/configuration.rb +18 -2
  169. data/lib/vehicles/dataset.rb +73 -18
  170. data/lib/vehicles/fuzzy.rb +115 -0
  171. data/lib/vehicles/http.rb +48 -0
  172. data/lib/vehicles/make.rb +36 -6
  173. data/lib/vehicles/mcp_server.rb +5 -5
  174. data/lib/vehicles/model.rb +42 -6
  175. data/lib/vehicles/plates/jurisdiction.rb +32 -0
  176. data/lib/vehicles/plates/series.rb +291 -0
  177. data/lib/vehicles/plates/template_fill.rb +188 -0
  178. data/lib/vehicles/plates/templates.rb +162 -0
  179. data/lib/vehicles/plates.rb +122 -0
  180. data/lib/vehicles/providers/hosted_provider.rb +49 -58
  181. data/lib/vehicles/providers/local_provider.rb +4 -3
  182. data/lib/vehicles/validators/vehicle_make_validator.rb +3 -1
  183. data/lib/vehicles/validators/vehicle_model_validator.rb +1 -1
  184. data/lib/vehicles/version.rb +1 -1
  185. data/lib/vehicles.rb +53 -16
  186. data/rakelib/data_refresh.rake +109 -0
  187. data/rakelib/plates_refresh.rake +29 -0
  188. data/sig/vehicles.rbs +18 -0
  189. metadata +174 -2
@@ -0,0 +1,384 @@
1
+ # plates/us-ut.yml — Utah (PRD-PLATES gate L2, mountain group).
2
+ #
3
+ # READ THE SOURCING CAVEAT FIRST, BECAUSE IT SHAPES EVERY ENTRY BELOW. Utah is
4
+ # the ONE state in the mountain group whose STATUTE could not be read in this
5
+ # pass. le.utah.gov refused every automated client attempted (connection reset
6
+ # on repeated tries, from two different fetchers), and the Utah Code sections
7
+ # that ARE in the Internet Archive render their text through JavaScript, so the
8
+ # archived captures contain the site chrome and none of the law. Utah Code
9
+ # Title 41 Chapter 1a Part 4 is therefore PINNED BUT UNQUOTED throughout, and
10
+ # every factual claim here rests on the Utah State Tax Commission's Division of
11
+ # Motor Vehicles' own pages plus locators. That is a weaker evidentiary base
12
+ # than Colorado's or Nevada's and it is stated at the top of the file rather
13
+ # than buried in a note.
14
+ #
15
+ # WHAT MAKES UTAH INTERESTING ANYWAY, in three facts:
16
+ # 1. FOUR concurrent standard-issue designs with TWO different serial
17
+ # arrangements between them, plus four more no longer issued but still
18
+ # valid — the DMV says so in its own words.
19
+ # 2. Utah DROPPED THE FRONT PLATE for passenger vehicles on 1 January 2025,
20
+ # one of only a handful of US jurisdictions to move in that direction in
21
+ # the modern era, and consolidated its month and year decals into one.
22
+ # 3. From 2025 Utah stopped embossing and, for the first time in its history,
23
+ # began RE-ISSUING SERIALS FROM A PREVIOUS RUN. A dataset that assumes a
24
+ # US state serial is issued once is now wrong about Utah.
25
+ #
26
+ # WHAT IS NOT HERE (PRD-PLATES §2.5): individual special-group DESIGNS.
27
+ jurisdiction: us-ut
28
+ authority:
29
+ name: Utah State Tax Commission, Division of Motor Vehicles (DMV)
30
+ url: "https://dmv.utah.gov/plates"
31
+ binding: vehicle
32
+ statute_edition: >-
33
+ NOT READ. Utah Code Title 41, Chapter 1a (Motor Vehicle Act), Part 4 (License
34
+ Plates and Registration Indicia) is the governing instrument and is pinned in
35
+ the sources below, but le.utah.gov was unreachable from this environment and
36
+ its archived captures are JavaScript shells. No Utah statutory text is quoted
37
+ anywhere in this file; where a section is named it is named as a pointer, not
38
+ as a source.
39
+
40
+ # ---------------------------------------------------------------------------
41
+ # artwork_risk — required per jurisdiction by PRD-PLATES §4.
42
+ # ---------------------------------------------------------------------------
43
+ artwork_risk:
44
+ posture: unresearched-leaning-adverse
45
+ basis: >-
46
+ NO PRIMARY WAS READ, AND THE POSTURE IS NOT ASSERTED. What was found is a
47
+ pointer, recorded as a pointer: a secondary survey states that Utah's
48
+ Government Records Access and Management Act sits at Utah Code § 63G-2-101,
49
+ that records created or maintained by a state governmental entity are the
50
+ property of the state under § 63A-12-105, and that government entities "may
51
+ control their copyright by ordinance or policy" under § 63G-2-201. If that
52
+ reading is right, Utah's posture is structurally closer to Arizona's
53
+ (copyright assertable, exercised by policy) than to Florida's, which is why
54
+ the posture is recorded as leaning adverse rather than as unknown. But NONE
55
+ of those three sections was read in this pass and no Utah agency policy
56
+ asserting copyright was located, so nothing here is a sourced claim about
57
+ Utah's IP position.
58
+ next_step: >-
59
+ Read Utah Code §§ 63G-2-201 and 63A-12-105 directly, and look for a
60
+ copyright statement on the Utah State Tax Commission's or the Utah State
61
+ Archives' website policies — the two places the equivalent assertion was
62
+ found in Arizona. Both are cheap; neither was reachable here.
63
+ emblem_rule: >-
64
+ PRD-PLATES §3 placeholder default applies, and under an unresearched posture
65
+ it applies at the strict end. Utah's plate identity is carried by DELICATE
66
+ ARCH (a named natural feature inside Arches National Park, which raises a
67
+ separate and unresearched federal question about depictions of national-park
68
+ landmarks) and by the SKIER silhouette, which the press of the day reported
69
+ as modelled on a specific named athlete — a personality-rights question that
70
+ is neither copyright nor trademark and is likewise unresearched. Render both
71
+ as `rendered: placeholder`. Utah state seal statutes: UNRESEARCHED (standing
72
+ gap, US dossier §4.5).
73
+ photograph_caution: >-
74
+ Standard finding: a Commons CC BY-SA tag on a Utah plate photograph licenses
75
+ the PHOTOGRAPH, not the design, and never reaches a render generated from
76
+ the spec.
77
+ sources:
78
+ - "https://en.wikipedia.org/wiki/Copyright_status_of_works_by_subnational_governments_of_the_United_States # LOCATOR ONLY (PRD-PLATES §4): where the § 63G-2-201 / § 63A-12-105 pointers were found. Neither section was read; nothing is asserted from this."
79
+
80
+ # ---------------------------------------------------------------------------
81
+ # The US standards chain.
82
+ # ---------------------------------------------------------------------------
83
+ us_standards:
84
+ no_federal_mandate: true
85
+ chain: "SAE J686 -> AAMVA License Plate Standard Edition 3 (September 2025) -> voluntary state adoption."
86
+ aamva_edition_3:
87
+ dimensions_delegated: "AAMVA §3.1 sends dimensions and bolt holes to SAE J686, PAYWALLED and UNPINNED. No J686 dimension is quoted."
88
+ character_layout: "AAMVA §2.2: characters at least 2.5 in high, spaced at least 0.25 in apart, stroke weight 0.2-0.4 in, at least 1.25 in clear of top and bottom edges."
89
+ jurisdiction_name_layout: "AAMVA §2.1: jurisdiction name top-centre between the bolt holes, at least 0.25 in above the plate number and 0.125 in from the top edge; jurisdiction characters 0.75-1.0 in."
90
+ retroreflectivity: "AAMVA §3.3: readable in daylight and at night from at least 75 feet; ASTM D4956-19 and ISO 7591:1982 clause 3; 45 cd/lx/m2 minimum. No Utah counterpart was read."
91
+ replacement_cycle: >-
92
+ AAMVA §1.1 recommends a rolling or full replacement cycle "not to exceed 7
93
+ to 10 years". Utah's practice cuts across it in an unexpected direction:
94
+ rather than replace plates on a cycle, Utah in 2025 began REISSUING
95
+ SERIALS from runs originally issued 2007-2023, which is the opposite trade
96
+ — retiring numbers less often, not more.
97
+ source: "https://www.aamva.org/getmedia/646bcc8a-219b-47d8-b5cd-726240473163/License-Plate-Standard-Edition-3_September-2025-Update.pdf"
98
+ folklore_caution: >-
99
+ The Wikipedia Utah article states the "1956 agreement" between the United
100
+ States, Canada and Mexico with the AAMVA, the Automobile Manufacturers
101
+ Association and the National Safety Council, and footnotes it to Christopher
102
+ Garrish, "Reconsidering the Standard Plate Size", Plates (ALPCA), volume 62
103
+ number 5, October 2016. TWO THINGS ABOUT THAT CITATION. First, it is a
104
+ hobbyist membership magazine, not a primary instrument, and it was not
105
+ obtained. Second, its title announces that it RECONSIDERS the standard-size
106
+ story — so the reference offered in support of the claim may well be the
107
+ reference that disputes it. The US dossier separately found the same story
108
+ carrying a `citation needed` on the parent article since 2017 and copied
109
+ verbatim across articles. Recorded here as COMMONLY REPEATED, UNSOURCED, and
110
+ flagged as the single most-repeated piece of folklore in the mountain group:
111
+ the identical sentence with the identical footnote appears in the Utah,
112
+ Nevada, Colorado and New Mexico articles.
113
+
114
+ display_rules:
115
+ default: >-
116
+ ONE plate, rear, for most classes. The Utah DMV's own words: "Only rear
117
+ plates are required for most classes of vehicles, including motorcycles and
118
+ trailers. The front plate requirement was lifted for passenger vehicles on
119
+ January 1, 2025." All registered vehicles must display plates.
120
+ front_plate_change: >-
121
+ THE 1 JANUARY 2025 CHANGE IS THE HEADLINE UTAH FACT and it moves the
122
+ national tally: the US dossier recorded 23 front-and-rear jurisdictions,
123
+ 25 rear-only and 9 mixed as of June 2026, with Utah already counted as
124
+ having dropped front plates in January 2025. The statutory instrument
125
+ effecting the change was NOT identified in this pass (recorded gap) — the
126
+ claim rests on the DMV's own page and a contemporaneous local-news locator.
127
+ decals: "month and year decals have been consolidated into a single sticker rather than two separate decals (Utah DMV)"
128
+ manufacture: "from 2025 Utah no longer embosses; new plates are flat screen printed (Utah DMV / locator)"
129
+ sources:
130
+ - "https://dmv.utah.gov/plates # Utah DMV: all registered vehicles must display plates; rear-only for most classes including motorcycles and trailers; front-plate requirement lifted for passenger vehicles on 1 January 2025; decals consolidated; flat screen printing"
131
+ - "https://le.utah.gov/xcode/Title41/Chapter1A/ # Utah Code Title 41 Chapter 1a Part 4, License Plates and Registration Indicia — THE governing instrument. PINNED BUT NOT READ: le.utah.gov refused every automated client and its archived captures are JavaScript shells. No claim in this file is attributed to it."
132
+
133
+ series:
134
+
135
+ # =========================================================================
136
+ # CURRENT STANDARD ISSUE (1) — the "Life Elevated" pair, Skier and Arches.
137
+ # =========================================================================
138
+ - id: us-ut-standard-life-elevated-2007
139
+ class: standard
140
+ categories: [car, van, truck, bus]
141
+ period: { start: 2007 }
142
+ period_evidence: corroboration-only
143
+ matching: strict
144
+ format:
145
+ pattern: "L99 9LL"
146
+ regex: '\A[A-Z]\d{2} ?\d[A-Z]{2}\z'
147
+ charset:
148
+ notes: >-
149
+ Six characters, printed as a three-and-three group. NO LETTER
150
+ EXCLUSION IS ENCODED. The locator record asserts that I, O and Q are
151
+ not used, but its footnote for that assertion reads, in full,
152
+ "Observing hundreds of plates over the past several months" — which is
153
+ an editor's own observation, not a source of any kind. Under
154
+ PRD-PLATES §4 that is below even enthusiast-corroboration grade, so it
155
+ is recorded here as a LEAD and deliberately kept out of
156
+ `regex_strict`. Contrast Nevada, where the same exclusion is
157
+ attributed to a published collector reference and IS encoded.
158
+ progression: >-
159
+ Two different progressions on one arrangement, which is the detail that
160
+ makes Utah's two Life Elevated designs distinguishable from the serial
161
+ alone: on the SKIER base the serial ascends normally; on the ARCH base
162
+ the FIRST LETTER PROGRESSES BACKWARDS (Z, then Y, then X ...). For both,
163
+ the fifth and sixth positions are issued alphabetically AA to ZZ before
164
+ the leading letter advances. Corroboration-grade.
165
+ reissue_warning: >-
166
+ FROM 2025 UTAH REUSES STAGNANT SERIALS from the original 2007-2023 runs,
167
+ skier plates restarting at the A series ascending and arch plates
168
+ restarting at the Z series descending. THIS BREAKS THE ONE-SERIAL-ONE-
169
+ REGISTRATION ASSUMPTION that every US plate dataset makes implicitly. A
170
+ Utah serial no longer identifies a registration even within one series,
171
+ and era inference from serial position is invalid for Utah after 2025.
172
+ Corroboration-grade, and the single most consequential fact in this file
173
+ for a parse API.
174
+ design:
175
+ plate: { w: 12, h: 6, unit: in, w_mm: 304.8, h_mm: 152.4 }
176
+ plate_dimension_note: "no Utah instrument was read; the 12x6 figure is the North American convention from the AAMVA/SAE chain and is not attributed to Utah (recorded gap)"
177
+ background: { finish: retroreflective }
178
+ colour_note: >-
179
+ NO HEX IS CLAIMED and no Utah colour specification was read. Locator
180
+ descriptions: dark blue characters on a skier graphic (Greatest Snow on
181
+ Earth / Life Elevated) and dark blue characters on a Delicate Arch
182
+ graphic (Life Elevated). Both are recorded as leads.
183
+ variants_offered: ["Life Elevated - Skier (Greatest Snow on Earth)", "Life Elevated - Arches (Delicate Arch)"]
184
+ variants_note: >-
185
+ Recorded as variants of ONE series rather than two series because they
186
+ share the arrangement, the period and the issuing rule and differ only
187
+ in graphic — which is the colour-only-variant test in PRD-PLATES §2.3,
188
+ applied to a graphic. The progression difference noted above is the
189
+ argument for the other reading; it is recorded so a verifier can
190
+ overturn this call with evidence rather than taste.
191
+ legend_top: "UTAH"
192
+ graphic: { present: true, rendered: placeholder, description: "skier silhouette, or Delicate Arch — see artwork_risk, both carry unresearched non-copyright questions" }
193
+ emblem: { present: false }
194
+ rear_differs: false
195
+ region_encoding: none
196
+ sources:
197
+ - "https://dmv.utah.gov/plates # Utah DMV: 'Utah currently has four standard issue plates, plus four additional plates that are no longer issued, but are still valid for use on vehicles', naming In God We Trust, Life Elevated Skier, Life Elevated Arches and Off-Highway Vehicle"
198
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Utah # LOCATOR ONLY (PRD-PLATES §4): the 19 November 2007 introduction date, the A12 3BC arrangement, the divergent skier/arch progressions, the 2023 end of the original runs and the 2025 flat-printing and serial-reuse changes. None is asserted as sourced."
199
+ - "https://le.utah.gov/xcode/Title41/Chapter1A/ # Utah Code Title 41 Chapter 1a Part 4 — PINNED, NOT READ"
200
+ notes: >-
201
+ UTAH'S PRINCIPAL STANDARD ISSUE. `period_evidence: corroboration-only`:
202
+ 19 November 2007 comes from a locator footnoted to a newspaper blog post
203
+ of 20 November 2007, and no Utah instrument was read. THE SERIES IS
204
+ DELIBERATELY LEFT OPEN (`end` absent) even though the original runs are
205
+ reported to have ended in 2023, because the 2025 reissue programme is
206
+ putting the SAME arrangement back into circulation on the SAME designs —
207
+ which is continuation, not revival. If a verifier reads it as two runs,
208
+ the honest shape is `ended: true` on a first entry plus a second dated
209
+ 2025, and the PRD-QUALITY I-5/I-6 alias contract covers the recut.
210
+
211
+ # =========================================================================
212
+ # CURRENT STANDARD ISSUE (2) — In God We Trust, a specialty plate promoted
213
+ # to standard. Different arrangement, so its own series.
214
+ # =========================================================================
215
+ - id: us-ut-standard-igwt-2023
216
+ class: standard
217
+ categories: [car, van, truck, bus]
218
+ period: { start: 2023 }
219
+ period_evidence: corroboration-only
220
+ matching: strict
221
+ format:
222
+ pattern: "9LLL9"
223
+ regex: '\A\d[A-Z]{3}\d\z'
224
+ charset:
225
+ notes: >-
226
+ Five characters, digit-letter-letter-letter-digit, printed without a
227
+ separator. The locator adds a genuinely odd allocation rule for this
228
+ and the earlier 1A2BC arrangement: "letter combinations begin with the
229
+ numbers 00 instead of 01 (so 9AAA9 is followed by 0AAB0, 9AAB9 is
230
+ followed by 0AAC0 and so on)" — i.e. the numeric wrap happens on BOTH
231
+ end digits together. Corroboration-grade.
232
+ reissue_warning: >-
233
+ As with the Life Elevated series, Utah from 2025 is ALSO printing In God
234
+ We Trust plates in the older A123B arrangement, reusing serials from the
235
+ run that specialty plates used 2007-2019, apparently starting around
236
+ A001N and ascending. The locator states outright that what determines
237
+ which arrangement a given In God We Trust plate receives "is unknown".
238
+ Recorded because an honest unknown is more useful than a guess: a
239
+ five-character Utah serial in EITHER arrangement may be an In God We
240
+ Trust plate, and neither arrangement dates it.
241
+ design:
242
+ plate: { w: 12, h: 6, unit: in }
243
+ background: { finish: retroreflective }
244
+ colour_note: "no hex claimed; no Utah colour specification was read"
245
+ legend_top: "UTAH"
246
+ legend_bottom: "In God We Trust; United We Stand"
247
+ graphic: { present: true, rendered: placeholder }
248
+ region_encoding: none
249
+ sources:
250
+ - "https://dmv.utah.gov/plates # Utah DMV lists In God We Trust among the four currently issued standard plates"
251
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Utah # LOCATOR ONLY: first issued 2013 as a specialty plate and standardized from 2017 onward (footnoted to a Deseret News report of 21 March 2016); the 1ABC2 arrangement from August 2023; the 00-not-01 wrap rule; the 2025 A123B reuse"
252
+ - "https://le.utah.gov/xcode/Title41/Chapter1A/ # Utah Code Title 41 Chapter 1a Part 4 — PINNED, NOT READ"
253
+ notes: >-
254
+ IN GOD WE TRUST — A SPECIALTY PLATE THAT BECAME A STANDARD ONE, which is a
255
+ transition no other state in the mountain group shows. It was first issued
256
+ in 2013 as a specialty plate and standardized from 1 January 2017; the
257
+ series here is dated 2023 because that is when the CURRENT arrangement
258
+ began, and the earlier arrangements are recorded in the charset note
259
+ rather than given entries of their own (no primary for their boundaries).
260
+ A class-vocabulary observation worth carrying to _meta/classes.yml: this
261
+ plate is `standard` by issuance status and `specialty` by origin, and the
262
+ vocabulary has no way to say that a series CHANGED CLASS. Utah is the
263
+ first case in the dataset that needs it.
264
+
265
+ # =========================================================================
266
+ # ONE BASE BACK — the 1993-2007 Arches / Ski generation.
267
+ # =========================================================================
268
+ - id: us-ut-standard-1993
269
+ class: standard
270
+ categories: [car, van, truck, bus]
271
+ period: { start: 1993, end: 2007 }
272
+ period_evidence: corroboration-only
273
+ matching: strict
274
+ format:
275
+ pattern: "999 LLL"
276
+ regex: '\A\d{3} ?[A-Z]{3}\z'
277
+ charset: { notes: "three digits, group gap, three letters — the arrangement Utah used before the 2007 change to a leading letter. Corroboration-grade." }
278
+ progression: "on the Centennial/Arch base the first letter progressed BACKWARDS (999 ZZZ was followed by 001 YAA, 999 YZZ by 001 XAA, and so on) — the same backwards habit the modern Arch base kept"
279
+ design:
280
+ plate: { w: 12, h: 6, unit: in }
281
+ background: { finish: retroreflective }
282
+ colour_note: "no hex claimed. Locator description: dark blue characters on a Delicate Arch graphic, with 'UTAH' in white on the 1992-96 issue and in blue from 1996."
283
+ legend_bottom: "Centennial"
284
+ graphic: { present: true, rendered: placeholder }
285
+ region_encoding: none
286
+ sources:
287
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Utah # LOCATOR ONLY: the 1993 to 18 November 2007 window, the 123 ABC arrangement, the backwards first-letter progression, the Centennial slogan commemorating Utah's 100 years of statehood, and concurrent issuance with the 1985 Ski base as an extra-fee base and then a no-cost base from 1997"
288
+ - "https://le.utah.gov/xcode/Title41/Chapter1A/ # Utah Code Title 41 Chapter 1a Part 4 — PINNED, NOT READ"
289
+ notes: >-
290
+ THE PREVIOUS BASE. Kept deliberately thin, because everything about it is
291
+ locator-grade and the file should not pretend otherwise. One structural
292
+ point is worth the entry on its own: the Centennial Arch base was issued
293
+ CONCURRENTLY with the 1985 Ski base — first as an extra-fee option, then
294
+ free from 1997 — so Utah's habit of running two standard designs at once
295
+ is thirty years old and is not an artefact of the modern four-design
296
+ catalogue.
297
+
298
+ # =========================================================================
299
+ # SPECIAL GROUP PLATES — Utah's specialty programme, and the ONE place the
300
+ # DMV states a serial format outright.
301
+ # =========================================================================
302
+ - id: us-ut-special-group-index
303
+ class: specialty
304
+ categories: [car, van, truck, motorcycle]
305
+ period: { start: 2026 }
306
+ period_evidence: instrument-in-force-upper-bound
307
+ matching: strict
308
+ format:
309
+ pattern: "99LL9"
310
+ regex: '\A[A-Z0-9]{5}\z'
311
+ charset:
312
+ notes: >-
313
+ THE UTAH DMV STATES THE FORMAT ITSELF, which is rare enough to quote:
314
+ "Special group plates consist of a five-character combination on the
315
+ right with the special group sticker on the left and a descriptive
316
+ phrase on the bottom." FIVE CHARACTERS, from the authority, in terms.
317
+ The regex encodes exactly that and nothing more — five alphanumerics,
318
+ no separator — because the DMV states the LENGTH and not the
319
+ arrangement. `matching: strict` is correct: five alphanumerics is not
320
+ wider than what Utah issues on these plates, it is precisely the
321
+ stated constraint.
322
+ pattern_note: >-
323
+ `pattern` shows 99LL9 because the locator records 12AB3 as the current
324
+ specialty arrangement, but the pattern DSL cannot express "any five
325
+ alphanumerics" and the DMV constrains only the count. The regex is the
326
+ claim; the pattern is one instance of it. Same DSL limitation as
327
+ Arizona's, arrived at from the opposite direction — Arizona's authority
328
+ fixes one position's type and leaves the count, Utah's fixes the count
329
+ and leaves the types.
330
+ design:
331
+ plate: { w: 12, h: 6, unit: in }
332
+ background: { finish: retroreflective }
333
+ layout_rule: "five-character combination at the RIGHT of the plate; special group sticker at the LEFT; descriptive phrase along the BOTTOM (Utah DMV). A stated layout, which most states do not give at all, and directly usable as render constraints."
334
+ note: "one design per authorised group; the designs themselves are L4 scope (PRD-PLATES §2.5) and none is described here"
335
+ emblem: { present: true, rendered: placeholder }
336
+ program_index:
337
+ count_measured: 63
338
+ count_basis: >-
339
+ SIXTY-THREE distinct special group plates counted from the Utah DMV's
340
+ own listing as archived 29 December 2024, plus eight collegiate entries
341
+ counted within that total (Brigham Young, Ensign College, Salt Lake
342
+ Community College, Snow College, Southern Utah, Utah — two options,
343
+ Utah State, Utah Tech, Utah Valley, Weber State, Western Governors,
344
+ Westminster). A MEASURED count of one page at one instant, not a figure
345
+ the Division publishes, and stated that way on purpose.
346
+ no_longer_issued: >-
347
+ The DMV separately lists eight designs no longer issued but still valid:
348
+ four former STANDARD plates (unnamed on the page) and, among special
349
+ groups, Utah Centennial, Ski Utah!, Olympic, Utah Clean Fuel Clean Air,
350
+ Collegiate College of Eastern Utah, Wildlife Eagle and Prostate Cancer
351
+ Awareness. Dead designs lawfully on the road — the `ended: true` +
352
+ `year_end_min:` case again, and the reason a US plates dataset cannot
353
+ model only what is currently ORDERABLE.
354
+ internal_discrepancy: >-
355
+ RECORDED, NOT RECONCILED (PRD-PLATES §5.3). The same DMV page says in
356
+ one paragraph that "Utah has three standard issue plates" and in the
357
+ next that "Utah currently has four standard issue plates". Both
358
+ sentences are quoted above from the same archived capture. The four-plate
359
+ sentence is the one that then enumerates four plates, so it is the more
360
+ likely intent, but the page contradicts itself and the contradiction is
361
+ the record.
362
+ official_list_url: "https://dmv.utah.gov/plates"
363
+ statutory_frame: "Utah Code Title 41 Chapter 1a Part 4 governs; § 41-1a-418 is the authorized-special-group-plates section (identified by URL, NOT READ — see the file header)"
364
+ exempt_plates:
365
+ rule: >-
366
+ "All publicly owned vehicles and vehicles leased by public entities must
367
+ be registered as exempt vehicles and bear EX (exempt) plates. Plates on
368
+ Utah Highway Patrol vehicles are also categorized as exempt." (Utah DMV.)
369
+ A two-letter EX marker is a government-class series in everything but
370
+ name; it is NOT given its own entry because no serial format for it was
371
+ obtained (recorded gap).
372
+ region_encoding: none
373
+ sources:
374
+ - "https://dmv.utah.gov/plates # Utah DMV: the five-character special-group format and its layout; the full special-group listing counted here; the no-longer-issued list; the EX exempt-plate rule; and the three-versus-four standard-plate contradiction"
375
+ - "https://le.utah.gov/xcode/Title41/Chapter1A/ # Utah Code Title 41 Chapter 1a Part 4 and § 41-1a-418 — PINNED, NOT READ"
376
+ notes: >-
377
+ THE SPECIAL-GROUP PROGRAM INDEX — one entry for the whole programme, per
378
+ PRD-PLATES §2.5. IT IS THE STRONGEST ENTRY IN THIS FILE despite the file's
379
+ weak statutory base, because the Division states the serial LENGTH and the
380
+ plate LAYOUT in its own words, which is more than Florida, Colorado,
381
+ Nevada or Arizona do for their specialty programmes. The gap that remains
382
+ is the creation threshold: Colorado requires three thousand signatures,
383
+ Nevada 250 applications, and Utah's equivalent is in Part 4 and was not
384
+ read.