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,394 @@
|
|
|
1
|
+
# plates/us-nh.yml — New Hampshire (PRD-PLATES gate L2, northeast group).
|
|
2
|
+
#
|
|
3
|
+
# NEW HAMPSHIRE'S STATUTE DOES ONE THING AND DOES IT ABSOLUTELY: it mandates the
|
|
4
|
+
# SLOGAN by name and delegates everything else. RSA 261:75(II), verbatim: "The
|
|
5
|
+
# director may make special rules relative to the number of plates, the location
|
|
6
|
+
# of said plate or plates on the vehicle, and the material and design thereof,
|
|
7
|
+
# provided, however, that number plates for passenger vehicles shall have the
|
|
8
|
+
# state motto 'LIVE FREE OR DIE' written thereon." Number of plates: delegated.
|
|
9
|
+
# Location: delegated. Material: delegated. Design: delegated. Four words of
|
|
10
|
+
# motto: mandatory. New Hampshire is the cleanest example in this dataset of a
|
|
11
|
+
# legislature legislating IDENTITY and outsourcing ENGINEERING — the exact
|
|
12
|
+
# inverse of Maine two states away, whose legislature specifies character
|
|
13
|
+
# heights and a pine tree and delegates the numbering system.
|
|
14
|
+
#
|
|
15
|
+
# (The motto mandate is also the reason New Hampshire has a US Supreme Court
|
|
16
|
+
# case about a licence plate. It is deliberately NOT cited here: Wooley v.
|
|
17
|
+
# Maynard (1977) is a compelled-speech decision about covering the motto, not a
|
|
18
|
+
# plate-specification or copyright authority, and the FL pilot's discipline of
|
|
19
|
+
# keeping First Amendment plate cases out of the IP analysis — it excluded
|
|
20
|
+
# Walker v. Texas Div., SCV for the same reason — applies unchanged.)
|
|
21
|
+
#
|
|
22
|
+
# SPECIALTY MODEL: New Hampshire does not run a large specialty catalogue. It
|
|
23
|
+
# runs ONE plate with a 3-inch square hole in it. See us-nh-specialty-index —
|
|
24
|
+
# it is the most structurally interesting specialty program in the group.
|
|
25
|
+
jurisdiction: us-nh
|
|
26
|
+
authority:
|
|
27
|
+
name: New Hampshire Division of Motor Vehicles, a division of the New Hampshire Department of Safety
|
|
28
|
+
url: "https://www.dmv.nh.gov/"
|
|
29
|
+
binding: vehicle
|
|
30
|
+
statute_edition: >-
|
|
31
|
+
New Hampshire Revised Statutes Annotated, Title XXI Chapter 261 (Certificates
|
|
32
|
+
of Title and Registration of Vehicles), as served by the NH General Court —
|
|
33
|
+
RSA 261:75 read this pass, source line ending "2002, 165:6, eff. July 1, 2002".
|
|
34
|
+
|
|
35
|
+
# ---------------------------------------------------------------------------
|
|
36
|
+
# artwork_risk — required per jurisdiction by PRD-PLATES §4.
|
|
37
|
+
# ---------------------------------------------------------------------------
|
|
38
|
+
artwork_risk:
|
|
39
|
+
posture: unresearched
|
|
40
|
+
basis: >-
|
|
41
|
+
HONESTLY UNRESEARCHED, and recorded that way rather than guessed. Three
|
|
42
|
+
checks were run this pass and all three came back empty or blocked. (1)
|
|
43
|
+
Commons has NO {{PD-NHGov}} template — queried by API, result MISSING. (2)
|
|
44
|
+
New Hampshire has NO entry in the Wikipedia survey of subnational copyright
|
|
45
|
+
postures. (3) The state's own disclaimer page at nh.gov returned HTTP 403 to
|
|
46
|
+
every fetch attempt, so New Hampshire's terms of use are unpinned. With no
|
|
47
|
+
affirmative disclaimer located, the §105 default governs: the federal
|
|
48
|
+
public-domain rule does not extend to states, so a New Hampshire state work
|
|
49
|
+
is presumed copyrighted. Treat as default-adverse pending research.
|
|
50
|
+
emblem_rule: >-
|
|
51
|
+
THE PLACEHOLDER RULE MATTERS MORE HERE THAN ANYWHERE ELSE IN THIS GROUP, for
|
|
52
|
+
a reason that has nothing to do with copyright. The 1999 base's graphic is
|
|
53
|
+
the OLD MAN OF THE MOUNTAIN — the granite profile on Cannon Mountain that
|
|
54
|
+
COLLAPSED on 3 May 2003 and no longer exists. New Hampshire has continued to
|
|
55
|
+
issue plates depicting it for the twenty-three years since. The image is a
|
|
56
|
+
state emblem in the strongest sense (it is on the state quarter, the state
|
|
57
|
+
highway signs and the state seal's neighbourhood), and emblem protection
|
|
58
|
+
independent of copyright — misuse statutes, state-symbol statutes — is
|
|
59
|
+
UNRESEARCHED for New Hampshire, as it is for every state in this dataset.
|
|
60
|
+
Render `emblem: {present: true, rendered: placeholder}` and treat any
|
|
61
|
+
proposal to draw the profile as a named decision requiring its own research,
|
|
62
|
+
not as a rendering detail.
|
|
63
|
+
photograph_caution: "Commons photographs of New Hampshire plates carry the photographer's licence on the photograph, not a licence on the design. Our renders are generated from spec, so those obligations never attach."
|
|
64
|
+
sources:
|
|
65
|
+
- "https://commons.wikimedia.org/w/api.php?action=query&titles=Template:PD-NHGov # queried this pass: MISSING — no New Hampshire public-domain tag exists on Commons"
|
|
66
|
+
- "https://en.wikipedia.org/wiki/Copyright_status_of_works_by_subnational_governments_of_the_United_States # LOCATOR: New Hampshire has NO entry — recorded as unsurveyed"
|
|
67
|
+
- "https://www.nh.gov/disclaimer.htm # the state's own terms/disclaimer page — returned HTTP 403 to every fetch this pass; UNPINNED (recorded gap)"
|
|
68
|
+
|
|
69
|
+
display_rules:
|
|
70
|
+
default: "DELEGATED, not statutory. RSA 261:75(II): every vehicle required to be registered 'shall have displayed conspicuously thereon a number plate or plates to be furnished by the department, together with any current validation sticker', and 'The director may make special rules relative to the NUMBER OF PLATES, the location of said plate or plates on the vehicle, and the material and design thereof'. So even the count of plates is administrative. Two plates (front and rear) for most classes, rear only for motorcycles and trailers, is the reported practice (secondary) — the DIRECTOR'S RULES THEMSELVES WERE NOT OBTAINED (recorded gap)."
|
|
71
|
+
motto_mandate: "RSA 261:75(II), verbatim proviso: 'provided, however, that number plates for passenger vehicles shall have the state motto \"Live Free or Die\" written thereon.' The only design element New Hampshire's legislature reserves to itself, and it binds PASSENGER plates specifically — which is why the non-passenger series below vary in whether they carry it."
|
|
72
|
+
validation: "RSA 261:75(I): plates 'shall be furnished by the department yearly or at whatever interval of years the department shall determine. In all cases such plate or plates shall bear on the face thereof a permanent or changeable designation of their effective period.' A statutory requirement that the plate itself declare its validity window — by permanent marking or by sticker."
|
|
73
|
+
cleanliness: "RSA 261:75(II): 'The plate shall be kept clean.' Four words; no distance test, no obstruction clause, no illumination rule — the shortest display duty in this group."
|
|
74
|
+
fee: "RSA 261:75(I): $4.00 per plate."
|
|
75
|
+
sources:
|
|
76
|
+
- "https://www.gencourt.state.nh.us/rsa/html/XXI/261/261-75.htm # RSA 261:75(I) department designs and issues, $4.00 per plate, yearly or other interval, the effective-period designation duty; (II) conspicuous display with validation sticker, the delegation of number/location/material/design to the director, the 'Live Free or Die' proviso for passenger plates, and the cleanliness duty"
|
|
77
|
+
|
|
78
|
+
us_standards:
|
|
79
|
+
no_federal_mandate: true
|
|
80
|
+
chain: "SAE J686 -> AAMVA License Plate Standard Edition 3 (September 2025) -> voluntary state adoption; recommendations, not requirements."
|
|
81
|
+
aamva_geometry: "AAMVA §2.1 jurisdiction name top-centre between the bolt holes, >=0.25 in above the plate number, >=0.125 in from the top edge, characters 0.75-1.0 in; §2.2 serial characters >=2.5 in high, >=0.25 in apart, stroke 0.2-0.4 in, >=1.25 in clear of top and bottom; §3.3 legible day and night from >=75 feet, ASTM D4956-19 and ISO 7591:1982 cl.3, entrance angle 0.2 deg, observation angle -4 deg, minimum 45 cd/lx/m^2."
|
|
82
|
+
stacked_characters: "AAMVA Ed.3: 'If stacked characters are used, they are part of the official license plate number. No more than two characters are to be stacked.' NEW HAMPSHIRE STRESSES THIS RULE HARDER THAN ANY OTHER STATE IN THE GROUP — its Conservation and Construction Equipment plates carry a stacked 'C/H' and 'C/E' pair beside the serial, i.e. exactly two stacked characters, which under AAMVA's own words are PART OF THE NUMBER. Whether New Hampshire agrees was not established. Recorded as a live normalisation question for the parse layer."
|
|
83
|
+
dimensions_delegated: "AAMVA §3.1 sends dimensions and bolt holes to SAE J686, PAYWALLED and UNPINNED; no J686 dimension is quoted here. RSA 261 states no plate dimension (design is delegated to the director in terms), so 12x6 in below is `observed`."
|
|
84
|
+
replacement_cycle: "RSA 261:75(I) lets the department set the interval — 'yearly or at whatever interval of years the department shall determine' — so New Hampshire's cycle is a departmental decision with statutory authority behind it, not a fixed legislated term. The 1999 base has been in issue 27 years."
|
|
85
|
+
source: "https://www.aamva.org/getmedia/646bcc8a-219b-47d8-b5cd-726240473163/License-Plate-Standard-Edition-3_September-2025-Update.pdf"
|
|
86
|
+
|
|
87
|
+
series:
|
|
88
|
+
|
|
89
|
+
# =========================================================================
|
|
90
|
+
# CURRENT STANDARD ISSUE — the 1999 Old Man of the Mountain base.
|
|
91
|
+
# =========================================================================
|
|
92
|
+
- id: us-nh-standard-1999
|
|
93
|
+
class: standard
|
|
94
|
+
categories: [car, van, truck, bus]
|
|
95
|
+
period: { start: 1999 }
|
|
96
|
+
period_evidence: secondary-dated
|
|
97
|
+
matching: strict
|
|
98
|
+
format:
|
|
99
|
+
pattern: "999 9999"
|
|
100
|
+
regex: '\A\d{3} ?\d{4}\z'
|
|
101
|
+
charset:
|
|
102
|
+
notes: >-
|
|
103
|
+
ALL-NUMERIC, which makes New Hampshire the only standard series in this
|
|
104
|
+
group with no letters at all and the only one where the separator
|
|
105
|
+
carries the entire visual structure. RSA 261 states no grammar and no
|
|
106
|
+
length — design is delegated to the director in terms — so the
|
|
107
|
+
seven-digit shape is secondary. Reported serials run 100 0000 to
|
|
108
|
+
553 8164 as of 17 January 2025.
|
|
109
|
+
concurrent_formats_note: >-
|
|
110
|
+
THREE SHORTER ARRANGEMENTS RAN ON THE SAME BASE BEFORE THIS ONE AND ARE
|
|
111
|
+
STILL ON THE ROAD: 12345 (1 to 99999, Old Man graphic at right — also the
|
|
112
|
+
vanity style), 123 456 (Old Man graphic centred), and the current
|
|
113
|
+
123 4567 (Old Man graphic slightly left of centre). THE MIDDLE ONE RAN
|
|
114
|
+
BACKWARDS: 999 999 down to 100 000. A descending serial sequence is rare
|
|
115
|
+
enough to be worth stating plainly — any consumer inferring age from
|
|
116
|
+
magnitude on a New Hampshire six-digit plate will get it exactly
|
|
117
|
+
inverted. Also note the graphic POSITION shifts with the serial width,
|
|
118
|
+
so on this base the artwork placement is a function of the format.
|
|
119
|
+
progression: "ascending on the current seven-digit format; DESCENDING on the preceding six-digit format"
|
|
120
|
+
design:
|
|
121
|
+
plate: { w: 12, h: 6, unit: in, dimension_note: "OBSERVED — RSA 261 states no plate dimension" }
|
|
122
|
+
background: { finish: retroreflective }
|
|
123
|
+
colour_note: >-
|
|
124
|
+
NO BACKGROUND HEX RECORDED. The base is a GRAPHIC plate — the Old Man of
|
|
125
|
+
the Mountain and Cannon Mountain against a pale blue sky — so a single
|
|
126
|
+
background hex would misdescribe it. The serial is embossed DARK GREEN
|
|
127
|
+
(secondary) and the state name and motto are screened dark green.
|
|
128
|
+
foreground: "#1B4D3E"
|
|
129
|
+
legend_bottom: "New HAMPSHIRE"
|
|
130
|
+
legend_bottom_note: "reported as cursive 'New' set above serifed 'HAMPSHIRE' — a two-weight, two-line state name, unusual in US practice and a real render constraint"
|
|
131
|
+
legend_top: "LIVE FREE OR DIE"
|
|
132
|
+
legend_rule: "STATUTORY as to the words: RSA 261:75(II) requires passenger plates to bear the state motto 'Live Free or Die'. The statute does not fix its position; top placement is observed."
|
|
133
|
+
graphic:
|
|
134
|
+
present: true
|
|
135
|
+
rendered: placeholder
|
|
136
|
+
description: "the Old Man of the Mountain profile with Cannon Mountain behind, against a pale blue sky (secondary)"
|
|
137
|
+
note: "the depicted formation COLLAPSED on 3 May 2003 and the design has continued unchanged since. See artwork_risk."
|
|
138
|
+
emblem: { present: true, rendered: placeholder }
|
|
139
|
+
rear_differs: false
|
|
140
|
+
region_encoding: none
|
|
141
|
+
sources:
|
|
142
|
+
- "https://www.gencourt.state.nh.us/rsa/html/XXI/261/261-75.htm # RSA 261:75(II): the 'Live Free or Die' mandate for passenger plates, and the delegation of number, location, material and design to the director; (I) the department's issuance duty, the $4.00 fee and the effective-period designation"
|
|
143
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_New_Hampshire # LOCATOR ONLY (PRD-PLATES §4): the January 1999 base with the Old Man of the Mountain and Cannon Mountain, the three concurrent numeric arrangements, the DESCENDING six-digit sequence, the current 123 4567 range to 553 8164 as of 17 January 2025, and the graphic-position shift by format"
|
|
144
|
+
- "https://www.licenseplates.cc/NH # enthusiast corroboration, cited because used: the reported serial high-water mark. No text or image copied"
|
|
145
|
+
notes: >-
|
|
146
|
+
NEW HAMPSHIRE STANDARD ISSUE. The base is dated 1999 and the DESIGN has not
|
|
147
|
+
changed since, which by the AAMVA §1.1 measure makes it nearly three
|
|
148
|
+
replacement cycles old — and legally fine, because RSA 261:75(I) leaves the
|
|
149
|
+
interval to the department. The id is dated to the BASE rather than to the
|
|
150
|
+
current serial width, deliberately and unlike us-ct-standard-2015: in
|
|
151
|
+
Connecticut the format changes were accompanied by an official changeover
|
|
152
|
+
event with a reported date; in New Hampshire the widths simply grew as each
|
|
153
|
+
space exhausted, with no reported boundary dates at all, so dating an id to
|
|
154
|
+
a width would be inventing a boundary. Where the evidence differs, the id
|
|
155
|
+
policy differs, and the file says why.
|
|
156
|
+
|
|
157
|
+
# =========================================================================
|
|
158
|
+
# ONE SERIES BACK — the 1989 base.
|
|
159
|
+
# =========================================================================
|
|
160
|
+
- id: us-nh-standard-1989
|
|
161
|
+
class: standard
|
|
162
|
+
categories: [car, van, truck, bus]
|
|
163
|
+
period: { start: 1989, end: 1998 }
|
|
164
|
+
period_evidence: secondary-dated
|
|
165
|
+
matching: strict
|
|
166
|
+
format:
|
|
167
|
+
pattern: "LLL 999"
|
|
168
|
+
regex: '\A[A-Z]{3} ?\d{3}\z'
|
|
169
|
+
charset: { notes: "reported AAA 001 to approximately DEX 500. The immediately preceding arrangement, on the 1987 base, was a plain six-digit 123456 running 1 to 999999" }
|
|
170
|
+
separator_note: "printed with a hyphen in secondary depictions (ABC-123); spelled U+0020 here, and either reading is inside the emitted set (PRD-PLATES §2.6) — recorded because the two are not interchangeable to a strict matcher"
|
|
171
|
+
design:
|
|
172
|
+
plate: { w: 12, h: 6, unit: in }
|
|
173
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
174
|
+
foreground: "#1B4D3E"
|
|
175
|
+
colour_note: "embossed dark green serial on reflective white, with the state name and Old Man graphic screened in dark green (secondary); hexes observed"
|
|
176
|
+
legend_top: "NEW HAMPSHIRE"
|
|
177
|
+
legend_bottom: "LIVE FREE OR DIE"
|
|
178
|
+
legend_note: "the motto moved from BOTTOM on this base to TOP on the 1999 base — the statute mandates the words, never the position, so both layouts satisfy RSA 261:75(II). A good illustration of how much a slogan mandate does NOT determine."
|
|
179
|
+
graphic: { present: true, rendered: placeholder, description: "Old Man of the Mountain in a circle between the two words of the state name (secondary)" }
|
|
180
|
+
emblem: { present: true, rendered: placeholder }
|
|
181
|
+
region_encoding: none
|
|
182
|
+
sources:
|
|
183
|
+
- "https://www.gencourt.state.nh.us/rsa/html/XXI/261/261-75.htm # RSA 261:75(II): the motto mandate this base satisfies with a different placement than the current one"
|
|
184
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_New_Hampshire # LOCATOR ONLY: the March 1989 - December 1998 base, the ABC-123 arrangement and its AAA-001 to approximately DEX-500 range, and the 1987-1989 predecessor with the pale-green screening"
|
|
185
|
+
notes: >-
|
|
186
|
+
THE PREVIOUS BASE. Still the design of record for several New Hampshire
|
|
187
|
+
NON-PASSENGER classes issued today — Commercial, Disabled, Municipal
|
|
188
|
+
Government and the older Trailer series are all reported to run "as
|
|
189
|
+
1989-98 passenger base". So the 1989 base did not retire in 1998; it
|
|
190
|
+
DEMOTED, from the passenger design to the utility design, and continues in
|
|
191
|
+
production for other classes. `period.end: 1998` is therefore correct for
|
|
192
|
+
the PASSENGER series and would be wrong for the base, which is a real
|
|
193
|
+
argument for keying series to issuance systems rather than to artwork.
|
|
194
|
+
|
|
195
|
+
# =========================================================================
|
|
196
|
+
# CORE DISTINCT CLASSES.
|
|
197
|
+
# =========================================================================
|
|
198
|
+
- id: us-nh-motorcycle
|
|
199
|
+
class: motorcycle
|
|
200
|
+
categories: [motorcycle]
|
|
201
|
+
period: { start: 2022 }
|
|
202
|
+
period_evidence: secondary-dated
|
|
203
|
+
matching: strict
|
|
204
|
+
format:
|
|
205
|
+
pattern: "9L999"
|
|
206
|
+
regex: '\A\d[A-Z]\d{3}\z'
|
|
207
|
+
charset: { notes: "reported 1A000 to 1H885 as of 12 October 2024. Predecessors on the same design: 12345 (1987-94), 1234A (1994-2008), A1234 (2008-2022) — four grammars, one design, the New Hampshire pattern" }
|
|
208
|
+
design:
|
|
209
|
+
plate: { w: 7, h: 4, unit: in, dimension_note: "MOTORCYCLE PLATE SIZE NOT OBTAINED — placeholder carrying the conventional US motorcycle size; not sourced (recorded gap). RSA 261:75(II) delegates material and design to the director, whose rules were not obtained" }
|
|
210
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
211
|
+
foreground: "#1B4D3E"
|
|
212
|
+
legend_bottom: "MOTORCYCLE"
|
|
213
|
+
legend_note: "NO MOTTO. Reported slogan: none — and that is statutorily correct, because RSA 261:75(II)'s proviso binds 'number plates for PASSENGER VEHICLES'. New Hampshire motorcycles are outside the mandate, and the plates show it. One of the cleanest statute-to-artefact confirmations in this group."
|
|
214
|
+
graphic: { present: true, rendered: placeholder, description: "Old Man of the Mountain screened at top left with 'N' and 'H' on either side (secondary)" }
|
|
215
|
+
region_encoding: none
|
|
216
|
+
sources:
|
|
217
|
+
- "https://www.gencourt.state.nh.us/rsa/html/XXI/261/261-75.htm # RSA 261:75(II): the motto proviso is scoped to PASSENGER vehicles — the statutory reason this series carries no slogan"
|
|
218
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_New_Hampshire # LOCATOR ONLY: the 1A234 motorcycle arrangement from 2022, the three earlier grammars, the reported range, and the absence of a slogan"
|
|
219
|
+
notes: >-
|
|
220
|
+
MOTORCYCLE. Worth the entry for the negative fact alone: the absence of the
|
|
221
|
+
state motto on New Hampshire motorcycle plates is not an oversight, it is
|
|
222
|
+
the statute's own scoping, and a dataset that records "NH plates carry
|
|
223
|
+
'Live Free or Die'" as a jurisdiction-level fact would be wrong for an
|
|
224
|
+
entire class.
|
|
225
|
+
|
|
226
|
+
- id: us-nh-trailer
|
|
227
|
+
class: trailer
|
|
228
|
+
categories: [trailer]
|
|
229
|
+
period: { start: 2004 }
|
|
230
|
+
period_evidence: secondary-dated
|
|
231
|
+
matching: strict
|
|
232
|
+
format:
|
|
233
|
+
pattern: "T999999"
|
|
234
|
+
regex: '\AT\d{6}\z'
|
|
235
|
+
charset: { notes: "a literal 'T' class prefix and six digits; reported T100000 to T792323 as of 23 January 2025. The preceding arrangement was TB1234 — 'T' plus a sequential letter plus four digits — running TA0001 to TZ9999" }
|
|
236
|
+
design:
|
|
237
|
+
plate: { w: 12, h: 6, unit: in }
|
|
238
|
+
background: { finish: retroreflective }
|
|
239
|
+
legend_bottom: "LIVE FREE OR DIE"
|
|
240
|
+
legend_note: "reported to carry the motto even though RSA 261:75(II) does not require it on a trailer — the director's discretion exercised toward uniformity, not away from it"
|
|
241
|
+
design_note: "runs on the 1989-98 passenger base design and, per the secondary source, uses THE SAME SERIAL DIES as the current passenger base — a manufacturing fact with a rendering consequence: trailer and passenger glyphs are metrically identical even though the bases differ"
|
|
242
|
+
region_encoding: none
|
|
243
|
+
sources:
|
|
244
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_New_Hampshire # LOCATOR ONLY: the T123456 trailer arrangement from 2004, its TB1234 predecessor, the reported range, the 1989-98 base design and the shared serial dies"
|
|
245
|
+
- "https://www.gencourt.state.nh.us/rsa/html/XXI/261/261-75.htm # RSA 261:75(II): design and number of plates delegated to the director — the authority under which the trailer series is single-issue and carries the motto voluntarily"
|
|
246
|
+
notes: >-
|
|
247
|
+
TRAILER. The shared-serial-dies detail is the kind of fact that only
|
|
248
|
+
matters to a render layer and matters a lot to it: it means one glyph set
|
|
249
|
+
serves two series, so a Maine-style per-series font decision is unnecessary
|
|
250
|
+
here.
|
|
251
|
+
|
|
252
|
+
- id: us-nh-municipal
|
|
253
|
+
class: government
|
|
254
|
+
categories: [car, van, truck, bus]
|
|
255
|
+
period: { start: 1989 }
|
|
256
|
+
period_evidence: secondary-dated
|
|
257
|
+
matching: strict
|
|
258
|
+
format:
|
|
259
|
+
pattern: "G99999"
|
|
260
|
+
regex: '\AG\d{5}\z'
|
|
261
|
+
charset: { notes: "a literal 'G' prefix (for Government) and five digits; reported G10000 to G30914 as of 18 September 2024" }
|
|
262
|
+
design:
|
|
263
|
+
plate: { w: 12, h: 6, unit: in }
|
|
264
|
+
background: { finish: retroreflective }
|
|
265
|
+
legend_bottom: "LIVE FREE OR DIE"
|
|
266
|
+
design_note: "runs on the 1989-98 passenger base design (secondary)"
|
|
267
|
+
region_encoding: none
|
|
268
|
+
sources:
|
|
269
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_New_Hampshire # LOCATOR ONLY: the G12345 Municipal Government arrangement from 1989 and its reported range"
|
|
270
|
+
notes: >-
|
|
271
|
+
MUNICIPAL GOVERNMENT. Sequential, not geographic — the 'G' prefix marks
|
|
272
|
+
the class and the digits are a plain counter, so unlike Connecticut's
|
|
273
|
+
municipal series this one decodes to nothing. The New Hampshire plate that
|
|
274
|
+
DOES decode geographically is the Municipal Police series; see
|
|
275
|
+
us-nh-municipal-police.
|
|
276
|
+
|
|
277
|
+
- id: us-nh-municipal-police
|
|
278
|
+
class: police
|
|
279
|
+
categories: [car, van, truck]
|
|
280
|
+
period: { start: 1999 }
|
|
281
|
+
period_evidence: secondary-dated
|
|
282
|
+
matching: recall-only
|
|
283
|
+
format:
|
|
284
|
+
pattern: "LLL 99"
|
|
285
|
+
regex: '\A[A-Z]{2,4} ?\d{1,3}\z'
|
|
286
|
+
charset:
|
|
287
|
+
notes: >-
|
|
288
|
+
Reported structure: a DEPARTMENT CODE of letters, then a VEHICLE NUMBER
|
|
289
|
+
— the secondary source writes it as "xxx 12" and glosses it "xxx -
|
|
290
|
+
department code, 12 - vehicle number". Neither the code width nor the
|
|
291
|
+
number width is stated anywhere, which is why the regex quantifies
|
|
292
|
+
loosely and why this series is `recall-only`: a hit is a shape claim,
|
|
293
|
+
not a validity claim.
|
|
294
|
+
design:
|
|
295
|
+
plate: { w: 12, h: 6, unit: in }
|
|
296
|
+
background: { finish: retroreflective }
|
|
297
|
+
colour_note: "embossed blue serial on a white and blue plate (secondary); no hex recorded because the two-tone field is not describable as one background colour"
|
|
298
|
+
legend_top: "LIVE FREE OR DIE"
|
|
299
|
+
legend_bottom: "MUNICIPAL POLICE"
|
|
300
|
+
layout_note: "'M/P' screened at left — a stacked two-character class marker, the same AAMVA stacked-characters question raised in us_standards above"
|
|
301
|
+
region_encoding: >-
|
|
302
|
+
YES — THE LETTER GROUP IS A DEPARTMENT CODE, i.e. a MUNICIPAL DECODE, the
|
|
303
|
+
New Hampshire analogue of Connecticut's municipal letters. THE DECODE TABLE
|
|
304
|
+
WAS NOT OBTAINED: no official list of New Hampshire police department codes
|
|
305
|
+
was found this pass, and the secondary source gives the mechanism without
|
|
306
|
+
any of the values. Recorded as a gap and as a candidate
|
|
307
|
+
`plates/_decode/us-nh-police-departments.yml`. Until it lands a parse API
|
|
308
|
+
must answer "a New Hampshire municipal police vehicle" and stop.
|
|
309
|
+
sources:
|
|
310
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_New_Hampshire # LOCATOR ONLY: the Municipal Police series from 1999, the two-tone design, the 'M/P' marker, and the explicit gloss that the letter group is a department code and the digits a vehicle number"
|
|
311
|
+
notes: >-
|
|
312
|
+
MUNICIPAL POLICE — modelled `police` rather than `government` because New
|
|
313
|
+
Hampshire serializes it separately from the G-prefixed municipal series,
|
|
314
|
+
which is exactly the test _meta/classes.yml sets for the police class
|
|
315
|
+
("police fleets where distinct from government"). Both a decode mechanism
|
|
316
|
+
and a stacked-character question in one series; between this and Connecticut
|
|
317
|
+
the northeast group has produced two municipal decode tables' worth of
|
|
318
|
+
mechanism and zero rows of table, which is recorded as the group's second
|
|
319
|
+
structural gap.
|
|
320
|
+
|
|
321
|
+
# =========================================================================
|
|
322
|
+
# SPECIALTY — PROGRAM INDEX ONLY (PRD-PLATES §2.5). New Hampshire's program
|
|
323
|
+
# is a plate with a hole in it, and that is genuinely novel.
|
|
324
|
+
# =========================================================================
|
|
325
|
+
- id: us-nh-specialty-index
|
|
326
|
+
class: specialty
|
|
327
|
+
categories: [car, van, truck]
|
|
328
|
+
period: { start: 2017 }
|
|
329
|
+
period_evidence: statutory-date
|
|
330
|
+
matching: strict
|
|
331
|
+
format:
|
|
332
|
+
pattern: "L9999"
|
|
333
|
+
regex: '\A[A-Z]\d{4}\z'
|
|
334
|
+
charset: { notes: "the Decal Plate serial is reported as D1234 — a literal 'D' prefix and four digits, running from D1000. Decal Vanity Plates are also offered, at an additional $40 vanity fee, so the space is not purely sequential" }
|
|
335
|
+
design:
|
|
336
|
+
plate: { w: 12, h: 6, unit: in }
|
|
337
|
+
background: { finish: retroreflective }
|
|
338
|
+
note: "the Decal Plate 'resembles a regular New Hampshire passenger license plate' but carries a BLANK 3-inch by 3-inch SQUARE on the left side. The plate itself is one design; the variation lives in a separately purchased adhesive decal. No individual decal design is described here (PRD-PLATES §2.5)."
|
|
339
|
+
emblem: { present: true, rendered: placeholder, description: "Old Man of the Mountain at right on the decal plate — the graphic moves right to clear the decal square" }
|
|
340
|
+
program_index:
|
|
341
|
+
model: >-
|
|
342
|
+
NEW HAMPSHIRE'S SPECIALTY PROGRAM IS ARCHITECTURALLY DIFFERENT FROM EVERY
|
|
343
|
+
OTHER STATE IN THIS GROUP AND IT IS THE MOST INTERESTING FINDING IN THIS
|
|
344
|
+
FILE. Instead of authorising N plate DESIGNS, New Hampshire authorised ONE
|
|
345
|
+
plate TYPE with a 3in x 3in blank square, and lets legislatively approved
|
|
346
|
+
501(c)(3) organizations sell DECALS to fill it. The DMV states it plainly:
|
|
347
|
+
"Decals are NOT available at DMV locations, they have to be purchased
|
|
348
|
+
directly from the legislatively authorized 501(c)(3) organizations", and
|
|
349
|
+
"Decals can only be placed on a Decal Plate." The state manufactures one
|
|
350
|
+
plate; the charities manufacture the variety. Consequences worth stating:
|
|
351
|
+
the specialty COUNT is a count of ORGANIZATIONS, not of plate designs; the
|
|
352
|
+
plate's SERIAL SPACE is shared across all of them, so the serial decodes
|
|
353
|
+
to nothing about the cause; and — decisively for this dataset — the
|
|
354
|
+
variable artwork IS NOT A STATE WORK AT ALL. It is a charity's decal. The
|
|
355
|
+
artwork_risk analysis for New Hampshire specialty plates is therefore a
|
|
356
|
+
question about fifteen private organizations' IP, not about the state's.
|
|
357
|
+
statutory_basis: "RSA 261-B, in force from 3 July 2017 per the DMV's own words: 'Pursuant to RSA 261:B, starting July 3rd, 2017, the NH DMV began offering our newest plate type, the Decal Plate.' Veteran decal plates run under a parallel chapter, RSA 261-C, restricted to vehicles registered under RSA 261:87-b."
|
|
358
|
+
count_organizations: 15
|
|
359
|
+
count_basis: >-
|
|
360
|
+
FIFTEEN legislatively approved organizations are listed by name on the
|
|
361
|
+
DMV's own Decal Plates page as of the capture read this pass: Girl Scouts
|
|
362
|
+
of the Green and White Mountains; the Grand Lodge of Ancient, Free and
|
|
363
|
+
Accepted Masons in New Hampshire; Harris Center for Conservation
|
|
364
|
+
Education; Keene State College; NH Firefighters; New England Donor
|
|
365
|
+
Services; New England Patriot's Foundation; NH Breast Cancer Coalition;
|
|
366
|
+
NH Catholic Charities d/b/a NH Food Bank; NH Law Enforcement Officers
|
|
367
|
+
Memorial Association; NH Rotary; Plymouth State University; Seacoast
|
|
368
|
+
Youth Services; Sophia's Fund; University of New Hampshire Foundation.
|
|
369
|
+
This is an OFFICIAL count from the issuing agency, which is a better
|
|
370
|
+
artefact than any other specialty count in this group except Connecticut's
|
|
371
|
+
statute-derived one.
|
|
372
|
+
veteran_decals: "RSA 261-C additionally authorises Veteran Decal Plates with a distinguishing veteran design in the same 3x3 square, sold by the NH Office of Veteran Services rather than by a charity. Branch decals cover Army, Navy, Air Force, Marine Corps, Coast Guard and SPACE FORCE — an issuing agency that has already added the newest US service branch. Medal-of-valor decals cover Medal of Honor, Distinguished Service Cross, Navy Cross, Air Force Cross, Silver Star and Bronze Star, each pre-qualified; Gold Star family decals run under RSA 261-C:3-a."
|
|
373
|
+
other_specialty_series: "Separately from the decal program New Hampshire issues a CONSERVATION plate (the 'moose plate') from 1999, with a stacked 'C/H' marker beside the serial and five reported serial arrangements (C/H1234X, C/H123X4, C/H12X34, C/H1X234, C/HX1234). It is NOT given a series here: five width variants with no primary and a stacked marker of contested serial status is precisely the shape that produces a wrong regex, and PRD-PLATES §2.5 does not require it. Recorded as the file's largest deliberate omission."
|
|
374
|
+
fees: "$15 per year for a Decal Plate on top of town and state registration fees; $40 more for a Decal Vanity Plate; an $8.00 plate manufacturing fee in the first year only (DMV's own figures)."
|
|
375
|
+
official_list_url: "https://www.dmv.nh.gov/vehicles-boats-or-titles/vehicle-registrations/decal-plates"
|
|
376
|
+
region_encoding: none
|
|
377
|
+
sources:
|
|
378
|
+
- "https://www.dmv.nh.gov/vehicles-boats-or-titles/vehicle-registrations/decal-plates # NH DMV's own Decal Plates page: RSA 261-B and the 3 July 2017 start; the 3in x 3in blank square; decals sold by the organizations and not by the DMV; the fifteen approved organizations by name; the $15/$40/$8 fees; RSA 261-C veteran decals, the RSA 261:87-b registration condition, the six service branches including Space Force, the six medals of valor, and RSA 261-C:3-a Gold Star family decals. Read via https://web.archive.org/web/2025/... because dmv.nh.gov returned 403 to direct fetches this pass"
|
|
379
|
+
- "https://www.gencourt.state.nh.us/rsa/html/XXI/261/261-75.htm # RSA 261:75(II): the director's design authority under which a plate type with a blank decal field can exist at all"
|
|
380
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_New_Hampshire # LOCATOR ONLY: the D1234 decal-plate serial arrangement from D1000, and the Conservation plate's five reported arrangements with the stacked C/H marker"
|
|
381
|
+
notes: >-
|
|
382
|
+
THE NEW HAMPSHIRE SPECIALTY INDEX. `period_evidence: statutory-date`
|
|
383
|
+
because the DMV cites RSA 261-B and a specific commencement date, 3 July
|
|
384
|
+
2017, in its own words — the only specialty index in this group with a
|
|
385
|
+
dated statutory start. THE STRUCTURAL LESSON, which belongs in the PRD's
|
|
386
|
+
§2.5 discussion and not just in this file: the "specialty programs" concept
|
|
387
|
+
assumes one design per program, and New Hampshire breaks that assumption by
|
|
388
|
+
separating the PLATE (state, one design, one serial space) from the DECAL
|
|
389
|
+
(private, many designs, no serial). A schema that counts "specialty plates"
|
|
390
|
+
per state is counting different things in different states — Florida's over
|
|
391
|
+
a hundred DESIGNS, Connecticut's thirteen STATUTES, Maine's nine SERIAL
|
|
392
|
+
BLOCKS, and New Hampshire's fifteen ORGANIZATIONS SHARING ONE PLATE. The
|
|
393
|
+
index entries in this group therefore say what they are counting, every
|
|
394
|
+
time, and no cross-state total is offered.
|