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,324 @@
|
|
|
1
|
+
# plates/us-in.yml — Indiana (PRD-PLATES gate L2, group midwest-a).
|
|
2
|
+
#
|
|
3
|
+
# WHAT INDIANA IS FOR IN THIS DATASET: the cleanest DELEGATION case in the US
|
|
4
|
+
# so far, and the direct analogue of Germany's §9 FZV trap. Indiana's
|
|
5
|
+
# legislature does not describe its plates at all. IC 9-18.1-4-3 says, in
|
|
6
|
+
# terms, that the BUREAU 'shall adopt rules under IC 4-22-2 regarding the size,
|
|
7
|
+
# character, display, mounting, securing, content, issuance, replacement, and
|
|
8
|
+
# life cycle of license plates' — so the entire design and format layer lives in
|
|
9
|
+
# the Indiana Administrative Code, one level below the statute, and a researcher
|
|
10
|
+
# who reads only the statute will correctly conclude that Indiana law specifies
|
|
11
|
+
# nothing and incorrectly conclude that nothing is specified. The IAC rules
|
|
12
|
+
# themselves were NOT obtained in this pass (recorded gap, and the single
|
|
13
|
+
# highest-value follow-up for this state).
|
|
14
|
+
#
|
|
15
|
+
# WHAT INDIANA ALSO IS: the one state in this group with a class-encoding
|
|
16
|
+
# convention a parse API can actually use. Indiana prefixes the serial with a
|
|
17
|
+
# CLASS TOKEN — M for motorcycle, TR for trailer, TK for truck, TC for semi
|
|
18
|
+
# tractor, SP for permanent semi-trailer — rather than distinguishing classes by
|
|
19
|
+
# design alone. That makes Indiana serials self-describing in a way Ohio's and
|
|
20
|
+
# Michigan's are not.
|
|
21
|
+
#
|
|
22
|
+
# FETCH-PROVENANCE NOTE: iga.in.gov (the official Indiana Code host) served only
|
|
23
|
+
# a JavaScript shell to this environment, and www.in.gov/bmv served 404s and
|
|
24
|
+
# timeouts on every plate sub-path tried. Statutory text below was read from
|
|
25
|
+
# codes.findlaw.com, a third-party REPRODUCTION of the same edict; the canonical
|
|
26
|
+
# iga.in.gov citation is carried alongside every FindLaw URL and was NOT fetched.
|
|
27
|
+
#
|
|
28
|
+
# NOT HERE, DELIBERATELY (PRD-PLATES §2.5 + L2 scope): individual specialty
|
|
29
|
+
# DESIGNS (L4); Indiana's truck (TK), semi-tractor (TC) and permanent
|
|
30
|
+
# semi-trailer (SP) series, which are outside the L2 core-class list and are
|
|
31
|
+
# recorded only as evidence of the class-token convention; and DEALER,
|
|
32
|
+
# TEMPORARY and GOVERNMENT series, for which no format was obtained from any
|
|
33
|
+
# source (recorded gaps — see the dossier).
|
|
34
|
+
jurisdiction: us-in
|
|
35
|
+
authority:
|
|
36
|
+
name: Indiana Bureau of Motor Vehicles (Indiana BMV)
|
|
37
|
+
url: "https://www.in.gov/bmv/"
|
|
38
|
+
binding: vehicle
|
|
39
|
+
statute_edition: "Indiana Code Title 9 (Motor Vehicles), Articles 18.1 and 18.5, as reproduced by codes.findlaw.com and read 2026-08-02. FindLaw's own banner warns it 'may not reflect the most recent version of the law'; the currency of this text is therefore UNVERIFIED."
|
|
40
|
+
|
|
41
|
+
# ---------------------------------------------------------------------------
|
|
42
|
+
# artwork_risk — required per jurisdiction by PRD-PLATES §4.
|
|
43
|
+
# ---------------------------------------------------------------------------
|
|
44
|
+
artwork_risk:
|
|
45
|
+
posture: unresearched-default-adverse
|
|
46
|
+
basis: >-
|
|
47
|
+
Indiana is the one state in this group that APPEARS in the subnational
|
|
48
|
+
copyright survey — and reading it carefully makes Indiana WORSE, not better,
|
|
49
|
+
than a first glance suggests. IC 5-14-3-3 bars a public agency from entering
|
|
50
|
+
a contract that 'require[s] the public to obtain a license or pay copyright
|
|
51
|
+
royalties for obtaining the right to inspect and copy the records unless
|
|
52
|
+
otherwise provided by applicable statute'. Two limits gut it for our
|
|
53
|
+
purposes. First, it is a rule about CONTRACTS FOR ACCESS to records, not a
|
|
54
|
+
declaration that state works are public domain — it constrains how an agency
|
|
55
|
+
may charge, not whether copyright subsists. Second, the survey's own gloss is
|
|
56
|
+
that the provision reaches 'public agencies (not state agencies as defined in
|
|
57
|
+
Indiana Code 4-13-1-1)' — and the BMV is a STATE agency, so the carve-out
|
|
58
|
+
plausibly does not reach it at all. No {{PD-INGov}} tag exists on Commons.
|
|
59
|
+
Indiana therefore sits at the federal default: 17 U.S.C. §105 does not extend
|
|
60
|
+
to the states, so TREAT THE ARTWORK AS COPYRIGHTED. Recorded as
|
|
61
|
+
unresearched-default-adverse with the near-miss stated, because a future
|
|
62
|
+
researcher will find IC 5-14-3-3 and be tempted by it.
|
|
63
|
+
emblem_rule: >-
|
|
64
|
+
PRD-PLATES §3's placeholder default applies. The current base is a pictorial
|
|
65
|
+
country scene with a covered bridge; render
|
|
66
|
+
`emblem: {present: true, rendered: placeholder}` and approximate nothing.
|
|
67
|
+
State-seal protection is independent of copyright and is unresearched for
|
|
68
|
+
Indiana.
|
|
69
|
+
photograph_caution: >-
|
|
70
|
+
Standing rule: a CC tag on a Commons photograph of an Indiana plate is the
|
|
71
|
+
PHOTOGRAPHER's licence on the PHOTOGRAPH, not a licence on the design. Our
|
|
72
|
+
renders are generated from this file and never derived from a photograph, so
|
|
73
|
+
those obligations never attach.
|
|
74
|
+
sources:
|
|
75
|
+
- "https://codes.findlaw.com/in/title-5-state-and-local-administration/in-code-sect-5-14-3-3.html # FETCHED. IC 5-14-3-3: no contract may 'require the public to obtain a license or pay copyright royalties for obtaining the right to inspect and copy the records unless otherwise provided by applicable statute'"
|
|
76
|
+
- "https://en.wikipedia.org/wiki/Copyright_status_of_works_by_subnational_governments_of_the_United_States # LOCATOR: the Indiana entry, including the 'not state agencies as defined in Indiana Code 4-13-1-1' qualifier that limits it"
|
|
77
|
+
- "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 Indiana tag"
|
|
78
|
+
|
|
79
|
+
us_standards:
|
|
80
|
+
no_federal_mandate: true
|
|
81
|
+
chain: "SAE J686 -> AAMVA License Plate Standard Edition 3 (September 2025) -> voluntary state adoption. Recommendations in the declarative present; read as RECOMMENDED PRACTICE."
|
|
82
|
+
aamva_edition_3:
|
|
83
|
+
dimensions_delegated: "AAMVA §3.1 sends dimensions and bolt holes to SAE J686, whose text is paywalled and was NOT obtained. No J686 dimension is quoted anywhere in this dataset."
|
|
84
|
+
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"
|
|
85
|
+
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"
|
|
86
|
+
stacked_characters: "AAMVA: stacked characters are part of the official plate number, at most two stacked"
|
|
87
|
+
replacement_cycle: "AAMVA §1.1 recommends a cycle 'not to exceed 7 to 10 years'. INDIANA SITS AT THE BOTTOM OF THAT RANGE: registrants are reported to receive new plates on a rolling SEVEN-YEAR basis bearing the same number as before (secondary). If confirmed, Indiana and Florida bracket AAMVA's recommendation exactly — 7 against Florida's legislated 10."
|
|
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. Note the trap it sets for Indiana specifically:
|
|
92
|
+
the Indiana article cites an ALPCA page for 'standard plate size
|
|
93
|
+
documentation', which is precisely the circular enthusiast sourcing PRD-PLATES
|
|
94
|
+
§4 warns about. No Indiana plate dimension is recorded in this file.
|
|
95
|
+
|
|
96
|
+
display_rules:
|
|
97
|
+
default: "ONE plate, REAR. IC 9-18.1-4-4 requires the plate 'upon the rear of the vehicle' for all vehicles except the enumerated front-display classes."
|
|
98
|
+
front_plate_required_when:
|
|
99
|
+
- "TRACTOR, DUMP TRUCK, or TRUCK WITH A REAR-MOUNTED FORKLIFT: the plate goes 'upon the front of the vehicle' (IC 9-18.1-4-4). Note this is not merely a truck-tractor rule like Ohio's and Florida's — Indiana extends front display to dump trucks and forklift-carrying trucks, i.e. to vehicles whose rear is habitually obstructed by equipment. The RATIONALE is visible in the class list."
|
|
100
|
+
mounting: "IC 9-18.1-4-4: 'securely fastened, in a horizontal and upright position', 'at a height of at least twelve (12) inches from the ground', 'clearly visible', 'maintained free from foreign materials and in a condition to be clearly legible', and 'not obstructed or obscured by tires, bumpers, accessories, or other opaque objects'"
|
|
101
|
+
validation_sticker: "IC 9-18.1-4-4: on renewal the sticker must be 'securely affixed in the upper right corner of the license plate' and must 'cover the previous registration expiration year'. Indiana therefore STACKS stickers over one another — a render-layer fact and an OCR hazard."
|
|
102
|
+
penalty: "IC 9-18.1-4-4: 'A person that violates this section commits a Class C infraction.'"
|
|
103
|
+
rear_only_history: "Indiana is reported rear-only since 1956 (secondary). The statute corroborates the current state of affairs but dates nothing."
|
|
104
|
+
sources:
|
|
105
|
+
- "https://codes.findlaw.com/in/title-9-motor-vehicles/in-code-sect-9-18-1-4-4.html # FETCHED. IC 9-18.1-4-4: front display for tractors, dump trucks and rear-mounted-forklift trucks; rear for everything else; horizontal and upright; 12-inch minimum height; visibility and obstruction rules; upper-right renewal sticker covering the previous year; Class C infraction"
|
|
106
|
+
- "https://iga.in.gov/laws/2025/ic/titles/9 # CANONICAL Indiana Code host — served a JavaScript shell only, NOT fetched as text"
|
|
107
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Indiana # LOCATOR ONLY: rear plates only since 1956"
|
|
108
|
+
|
|
109
|
+
series:
|
|
110
|
+
|
|
111
|
+
- id: us-in-standard-2017
|
|
112
|
+
class: standard
|
|
113
|
+
categories: [car, van, bus]
|
|
114
|
+
period: { start: 2017 }
|
|
115
|
+
period_evidence: secondary-first-issue
|
|
116
|
+
matching: strict
|
|
117
|
+
format:
|
|
118
|
+
pattern: "999LLL"
|
|
119
|
+
regex: '\A\d{3}[A-Z]{1,3}\z'
|
|
120
|
+
evidence: secondary
|
|
121
|
+
charset:
|
|
122
|
+
notes: >-
|
|
123
|
+
THREE DIGITS THEN ONE TO THREE LETTERS — a VARIABLE-LENGTH serial, in
|
|
124
|
+
the Delaware family of schema stressors: the regex must quantify
|
|
125
|
+
(`{1,3}`) rather than fix width, and any consumer that assumes a fixed
|
|
126
|
+
US plate length is wrong on Indiana. The reported arrangements are
|
|
127
|
+
123A, 123AB and 123ABC. No separator is printed. No statutory
|
|
128
|
+
constraint exists to record as `regex_statutory`, because IC 9-18.1-4-3
|
|
129
|
+
delegates 'size, character... content' wholesale to bureau rules
|
|
130
|
+
adopted under IC 4-22-2, and those rules (Indiana Administrative Code)
|
|
131
|
+
were NOT obtained in this pass.
|
|
132
|
+
excluded: []
|
|
133
|
+
excluded_note: "no letter exclusions stated in statute or observed; recorded as an open question rather than as an assertion of none"
|
|
134
|
+
design:
|
|
135
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
136
|
+
colour_note: >-
|
|
137
|
+
Dark blue serial on a reflective pictorial country scene with a covered
|
|
138
|
+
bridge. The background hex is recorded as plain reflective white only
|
|
139
|
+
because the scene sits ON a white sheet; the SCENE has no hex and none is
|
|
140
|
+
invented. The serial colour is named, not hexed, for the same reason.
|
|
141
|
+
legend_top: "INDIANA"
|
|
142
|
+
graphic: { present: true, rendered: placeholder, description: "country scene with a covered bridge; secondary observation only, never a statutory drawing" }
|
|
143
|
+
emblem: { present: true, rendered: placeholder }
|
|
144
|
+
county_sticker: { present: true, position: "top", content: "county number and county name, on a white sticker" }
|
|
145
|
+
replacement_cycle:
|
|
146
|
+
years: 7
|
|
147
|
+
evidence: secondary
|
|
148
|
+
note: >-
|
|
149
|
+
'Registrants receive new plates on a rolling 7-year basis, bearing the
|
|
150
|
+
same number they had previously' (secondary). Two consequences if true,
|
|
151
|
+
and both matter: Indiana sits at the BOTTOM of AAMVA's 7-10 year
|
|
152
|
+
recommendation, and — unusually — the SERIAL SURVIVES the replacement, so
|
|
153
|
+
an Indiana plate number does not date the plate it is printed on. A parse
|
|
154
|
+
API must not infer era from an Indiana serial.
|
|
155
|
+
region_encoding: >-
|
|
156
|
+
COUNTY ON A STICKER, NOT IN THE SERIAL — but Indiana is the US state where
|
|
157
|
+
this distinction is most easily got wrong, because it USED to be in the
|
|
158
|
+
serial. From 1963 to 2008 the plate carried a numeric county prefix (01
|
|
159
|
+
Adams through 92 Whitley, with overflow 93-99 for Marion and Lake), and
|
|
160
|
+
from 1950 to 1962 a two-letter county prefix. Since 2008 the county number
|
|
161
|
+
and name ride on a sticker at the top of the plate. So a decode table for
|
|
162
|
+
Indiana geography is PERIOD-BOUND and applies only to pre-2008 serials —
|
|
163
|
+
exactly the trap PRD-PLATES §2.4 records for the French SIV band. All of
|
|
164
|
+
this is secondary; no primary was obtained.
|
|
165
|
+
sources:
|
|
166
|
+
- "https://codes.findlaw.com/in/title-9-motor-vehicles/in-code-sect-9-18-1-4-3.html # FETCHED. IC 9-18.1-4-3, the delegation: 'The bureau shall adopt rules under IC 4-22-2 regarding the size, character, display, mounting, securing, content, issuance, replacement, and life cycle of license plates, temporary license plates, renewal stickers, and other proof of registration.' This is the reason no format claim in this file can be statute-grade."
|
|
167
|
+
- "https://codes.findlaw.com/in/title-9-motor-vehicles/in-code-sect-9-18-1-4-1.html # FETCHED. IC 9-18.1-4-1: on registering, the bureau issues 'proof of registration for display on the vehicle', either 'a regular license plate under this article' or 'a distinctive license plate designed and issued under IC 9-18.5'"
|
|
168
|
+
- "https://iga.in.gov/laws/2025/ic/titles/9 # CANONICAL, not fetched (JS shell)"
|
|
169
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Indiana # LOCATOR ONLY: 2017-present covered-bridge base; serial formats 123A / 123AB / 123ABC; county number and name on a white sticker at top; the rolling 7-year replating keeping the same number; the 1950-1962 and 1963-2008 county-prefix schemes"
|
|
170
|
+
notes: >-
|
|
171
|
+
INDIANA STANDARD ISSUE, CURRENT BASE. The id is dated on a
|
|
172
|
+
SECONDARY first-issue year and carries `period_evidence:
|
|
173
|
+
secondary-first-issue` to say so; PRD-QUALITY's id contract means a dated
|
|
174
|
+
id minted on a soft boundary must be aliased rather than moved if the
|
|
175
|
+
boundary shifts, so the flag is load-bearing, not decorative. The entry's
|
|
176
|
+
real contribution to the dataset is the two structural facts around the
|
|
177
|
+
format: Indiana's plate spec is in ADMINISTRATIVE RULES, not statute
|
|
178
|
+
(IC 9-18.1-4-3), and Indiana's county geography moved OUT of the serial in
|
|
179
|
+
2008, which makes every pre-2008 Indiana decode table period-bound.
|
|
180
|
+
|
|
181
|
+
- id: us-in-standard-2013
|
|
182
|
+
class: standard
|
|
183
|
+
categories: [car, van, bus]
|
|
184
|
+
period: { start: 2013, end: 2017 }
|
|
185
|
+
period_evidence: secondary-first-issue
|
|
186
|
+
matching: strict
|
|
187
|
+
format:
|
|
188
|
+
pattern: "999LLL"
|
|
189
|
+
regex: '\A\d{3}[A-Z]{1,3}\z'
|
|
190
|
+
evidence: secondary
|
|
191
|
+
charset: { notes: "same variable-length grammar as the current base — the 2017 change was a BASE change, not a format change" }
|
|
192
|
+
design:
|
|
193
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
194
|
+
colour_note: "black serial on reflective white fading to gold; no serial hex recorded"
|
|
195
|
+
legend_top: "INDIANA"
|
|
196
|
+
legend_bottom: "Bicentennial 1816-2016"
|
|
197
|
+
graphic: { present: true, rendered: placeholder }
|
|
198
|
+
emblem: { present: true, rendered: placeholder }
|
|
199
|
+
county_sticker: { present: true, position: "corner", content: "county number" }
|
|
200
|
+
region_encoding: "county number on the plate corner; not in the serial"
|
|
201
|
+
sources:
|
|
202
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Indiana # LOCATOR ONLY: 2013-2017 Bicentennial base, black on white-to-gold, serial formats 123A / 123AB / 123ABC, county number and expiration in the corners"
|
|
203
|
+
- "https://codes.findlaw.com/in/title-9-motor-vehicles/in-code-sect-9-18-1-4-3.html # FETCHED. The same delegation governed this base; it is why neither base has a statute-grade format"
|
|
204
|
+
notes: >-
|
|
205
|
+
ONE SERIES BACK (Bicentennial base, 2013-2017). Carried per L2 scope, and
|
|
206
|
+
it repeats the Ohio lesson in a second state: CONSECUTIVE BASES SHARE ONE
|
|
207
|
+
SERIAL GRAMMAR, so the regex cannot date the plate and the artwork is the
|
|
208
|
+
only discriminator. Combined with Indiana's serial-preserving 7-year
|
|
209
|
+
replating, this means an Indiana serial carries essentially no temporal
|
|
210
|
+
signal at all — worth stating plainly before someone builds era inference
|
|
211
|
+
on top of it.
|
|
212
|
+
|
|
213
|
+
- id: us-in-motorcycle-2010
|
|
214
|
+
class: motorcycle
|
|
215
|
+
categories: [motorcycle]
|
|
216
|
+
period: { start: 2010 }
|
|
217
|
+
period_evidence: secondary-first-issue
|
|
218
|
+
matching: strict
|
|
219
|
+
format:
|
|
220
|
+
pattern: "M999LL"
|
|
221
|
+
regex: '\AM\d{3}[A-Z]{1,2}\z'
|
|
222
|
+
evidence: secondary
|
|
223
|
+
charset:
|
|
224
|
+
notes: >-
|
|
225
|
+
The leading M is a CLASS TOKEN, not a separator and not a serial block:
|
|
226
|
+
Indiana marks the motorcycle class inside the string. Reported
|
|
227
|
+
arrangement M123AB running from M101AA. Because the token is a literal,
|
|
228
|
+
an Indiana motorcycle plate is self-identifying from the string alone —
|
|
229
|
+
the only class in this group's five states of which that is true
|
|
230
|
+
without a range lookup.
|
|
231
|
+
progression: "observed from M101AA (secondary)"
|
|
232
|
+
design:
|
|
233
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
234
|
+
colour_note: "screened blue on white (secondary); no serial hex recorded"
|
|
235
|
+
emblem: { present: true, rendered: placeholder }
|
|
236
|
+
size_note: "reduced motorcycle size; NO dimension recorded — Indiana delegates size to bureau rules (IC 9-18.1-4-3) and AAMVA delegates dimensions to the unpinned SAE J686"
|
|
237
|
+
region_encoding: none
|
|
238
|
+
sources:
|
|
239
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Indiana # LOCATOR ONLY: motorcycle plates 2010-present, screened blue on white, format M123AB from M101AA"
|
|
240
|
+
- "https://codes.findlaw.com/in/title-9-motor-vehicles/in-code-sect-9-18-1-4-4.html # FETCHED. IC 9-18.1-4-4's rear-display and 12-inch mounting rules apply to motorcycles as to other vehicles"
|
|
241
|
+
notes: >-
|
|
242
|
+
MOTORCYCLE. Its own series because the format differs (class token plus a
|
|
243
|
+
shorter tail) and the plate size differs. This is the entry that makes
|
|
244
|
+
Indiana's class-token convention visible; see the trailer series for the
|
|
245
|
+
two-character form of the same idea.
|
|
246
|
+
|
|
247
|
+
- id: us-in-trailer
|
|
248
|
+
class: trailer
|
|
249
|
+
categories: [trailer]
|
|
250
|
+
period: { start: 2026 }
|
|
251
|
+
period_evidence: instrument-in-force-upper-bound
|
|
252
|
+
matching: strict
|
|
253
|
+
format:
|
|
254
|
+
pattern: "TR999LLL"
|
|
255
|
+
regex: '\ATR\d{3}[A-Z]{1,3}\z'
|
|
256
|
+
evidence: secondary
|
|
257
|
+
charset:
|
|
258
|
+
notes: >-
|
|
259
|
+
TR is a TWO-CHARACTER CLASS TOKEN, and the same convention runs across
|
|
260
|
+
Indiana's commercial classes: TK for truck (observed TK101LAA to
|
|
261
|
+
TK713ORW as of July 2024), TC for semi tractor, SP for the permanent
|
|
262
|
+
semi-trailer. Those three are outside L2 core-class scope and are
|
|
263
|
+
recorded here as EVIDENCE OF THE CONVENTION rather than as series of
|
|
264
|
+
their own. CAUTION for a render or OCR consumer: under AAMVA's stacked
|
|
265
|
+
-character rule a two-character token like TR may well be PRINTED
|
|
266
|
+
STACKED; whether Indiana stacks it was not established.
|
|
267
|
+
design:
|
|
268
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
269
|
+
colour_note: "screened black on white (secondary)"
|
|
270
|
+
legend_bottom: "TRAILER, with gross weight"
|
|
271
|
+
emblem: { present: true, rendered: placeholder }
|
|
272
|
+
weight_class_note: "the trailer plate prints the GROSS WEIGHT at the bottom alongside the class legend — a weight-class encoding carried as printed TEXT, not in the serial (secondary)"
|
|
273
|
+
region_encoding: none
|
|
274
|
+
sources:
|
|
275
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Indiana # LOCATOR ONLY: trailer format TR123ABC, screened black on white, 'TRAILER' and gross weight at bottom; and the parallel TK / TC / SP class tokens"
|
|
276
|
+
- "https://codes.findlaw.com/in/title-9-motor-vehicles/in-code-sect-9-18-1-4-1.html # FETCHED. IC 9-18.1-4-1 is the issuance frame for every plate class; it carries no class grammar"
|
|
277
|
+
notes: >-
|
|
278
|
+
TRAILER. `period.start` is an INSTRUMENT-IN-FORCE UPPER BOUND, not a
|
|
279
|
+
first-issue year: no source dated the TR series, so the year of the
|
|
280
|
+
statutes read is recorded rather than a year invented. The weight-class
|
|
281
|
+
legend is the fact worth carrying — Indiana answers the "does this state
|
|
282
|
+
encode weight class?" question with YES, but as printed text under the
|
|
283
|
+
serial, which is invisible to a string parser and visible to a renderer.
|
|
284
|
+
|
|
285
|
+
- id: us-in-specialty-index
|
|
286
|
+
class: specialty
|
|
287
|
+
categories: [car, van, truck, motorcycle]
|
|
288
|
+
period: { start: 2026 }
|
|
289
|
+
period_evidence: instrument-in-force-upper-bound
|
|
290
|
+
matching: strict
|
|
291
|
+
format:
|
|
292
|
+
pattern: "999LLL"
|
|
293
|
+
regex: '\A\d{3}[A-Z]{1,3}\z'
|
|
294
|
+
evidence: secondary
|
|
295
|
+
charset: { notes: "specialty and 'special group recognition' plates carry ordinary serials on an alternative design; no distinct grammar was sourced" }
|
|
296
|
+
design:
|
|
297
|
+
background: { finish: retroreflective }
|
|
298
|
+
note: "one design per authorised group; designs are L4 scope (PRD-PLATES §2.5) and none is described here"
|
|
299
|
+
emblem: { present: true, rendered: placeholder }
|
|
300
|
+
program_index:
|
|
301
|
+
count_official: null
|
|
302
|
+
count_status: RECORDED-GAP
|
|
303
|
+
count_note: >-
|
|
304
|
+
No count was obtained. www.in.gov/bmv is reachable at its root but every
|
|
305
|
+
plate sub-path tried returned 404 or timed out, so neither the official
|
|
306
|
+
catalogue nor a count was captured; no secondary count was found either.
|
|
307
|
+
Recorded as `null` with the cause stated rather than guessed.
|
|
308
|
+
official_list_url: "https://www.in.gov/bmv/licenses-permits-ids/license-plates/specialty-license-plates/"
|
|
309
|
+
official_list_fetch_status: "NOT CAPTURED — 404 on the parent path and a 60 s timeout on the specialty path, 2026-08-02"
|
|
310
|
+
statutory_basis: "IC 9-18.5 — 'distinctive license plate designed and issued under IC 9-18.5' is the statutory alternative to the regular plate (IC 9-18.1-4-1). IC 9-18.5-1-1 scopes the chapter to a person who 'is the registered owner or lessee of a vehicle' or 'applies to register or renew the registration of a vehicle'. NO PETITION THRESHOLD was found in the sections read — a structural contrast with Illinois (2,000 applications) and Wisconsin (500 signatures), and a recorded gap rather than a finding of none."
|
|
311
|
+
known_programme_note: "Indiana's BLACKOUT plate — an all-black standard-serial plate promoted on the BMV homepage ('Visit your local branch to switch your design to a blackout license plate') — is the most visible current Indiana optional plate. It is an OPTIONAL DESIGN on the ordinary serial, i.e. exactly the specialty shape, and is indexed here rather than given a series."
|
|
312
|
+
region_encoding: none
|
|
313
|
+
sources:
|
|
314
|
+
- "https://codes.findlaw.com/in/title-9-motor-vehicles/in-code-sect-9-18-1-4-1.html # FETCHED. IC 9-18.1-4-1: the regular-plate / IC 9-18.5 distinctive-plate fork"
|
|
315
|
+
- "https://codes.findlaw.com/in/title-9-motor-vehicles/in-code-sect-9-18-5-1-1.html # FETCHED. IC 9-18.5-1-1: the scope of the special-group-recognition chapter"
|
|
316
|
+
- "https://www.in.gov/bmv/ # FETCHED (root only): the BMV's own promotion of the blackout plate and its 'Specialty & Personalized License Plates' section"
|
|
317
|
+
notes: >-
|
|
318
|
+
THE INDIANA SPECIALTY PROGRAM INDEX — one entry for the whole programme per
|
|
319
|
+
PRD-PLATES §2.5, with the count declared as a gap. The structural finding is
|
|
320
|
+
that Indiana routes optional plates through a dedicated CODE ARTICLE
|
|
321
|
+
(IC 9-18.5) rather than through per-plate statutes as Ohio does or through a
|
|
322
|
+
petition threshold as Illinois and Wisconsin do. That article is the right
|
|
323
|
+
place to count from once iga.in.gov is reachable, and counting from an edict
|
|
324
|
+
beats counting from a brochure.
|