vehicles 0.4.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 +321 -0
- data/README.md +88 -15
- data/data/PROVENANCE-vehicles.md +12 -0
- data/data/plates/PROVENANCE.md +10 -0
- 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/es-provinces.yml +116 -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 +26 -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 +1107 -0
- data/data/plates/dk.yml +1647 -0
- data/data/plates/ee.yml +1275 -0
- data/data/plates/es.yml +888 -0
- 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 +1016 -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 +741 -0
- 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 +18 -2
- 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 +42 -6
- data/lib/vehicles/plates/jurisdiction.rb +32 -0
- data/lib/vehicles/plates/series.rb +291 -0
- data/lib/vehicles/plates/template_fill.rb +188 -0
- data/lib/vehicles/plates/templates.rb +162 -0
- data/lib/vehicles/plates.rb +122 -0
- data/lib/vehicles/providers/hosted_provider.rb +49 -58
- data/lib/vehicles/providers/local_provider.rb +4 -3
- 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 +53 -16
- data/rakelib/data_refresh.rake +109 -0
- data/rakelib/plates_refresh.rake +29 -0
- data/sig/vehicles.rbs +18 -0
- metadata +174 -2
|
@@ -0,0 +1,506 @@
|
|
|
1
|
+
# plates/us-pa.yml — Pennsylvania (PRD-PLATES gate L2, mid-Atlantic group).
|
|
2
|
+
#
|
|
3
|
+
# PENNSYLVANIA IS THE ONE STATE IN THIS GROUP WHOSE ADVERSE POSTURE IS IN
|
|
4
|
+
# STATUTE. New York's is judicial and inferred; Pennsylvania's is a legislative
|
|
5
|
+
# grant: 71 P.S. § 636 gives the Department of General Services the power AND
|
|
6
|
+
# THE DUTY 'to copyright, in the name of the Commonwealth, all publications'.
|
|
7
|
+
# A state that has legislated an affirmative duty to copyright is the strongest
|
|
8
|
+
# adverse posture found anywhere in this group. See `artwork_risk`.
|
|
9
|
+
#
|
|
10
|
+
# THREE THINGS PENNSYLVANIA DOES THAT NO OTHER STATE IN THIS GROUP DOES:
|
|
11
|
+
# 1. It LEGISLATES A REISSUANCE PROGRAM (75 Pa.C.S. § 1331(f)) rather than a
|
|
12
|
+
# fixed cycle — an ongoing duty to replace plates on a staggered basis, and
|
|
13
|
+
# PennDOT is currently executing it against the oldest 'D', 'E' and 'F'
|
|
14
|
+
# configurations. This is the third distinct US answer to 'is there a
|
|
15
|
+
# replacement cadence?' after Florida's flat 10 years and New York's none.
|
|
16
|
+
# 2. It ABOLISHED THE VALIDATION STICKER IN LAW: § 1332(d), in four words that
|
|
17
|
+
# delete a whole layer of US plate anatomy — 'Validating registration
|
|
18
|
+
# stickers shall not be issued or required to be displayed.'
|
|
19
|
+
# 3. It legislates against plate treatments that defeat AUTOMATED ENFORCEMENT
|
|
20
|
+
# and ELECTRONIC TOLL COLLECTION specifically (§ 1332(b)(2)), i.e. it
|
|
21
|
+
# writes machine readability into the display statute.
|
|
22
|
+
#
|
|
23
|
+
# THE SEPARATOR CHANGED IN 2025 AND IT IS SOURCED FROM THE AGENCY'S OWN IMAGE.
|
|
24
|
+
# PennDOT's official sample of the current plate reads ABC0123 — seven
|
|
25
|
+
# characters, NO hyphen, with the Liberty Bell as a watermark BEHIND the
|
|
26
|
+
# characters. The base it replaced reads ABC-1234. So Pennsylvania dropped the
|
|
27
|
+
# printed separator at the 2025 base change, and this file spells each base's
|
|
28
|
+
# separator as that base actually prints it (PRD-PLATES §2.6 rule 2).
|
|
29
|
+
#
|
|
30
|
+
# period_evidence / format_evidence vocabularies as in us-ny.yml.
|
|
31
|
+
jurisdiction: us-pa
|
|
32
|
+
authority:
|
|
33
|
+
name: Pennsylvania Department of Transportation, Bureau of Motor Vehicles (PennDOT)
|
|
34
|
+
url: "https://www.pa.gov/en/agencies/dmv.html"
|
|
35
|
+
binding: vehicle
|
|
36
|
+
statute_edition: "75 Pa.C.S. (Vehicles), Chapter 13, read 2026-08-02. The Pennsylvania General Assembly's own statute service (palegis.us) reset the connection on four attempts in this pass, so §§ 1331 and 1332 were read through a third-party reproduction of the consolidated statutes; edicts of government are public domain at every level so the text is freely usable, but a verifier should re-derive from palegis.us. Recorded gap."
|
|
37
|
+
|
|
38
|
+
# ---------------------------------------------------------------------------
|
|
39
|
+
# artwork_risk — required per jurisdiction by PRD-PLATES §4.
|
|
40
|
+
# ---------------------------------------------------------------------------
|
|
41
|
+
artwork_risk:
|
|
42
|
+
posture: adverse-by-statute
|
|
43
|
+
basis: >-
|
|
44
|
+
Pennsylvania has legislated an affirmative COPYRIGHT DUTY over its own
|
|
45
|
+
publications. 71 P.S. § 636 provides that the Department of General Services
|
|
46
|
+
'shall have the power, and its duty shall be ... [t]o copyright, in the name
|
|
47
|
+
of the Commonwealth, all publications' including State Reports and other
|
|
48
|
+
publications it deems advisable. Combined with the baseline rule that
|
|
49
|
+
17 U.S.C. § 105 does not reach the states, that puts Pennsylvania in the most
|
|
50
|
+
adverse column available: not merely 'may assert' (Arizona) or 'courts have
|
|
51
|
+
held copyrightable' (New York), but a statutory instruction to assert. No
|
|
52
|
+
{{PD-PAGov}} template exists on Wikimedia Commons.
|
|
53
|
+
evidence_grade: >-
|
|
54
|
+
HONEST LIMIT: 71 P.S. § 636 was NOT FETCHED. The findlaw reproduction
|
|
55
|
+
returned 403 on both a WebFetch and a browser-user-agent curl, and
|
|
56
|
+
palegis.us reset the connection repeatedly. The citation and the quoted
|
|
57
|
+
clause come from the Wikipedia survey of subnational copyright status, which
|
|
58
|
+
is a LOCATOR under PRD-PLATES §4 and not an authority. The clause is quoted
|
|
59
|
+
here so a verifier knows exactly what to pull and can falsify it in one
|
|
60
|
+
fetch. The conclusion should not be relied on for a render decision until
|
|
61
|
+
the statute itself is in hand.
|
|
62
|
+
scope_caveat: >-
|
|
63
|
+
§ 636 speaks of PUBLICATIONS. Whether a registration plate DESIGN is a
|
|
64
|
+
'publication' of the Department of General Services is a question the
|
|
65
|
+
statute does not answer and this pass did not research. The adverse reading
|
|
66
|
+
is the conservative one and is adopted; the narrower reading — that § 636
|
|
67
|
+
reaches printed State documents and not vehicle registration plates issued
|
|
68
|
+
by a different department — is recorded as the open counter-argument.
|
|
69
|
+
emblem_rule: >-
|
|
70
|
+
RENDER PLACEHOLDER. The current base carries a large Liberty Bell image
|
|
71
|
+
behind the serial and the previous base carries a state outline; neither is
|
|
72
|
+
approached. Note the Liberty Bell itself is a physical object of the 18th
|
|
73
|
+
century and no one holds copyright in the bell — but PennDOT's DRAWING of it
|
|
74
|
+
is a work, and it is the drawing that appears on the plate. Do not confuse
|
|
75
|
+
the public-domain SUBJECT with the state-produced DEPICTION.
|
|
76
|
+
photograph_caution: >-
|
|
77
|
+
Standard §4 reading: Commons photographs carry the photographer's licence on
|
|
78
|
+
the photograph only. PennDOT's own sample image of the current plate was
|
|
79
|
+
READ to establish the serial's printed form and the design description; it
|
|
80
|
+
is NOT copied into the dataset and no render derives from it.
|
|
81
|
+
sources:
|
|
82
|
+
- "https://en.wikipedia.org/wiki/Copyright_status_of_works_by_subnational_governments_of_the_United_States # LOCATOR ONLY: quotes 71 P.S. § 636 - the Department of General Services 'shall have the power, and its duty shall be ... [t]o copyright, in the name of the Commonwealth, all publications'. The statute itself was NOT fetched (403/connection reset on three routes)."
|
|
83
|
+
- "https://commons.wikimedia.org/wiki/Commons:Copyright_rules_by_territory/United_States # the state-exclusion rule and the roster of state PD tags that exist - Pennsylvania is absent from it"
|
|
84
|
+
|
|
85
|
+
# ---------------------------------------------------------------------------
|
|
86
|
+
# The US standards chain. Voluntary; J686 never quoted.
|
|
87
|
+
# ---------------------------------------------------------------------------
|
|
88
|
+
us_standards:
|
|
89
|
+
no_federal_mandate: true
|
|
90
|
+
chain: "SAE J686 -> AAMVA License Plate Standard Edition 3 (September 2025) -> voluntary state adoption."
|
|
91
|
+
aamva_edition_3:
|
|
92
|
+
dimensions_delegated: "AAMVA §3.1 sends dimensions and bolt holes to SAE J686 (paywalled, NOT obtained). 75 Pa.C.S. Chapter 13 states no plate dimension. No sourced dimension is carried here."
|
|
93
|
+
retroreflectivity: "AAMVA §3.3 recommends daylight and nighttime legibility from at least 75 feet, materials per ASTM D4956-19 and ISO 7591:1982 cl.3. Pennsylvania legislates the DUTY but not the value: 75 Pa.C.S. § 1331(d), 'All registration plates, except temporary plates, shall be treated with reflectorizing material in accordance with standards approved by the department.' Standards approved by the department were not obtained (recorded gap)."
|
|
94
|
+
machine_readability: "AAMVA publishes a separate LPR Program Best Practices Guide because machine readability is a design constraint. Pennsylvania is the only state in this group to write it into the DISPLAY STATUTE: § 1332(b)(2) makes it unlawful to display a plate obscured in a way that inhibits automated enforcement or electronic toll collection, and § 1332(b.1) permits a frame only if the plate remains readable BY THOSE SYSTEMS as well as by an officer."
|
|
95
|
+
replacement_cycle: "AAMVA §1.1 recommends a cycle 'not to exceed 7 to 10 years'. Pennsylvania legislates a PROGRAM, not a period — see `replacement_cycle` on us-pa-let-freedom-ring."
|
|
96
|
+
source: "https://www.aamva.org/getmedia/646bcc8a-219b-47d8-b5cd-726240473163/License-Plate-Standard-Edition-3_September-2025-Update.pdf"
|
|
97
|
+
folklore_caution: "The '1956 AMA standardization agreement' is UNCITED in its Wikipedia source and is recorded as COMMONLY REPEATED, UNSOURCED. Pennsylvania has no statutory dimension to put in its place."
|
|
98
|
+
|
|
99
|
+
# ---------------------------------------------------------------------------
|
|
100
|
+
# Display rules.
|
|
101
|
+
# ---------------------------------------------------------------------------
|
|
102
|
+
display_rules:
|
|
103
|
+
default: "ONE plate, displayed on the REAR. SOURCING CAVEAT: 75 Pa.C.S. § 1332(a) speaks throughout of 'every registration plate' in the singular and prescribes no front position, and § 1331 speaks of the department providing 'registration plates' without a count — consistent with one-plate issuance but not stating it. The rear-only rule is asserted by the locator's front/rear survey and NO Pennsylvania instrument stating it was pinned in this pass. RECORDED GAP; a verifier should look to 67 Pa. Code and to § 1332's implementing regulations."
|
|
104
|
+
general_rule: "§ 1332(a): 'Every registration plate shall, at all times, be securely fastened to the vehicle to which it is assigned or on which its use is authorized in accordance with regulations promulgated by the department.' Note the delegation — the MOUNTING SPEC is regulatory, not statutory, and 67 Pa. Code was not obtained (recorded gap)."
|
|
105
|
+
motorcycle_vertical: "§ 1332(a.1): a motorcycle plate may be mounted VERTICALLY only if its identifying characters are themselves displayed vertically; 'A registration plate that has its identifying characters displayed horizontally shall not be displayed and mounted vertically.' The department produces vertical-alignment motorcycle plates on request for a $20 fee in addition to the annual registration. A VERTICAL-CHARACTER PLATE IS A DIFFERENT PHYSICAL OBJECT WITH THE SAME SERIAL — a render-layer fact, not a format fact."
|
|
106
|
+
obstruction: "§ 1332(b): unlawful to display a plate that is (1) so dirty as to be unreadable at a reasonable distance, (2) obscured in a way that inhibits automated enforcement or electronic toll collection, (3) illegible or obstructed at a reasonable distance, (4) obscuring the issuing jurisdiction, or (5) covered by a tinted material."
|
|
107
|
+
frames: "§ 1332(b.1): a frame that 'minimally outlines the registration plate' is permitted provided the plate remains readable by automated systems and by law enforcement."
|
|
108
|
+
penalty: "§ 1332(c): violating § 1332(b)(2) or (b)(4) is a SUMMARY OFFENSE carrying a $100 fine on conviction."
|
|
109
|
+
no_validation_sticker: "§ 1332(d): 'Validating registration stickers shall not be issued or required to be displayed.' Pennsylvania has legislated the registration sticker out of existence — the single most consequential display fact in this file for anyone rendering or parsing a Pennsylvania plate, because the sticker box that every other state's plate reserves simply is not there."
|
|
110
|
+
sources:
|
|
111
|
+
- "https://codes.findlaw.com/pa/title-75-pacsa-vehicles/pa-csa-sect-75-1332.html # 75 Pa.C.S. § 1332 as reproduced by a third party: (a) secure fastening per department regulations; (a.1) motorcycle vertical mounting and the $20 vertical plate; (b) the five obscuring prohibitions including automated enforcement and tolling; (b.1) the minimal frame allowance; (c) the $100 summary penalty; (d) NO VALIDATING STICKERS. Edict of government - public domain - but a REPRODUCTION; palegis.us was unreachable."
|
|
112
|
+
- "https://codes.findlaw.com/pa/title-75-pacsa-vehicles/pa-csa-sect-75-1331.html # 75 Pa.C.S. § 1331: (a) plates provided by the department; (b) plate content; (c) temporary plates; (d) reflectorizing to department standards; (e) issuance by agents; (f) the periodic reissuance program"
|
|
113
|
+
|
|
114
|
+
series:
|
|
115
|
+
|
|
116
|
+
# =========================================================================
|
|
117
|
+
# THE CURRENT STANDARD-ISSUE SERIES.
|
|
118
|
+
# =========================================================================
|
|
119
|
+
- id: us-pa-let-freedom-ring
|
|
120
|
+
class: standard
|
|
121
|
+
categories: [car, van, truck, bus]
|
|
122
|
+
period: { start: 2025 }
|
|
123
|
+
period_evidence: agency-page-in-force
|
|
124
|
+
format_evidence: official-agency-image
|
|
125
|
+
matching: strict
|
|
126
|
+
format:
|
|
127
|
+
pattern: "LLL9999"
|
|
128
|
+
regex: '\A[A-Z]{3}\d{4}\z'
|
|
129
|
+
charset:
|
|
130
|
+
notes: >-
|
|
131
|
+
THE STATUTORY CONSTRAINT IS ALMOST NOTHING. 75 Pa.C.S. § 1331(b):
|
|
132
|
+
'Every registration plate shall have displayed upon it the identifying
|
|
133
|
+
numbers or letters assigned to the vehicle, the name of the
|
|
134
|
+
Commonwealth, which may be abbreviated, and any other data the
|
|
135
|
+
department may deem necessary.' No length, no alphabet, no exclusions.
|
|
136
|
+
The only official Pennsylvania character rule is on the personalisation
|
|
137
|
+
side: 'Personalized registration plates may contain up to seven letters
|
|
138
|
+
and numbers in combination' (PennDOT), which is consistent with the
|
|
139
|
+
seven-character ordinary serial and is recorded on us-pa-personalized.
|
|
140
|
+
pattern_note: >-
|
|
141
|
+
NO SEPARATOR — AND THAT IS SOURCED, NOT ASSUMED. PennDOT's own sample
|
|
142
|
+
image of this plate (fetched and read 2026-08-02) shows the serial
|
|
143
|
+
ABC0123 as seven contiguous characters with the Liberty Bell rendered as
|
|
144
|
+
a watermark BEHIND them. The base it replaced printed ABC-1234 with a
|
|
145
|
+
hyphen. Pennsylvania therefore dropped the printed separator at the 2025
|
|
146
|
+
base change, and PRD-PLATES §2.6 rule 2 requires each base's regex to be
|
|
147
|
+
written in ITS OWN printed form — which is why this series has no hyphen
|
|
148
|
+
in it and `us-pa-visitpa` does.
|
|
149
|
+
progression: "reported to run MYR0200 onward, reaching NHJ 3386 as of 25 July 2026 (locator). Note the locator's own rendering of the later serial contains a space, which conflicts with PennDOT's contiguous sample; the conflict is recorded, not resolved."
|
|
150
|
+
design:
|
|
151
|
+
background: { color: "#F5F0DC", finish: retroreflective, hex_basis: observed }
|
|
152
|
+
foreground: "#1B3A6B"
|
|
153
|
+
colour_note: >-
|
|
154
|
+
AGENCY WORDING AND AGENCY IMAGE DISAGREE, AND BOTH ARE RECORDED.
|
|
155
|
+
PennDOT's own alt text describes 'a white background with large blue
|
|
156
|
+
letters and numbers'; PennDOT's own image of the same plate shows a
|
|
157
|
+
distinctly CREAM ground, not white, with navy characters and DARK RED
|
|
158
|
+
legends the alt text does not mention. The hex recorded is the observed
|
|
159
|
+
cream. PRD-PLATES §5.3 says record disagreements rather than average
|
|
160
|
+
them, and this is a disagreement inside a single agency page.
|
|
161
|
+
legend_top: "PENNSYLVANIA"
|
|
162
|
+
legend_bottom: "LET FREEDOM RING"
|
|
163
|
+
legend_colour: { value: "#A6192E", hex_basis: observed, note: "state name and slogan both in red - observed from the agency image; not in the alt text and not in statute" }
|
|
164
|
+
graphic:
|
|
165
|
+
present: true
|
|
166
|
+
rendered: placeholder
|
|
167
|
+
description: "a Liberty Bell, large, centred, rendered as a light watermark BEHIND the serial characters. PennDOT's alt text: 'Pennsylvania license plate with a graphic of the Liberty Bell and the text, \"Pennsylvania\" and \"Let Freedom Ring.\"' A watermark UNDER the serial is a distinct render problem from a graphic beside it and is flagged for the render layer."
|
|
168
|
+
emblem: { present: true, rendered: placeholder }
|
|
169
|
+
band: { side: none }
|
|
170
|
+
rear_differs: false
|
|
171
|
+
validation_sticker: { present: false, basis: "75 Pa.C.S. § 1332(d): 'Validating registration stickers shall not be issued or required to be displayed.'" }
|
|
172
|
+
dimension_note: "NO SOURCED DIMENSION (Chapter 13 states none; SAE J686 unpinned)."
|
|
173
|
+
replacement_cycle:
|
|
174
|
+
years: null
|
|
175
|
+
programme: true
|
|
176
|
+
statutory_text: "75 Pa.C.S. § 1331(f) requires the department to establish and administer a PROGRAM for the periodic reissuance of registration plates, addressing fee requirements, replacement on a STAGGERED BASIS, recycling of older plates and such other factors as it deems necessary."
|
|
177
|
+
execution_quote: "PennDOT, in its own words: 'Passenger license plates that start with a tag configuration \"D\", \"E\" and \"F\" are the oldest plates on the road. PennDOT has begun replacing the \"D\", \"E\" and \"F\" configuration through the mail.'"
|
|
178
|
+
note: >-
|
|
179
|
+
A PROGRAM, NOT A PERIOD — the third distinct US model. Florida legislates
|
|
180
|
+
a flat 10 years; New York legislates nothing; Pennsylvania legislates an
|
|
181
|
+
ongoing duty with staggering and recycling and lets the department choose
|
|
182
|
+
the cadence. Note what PennDOT's execution reveals: the replacement front
|
|
183
|
+
is running on SERIAL PREFIX, i.e. Pennsylvania is retiring plates by
|
|
184
|
+
their position in the alphabet-sequence rather than by issue date. That
|
|
185
|
+
makes the serial itself the age proxy, which is genuinely useful
|
|
186
|
+
era-inference signal for a parse API.
|
|
187
|
+
region_encoding: none
|
|
188
|
+
sources:
|
|
189
|
+
- "https://www.pa.gov/en/agencies/dmv/vehicle-services/registration-plates/standard-issue-registration-plate.html # PennDOT: the 'Liberty Bell style' standard plate, a June 2025 introduction, 'white background with large blue letters and numbers', the $14 replacement fee, the D/E/F reissuance front, and the official sample image showing the contiguous ABC0123 serial"
|
|
190
|
+
- "https://codes.findlaw.com/pa/title-75-pacsa-vehicles/pa-csa-sect-75-1331.html # § 1331(b) plate content; (d) reflectorizing; (f) the periodic reissuance program"
|
|
191
|
+
- "https://codes.findlaw.com/pa/title-75-pacsa-vehicles/pa-csa-sect-75-1332.html # § 1332(d) no validating stickers"
|
|
192
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Pennsylvania # LOCATOR ONLY (PRD-PLATES §4): a MAY 2025 introduction, ABC1234, MYR0200 to NHJ 3386 as of 25 July 2026"
|
|
193
|
+
notes: >-
|
|
194
|
+
LET FREEDOM RING (2025-) — THE CURRENT PENNSYLVANIA STANDARD ISSUE.
|
|
195
|
+
DATE DISAGREEMENT, RECORDED NOT AVERAGED (PRD-PLATES §5.3): PennDOT's own
|
|
196
|
+
page says JUNE 2025; the locator says MAY 2025. Both are written down;
|
|
197
|
+
neither is split. `period.start: 2025` is safe under either. The design
|
|
198
|
+
name also differs by source — PennDOT calls it the 'Liberty Bell style'
|
|
199
|
+
plate in prose while the plate itself reads LET FREEDOM RING, and this
|
|
200
|
+
entry uses the plate's own legend as the name because that is what a
|
|
201
|
+
person or a camera actually sees. PARALLEL ISSUANCE IS REAL AND
|
|
202
|
+
AGENCY-STATED: PennDOT warns that 'Plates issued by third-party or
|
|
203
|
+
non-Commonwealth vendors may still use the previous design', so the 2017
|
|
204
|
+
base is still entering circulation and the two series legitimately overlap.
|
|
205
|
+
|
|
206
|
+
# =========================================================================
|
|
207
|
+
# ONE SERIES BACK — still being issued, per PennDOT's own warning.
|
|
208
|
+
# =========================================================================
|
|
209
|
+
- id: us-pa-visitpa
|
|
210
|
+
class: standard
|
|
211
|
+
categories: [car, van, truck, bus]
|
|
212
|
+
period: { start: 2017 }
|
|
213
|
+
period_evidence: secondary-locator-unverified
|
|
214
|
+
format_evidence: secondary-locator-unverified
|
|
215
|
+
matching: strict
|
|
216
|
+
format:
|
|
217
|
+
pattern: "LLL-9999"
|
|
218
|
+
regex: '\A[A-Z]{3}-?\d{4}\z'
|
|
219
|
+
charset: { notes: "as us-pa-let-freedom-ring: no statutory charset. Reported range KLF-0000 to MYR-0199, i.e. this base ran out exactly where the current one begins (MYR0200) - a clean, checkable boundary claim and the strongest era-inference signal in the file." }
|
|
220
|
+
pattern_note: "THIS base prints a hyphen. Written in its own printed form per PRD-PLATES §2.6 rule 2; the separator-free twin is derived by the consumer, not shipped."
|
|
221
|
+
design:
|
|
222
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
223
|
+
foreground: "#1B3A6B"
|
|
224
|
+
colour_note: "dark blue on reflective white with a navy band at the top and a yellow band at the bottom (locator); `hex_basis: observed`. No colour value is in statute."
|
|
225
|
+
legend_top: "PENNSYLVANIA"
|
|
226
|
+
legend_bottom: "visitPA.com"
|
|
227
|
+
legend_note: "A URL AS A STATE SLOGAN. Pennsylvania ran www.state.pa.us on the 1999 base and visitPA.com on the 2004 and 2017 bases - two decades of plates carrying a marketing domain. Worth recording because a URL slogan dates a plate more sharply than a graphic does, and because it is the clearest example anywhere of a plate legend that can go stale independently of the plate."
|
|
228
|
+
graphic: { present: true, rendered: placeholder, description: "state outline at the top left, added on the 2017 revision of this base (locator)" }
|
|
229
|
+
emblem: { present: true, rendered: placeholder }
|
|
230
|
+
band: { side: none }
|
|
231
|
+
validation_sticker: { present: false, basis: "75 Pa.C.S. § 1332(d)" }
|
|
232
|
+
region_encoding: none
|
|
233
|
+
sources:
|
|
234
|
+
- "https://www.pa.gov/en/agencies/dmv/vehicle-services/registration-plates/standard-issue-registration-plate.html # PennDOT: 'Plates issued by third-party or non-Commonwealth vendors may still use the previous design' - the official evidence that this series is STILL ISSUING and therefore has no end year"
|
|
235
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Pennsylvania # LOCATOR ONLY: June 2017 state-outline revision, visitPA.com slogan, ABC-1234, KLF-0000 to MYR-0199"
|
|
236
|
+
notes: >-
|
|
237
|
+
visitPA.com (2017-) — THE PREVIOUS BASE, WITH NO END YEAR ON PURPOSE.
|
|
238
|
+
PennDOT states that third-party and non-Commonwealth vendors may still be
|
|
239
|
+
issuing it, so closing the period would be a false claim: this is exactly
|
|
240
|
+
the parallel-issuance case PRD-PLATES §2.2 sanctions ('old stock issues
|
|
241
|
+
on'), and it is why this series and us-pa-let-freedom-ring overlap. The
|
|
242
|
+
2004 base carried the same visitPA.com slogan and the same ABC-1234
|
|
243
|
+
format, differing only in the absence of the state outline; it is NOT given
|
|
244
|
+
a series of its own because the boundary between them is locator-only and
|
|
245
|
+
minting a permanent id on it would be exactly the mistake us-fl-standard
|
|
246
|
+
declined to make.
|
|
247
|
+
|
|
248
|
+
# =========================================================================
|
|
249
|
+
# CORE DISTINCT CLASSES.
|
|
250
|
+
# =========================================================================
|
|
251
|
+
- id: us-pa-motorcycle
|
|
252
|
+
class: motorcycle
|
|
253
|
+
categories: [motorcycle]
|
|
254
|
+
period: { start: 2017 }
|
|
255
|
+
period_evidence: instrument-in-force-upper-bound
|
|
256
|
+
format_evidence: secondary-locator-unverified
|
|
257
|
+
matching: recall-only
|
|
258
|
+
format:
|
|
259
|
+
pattern: "9LL99"
|
|
260
|
+
regex: '\A(?:[A-Z]{3}\d{2}|\d{4}[A-Z]|[A-Z]\d{4}|\d[A-Z]{2}\d{2})\z'
|
|
261
|
+
charset:
|
|
262
|
+
notes: >-
|
|
263
|
+
FOUR ARRANGEMENTS ARE REPORTED FOR PENNSYLVANIA MOTORCYCLE PLATES -
|
|
264
|
+
ABC12, 1234A, A1234 and 1AB23 - AND THE LOCATOR DOES NOT SAY WHICH IS
|
|
265
|
+
CURRENT. Rather than pick one and pretend, this series is
|
|
266
|
+
`matching: recall-only` and its regex is the UNION of all four. A match
|
|
267
|
+
says 'this string has a shape Pennsylvania has issued to a motorcycle'
|
|
268
|
+
and nothing more. PennDOT's own rule caps a personal motorcycle plate
|
|
269
|
+
at five characters, which every one of the four arrangements satisfies.
|
|
270
|
+
pattern_note: "recall-only forbids a regex_strict (PRD-PLATES §2.7) and none is given. When a primary establishes which arrangement is current, this series splits and the union becomes a historic parent."
|
|
271
|
+
design:
|
|
272
|
+
background: { finish: retroreflective }
|
|
273
|
+
legend_top: "PENNSYLVANIA"
|
|
274
|
+
emblem: { present: true, rendered: placeholder }
|
|
275
|
+
vertical_variant: "75 Pa.C.S. § 1332(a.1)(3): PennDOT produces a VERTICAL-ALIGNMENT motorcycle plate on request for a $20 fee in addition to the annual registration. Same serial, rotated characters, different physical object - a render-layer variant, not a format variant."
|
|
276
|
+
dimension_note: "NO SOURCED DIMENSION."
|
|
277
|
+
region_encoding: none
|
|
278
|
+
sources:
|
|
279
|
+
- "https://codes.findlaw.com/pa/title-75-pacsa-vehicles/pa-csa-sect-75-1332.html # § 1332(a.1): the vertical-mounting rule, the prohibition on mounting a horizontal-character plate vertically, and the $20 vertical plate"
|
|
280
|
+
- "https://www.pa.gov/en/agencies/dmv/vehicle-services/registration-plates/personalized-registration-plates.html # PennDOT: 'A personal motorcycle registration plate may contain up to five letters and numbers in combination'"
|
|
281
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Pennsylvania # LOCATOR ONLY: the four reported motorcycle arrangements ABC12, 1234A, A1234, 1AB23"
|
|
282
|
+
notes: >-
|
|
283
|
+
MOTORCYCLE — THE GROUP'S SECOND RECALL-ONLY SERIES AND ITS BEST
|
|
284
|
+
JUSTIFICATION. The honest position when four arrangements are reported and
|
|
285
|
+
none is dated is a union with `matching: recall-only`, not a guess dressed
|
|
286
|
+
as a fact. Pennsylvania also gives the dataset its first VERTICAL PLATE:
|
|
287
|
+
§ 1332(a.1) treats character orientation as a legal property of the plate,
|
|
288
|
+
which no other statute in this group does.
|
|
289
|
+
|
|
290
|
+
- id: us-pa-trailer
|
|
291
|
+
class: trailer
|
|
292
|
+
categories: [trailer]
|
|
293
|
+
period: { start: 2017 }
|
|
294
|
+
period_evidence: instrument-in-force-upper-bound
|
|
295
|
+
format_evidence: secondary-locator-unverified
|
|
296
|
+
matching: strict
|
|
297
|
+
format:
|
|
298
|
+
pattern: "XLL-9999"
|
|
299
|
+
regex: '\AX[A-Z]{2}-?\d{4}\z'
|
|
300
|
+
charset: { notes: "reported trailer format XBC-1234. The leading X is read as a LITERAL trailer marker because the locator's placeholder convention runs alphabetically and X breaks it - the same inference applied to the New Jersey trailer series, and flagged as an inference here too." }
|
|
301
|
+
design:
|
|
302
|
+
background: { finish: retroreflective }
|
|
303
|
+
legend_top: "PENNSYLVANIA"
|
|
304
|
+
emblem: { present: true, rendered: placeholder }
|
|
305
|
+
region_encoding: none
|
|
306
|
+
sources:
|
|
307
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Pennsylvania # LOCATOR ONLY: trailer XBC-1234"
|
|
308
|
+
notes: "TRAILER. Locator-grade with one flagged inference about the X literal."
|
|
309
|
+
|
|
310
|
+
- id: us-pa-dealer
|
|
311
|
+
class: dealer
|
|
312
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
313
|
+
period: { start: 2017 }
|
|
314
|
+
period_evidence: instrument-in-force-upper-bound
|
|
315
|
+
format_evidence: secondary-locator-unverified
|
|
316
|
+
matching: strict
|
|
317
|
+
binding: business
|
|
318
|
+
format:
|
|
319
|
+
pattern: "H99-999H"
|
|
320
|
+
regex: '\A(?:H\d{2}-?\d{3}H|J\d{2}-?\d{3}J|K\d{2}-?\d{3}K)\z'
|
|
321
|
+
charset:
|
|
322
|
+
notes: >-
|
|
323
|
+
Three dealer arrangements are reported - H12-345H, J12-345J and
|
|
324
|
+
K12-345K - and they share a striking shape: THE SAME LETTER OPENS AND
|
|
325
|
+
CLOSES THE SERIAL. That is a bracketing marker, not a sequence, so the
|
|
326
|
+
regex enumerates the three known letters rather than allowing any
|
|
327
|
+
letter in both positions. If a fourth letter is in use the regex is
|
|
328
|
+
narrow by exactly that letter, which is the safe direction to be wrong.
|
|
329
|
+
design:
|
|
330
|
+
background: { finish: retroreflective }
|
|
331
|
+
legend_top: "PENNSYLVANIA"
|
|
332
|
+
emblem: { present: true, rendered: placeholder }
|
|
333
|
+
region_encoding: none
|
|
334
|
+
sources:
|
|
335
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Pennsylvania # LOCATOR ONLY: dealer H12-345H, J12-345J, K12-345K"
|
|
336
|
+
notes: >-
|
|
337
|
+
DEALER. `binding: business`. The bracketing letter is the interesting
|
|
338
|
+
structural fact - Pennsylvania's dealer serial is the only one in this
|
|
339
|
+
group whose first and last characters are constrained to be equal, which
|
|
340
|
+
is a grammar no simple width-and-alphabet model can express.
|
|
341
|
+
|
|
342
|
+
- id: us-pa-temporary
|
|
343
|
+
class: temporary
|
|
344
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
345
|
+
period: { start: 2017 }
|
|
346
|
+
period_evidence: statutory-authority-undated
|
|
347
|
+
format_evidence: secondary-locator-unverified
|
|
348
|
+
matching: strict
|
|
349
|
+
format:
|
|
350
|
+
pattern: "9999-999"
|
|
351
|
+
regex: '\A\d{4}-?\d{3}\z'
|
|
352
|
+
charset: { notes: "reported paper in-transit plate, four numerals, separator, three numerals." }
|
|
353
|
+
design:
|
|
354
|
+
background: { finish: none, note: "temporary plates are the ONE class Pennsylvania statute exempts from reflectorisation - § 1331(d): 'All registration plates, EXCEPT TEMPORARY PLATES, shall be treated with reflectorizing material'. That exemption is the sourced fact here; the paper stock and the format are locator-grade." }
|
|
355
|
+
legend_top: "PENNSYLVANIA"
|
|
356
|
+
emblem: { present: false }
|
|
357
|
+
validity: "not sourced (recorded gap)"
|
|
358
|
+
region_encoding: none
|
|
359
|
+
sources:
|
|
360
|
+
- "https://codes.findlaw.com/pa/title-75-pacsa-vehicles/pa-csa-sect-75-1331.html # § 1331(c): 'The department shall provide temporary registration plates for use on vehicles which are to be removed from this Commonwealth or for use as necessary pending issuance of permanent registration plates'; § 1331(d) exempts temporary plates from reflectorisation"
|
|
361
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Pennsylvania # LOCATOR ONLY: temporary in-transit 1234-567 paper plate"
|
|
362
|
+
notes: >-
|
|
363
|
+
TEMPORARY. THE CLASS IS STATUTORY AND THE STATUTE IS UNUSUALLY EXPLICIT
|
|
364
|
+
about what temporary plates are FOR - removal from the Commonwealth, or
|
|
365
|
+
the gap pending permanent plates - and about their one physical
|
|
366
|
+
distinction, the reflectorisation exemption. The serial format is
|
|
367
|
+
locator-grade. `period_evidence: statutory-authority-undated`: § 1331(c)
|
|
368
|
+
establishes the class without dating it, and the start year here is the
|
|
369
|
+
instrument-in-force floor, not a claim about when temporary plates began.
|
|
370
|
+
|
|
371
|
+
- id: us-pa-government
|
|
372
|
+
class: government
|
|
373
|
+
categories: [car, van, truck, bus]
|
|
374
|
+
period: { start: 2017 }
|
|
375
|
+
period_evidence: instrument-in-force-upper-bound
|
|
376
|
+
format_evidence: secondary-locator-unverified
|
|
377
|
+
matching: strict
|
|
378
|
+
binding: business
|
|
379
|
+
format:
|
|
380
|
+
pattern: "PA-99999"
|
|
381
|
+
regex: '\A(?:PA-?\d{5}|\d{5}-?PA)\z'
|
|
382
|
+
charset: { notes: "reported official-use formats PA-12345 and 12345-PA, i.e. the PA token appears at EITHER END - the same optional-position literal shape as New York's HX historical plates. A commercial official-use variant PA-1234A is also reported and is inside neither alternative; it is recorded here rather than silently widening the regex." }
|
|
383
|
+
design:
|
|
384
|
+
background: { finish: retroreflective }
|
|
385
|
+
legend_top: "PENNSYLVANIA"
|
|
386
|
+
emblem: { present: true, rendered: placeholder }
|
|
387
|
+
display_note: "the locator reports that official-use PASSENGER plates require FRONT AND REAR display while official-use COMMERCIAL plates are rear only - which would make Pennsylvania's government fleet the exception to its own one-plate rule. Locator-grade and unverified; if true it is a notable inversion and worth a primary."
|
|
388
|
+
region_encoding: none
|
|
389
|
+
sources:
|
|
390
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Pennsylvania # LOCATOR ONLY: official-use PA-12345 / 12345-PA (passenger, front and rear) and PA-12345 / PA-1234A (commercial, rear only)"
|
|
391
|
+
notes: "GOVERNMENT. Locator-grade throughout; the front-and-rear claim for official passenger plates is the part most worth verifying, because it would contradict the state's general display posture."
|
|
392
|
+
|
|
393
|
+
# =========================================================================
|
|
394
|
+
# PERSONALISED — Pennsylvania publishes the most PRECISE separator rule of
|
|
395
|
+
# any state in this group, and it is encoded exactly.
|
|
396
|
+
# =========================================================================
|
|
397
|
+
- id: us-pa-personalized
|
|
398
|
+
class: personalized
|
|
399
|
+
categories: [car, van, truck, motorcycle, trailer]
|
|
400
|
+
period: { start: 2017 }
|
|
401
|
+
period_evidence: agency-page-in-force
|
|
402
|
+
format_evidence: official-agency-text
|
|
403
|
+
matching: strict
|
|
404
|
+
format:
|
|
405
|
+
pattern: "LLLLLLL"
|
|
406
|
+
regex: '\A(?:[A-Z0-9]{1,7}|[A-Z0-9][- ][A-Z0-9]{1,6}|[A-Z0-9]{2}[- ][A-Z0-9]{1,5}|[A-Z0-9]{3}[- ][A-Z0-9]{1,4}|[A-Z0-9]{4}[- ][A-Z0-9]{1,3}|[A-Z0-9]{5}[- ][A-Z0-9]{1,2}|[A-Z0-9]{6}[- ][A-Z0-9])\z'
|
|
407
|
+
charset:
|
|
408
|
+
notes: >-
|
|
409
|
+
PennDOT, in its own words: 'Personalized registration plates may
|
|
410
|
+
contain up to seven letters and numbers in combination.' And, crucially:
|
|
411
|
+
'One hyphen or one space is permitted, but not both. Special characters
|
|
412
|
+
are not available.' THAT IS THE MOST EXACT SEPARATOR RULE ANY
|
|
413
|
+
AUTHORITY IN THIS GROUP PUBLISHES, and it is encoded exactly rather
|
|
414
|
+
than approximated - the alternation enumerates the seven ways one
|
|
415
|
+
separator can split at most seven alphanumerics, so the regex accepts
|
|
416
|
+
A-B and ABCDEF-G and rejects A-B-C and the eight-character forms. A
|
|
417
|
+
motorcycle personal plate is capped at five characters instead of seven.
|
|
418
|
+
pattern_note: >-
|
|
419
|
+
WHY THE ALTERNATION AND NOT A LOOKAHEAD: bounding total length with a
|
|
420
|
+
lookahead would require either an unescaped wildcard or a character class
|
|
421
|
+
MIXING separators with the serial alphabet, and PRD-PLATES §2.8 forbids
|
|
422
|
+
the second while the lint rejects the first. The alternation is longer
|
|
423
|
+
and is the only spelling that satisfies the separator contract, which is
|
|
424
|
+
a small but real demonstration that §2.8's rule has teeth.
|
|
425
|
+
eligibility: "PennDOT: 'Requests for personal registration plates are restricted to: passenger vehicles, motorcycles, motor homes, trailers, trucks with a registered gross weight of not more than 14,000 pound'."
|
|
426
|
+
fee: "per Form MV-70S, the Bureau of Motor Vehicles Schedule of Fees; PennDOT does not state the amount on the plate page itself (recorded gap)."
|
|
427
|
+
region_encoding: none
|
|
428
|
+
sources:
|
|
429
|
+
- "https://www.pa.gov/en/agencies/dmv/vehicle-services/registration-plates/personalized-registration-plates.html # PennDOT: seven characters (five for motorcycles); 'One hyphen or one space is permitted, but not both. Special characters are not available.'; the eligible vehicle list; the MV-70S fee pointer"
|
|
430
|
+
notes: >-
|
|
431
|
+
PERSONALISED — THE BEST-SPECIFIED FORMAT IN THE MID-ATLANTIC GROUP.
|
|
432
|
+
Pennsylvania is the only authority here that states its separator rule in
|
|
433
|
+
terms, and the rule it states is unusually strict (exactly one, hyphen or
|
|
434
|
+
space, never both). Encoding it exactly rather than as a loose
|
|
435
|
+
seven-character bound is the difference between a regex that validates and
|
|
436
|
+
one that merely shapes.
|
|
437
|
+
|
|
438
|
+
# =========================================================================
|
|
439
|
+
# SPECIALTY — THE PROGRAM INDEX, per PRD-PLATES §2.5.
|
|
440
|
+
# =========================================================================
|
|
441
|
+
- id: us-pa-specialty-index
|
|
442
|
+
class: specialty
|
|
443
|
+
categories: [car, van, truck, motorcycle, trailer]
|
|
444
|
+
period: { start: 2017 }
|
|
445
|
+
period_evidence: agency-page-in-force
|
|
446
|
+
format_evidence: official-agency-text
|
|
447
|
+
matching: strict
|
|
448
|
+
format:
|
|
449
|
+
pattern: "LLL9999"
|
|
450
|
+
regex: '\A[A-Z]{3}\d{4}\z'
|
|
451
|
+
charset: { notes: "specialty plates carry ordinary serials on an alternative design and PennDOT says 'the majority of which can be personalized', so the seven-character personalisation frame applies to most of them." }
|
|
452
|
+
design:
|
|
453
|
+
background: { finish: retroreflective }
|
|
454
|
+
note: "one design per authorised programme; the designs themselves are L4 scope (PRD-PLATES §2.5) and none is described here"
|
|
455
|
+
emblem: { present: true, rendered: placeholder }
|
|
456
|
+
program_index:
|
|
457
|
+
structure_official: >-
|
|
458
|
+
PennDOT publishes SEVEN plate tracks: Standard Issue, Military, Special
|
|
459
|
+
Fund, Special Organization, Personalized, Specialty, and Plates for
|
|
460
|
+
Persons with Disabilities. Special Fund and Special Organization are the
|
|
461
|
+
two that behave like other states' specialty programmes - Special Fund
|
|
462
|
+
plates direct money to a designated fund, Special Organization plates are
|
|
463
|
+
sponsored by an outside body.
|
|
464
|
+
count_official: null
|
|
465
|
+
count_official_note: >-
|
|
466
|
+
NO COUNT IS PUBLISHED AND NONE IS INVENTED. PennDOT replaced its static
|
|
467
|
+
plate lists with a SEARCH INTERFACE, and both the Special Fund and the
|
|
468
|
+
Special Organization search pages returned 'No results found' for an
|
|
469
|
+
empty query on 2026-08-02 - i.e. the agency's own catalogue is not
|
|
470
|
+
enumerable without knowing what to search for. That is a genuine
|
|
471
|
+
regression in public data and is recorded as such: Pennsylvania is
|
|
472
|
+
HARDER to index today than it was when the lists were static pages.
|
|
473
|
+
official_quote: "PennDOT: 'Pennsylvania also offers Special Fund, Speciality, Military and Special Organization license plates, the majority of which can be personalized.' (agency's own spelling of 'Speciality' preserved)"
|
|
474
|
+
special_organization_quote: "PennDOT: 'We make special organization plates showcasing Pennsylvania as the birthplace of America and featuring the Liberty Bell.'"
|
|
475
|
+
index_url: "https://www.pa.gov/en/agencies/dmv/vehicle-services/registration-plates.html"
|
|
476
|
+
special_fund_url: "https://www.pa.gov/services/dmv/apply-for-special-fund-registration-plates.html"
|
|
477
|
+
special_organization_url: "https://www.pa.gov/services/dmv/apply-for-special-organization-registration-plates.html"
|
|
478
|
+
eligibility_note: "Special Organization plates are available for passenger cars, trucks under 14,000 pounds, trailers, motorcycles (with approved designs) and motorhomes; PennDOT instructs applicants to 'contact your organization to request a Special Organization Registration Plate Application' rather than applying directly."
|
|
479
|
+
churn_note: "no discontinuation rule was located in Chapter 13; recorded gap."
|
|
480
|
+
region_encoding: none
|
|
481
|
+
sources:
|
|
482
|
+
- "https://www.pa.gov/en/agencies/dmv/vehicle-services/registration-plates.html # the seven-track structure and the 'majority of which can be personalized' statement"
|
|
483
|
+
- "https://www.pa.gov/services/dmv/apply-for-special-organization-registration-plates.html # the special-organization description, eligibility list and application route; its search interface returned no results for an empty query"
|
|
484
|
+
- "https://www.pa.gov/services/dmv/apply-for-special-fund-registration-plates.html # the special-fund track; likewise not enumerable"
|
|
485
|
+
notes: >-
|
|
486
|
+
THE SPECIALTY PROGRAM INDEX. Pennsylvania is the negative case that makes
|
|
487
|
+
the index worth having: the programme plainly exists across four tracks,
|
|
488
|
+
PennDOT describes it in prose, and NOBODY - including PennDOT - publishes
|
|
489
|
+
a list or a number. Recording an explicit null with the reason (the
|
|
490
|
+
catalogue is behind a search box that will not enumerate) is the honest
|
|
491
|
+
output, and it tells a future pass exactly what to fix rather than leaving
|
|
492
|
+
a silent hole.
|
|
493
|
+
|
|
494
|
+
# ---------------------------------------------------------------------------
|
|
495
|
+
# GAPS.
|
|
496
|
+
# ---------------------------------------------------------------------------
|
|
497
|
+
gaps:
|
|
498
|
+
- "71 P.S. § 636 - the whole basis of the adverse artwork posture - was NOT FETCHED (403 on findlaw via two routes; palegis.us reset the connection). Highest-priority verification in this file."
|
|
499
|
+
- "palegis.us was unreachable on four attempts; §§ 1331 and 1332 were read through a third-party reproduction. Re-derive before applying."
|
|
500
|
+
- "NO PENNSYLVANIA INSTRUMENT PINNED FOR THE ONE-PLATE / REAR-ONLY RULE. Locator-grade only. Look to 67 Pa. Code."
|
|
501
|
+
- "67 Pa. Code (the department regulations § 1332(a) delegates mounting to, and the reflectorisation standards § 1331(d) delegates to) was not obtained."
|
|
502
|
+
- "NO SOURCED PLATE DIMENSION; Chapter 13 states none."
|
|
503
|
+
- "Introduction date of the current base disagrees between PennDOT (June 2025) and the locator (May 2025). Recorded, not resolved."
|
|
504
|
+
- "PennDOT's alt text says 'white background'; PennDOT's own image is cream. Recorded, not resolved."
|
|
505
|
+
- "Specialty catalogue is not enumerable - both official search pages return no results for an empty query."
|
|
506
|
+
- "Motorcycle: four reported arrangements, none dated; modelled as recall-only until a primary lands."
|