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,351 @@
|
|
|
1
|
+
# plates/us-ks.yml — Kansas (PRD-PLATES gate L2, group midwest-b).
|
|
2
|
+
#
|
|
3
|
+
# KANSAS IS THE ONLY STATE IN THIS GROUP WHOSE SERIAL ARRANGEMENT IS FIXED BY
|
|
4
|
+
# STATUTE. K.S.A. 8-147(c) does not delegate the format to the agency the way
|
|
5
|
+
# Missouri, Minnesota, North Dakota and South Dakota all do — it states it:
|
|
6
|
+
# "Each license plate shall contain a combination of three letters followed by a
|
|
7
|
+
# combination of three numerals". That is an edict of government specifying a
|
|
8
|
+
# regex, which is the best sourcing situation this program can hope for, and it
|
|
9
|
+
# is why `us-ks-standard` is `matching: strict` while several of its neighbours
|
|
10
|
+
# in this group are `recall-only`.
|
|
11
|
+
#
|
|
12
|
+
# THE STATUTE ALSO WROTE ITS OWN EXHAUSTION CLAUSE, which is unusual foresight
|
|
13
|
+
# and matters for the parse layer: "except that once all allowable combinations
|
|
14
|
+
# of letters and numerals have been used, each license plate shall contain an
|
|
15
|
+
# arrangement of numerals or letters, or both, as shall be assigned by the
|
|
16
|
+
# secretary of revenue." So Kansas law contains BOTH a precise current grammar
|
|
17
|
+
# and a pre-authorised escape hatch out of it. `regex_statutory` encodes the
|
|
18
|
+
# escape hatch; `regex` encodes the grammar.
|
|
19
|
+
#
|
|
20
|
+
# THE ONE THING THIS FILE COULD NOT RESOLVE is the county designation. K.S.A.
|
|
21
|
+
# 8-132(d) refers, in passing and without defining them, to "the letters required
|
|
22
|
+
# to designate the county in which such vehicle is registered" — telling us that
|
|
23
|
+
# Kansas plates carry a county designator that even a vanity plate may not
|
|
24
|
+
# displace, without telling us what it looks like or where on the plate it sits.
|
|
25
|
+
# That gap is recorded in `region_encoding` rather than papered over, because
|
|
26
|
+
# guessing at it would corrupt exactly the decode data this program exists to get
|
|
27
|
+
# right. The Kansas Department of Revenue's own site was UNREACHABLE for this
|
|
28
|
+
# pass (connection timeouts on every attempt), which is why the gap survives.
|
|
29
|
+
jurisdiction: us-ks
|
|
30
|
+
authority:
|
|
31
|
+
name: Kansas Department of Revenue, Division of Vehicles
|
|
32
|
+
url: "https://www.ksrevisor.gov/statutes/chapters/ch08/"
|
|
33
|
+
binding: vehicle
|
|
34
|
+
statute_edition: "Kansas Statutes Annotated Chapter 8 (Automobiles and Other Vehicles), Article 1, as published by the Kansas Office of Revisor of Statutes and fetched for this pass. K.S.A. 8-147 carries a 2025 amendment (L. 2025, ch. 75, § 6), so the design provisions read here are current to the 2025 session."
|
|
35
|
+
|
|
36
|
+
# ---------------------------------------------------------------------------
|
|
37
|
+
# artwork_risk — required per jurisdiction by PRD-PLATES §4.
|
|
38
|
+
# ---------------------------------------------------------------------------
|
|
39
|
+
artwork_risk:
|
|
40
|
+
posture: unresearched
|
|
41
|
+
basis: >-
|
|
42
|
+
KANSAS WAS NOT LOCATED IN ANY COPYRIGHT SURVEY READ FOR THIS PASS. The Wikipedia
|
|
43
|
+
survey of subnational-government copyright status carries per-state sections for
|
|
44
|
+
seventeen states and NO section for Kansas; no {{PD-KSGov}} tag was found on
|
|
45
|
+
Commons. The dossier's default therefore governs: 17 U.S.C. § 105 does not reach the
|
|
46
|
+
states, so a Kansas plate design is presumed COPYRIGHTED unless Kansas says
|
|
47
|
+
otherwise, and Kansas has not been shown to say otherwise. Recorded as unresearched,
|
|
48
|
+
not as adverse — absence of a fetched source is weak evidence either way.
|
|
49
|
+
edict_carve_out: >-
|
|
50
|
+
KANSAS HAS THE STRONGEST EDICT CARVE-OUT IN GROUP MIDWEST-B, and it is worth stating
|
|
51
|
+
plainly because it is the practical answer to the unresearched posture above. The
|
|
52
|
+
facts this program most needs from Kansas — the three-letters-then-three-numerals
|
|
53
|
+
arrangement, the reflective coating duty, the mandatory colour change on each
|
|
54
|
+
reissue, the five-year reissue cycle, the personalized character caps — are ALL in
|
|
55
|
+
the Kansas Statutes Annotated, and edicts of government are uncopyrightable at every
|
|
56
|
+
level ({{PD-US-GovEdict}}). So the entire format layer of this file is affirmatively
|
|
57
|
+
clean regardless of what Kansas thinks about its artwork. Only the artwork is exposed.
|
|
58
|
+
emblem_rule: >-
|
|
59
|
+
PRD-PLATES §3's placeholder default applies to whatever graphic the current Kansas
|
|
60
|
+
base carries — which this pass could not identify, since the Department of Revenue
|
|
61
|
+
site timed out. Render `emblem: {present: true, rendered: placeholder}`. Kansas
|
|
62
|
+
state-seal misuse statutes are a protection regime independent of copyright and are
|
|
63
|
+
unresearched.
|
|
64
|
+
sources:
|
|
65
|
+
- "https://en.wikipedia.org/wiki/Copyright_status_of_works_by_subnational_governments_of_the_United_States # LOCATOR ONLY (PRD-PLATES §4): read to establish that Kansas has NO section in the survey — a negative result, recorded as such"
|
|
66
|
+
- "https://www.ksrevisor.gov/statutes/chapters/ch08/008_001_0047.html # K.S.A. 8-147, the statutory design spec itself — an edict of government, PD"
|
|
67
|
+
|
|
68
|
+
us_standards:
|
|
69
|
+
no_federal_mandate: true
|
|
70
|
+
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."
|
|
71
|
+
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."
|
|
72
|
+
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)."
|
|
73
|
+
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."
|
|
74
|
+
replacement_cycle_recommendation: >-
|
|
75
|
+
AAMVA §1.1 recommends a cycle 'not to exceed 7 to 10 years'. KANSAS LEGISLATED FIVE —
|
|
76
|
+
TIGHTER THAN AAMVA'S FLOOR — and then legislated a way to stretch it. See
|
|
77
|
+
`replacement_cycle` on us-ks-standard: this is the most interesting replacement regime
|
|
78
|
+
in group midwest-b precisely because the legislature anticipated that plates might
|
|
79
|
+
outlast their nominal life and gave the director a rules-based extension rather than
|
|
80
|
+
forcing a statutory amendment.
|
|
81
|
+
source: "https://www.aamva.org/getmedia/646bcc8a-219b-47d8-b5cd-726240473163/License-Plate-Standard-Edition-3_September-2025-Update.pdf"
|
|
82
|
+
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. Chapter 8 states no plate dimension, so this file makes no Kansas dimension claim (recorded gap)."
|
|
83
|
+
|
|
84
|
+
# ---------------------------------------------------------------------------
|
|
85
|
+
# Display rules. Kansas is a ONE-PLATE, REAR-ONLY state — with five statutory
|
|
86
|
+
# exceptions, three of which move the plate to the FRONT.
|
|
87
|
+
# ---------------------------------------------------------------------------
|
|
88
|
+
display_rules:
|
|
89
|
+
default: "ONE plate, REAR. K.S.A. 8-132(a): the division 'shall furnish to every owner whose vehicle shall be registered one license plate'. K.S.A. 8-133(a): it 'shall be attached to the rear of the vehicle', and 'Except as otherwise provided in subsection (b), a Kansas registered vehicle shall not have a license plate attached to the front of the vehicle' — an express PROHIBITION on front display, not merely an absence of a requirement."
|
|
90
|
+
exceptions:
|
|
91
|
+
- "TRUCK TRACTOR: the plate 'shall be attached to the front of the truck tractor' (§ 8-133(b)(1)) — front-only, the inverse of the state default, and the same outlier shape Florida and North Dakota carry"
|
|
92
|
+
- "ANTIQUE VEHICLE displaying a model-year plate under K.S.A. 8-172 MAY be attached to the front (§ 8-133(b)(2))"
|
|
93
|
+
- "PERSONALIZED plate issued to a passenger vehicle or truck under § 8-132(c) MAY be attached to the front (§ 8-133(b)(3)) — so a Kansas vanity plate may lawfully appear where a standard plate may not"
|
|
94
|
+
- "CONCRETE MIXER TRUCK: may be attached to either the front or the rear (§ 8-133(b)(4))"
|
|
95
|
+
- "DUMP TRUCK of gross weight 26,000 lb or more: 'shall be attached to the front of the vehicle', but NOT if the vehicle is registered as a farm truck (§ 8-133(b)(5))"
|
|
96
|
+
mounting: "§ 8-133(c): securely fastened to prevent swinging, not less than 12 inches from the ground measured from the bottom of the plate, in a place and position clearly visible, free from foreign materials and legible"
|
|
97
|
+
enforcement_note: "§ 8-133(e) required a warning citation rather than a penalty for the dump-truck rule, and by its own terms 'shall expire and have no effect on and after January 1, 2022' — a self-repealing grace period, now spent"
|
|
98
|
+
suspension_contingency: "§ 8-133(d): if plate CONSTRUCTION is suspended under § 8-132, whatever 'plate, tag, token, marker or sign' is assigned is displayed as the director of vehicles prescribes — a wartime-style contingency still sitting in the code"
|
|
99
|
+
sources:
|
|
100
|
+
- "https://www.ksrevisor.gov/statutes/chapters/ch08/008_001_0033.html # K.S.A. 8-133: rear attachment and the express front-display prohibition; the truck-tractor, antique, personalized, concrete-mixer and dump-truck exceptions; the 12-inch mounting rule; the expired warning-citation subsection; the construction-suspension contingency"
|
|
101
|
+
- "https://www.ksrevisor.gov/statutes/chapters/ch08/008_001_0032.html # K.S.A. 8-132(a): one plate per registered vehicle"
|
|
102
|
+
|
|
103
|
+
series:
|
|
104
|
+
|
|
105
|
+
# =========================================================================
|
|
106
|
+
# THE STANDARD-ISSUE SERIES — statutory arrangement, statutory reissue cycle,
|
|
107
|
+
# statutory colour change. Kansas legislates more of its plate than any other
|
|
108
|
+
# state in this group.
|
|
109
|
+
# =========================================================================
|
|
110
|
+
- id: us-ks-standard
|
|
111
|
+
class: standard
|
|
112
|
+
categories: [car, van, truck, bus]
|
|
113
|
+
period: { start: 2025 }
|
|
114
|
+
period_evidence: instrument-in-force-upper-bound
|
|
115
|
+
matching: strict
|
|
116
|
+
format:
|
|
117
|
+
pattern: "LLL 999"
|
|
118
|
+
regex: '\A[A-Z]{3} ?\d{3}\z'
|
|
119
|
+
regex_statutory: '\A[A-Z0-9](?: ?[A-Z0-9])*\z'
|
|
120
|
+
charset:
|
|
121
|
+
notes: >-
|
|
122
|
+
K.S.A. 8-147(c), verbatim: 'Each license plate shall contain a combination of
|
|
123
|
+
three letters followed by a combination of three numerals, except that once all
|
|
124
|
+
allowable combinations of letters and numerals have been used, each license
|
|
125
|
+
plate shall contain an arrangement of numerals or letters, or both, as shall be
|
|
126
|
+
assigned by the secretary of revenue. The arrangement of numerals and letters of
|
|
127
|
+
license plates shall be uniform throughout each classification of registration.
|
|
128
|
+
The secretary may provide for the arrangement of the numerals and letters in
|
|
129
|
+
groups or otherwise and for other distinguishing marks on such license plates.'
|
|
130
|
+
NO LETTER EXCLUSIONS are stated anywhere in Chapter 8 — whether Kansas skips
|
|
131
|
+
I/O/Q was NOT established (recorded gap).
|
|
132
|
+
pattern_note: >-
|
|
133
|
+
`regex` encodes the arrangement the STATUTE fixes. `regex_statutory` encodes the
|
|
134
|
+
statute's own EXHAUSTION CLAUSE — 'an arrangement of numerals or letters, or both,
|
|
135
|
+
as shall be assigned by the secretary' — which is the outer legal bound once the
|
|
136
|
+
three-and-three space is used up, and the honest bound for a Kansas plate of
|
|
137
|
+
unknown vintage. This is the cleanest example in group midwest-b of the tier order
|
|
138
|
+
doing real work: the two tiers are not researcher caution, they are two sentences
|
|
139
|
+
of one statute.
|
|
140
|
+
grouping: "§ 8-147(c) lets the secretary arrange the characters 'in groups or otherwise', which is why the separator is optional in the regex rather than mandatory"
|
|
141
|
+
design:
|
|
142
|
+
material_and_finish: "§ 8-147(d): 'As new license plates are issued, the face of every license plate shall be completely coated with a reflective material. The reflectorized material shall be of such nature as to provide effective and dependable performance in the promotion of highway safety and vehicle identification throughout the service period for which the license plates are issued.' A $0.50 charge is added to the cost of each reflectorized plate."
|
|
143
|
+
contrast_rule: "§ 8-147(c): 'The letters and numerals of such license plates shall be in such contrast of colors to the background of the license plate as to make such letters and numerals easily readable.'"
|
|
144
|
+
colour_change_rule: >-
|
|
145
|
+
THE COLOUR IS REQUIRED TO CHANGE, WHICH IS A FACT ABOUT THE SERIES BOUNDARY ITSELF.
|
|
146
|
+
§ 8-147(d): 'The director shall change the color of such license plates every time
|
|
147
|
+
new license plates are issued under K.S.A. 8-132(b).' Kansas has therefore
|
|
148
|
+
legislated that every reissue is visually distinguishable from its predecessor —
|
|
149
|
+
which means Kansas base generations are, in principle, separable by colour alone,
|
|
150
|
+
and that a complete Kansas history is a colour sequence. Iowa legislates the same
|
|
151
|
+
idea in different words (Iowa Code § 321.166(5)).
|
|
152
|
+
colour_note: >-
|
|
153
|
+
NO HEX IS RECORDED. Kansas mandates CONTRAST and mandates CHANGE but names no
|
|
154
|
+
colour value, and the Kansas Department of Revenue site was unreachable in this
|
|
155
|
+
pass, so no departmental colour specification was obtained. Recording an observed
|
|
156
|
+
hex from a photograph would attach a value to the wrong authority. Recorded gap.
|
|
157
|
+
decals: "§ 8-147(c): the secretary designs decals affixed to the plate to identify registration expiration information consistent with K.S.A. 8-134"
|
|
158
|
+
plate_content: "§ 8-132(a): the plate displays 'the registration number assigned to the vehicle and to the owner thereof, the name of the state, which may be abbreviated, and the year or years for which it is issued'"
|
|
159
|
+
emblem: { present: true, rendered: placeholder }
|
|
160
|
+
manufacture: "§ 8-147(b): plates are manufactured under contract with an organization or institution designated in K.S.A. 39-1208 — the Kansas correctional-industries route, the same arrangement South Dakota states more bluntly as its penitentiary plate plant"
|
|
161
|
+
distribution: "§ 8-147(e): plates ship directly to the treasurer of the county where they are to be used or, 'for digitally fulfilled license plate orders, directly to the customer for whom the plate is issued' — the digital-fulfilment clause is recent and is what the 2025 amendment added"
|
|
162
|
+
replacement_cycle:
|
|
163
|
+
years: 5
|
|
164
|
+
statutory_text: >-
|
|
165
|
+
§ 8-132(b): 'During calendar year 1975 commencing on the effective date of this
|
|
166
|
+
act, and during every fifth calendar year thereafter, the division of vehicles
|
|
167
|
+
shall furnish one license plate for any type of vehicle an owner registers or has
|
|
168
|
+
the registration thereof renewed', with decals furnished in the four intervening
|
|
169
|
+
years.
|
|
170
|
+
extension_mechanism: >-
|
|
171
|
+
THE PART THAT MAKES KANSAS DIFFERENT. § 8-132(b) continues: 'Notwithstanding the
|
|
172
|
+
foregoing provisions of this subsection, whenever, in the discretion of the
|
|
173
|
+
director of vehicles, it is determined that the license plates currently being
|
|
174
|
+
issued and displayed are not deteriorating to the extent that their replacement is
|
|
175
|
+
warranted, the director may adopt rules and regulations to extend the five-year
|
|
176
|
+
issuance cycle provided for in this subsection by one year at a time, and in the
|
|
177
|
+
same manner the director may further extend such cycle by one year at a time,
|
|
178
|
+
successively as the director determines appropriate.' On expiry of an extended
|
|
179
|
+
term an owner may keep displaying the current plate 'for a period not to exceed
|
|
180
|
+
three registration years'. So the NOMINAL cycle is five years and the EFFECTIVE
|
|
181
|
+
cycle is unbounded — which is precisely why `period.start` on this series is an
|
|
182
|
+
upper bound and not a computed date. A dataset that inferred Kansas base
|
|
183
|
+
boundaries by counting five-year steps from 1975 would be wrong, and would look
|
|
184
|
+
confident while being wrong.
|
|
185
|
+
note: "AAMVA §1.1 recommends not exceeding 7 to 10 years; Kansas's nominal five is tighter, but the extension mechanism can carry it past AAMVA's ceiling without any change in the law"
|
|
186
|
+
region_encoding:
|
|
187
|
+
mechanism: "COUNTY DESIGNATION LETTERS — existence sourced, form NOT sourced"
|
|
188
|
+
status: unresolved
|
|
189
|
+
evidence: >-
|
|
190
|
+
K.S.A. 8-132(d) establishes that Kansas plates carry a county designator, and does
|
|
191
|
+
so obliquely, while regulating something else. Describing personalized plates, it
|
|
192
|
+
permits the applicant to choose characters 'in lieu of the letters and numbers
|
|
193
|
+
required by K.S.A. 8-147, and amendments thereto, OTHER THAN THE LETTERS REQUIRED
|
|
194
|
+
TO DESIGNATE THE COUNTY IN WHICH SUCH VEHICLE IS REGISTERED.' Two facts follow and
|
|
195
|
+
no more: (1) Kansas plates carry LETTERS designating the county of registration;
|
|
196
|
+
(2) those letters are so fundamental that even a vanity plate cannot replace them.
|
|
197
|
+
not_established: >-
|
|
198
|
+
WHAT THIS PASS COULD NOT DETERMINE: whether the county letters sit inside the
|
|
199
|
+
six-character serial or in a separate field such as a printed county name; how
|
|
200
|
+
many letters they are; the county-to-letters mapping; and whether all 105 Kansas
|
|
201
|
+
counties are designated or only some. K.S.A. 8-147 defines the serial as three
|
|
202
|
+
letters and three numerals and says nothing about county letters, which suggests
|
|
203
|
+
but does not establish that the designator is a SEPARATE plate element rather than
|
|
204
|
+
part of the serial. The Kansas Department of Revenue site, which would settle it,
|
|
205
|
+
timed out on every attempt. NOTHING IS ASSERTED — this is exactly the decode data
|
|
206
|
+
the parse API would lie with if it were guessed.
|
|
207
|
+
decode_file_planned: "plates/_decode/us-ks-county-designations.yml once the mechanism and the mapping are sourced"
|
|
208
|
+
sources:
|
|
209
|
+
- "https://www.ksrevisor.gov/statutes/chapters/ch08/008_001_0047.html # K.S.A. 8-147(c): the three-letters-then-three-numerals arrangement, the exhaustion clause, uniformity per classification, the grouping discretion, the contrast rule and the expiration decals; (d) the full reflective coating, its $0.50 charge and the mandatory colour change on each reissue; (b) manufacture under a K.S.A. 39-1208 contract; (e) shipping to the county treasurer or, for digitally fulfilled orders, to the customer. History: L. 2025, ch. 75, § 6"
|
|
210
|
+
- "https://www.ksrevisor.gov/statutes/chapters/ch08/008_001_0032.html # K.S.A. 8-132(a): one plate bearing the registration number, state name and year; (b) the five-year reissue cycle from 1975, the intervening decals, and the director's rules-based one-year-at-a-time extension with its three-registration-year grace; (d) 'the letters required to designate the county in which such vehicle is registered'"
|
|
211
|
+
- "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 recommendation Kansas's nominal five sits inside and its extension mechanism can exceed"
|
|
212
|
+
notes: >-
|
|
213
|
+
KANSAS STANDARD ISSUE. THE ID IS DELIBERATELY UNDATED, on the same reasoning as
|
|
214
|
+
us-fl-standard: Kansas reissues on a five-year cycle that the director may extend
|
|
215
|
+
indefinitely by rule, so base-design generations exist but no primary establishing
|
|
216
|
+
their boundaries was obtained, and the Department of Revenue site was unreachable.
|
|
217
|
+
Minting a dated id on an inferred five-year step would be inventing a boundary the
|
|
218
|
+
statute expressly allows the director to move. When a primary lands, a dated id is
|
|
219
|
+
added and this id becomes its former-id alias under the PRD-QUALITY I-5/I-6 contract.
|
|
220
|
+
PERIOD CAVEAT: `start: 2025` is the statute edition read — K.S.A. 8-147 was amended
|
|
221
|
+
in the 2025 session — and is an UPPER BOUND on the true start of the current base,
|
|
222
|
+
not a claim about it. THE ONE SERIES BACK IS A RECORDED GAP for the same reason.
|
|
223
|
+
|
|
224
|
+
# =========================================================================
|
|
225
|
+
# PERSONALIZED — statutory caps, and the one Kansas plate that may lawfully be
|
|
226
|
+
# displayed on the front of a car.
|
|
227
|
+
# =========================================================================
|
|
228
|
+
- id: us-ks-personalized
|
|
229
|
+
class: personalized
|
|
230
|
+
categories: [car, truck, motorcycle]
|
|
231
|
+
period: { start: 2025 }
|
|
232
|
+
period_evidence: instrument-in-force-upper-bound
|
|
233
|
+
matching: strict
|
|
234
|
+
format:
|
|
235
|
+
pattern: "LLLLLLL"
|
|
236
|
+
regex: '\A[A-Z]{1,7}\z'
|
|
237
|
+
regex_statutory: '\A[A-Z0-9]{1,7}\z'
|
|
238
|
+
charset:
|
|
239
|
+
notes: >-
|
|
240
|
+
K.S.A. 8-132(d), verbatim: 'The division shall design distinctive, personalized
|
|
241
|
+
license plates to be issued that shall contain not more than seven letters or
|
|
242
|
+
numbers on truck or passenger vehicle license plates and not more than five
|
|
243
|
+
letters or numbers on motorcycle license plates, or a combination thereof, to be
|
|
244
|
+
designated by the applicant in lieu of the letters and numbers required by
|
|
245
|
+
K.S.A. 8-147 ... other than the letters required to designate the county in which
|
|
246
|
+
such vehicle is registered.' Note the personalized cap of SEVEN exceeds the
|
|
247
|
+
standard series' SIX — a Kansas vanity plate can be longer than a Kansas
|
|
248
|
+
standard plate.
|
|
249
|
+
pattern_note: "`regex` is the letters-only shape most vanity configurations take; `regex_statutory` is the true statutory frame of up to seven alphanumerics. The five-character motorcycle cap is a narrower bound not separately encoded."
|
|
250
|
+
availability_rule: "§ 8-132(d): the requested characters are issued 'Unless the letters or numbers designated by the applicant have been assigned to another vehicle' or are otherwise unavailable"
|
|
251
|
+
design:
|
|
252
|
+
note: "§ 8-132(c): 'Any license plate issued pursuant to subsection (a) or (b) may be a personalized license plate' and 'The division shall allow an applicant for a personalized license plate to personalize a license plate design established by subsection (a), (b) or (d)' — so personalization is a serial-source difference over an existing design, not a design of its own"
|
|
253
|
+
emblem: { present: true, rendered: placeholder }
|
|
254
|
+
eligibility: "any owner or lessee of a passenger vehicle, or of a truck licensed for a gross weight of not more than 20,000 pounds, applying at renewal of registration; also available for motorcycles (§ 8-132(d))"
|
|
255
|
+
fee: "$40.00 in addition to the ordinary registration fee, paid ONCE during the registration period for which the plates were issued; subsequent renewals within that period pay only the K.S.A. 8-143 registration fee (§ 8-132(d))"
|
|
256
|
+
display_privilege: "a personalized plate issued under § 8-132(c) MAY be attached to the front of the passenger vehicle or truck (§ 8-133(b)(3)) — an exception to Kansas's express prohibition on front plates"
|
|
257
|
+
region_encoding: "the county-designating letters are expressly PRESERVED on a personalized plate (§ 8-132(d)); see region_encoding on us-ks-standard for why their form is unresolved"
|
|
258
|
+
sources:
|
|
259
|
+
- "https://www.ksrevisor.gov/statutes/chapters/ch08/008_001_0032.html # K.S.A. 8-132(c): personalization of any subsection (a), (b) or (d) design; (d) the seven-character passenger/truck cap, the five-character motorcycle cap, the 20,000 lb truck eligibility limit, the $40 once-per-period fee, the availability rule, and the preservation of the county-designating letters"
|
|
260
|
+
- "https://www.ksrevisor.gov/statutes/chapters/ch08/008_001_0033.html # K.S.A. 8-133(b)(3): a personalized plate may be attached to the front of a passenger vehicle or truck"
|
|
261
|
+
notes: >-
|
|
262
|
+
PERSONALIZED PLATES. Modelled as its own series because the SERIAL SOURCE differs —
|
|
263
|
+
owner-chosen rather than division-assigned. Two Kansas oddities are worth carrying
|
|
264
|
+
forward. First, the personalized cap (seven) is LONGER than the standard arrangement
|
|
265
|
+
(six), so a length test alone cannot reject a Kansas plate. Second, a personalized
|
|
266
|
+
plate is one of only five things Kansas permits on the front of a vehicle, in a state
|
|
267
|
+
that otherwise forbids front plates outright — so front-plate presence is not
|
|
268
|
+
evidence of an out-of-state vehicle in Kansas.
|
|
269
|
+
|
|
270
|
+
# =========================================================================
|
|
271
|
+
# ANTIQUE — model-year plates, and the only other Kansas front-display licence.
|
|
272
|
+
# =========================================================================
|
|
273
|
+
- id: us-ks-antique
|
|
274
|
+
class: historic
|
|
275
|
+
categories: [car, truck]
|
|
276
|
+
period: { start: 2025 }
|
|
277
|
+
period_evidence: instrument-in-force-upper-bound
|
|
278
|
+
matching: recall-only
|
|
279
|
+
format:
|
|
280
|
+
pattern: "999999"
|
|
281
|
+
regex: '\A[A-Z0-9]{1,7}\z'
|
|
282
|
+
pattern_note: >-
|
|
283
|
+
REPRESENTATIVE SHAPE ONLY. A Kansas antique vehicle may display a MODEL-YEAR
|
|
284
|
+
plate under K.S.A. 8-172 — i.e. an actual plate from the vehicle's model year —
|
|
285
|
+
so this series has no grammar of its own at all: its serial space is the union of
|
|
286
|
+
every historical Kansas series. `matching: recall-only` is mandatory and a hit is
|
|
287
|
+
a shape hit only. K.S.A. 8-172 itself was not read in this pass (recorded gap);
|
|
288
|
+
the model-year regime is sourced only through the § 8-133(b)(2) cross-reference.
|
|
289
|
+
design:
|
|
290
|
+
note: "a model-year plate is an original historical plate, not a modern issue; no current design property applies"
|
|
291
|
+
emblem: { present: true, rendered: placeholder }
|
|
292
|
+
display_privilege: "§ 8-133(b)(2): 'a model year license plate issued for an antique vehicle, in accordance with K.S.A. 8-172 ... may be attached to the front of the antique vehicle'"
|
|
293
|
+
region_encoding: "unknown — a model-year plate carries whatever county designation its own era used"
|
|
294
|
+
sources:
|
|
295
|
+
- "https://www.ksrevisor.gov/statutes/chapters/ch08/008_001_0033.html # K.S.A. 8-133(b)(2): the model-year antique plate and its front-display permission, cross-referencing K.S.A. 8-172"
|
|
296
|
+
notes: >-
|
|
297
|
+
ANTIQUE / MODEL-YEAR PLATES. Included because of what it does to the parse layer
|
|
298
|
+
rather than for its own sake: like North Dakota's year-of-manufacture option, a
|
|
299
|
+
Kansas model-year plate means a LAWFULLY DISPLAYED, CURRENTLY REGISTERED vehicle may
|
|
300
|
+
be wearing a plate from any past decade. Any inference from plate design to
|
|
301
|
+
registration era must therefore carry an antique-regime exception, and this series
|
|
302
|
+
exists partly to make that exception visible in the data. K.S.A. 8-172's own
|
|
303
|
+
eligibility threshold and fee were not obtained (recorded gap).
|
|
304
|
+
|
|
305
|
+
# =========================================================================
|
|
306
|
+
# SPECIALTY — THE PROGRAM INDEX, per PRD-PLATES §2.5.
|
|
307
|
+
# =========================================================================
|
|
308
|
+
- id: us-ks-specialty-index
|
|
309
|
+
class: specialty
|
|
310
|
+
categories: [car, truck, motorcycle]
|
|
311
|
+
period: { start: 2025 }
|
|
312
|
+
period_evidence: instrument-in-force-upper-bound
|
|
313
|
+
matching: strict
|
|
314
|
+
format:
|
|
315
|
+
pattern: "LLL 999"
|
|
316
|
+
regex: '\A[A-Z]{3} ?\d{3}\z'
|
|
317
|
+
regex_statutory: '\A[A-Z0-9](?: ?[A-Z0-9])*\z'
|
|
318
|
+
charset: { notes: "K.S.A. 8-147(c) requires the arrangement to be 'uniform throughout each classification of registration', so a specialty classification has ITS OWN uniform arrangement, which need not be the passenger three-and-three; the arrangement per specialty class was not obtained (recorded gap)" }
|
|
319
|
+
design:
|
|
320
|
+
note: "one design per authorised program; the designs themselves are L4 scope (PRD-PLATES §2.5) and none is described here"
|
|
321
|
+
emblem: { present: true, rendered: placeholder }
|
|
322
|
+
program_index:
|
|
323
|
+
count_official: null
|
|
324
|
+
count_status: >-
|
|
325
|
+
NOT ESTABLISHED — AND THE HONEST RECORD IS THAT NO NUMBER WAS OBTAINED, not a
|
|
326
|
+
number carried over from a secondary source. The Kansas Department of Revenue's
|
|
327
|
+
vehicle pages (ksrevenue.gov) TIMED OUT on every request in this pass, via two
|
|
328
|
+
clients and both HTTP versions, so neither an official count nor an official
|
|
329
|
+
catalogue was reached. Kansas's specialty plates are created individually by
|
|
330
|
+
statute across K.S.A. Chapter 8 Article 1, so a statutory count is obtainable in
|
|
331
|
+
principle by enumerating those sections the way this file's North Dakota
|
|
332
|
+
counterpart does — that enumeration was not completed here and is the top Kansas
|
|
333
|
+
follow-up.
|
|
334
|
+
structural_note: "K.S.A. 8-147(c) opens 'Except as authorized by other provisions of law', which is the hook every individually legislated Kansas specialty plate hangs from — the general format rule yields to each specialty statute"
|
|
335
|
+
official_list_url: "https://www.ksrevenue.gov/dovindex.html"
|
|
336
|
+
official_list_status: "UNREACHABLE in this pass (connection timeout); recorded so a later run does not mistake it for unfetched-but-fine"
|
|
337
|
+
region_encoding: "county-designating letters presumably preserved as on the standard series; not separately established"
|
|
338
|
+
sources:
|
|
339
|
+
- "https://www.ksrevisor.gov/statutes/chapters/ch08/008_001_0047.html # K.S.A. 8-147(c): 'Except as authorized by other provisions of law' — the clause under which individually legislated Kansas specialty plates displace the general arrangement, and the per-classification uniformity rule"
|
|
340
|
+
- "https://www.ksrevisor.gov/statutes/chapters/ch08/008_001_0032.html # K.S.A. 8-132(c): specialty and standard designs alike may be personalized, which is what makes the specialty serial space share the personalized caps"
|
|
341
|
+
notes: >-
|
|
342
|
+
THE SPECIALTY PROGRAM INDEX — present as required by PRD-PLATES §2.5, but CARRYING NO
|
|
343
|
+
COUNT, which is the honest outcome for Kansas in this pass. Every other state in
|
|
344
|
+
group midwest-b yielded either an agency figure or a statutory enumeration; Kansas
|
|
345
|
+
yielded neither, because its revenue department's site was unreachable and the
|
|
346
|
+
statutory enumeration was not completed. Recording `count_official: null` with an
|
|
347
|
+
explicit `count_status` is better than importing Wikipedia's figure and better than
|
|
348
|
+
silence: a verifier can see precisely what is missing and precisely why. The
|
|
349
|
+
structural fact that IS sourced — that Kansas specialty plates are individually
|
|
350
|
+
legislated and displace the general format rule via 8-147(c)'s opening words — is
|
|
351
|
+
the more useful half for the parse layer anyway.
|