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,602 @@
|
|
|
1
|
+
# plates/us-nc.yml — North Carolina (PRD-PLATES gate L2, group southeast-a).
|
|
2
|
+
#
|
|
3
|
+
# THE NORTH CAROLINA FINDING: THE STANDARD PLATE IS A CHOICE OF THREE, AND THE
|
|
4
|
+
# CHOICE IS IN THE STATUTE. N.C. Gen. Stat. § 20-63(b) gives the owner of a
|
|
5
|
+
# private passenger vehicle a statutory election between "(i) a 'First in
|
|
6
|
+
# Flight' plate, (ii) a 'First in Freedom' plate, or (iii) a 'National/State
|
|
7
|
+
# Mottos' plate", and the same subsection then DESCRIBES one of them in law:
|
|
8
|
+
# the First in Flight plate "shall have the words 'First in Flight' printed at
|
|
9
|
+
# the top of the plate above all other letters and numerals. The background of
|
|
10
|
+
# the 'First in Flight' plate shall depict the Wright Brothers biplane flying
|
|
11
|
+
# over Kitty Hawk Beach." A US state legislature specifying the SCENE on its
|
|
12
|
+
# plate is rare, and it makes North Carolina the only state in this group whose
|
|
13
|
+
# standard artwork is described by an edict of government.
|
|
14
|
+
#
|
|
15
|
+
# CONSEQUENCE FOR THE SCHEMA: North Carolina has THREE CONCURRENT CURRENT
|
|
16
|
+
# STANDARD SERIES, not one, and they are not variants of each other — they run
|
|
17
|
+
# in DISJOINT SERIAL BLOCKS, which means the plate string itself tells you
|
|
18
|
+
# which design you are looking at. That is a genuinely useful parse signal and
|
|
19
|
+
# it is modelled as three series under PRD-PLATES §2.3 (own series iff format
|
|
20
|
+
# OR design OR period differs — here design and period both differ).
|
|
21
|
+
#
|
|
22
|
+
# SOURCING PATH DISCLOSURE, REQUIRED BY HONESTY: the North Carolina General
|
|
23
|
+
# Assembly's own statute service (ncleg.gov) returns HTTP 403 from a Cloudflare
|
|
24
|
+
# challenge to every automated fetch attempted in this pass — HTML and PDF,
|
|
25
|
+
# with and without browser headers. § 20-63 and § 20-79.1 were therefore read
|
|
26
|
+
# through a third-party reproduction (codes.findlaw.com). The UNDERLYING TEXT
|
|
27
|
+
# is an edict of government and public domain; the READING PATH is second-hand
|
|
28
|
+
# and is disclosed at every citation below with the marker "[via FindLaw;
|
|
29
|
+
# ncleg.gov 403]". A verifier with browser access should re-derive both
|
|
30
|
+
# sections from ncleg.gov directly before this file is applied.
|
|
31
|
+
#
|
|
32
|
+
# EVIDENCE GRADES — the four defined in us-va.yml: statutory-date,
|
|
33
|
+
# official-agency-date, instrument-in-force-upper-bound,
|
|
34
|
+
# secondary-locator-unverified.
|
|
35
|
+
jurisdiction: us-nc
|
|
36
|
+
authority:
|
|
37
|
+
name: North Carolina Division of Motor Vehicles (NCDMV)
|
|
38
|
+
url: "https://www.ncdot.gov/dmv/title-registration/license-plates/Pages/default.aspx"
|
|
39
|
+
binding: vehicle
|
|
40
|
+
statute_edition: "North Carolina General Statutes, Chapter 20 (Motor Vehicles), Article 3 — §§ 20-63 and 20-79.1 as reproduced by codes.findlaw.com and read 2026-08-01; ncleg.gov itself was unreachable (403)"
|
|
41
|
+
|
|
42
|
+
# ---------------------------------------------------------------------------
|
|
43
|
+
# artwork_risk — required per jurisdiction by PRD-PLATES §4.
|
|
44
|
+
# ---------------------------------------------------------------------------
|
|
45
|
+
artwork_risk:
|
|
46
|
+
posture: public-domain-favourable
|
|
47
|
+
basis: >-
|
|
48
|
+
NORTH CAROLINA IS THE SECOND-BEST POSTURE IN THIS GROUP AFTER GEORGIA'S
|
|
49
|
+
GENERAL RULE, AND UNLIKE GEORGIA IT CARRIES NO PLATE-SPECIFIC CARVE-OUT.
|
|
50
|
+
Two independent supports. First, the public-records statute: N.C. Gen.
|
|
51
|
+
Stat. Chapter 132 provides that "The public records and public information
|
|
52
|
+
compiled by the agencies of North Carolina government or its subdivisions
|
|
53
|
+
are the property of the people. Therefore, it is the policy of this State
|
|
54
|
+
that the people may obtain copies of their public records and public
|
|
55
|
+
information free or at minimal cost unless otherwise specifically provided
|
|
56
|
+
by law." Second, the State Library of North Carolina treats state
|
|
57
|
+
documents in its collection as public domain under US copyright law and
|
|
58
|
+
publishes a State Document Public Domain Notice to that effect. Third, and
|
|
59
|
+
specific to this dataset, the standard plate's artwork is DESCRIBED IN THE
|
|
60
|
+
STATUTE ITSELF (§ 20-63(b), the Wright Brothers biplane over Kitty Hawk
|
|
61
|
+
Beach), and statutes are edicts of government — public domain at every
|
|
62
|
+
level, in every state, including states that assert copyright generally.
|
|
63
|
+
known_exceptions: >-
|
|
64
|
+
North Carolina's general "property of the people" rule is NOT absolute and
|
|
65
|
+
the exceptions are named: state law describes some specific record types
|
|
66
|
+
in which the State may hold copyright — archaeological resources collected
|
|
67
|
+
or excavated from State lands together with associated records and data,
|
|
68
|
+
and original tapes, notes, discs or other records created by stenotype,
|
|
69
|
+
shorthand or stenomask equipment as part of trial recording. NEITHER
|
|
70
|
+
EXCEPTION TOUCHES LICENSE PLATES. That matters: the honest posture is
|
|
71
|
+
"favourable with enumerated carve-outs, none applicable", not "everything
|
|
72
|
+
North Carolina makes is free".
|
|
73
|
+
no_commons_tag: >-
|
|
74
|
+
Wikimedia Commons has NO {{PD-NCGov}} template (HTTP 404, checked
|
|
75
|
+
2026-08-01), where it does have PD-FLGov, PD-CAGov and PD-GAGov. The
|
|
76
|
+
absence of a Commons tag is NOT evidence against the posture — it is
|
|
77
|
+
evidence that nobody has written the tag. Recorded so that a later reader
|
|
78
|
+
does not mistake a missing template for an adverse finding.
|
|
79
|
+
emblem_rule: >-
|
|
80
|
+
PRD-PLATES §3's placeholder default still applies to the Wright Flyer
|
|
81
|
+
graphic, the quill-pen graphic and the national-flag motif until each is
|
|
82
|
+
affirmatively cleared per-emblem. Even under a favourable copyright
|
|
83
|
+
posture, STATE SEALS AND EMBLEMS carry protection independent of copyright
|
|
84
|
+
and that question is unresearched for North Carolina. Render `emblem:
|
|
85
|
+
{present: true, rendered: placeholder}`.
|
|
86
|
+
photograph_caution: "Commons photographs of North Carolina plates carry the photographer's licence on the photograph, not on the design. Our renders are generated from data, never derived from a photograph, so those obligations never attach."
|
|
87
|
+
sources:
|
|
88
|
+
- "https://www.ncleg.gov/EnactedLegislation/Statutes/HTML/ByChapter/Chapter_132.html # N.C. Gen. Stat. Chapter 132: public records and public information are 'the property of the people' (URL pinned; the host 403s automated fetches, see the header disclosure)"
|
|
89
|
+
- "http://digital.ncdcr.gov/cdm/ref/collection/p249901coll22/id/63754 # State Document Public Domain Notice, State Library of North Carolina"
|
|
90
|
+
- "http://copyright.lib.harvard.edu/states/north_carolina/ # Copyright at Harvard Library, North Carolina: the enumerated exceptions (archaeological resources; stenotype/shorthand/stenomask trial records) in which the State may hold copyright"
|
|
91
|
+
- "https://en.wikipedia.org/wiki/Copyright_status_of_works_by_subnational_governments_of_the_United_States # LOCATOR ONLY: the survey entry that chases to the three primaries above"
|
|
92
|
+
- "https://commons.wikimedia.org/wiki/Template:PD-NCGov # HTTP 404 — no Commons tag exists; recorded so its absence is not misread as adverse"
|
|
93
|
+
|
|
94
|
+
us_standards:
|
|
95
|
+
no_federal_mandate: true
|
|
96
|
+
chain: "SAE J686 -> AAMVA License Plate Standard Edition 3 (September 2025) -> voluntary state adoption; AAMVA's declarative present is RECOMMENDED PRACTICE, not requirement."
|
|
97
|
+
aamva_edition_3:
|
|
98
|
+
dimensions_delegated: "AAMVA §3.1 delegates dimensions and bolt holes to SAE J686, whose text is paywalled and was NOT obtained. No J686 dimension is quoted."
|
|
99
|
+
character_layout: "AAMVA §2.2: characters at least 2.5 in high, spaced at least 0.25 in apart, stroke weight 0.2-0.4 in, at least 1.25 in clear of top and bottom edges"
|
|
100
|
+
legibility_comparison: "AAMVA §3.3 asks for readability from at least 75 feet day AND night. N.C. Gen. Stat. § 20-63(c) legislates 100 feet in daylight — the same figure West Virginia legislates in §17A-3-14(b)(2). Two states of this group, one number, arrived at independently."
|
|
101
|
+
retroreflectivity_gap: >-
|
|
102
|
+
NORTH CAROLINA'S PLATE STATUTE DOES NOT REQUIRE RETROREFLECTIVITY. This
|
|
103
|
+
is a real absence, not an oversight in the research: § 20-63 sets a
|
|
104
|
+
100-foot DAYLIGHT legibility bar and says nothing about night. Compare
|
|
105
|
+
South Carolina (§ 56-3-1230(B): "The face of the license plate must be
|
|
106
|
+
treated completely with a retroreflective material"), Georgia
|
|
107
|
+
(§ 40-2-31(c), same), West Virginia (§17A-3-14(b)(1): "Plates must
|
|
108
|
+
incorporate reflectorized material") and Florida (§ 320.06(3)(a)). Four
|
|
109
|
+
of the five states in this group legislate reflectivity; North Carolina
|
|
110
|
+
does not. Its plates are reflective in fact — the design descriptions all
|
|
111
|
+
say "reflective white" — but that is DEPARTMENTAL PRACTICE, and this file
|
|
112
|
+
records it as such.
|
|
113
|
+
replacement_cycle: "AAMVA §1.1 recommends a cycle not to exceed 7 to 10 years. No North Carolina replacement cycle was located in § 20-63 (recorded gap)."
|
|
114
|
+
source: "https://www.aamva.org/getmedia/646bcc8a-219b-47d8-b5cd-726240473163/License-Plate-Standard-Edition-3_September-2025-Update.pdf"
|
|
115
|
+
folklore_caution: "The '1956 AMA standardization agreement' remains COMMONLY REPEATED AND NOT PRIMARY-SOURCED; see the fuller note in us-va.yml. North Carolina's plate dimensions are not in § 20-63, so this file makes no North Carolina dimension claim."
|
|
116
|
+
|
|
117
|
+
display_rules:
|
|
118
|
+
default: "ONE plate. § 20-63(a) [via FindLaw; ncleg.gov 403]: 'The Division upon registering a vehicle shall issue to the owner one registration plate for a motorcycle, trailer or semitrailer and for every other motor vehicle.'"
|
|
119
|
+
position: "§ 20-63(d) [via FindLaw; ncleg.gov 403] is drafted for the two-plate case and then falls through: plates 'shall be attached thereto, one in the front and the other in the rear: Provided, that when only one registration plate is issued for a motor vehicle ... said registration plate shall be attached to the rear.' Because § 20-63(a) issues one, the operative North Carolina rule is REAR ONLY — reached through a proviso rather than stated directly, which is worth noting for anyone quoting the statute at a glance."
|
|
120
|
+
legibility: "§ 20-63(c): 'Such registration plate and the required numerals thereon, except the year number for which issued, shall be of sufficient size to be plainly readable from a distance of 100 feet during daylight.' Note the carve-out — the YEAR NUMBER is exempt from the 100-foot rule, so a legibility model must not apply one threshold to the whole plate."
|
|
121
|
+
plate_contents: "§ 20-63(b): 'Every license plate must display the registration number assigned to the vehicle for which it is issued, the name of the State of North Carolina, which may be abbreviated, and the year number for which it is issued or the date of expiration.'"
|
|
122
|
+
sticker_abolition: "OFFICIAL AND DATED: 'Effective October 1, 2026, NCDMV is no longer issuing physical license plate stickers or printed vehicle registration cards.' (NCDMV). A US state removing the validation sticker from the plate entirely is a design change with direct consequences for any renderer or ALPR model that expects one, and it is the single most time-sensitive fact in this file."
|
|
123
|
+
sources:
|
|
124
|
+
- "https://codes.findlaw.com/nc/chapter-20-motor-vehicles/nc-gen-st-sect-20-63.html # N.C. Gen. Stat. § 20-63 [via FindLaw; ncleg.gov 403]: (a) one plate; (b) plate contents and the three-design election, with the First in Flight description; (c) the 100-foot daylight rule and its year-number carve-out; (d) front/rear with the single-plate proviso"
|
|
125
|
+
- "https://www.ncdot.gov/dmv/title-registration/license-plates/Pages/default.aspx # NCDMV: the three standard designs by name, the October 1 2026 abolition of physical stickers and printed registration cards, and the specialty and personalized programmes"
|
|
126
|
+
|
|
127
|
+
series:
|
|
128
|
+
|
|
129
|
+
# =========================================================================
|
|
130
|
+
# CURRENT STANDARD ISSUE — THREE CONCURRENT SERIES, ONE PER STATUTORY
|
|
131
|
+
# DESIGN ELECTION, RUNNING IN DISJOINT SERIAL BLOCKS.
|
|
132
|
+
# =========================================================================
|
|
133
|
+
- id: us-nc-standard-first-in-flight
|
|
134
|
+
class: standard
|
|
135
|
+
categories: [car, van, truck]
|
|
136
|
+
period: { start: 2009 }
|
|
137
|
+
period_evidence: secondary-locator-unverified
|
|
138
|
+
matching: strict
|
|
139
|
+
format:
|
|
140
|
+
pattern: "LLL-9999"
|
|
141
|
+
regex: '\A[A-Z]{3}-?\d{4}\z'
|
|
142
|
+
regex_strict: '\A[A-Z][A-M][A-Z]-?\d{4}\z'
|
|
143
|
+
format_evidence: secondary-locator-unverified
|
|
144
|
+
charset:
|
|
145
|
+
notes: >-
|
|
146
|
+
THE SECOND LETTER IS THE CONSTRAINT, AND IT IS AN ALLOCATION RULE
|
|
147
|
+
RATHER THAN A LOOKALIKE EXCLUSION. On the current North Carolina
|
|
148
|
+
bases the second letter of the serial runs strictly A through M — so
|
|
149
|
+
AMZ is followed by BAA, BMZ by CAA, and so on. That is what
|
|
150
|
+
`regex_strict` encodes. It is a rationing device, not a legibility
|
|
151
|
+
one: North Carolina is not avoiding I/O/Q here, it is halving each
|
|
152
|
+
three-letter block so that three concurrent designs can share one
|
|
153
|
+
alphabet without colliding. The mirror-image rule ran on the
|
|
154
|
+
1985-2007 base with the second letter strictly N through Z, and the
|
|
155
|
+
switch from N-Z to A-M happened when ZZZ-9999 was reached in 2010.
|
|
156
|
+
progression: >-
|
|
157
|
+
Reported blocks for THIS design: AAA-1001 onwards from December 2010,
|
|
158
|
+
reaching approximately LKE-7520 by mid-2025; the immediately
|
|
159
|
+
preceding stretch of the same design ran ZNE-1001 to ZZZ-9999 from
|
|
160
|
+
October 2009. First letters are therefore in the A-L range and are
|
|
161
|
+
expected to run to N before exhaustion. LOCATOR-GRADE.
|
|
162
|
+
design:
|
|
163
|
+
plate: { w: 12, h: 6, unit: in, dimension_evidence: convention-not-sourced }
|
|
164
|
+
plate_dimension_note: "no North Carolina dimension is sourced — § 20-63 states none. 12 x 6 in is the North American convention (AAMVA -> SAE J686, voluntary), not a North Carolina claim."
|
|
165
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
166
|
+
foreground: "#1F4E9C"
|
|
167
|
+
colour_note: >-
|
|
168
|
+
NO COLOUR IS IN § 20-63, AND NEITHER IS REFLECTIVITY (see
|
|
169
|
+
us_standards.aamva_edition_3.retroreflectivity_gap). Blue serial on
|
|
170
|
+
reflective white with a light blue Wright Flyer graphic is
|
|
171
|
+
`hex_basis: observed` from a locator description. One locator detail
|
|
172
|
+
is worth carrying because it is a legibility fact rather than an
|
|
173
|
+
aesthetic one: North Carolina ran RED serials on this design from
|
|
174
|
+
April 2007 and reverted to blue in October 2009 "following
|
|
175
|
+
complaints that the red serials were too hard to read from a
|
|
176
|
+
distance" — which is precisely the § 20-63(c) 100-foot bar being
|
|
177
|
+
enforced by public complaint rather than by statute.
|
|
178
|
+
legend_top: "First in Flight"
|
|
179
|
+
legend_rule: >-
|
|
180
|
+
§ 20-63(b) [via FindLaw; ncleg.gov 403], verbatim: the First in
|
|
181
|
+
Flight plate "shall have the words 'First in Flight' printed at the
|
|
182
|
+
top of the plate above all other letters and numerals. The background
|
|
183
|
+
of the 'First in Flight' plate shall depict the Wright Brothers
|
|
184
|
+
biplane flying over Kitty Hawk Beach." THE STATUTE SPECIFIES THE
|
|
185
|
+
SCENE. This is the only standard-plate artwork in group southeast-a
|
|
186
|
+
that is described by an edict of government, and it is the reason
|
|
187
|
+
North Carolina's design facts are quotable where Virginia's and West
|
|
188
|
+
Virginia's are not.
|
|
189
|
+
graphic: { present: true, rendered: placeholder, description: "Wright Brothers biplane flying over Kitty Hawk Beach, per § 20-63(b)" }
|
|
190
|
+
emblem: { present: true, rendered: placeholder }
|
|
191
|
+
band: { side: none }
|
|
192
|
+
rear_differs: false
|
|
193
|
+
digit_note: "locator-reported: newer production of this and the other two current designs uses an updated '8' glyph to differentiate it from 'B' — a glyph-level anti-confusion change within an unchanged design, invisible to any serial-range model"
|
|
194
|
+
region_encoding:
|
|
195
|
+
kind: optional-county-block
|
|
196
|
+
mechanism: "since 1999 the OBX prefix has been issued as a special series for DARE COUNTY (the Outer Banks). It is a reserved three-letter block carrying a geographic meaning inside an otherwise geography-free serial space."
|
|
197
|
+
evidence: secondary-locator-unverified
|
|
198
|
+
note: "this is the ONLY geographic signal located in a North Carolina serial. It is a reserved BLOCK, not a systematic county encoding: 99 of North Carolina's 100 counties leave no trace in the plate string, so a decode table would have exactly one row. Recorded because a one-row decode table is still a real fact and because a parse API that reports 'OBX -> Dare County' is right."
|
|
199
|
+
sources:
|
|
200
|
+
- "https://codes.findlaw.com/nc/chapter-20-motor-vehicles/nc-gen-st-sect-20-63.html # § 20-63(b) [via FindLaw; ncleg.gov 403]: the three-design election and the verbatim First in Flight description (words at top, Wright Brothers biplane over Kitty Hawk Beach); (a) one plate; (c) 100-foot daylight legibility"
|
|
201
|
+
- "https://www.ncdot.gov/dmv/title-registration/license-plates/Pages/default.aspx # NCDMV names 'First in Flight' as one of three standard designs available for private passenger and private hauler vehicles and states what it commemorates (the Wright Brothers' first powered flight at Kitty Hawk, 1903)"
|
|
202
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_North_Carolina # LOCATOR ONLY (PRD-PLATES §4): the October 2009 blue-serial start, the December 2010 AAA-1001 block reset, the second-letter A-M allocation rule, the red-to-blue legibility reversion, the updated '8' glyph, and the OBX/Dare County series. None asserted as sourced."
|
|
203
|
+
notes: >-
|
|
204
|
+
NORTH CAROLINA FIRST IN FLIGHT — the default of the three statutory
|
|
205
|
+
designs and the oldest continuously issued. It is also one of the five
|
|
206
|
+
oldest US plate DESIGNS still in use by lineage (the First in Flight
|
|
207
|
+
concept dates to 1982, when it won ALPCA's Plate of the Year, the only
|
|
208
|
+
time North Carolina has been so honoured). The period recorded here is
|
|
209
|
+
for the CURRENT blue-serial execution from October 2009; the 1982-2007
|
|
210
|
+
lineage is L4 historical depth and is deliberately not modelled at this
|
|
211
|
+
gate. All three current designs share one format and one allocation rule
|
|
212
|
+
and differ only in artwork and serial block — which is exactly why they
|
|
213
|
+
are three series and not one with variants: PRD-PLATES §2.3 makes design
|
|
214
|
+
difference sufficient.
|
|
215
|
+
|
|
216
|
+
- id: us-nc-standard-first-in-freedom
|
|
217
|
+
class: standard
|
|
218
|
+
categories: [car, van, truck]
|
|
219
|
+
period: { start: 2015 }
|
|
220
|
+
period_evidence: secondary-locator-unverified
|
|
221
|
+
matching: strict
|
|
222
|
+
format:
|
|
223
|
+
pattern: "LLL-9999"
|
|
224
|
+
regex: '\A[A-Z]{3}-?\d{4}\z'
|
|
225
|
+
regex_strict: '\A[A-Z][A-M][A-Z]-?\d{4}\z'
|
|
226
|
+
format_evidence: secondary-locator-unverified
|
|
227
|
+
charset: { notes: "same second-letter A-M allocation rule as the other two current designs; see us-nc-standard-first-in-flight for the reasoning" }
|
|
228
|
+
progression: "reported: PAA-1001 onwards from 1 July 2015, reaching approximately RKT-1298 by May 2025, with PMZ followed by RAA and RMZ to be followed by SAA — a P/R/S first-letter block disjoint from First in Flight's A-L and from the Mottos plate's T-V. LOCATOR-GRADE."
|
|
229
|
+
design:
|
|
230
|
+
plate: { w: 12, h: 6, unit: in, dimension_evidence: convention-not-sourced }
|
|
231
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
232
|
+
foreground: "#1F4E9C"
|
|
233
|
+
legend_top: "First In Freedom"
|
|
234
|
+
legend_rule: "§ 20-63(b) [via FindLaw; ncleg.gov 403] names the 'First in Freedom' plate as one of the three elections but — unlike the First in Flight plate — does NOT describe its artwork. The quill-pen graphic and the two commemorative dates are therefore DEPARTMENTAL DESIGN, not statutory, and are recorded at a lower grade than the First in Flight scene."
|
|
235
|
+
graphic: { present: true, rendered: placeholder, description: "quill pen; locator-reported to carry the dates 20 May 1775 and 12 April 1776, commemorating the Mecklenburg Declaration and the Halifax Resolves" }
|
|
236
|
+
emblem: { present: true, rendered: placeholder }
|
|
237
|
+
rear_differs: false
|
|
238
|
+
region_encoding: none
|
|
239
|
+
sources:
|
|
240
|
+
- "https://codes.findlaw.com/nc/chapter-20-motor-vehicles/nc-gen-st-sect-20-63.html # § 20-63(b) [via FindLaw; ncleg.gov 403]: 'First in Freedom' as statutory election (ii), and the absence of any statutory description of its artwork"
|
|
241
|
+
- "https://www.ncdot.gov/dmv/title-registration/license-plates/Pages/default.aspx # NCDMV: 'First in Freedom: Recognizes two important North Carolina milestones in the American Revolution'"
|
|
242
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_North_Carolina # LOCATOR ONLY: the 1 July 2015 start, the PAA-1001 block, the quill pen, and the two 1775/1776 dates"
|
|
243
|
+
notes: >-
|
|
244
|
+
NORTH CAROLINA FIRST IN FREEDOM — the second statutory election, added
|
|
245
|
+
1 July 2015. The instructive contrast with its sibling is the SOURCING
|
|
246
|
+
ASYMMETRY inside a single statutory subsection: § 20-63(b) describes the
|
|
247
|
+
First in Flight plate's background in law and says nothing at all about
|
|
248
|
+
this one's. A dataset that records "statutory" as a property of the
|
|
249
|
+
SERIES rather than of the CLAIM would flatten that difference and be
|
|
250
|
+
wrong twice. Note also the revived slogan: "FIRST IN FREEDOM" was North
|
|
251
|
+
Carolina's plate slogan on the 1975-78 base, retired, and brought back
|
|
252
|
+
forty years later as an optional design.
|
|
253
|
+
|
|
254
|
+
- id: us-nc-standard-national-state-mottos
|
|
255
|
+
class: standard
|
|
256
|
+
categories: [car, van, truck]
|
|
257
|
+
period: { start: 2019 }
|
|
258
|
+
period_evidence: secondary-locator-unverified
|
|
259
|
+
matching: strict
|
|
260
|
+
format:
|
|
261
|
+
pattern: "LLL-9999"
|
|
262
|
+
regex: '\A[A-Z]{3}-?\d{4}\z'
|
|
263
|
+
regex_strict: '\A[A-Z][A-M][A-Z]-?\d{4}\z'
|
|
264
|
+
format_evidence: secondary-locator-unverified
|
|
265
|
+
charset: { notes: "same second-letter A-M allocation rule; see us-nc-standard-first-in-flight" }
|
|
266
|
+
progression: "reported: TAA-1001 onwards from 1 July 2019, reaching approximately VFT-7102 by May 2025, with TMZ followed by VAA and VMZ to be followed by WAA. Note the SKIPPED LETTER: the block runs T then V, not T then U. LOCATOR-GRADE, and the skip is recorded rather than smoothed."
|
|
267
|
+
design:
|
|
268
|
+
plate: { w: 12, h: 6, unit: in, dimension_evidence: convention-not-sourced }
|
|
269
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
270
|
+
foreground: "#1F4E9C"
|
|
271
|
+
legend_top: "IN GOD WE TRUST"
|
|
272
|
+
legend_middle: "To Be Rather Than to Seem"
|
|
273
|
+
legend_rule: "§ 20-63(b) [via FindLaw; ncleg.gov 403] names the 'National/State Mottos' plate as election (iii) without describing it. NCDMV describes it as including both the United States motto ('In God We Trust') and the North Carolina motto ('To Be Rather Than to Seem') — the English translation of Esse quam videri."
|
|
274
|
+
graphic: { present: true, rendered: placeholder, description: "national flag motif at the top, locator-reported" }
|
|
275
|
+
emblem: { present: true, rendered: placeholder }
|
|
276
|
+
rear_differs: false
|
|
277
|
+
region_encoding: none
|
|
278
|
+
sources:
|
|
279
|
+
- "https://codes.findlaw.com/nc/chapter-20-motor-vehicles/nc-gen-st-sect-20-63.html # § 20-63(b) [via FindLaw; ncleg.gov 403]: 'National/State Mottos' as statutory election (iii)"
|
|
280
|
+
- "https://www.ncdot.gov/dmv/title-registration/license-plates/Pages/default.aspx # NCDMV: 'National/State Motto: Includes both the United States motto (In God We Trust) and North Carolina motto (To Be Rather Than to Seem)'"
|
|
281
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_North_Carolina # LOCATOR ONLY: the 1 July 2019 start, the TAA-1001 block, the T-then-V letter skip, and the national flag motif"
|
|
282
|
+
notes: >-
|
|
283
|
+
NORTH CAROLINA NATIONAL/STATE MOTTOS — the third and newest statutory
|
|
284
|
+
election, from 1 July 2019. Two details worth carrying. First, the
|
|
285
|
+
letter skip: the block goes T then V, so a consumer inferring "the next
|
|
286
|
+
block after T is U" is wrong, and a serial-range model built on
|
|
287
|
+
arithmetic rather than on the reported allocation will mis-attribute
|
|
288
|
+
U-series plates. Second, this design pairs a NATIONAL motto with a STATE
|
|
289
|
+
motto on the same plate, which is a different move from Florida's "In God
|
|
290
|
+
We Trust" variant (where the state motto simply replaces the county
|
|
291
|
+
legend) and worth distinguishing when the encyclopedia section compares
|
|
292
|
+
them.
|
|
293
|
+
|
|
294
|
+
# =========================================================================
|
|
295
|
+
# ONE SERIES BACK.
|
|
296
|
+
# =========================================================================
|
|
297
|
+
- id: us-nc-standard-first-in-flight-red-2007
|
|
298
|
+
class: standard
|
|
299
|
+
categories: [car, van, truck]
|
|
300
|
+
period: { start: 2007, end: 2009 }
|
|
301
|
+
period_evidence: secondary-locator-unverified
|
|
302
|
+
matching: strict
|
|
303
|
+
format:
|
|
304
|
+
pattern: "LLL-9999"
|
|
305
|
+
regex: '\A[A-Z]{3}-?\d{4}\z'
|
|
306
|
+
regex_strict: '\A[A-Z][N-Z][A-Z]-?\d{4}\z'
|
|
307
|
+
format_evidence: secondary-locator-unverified
|
|
308
|
+
charset:
|
|
309
|
+
notes: >-
|
|
310
|
+
THE ALLOCATION RULE IS THE MIRROR IMAGE OF TODAY'S. On this base and
|
|
311
|
+
its 1985-2007 predecessor the second letter ran strictly N through Z
|
|
312
|
+
— AZZ followed by BNA, BZZ by CNA — and that practice continued until
|
|
313
|
+
ZZZ-9999 was issued in 2010, at which point North Carolina reset to
|
|
314
|
+
AAA-1001 and inverted the rule to A-M. `regex_strict` here therefore
|
|
315
|
+
encodes [N-Z] where the current series encode [A-M], and the two are
|
|
316
|
+
disjoint in the second position. That disjointness is a genuine ERA
|
|
317
|
+
SIGNAL: second letter N-Z means pre-2010 allocation, A-M means
|
|
318
|
+
post-2010, and a parse API can date a North Carolina plate from one
|
|
319
|
+
character.
|
|
320
|
+
progression: "reported: WTF-1976 to approximately ZND-9999, issued mainly as replacements for earlier First in Flight plates carrying the older ABC-123 and ABC-12 formats. LOCATOR-GRADE."
|
|
321
|
+
design:
|
|
322
|
+
plate: { w: 12, h: 6, unit: in, dimension_evidence: convention-not-sourced }
|
|
323
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
324
|
+
foreground: "#C8102E"
|
|
325
|
+
colour_note: "RED serial on reflective white with the light blue Wright Flyer graphic. The red was abandoned in October 2009 after complaints that it was too hard to read at distance — the design difference from the current base is exactly one colour, which under PRD-PLATES §2.3 is enough to make it its own series."
|
|
326
|
+
legend_top: "First in Flight"
|
|
327
|
+
graphic: { present: true, rendered: placeholder, description: "Wright Brothers biplane flying over Kitty Hawk Beach, per § 20-63(b)" }
|
|
328
|
+
emblem: { present: true, rendered: placeholder }
|
|
329
|
+
rear_differs: false
|
|
330
|
+
region_encoding: none
|
|
331
|
+
sources:
|
|
332
|
+
- "https://codes.findlaw.com/nc/chapter-20-motor-vehicles/nc-gen-st-sect-20-63.html # § 20-63(b)-(c) [via FindLaw; ncleg.gov 403]: the same statutory frame and the 100-foot daylight bar the red serial was said to fail in practice"
|
|
333
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_North_Carolina # LOCATOR ONLY: April 2007 - October 2009, red serials, the WTF-1976 to ZND-9999 range, the second-letter N-Z rule, and the legibility complaints that ended it"
|
|
334
|
+
notes: >-
|
|
335
|
+
THE PREVIOUS NORTH CAROLINA STANDARD EXECUTION — a colour change, not a
|
|
336
|
+
redesign, and included for two reasons. First, it is the honest "one
|
|
337
|
+
series back" for the First in Flight lineage. Second, it carries the
|
|
338
|
+
second-letter N-Z allocation rule, which is the era signal described in
|
|
339
|
+
its charset notes and is far more useful to a parser than the colour
|
|
340
|
+
itself. The 2009 overlap with the current series is the rollout, with old
|
|
341
|
+
stock issuing on.
|
|
342
|
+
|
|
343
|
+
# =========================================================================
|
|
344
|
+
# CORE CLASSES.
|
|
345
|
+
# =========================================================================
|
|
346
|
+
- id: us-nc-motorcycle
|
|
347
|
+
class: motorcycle
|
|
348
|
+
categories: [motorcycle]
|
|
349
|
+
period: { start: 2026 }
|
|
350
|
+
period_evidence: instrument-in-force-upper-bound
|
|
351
|
+
matching: recall-only
|
|
352
|
+
format:
|
|
353
|
+
pattern: "LLLLLLL"
|
|
354
|
+
regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,6}\z'
|
|
355
|
+
charset:
|
|
356
|
+
notes: >-
|
|
357
|
+
recall-only. § 20-63 states no motorcycle serial arrangement, and
|
|
358
|
+
NCDMV does not publish one. The ONE sourced size fact is indirect but
|
|
359
|
+
real: NCDMV caps a PERSONALIZED private motorcycle plate at SEVEN
|
|
360
|
+
character spaces against EIGHT for a personal vehicle, so the
|
|
361
|
+
motorcycle plate's usable field is one character shorter than the
|
|
362
|
+
car's. The seven-character recall bound here is therefore not
|
|
363
|
+
arbitrary for North Carolina motorcycles — it matches the state's own
|
|
364
|
+
published personalized limit — but it is still a recall bound, not a
|
|
365
|
+
claim about department-assigned serials.
|
|
366
|
+
halfspace_note: "NCDMV: 'Some special characters occupy one-half space in width. Half-space characters are allowed on motorcycle license plates.' A character-space model that counts glyphs rather than WIDTHS will over- or under-count North Carolina motorcycle plates."
|
|
367
|
+
design:
|
|
368
|
+
plate: { unit: in, dimension_note: "reduced-size motorcycle plate; no North Carolina dimension is sourced" }
|
|
369
|
+
background: { finish: retroreflective }
|
|
370
|
+
emblem: { present: true, rendered: placeholder }
|
|
371
|
+
display: "ONE plate, rear (§ 20-63(a) and the (d) proviso)"
|
|
372
|
+
region_encoding: none
|
|
373
|
+
sources:
|
|
374
|
+
- "https://codes.findlaw.com/nc/chapter-20-motor-vehicles/nc-gen-st-sect-20-63.html # § 20-63(a) [via FindLaw; ncleg.gov 403]: one registration plate for a motorcycle; (d): single plate goes on the rear"
|
|
375
|
+
- "https://www.ncdot.gov/dmv/title-registration/license-plates/Pages/default.aspx # NCDMV character-limit table: private motorcycle 7 spaces against 8 for a personal vehicle; the half-space character rule specific to motorcycle plates"
|
|
376
|
+
notes: >-
|
|
377
|
+
NORTH CAROLINA MOTORCYCLE. Modelled separately because the statute names
|
|
378
|
+
motorcycles as their own issuance case in § 20-63(a) and because NCDMV
|
|
379
|
+
publishes a different character capacity for them. The half-space rule is
|
|
380
|
+
the kind of detail that never reaches a plate dataset and quietly breaks
|
|
381
|
+
validators: on a North Carolina motorcycle plate the constraint is
|
|
382
|
+
TYPOGRAPHIC WIDTH, not character count, so "7 characters" and "7 spaces"
|
|
383
|
+
are different limits and the state means the second.
|
|
384
|
+
|
|
385
|
+
- id: us-nc-trailer
|
|
386
|
+
class: trailer
|
|
387
|
+
categories: [trailer]
|
|
388
|
+
period: { start: 2026 }
|
|
389
|
+
period_evidence: instrument-in-force-upper-bound
|
|
390
|
+
matching: recall-only
|
|
391
|
+
format:
|
|
392
|
+
pattern: "LLLLLLL"
|
|
393
|
+
regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,6}\z'
|
|
394
|
+
charset: { notes: "recall-only; § 20-63 names trailers and semitrailers as a distinct issuance case but states no serial arrangement, and NCDMV publishes none. The personalized limit for a private trailer is 8 spaces, the same as a personal vehicle." }
|
|
395
|
+
design:
|
|
396
|
+
plate: { unit: in }
|
|
397
|
+
background: { finish: retroreflective }
|
|
398
|
+
display: "ONE plate, rear (§ 20-63(a) and the (d) proviso)"
|
|
399
|
+
region_encoding: none
|
|
400
|
+
sources:
|
|
401
|
+
- "https://codes.findlaw.com/nc/chapter-20-motor-vehicles/nc-gen-st-sect-20-63.html # § 20-63(a) [via FindLaw; ncleg.gov 403]: 'one registration plate for a motorcycle, trailer or semitrailer' — trailers named as their own case"
|
|
402
|
+
- "https://www.ncdot.gov/dmv/title-registration/license-plates/Pages/default.aspx # NCDMV character-limit table: private trailer 8 spaces"
|
|
403
|
+
notes: >-
|
|
404
|
+
NORTH CAROLINA TRAILER AND SEMITRAILER. Thin by design: the statute
|
|
405
|
+
establishes that trailers are separately handled, the DMV establishes
|
|
406
|
+
that they have their own personalized capacity, and nothing sourced
|
|
407
|
+
establishes a serial arrangement. Recorded rather than invented.
|
|
408
|
+
|
|
409
|
+
- id: us-nc-temporary
|
|
410
|
+
class: temporary
|
|
411
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
412
|
+
period: { start: 2026 }
|
|
413
|
+
period_evidence: instrument-in-force-upper-bound
|
|
414
|
+
matching: recall-only
|
|
415
|
+
format:
|
|
416
|
+
pattern: "LLLLLLL"
|
|
417
|
+
regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,6}\z'
|
|
418
|
+
charset: { notes: "recall-only. § 20-79.1 requires the DEALER to write information on the face of the plate by hand rather than the Division to assign a serial, so a 'serial format' in the usual sense may not exist for this class at all — which is itself the finding." }
|
|
419
|
+
design:
|
|
420
|
+
plate: { unit: in, dimension_note: "'designed by said Division'; NO design or size specification appears in § 20-79.1 (recorded gap). Contrast South Carolina, which legislates temporary-plate dimensions to the inch." }
|
|
421
|
+
background: { finish: null }
|
|
422
|
+
handwritten_content: >-
|
|
423
|
+
§ 20-79.1 [via FindLaw; ncleg.gov 403] requires the dealer to write
|
|
424
|
+
clearly on the plate: the DATES OF ISSUANCE AND EXPIRATION; the MAKE,
|
|
425
|
+
MOTOR NUMBER AND SERIAL NUMBERS of the vehicle; and any other
|
|
426
|
+
information the Division requires. It is an offence to make any
|
|
427
|
+
misstatement of fact or knowingly to write false information on the
|
|
428
|
+
face of the plate or marker.
|
|
429
|
+
validity: >-
|
|
430
|
+
§ 20-79.1: temporary plates or markers "shall expire and become void upon
|
|
431
|
+
the receipt of the limited registration plates or the annual registration
|
|
432
|
+
plates from the Division, or upon the rescission of a contract to
|
|
433
|
+
purchase a motor vehicle, or upon the expiration of 30 DAYS from the date
|
|
434
|
+
of issuance, depending upon whichever event shall first occur." A second
|
|
435
|
+
30-day plate may be issued in stated circumstances where title documents
|
|
436
|
+
cannot be obtained.
|
|
437
|
+
region_encoding: none
|
|
438
|
+
sources:
|
|
439
|
+
- "https://codes.findlaw.com/nc/chapter-20-motor-vehicles/nc-gen-st-sect-20-79-1.html # N.C. Gen. Stat. § 20-79.1 [via FindLaw; ncleg.gov 403]: the 30-day/receipt-of-plates/rescission expiry triple, the second-plate provision, the dealer's hand-written content duty, the falsification offence, and the absence of any size or design specification"
|
|
440
|
+
notes: >-
|
|
441
|
+
NORTH CAROLINA TEMPORARY PLATES, AND A SCHEMA OBSERVATION WORTH THE
|
|
442
|
+
ENTRY. This series' "format" is not a serial grammar at all: § 20-79.1
|
|
443
|
+
makes the DEALER write the dates and the vehicle's make and numbers onto
|
|
444
|
+
the plate face by hand. The identifier on a North Carolina temporary tag
|
|
445
|
+
is thus partly VEHICLE data, not registration data — closer to a
|
|
446
|
+
completed form than to an assigned serial. The regex is recall-only and
|
|
447
|
+
the honest reading of a match is "this could be some North Carolina
|
|
448
|
+
alphanumeric string", nothing more. THE EXPIRY RULE IS THE VALUABLE PART
|
|
449
|
+
and it is a triple, not a duration: whichever of receipt-of-plates,
|
|
450
|
+
contract rescission, or 30 days comes first.
|
|
451
|
+
|
|
452
|
+
- id: us-nc-dealer
|
|
453
|
+
class: dealer
|
|
454
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
455
|
+
period: { start: 2026 }
|
|
456
|
+
period_evidence: instrument-in-force-upper-bound
|
|
457
|
+
matching: recall-only
|
|
458
|
+
format:
|
|
459
|
+
pattern: "LLLLLLL"
|
|
460
|
+
regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,6}\z'
|
|
461
|
+
charset: { notes: "recall-only; N.C. Gen. Stat. § 20-79 (dealer license plates) was NOT obtained in this pass — ncleg.gov 403s and the FindLaw mirror for that section was not reached. Existence is inferred from § 20-79.1's own title, 'Use of temporary registration plates or markers by purchasers of motor vehicles IN LIEU OF DEALERS' PLATES', which presupposes a dealer plate regime." }
|
|
462
|
+
design:
|
|
463
|
+
plate: { unit: in }
|
|
464
|
+
background: { finish: retroreflective }
|
|
465
|
+
binding: business
|
|
466
|
+
region_encoding: none
|
|
467
|
+
sources:
|
|
468
|
+
- "https://codes.findlaw.com/nc/chapter-20-motor-vehicles/nc-gen-st-sect-20-79-1.html # § 20-79.1's title and text presuppose dealers' plates ('in lieu of dealers' plates'), which sources the EXISTENCE of the class and nothing more"
|
|
469
|
+
notes: >-
|
|
470
|
+
NORTH CAROLINA DEALER PLATES — THE WEAKEST ENTRY IN THIS FILE AND
|
|
471
|
+
LABELLED AS SUCH. § 20-79 is the governing section and it was not
|
|
472
|
+
obtained: the General Assembly's service 403s automated fetches and the
|
|
473
|
+
mirror for that particular section was not reached before this pass
|
|
474
|
+
closed. What is sourced is that the class EXISTS, from the neighbouring
|
|
475
|
+
section's own title. Everything else — plate count rules, legend,
|
|
476
|
+
serial, colour — is a recorded gap. A verifier with browser access should
|
|
477
|
+
open § 20-79 first; it is the single cheapest quality win available for
|
|
478
|
+
North Carolina.
|
|
479
|
+
|
|
480
|
+
# =========================================================================
|
|
481
|
+
# PERSONALIZED — the second officially-sourced glyph-in-serial finding in
|
|
482
|
+
# this group, and the wider of the two.
|
|
483
|
+
# =========================================================================
|
|
484
|
+
- id: us-nc-personalized
|
|
485
|
+
class: personalized
|
|
486
|
+
categories: [car, van, truck, motorcycle, trailer]
|
|
487
|
+
period: { start: 2026 }
|
|
488
|
+
period_evidence: instrument-in-force-upper-bound
|
|
489
|
+
matching: strict
|
|
490
|
+
format:
|
|
491
|
+
pattern: "LLLLLLL"
|
|
492
|
+
regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,6}\z'
|
|
493
|
+
charset:
|
|
494
|
+
notes: >-
|
|
495
|
+
NORTH CAROLINA OFFICIALLY PERMITS FOUR NON-ALPHANUMERIC GLYPHS INSIDE
|
|
496
|
+
A SERIAL, AND THE REGEX ABOVE CANNOT SPELL ANY OF THEM. NCDMV, in its
|
|
497
|
+
own words: "You can use numbers and some special characters,
|
|
498
|
+
including the question mark (?), ampersand (&), dollar sign ($) and
|
|
499
|
+
the 'at' symbol (@)." None of ?, &, $ or @ is in the dataset's serial
|
|
500
|
+
alphabet and none is a separator, so under PRD-PLATES §2.6 this is a
|
|
501
|
+
SCHEMA AMENDMENT — a `never_separator` entry with its source — and
|
|
502
|
+
not something a data file may decide alone. `matching: strict` is
|
|
503
|
+
still the correct value because the regex is NARROWER than what North
|
|
504
|
+
Carolina issues and §2.7 says narrower is strict; the consequence is
|
|
505
|
+
a KNOWN, SOURCED set of false negatives, recorded here rather than
|
|
506
|
+
hidden. SECOND, INDEPENDENT CHARSET FACT, and this one is a genuine
|
|
507
|
+
normalisation trap: "The letter 'O' is automatically converted into a
|
|
508
|
+
zero (0) on your personalized license plate to avoid confusion." So
|
|
509
|
+
North Carolina personalized serials contain NO letter O at all — a
|
|
510
|
+
state-enforced O-to-0 collapse at issue time, which means an OCR
|
|
511
|
+
pipeline that "corrects" 0 to O on a North Carolina vanity plate is
|
|
512
|
+
introducing the error rather than fixing it. THIRD: "Personalized
|
|
513
|
+
special plate requests must contain at least one letter."
|
|
514
|
+
character_limits:
|
|
515
|
+
source_note: "NCDMV's own table, in SPACES not characters (half-space glyphs exist; see us-nc-motorcycle)"
|
|
516
|
+
personal_vehicle: 8
|
|
517
|
+
private_motorcycle: 7
|
|
518
|
+
private_trailer: 8
|
|
519
|
+
disabled_license_plate: 6
|
|
520
|
+
special_license_plate: 4
|
|
521
|
+
note: "the SPECIAL-plate limit of 4 is the striking one: personalizing a North Carolina specialty plate leaves only four spaces, because the programme artwork occupies the rest of the field. Any model that assumes one vanity-length rule per state is wrong here by a factor of two."
|
|
522
|
+
design:
|
|
523
|
+
plate: { unit: in }
|
|
524
|
+
background: { finish: retroreflective }
|
|
525
|
+
note: "standard and specialty designs can both be personalized; personalized plates are manufactured by an outside vendor and take about 6-8 weeks (NCDMV)"
|
|
526
|
+
refusal_policy: >-
|
|
527
|
+
NCDMV reserves the right to refuse submissions deemed offensive to good
|
|
528
|
+
taste and decency, over the space limit, or duplicating another issued
|
|
529
|
+
plate. NCDMV states its own legal theory on the page, which is worth
|
|
530
|
+
quoting because it is the state explaining the doctrine to the public:
|
|
531
|
+
"Supreme Court case law has deemed state-issued license plates as
|
|
532
|
+
'government speech' and provides the issuing agency with broad discretion
|
|
533
|
+
in refusing to issue or recall a plate with an indecent word/phrase or
|
|
534
|
+
meaning. Therefore, such speech is not subject to a First Amendment
|
|
535
|
+
analysis."
|
|
536
|
+
relinquishment: "a personalized text may not be given away but its RIGHTS may be released: form MVR-27N is filed with the plate, which is returned with a special code that relinquishes the text to a named person, who may then request it (NCDMV)"
|
|
537
|
+
region_encoding: none
|
|
538
|
+
sources:
|
|
539
|
+
- "https://www.ncdot.gov/dmv/title-registration/license-plates/Pages/default.aspx # NCDMV: the permitted special characters (? & $ @), the automatic O-to-0 conversion, the at-least-one-letter rule, the five character-space limits, the half-space rule, the refusal criteria and the government-speech statement, and the MVR-27N relinquishment mechanism"
|
|
540
|
+
notes: >-
|
|
541
|
+
NORTH CAROLINA PERSONALIZED, AND THE STRONGEST SCHEMA FINDING OF GROUP
|
|
542
|
+
SOUTHEAST-A. Two of five states — North Carolina here with ? & $ @, and
|
|
543
|
+
Virginia with the ampersand — officially publish permission to print a
|
|
544
|
+
non-alphanumeric glyph INSIDE a serial. PRD-PLATES §2.6 anticipated this
|
|
545
|
+
exact case and prescribed the remedy: "A jurisdiction that prints a glyph
|
|
546
|
+
inside a serial is a schema amendment, not a data entry. If one lands, it
|
|
547
|
+
goes to _meta/separators.yml's `never_separator` list with its source, and
|
|
548
|
+
every consumer learns about it from one place." Two have landed, from
|
|
549
|
+
first-party DMV pages. The amendment is PROPOSED in the group dossier and
|
|
550
|
+
deliberately NOT made here. The O-to-0 conversion is separately valuable
|
|
551
|
+
and points the opposite way from every OCR heuristic in the field.
|
|
552
|
+
|
|
553
|
+
# =========================================================================
|
|
554
|
+
# SPECIALTY — PROGRAM INDEX ONLY (PRD-PLATES §2.5).
|
|
555
|
+
# =========================================================================
|
|
556
|
+
- id: us-nc-specialty-index
|
|
557
|
+
class: specialty
|
|
558
|
+
categories: [car, van, truck, motorcycle, trailer]
|
|
559
|
+
period: { start: 2026 }
|
|
560
|
+
period_evidence: instrument-in-force-upper-bound
|
|
561
|
+
matching: recall-only
|
|
562
|
+
format:
|
|
563
|
+
pattern: "LLLLLLL"
|
|
564
|
+
regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,6}\z'
|
|
565
|
+
charset: { notes: "specialty serials are shorter than standard ones — the personalized limit on a special plate is FOUR spaces against eight on a personal vehicle — so no arrangement claim is made and the index is recall-only" }
|
|
566
|
+
design:
|
|
567
|
+
plate: { unit: in }
|
|
568
|
+
background: { finish: retroreflective }
|
|
569
|
+
note: "one design per authorised programme; the designs themselves are L4 scope (PRD-PLATES §2.5) and none is described here"
|
|
570
|
+
emblem: { present: true, rendered: placeholder }
|
|
571
|
+
program_index:
|
|
572
|
+
count_official: "more than 100"
|
|
573
|
+
count_official_quote: "NCDMV, in its own words: 'NCDMV issues specialty license plates representing more than 100 causes and interest groups.'"
|
|
574
|
+
official_list_url: "https://www.ncdot.gov/dmv/title-registration/license-plates/Pages/default.aspx"
|
|
575
|
+
production_model: >-
|
|
576
|
+
THE MOST OPERATIONALLY DISTINCTIVE FACT: North Carolina specialty plates
|
|
577
|
+
are made in LIMITED PRODUCTION RUNS and go out of stock. NCDMV: "Special
|
|
578
|
+
plates are made in limited production runs, so your chosen plate may not
|
|
579
|
+
be available at the time you request it. Some speciality plates are
|
|
580
|
+
replaced with new designs; others may be discontinued. You are free to
|
|
581
|
+
choose another plate that is available, or if the plate is out of stock,
|
|
582
|
+
you may choose to have it mailed to you when it is back in stock." So
|
|
583
|
+
"authorised" and "obtainable" are different states in North Carolina at
|
|
584
|
+
any given moment, and a programme index that models only authorisation
|
|
585
|
+
will overstate what a resident can actually buy.
|
|
586
|
+
membership_gating: "NCDMV: specialty plates for most military and civic clubs are obtainable only on verification of membership or of the specific recognition — e.g. the Purple Heart plate requires proof of the award. The same proof-before-purchase pattern Florida labels a 'special requirement' subtype."
|
|
587
|
+
establishment_process: "organisations may apply to establish a NEW specialty plate through a published multi-step process (NCDMV, 'Process to establish a specialty plate')"
|
|
588
|
+
transfer_restriction: "on an owner's death some specialty plates (military, disabled veteran, disability) cannot transfer to a surviving spouse because the plates carry eligibility requirements; others, such as Prisoner of War, are transferable if the surviving spouse does not remarry and continues to renew annually (NCDMV)"
|
|
589
|
+
region_encoding: none
|
|
590
|
+
sources:
|
|
591
|
+
- "https://www.ncdot.gov/dmv/title-registration/license-plates/Pages/default.aspx # NCDMV: 'more than 100 causes and interest groups'; the limited-production/out-of-stock model; the membership and award verification gating; the establishment process; and the death-transfer restrictions"
|
|
592
|
+
notes: >-
|
|
593
|
+
THE NORTH CAROLINA SPECIALTY PROGRAM INDEX — one entry standing for the
|
|
594
|
+
whole programme, per PRD-PLATES §2.5. The count is NCDMV's own "more than
|
|
595
|
+
100" and is recorded as an agency estimate, not a count: unlike Virginia,
|
|
596
|
+
North Carolina does not expose a faceted search that would reconcile a
|
|
597
|
+
total. What North Carolina gives instead, and no other state in this group
|
|
598
|
+
does, is an honest statement of the LIMITED-PRODUCTION model — which is
|
|
599
|
+
the fact that explains why enthusiast catalogues and state lists never
|
|
600
|
+
agree anywhere in the US. The right L4 move here is not to chase a count
|
|
601
|
+
but to capture stock state over time, the way the Florida monthly
|
|
602
|
+
active-plate report should be captured.
|