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,446 @@
|
|
|
1
|
+
# plates/us-wv.yml — West Virginia (PRD-PLATES gate L2, group southeast-a).
|
|
2
|
+
#
|
|
3
|
+
# THE WEST VIRGINIA FINDING: WV Code §17A-3-14 WAS GUTTED, AND THE GUTTING IS
|
|
4
|
+
# THE STORY. The section's own heading still promises "Registration plates
|
|
5
|
+
# generally; DESCRIPTION OF PLATES; issuance of special numbers and plates;
|
|
6
|
+
# registration fees; special application fees; exemptions; commissioner to
|
|
7
|
+
# promulgate forms..." — but the operative text no longer describes a plate,
|
|
8
|
+
# sets a fee, or lists a special plate. What survives is four sentences: one
|
|
9
|
+
# plate per vehicle, a registration number "in a configuration determined by
|
|
10
|
+
# the commissioner", reflectorized material, and legibility at 100 feet. A
|
|
11
|
+
# researcher reading only the heading would expect a colour table; the body
|
|
12
|
+
# has none. Recorded here because it is exactly the trap PRD-PLATES §5.3 warns
|
|
13
|
+
# about, and because it means every WEST VIRGINIA FORMAT AND COLOUR CLAIM IS
|
|
14
|
+
# NON-STATUTORY BY CONSTRUCTION.
|
|
15
|
+
#
|
|
16
|
+
# EVIDENCE GRADES — same four used across group southeast-a, defined in
|
|
17
|
+
# us-va.yml: statutory-date, official-agency-date,
|
|
18
|
+
# instrument-in-force-upper-bound, secondary-locator-unverified.
|
|
19
|
+
#
|
|
20
|
+
# WHAT WEST VIRGINIA DOES PUBLISH, AND IT IS BETTER THAN THE STATUTE: the DMV
|
|
21
|
+
# maintains an official MOTOR VEHICLE CLASSIFICATIONS page listing eleven
|
|
22
|
+
# registration classes by letter with their definitions. That page is the real
|
|
23
|
+
# spine of this file and is cited per claim below.
|
|
24
|
+
jurisdiction: us-wv
|
|
25
|
+
authority:
|
|
26
|
+
name: West Virginia Division of Motor Vehicles (DMV)
|
|
27
|
+
url: "https://transportation.wv.gov/DMV/Vehicle-Services/License-Plates/Pages/default.aspx"
|
|
28
|
+
binding: vehicle
|
|
29
|
+
statute_edition: "West Virginia Code, Chapter 17A (Motor Vehicle Administration, Registration, Certificate of Title, and Antitheft Provisions), Article 3 — as served by code.wvlegislature.gov and read 2026-08-01"
|
|
30
|
+
|
|
31
|
+
# ---------------------------------------------------------------------------
|
|
32
|
+
# artwork_risk — required per jurisdiction by PRD-PLATES §4.
|
|
33
|
+
# ---------------------------------------------------------------------------
|
|
34
|
+
artwork_risk:
|
|
35
|
+
posture: unresearched
|
|
36
|
+
basis: >-
|
|
37
|
+
HONESTLY UNRESEARCHED, NOT SILENTLY ASSUMED. West Virginia does not appear
|
|
38
|
+
in the per-state survey of subnational copyright postures — it is neither
|
|
39
|
+
listed as favourable (like Florida, California, Georgia, North Carolina,
|
|
40
|
+
New Jersey, Massachusetts) nor as adverse (like Arizona, New York,
|
|
41
|
+
Pennsylvania, Washington) nor as judicially resolved (like South
|
|
42
|
+
Carolina). Wikimedia Commons has no {{PD-WVGov}} template (HTTP 404,
|
|
43
|
+
checked 2026-08-01). No West Virginia public-records statute, Attorney
|
|
44
|
+
General opinion or agency policy bearing on copyright in state works was
|
|
45
|
+
located in this pass. Under the governing default — 17 U.S.C. §105 does
|
|
46
|
+
not reach the states, so a state work is copyrighted unless that state
|
|
47
|
+
says otherwise — West Virginia must be TREATED as default-copyrighted for
|
|
48
|
+
operational purposes, but that is an application of the default, not a
|
|
49
|
+
finding about West Virginia, and this field says so rather than dressing
|
|
50
|
+
the default up as research.
|
|
51
|
+
research_lead: >-
|
|
52
|
+
The specific instrument to pin next is West Virginia's Freedom of
|
|
53
|
+
Information Act, W. Va. Code §29B-1-1 et seq., and any state-purchasing or
|
|
54
|
+
state-publications provision in Chapter 5A (Department of Administration).
|
|
55
|
+
Neither was read. Also unresearched, and separate from copyright: West
|
|
56
|
+
Virginia's state-seal misuse law, which would bind the STATE SEAL
|
|
57
|
+
independently of any copyright answer.
|
|
58
|
+
emblem_rule: >-
|
|
59
|
+
PRD-PLATES §3's placeholder default applies with extra force here, because
|
|
60
|
+
the posture is unknown rather than merely adverse. The current base carries
|
|
61
|
+
a gold-on-dark-blue "West Virginia" bar and, on the 2023 design, a STATE
|
|
62
|
+
OUTLINE used as the serial separator — a state-shape graphic sitting
|
|
63
|
+
inside the serial field. Render `emblem: {present: true, rendered:
|
|
64
|
+
placeholder}` and do not approximate the outline until the posture is
|
|
65
|
+
resolved.
|
|
66
|
+
photograph_caution: "Commons photographs of West Virginia plates carry the photographer's licence on the photograph, not a licence to the design. Our renders are generated, never derived from a photograph, so those obligations never attach."
|
|
67
|
+
sources:
|
|
68
|
+
- "https://en.wikipedia.org/wiki/Copyright_status_of_works_by_subnational_governments_of_the_United_States # LOCATOR: the per-state survey in which West Virginia does not appear at all — the negative result"
|
|
69
|
+
- "https://commons.wikimedia.org/wiki/Template:PD-WVGov # HTTP 404 — no West Virginia public-domain tag exists on Commons (checked 2026-08-01)"
|
|
70
|
+
- "https://commons.wikimedia.org/wiki/Commons:Copyright_rules_by_territory/United_States # the governing default: 'Other states: copyrighted'"
|
|
71
|
+
|
|
72
|
+
us_standards:
|
|
73
|
+
no_federal_mandate: true
|
|
74
|
+
chain: "SAE J686 -> AAMVA License Plate Standard Edition 3 (September 2025) -> voluntary state adoption; recommendations phrased in the declarative present, read as RECOMMENDED PRACTICE."
|
|
75
|
+
aamva_edition_3:
|
|
76
|
+
dimensions_delegated: "AAMVA §3.1 delegates dimensions and bolt holes to SAE J686; J686's text is paywalled and was NOT obtained. No J686 dimension is quoted."
|
|
77
|
+
retroreflectivity: "AAMVA §3.3: readable in daylight and at night from at least 75 feet; materials per ASTM D4956-19 and ISO 7591:1982 clause 3."
|
|
78
|
+
legibility_comparison: >-
|
|
79
|
+
WEST VIRGINIA LEGISLATES A LONGER SIGHT LINE THAN AAMVA RECOMMENDS.
|
|
80
|
+
§17A-3-14(b)(2) requires registration numbers "plainly readable from 100
|
|
81
|
+
feet during daylight"; AAMVA §3.3 asks for readability "from distances of
|
|
82
|
+
at least 75 feet" in daylight AND at night. The two are not in conflict —
|
|
83
|
+
AAMVA's is a floor and covers night as well — but a state statute setting
|
|
84
|
+
a 100-foot daylight bar is a citable, comparable number, and North
|
|
85
|
+
Carolina's § 20-63(c) sets exactly the same one. Two states of this group
|
|
86
|
+
independently legislate 100 feet.
|
|
87
|
+
replacement_cycle: "AAMVA §1.1 recommends a cycle not to exceed 7 to 10 years. WEST VIRGINIA'S CODE SETS NO CYCLE; the DMV instead offers free replacement of a worn, faded or illegible plate at renewal ($10.50 at any other time) — replacement on CONDITION rather than on a CLOCK, which is a third model alongside Florida/South Carolina's legislated 10 years and Virginia's silence."
|
|
88
|
+
source: "https://www.aamva.org/getmedia/646bcc8a-219b-47d8-b5cd-726240473163/License-Plate-Standard-Edition-3_September-2025-Update.pdf"
|
|
89
|
+
folklore_caution: "The '1956 AMA standardization agreement' remains COMMONLY REPEATED AND NOT PRIMARY-SOURCED; see the fuller note in us-va.yml, including the ALPCA magazine citation that has since been attached to it and that this pass could not obtain. West Virginia's plate dimensions are not in the WV Code, so this file makes no West Virginia dimension claim."
|
|
90
|
+
|
|
91
|
+
display_rules:
|
|
92
|
+
default: "ONE plate. §17A-3-14(a): 'The division, upon registering a vehicle, shall issue to the owner ONE registration plate with a registration number consisting of a combination of letters, numerals, symbols, or characters in a configuration determined by the commissioner.' West Virginia is therefore a single-plate state as a matter of statute, not of practice."
|
|
93
|
+
position: "rear (the conventional single-plate position). §17A-3-15 governs display and was fetched but its operative text was not extracted in this pass — the POSITION claim is therefore recorded as convention, not as sourced (recorded gap)."
|
|
94
|
+
legibility: "§17A-3-14(b)(2): registration numbers 'shall be plainly readable from 100 feet during daylight'"
|
|
95
|
+
material: "§17A-3-14(b)(1): 'Plates must incorporate reflectorized material.'"
|
|
96
|
+
commissioner_powers: "§17A-3-14(b)(3): the commissioner 'may assign any additional feature to facilitate reciprocal agreements, facilitate interstate travel, promote highway safety, or promote the efficient operation of the division' — an open-ended design power that is the legal basis for anything on a West Virginia plate that the Code does not mention, which is everything"
|
|
97
|
+
suspension: "§17A-3-14(c): the commissioner may suspend the registration of any owner who displays a damaged or illegible plate or otherwise fails to comply with §17A-3-19"
|
|
98
|
+
sources:
|
|
99
|
+
- "https://code.wvlegislature.gov/17A-3-14/ # §17A-3-14(a) one plate and the commissioner-determined configuration; (b)(1) reflectorized material; (b)(2) 100-foot daylight legibility; (b)(3) the additional-feature power; (c) suspension for a damaged or illegible plate"
|
|
100
|
+
- "https://transportation.wv.gov/DMV/Vehicle-Services/License-Plates/Pages/default.aspx # DMV: a worn, faded or otherwise illegible plate is replaced free at renewal, $10.50 at any other time"
|
|
101
|
+
|
|
102
|
+
# ---------------------------------------------------------------------------
|
|
103
|
+
# WEST VIRGINIA'S REGISTRATION CLASS LETTERS — the official taxonomy, from the
|
|
104
|
+
# DMV's own Motor Vehicle Classifications page. This is the spine of the file:
|
|
105
|
+
# WV organises plates by class letter, and the class letter is how the DMV
|
|
106
|
+
# itself talks about them ("plates available for Class A motor vehicles").
|
|
107
|
+
# ---------------------------------------------------------------------------
|
|
108
|
+
registration_classes:
|
|
109
|
+
source: "https://transportation.wv.gov/DMV/Vehicle-Services/Pages/Classifications.aspx"
|
|
110
|
+
A: "Cars and Trucks — passenger cars and trucks with a gross weight of 10,000 pounds or less"
|
|
111
|
+
B: "Trucks — trucks, truck tractors or road tractors with a gross weight of 10,001 pounds or more"
|
|
112
|
+
C: "Trailers and Semi Trailers — all trailers and semitrailers except house trailers, trailers or semitrailers designed to be drawn by Class A motor vehicles, and having a gross weight of more than 2,000 pounds"
|
|
113
|
+
G: "Motorcycles (3 wheels or less) — every motorcycle including motor-driven cycles and mopeds, having a saddle and no more than three wheels"
|
|
114
|
+
H: "Buses — every motor vehicle designed for carrying more than seven passengers or transportation of persons for compensation, excluding taxicabs"
|
|
115
|
+
J: "Taxi Cabs — motor vehicles used for the transportation of persons for compensation"
|
|
116
|
+
M: "Mobile Equipment — self-propelled vehicles not designed or used primarily for transportation over the highway (farm equipment, implements of husbandry, well-drillers, cranes, wood-sawing equipment)"
|
|
117
|
+
R: "Travel Trailers — any vehicle designed to provide temporary living quarters for recreation, travel or camping use"
|
|
118
|
+
T: "Trailers — trailers, boat trailers or semitrailers designed to be drawn by Class A vehicles with a gross weight of less than 2,000 pounds"
|
|
119
|
+
V: "Antique Motor Vehicles — at least 25 years old"
|
|
120
|
+
X: "Farm Trucks — used exclusively for the transportation of farm products and supplies by a farmer"
|
|
121
|
+
note: >-
|
|
122
|
+
Eleven classes, and note the pair that a naive trailer model would collapse:
|
|
123
|
+
CLASS C and CLASS T are both trailers, split at 2,000 pounds and at whether
|
|
124
|
+
a Class A vehicle tows them. A dataset with one `trailer` class per state
|
|
125
|
+
cannot express that; ours records it here and models the common case.
|
|
126
|
+
|
|
127
|
+
series:
|
|
128
|
+
|
|
129
|
+
# =========================================================================
|
|
130
|
+
# CURRENT STANDARD ISSUE — Class A.
|
|
131
|
+
# =========================================================================
|
|
132
|
+
- id: us-wv-standard-2023
|
|
133
|
+
class: standard
|
|
134
|
+
categories: [car, van, truck]
|
|
135
|
+
period: { start: 2023 }
|
|
136
|
+
period_evidence: secondary-locator-unverified
|
|
137
|
+
matching: strict
|
|
138
|
+
format:
|
|
139
|
+
pattern: "999 999L"
|
|
140
|
+
regex: '\A[0-9OND]\d{2} ?\d{3}[A-Z]\z'
|
|
141
|
+
regex_strict: '\A[1-9OND]\d{2} ?\d{3}[A-Z]\z'
|
|
142
|
+
format_evidence: secondary-locator-unverified
|
|
143
|
+
charset:
|
|
144
|
+
notes: >-
|
|
145
|
+
THE FIRST CHARACTER IS NOT PART OF THE SERIAL IN THE ORDINARY SENSE —
|
|
146
|
+
IT IS THE MONTH OF EXPIRATION. West Virginia has encoded the
|
|
147
|
+
expiration month in the leading character of its plate number since
|
|
148
|
+
the 1970-75 base, and the reported system is: 1 through 9 = January
|
|
149
|
+
through September, O = October, N = November, D = December. That is
|
|
150
|
+
why `regex_strict` excludes a leading 0 (there is no month zero) and
|
|
151
|
+
why the loose `regex` tolerates it: the pattern DSL has only 9 and L,
|
|
152
|
+
so a position that accepts nine digits and three specific letters
|
|
153
|
+
cannot be spelled in `pattern` and must be carried by the twins.
|
|
154
|
+
NOTE THE LOOKALIKE HAZARD THIS CREATES: 'O' as a month code sits in
|
|
155
|
+
the same position a digit otherwise occupies, so O-versus-0 is not a
|
|
156
|
+
cosmetic OCR problem in West Virginia, it is a semantic one — "O12
|
|
157
|
+
345A" expires in October and "012 345A" is not a valid plate at all.
|
|
158
|
+
progression: "not published; the series letter and the block allocation for this base were not obtained (recorded gap)"
|
|
159
|
+
separator_note: "the gap between the two three-character groups is spelled as an optional space because the plate prints a gap there; on this base the physical separator is reported to be a STATE-OUTLINE graphic rather than a printed glyph, which under PRD-PLATES §2.6 is a design element (design.emblem), never a serial character and never something a consumer may strip as punctuation"
|
|
160
|
+
design:
|
|
161
|
+
plate: { w: 12, h: 6, unit: in, dimension_evidence: convention-not-sourced }
|
|
162
|
+
plate_dimension_note: "no West Virginia dimension is sourced — §17A-3-14 states none. 12 x 6 in is the North American convention (AAMVA -> SAE J686, voluntary), recorded as convention and not as a West Virginia claim."
|
|
163
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
164
|
+
foreground: "#1F3160"
|
|
165
|
+
colour_note: "NO COLOUR IS IN THE WV CODE. §17A-3-14(b) requires only reflectorized material and 100-foot daylight legibility. The reflective-white ground with an embossed dark-blue serial, a dark blue bar at the top carrying 'West Virginia' in gold, and a thin gold stripe below it, are all `hex_basis: observed` from a locator description. Treat both hexes as approximations."
|
|
166
|
+
legend_top: "West Virginia"
|
|
167
|
+
legend_bottom: null
|
|
168
|
+
separator_graphic: { present: true, description: "state outline used as the separator between the serial groups", rendered: placeholder }
|
|
169
|
+
emblem: { present: true, rendered: placeholder }
|
|
170
|
+
band: { side: top, color: "#1F3160", content: "West Virginia in gold" }
|
|
171
|
+
rear_differs: false
|
|
172
|
+
region_encoding: none
|
|
173
|
+
serial_encoding:
|
|
174
|
+
kind: expiration-month
|
|
175
|
+
mechanism: "the FIRST character of the plate number encodes the month of expiration: 1-9 = January-September, O = October, N = November, D = December"
|
|
176
|
+
evidence: secondary-locator-unverified
|
|
177
|
+
note: >-
|
|
178
|
+
THIS IS THE MOST VALUABLE FACT IN THE WEST VIRGINIA FILE AND THE ONE
|
|
179
|
+
MOST WORTH VERIFYING. It is a TIME encoding in the serial — the
|
|
180
|
+
temporal analogue of Germany's geographic prefix and of the Dutch
|
|
181
|
+
sidecode's era inference — and it is reported to have run continuously
|
|
182
|
+
from the 1970-75 base to today, across at least six base designs. If
|
|
183
|
+
true, a West Virginia plate string alone yields the registration's
|
|
184
|
+
expiry month, which is a parse-API capability no competitor offers for
|
|
185
|
+
any US state. It is recorded as `secondary-locator-unverified` because
|
|
186
|
+
the only source located is an encyclopedia table; the WV DMV does not
|
|
187
|
+
publish it and §17A-3-14 does not mention it. VERIFY BEFORE SHIPPING
|
|
188
|
+
ANY DECODE THAT DEPENDS ON IT.
|
|
189
|
+
sources:
|
|
190
|
+
- "https://code.wvlegislature.gov/17A-3-14/ # §17A-3-14(a): one plate, registration number 'consisting of a combination of letters, numerals, symbols, or characters in a configuration determined by the commissioner' — the statutory basis for there being no statutory format; (b)(1) reflectorized; (b)(2) 100-foot legibility"
|
|
191
|
+
- "https://transportation.wv.gov/DMV/Vehicle-Services/Pages/Classifications.aspx # WV DMV: Class A = passenger cars and trucks of 10,000 lb or less, the class this base serves"
|
|
192
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_West_Virginia # LOCATOR ONLY (PRD-PLATES §4): the July 2023 start, the state-outline separator, the gold-on-blue top bar, the serial arrangement, and the month-code system reported as continuing 'today'. None asserted as sourced."
|
|
193
|
+
notes: >-
|
|
194
|
+
WEST VIRGINIA CURRENT STANDARD ISSUE (CLASS A). Everything structural
|
|
195
|
+
here — one plate, commissioner-set configuration, reflectorization,
|
|
196
|
+
100-foot legibility — is statutory and cited. Everything visual and every
|
|
197
|
+
date is locator-grade and marked. The month-code encoding is carried in
|
|
198
|
+
its own `serial_encoding` block rather than buried in a note, because it
|
|
199
|
+
is the one West Virginia fact a parse API would actually monetise, and
|
|
200
|
+
because putting it somewhere prominent is what will get it verified. The
|
|
201
|
+
series id is dated 2023 to the reported base change; if that date falls,
|
|
202
|
+
the id keeps its append-only guarantee and gains a former-id alias under
|
|
203
|
+
the PRD-QUALITY I-5/I-6 contract.
|
|
204
|
+
|
|
205
|
+
# =========================================================================
|
|
206
|
+
# ONE SERIES BACK.
|
|
207
|
+
# =========================================================================
|
|
208
|
+
- id: us-wv-standard-wildwonderful-2006
|
|
209
|
+
class: standard
|
|
210
|
+
categories: [car, van, truck]
|
|
211
|
+
period: { start: 2006, end: 2023 }
|
|
212
|
+
period_evidence: secondary-locator-unverified
|
|
213
|
+
matching: strict
|
|
214
|
+
format:
|
|
215
|
+
pattern: "9LL 999"
|
|
216
|
+
regex: '\A[0-9OND](?:[A-Z] ?\d{4}|[A-Z]{2} ?\d{3}|\d[A-Z] ?\d{3})\z'
|
|
217
|
+
regex_strict: '\A[1-9OND](?:[A-Z] ?\d{4}|[A-Z]{2} ?\d{3}|\d[A-Z] ?\d{3})\z'
|
|
218
|
+
format_evidence: secondary-locator-unverified
|
|
219
|
+
charset:
|
|
220
|
+
notes: >-
|
|
221
|
+
THREE ARRANGEMENTS, ONE BASE — and the regex is their union, which is
|
|
222
|
+
still `strict` because the union is exactly what West Virginia issued
|
|
223
|
+
on this base and no wider (PRD-PLATES §2.7: narrower or equal is
|
|
224
|
+
strict; only a DELIBERATELY over-broad regex is recall-only). The
|
|
225
|
+
three reported arrangements, after the leading month character: one
|
|
226
|
+
letter plus four digits; two letters plus three digits; one digit,
|
|
227
|
+
one letter, three digits. The third was reportedly introduced in
|
|
228
|
+
October 2015 as the two-letter series began to exhaust — a state
|
|
229
|
+
adding a serial SHAPE mid-base rather than changing the base, which
|
|
230
|
+
is precisely why `format` cannot be assumed constant across a design
|
|
231
|
+
period.
|
|
232
|
+
progression: "reported: series reset to A for all months from the January 1995 base, two-letter series progressing in standard order (AA-AZ, BA-BZ ...), with series S and SA-SZ reserved for optional Scenic plates"
|
|
233
|
+
design:
|
|
234
|
+
plate: { w: 12, h: 6, unit: in, dimension_evidence: convention-not-sourced }
|
|
235
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
236
|
+
foreground: "#1F3160"
|
|
237
|
+
legend_top: "West Virginia"
|
|
238
|
+
legend_bottom: "Wild, Wonderful"
|
|
239
|
+
legend_note: "dark blue bar at the top carrying 'West Virginia' in gold with a thin gold stripe beneath; 'Wild, Wonderful' at the bottom. The immediately preceding variant (December 2000 - early 2006) additionally carried 'www.callwva.com' between the state name and the serial, cutting the gold stripe — a URL on a state plate, and a good reminder that plate designs date themselves in ways serial ranges do not."
|
|
240
|
+
emblem: { present: true, rendered: placeholder }
|
|
241
|
+
rear_differs: false
|
|
242
|
+
region_encoding: none
|
|
243
|
+
serial_encoding:
|
|
244
|
+
kind: expiration-month
|
|
245
|
+
mechanism: "same leading-character month code as us-wv-standard-2023: 1-9 = January-September, O/N/D = October/November/December"
|
|
246
|
+
evidence: secondary-locator-unverified
|
|
247
|
+
sources:
|
|
248
|
+
- "https://code.wvlegislature.gov/17A-3-14/ # the same statutory frame governed this base; West Virginia's plate law did not change at the boundary"
|
|
249
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_West_Virginia # LOCATOR ONLY: the early-2006 to July-2023 span, 'Wild, Wonderful', the three serial arrangements, the October 2015 introduction of the number-letter series, and the S/SA-SZ Scenic reservation"
|
|
250
|
+
notes: >-
|
|
251
|
+
THE PREVIOUS WEST VIRGINIA STANDARD BASE. It earns its place in an L2
|
|
252
|
+
pass for one reason beyond being the predecessor: it demonstrates, within
|
|
253
|
+
a single unchanged design, that a US state will ADD A SERIAL ARRANGEMENT
|
|
254
|
+
mid-base when a block exhausts. Any consumer that treats "one base = one
|
|
255
|
+
regex" will silently reject West Virginia plates issued after October
|
|
256
|
+
2015 on a base first issued in 2006. The 2023 overlap year is the honest
|
|
257
|
+
shape of a rollout, with old stock issuing on.
|
|
258
|
+
|
|
259
|
+
# =========================================================================
|
|
260
|
+
# CORE CLASSES. West Virginia serializes by CLASS LETTER; the class list is
|
|
261
|
+
# official, the serial arrangements are not published. Each is recall-only.
|
|
262
|
+
# =========================================================================
|
|
263
|
+
- id: us-wv-motorcycle
|
|
264
|
+
class: motorcycle
|
|
265
|
+
categories: [motorcycle, moped]
|
|
266
|
+
period: { start: 2026 }
|
|
267
|
+
period_evidence: instrument-in-force-upper-bound
|
|
268
|
+
matching: recall-only
|
|
269
|
+
format:
|
|
270
|
+
pattern: "LLLLLLL"
|
|
271
|
+
regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,6}\z'
|
|
272
|
+
charset: { notes: "deliberately over-broad, hence recall-only. West Virginia publishes no Class G serial specification and §17A-3-14 imposes no alphabet or length — the seven-character bound is a DATASET-CHOSEN recall bound following the North American convention, not a legal claim." }
|
|
273
|
+
design:
|
|
274
|
+
plate: { unit: in, dimension_note: "reduced-size motorcycle plate; no West Virginia dimension is sourced" }
|
|
275
|
+
background: { finish: retroreflective }
|
|
276
|
+
emblem: { present: true, rendered: placeholder }
|
|
277
|
+
eligibility: "CLASS G: 'Every motorcycle including; motor driven cycles mopeds, having saddle, and no more than three wheels' (WV DMV Motor Vehicle Classifications)"
|
|
278
|
+
region_encoding: none
|
|
279
|
+
sources:
|
|
280
|
+
- "https://transportation.wv.gov/DMV/Vehicle-Services/Pages/Classifications.aspx # WV DMV: Class G definition, including motor-driven cycles and mopeds and the three-wheel bound"
|
|
281
|
+
- "https://code.wvlegislature.gov/17A-3-14/ # §17A-3-14(a): one plate per registered vehicle, configuration determined by the commissioner — the same rule applies to Class G"
|
|
282
|
+
notes: >-
|
|
283
|
+
WEST VIRGINIA CLASS G. Worth noting what West Virginia puts in ONE class
|
|
284
|
+
that other jurisdictions split across three: motorcycles, motor-driven
|
|
285
|
+
cycles and MOPEDS all register as Class G, bounded by "no more than three
|
|
286
|
+
wheels" rather than by engine displacement. The Netherlands gives mopeds
|
|
287
|
+
their own sidecodes and their own plate colour; West Virginia does not
|
|
288
|
+
distinguish them at all. Our `categories` records both kinds against the
|
|
289
|
+
one series, which is the honest mapping.
|
|
290
|
+
|
|
291
|
+
- id: us-wv-trailer
|
|
292
|
+
class: trailer
|
|
293
|
+
categories: [trailer]
|
|
294
|
+
period: { start: 2026 }
|
|
295
|
+
period_evidence: instrument-in-force-upper-bound
|
|
296
|
+
matching: recall-only
|
|
297
|
+
format:
|
|
298
|
+
pattern: "LLLLLLL"
|
|
299
|
+
regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,6}\z'
|
|
300
|
+
charset: { notes: "recall-only; no Class C or Class T serial specification is published" }
|
|
301
|
+
design:
|
|
302
|
+
plate: { unit: in }
|
|
303
|
+
background: { finish: retroreflective }
|
|
304
|
+
eligibility: "TWO CLASSES, SPLIT AT 2,000 POUNDS. Class C: all trailers and semitrailers EXCEPT house trailers and trailers/semitrailers designed to be drawn by Class A motor vehicles, having a gross weight of more than 2,000 lb. Class T: trailers, boat trailers or semitrailers designed to be drawn by Class A vehicles with a gross weight of LESS than 2,000 lb. Class R is a third, separate class for travel trailers (temporary living quarters). (WV DMV Motor Vehicle Classifications)"
|
|
305
|
+
region_encoding: none
|
|
306
|
+
sources:
|
|
307
|
+
- "https://transportation.wv.gov/DMV/Vehicle-Services/Pages/Classifications.aspx # WV DMV: the Class C / Class T / Class R trailer split and its 2,000-pound and tow-vehicle criteria"
|
|
308
|
+
notes: >-
|
|
309
|
+
WEST VIRGINIA TRAILERS, MODELLED AS ONE SERIES OVER THREE OFFICIAL
|
|
310
|
+
CLASSES — and flagged as a simplification rather than pretending the
|
|
311
|
+
state agrees with us. West Virginia splits trailers three ways (C, T, R)
|
|
312
|
+
on weight, tow vehicle and habitability. Whether each carries a distinct
|
|
313
|
+
serial series is exactly the fact not published, so collapsing them is
|
|
314
|
+
the conservative choice: one recall-only series, the official split
|
|
315
|
+
recorded verbatim, and the question flagged for the verifier.
|
|
316
|
+
|
|
317
|
+
- id: us-wv-antique
|
|
318
|
+
class: historic
|
|
319
|
+
categories: [car, van, truck, motorcycle]
|
|
320
|
+
period: { start: 2026 }
|
|
321
|
+
period_evidence: instrument-in-force-upper-bound
|
|
322
|
+
matching: recall-only
|
|
323
|
+
format:
|
|
324
|
+
pattern: "LLLLLLL"
|
|
325
|
+
regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,6}\z'
|
|
326
|
+
charset: { notes: "recall-only; no Class V serial specification is published" }
|
|
327
|
+
design:
|
|
328
|
+
plate: { unit: in }
|
|
329
|
+
background: { finish: retroreflective }
|
|
330
|
+
eligibility: "CLASS V: 'Antique motor vehicles are at least 25 years old' (WV DMV Motor Vehicle Classifications) — a ROLLING threshold"
|
|
331
|
+
region_encoding: none
|
|
332
|
+
sources:
|
|
333
|
+
- "https://transportation.wv.gov/DMV/Vehicle-Services/Pages/Classifications.aspx # WV DMV: Class V, antique motor vehicles at least 25 years old"
|
|
334
|
+
notes: >-
|
|
335
|
+
WEST VIRGINIA CLASS V, INCLUDED BECAUSE IT SHARPENS A CROSS-STATE
|
|
336
|
+
COMPARISON THE DATASET IS ALREADY MAKING. Florida runs TWO historic
|
|
337
|
+
regimes: Horseless Carriage on a FIXED cutoff (model year 1945 or
|
|
338
|
+
earlier, which never moves) and Antique on a ROLLING 30 years. West
|
|
339
|
+
Virginia runs one, rolling, at 25 years — the shortest rolling threshold
|
|
340
|
+
in this group. Rolling thresholds silently change eligibility every year
|
|
341
|
+
and are the ones that need re-auditing; fixed ones never do. Recording
|
|
342
|
+
the threshold TYPE, not just the number, is what makes that auditable.
|
|
343
|
+
|
|
344
|
+
- id: us-wv-government-official
|
|
345
|
+
class: government
|
|
346
|
+
categories: [car, van, truck, bus]
|
|
347
|
+
period: { start: 2026 }
|
|
348
|
+
period_evidence: instrument-in-force-upper-bound
|
|
349
|
+
matching: recall-only
|
|
350
|
+
format:
|
|
351
|
+
pattern: "LLLLLLL"
|
|
352
|
+
regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,6}\z'
|
|
353
|
+
charset: { notes: "recall-only; the special plates for government officials are authorised by a dedicated Code section whose text was not extracted in this pass" }
|
|
354
|
+
design:
|
|
355
|
+
plate: { unit: in }
|
|
356
|
+
background: { finish: retroreflective }
|
|
357
|
+
emblem: { present: true, rendered: placeholder }
|
|
358
|
+
region_encoding: none
|
|
359
|
+
sources:
|
|
360
|
+
- "https://code.wvlegislature.gov/17A-3-14/ # the section navigation on this page identifies the adjacent section by its official title: '§17A-3-14a. Special registration plates for government officials'"
|
|
361
|
+
notes: >-
|
|
362
|
+
WEST VIRGINIA GOVERNMENT-OFFICIAL PLATES. THE CITATION HERE IS A SECTION
|
|
363
|
+
TITLE, NOT A SECTION TEXT, AND THAT IS STATED RATHER THAN GLOSSED:
|
|
364
|
+
§17A-3-14a is named "Special registration plates for government
|
|
365
|
+
officials" in the Code's own navigation, which sources the EXISTENCE of a
|
|
366
|
+
distinct government-official series and nothing else. Eligibility, design
|
|
367
|
+
and serial arrangement are all recorded gaps. This entry exists so that a
|
|
368
|
+
consumer knows the series is real and a verifier knows exactly which
|
|
369
|
+
section to open; it deliberately claims no more than the title supports.
|
|
370
|
+
|
|
371
|
+
# =========================================================================
|
|
372
|
+
# PERSONALIZED + SPECIALTY INDEX.
|
|
373
|
+
# =========================================================================
|
|
374
|
+
- id: us-wv-personalized
|
|
375
|
+
class: personalized
|
|
376
|
+
categories: [car, van, truck, motorcycle, trailer]
|
|
377
|
+
period: { start: 2026 }
|
|
378
|
+
period_evidence: instrument-in-force-upper-bound
|
|
379
|
+
matching: recall-only
|
|
380
|
+
format:
|
|
381
|
+
pattern: "LLLLLLL"
|
|
382
|
+
regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,6}\z'
|
|
383
|
+
charset: { notes: "recall-only; West Virginia's personalized character limit and permitted character set were not obtained (recorded gap). Given that Virginia officially permits an ampersand and North Carolina officially permits ? & $ @, West Virginia's permitted set should be checked for non-alphanumeric glyphs before any strict regex is written." }
|
|
384
|
+
design:
|
|
385
|
+
plate: { unit: in }
|
|
386
|
+
background: { finish: retroreflective }
|
|
387
|
+
region_encoding: none
|
|
388
|
+
sources:
|
|
389
|
+
- "https://transportation.wv.gov/DMV/Vehicle-Services/License-Plates/Pages/Ordering-Info.aspx # WV DMV 'Personalized Plate Ordering Information': ordering, fees and the personalized plate availability search"
|
|
390
|
+
- "https://code.wvlegislature.gov/17A-3-14/ # §17A-3-14(a): the commissioner determines the configuration, which is the authority a personalized combination is issued under"
|
|
391
|
+
notes: >-
|
|
392
|
+
WEST VIRGINIA PERSONALIZED. Modelled as its own series because the serial
|
|
393
|
+
source differs — owner-chosen rather than division-assigned. Kept
|
|
394
|
+
deliberately thin: the ordering page was located but its character rules
|
|
395
|
+
were not extracted, and inventing a limit would be worse than recording
|
|
396
|
+
the gap. The cross-state lead is stated in `charset.notes` because two of
|
|
397
|
+
the five states in this group turned out to permit glyphs inside a
|
|
398
|
+
serial, and the right move is to check the other three rather than
|
|
399
|
+
assume.
|
|
400
|
+
|
|
401
|
+
- id: us-wv-specialty-index
|
|
402
|
+
class: specialty
|
|
403
|
+
categories: [car, van, truck, motorcycle, trailer]
|
|
404
|
+
period: { start: 2026 }
|
|
405
|
+
period_evidence: instrument-in-force-upper-bound
|
|
406
|
+
matching: recall-only
|
|
407
|
+
format:
|
|
408
|
+
pattern: "LLLLLLL"
|
|
409
|
+
regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,6}\z'
|
|
410
|
+
charset: { notes: "specialty serials are not uniform across programmes; the index makes no arrangement claim and is deliberately recall-only" }
|
|
411
|
+
design:
|
|
412
|
+
plate: { unit: in }
|
|
413
|
+
background: { finish: retroreflective }
|
|
414
|
+
note: "one design per authorised programme; the designs themselves are L4 scope (PRD-PLATES §2.5) and none is described here"
|
|
415
|
+
emblem: { present: true, rendered: placeholder }
|
|
416
|
+
program_index:
|
|
417
|
+
count_official: null
|
|
418
|
+
count_status: >-
|
|
419
|
+
NO OFFICIAL COUNT IS PUBLISHED, AND NONE IS INVENTED HERE. The WV DMV
|
|
420
|
+
presents its "License Plate Collection (Special Plates)" as four
|
|
421
|
+
picture galleries with no totals. A naive count of plate images on the
|
|
422
|
+
four category pages gives Associations & Organizations 42, Colleges &
|
|
423
|
+
Universities 23, General Interest 35, Military 53 — but those counts
|
|
424
|
+
include page chrome and navigation images and are NOT asserted as a
|
|
425
|
+
programme count. This is the weakest specialty index in group
|
|
426
|
+
southeast-a and is recorded as such rather than padded: contrast
|
|
427
|
+
Virginia's exactly reconciled 340.
|
|
428
|
+
official_categories: ["Associations & Organizations", "Colleges & Universities", "General Interest", "Military"]
|
|
429
|
+
official_list_url: "https://transportation.wv.gov/DMV/Vehicle-Services/License-Plates/Special-Plates/Pages/default.aspx"
|
|
430
|
+
official_poster_pdf: "https://transportation.wv.gov/DMV/DMVFormSearch/PLATE-POSTERS.pdf"
|
|
431
|
+
scope_note: "the DMV states that the four galleries show 'plates available for CLASS A motor vehicles' — i.e. the specialty programme is scoped to passenger cars and trucks of 10,000 lb or less, which is a scoping fact most state specialty indexes do not make explicit"
|
|
432
|
+
eligibility_note: "the DMV states that some plates have specific qualifications and that many MILITARY plates require certification from the West Virginia Department of Veterans Assistance — the same proof-before-purchase pattern Florida calls a 'special requirement' subtype"
|
|
433
|
+
per_plate_application_forms: "individual programmes are ordered on numbered DMV-54 forms (observed examples: DMV-54_hoopshospital.pdf, DMV-54_PIA_WV-American-Legion-Riders.pdf), so a per-programme enumeration is mechanically derivable from the DMV form index — the right route to a real count in an L4 pass"
|
|
434
|
+
region_encoding: none
|
|
435
|
+
sources:
|
|
436
|
+
- "https://transportation.wv.gov/DMV/Vehicle-Services/License-Plates/Special-Plates/Pages/default.aspx # WV DMV: the four categories, the Class A scoping, the qualification/certification requirements, the Department of Veterans Assistance rule, and the plate-collection posters"
|
|
437
|
+
- "https://transportation.wv.gov/DMV/DMVFormSearch/PLATE-POSTERS.pdf # the official plate-collection posters (linked, not parsed in this pass)"
|
|
438
|
+
notes: >-
|
|
439
|
+
THE WEST VIRGINIA SPECIALTY PROGRAM INDEX — and the honest report is that
|
|
440
|
+
it is thin. West Virginia publishes galleries, not a list, and no count.
|
|
441
|
+
Rather than borrow a number from an enthusiast site, this entry records
|
|
442
|
+
the four official categories, the Class A scoping, the certification
|
|
443
|
+
rule, and the ONE mechanical route to a real count that was actually
|
|
444
|
+
observed: each programme has its own numbered DMV-54 application form, so
|
|
445
|
+
enumerating the DMV form index yields a programme list from a first-party
|
|
446
|
+
source. That is the L4 instruction for this state.
|