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,356 @@
1
+ # plates/us-mo.yml — Missouri (PRD-PLATES gate L2, group midwest-b).
2
+ #
3
+ # MISSOURI LEGISLATES ITS SLOGAN AND DELEGATES ITS SERIAL — the opposite split
4
+ # from Kansas next door. RSMo 301.130.1 fixes, in statute, that every set of
5
+ # plates bears the state name, the words "SHOW-ME STATE", and the month and year
6
+ # of expiration; but the serial itself is only "an arrangement of numbers or
7
+ # letters, or both, as shall be assigned from year to year by the director of
8
+ # revenue." So Missouri's legend is a hard fact and Missouri's format is a
9
+ # delegation, and this file reflects that asymmetry honestly rather than
10
+ # flattening it.
11
+ #
12
+ # THE STATUTE ALSO CARRIES A DESIGN AESTHETIC REQUIREMENT, which is rare enough
13
+ # to be worth flagging: plates "shall be clearly visible at night, and shall be
14
+ # AESTHETICALLY ATTRACTIVE." A legislature legislating attractiveness is a
15
+ # genuine curiosity in a corpus of dimension minima and reflectivity indices.
16
+ #
17
+ # WHERE THE FORMAT EVIDENCE ACTUALLY CAME FROM: Missouri's Department of Revenue
18
+ # runs an official plate-preview tool whose backing data file enumerates every
19
+ # design the state offers and, for each, its character limit. EVERY ONE of the
20
+ # 163 designs is capped at SIX characters. That is a sourced frame — a real
21
+ # constraint from the issuing agency's own system — even though the ARRANGEMENT
22
+ # of those six characters is nowhere stated. Hence `matching: recall-only` on
23
+ # the standard series with a sourced width and an unsourced shape.
24
+ jurisdiction: us-mo
25
+ authority:
26
+ name: Missouri Department of Revenue, Motor Vehicle Bureau
27
+ url: "https://dor.mo.gov/motor-vehicle/plates/"
28
+ binding: vehicle
29
+ statute_edition: "Missouri Revised Statutes Chapter 301 (Registration and Licensing of Motor Vehicles), § 301.130 as published by the Revisor of Statutes at revisor.mo.gov, effective 28 August 2018 (the section carries 12 histories)"
30
+
31
+ # ---------------------------------------------------------------------------
32
+ # artwork_risk — required per jurisdiction by PRD-PLATES §4. Missouri is one of
33
+ # only two states in group midwest-b for which ANY evidence exists.
34
+ # ---------------------------------------------------------------------------
35
+ artwork_risk:
36
+ posture: no-general-grant-default-copyright
37
+ basis: >-
38
+ MISSOURI HAS NO GENERAL STATUTORY COPYRIGHT AUTHORITY FOR STATE WORKS; it has two
39
+ NARROW, department-specific grants, and the distinction matters. The copyright survey
40
+ read for this pass glosses Missouri as 'Some Missouri departments and commissions may
41
+ hold copyright in their works', citing RSMo 630.095 for the proposition that
42
+ 'executive departments may hold copyright for works for hire'.
43
+ THAT GLOSS OVERSTATES THE STATUTE, and chasing it to the primary is what PRD-PLATES §4
44
+ requires: RSMo 630.095 sits in CHAPTER 630, which is the DEPARTMENT OF MENTAL HEALTH,
45
+ and reads 'Copyrights and trademarks by department. — The department may copyright or
46
+ obtain a trademark for any instructional, training and informational audio-visual
47
+ materials, manuals...'. It is a grant to ONE department over ITS training materials,
48
+ not a general executive-branch power, and it has nothing to say about the Department
49
+ of Revenue or about licence plates. The other cited grant, RSMo 8.007, is likewise
50
+ confined to the State Capitol Commission and to works depicting the Capitol.
51
+ CONCLUSION: no Missouri statute authorises the Department of Revenue to copyright a
52
+ plate design, and none forbids it either. The dossier's default therefore governs —
53
+ state works are presumed copyrighted absent a contrary declaration — and Missouri has
54
+ made no contrary declaration. Treat plate ARTWORK as protected; treat the statute as
55
+ free.
56
+ folklore_corrected: >-
57
+ RECORDED AS A DEBUNKING, per PRD-PLATES §9's folklore discipline: the secondary
58
+ summary that 'executive departments may hold copyright' in Missouri is not what the
59
+ cited section says. Anyone extending it to the Department of Revenue would be relying
60
+ on an encyclopedia's paraphrase of a mental-health-department housekeeping provision.
61
+ The primary was fetched and read for this file precisely to avoid propagating it.
62
+ edict_carve_out: >-
63
+ Every format, legend, display and replacement claim in this file cites RSMo Chapter
64
+ 301. Edicts of government are uncopyrightable at every level ({{PD-US-GovEdict}}), so
65
+ the 'SHOW-ME STATE' legend requirement, the six-year plate period, the single-plate
66
+ class list and the mounting heights are all affirmatively clean regardless of
67
+ Missouri's posture on artwork.
68
+ emblem_rule: >-
69
+ PRD-PLATES §3's placeholder default applies to the current Missouri base graphic and
70
+ to every collegiate and organizational emblem in the catalogue. The collegiate and
71
+ organizational marks carry an ADDITIONAL layer beyond state copyright: they are
72
+ third-party university and charity marks, plausibly trademarked and licensed to the
73
+ program rather than owned by Missouri, so a clean state posture would not clear them
74
+ even if one existed. Render `emblem: {present: true, rendered: placeholder}`.
75
+ Missouri state-seal misuse statutes are unresearched.
76
+ sources:
77
+ - "https://revisor.mo.gov/main/OneSection.aspx?section=630.095 # RSMo 630.095, fetched and read: 'Copyrights and trademarks by department' — a Department of Mental Health provision covering instructional, training and informational materials. The primary that corrects the secondary gloss"
78
+ - "https://en.wikipedia.org/wiki/Copyright_status_of_works_by_subnational_governments_of_the_United_States # LOCATOR ONLY (PRD-PLATES §4): the Missouri section, whose paraphrase of RSMo 630.095 was chased to the primary above and found to overstate it. Also cites RSMo 8.007 (State Capitol Commission)"
79
+
80
+ us_standards:
81
+ no_federal_mandate: true
82
+ chain: "SAE J686 -> AAMVA License Plate Standard Edition 3 (September 2025) -> voluntary state adoption. AAMVA has no enforcement power; its declarative present is RECOMMENDED PRACTICE."
83
+ dimensions_delegated: "AAMVA §3.1 sends dimensions and bolt holes to SAE J686, whose text is PAYWALLED and UNPINNED. No J686 dimension is quoted anywhere in this file."
84
+ geometry_available: "AAMVA §2.1 (jurisdiction name top-centre between the bolt holes, >=0.25 in above the number, >=0.125 in from the top edge, characters 0.75-1.0 in) and §2.2 (characters >=2.5 in high, >=0.25 in apart, stroke 0.2-0.4 in, >=1.25 in clear of top and bottom)."
85
+ retroreflectivity: "AAMVA §3.3: legible day and night from at least 75 feet; ASTM D4956-19 and ISO 7591:1982 clause 3; entrance angle 0.2 deg, observation angle -4 deg, minimum 45 cd/lx/m^2."
86
+ replacement_cycle_recommendation: "AAMVA §1.1 recommends a cycle 'not to exceed 7 to 10 years'. Missouri legislates a FLOOR rather than a ceiling — RSMo 301.130.6(4), 'the director of revenue shall issue plates for a period of at least six years' — which is the inverse instrument and does not cap plate age at all."
87
+ source: "https://www.aamva.org/getmedia/646bcc8a-219b-47d8-b5cd-726240473163/License-Plate-Standard-Edition-3_September-2025-Update.pdf"
88
+ folklore_caution: "The '1956 AMA standardization agreement' is UNCITED in its Wikipedia source (a `citation needed` since 2017, copied across articles). Recorded as COMMONLY REPEATED, UNSOURCED. RSMo 301.130 states no plate dimension, so this file makes no Missouri dimension claim (recorded gap)."
89
+
90
+ # ---------------------------------------------------------------------------
91
+ # Display rules. Missouri is a TWO-PLATE state whose single-plate exception list
92
+ # is unusually long and is drawn by VEHICLE CLASS rather than by weight alone.
93
+ # ---------------------------------------------------------------------------
94
+ display_rules:
95
+ default: "TWO plates, front and rear. RSMo 301.130.5: plates 'shall be fastened to all motor vehicles except trucks, tractors, truck tractors or truck-tractors licensed in excess of twelve thousand pounds on the front and rear of such vehicles not less than eight nor more than forty-eight inches above the ground, with the letters and numbers thereon right side up'."
96
+ single_plate_classes: >-
97
+ RSMo 301.130.3: 'only one license plate shall be issued' for property-carrying
98
+ commercial motor vehicles registered above 12,000 lb gross weight, all
99
+ passenger-carrying commercial motor vehicles, local transit buses, school buses,
100
+ trailers, semitrailers, motorcycles, motortricycles, autocycles, motorscooters and
101
+ driveaway vehicles.
102
+ optional_second_plate: "RSMo 301.130.3: an applicant registering a property-carrying commercial vehicle above 12,000 lb MAY REQUEST two plates, in which case 'the director of revenue shall provide for distinguishing marks on the plates indicating one plate is for the front and the other is for the rear' — a front/rear asymmetry created on request, which is why `rear_differs` is conditional for that class"
103
+ front_only: "RSMo 301.130.5: the plate on buses other than school buses, and on trucks, tractors, truck tractors or truck-tractors licensed in excess of 12,000 lb, 'shall be displayed on the front of such vehicles' — front-only unless the optional second plate was taken"
104
+ rear_and_orientation: "RSMo 301.130.5: plates on trailers, motorcycles, motortricycles, autocycles and motorscooters 'shall be displayed on the rear of such vehicles either horizontally or vertically, with the letters and numbers plainly visible' — Missouri expressly permits VERTICAL display for these classes"
105
+ mounting: "not less than 8 nor more than 48 inches above the ground, right side up, plainly visible and reasonably clean so the reflective qualities are not impaired; a transparent cover is permitted so long as the plate stays plainly visible and its reflectivity is unimpaired (RSMo 301.130.5)"
106
+ evidentiary_effect: "RSMo 301.130.5: a properly attached plate 'shall be prima facie evidence that the required fees have been paid'"
107
+ sources:
108
+ - "https://revisor.mo.gov/main/OneSection.aspx?section=301.130 # RSMo 301.130.3: the single-plate class list and the optional second plate with front/rear distinguishing marks; .5: two-plate default, the 8-48 inch mounting band, front-only for heavy trucks and non-school buses, rear and vertical-or-horizontal display for trailers and two-wheelers, the transparent-cover allowance, and the prima facie evidence rule"
109
+
110
+ series:
111
+
112
+ # =========================================================================
113
+ # THE STANDARD-ISSUE SERIES — statutory legend, delegated serial, sourced width.
114
+ # =========================================================================
115
+ - id: us-mo-standard
116
+ class: standard
117
+ categories: [car, van, truck, bus]
118
+ period: { start: 2025 }
119
+ period_evidence: instrument-in-force-upper-bound
120
+ matching: recall-only
121
+ format:
122
+ pattern: "LL9L9L"
123
+ regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,5}\z'
124
+ charset:
125
+ max_characters: 6
126
+ max_characters_basis: >-
127
+ SOURCED FROM THE ISSUING AGENCY'S OWN SYSTEM. The Missouri Department of Revenue's
128
+ official plate-preview tool is driven by a data file enumerating every design the
129
+ state offers, each entry carrying that design's character limit. ALL 163 ENTRIES
130
+ — 7 standard, 32 collegiate, 49 military, 75 organizational — carry the limit 6.
131
+ A six-character frame is therefore a real, agency-stated constraint on the
132
+ Missouri plate, uniform across the entire catalogue.
133
+ notes: >-
134
+ RSMo 301.130.1 states the legend and delegates the serial: each set of plates
135
+ bears 'the name or abbreviated name of this state, the words "SHOW-ME STATE", the
136
+ month and year in which the registration shall expire, and an arrangement of
137
+ numbers or letters, or both, as shall be assigned from year to year by the
138
+ director of revenue.' RSMo 301.130.2 adds that 'The arrangement of letters and
139
+ numbers of license plates shall be uniform throughout each classification of
140
+ registration' and that the director 'may provide for the arrangement of the
141
+ numbers in groups or otherwise'. NO ARRANGEMENT AND NO LETTER EXCLUSIONS are
142
+ stated in the statute.
143
+ pattern_note: >-
144
+ REPRESENTATIVE SHAPE ONLY, on the nl-export precedent, AND THE HONEST POSITION FOR
145
+ MISSOURI. The WIDTH is sourced (six characters, from the agency's own preview
146
+ system); the ARRANGEMENT is not sourced anywhere this pass could reach — the
147
+ statute delegates it, and the Department of Revenue publishes no format
148
+ specification. The pattern shows a six-character interleaved shape as a
149
+ representative member of the space, NOT as a claim about Missouri's current
150
+ arrangement. The regex is deliberately the full six-character alphanumeric frame
151
+ and `matching: recall-only` says exactly what that means: a hit is a shape hit
152
+ inside Missouri's sourced width, never a well-formedness claim. Pinning the actual
153
+ arrangement is the top Missouri follow-up.
154
+ grouping: "RSMo 301.130.2 lets the director arrange the characters 'in groups or otherwise', which is why the separator is optional in the regex rather than mandatory"
155
+ design:
156
+ legend_state: "Missouri"
157
+ legend_slogan: "SHOW-ME STATE"
158
+ legend_rule: >-
159
+ THE SLOGAN IS STATUTORY. RSMo 301.130.1 requires every set of plates to bear 'the
160
+ words "SHOW-ME STATE"', and then carves out exactly two substitutions: 'Special
161
+ plates for qualified disabled veterans will have the "DISABLED VETERAN" wording on
162
+ the license plates in preference to the words "SHOW-ME STATE" and special plates
163
+ for members of the National Guard will have the "NATIONAL GUARD" wording in
164
+ preference to the words "SHOW-ME STATE".' Those two displacements are broken out as
165
+ their own series below, because a mandated legend difference is a design difference
166
+ under PRD-PLATES §2.3.
167
+ expiration_display: "RSMo 301.130.1: the plate bears 'the month and year in which the registration shall expire' — Missouri prints the expiry on the PLATE, not only on a sticker"
168
+ material_and_finish: "RSMo 301.130.1: 'The plates shall also contain fully reflective material with a common color scheme and design for each type of license plate issued pursuant to this chapter.'"
169
+ aesthetic_requirement: >-
170
+ RSMo 301.130.1, verbatim and unusual: 'The plates shall be clearly visible at
171
+ night, and shall be aesthetically attractive.' A statutory attractiveness duty is
172
+ worth recording as a curiosity of the corpus — it is a design requirement with no
173
+ testable content, and it sits in the same sentence as a night-visibility
174
+ requirement that has plenty.
175
+ colour_note: >-
176
+ NO HEX IS RECORDED. RSMo 301.130.1 mandates a 'common color scheme' per plate type
177
+ but names no colour, and no Missouri departmental colour specification was
178
+ obtained. Recorded gap rather than an eyedropped value.
179
+ emblem: { present: true, rendered: placeholder }
180
+ rear_differs: false
181
+ replacement_cycle:
182
+ years: 6
183
+ statutory_text: "RSMo 301.130.6(4): 'Except as otherwise provided in this section, the director of revenue shall issue plates for a period of at least six years.'"
184
+ note: >-
185
+ A FLOOR, NOT A CEILING — the inverse of Florida's ten-year replacement rule and of
186
+ AAMVA §1.1's recommended maximum. Missouri law guarantees a plate will be issued
187
+ for AT LEAST six years and sets no outer limit at all, so Missouri plate age is
188
+ statutorily unbounded above. A consumer inferring Missouri base generations from a
189
+ six-year cadence would be reading a minimum as a period.
190
+ tabs: "RSMo 301.130.6(1): the director issues a tab or set of tabs annually or biennially as evidence of registration IN LIEU of a new set of plates; from 1 January 2010 the director may record additional information on the tab so that it 'positively correlate[s] with the license plate'; (2) one tab per plate, affixed in the designated area"
191
+ permanent_registration: "RSMo 301.130.6(5): commercial motor vehicles and trailers registered under RSMo 301.041 receive a PERMANENT NONEXPIRING plate for which no tabs are issued; the plate returns to the Highways and Transportation Commission on sale or disposal, or transfers to a replacement commercial vehicle on a supplemental application"
192
+ region_encoding: none
193
+ sources:
194
+ - "https://revisor.mo.gov/main/OneSection.aspx?section=301.130 # RSMo 301.130.1: the state name, the mandatory 'SHOW-ME STATE' legend, the month-and-year expiry on the plate, the delegated arrangement of numbers or letters, fully reflective material with a common colour scheme per type, night visibility and the aesthetic-attractiveness requirement, and the DISABLED VETERAN / NATIONAL GUARD legend substitutions; .2 uniformity per classification and the grouping discretion; .6(1)-(2) tabs in lieu of plates; .6(4) the six-year floor; .6(5) permanent nonexpiring commercial plates"
195
+ - "https://dor.mo.gov/js/platescript.js # the data file backing the Missouri DOR's official plate-preview tool at dor.mo.gov/motor-vehicle/plates/personalized-specialty.html#preview: 163 designs across four categories, EVERY ONE carrying a six-character limit"
196
+ - "https://www.aamva.org/getmedia/646bcc8a-219b-47d8-b5cd-726240473163/License-Plate-Standard-Edition-3_September-2025-Update.pdf # AAMVA Ed.3 §1.1, the 7-10 year recommended ceiling against which Missouri's statutory six-year FLOOR is the inverse instrument"
197
+ notes: >-
198
+ MISSOURI STANDARD ISSUE. THE ID IS DELIBERATELY UNDATED and the series is deliberately
199
+ `recall-only`: Missouri's width is sourced and its arrangement is not, and conflating
200
+ the two would produce a confident regex resting on nothing. `start: 2025` is the
201
+ instrument-in-force upper bound, not a base-design date — RSMo 301.130 has been
202
+ effective since 28 August 2018 and Missouri has issued alphanumeric plates for the
203
+ better part of a century.
204
+ THE ONE SERIES BACK IS A RECORDED GAP. Missouri's six-year statutory floor means base
205
+ generations exist, but no primary establishing their boundaries was obtained and the
206
+ DOR publishes no plate history this pass could reach. Rather than mint a dated series
207
+ on a collector-site era table, it is omitted and recorded here.
208
+
209
+ # =========================================================================
210
+ # THE TWO STATUTORY LEGEND DISPLACEMENTS. RSMo 301.130.1 names both in one
211
+ # sentence, so each is its own series under PRD-PLATES §2.3.
212
+ # =========================================================================
213
+ - id: us-mo-disabled-veteran
214
+ class: standard
215
+ categories: [car, van, truck]
216
+ period: { start: 2025 }
217
+ period_evidence: instrument-in-force-upper-bound
218
+ matching: recall-only
219
+ format:
220
+ pattern: "LL9L9L"
221
+ regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,5}\z'
222
+ charset: { max_characters: 6, notes: "the six-character frame from the DOR preview catalogue applies; the statute displaces the LEGEND only and says nothing about the serial" }
223
+ pattern_note: "REPRESENTATIVE SHAPE ONLY — as for us-mo-standard, the width is sourced and the arrangement is not; `matching: recall-only` accordingly"
224
+ design:
225
+ legend_state: "Missouri"
226
+ legend_slogan: "DISABLED VETERAN"
227
+ legend_rule: "RSMo 301.130.1: 'Special plates for qualified disabled veterans will have the \"DISABLED VETERAN\" wording on the license plates in preference to the words \"SHOW-ME STATE\".'"
228
+ emblem: { present: true, rendered: placeholder }
229
+ colour_note: "no hex recorded; the statute's 'common color scheme' duty names no value"
230
+ region_encoding: none
231
+ sources:
232
+ - "https://revisor.mo.gov/main/OneSection.aspx?section=301.130 # RSMo 301.130.1: the DISABLED VETERAN legend displacing SHOW-ME STATE for qualified disabled veterans"
233
+ notes: >-
234
+ DISABLED VETERAN PLATES. Its own series rather than a variant because the statute
235
+ mandates a legend difference in terms, which PRD-PLATES §2.3 treats as a design
236
+ difference and therefore a series. CLASS CAVEAT: recorded as `standard` because
237
+ _meta/classes.yml has no veteran or disability class and this is an ordinary
238
+ registration with a mandated legend, not a separate issuance regime — the same
239
+ reasoning us-fl-wrecker and us-fl-restricted use. Missouri's eligibility criteria for
240
+ 'qualified disabled veterans' are not in § 301.130 and were not obtained (gap).
241
+
242
+ - id: us-mo-national-guard
243
+ class: standard
244
+ categories: [car, van, truck]
245
+ period: { start: 2025 }
246
+ period_evidence: instrument-in-force-upper-bound
247
+ matching: recall-only
248
+ format:
249
+ pattern: "LL9L9L"
250
+ regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,5}\z'
251
+ charset: { max_characters: 6, notes: "the six-character frame from the DOR preview catalogue applies; the statute displaces the LEGEND only" }
252
+ pattern_note: "REPRESENTATIVE SHAPE ONLY — width sourced, arrangement not; `matching: recall-only` accordingly"
253
+ design:
254
+ legend_state: "Missouri"
255
+ legend_slogan: "NATIONAL GUARD"
256
+ legend_rule: "RSMo 301.130.1: 'special plates for members of the National Guard will have the \"NATIONAL GUARD\" wording in preference to the words \"SHOW-ME STATE\".'"
257
+ emblem: { present: true, rendered: placeholder }
258
+ colour_note: "no hex recorded; the statute's 'common color scheme' duty names no value"
259
+ region_encoding: none
260
+ sources:
261
+ - "https://revisor.mo.gov/main/OneSection.aspx?section=301.130 # RSMo 301.130.1: the NATIONAL GUARD legend displacing SHOW-ME STATE for National Guard members"
262
+ notes: >-
263
+ NATIONAL GUARD PLATES. The second of Missouri's two statutory legend displacements,
264
+ given its own entry for the same §2.3 reason as the disabled-veteran plate above and
265
+ recorded separately because the statute names the two independently and attaches them
266
+ to different eligibility groups. Together these two are the whole of Missouri's
267
+ legislated legend taxonomy — everything else in the Missouri catalogue is a design
268
+ program under the specialty index below, not a statutory legend.
269
+
270
+ # =========================================================================
271
+ # PERSONALIZED.
272
+ # =========================================================================
273
+ - id: us-mo-personalized
274
+ class: personalized
275
+ categories: [car, van, truck, motorcycle]
276
+ period: { start: 2025 }
277
+ period_evidence: instrument-in-force-upper-bound
278
+ matching: strict
279
+ format:
280
+ pattern: "LLLLLL"
281
+ regex: '\A[A-Z]{1,6}\z'
282
+ regex_statutory: '\A[A-Z0-9](?: ?[A-Z0-9]){0,5}\z'
283
+ charset:
284
+ max_characters: 6
285
+ notes: "the six-character cap is uniform across all 163 designs in the DOR's own preview catalogue, and personalization operates inside it; RSMo 301.144 governs the personalized-plate fee, which RSMo 301.130.3 cross-references when capping the surcharge for an optional second commercial plate"
286
+ pattern_note: "`regex` is the letters-only shape most vanity configurations take; `regex_statutory` is the sourced six-character alphanumeric frame"
287
+ design:
288
+ note: "Missouri's preview tool offers personalization across the standard, collegiate, military and organizational categories alike, so personalization is a serial-source difference over an existing design"
289
+ emblem: { present: true, rendered: placeholder }
290
+ region_encoding: none
291
+ sources:
292
+ - "https://dor.mo.gov/js/platescript.js # the DOR preview catalogue: every design, including all seven standard designs, carries a six-character limit"
293
+ - "https://revisor.mo.gov/main/OneSection.aspx?section=301.130 # RSMo 301.130.3 cross-references 'the fee prescribed for personalized license plates in subsection 1 of section 301.144' — the statutory hook for the personalized program"
294
+ notes: >-
295
+ PERSONALIZED PLATES. Modelled as its own series because the SERIAL SOURCE differs —
296
+ owner-chosen rather than director-assigned. Missouri is the tightest personalized
297
+ frame in group midwest-b at six characters, against seven in Kansas, North Dakota and
298
+ South Dakota and seven in Nebraska's message plates. RSMo 301.144's own text was not
299
+ read in this pass (recorded gap); the fee and the content-refusal criteria are
300
+ therefore not recorded.
301
+
302
+ # =========================================================================
303
+ # SPECIALTY — THE PROGRAM INDEX, per PRD-PLATES §2.5. Count and links only.
304
+ # =========================================================================
305
+ - id: us-mo-specialty-index
306
+ class: specialty
307
+ categories: [car, van, truck, motorcycle]
308
+ period: { start: 2025 }
309
+ period_evidence: instrument-in-force-upper-bound
310
+ matching: recall-only
311
+ format:
312
+ pattern: "LL9L9L"
313
+ regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,5}\z'
314
+ charset: { max_characters: 6, notes: "the six-character frame is uniform across the whole catalogue — specialty designs carry ordinary serials inside the same frame as the standard series" }
315
+ pattern_note: "REPRESENTATIVE SHAPE ONLY; the index stands for 156 non-standard designs whose arrangements are not individually stated"
316
+ design:
317
+ note: "one design per authorised program; the designs themselves are L4 scope (PRD-PLATES §2.5) and none is described here"
318
+ emblem: { present: true, rendered: placeholder }
319
+ program_index:
320
+ count_official_total: 163
321
+ count_official_breakdown: { standard: 7, collegiate: 32, military: 49, organizational: 75 }
322
+ count_basis: >-
323
+ COUNTED ROW BY ROW from the data file driving the Missouri DOR's own plate-preview
324
+ tool — an operational agency system, not a marketing claim — enumerated on the
325
+ date of this pass. 163 designs total, of which 156 are non-standard. The seven
326
+ 'standard' entries are themselves worth noting because they are not all what a
327
+ layperson would call standard: Amateur Radio, Custom Vehicle, Historic Vehicle,
328
+ Shuttle Bus, Standard, Street Rod and Vanpool.
329
+ count_caveat: >-
330
+ THIS IS A SNAPSHOT OF A LIVE SYSTEM AND WILL DRIFT. Missouri publishes no stated
331
+ specialty-plate count anywhere this pass could reach, so there is no agency FIGURE
332
+ to reconcile the enumeration against — the number above is what the agency's system
333
+ contained when read, not what the agency says it offers. Recorded as such rather
334
+ than promoted to an official figure (PRD-PLATES §5.3).
335
+ official_list_url: "https://dor.mo.gov/motor-vehicle/plates/personalized-specialty.html"
336
+ official_preview_url: "https://dor.mo.gov/motor-vehicle/plates/personalized-specialty.html#preview"
337
+ preview_data_url: "https://dor.mo.gov/js/platescript.js"
338
+ preview_data_note: >-
339
+ WORTH FLAGGING FOR THE PIPELINE: this file is a machine-readable, per-design
340
+ catalogue published by the issuing agency — design name, image slug, text colour
341
+ and character limit for all 163 designs. It is structurally the closest thing
342
+ Missouri has to Florida's monthly specialty-plate report, and like that report it is
343
+ unversioned and unarchived by its publisher, so it should be snapshotted on a
344
+ schedule before its contents drift out of reach.
345
+ region_encoding: none
346
+ sources:
347
+ - "https://dor.mo.gov/js/platescript.js # the Missouri DOR plate-preview catalogue: 7 standard, 32 collegiate, 49 military and 75 organizational designs, each with a six-character limit and a text colour"
348
+ - "https://dor.mo.gov/motor-vehicle/plates/personalized-specialty.html # the DOR's Personalized and Specialty License Plates page, which the preview tool and its four design categories sit behind"
349
+ notes: >-
350
+ THE SPECIALTY PROGRAM INDEX — one entry standing for the whole program, per
351
+ PRD-PLATES §2.5, with no individual designs. Missouri's index is unusual in this
352
+ group for being derived from a MACHINE-READABLE agency catalogue rather than from a
353
+ brochure or a statutory enumeration, which makes the count reproducible and the
354
+ per-design character limits sourced. The honest weakness, recorded in
355
+ `count_caveat`, is the mirror image of that strength: an enumeration of a live system
356
+ is a snapshot with no publisher-stated total behind it, so it dates immediately.