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.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +164 -0
- data/CHANGELOG.md +274 -0
- data/README.md +55 -10
- data/data/PROVENANCE-vehicles.md +12 -0
- data/data/plates/PROVENANCE.md +5 -4
- data/data/plates/_decode/at-districts.yml +287 -0
- data/data/plates/_decode/ch-cantons.yml +110 -0
- data/data/plates/_decode/cn-issuing-offices.yml +463 -0
- data/data/plates/_decode/cn-provinces.yml +614 -0
- data/data/plates/_decode/cz-kraj.yml +159 -0
- data/data/plates/_decode/dk-serial-blocks.yml +327 -0
- data/data/plates/_decode/fr-departements.yml +191 -0
- data/data/plates/_decode/gb-age-identifiers.yml +170 -0
- data/data/plates/_decode/gb-memory-tags.yml +202 -0
- data/data/plates/_decode/gr-prefectures.yml +1408 -0
- data/data/plates/_decode/hr-cities.yml +315 -0
- data/data/plates/_decode/ie-counties.yml +227 -0
- data/data/plates/_decode/in-state-codes.yml +169 -0
- data/data/plates/_decode/is-districts-1938.yml +116 -0
- data/data/plates/_decode/it-provinces.yml +348 -0
- data/data/plates/_decode/jp-office-marks.yml +960 -0
- data/data/plates/_decode/jp-use-marks.yml +205 -0
- data/data/plates/_decode/kr-authority-marks.yml +146 -0
- data/data/plates/_decode/kr-use-syllables.yml +194 -0
- data/data/plates/_decode/lu-series-order.yml +638 -0
- data/data/plates/_decode/mx-entity-series.yml +380 -0
- data/data/plates/_decode/my-index-marks.yml +271 -0
- data/data/plates/_decode/no-counties-1913.yml +148 -0
- data/data/plates/_decode/no-districts.yml +901 -0
- data/data/plates/_decode/pl-powiats.yml +567 -0
- data/data/plates/_decode/pt-trailer-services.yml +96 -0
- data/data/plates/_decode/ro-counties.yml +213 -0
- data/data/plates/_decode/se-diplomatic.yml +220 -0
- data/data/plates/_decode/si-regions.yml +123 -0
- data/data/plates/_decode/sk-districts.yml +314 -0
- data/data/plates/_decode/th-registration-elements.yml +208 -0
- data/data/plates/_decode/ua-regions.yml +393 -0
- data/data/plates/_decode/za-licence-marks.yml +215 -0
- data/data/plates/_meta/classes.yml +1 -0
- data/data/plates/_meta/separators.yml +102 -0
- data/data/plates/ad.yml +961 -0
- data/data/plates/ar.yml +762 -0
- data/data/plates/at.yml +1424 -0
- data/data/plates/au-act.yml +472 -0
- data/data/plates/au-nsw.yml +282 -0
- data/data/plates/au-nt.yml +431 -0
- data/data/plates/au-qld.yml +272 -0
- data/data/plates/au-sa.yml +248 -0
- data/data/plates/au-tas.yml +302 -0
- data/data/plates/au-vic.yml +215 -0
- data/data/plates/au-wa.yml +309 -0
- data/data/plates/be.yml +1840 -0
- data/data/plates/br.yml +1152 -0
- data/data/plates/ca-ab.yml +430 -0
- data/data/plates/ca-bc.yml +697 -0
- data/data/plates/ca-mb.yml +499 -0
- data/data/plates/ca-nb.yml +537 -0
- data/data/plates/ca-nl.yml +743 -0
- data/data/plates/ca-ns.yml +808 -0
- data/data/plates/ca-nt.yml +610 -0
- data/data/plates/ca-nu.yml +280 -0
- data/data/plates/ca-on.yml +881 -0
- data/data/plates/ca-pe.yml +592 -0
- data/data/plates/ca-qc.yml +1036 -0
- data/data/plates/ca-sk.yml +256 -0
- data/data/plates/ca-yt.yml +656 -0
- data/data/plates/ch.yml +1273 -0
- data/data/plates/cn.yml +1431 -0
- data/data/plates/cy.yml +688 -0
- data/data/plates/cz.yml +1179 -0
- data/data/plates/de.yml +553 -118
- data/data/plates/dk.yml +1647 -0
- data/data/plates/ee.yml +1275 -0
- data/data/plates/es.yml +228 -32
- data/data/plates/fi.yml +1271 -0
- data/data/plates/fr.yml +1265 -0
- data/data/plates/gb.yml +1188 -0
- data/data/plates/gr.yml +721 -0
- data/data/plates/hr.yml +860 -0
- data/data/plates/hu.yml +959 -0
- data/data/plates/ie.yml +775 -0
- data/data/plates/in.yml +1172 -0
- data/data/plates/is.yml +667 -0
- data/data/plates/it.yml +1317 -0
- data/data/plates/jp.yml +3650 -0
- data/data/plates/kr.yml +1375 -0
- data/data/plates/li.yml +1010 -0
- data/data/plates/lt.yml +879 -0
- data/data/plates/lu.yml +842 -0
- data/data/plates/lv.yml +924 -0
- data/data/plates/mc.yml +1024 -0
- data/data/plates/mt.yml +854 -0
- data/data/plates/mx.yml +1372 -0
- data/data/plates/my.yml +685 -0
- data/data/plates/nl.yml +44 -0
- data/data/plates/no.yml +1018 -0
- data/data/plates/nz.yml +1699 -0
- data/data/plates/pl.yml +1296 -0
- data/data/plates/pt.yml +847 -0
- data/data/plates/ro.yml +785 -0
- data/data/plates/se.yml +1091 -0
- data/data/plates/si.yml +1105 -0
- data/data/plates/sk.yml +1439 -0
- data/data/plates/sm.yml +1119 -0
- data/data/plates/th.yml +1150 -0
- data/data/plates/ua.yml +1672 -0
- data/data/plates/us-ak.yml +763 -0
- data/data/plates/us-al.yml +457 -0
- data/data/plates/us-ar.yml +427 -0
- data/data/plates/us-as.yml +454 -0
- data/data/plates/us-az.yml +430 -0
- data/data/plates/us-ca.yml +892 -0
- data/data/plates/us-co.yml +452 -0
- data/data/plates/us-ct.yml +427 -0
- data/data/plates/us-dc.yml +614 -0
- data/data/plates/us-de.yml +551 -0
- data/data/plates/us-fl.yml +319 -96
- data/data/plates/us-ga.yml +644 -0
- data/data/plates/us-gu.yml +658 -0
- data/data/plates/us-hi.yml +585 -0
- data/data/plates/us-ia.yml +438 -0
- data/data/plates/us-id.yml +531 -0
- data/data/plates/us-il.yml +516 -0
- data/data/plates/us-in.yml +324 -0
- data/data/plates/us-ks.yml +351 -0
- data/data/plates/us-ky.yml +770 -0
- data/data/plates/us-la.yml +568 -0
- data/data/plates/us-ma.yml +379 -0
- data/data/plates/us-md.yml +536 -0
- data/data/plates/us-me.yml +445 -0
- data/data/plates/us-mi.yml +408 -0
- data/data/plates/us-mn.yml +411 -0
- data/data/plates/us-mo.yml +356 -0
- data/data/plates/us-mp.yml +402 -0
- data/data/plates/us-ms.yml +432 -0
- data/data/plates/us-mt.yml +619 -0
- data/data/plates/us-nc.yml +602 -0
- data/data/plates/us-nd.yml +419 -0
- data/data/plates/us-ne.yml +483 -0
- data/data/plates/us-nh.yml +394 -0
- data/data/plates/us-nj.yml +547 -0
- data/data/plates/us-nm.yml +574 -0
- data/data/plates/us-nv.yml +655 -0
- data/data/plates/us-ny.yml +592 -0
- data/data/plates/us-oh.yml +404 -0
- data/data/plates/us-ok.yml +513 -0
- data/data/plates/us-or.yml +392 -0
- data/data/plates/us-pa.yml +506 -0
- data/data/plates/us-pr.yml +507 -0
- data/data/plates/us-ri.yml +445 -0
- data/data/plates/us-sc.yml +605 -0
- data/data/plates/us-sd.yml +428 -0
- data/data/plates/us-tn.yml +471 -0
- data/data/plates/us-tx.yml +535 -0
- data/data/plates/us-ut.yml +384 -0
- data/data/plates/us-va.yml +567 -0
- data/data/plates/us-vi.yml +489 -0
- data/data/plates/us-vt.yml +458 -0
- data/data/plates/us-wa.yml +484 -0
- data/data/plates/us-wi.yml +509 -0
- data/data/plates/us-wv.yml +446 -0
- data/data/plates/us-wy.yml +523 -0
- data/data/plates/va.yml +604 -0
- data/data/plates/za.yml +1141 -0
- data/data/vehicles.json +160653 -105090
- data/lib/vehicles/configuration.rb +17 -3
- data/lib/vehicles/dataset.rb +73 -18
- data/lib/vehicles/fuzzy.rb +115 -0
- data/lib/vehicles/http.rb +48 -0
- data/lib/vehicles/make.rb +36 -6
- data/lib/vehicles/mcp_server.rb +5 -5
- data/lib/vehicles/model.rb +21 -2
- data/lib/vehicles/plates/series.rb +172 -18
- data/lib/vehicles/plates/template_fill.rb +188 -0
- data/lib/vehicles/plates/templates.rb +162 -0
- data/lib/vehicles/plates.rb +12 -0
- data/lib/vehicles/providers/hosted_provider.rb +28 -55
- data/lib/vehicles/validators/vehicle_make_validator.rb +3 -1
- data/lib/vehicles/validators/vehicle_model_validator.rb +1 -1
- data/lib/vehicles/version.rb +1 -1
- data/lib/vehicles.rb +32 -16
- data/rakelib/data_refresh.rake +109 -0
- data/rakelib/plates_refresh.rake +29 -0
- data/sig/vehicles.rbs +18 -0
- metadata +164 -2
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
# plates/us-mi.yml — Michigan (PRD-PLATES gate L2, group midwest-a).
|
|
2
|
+
#
|
|
3
|
+
# WHAT MICHIGAN CONTRIBUTES THAT NO OTHER STATE IN THIS GROUP DOES: a
|
|
4
|
+
# LEGISLATED PLATE LIFETIME, stated as a prohibition rather than as a schedule.
|
|
5
|
+
# MCL 257.224 says a registration plate 'shall not be renewed 10 years after the
|
|
6
|
+
# date that registration plate was issued'. Read that carefully — Michigan does
|
|
7
|
+
# not order a replating, it forbids a renewal, which achieves the same end from
|
|
8
|
+
# the other direction and means the ten-year clock runs per PLATE, from ITS
|
|
9
|
+
# issue date, not per fleet and not per base. Florida legislated a 10-year
|
|
10
|
+
# replacement cycle; Michigan legislated a 10-year renewal bar. Same number,
|
|
11
|
+
# different instrument, and only one of them produces a synchronised state-wide
|
|
12
|
+
# reissue.
|
|
13
|
+
#
|
|
14
|
+
# MICHIGAN'S SECOND CONTRIBUTION IS A COLOUR RULE THAT SPECIFIES A PROPERTY, NOT
|
|
15
|
+
# A VALUE. MCL 257.225 requires 'a marked contrast between the color of the
|
|
16
|
+
# registration plate and the numerals or letters on the plate' — the same
|
|
17
|
+
# legislative move as Florida's 'distinguishing color' for Horseless Carriage
|
|
18
|
+
# plates. A dataset that only stores hexes cannot represent this claim at all;
|
|
19
|
+
# it is recorded here as a constraint, and no hex is invented to satisfy it.
|
|
20
|
+
#
|
|
21
|
+
# FETCH-PROVENANCE NOTE: www.legislature.mi.gov reset the connection on every
|
|
22
|
+
# attempt and www.michigan.gov returned 403 from this environment. Statutory
|
|
23
|
+
# text below was read from codes.findlaw.com, a third-party REPRODUCTION of the
|
|
24
|
+
# same edict; the canonical legislature.mi.gov citation accompanies each source
|
|
25
|
+
# line and was NOT fetched.
|
|
26
|
+
#
|
|
27
|
+
# NOT HERE, DELIBERATELY: individual specialty/fundraising DESIGNS (L4 per
|
|
28
|
+
# PRD-PLATES §2.5); the MOTORCYCLE series, because no source in this pass gave a
|
|
29
|
+
# Michigan motorcycle serial format and a plates file should carry a declared
|
|
30
|
+
# gap rather than a plausible guess (see the dossier); and the personalized
|
|
31
|
+
# series, which is outside the L2 core-class list.
|
|
32
|
+
jurisdiction: us-mi
|
|
33
|
+
authority:
|
|
34
|
+
name: Michigan Department of State (Secretary of State)
|
|
35
|
+
url: "https://www.michigan.gov/sos"
|
|
36
|
+
binding: vehicle
|
|
37
|
+
statute_edition: "Michigan Compiled Laws, Chapter 257 (Michigan Vehicle Code), as reproduced by codes.findlaw.com and read 2026-08-02. FindLaw warns its text 'may not reflect the most recent version of the law'; currency is UNVERIFIED."
|
|
38
|
+
|
|
39
|
+
# ---------------------------------------------------------------------------
|
|
40
|
+
# artwork_risk — required per jurisdiction by PRD-PLATES §4.
|
|
41
|
+
# ---------------------------------------------------------------------------
|
|
42
|
+
artwork_risk:
|
|
43
|
+
posture: unresearched-default-adverse
|
|
44
|
+
basis: >-
|
|
45
|
+
No favourable Michigan authority was located. The governing default is that
|
|
46
|
+
17 U.S.C. §105 does not extend to the states, so a state work is copyrighted
|
|
47
|
+
unless the state says otherwise. Both surveys checked are silent on
|
|
48
|
+
Michigan: the Wikipedia survey of subnational copyright status covers
|
|
49
|
+
seventeen states and Michigan is NOT among them, and Commons'
|
|
50
|
+
copyright-rules-by-territory page for the United States lists the state PD
|
|
51
|
+
tags that exist — CA, FL, GA, MA, ME plus narrow agency tags for MN, OK, WA
|
|
52
|
+
and one Alabama municipality — with no {{PD-MIGov}}. No Michigan statute, AG
|
|
53
|
+
opinion or case establishing public-domain status for state works was found.
|
|
54
|
+
TREAT THE ARTWORK AS COPYRIGHTED.
|
|
55
|
+
WHAT IS SAFE REGARDLESS: MCL 257.224's reflectorization and 100-foot
|
|
56
|
+
legibility requirements, MCL 257.225's contrast rule and mounting height, and
|
|
57
|
+
the ten-year renewal bar are all EDICTS OF GOVERNMENT and public domain at
|
|
58
|
+
every level. The adverse posture bites on the artwork, not the spec.
|
|
59
|
+
emblem_rule: >-
|
|
60
|
+
PRD-PLATES §3's placeholder default applies. The current base carries the
|
|
61
|
+
'Pure Michigan' wordmark — which raises a question the copyright analysis does
|
|
62
|
+
not reach: Pure Michigan is the state's TOURISM BRAND, and brand marks carry
|
|
63
|
+
TRADEMARK protection entirely independent of copyright and of any public-
|
|
64
|
+
records rule. A state seal statute would be the analogous hazard; here it is a
|
|
65
|
+
marketing mark. Render `emblem: {present: true, rendered: placeholder}` and do
|
|
66
|
+
not reproduce the wordmark. This trademark exposure is UNRESEARCHED and is
|
|
67
|
+
flagged as its own open question, distinct from the copyright posture above.
|
|
68
|
+
photograph_caution: >-
|
|
69
|
+
Standing rule: a CC tag on a Commons photograph of a Michigan plate is the
|
|
70
|
+
PHOTOGRAPHER's licence on the PHOTOGRAPH, not on the design. Our renders are
|
|
71
|
+
generated from this file, never derived from a photograph, so those
|
|
72
|
+
obligations never attach.
|
|
73
|
+
sources:
|
|
74
|
+
- "https://en.wikipedia.org/wiki/Copyright_status_of_works_by_subnational_governments_of_the_United_States # LOCATOR + NEGATIVE FINDING: Michigan is not among the states covered"
|
|
75
|
+
- "https://commons.wikimedia.org/wiki/Commons:Copyright_rules_by_territory/United_States # the §105-does-not-reach-the-states rule and the complete state PD-tag list — no Michigan tag"
|
|
76
|
+
- "https://codes.findlaw.com/mi/chapter-257-motor-vehicles/mi-comp-laws-257-224.html # FETCHED. The plate spec that IS available is statutory and therefore a PD edict"
|
|
77
|
+
|
|
78
|
+
us_standards:
|
|
79
|
+
no_federal_mandate: true
|
|
80
|
+
chain: "SAE J686 -> AAMVA License Plate Standard Edition 3 (September 2025) -> voluntary state adoption. Recommendations in the declarative present; read as RECOMMENDED PRACTICE."
|
|
81
|
+
aamva_edition_3:
|
|
82
|
+
dimensions_delegated: "AAMVA §3.1 sends dimensions and bolt holes to SAE J686, whose text is paywalled and was NOT obtained. Michigan legislates no plate dimension either, so NO DIMENSION IS RECORDED for the Michigan plate — a gap, deliberately left open rather than filled from the 1956 folklore."
|
|
83
|
+
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"
|
|
84
|
+
jurisdiction_name_layout: "AAMVA §2.1: jurisdiction name top centre between the bolt holes, at least 0.25 in above the plate number, 0.125 in from the top edge; characters 0.75-1.0 in"
|
|
85
|
+
stacked_characters: "AAMVA: stacked characters are part of the official plate number, at most two stacked"
|
|
86
|
+
retroreflectivity: "AAMVA §3.3: readable in daylight and at night from at least 75 feet. MCL 257.224 legislates BOTH halves of that independently: 'made of fully reflectorized material and shall be clearly visible at night' and 'of sufficient size to be plainly readable from a distance of 100 feet during daylight'."
|
|
87
|
+
replacement_cycle: "AAMVA §1.1 recommends a cycle 'not to exceed 7 to 10 years'. MICHIGAN LEGISLATED THE TOP OF THE RANGE AS A RENEWAL BAR — see `plate_lifetime` below. It is the mechanism, not the number, that is unusual."
|
|
88
|
+
source: "https://www.aamva.org/getmedia/646bcc8a-219b-47d8-b5cd-726240473163/License-Plate-Standard-Edition-3_September-2025-Update.pdf"
|
|
89
|
+
folklore_caution: >-
|
|
90
|
+
The "1956 AMA standardization agreement" is UNCITED in its Wikipedia source
|
|
91
|
+
and is not relied on here. The Michigan article repeats it in the form
|
|
92
|
+
'1956 standardized plate size... (except those for motorcycles)', which is the
|
|
93
|
+
same circular text. No Michigan plate dimension is recorded in this file.
|
|
94
|
+
|
|
95
|
+
# ---------------------------------------------------------------------------
|
|
96
|
+
# plate_lifetime — Michigan's signature fact, recorded once at file level
|
|
97
|
+
# because it is a property of Michigan law rather than of any one series.
|
|
98
|
+
# ---------------------------------------------------------------------------
|
|
99
|
+
plate_lifetime:
|
|
100
|
+
mechanism: renewal-bar
|
|
101
|
+
years: 10
|
|
102
|
+
statutory_text: "MCL 257.224: 'a registration plate issued by the department under this section shall not be renewed 10 years after the date that registration plate was issued'"
|
|
103
|
+
consequence: >-
|
|
104
|
+
Because the bar runs from EACH PLATE's own issue date, Michigan's fleet
|
|
105
|
+
turns over continuously rather than in a synchronised reissue. Two data
|
|
106
|
+
consequences follow and both matter for a parse API. First, a Michigan plate
|
|
107
|
+
observed today is at most ten years old, which puts a hard floor under any
|
|
108
|
+
era inference — something no other state in this group provides. Second, the
|
|
109
|
+
owner may ask for the SAME NUMBER back on the replacement plate (the
|
|
110
|
+
department 'may reissue plates with the same registration number upon
|
|
111
|
+
request'), so a serial can outlive the piece of metal it was first stamped
|
|
112
|
+
on, and serial continuity does not imply plate continuity.
|
|
113
|
+
exceptions: "plates for state-owned vehicles and certain nonprofits do not expire on time at all; they expire when 'worn out or illegible' (MCL 257.224)"
|
|
114
|
+
reported_but_unquoted: "the same section was reported to expire most plates on 31 December in the fifth year following issuance; that sentence was NOT captured verbatim and is recorded as reported-only, not as a claim"
|
|
115
|
+
source: "https://codes.findlaw.com/mi/chapter-257-motor-vehicles/mi-comp-laws-257-224.html # FETCHED. MCL 257.224: one plate per vehicle, contents, fully reflectorized material, 100-foot daylight legibility, the ten-year renewal bar, replacement on payment of the fee, same-number reissue on request, and the worn-out-or-illegible rule for state and nonprofit plates"
|
|
116
|
+
|
|
117
|
+
display_rules:
|
|
118
|
+
default: "ONE plate, REAR. MCL 257.224: 'upon registering a vehicle, the secretary of state shall issue to the owner 1 registration plate'. MCL 257.225: 'a registration plate issued for a vehicle shall be attached to the rear of the vehicle.'"
|
|
119
|
+
front_plate_required_when:
|
|
120
|
+
- "TRUCK TRACTOR or ROAD TRACTOR: 'A registration plate issued for a truck tractor or road tractor shall be attached to the front of the vehicle' (MCL 257.225) — front-ONLY, since Michigan issues just one plate. The same inversion as Florida and Ohio, and a third independent instance of it in this dataset: a US front/rear model that does not carry a per-class exception will be wrong in at least three states."
|
|
121
|
+
mounting: "MCL 257.225: 'The plate shall be attached at a height of not less than 12 inches from the ground, measured from the bottom of the plate' — twelve inches, against Illinois's five. Michigan also requires the plate be kept clearly visible and free from foreign materials."
|
|
122
|
+
colour_constraint: "MCL 257.225: 'A registration plate or an expiration tab on the registration plate shall be of a different color designated by the secretary of state with a marked contrast between the color of the registration plate and the numerals or letters on the plate.' A statutory colour PROPERTY with no value — see the file header."
|
|
123
|
+
legibility: "MCL 257.224: the plate must be 'of sufficient size to be plainly readable from a distance of 100 feet during daylight' and 'made of fully reflectorized material and shall be clearly visible at night'"
|
|
124
|
+
penalty: "MCL 257.225: 'A person who violates this section is responsible for a civil infraction.' Note this is CIVIL — contrast Ohio's minor misdemeanor and Illinois's Class A misdemeanor for deliberate concealment."
|
|
125
|
+
historic_military_exception: "MCL 257.225 allows a historic military vehicle to carry its plate INSIDE the vehicle if it was not originally equipped with exterior mounting provisions — a display exemption of the same family as Florida's former-military exemption under s. 320.086(5)"
|
|
126
|
+
rear_only_history: "Michigan is reported to have required only rear plates since 1981 (secondary). The statute corroborates the present rule but dates nothing."
|
|
127
|
+
sources:
|
|
128
|
+
- "https://codes.findlaw.com/mi/chapter-257-motor-vehicles/mi-comp-laws-257-225.html # FETCHED. MCL 257.225: rear attachment, the truck-tractor/road-tractor front exception, the 12-inch minimum height, horizontal secure fastening, the marked-contrast colour rule, the historic-military interior-storage allowance, and the civil-infraction penalty"
|
|
129
|
+
- "https://www.legislature.mi.gov/Laws/MCL?objectName=MCL-257-225 # CANONICAL citation for the same edict — NOT fetched (connection reset)"
|
|
130
|
+
- "https://codes.findlaw.com/mi/chapter-257-motor-vehicles/mi-comp-laws-257-224.html # FETCHED. MCL 257.224: one plate issued, 100-foot legibility, fully reflectorized material"
|
|
131
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Michigan # LOCATOR ONLY: 'Only rear plates have been required since 1981.'"
|
|
132
|
+
|
|
133
|
+
series:
|
|
134
|
+
|
|
135
|
+
- id: us-mi-standard-2013
|
|
136
|
+
class: standard
|
|
137
|
+
categories: [car, van, truck, bus]
|
|
138
|
+
period: { start: 2013 }
|
|
139
|
+
period_evidence: secondary-first-issue
|
|
140
|
+
matching: strict
|
|
141
|
+
format:
|
|
142
|
+
pattern: "LLL 9999"
|
|
143
|
+
regex: '\A[A-Z]{3} ?\d{4}\z'
|
|
144
|
+
evidence: secondary
|
|
145
|
+
charset:
|
|
146
|
+
notes: >-
|
|
147
|
+
Three letters then four numerals. NO MICHIGAN STATUTE STATES A SERIAL
|
|
148
|
+
ARRANGEMENT: MCL 257.224 requires only that the plate carry 'the
|
|
149
|
+
registration number' plus the state name and an expiration indication
|
|
150
|
+
'which may be shown by a tab or sticker furnished by the secretary of
|
|
151
|
+
state'. MCL 257.803b, the personalized-plate section, is equally
|
|
152
|
+
silent on length — 'Personalized plates must bear letters and numbers as
|
|
153
|
+
the secretary of state prescribes' — so unlike Illinois or Wisconsin,
|
|
154
|
+
Michigan gives no statutory character cap even indirectly, and this
|
|
155
|
+
file therefore carries NO `regex_statutory`. There is nothing to bound
|
|
156
|
+
it with.
|
|
157
|
+
progression: "observed DAA 0000 to approximately FAZ 9999 as of January 2026 (secondary) — a three-letter block advancing over a four-digit counter"
|
|
158
|
+
design:
|
|
159
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
160
|
+
colour_note: >-
|
|
161
|
+
Reflective white field with a blue band at the BOTTOM and a dark serial.
|
|
162
|
+
Only the white field is hexed, and it is marked observed. The blue is not
|
|
163
|
+
hexed: Michigan's statute prescribes contrast, not colour, the Department
|
|
164
|
+
of State site was unreachable, and a hex sampled from a photograph would
|
|
165
|
+
be a fabricated fact.
|
|
166
|
+
band: { side: bottom, colour_named: blue, content: "michigan.org" }
|
|
167
|
+
legend_top: "MICHIGAN"
|
|
168
|
+
legend_slogan: "Pure Michigan"
|
|
169
|
+
graphic: { present: true, rendered: placeholder, description: "'Pure Michigan' wordmark at top and a blue band at the bottom carrying michigan.org; secondary observation only, and see artwork_risk for the trademark caution on the wordmark" }
|
|
170
|
+
emblem: { present: true, rendered: placeholder }
|
|
171
|
+
validation_sticker: { position: "corner", content: "expiration", source_note: "MCL 257.224: expiration 'may be shown by a tab or sticker furnished by the secretary of state'; MCL 257.225 requires the TAB itself to contrast with the plate" }
|
|
172
|
+
region_encoding: "none. Michigan encodes no geography in the serial and prints no county legend."
|
|
173
|
+
sources:
|
|
174
|
+
- "https://codes.findlaw.com/mi/chapter-257-motor-vehicles/mi-comp-laws-257-224.html # FETCHED. MCL 257.224: one plate per vehicle; plate contents (registration number, state name, expiration by tab or sticker); fully reflectorized material; 100-foot daylight legibility; the ten-year renewal bar; same-number reissue on request"
|
|
175
|
+
- "https://www.legislature.mi.gov/Laws/MCL?objectName=MCL-257-224 # CANONICAL, not fetched (connection reset)"
|
|
176
|
+
- "https://codes.findlaw.com/mi/chapter-257-motor-vehicles/mi-comp-laws-257-803b.html # FETCHED. MCL 257.803b: 'Personalized plates must bear letters and numbers as the secretary of state prescribes', must be of the same material as standard plates, must not duplicate another plate, and the sequence is not reassigned in a subsequent year unless the holder fails to reapply — evidence that Michigan delegates the character grammar entirely"
|
|
177
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Michigan # LOCATOR ONLY: 'Pure Michigan' base from April 2013, serial format ABC 1234, range DAA 0000 to ~FAZ 9999 as of January 2026, blue band at bottom, michigan.org"
|
|
178
|
+
notes: >-
|
|
179
|
+
MICHIGAN STANDARD ISSUE, CURRENT BASE. `start: 2013` rests on a secondary
|
|
180
|
+
first-issue month (April 2013) and carries `period_evidence:
|
|
181
|
+
secondary-first-issue` to say so. The entry's most consequential content is
|
|
182
|
+
not the format but the file-level `plate_lifetime` block it inherits: the
|
|
183
|
+
ten-year renewal bar puts an upper bound on the age of any Michigan plate
|
|
184
|
+
in circulation, while the same-number reissue right means the SERIAL can be
|
|
185
|
+
much older than the metal. Those two facts pull in opposite directions and
|
|
186
|
+
a parse API must hold both.
|
|
187
|
+
|
|
188
|
+
- id: us-mi-standard-2007
|
|
189
|
+
class: standard
|
|
190
|
+
categories: [car, van, truck, bus]
|
|
191
|
+
period: { start: 2007, end: 2013 }
|
|
192
|
+
period_evidence: secondary-first-issue
|
|
193
|
+
matching: strict
|
|
194
|
+
format:
|
|
195
|
+
pattern: "LLL 9999"
|
|
196
|
+
regex: '\A[A-Z]{3} ?\d{4}\z'
|
|
197
|
+
evidence: secondary
|
|
198
|
+
charset: { notes: "identical grammar to the current base — the 2013 change moved the blue band from top to bottom and changed the URL legend, not the serial" }
|
|
199
|
+
progression: "observed BAA 0000 to approximately CPS 0999 (secondary) — note the blocks run CONTINUOUSLY into the 2013 base's DAA start, which is why the serial cannot date the base"
|
|
200
|
+
design:
|
|
201
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
202
|
+
colour_note: "reflective white with a blue band at the TOP; no band hex recorded"
|
|
203
|
+
band: { side: top, colour_named: blue, content: "www.Michigan.gov" }
|
|
204
|
+
legend_top: "MICHIGAN"
|
|
205
|
+
emblem: { present: true, rendered: placeholder }
|
|
206
|
+
region_encoding: none
|
|
207
|
+
sources:
|
|
208
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Michigan # LOCATOR ONLY: the 1 January 2007 to April 2013 base, blue band at top, www.Michigan.gov legend, serial format ABC 1234, range BAA 0000 to ~CPS 0999"
|
|
209
|
+
- "https://codes.findlaw.com/mi/chapter-257-motor-vehicles/mi-comp-laws-257-224.html # FETCHED. The same statutory frame governed this base; it is why no format difference is recorded"
|
|
210
|
+
notes: >-
|
|
211
|
+
ONE SERIES BACK (2007-2013). The serial BLOCKS are the interesting record
|
|
212
|
+
here: B through C on this base, D through F on the next, with no gap. So
|
|
213
|
+
Michigan's letter block is a coarse era signal even though the FORMAT is
|
|
214
|
+
not — the opposite arrangement from Illinois, where the format changed at
|
|
215
|
+
the base boundary and the blocks restarted. Two neighbouring states, two
|
|
216
|
+
incompatible era-inference strategies; the dataset must carry the block
|
|
217
|
+
ranges (secondary) or lose the signal entirely.
|
|
218
|
+
|
|
219
|
+
- id: us-mi-trailer
|
|
220
|
+
class: trailer
|
|
221
|
+
categories: [trailer]
|
|
222
|
+
period: { start: 2026 }
|
|
223
|
+
period_evidence: instrument-in-force-upper-bound
|
|
224
|
+
matching: strict
|
|
225
|
+
format:
|
|
226
|
+
pattern: "L999999"
|
|
227
|
+
regex: '\A[A-Z]\d{6}\z'
|
|
228
|
+
evidence: secondary
|
|
229
|
+
charset: { notes: "one letter then six numerals, no printed separator observed; the letter is a block marker rather than a class token — observed D through F, so it does not identify the class the way Indiana's TR does" }
|
|
230
|
+
progression: "observed D000000 to F134612 as of October 2024 (secondary)"
|
|
231
|
+
design:
|
|
232
|
+
background: { finish: retroreflective }
|
|
233
|
+
legend_bottom: "PERMANENT TRAILER"
|
|
234
|
+
emblem: { present: true, rendered: placeholder }
|
|
235
|
+
validity: "PERMANENT — the legend says so on the plate itself, which makes this a series whose end condition is the vehicle's, not the year's"
|
|
236
|
+
region_encoding: none
|
|
237
|
+
sources:
|
|
238
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Michigan # LOCATOR ONLY: trailer plates D000000 to F134612 as of October 2024, marked 'PERMANENT TRAILER'"
|
|
239
|
+
- "https://codes.findlaw.com/mi/chapter-257-motor-vehicles/mi-comp-laws-257-224.html # FETCHED. MCL 257.224's one-plate rule and reflectorization requirement apply to trailer plates as to others"
|
|
240
|
+
notes: >-
|
|
241
|
+
PERMANENT TRAILER. `period.start` is an instrument-in-force upper bound: no
|
|
242
|
+
source dated this series. The permanence is worth noting against the
|
|
243
|
+
file-level ten-year renewal bar — a plate that is never renewed cannot be
|
|
244
|
+
caught by a bar on renewal, so the trailer plate escapes Michigan's own
|
|
245
|
+
lifetime rule by construction. That interaction is the kind of thing a
|
|
246
|
+
claims model should be able to express.
|
|
247
|
+
|
|
248
|
+
- id: us-mi-dealer
|
|
249
|
+
class: dealer
|
|
250
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
251
|
+
period: { start: 2026 }
|
|
252
|
+
period_evidence: instrument-in-force-upper-bound
|
|
253
|
+
matching: strict
|
|
254
|
+
format:
|
|
255
|
+
pattern: "999 D 999"
|
|
256
|
+
regex: '\A\d{3} ?D ?\d{3}\z'
|
|
257
|
+
evidence: secondary
|
|
258
|
+
charset: { notes: "an infix class token: the letter D sits BETWEEN two numeric groups rather than prefixing them. Observed 000 D 000 to 077 D 999 as of May 2026. Michigan is the only state in this group that marks a class mid-serial, which breaks any parser that assumes class tokens are prefixes." }
|
|
259
|
+
design:
|
|
260
|
+
background: { finish: retroreflective }
|
|
261
|
+
legend_bottom: "DEALER"
|
|
262
|
+
emblem: { present: true, rendered: placeholder }
|
|
263
|
+
binding: business
|
|
264
|
+
permitted_use: >-
|
|
265
|
+
MCL 257.244: 'A dealer owning a vehicle otherwise required to be registered
|
|
266
|
+
under this act may operate or move the vehicle on a street or highway
|
|
267
|
+
without registering the vehicle if the vehicle displays, as prescribed under
|
|
268
|
+
section 225, a special plate issued to the owner by the secretary of state.'
|
|
269
|
+
A vehicle bearing the dealer plate 'may be driven on a street or highway for
|
|
270
|
+
demonstration purposes by a prospective buyer or lessee for a period of 72
|
|
271
|
+
hours', and a new purchaser or lessee may likewise use it for up to 72 hours
|
|
272
|
+
after taking possession while registration is completed. 'The secretary of
|
|
273
|
+
state shall determine the number of plates a manufacturer, dealer, or
|
|
274
|
+
transporter reasonably needs in its business.'
|
|
275
|
+
region_encoding: none
|
|
276
|
+
sources:
|
|
277
|
+
- "https://codes.findlaw.com/mi/chapter-257-motor-vehicles/mi-comp-laws-257-244.html # FETCHED. MCL 257.244: the dealer-plate authorisation, display per section 225, the 72-hour demonstration and post-sale windows, and the secretary of state's power to set the number of plates a business needs"
|
|
278
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Michigan # LOCATOR ONLY: dealer serial range 000 D 000 to 077 D 999 as of May 2026, marked 'DEALER'"
|
|
279
|
+
notes: >-
|
|
280
|
+
DEALER PLATES. `binding: business` — MCL 257.244 attaches the plate to the
|
|
281
|
+
dealer, not the vehicle, and the 72-hour demonstration window is the
|
|
282
|
+
clearest statement in this group of what a trade plate actually LICENSES: a
|
|
283
|
+
period of use, not a registration. The infix D is the format curiosity.
|
|
284
|
+
|
|
285
|
+
- id: us-mi-government
|
|
286
|
+
class: government
|
|
287
|
+
categories: [car, van, truck, bus]
|
|
288
|
+
period: { start: 2026 }
|
|
289
|
+
period_evidence: instrument-in-force-upper-bound
|
|
290
|
+
matching: strict
|
|
291
|
+
format:
|
|
292
|
+
pattern: "999 X 999"
|
|
293
|
+
regex: '\A\d{3} ?X ?\d{3}\z'
|
|
294
|
+
evidence: secondary
|
|
295
|
+
charset: { notes: "the same infix-token shape as the dealer plate, with X in place of D. Observed 130 X 000 to approximately 136 X 999 as of January 2026." }
|
|
296
|
+
design:
|
|
297
|
+
background: { finish: retroreflective }
|
|
298
|
+
emblem: { present: true, rendered: placeholder }
|
|
299
|
+
binding: vehicle
|
|
300
|
+
validity: "MCL 257.224 exempts state-owned and certain nonprofit plates from time expiry entirely — they expire when 'worn out or illegible'. So a Michigan government plate has no expiry date at all, only a condition."
|
|
301
|
+
region_encoding: none
|
|
302
|
+
sources:
|
|
303
|
+
- "https://codes.findlaw.com/mi/chapter-257-motor-vehicles/mi-comp-laws-257-224.html # FETCHED. MCL 257.224: plates for state-owned vehicles and certain nonprofits do not expire on time but when worn out or illegible"
|
|
304
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Michigan # LOCATOR ONLY: government/municipal serial range 130 X 000 to ~136 X 999 as of January 2026"
|
|
305
|
+
notes: >-
|
|
306
|
+
GOVERNMENT / MUNICIPAL. The statutory fact is the good one: this is a plate
|
|
307
|
+
class whose VALIDITY IS A CONDITION rather than a date. PRD-PLATES's runs
|
|
308
|
+
shape handles open-ended periods, but 'ends when worn out' is not a year and
|
|
309
|
+
cannot be made into one — recorded in prose, deliberately, rather than
|
|
310
|
+
forced into `period.end`.
|
|
311
|
+
|
|
312
|
+
- id: us-mi-temporary
|
|
313
|
+
class: temporary
|
|
314
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
315
|
+
period: { start: 2026 }
|
|
316
|
+
period_evidence: instrument-in-force-upper-bound
|
|
317
|
+
matching: strict
|
|
318
|
+
format:
|
|
319
|
+
pattern: "999999"
|
|
320
|
+
regex: '\A\d+\z'
|
|
321
|
+
evidence: statutory-inferred
|
|
322
|
+
charset:
|
|
323
|
+
notes: >-
|
|
324
|
+
MCL 257.226a: 'All temporary registration plates or markers must be
|
|
325
|
+
serially numbered and upon issuance the number must be noted on the
|
|
326
|
+
statement of vehicle sale form'. SERIALLY NUMBERED is the whole of the
|
|
327
|
+
statutory grammar — a numeric series with NO STATED WIDTH, so the
|
|
328
|
+
quantifier is unbounded and makes no width claim, exactly as Florida's
|
|
329
|
+
Horseless Carriage series does under an equivalently open statute. The
|
|
330
|
+
inference that 'serially numbered' means digits only is marked
|
|
331
|
+
`statutory-inferred` rather than `statutory`: it is a reading of the
|
|
332
|
+
phrase, not a quotation of a character set.
|
|
333
|
+
design:
|
|
334
|
+
material: "paper or card marker. MCL 257.226a: 'A temporary registration plate or marker must show in ink the date of issue, a description of the vehicle for which issued, and any other information required by the secretary of state.'"
|
|
335
|
+
background: { finish: none }
|
|
336
|
+
emblem: { present: false }
|
|
337
|
+
destruction_rule: "MCL 257.226a: 'When the regular plate is attached to a vehicle for which a temporary registration plate or marker was issued, the temporary plate must be destroyed.'"
|
|
338
|
+
validity: "THIRTY DAYS. MCL 257.226a issues the temporary plate 'for a period not to exceed 30 days pending receipt of regular registration plates' — against Ohio's forty-five next door, which is the clearest single illustration in this group that temporary validity is a per-state variable."
|
|
339
|
+
region_encoding: none
|
|
340
|
+
sources:
|
|
341
|
+
- "https://codes.findlaw.com/mi/chapter-257-motor-vehicles/mi-comp-laws-257-226a.html # FETCHED. MCL 257.226a: the 30-day maximum, the in-ink date and vehicle description, serial numbering with the number noted on the statement of vehicle sale, and the destruction requirement"
|
|
342
|
+
- "https://www.legislature.mi.gov/Laws/MCL?objectName=MCL-257-226a # CANONICAL, not fetched (connection reset)"
|
|
343
|
+
notes: >-
|
|
344
|
+
TEMPORARY REGISTRATION PLATE OR MARKER. Michigan legislates the temporary
|
|
345
|
+
plate's LIFECYCLE — issue, note the number on the sale form, destroy on
|
|
346
|
+
receipt of the regular plate — while legislating almost nothing about its
|
|
347
|
+
appearance. The destruction duty is unusual enough to be worth carrying: it
|
|
348
|
+
means a Michigan temporary marker is not merely expired but SUPPOSED NOT TO
|
|
349
|
+
EXIST after the regular plate arrives, which is a different fact about the
|
|
350
|
+
world than an expired plate sitting in a glovebox.
|
|
351
|
+
|
|
352
|
+
- id: us-mi-specialty-index
|
|
353
|
+
class: specialty
|
|
354
|
+
categories: [car, van, truck, motorcycle]
|
|
355
|
+
period: { start: 2026 }
|
|
356
|
+
period_evidence: instrument-in-force-upper-bound
|
|
357
|
+
matching: strict
|
|
358
|
+
format:
|
|
359
|
+
pattern: "LLL 9999"
|
|
360
|
+
regex: '\A[A-Z]{3} ?\d{4}\z'
|
|
361
|
+
evidence: secondary
|
|
362
|
+
charset: { notes: "fundraising and university plates carry ordinary serials on an alternative design; no distinct grammar was sourced" }
|
|
363
|
+
design:
|
|
364
|
+
background: { finish: retroreflective }
|
|
365
|
+
note: "one design per authorising public act; the designs themselves are L4 scope (PRD-PLATES §2.5) and none is described here"
|
|
366
|
+
emblem: { present: true, rendered: placeholder }
|
|
367
|
+
program_index:
|
|
368
|
+
count_official: null
|
|
369
|
+
count_status: RECORDED-GAP-WITH-SECONDARY-FIGURE
|
|
370
|
+
count_secondary: "20 authorised at one time (excluding universities), of which 14 reported in production"
|
|
371
|
+
count_note: >-
|
|
372
|
+
No OFFICIAL count was obtained: www.michigan.gov returned 403 to every
|
|
373
|
+
request from this environment. A secondary source states that 'State law
|
|
374
|
+
limits the number of fundraising plates (excluding universities)
|
|
375
|
+
available at one time to 20, and 14 are currently in production.' That
|
|
376
|
+
figure is recorded as SECONDARY and unreconciled — the statutory cap it
|
|
377
|
+
describes was NOT located in the section of MCL 257.811e that was read,
|
|
378
|
+
so the '20' is a claim about a statute rather than a quotation from one,
|
|
379
|
+
and a verifier should either find the cap or strike the figure. Per
|
|
380
|
+
PRD-PLATES §5.3 the discrepancy is recorded, not averaged away.
|
|
381
|
+
official_list_url: "https://www.michigan.gov/sos/vehicle/plates"
|
|
382
|
+
official_list_fetch_status: "BLOCKED — HTTP 403 on every attempt, 2026-08-02"
|
|
383
|
+
statutory_basis: >-
|
|
384
|
+
MCL 257.811e is the mechanism, and Michigan's is the most legislature-
|
|
385
|
+
heavy in this group: a fundraising plate exists only if A PUBLIC ACT
|
|
386
|
+
AUTHORISES IT, and that act must identify the purpose of the plate and
|
|
387
|
+
create or designate a nonprofit fund (naming its administrator where a
|
|
388
|
+
fund is created). A start-up fee covering the 'three-year average of the
|
|
389
|
+
cost to the secretary of state of developing a new fund-raising plate'
|
|
390
|
+
must be paid within eighteen months. Critically, the section imposes NO
|
|
391
|
+
MINIMUM APPLICATION THRESHOLD — where Illinois requires 2,000
|
|
392
|
+
applications and Wisconsin 500 signatures, Michigan requires an act of
|
|
393
|
+
the legislature and money. Three states, three completely different
|
|
394
|
+
gatekeeping mechanisms for the same product.
|
|
395
|
+
region_encoding: none
|
|
396
|
+
sources:
|
|
397
|
+
- "https://codes.findlaw.com/mi/chapter-257-motor-vehicles/mi-comp-laws-257-811e.html # FETCHED. MCL 257.811e: authorisation by public act, the purpose and nonprofit-fund requirements, the three-year-average start-up fee payable within 18 months, and the absence of any application threshold"
|
|
398
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Michigan # LOCATOR ONLY: 'State law limits the number of fundraising plates (excluding universities) available at one time to 20, and 14 are currently in production.'"
|
|
399
|
+
notes: >-
|
|
400
|
+
THE MICHIGAN SPECIALTY PROGRAM INDEX — one entry for the whole programme per
|
|
401
|
+
PRD-PLATES §2.5, with the official count declared a gap and a secondary
|
|
402
|
+
figure carried, flagged, alongside. The durable finding is the mechanism:
|
|
403
|
+
Michigan gates specialty plates through the LEGISLATURE, Illinois through a
|
|
404
|
+
2,000-application petition, Wisconsin through 500 signatures, Ohio through
|
|
405
|
+
individual authorising statutes, and Indiana through a dedicated code
|
|
406
|
+
article. Whatever the catalogue counts turn out to be, those five
|
|
407
|
+
mechanisms are the structural fact — and they predict the churn rate of
|
|
408
|
+
each state's catalogue better than any snapshot count could.
|