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.
Files changed (189) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +164 -0
  3. data/CHANGELOG.md +321 -0
  4. data/README.md +88 -15
  5. data/data/PROVENANCE-vehicles.md +12 -0
  6. data/data/plates/PROVENANCE.md +10 -0
  7. data/data/plates/_decode/at-districts.yml +287 -0
  8. data/data/plates/_decode/ch-cantons.yml +110 -0
  9. data/data/plates/_decode/cn-issuing-offices.yml +463 -0
  10. data/data/plates/_decode/cn-provinces.yml +614 -0
  11. data/data/plates/_decode/cz-kraj.yml +159 -0
  12. data/data/plates/_decode/dk-serial-blocks.yml +327 -0
  13. data/data/plates/_decode/es-provinces.yml +116 -0
  14. data/data/plates/_decode/fr-departements.yml +191 -0
  15. data/data/plates/_decode/gb-age-identifiers.yml +170 -0
  16. data/data/plates/_decode/gb-memory-tags.yml +202 -0
  17. data/data/plates/_decode/gr-prefectures.yml +1408 -0
  18. data/data/plates/_decode/hr-cities.yml +315 -0
  19. data/data/plates/_decode/ie-counties.yml +227 -0
  20. data/data/plates/_decode/in-state-codes.yml +169 -0
  21. data/data/plates/_decode/is-districts-1938.yml +116 -0
  22. data/data/plates/_decode/it-provinces.yml +348 -0
  23. data/data/plates/_decode/jp-office-marks.yml +960 -0
  24. data/data/plates/_decode/jp-use-marks.yml +205 -0
  25. data/data/plates/_decode/kr-authority-marks.yml +146 -0
  26. data/data/plates/_decode/kr-use-syllables.yml +194 -0
  27. data/data/plates/_decode/lu-series-order.yml +638 -0
  28. data/data/plates/_decode/mx-entity-series.yml +380 -0
  29. data/data/plates/_decode/my-index-marks.yml +271 -0
  30. data/data/plates/_decode/no-counties-1913.yml +148 -0
  31. data/data/plates/_decode/no-districts.yml +901 -0
  32. data/data/plates/_decode/pl-powiats.yml +567 -0
  33. data/data/plates/_decode/pt-trailer-services.yml +96 -0
  34. data/data/plates/_decode/ro-counties.yml +213 -0
  35. data/data/plates/_decode/se-diplomatic.yml +220 -0
  36. data/data/plates/_decode/si-regions.yml +123 -0
  37. data/data/plates/_decode/sk-districts.yml +314 -0
  38. data/data/plates/_decode/th-registration-elements.yml +208 -0
  39. data/data/plates/_decode/ua-regions.yml +393 -0
  40. data/data/plates/_decode/za-licence-marks.yml +215 -0
  41. data/data/plates/_meta/classes.yml +26 -0
  42. data/data/plates/_meta/separators.yml +102 -0
  43. data/data/plates/ad.yml +961 -0
  44. data/data/plates/ar.yml +762 -0
  45. data/data/plates/at.yml +1424 -0
  46. data/data/plates/au-act.yml +472 -0
  47. data/data/plates/au-nsw.yml +282 -0
  48. data/data/plates/au-nt.yml +431 -0
  49. data/data/plates/au-qld.yml +272 -0
  50. data/data/plates/au-sa.yml +248 -0
  51. data/data/plates/au-tas.yml +302 -0
  52. data/data/plates/au-vic.yml +215 -0
  53. data/data/plates/au-wa.yml +309 -0
  54. data/data/plates/be.yml +1840 -0
  55. data/data/plates/br.yml +1152 -0
  56. data/data/plates/ca-ab.yml +430 -0
  57. data/data/plates/ca-bc.yml +697 -0
  58. data/data/plates/ca-mb.yml +499 -0
  59. data/data/plates/ca-nb.yml +537 -0
  60. data/data/plates/ca-nl.yml +743 -0
  61. data/data/plates/ca-ns.yml +808 -0
  62. data/data/plates/ca-nt.yml +610 -0
  63. data/data/plates/ca-nu.yml +280 -0
  64. data/data/plates/ca-on.yml +881 -0
  65. data/data/plates/ca-pe.yml +592 -0
  66. data/data/plates/ca-qc.yml +1036 -0
  67. data/data/plates/ca-sk.yml +256 -0
  68. data/data/plates/ca-yt.yml +656 -0
  69. data/data/plates/ch.yml +1273 -0
  70. data/data/plates/cn.yml +1431 -0
  71. data/data/plates/cy.yml +688 -0
  72. data/data/plates/cz.yml +1179 -0
  73. data/data/plates/de.yml +1107 -0
  74. data/data/plates/dk.yml +1647 -0
  75. data/data/plates/ee.yml +1275 -0
  76. data/data/plates/es.yml +888 -0
  77. data/data/plates/fi.yml +1271 -0
  78. data/data/plates/fr.yml +1265 -0
  79. data/data/plates/gb.yml +1188 -0
  80. data/data/plates/gr.yml +721 -0
  81. data/data/plates/hr.yml +860 -0
  82. data/data/plates/hu.yml +959 -0
  83. data/data/plates/ie.yml +775 -0
  84. data/data/plates/in.yml +1172 -0
  85. data/data/plates/is.yml +667 -0
  86. data/data/plates/it.yml +1317 -0
  87. data/data/plates/jp.yml +3650 -0
  88. data/data/plates/kr.yml +1375 -0
  89. data/data/plates/li.yml +1010 -0
  90. data/data/plates/lt.yml +879 -0
  91. data/data/plates/lu.yml +842 -0
  92. data/data/plates/lv.yml +924 -0
  93. data/data/plates/mc.yml +1024 -0
  94. data/data/plates/mt.yml +854 -0
  95. data/data/plates/mx.yml +1372 -0
  96. data/data/plates/my.yml +685 -0
  97. data/data/plates/nl.yml +1016 -0
  98. data/data/plates/no.yml +1018 -0
  99. data/data/plates/nz.yml +1699 -0
  100. data/data/plates/pl.yml +1296 -0
  101. data/data/plates/pt.yml +847 -0
  102. data/data/plates/ro.yml +785 -0
  103. data/data/plates/se.yml +1091 -0
  104. data/data/plates/si.yml +1105 -0
  105. data/data/plates/sk.yml +1439 -0
  106. data/data/plates/sm.yml +1119 -0
  107. data/data/plates/th.yml +1150 -0
  108. data/data/plates/ua.yml +1672 -0
  109. data/data/plates/us-ak.yml +763 -0
  110. data/data/plates/us-al.yml +457 -0
  111. data/data/plates/us-ar.yml +427 -0
  112. data/data/plates/us-as.yml +454 -0
  113. data/data/plates/us-az.yml +430 -0
  114. data/data/plates/us-ca.yml +892 -0
  115. data/data/plates/us-co.yml +452 -0
  116. data/data/plates/us-ct.yml +427 -0
  117. data/data/plates/us-dc.yml +614 -0
  118. data/data/plates/us-de.yml +551 -0
  119. data/data/plates/us-fl.yml +741 -0
  120. data/data/plates/us-ga.yml +644 -0
  121. data/data/plates/us-gu.yml +658 -0
  122. data/data/plates/us-hi.yml +585 -0
  123. data/data/plates/us-ia.yml +438 -0
  124. data/data/plates/us-id.yml +531 -0
  125. data/data/plates/us-il.yml +516 -0
  126. data/data/plates/us-in.yml +324 -0
  127. data/data/plates/us-ks.yml +351 -0
  128. data/data/plates/us-ky.yml +770 -0
  129. data/data/plates/us-la.yml +568 -0
  130. data/data/plates/us-ma.yml +379 -0
  131. data/data/plates/us-md.yml +536 -0
  132. data/data/plates/us-me.yml +445 -0
  133. data/data/plates/us-mi.yml +408 -0
  134. data/data/plates/us-mn.yml +411 -0
  135. data/data/plates/us-mo.yml +356 -0
  136. data/data/plates/us-mp.yml +402 -0
  137. data/data/plates/us-ms.yml +432 -0
  138. data/data/plates/us-mt.yml +619 -0
  139. data/data/plates/us-nc.yml +602 -0
  140. data/data/plates/us-nd.yml +419 -0
  141. data/data/plates/us-ne.yml +483 -0
  142. data/data/plates/us-nh.yml +394 -0
  143. data/data/plates/us-nj.yml +547 -0
  144. data/data/plates/us-nm.yml +574 -0
  145. data/data/plates/us-nv.yml +655 -0
  146. data/data/plates/us-ny.yml +592 -0
  147. data/data/plates/us-oh.yml +404 -0
  148. data/data/plates/us-ok.yml +513 -0
  149. data/data/plates/us-or.yml +392 -0
  150. data/data/plates/us-pa.yml +506 -0
  151. data/data/plates/us-pr.yml +507 -0
  152. data/data/plates/us-ri.yml +445 -0
  153. data/data/plates/us-sc.yml +605 -0
  154. data/data/plates/us-sd.yml +428 -0
  155. data/data/plates/us-tn.yml +471 -0
  156. data/data/plates/us-tx.yml +535 -0
  157. data/data/plates/us-ut.yml +384 -0
  158. data/data/plates/us-va.yml +567 -0
  159. data/data/plates/us-vi.yml +489 -0
  160. data/data/plates/us-vt.yml +458 -0
  161. data/data/plates/us-wa.yml +484 -0
  162. data/data/plates/us-wi.yml +509 -0
  163. data/data/plates/us-wv.yml +446 -0
  164. data/data/plates/us-wy.yml +523 -0
  165. data/data/plates/va.yml +604 -0
  166. data/data/plates/za.yml +1141 -0
  167. data/data/vehicles.json +160653 -105090
  168. data/lib/vehicles/configuration.rb +18 -2
  169. data/lib/vehicles/dataset.rb +73 -18
  170. data/lib/vehicles/fuzzy.rb +115 -0
  171. data/lib/vehicles/http.rb +48 -0
  172. data/lib/vehicles/make.rb +36 -6
  173. data/lib/vehicles/mcp_server.rb +5 -5
  174. data/lib/vehicles/model.rb +42 -6
  175. data/lib/vehicles/plates/jurisdiction.rb +32 -0
  176. data/lib/vehicles/plates/series.rb +291 -0
  177. data/lib/vehicles/plates/template_fill.rb +188 -0
  178. data/lib/vehicles/plates/templates.rb +162 -0
  179. data/lib/vehicles/plates.rb +122 -0
  180. data/lib/vehicles/providers/hosted_provider.rb +49 -58
  181. data/lib/vehicles/providers/local_provider.rb +4 -3
  182. data/lib/vehicles/validators/vehicle_make_validator.rb +3 -1
  183. data/lib/vehicles/validators/vehicle_model_validator.rb +1 -1
  184. data/lib/vehicles/version.rb +1 -1
  185. data/lib/vehicles.rb +53 -16
  186. data/rakelib/data_refresh.rake +109 -0
  187. data/rakelib/plates_refresh.rake +29 -0
  188. data/sig/vehicles.rbs +18 -0
  189. metadata +174 -2
@@ -0,0 +1,605 @@
1
+ # plates/us-sc.yml — South Carolina (PRD-PLATES gate L2, group southeast-a).
2
+ #
3
+ # THE SOUTH CAROLINA FINDING, AND IT IS THE BEST-SOURCED CURRENT SERIES IN THE
4
+ # WHOLE US PASS SO FAR: SOUTH CAROLINA'S PRESENT STANDARD PASSENGER PLATE IS
5
+ # LEGISLATED, WITH BOTH ENDPOINTS AND THE ARTWORK, IN ONE SUBSECTION.
6
+ # S.C. Code § 56-3-1230(C), added by 2025 Act No. 39 (H.3175) effective 12 May
7
+ # 2025, verbatim: "Notwithstanding another provision of law to the contrary,
8
+ # the regular license plate for private passenger vehicles and motorcycles
9
+ # issued by the Department of Motor Vehicles FROM JANUARY 1, 2026, UNTIL
10
+ # DECEMBER 31, 2032, shall commemorate the two hundred fiftieth anniversary of
11
+ # the American Revolution. ... The design ... must be imprinted with the words
12
+ # 'Where the Revolutionary War Was Won' and shall include, at a minimum, a flag
13
+ # featuring the word LIBERTY in white against an indigo background together
14
+ # with a gorget in an upper corner of the flag, also known as the Moultrie
15
+ # Flag."
16
+ #
17
+ # Every other state in group southeast-a required a locator for its start year.
18
+ # South Carolina required none: the start, the sunset, the slogan and the
19
+ # minimum artwork are all edict of government, which is public domain at every
20
+ # level. `period_evidence: statutory-date` is earned here, not asserted.
21
+ #
22
+ # ONE SCHEMA CONSEQUENCE, FLAGGED FOR THE MAINTAINER RATHER THAN WORKED AROUND
23
+ # QUIETLY: the sunset is 31 December 2032, and `scripts/lint_plates.rb` rejects
24
+ # any `period.end` beyond the current year plus one. A legislated FUTURE sunset
25
+ # is a real and recurring shape — Georgia's America 250 plate carries one too
26
+ # (2030, from the Department of Revenue) — and the rail cannot express it. This
27
+ # file therefore keeps `period.end` absent (the series IS currently issuing, so
28
+ # open is the honest reading for a consumer) and carries the sunset in
29
+ # `period.scheduled_end`, which the lint ignores. See the group dossier: the
30
+ # proposed amendment is to let the rail admit a future `scheduled_end`.
31
+ #
32
+ # AUTHORITY FETCH FAILURE, DISCLOSED: scdmvonline.com was UNREACHABLE from this
33
+ # network across repeated attempts on 2026-08-01 (connection reset on HTTP/2,
34
+ # timeout on HTTP/1.1, socket hang-up through the fetch proxy). NOT ONE CLAIM IN
35
+ # THIS FILE COMES FROM SCDMV. That turns out to matter less here than it would
36
+ # anywhere else, because South Carolina legislates what other states delegate —
37
+ # but it does mean the specialty-programme count is derived from the statute
38
+ # book rather than taken from the agency, and it is labelled accordingly.
39
+ #
40
+ # EVIDENCE GRADES — the four defined in us-va.yml.
41
+ jurisdiction: us-sc
42
+ authority:
43
+ name: South Carolina Department of Motor Vehicles (SCDMV)
44
+ url: "https://www.scdmvonline.com/Vehicle-Owners/License-Plates"
45
+ fetch_status: "UNREACHABLE 2026-08-01 (connection reset / timeout / socket hang-up on repeated attempts). No claim in this file rests on it."
46
+ binding: vehicle
47
+ statute_edition: "South Carolina Code of Laws, Title 56 (Motor Vehicles), Chapter 3, as served by scstatehouse.gov and read 2026-08-01 — the chapter text incorporates amendments through 2025 Act No. 39 (eff. 12 May 2025) and 2024 Act No. 178 (eff. 20 November 2024)"
48
+
49
+ # ---------------------------------------------------------------------------
50
+ # artwork_risk — required per jurisdiction by PRD-PLATES §4.
51
+ # ---------------------------------------------------------------------------
52
+ artwork_risk:
53
+ posture: adverse
54
+ basis: >-
55
+ SOUTH CAROLINA IS ADVERSE, ON JUDICIAL AUTHORITY. The Supreme Court of
56
+ South Carolina held in Seago v. Horry County, 663 S.E.2d 38 (S.C. 2008),
57
+ that a South Carolina county CAN hold copyrights on government works. That
58
+ is an affirmative judicial holding permitting copyright in works of a South
59
+ Carolina governmental body — a stronger adverse signal than the mere
60
+ absence of a public-domain rule, and it puts South Carolina alongside New
61
+ York, Arizona, Pennsylvania and Washington rather than alongside Florida,
62
+ California, Georgia or North Carolina. Wikimedia Commons has no
63
+ {{PD-SCGov}} template (HTTP 404, checked 2026-08-01), consistent with that
64
+ reading, and the Commons US rules page states the default as "Other
65
+ states: copyrighted".
66
+ honest_limits: >-
67
+ TWO LIMITS ON THIS FINDING, STATED SO IT IS NOT OVER-READ. First, Seago
68
+ concerned a COUNTY, not the State, and the opinion itself was NOT obtained
69
+ in this pass — it is cited here through a secondary survey that gives the
70
+ reporter citation and a Google Scholar locator. Second, no instance of
71
+ South Carolina asserting copyright over a LICENSE PLATE DESIGN was found;
72
+ what is established is a framework that would permit one, exactly as the
73
+ US-world dossier concluded for Arizona, Pennsylvania, New York and
74
+ Washington. Read this field as "the framework permits it and the courts
75
+ have blessed it", not as "South Carolina has claimed it".
76
+ edict_carve_out: >-
77
+ THE CARVE-OUT IS UNUSUALLY POWERFUL IN SOUTH CAROLINA AND IT IS WHY THIS
78
+ FILE IS RICH DESPITE THE ADVERSE POSTURE. Edicts of government are
79
+ uncopyrightable at every level, and South Carolina puts an extraordinary
80
+ amount of plate specification INTO ITS STATUTE: the dimensions, the
81
+ retroreflectivity requirement, the five-year service life, the ten-year
82
+ reissue interval, the temporary-plate dimensions to the inch, the
83
+ unified specialty-plate design rule, the 300-application discontinuation
84
+ threshold, and — uniquely — the current standard plate's slogan and
85
+ minimum artwork. All of that is public domain no matter what posture the
86
+ State takes toward its own works. The adverse posture bites only on
87
+ elements NOT in the statute: the exact executed artwork, the colour values,
88
+ and the specialty designs.
89
+ emblem_rule: >-
90
+ PRD-PLATES §3's placeholder default applies. Note the specific hazard: the
91
+ statutorily-mandated element of the current plate is the MOULTRIE FLAG —
92
+ a historic flag, and historic flags are not themselves copyrightable
93
+ subject matter — but the EXECUTED artwork submitted by the South Carolina
94
+ Revolutionary War Sestercentennial Commission is a modern work by a state
95
+ body in an adverse-posture state. Render the flag slot as
96
+ `emblem: {present: true, rendered: placeholder}` and do not trace the
97
+ Commission's execution. The Palmetto tree and crescent of earlier bases,
98
+ and the STATE SEAL used on the 1980-84 base, carry seal-misuse protection
99
+ independent of copyright, which is unresearched.
100
+ photograph_caution: "Commons photographs of South Carolina plates carry the photographer's licence on the photograph, not on the design. Our renders are generated from the statute, never derived from a photograph, so those obligations never attach."
101
+ sources:
102
+ - "https://scholar.google.com/scholar_case?case=12877392669401300528 # Seago v. Horry County, 663 S.E.2d 38 (S.C. 16 June 2008) — LOCATOR for the opinion, which was NOT read in this pass"
103
+ - "https://en.wikipedia.org/wiki/Copyright_status_of_works_by_subnational_governments_of_the_United_States # LOCATOR ONLY: the South Carolina entry reporting Seago and its holding that a South Carolina county can hold copyrights on government works"
104
+ - "https://commons.wikimedia.org/wiki/Template:PD-SCGov # HTTP 404 — no South Carolina public-domain tag exists on Commons (checked 2026-08-01)"
105
+ - "https://commons.wikimedia.org/wiki/Commons:Copyright_rules_by_territory/United_States # the governing default: 'Other states: copyrighted'"
106
+ - "https://www.scstatehouse.gov/code/t56c003.php # the statutory plate specification itself — an edict of government, public domain regardless of the State's posture toward its other works"
107
+
108
+ us_standards:
109
+ no_federal_mandate: true
110
+ chain: "SAE J686 -> AAMVA License Plate Standard Edition 3 (September 2025) -> voluntary state adoption; AAMVA's declarative present is RECOMMENDED PRACTICE."
111
+ aamva_edition_3:
112
+ 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 — and South Carolina does not need one, because it legislates its own minima (see us-sc-standard-rev250-2026)."
113
+ retroreflectivity: "AAMVA §3.3: readable in daylight and at night from at least 75 feet; ASTM D4956-19 and ISO 7591:1982 clause 3. South Carolina legislates the REQUIREMENT (§ 56-3-1230(B)) and then delegates the SPECIFICATION to the department: 'The department shall prepare the specifications for the retroreflective material.' So the SC spec exists as a departmental document and is a named, findable gap."
114
+ replacement_cycle: >-
115
+ AAMVA §1.1 recommends a rolling or full replacement cycle "not to exceed
116
+ 7 to 10 years". SOUTH CAROLINA LEGISLATES THE TOP OF THAT RANGE, exactly
117
+ as Florida does, and legislates a materials floor beneath it: § 56-3-1230
118
+ (A) requires the plate be "of a strength and quality to provide a minimum
119
+ service of five years" and requires a new plate "at intervals the
120
+ department considers appropriate, but AT LEAST EVERY TEN YEARS". Two
121
+ states of this group put ten years in law; Virginia and North Carolina
122
+ put nothing; West Virginia replaces on condition. That spread is the
123
+ honest answer to "is there a US reissue cadence?" — there is not, there
124
+ are five different state answers.
125
+ source: "https://www.aamva.org/getmedia/646bcc8a-219b-47d8-b5cd-726240473163/License-Plate-Standard-Edition-3_September-2025-Update.pdf"
126
+ folklore_caution: >-
127
+ The "1956 AMA standardization agreement" remains COMMONLY REPEATED AND NOT
128
+ PRIMARY-SOURCED (see the fuller note in us-va.yml). South Carolina is the
129
+ state where it matters least: § 56-3-1230(A) states the dimensions in law —
130
+ "License plates must be at least six inches wide and not less than twelve
131
+ inches in length" — so this file cites the statute and never the story.
132
+
133
+ display_rules:
134
+ default: "ONE plate, REAR. § 56-3-1210: 'Beginning with the licensing year 1975-1976, the Department of Motor Vehicles, upon registering and licensing a vehicle, shall issue to the owner ONE license plate.' § 56-3-1240(A): 'Unless the provisions of this section apply, license plates issued for motor vehicles must be attached to the outside rear of the vehicle, open to view. License plates must always be fastened securely in a horizontal and upright position ... so as to prevent the plate from swinging.'"
135
+ front_only: "TRUCK TRACTORS AND ROAD TRACTORS: § 56-3-1240(B): 'License plates for truck tractors and road tractors must be attached to the outside FRONT of the vehicle' — the same inversion Florida (§ 320.0706) and Virginia (§ 46.2-715) legislate. THREE of the five states in this group put the tractor plate on the front, which turns an apparent oddity into a regional pattern worth stating."
136
+ either_end: "single-unit commercial motor vehicles with a GVWR over 26,000 lb may carry the plate on either the outside front or rear (§ 56-3-1240(B))"
137
+ windshield_temporary: "during the 45 days an intrastate-only large commercial motor vehicle may run on a § 56-3-212 temporary plate, the owner may display a MOTORCYCLE-SIZED temporary plate securely in the front passenger-side windshield with the unique identifying text facing outward, positioned so as not to obstruct the driver's view (§ 56-3-1240(B))"
138
+ motorcycle_vertical: "§ 56-3-1240(C): where a motorcycle is equipped with VERTICALLY MOUNTED brackets, the plate must be mounted vertically with its top fastened along the RIGHT vertical edge, its bottom not less than twelve inches from the ground, clearly visible per § 56-5-4530, free from foreign materials and clearly legible. A statutory rotated-plate rule — directly relevant to any ALPR or renderer that assumes horizontal text."
139
+ obstruction: "§ 56-3-1240(D): no other plate, lighting equipment (except as permitted by § 56-5-4530), tag, sign, monogram, tinted cover or inscription may be displayed above or upon the plate other than department-issued validation. A DECAL OR FRAME IS LAWFUL if it does not obscure any letters or numbers, and a TRAILER HITCH may obscure UP TO TWO INCHES of the plate — an explicit, quantified tolerance, which is rare."
140
+ local_preemption: "§ 56-3-1220: 'No county or municipality shall issue a municipal or county license plate.' South Carolina forecloses the sub-state plate entirely — a useful negative fact for a jurisdiction-completeness detector."
141
+ ownership: "§ 56-3-1210: 'Every license plate shall remain the property of the State but shall be displayed on the vehicle as required by this chapter.'"
142
+ sources:
143
+ - "https://www.scstatehouse.gov/code/t56c003.php # § 56-3-1210 one plate and state ownership; § 56-3-1220 the county/municipal prohibition; § 56-3-1240(A)-(D) rear default, truck-tractor front rule, the 26,000 lb either-end option, the windshield temporary, the vertical motorcycle bracket rule, and the decal/frame/trailer-hitch tolerances"
144
+
145
+ series:
146
+
147
+ # =========================================================================
148
+ # CURRENT STANDARD ISSUE — LEGISLATED END TO END.
149
+ # =========================================================================
150
+ - id: us-sc-standard-rev250-2026
151
+ class: standard
152
+ categories: [car, van, motorcycle]
153
+ period:
154
+ start: 2026
155
+ scheduled_end: 2032
156
+ scheduled_end_note: >-
157
+ § 56-3-1230(C) legislates issuance "from January 1, 2026, until
158
+ December 31, 2032". `period.end` is deliberately ABSENT because the
159
+ series is currently issuing and because the lint's period rail rejects
160
+ an end beyond the current year plus one; `scheduled_end` carries the
161
+ statutory sunset without lying to either audience. This is a schema
162
+ gap, not a data problem — see the file header and the group dossier.
163
+ period_evidence: statutory-date
164
+ matching: strict
165
+ format:
166
+ pattern: "999 LLL"
167
+ regex: '\A\d{3} ?[A-Z]{3}\z'
168
+ format_evidence: secondary-locator-unverified
169
+ charset:
170
+ notes: >-
171
+ THE FORMAT IS THE ONE THING § 56-3-1230 DOES NOT LEGISLATE. The
172
+ statute requires the plate to show "in bold characters the year of
173
+ registration, THE SERIAL NUMBER, the full name or the abbreviation of
174
+ the name of the state, and other distinctive markings the department
175
+ may consider advisable to indicate the class of the weight of the
176
+ vehicle" — it mandates that there BE a serial number and says nothing
177
+ about its shape. The numeral-first arrangement recorded here is
178
+ locator-grade. Note the historical charset churn, which is real and
179
+ documented: on the 2008-2016 base the letter O was NOT used, and that
180
+ practice ran until October 2023, when O came back in with a new
181
+ serial font. So a South Carolina O-exclusion rule is period-bound,
182
+ not permanent, and no `regex_strict` is given because no single
183
+ exclusion holds across this series.
184
+ weight_class_note: >-
185
+ § 56-3-1230(A) authorises "other distinctive markings the department
186
+ may consider advisable to indicate THE CLASS OF THE WEIGHT of the
187
+ vehicle" — a statutory hook for weight-class encoding on the plate.
188
+ South Carolina used exactly that from 1921 to at least the 1920s-30s
189
+ bases, where the leading letter of the serial corresponded to the
190
+ weight class. Whether any weight marking survives on the current base
191
+ was not established (recorded gap), but the LEGAL AUTHORITY for one
192
+ is live and cited, which is more than most states can show.
193
+ progression: "reported: intermittently from 101CUV to 999DDL, then exclusively from 101DDM, reaching 433DEN by 7 February 2026. LOCATOR-GRADE."
194
+ separator_note: "the gap between the numeral and letter groups is spelled as an optional space. The locator writes this base's format without a gap ('123ABC') and the immediately preceding one with a gap ('101 AAA'); the printed plate has a gap in both cases. `[ ]?` covers the disagreement rather than resolving it by fiat."
195
+ design:
196
+ plate: { w: 12, h: 6, unit: in, w_min_in: 12, h_min_in: 6, dimension_evidence: statutory-minimum }
197
+ plate_dimension_note: >-
198
+ § 56-3-1230(A), verbatim: "License plates must be at least six inches
199
+ wide and not less than twelve inches in length". STATUTORY MINIMA, and
200
+ note the same axis oddity Florida's § 320.06(3)(a) has — "six inches
201
+ wide" and "twelve inches in length" describe the conventional 12-inch
202
+ -across by 6-inch-tall plate. Recorded in the conventional
203
+ orientation with the statutory minima preserved separately.
204
+ material: "§ 56-3-1230(A): 'The plate must be of a strength and quality to provide a minimum service of five years.' A statutory DURABILITY floor, distinct from the reissue interval."
205
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
206
+ foreground: "#000000"
207
+ retroreflectivity_rule: "§ 56-3-1230(B), verbatim: 'The face of the license plate must be treated completely with a retroreflective material which increases the nighttime visibility and legibility of the plate. The department shall prepare the specifications for the retroreflective material.' The requirement is statutory; the SPECIFICATION is a departmental document that was not obtained (recorded gap)."
208
+ colour_note: "NO COLOUR VALUE IS IN THE STATUTE — § 56-3-1230 mandates retroreflectivity and, for this series, a flag with 'the word LIBERTY in white against an INDIGO background', which is the only colour word anywhere in the South Carolina plate law and applies to the emblem, not to the plate ground. The white ground and black screened serial are `hex_basis: observed`."
209
+ legend_bottom: "Where the Revolutionary War Was Won"
210
+ legend_rule: >-
211
+ § 56-3-1230(C), verbatim: the design "must be imprinted with the words
212
+ 'Where the Revolutionary War Was Won' and shall include, at a minimum,
213
+ a flag featuring the word LIBERTY in white against an indigo
214
+ background together with a gorget in an upper corner of the flag,
215
+ also known as the Moultrie Flag." Note "AT A MINIMUM": the legislature
216
+ set a floor on the artwork and left the rest to the Commission —
217
+ a drafting pattern worth recognising, because it means the executed
218
+ design may lawfully contain more than the statute describes and a
219
+ renderer built only from the statute will be incomplete by design.
220
+ design_authority: "the South Carolina Revolutionary War Sestercentennial Commission submits the design, emblem, seal, logo or other symbol to the department for approval (§ 56-3-1230(C))"
221
+ emblem: { present: true, rendered: placeholder, description: "Moultrie Flag — LIBERTY in white on indigo with a gorget in an upper corner (statutory minimum)" }
222
+ band: { side: none }
223
+ rear_differs: false
224
+ replacement_cycle:
225
+ years: 10
226
+ statutory_text: >-
227
+ § 56-3-1230(A): "A new license plate including personalized and special
228
+ plates, but excluding license plates provided in Sections 56-3-660 and
229
+ 56-3-670, must be provided by the department at intervals the
230
+ department considers appropriate, but AT LEAST EVERY TEN YEARS."
231
+ funding: "§ 56-3-1230(A): since fees collected after 1 July 2002, two dollars of each biennial fee and one dollar of each annual fee go to a restricted account usable SOLELY for producing and issuing new plates; 'The department is not authorized to use this set aside money for any other purpose.' A hypothecated plate-manufacturing fund written into the plate statute — nothing comparable appears in the other four states of this group."
232
+ exclusions: "vehicles registered under §§ 56-3-660 and 56-3-670 (property-carrying vehicles by weight; farm trucks) are outside the ten-year rule and are reissued at intervals the department considers appropriate; plates for vehicles over 26,000 lb are issued BIENNIALLY with NO revalidation sticker (§ 56-3-1230(A))"
233
+ validation: "§ 56-3-1230(B): 'In those years in which a metal plate is not issued, a revalidation sticker with a distinctive serial number or other suitable means prescribed by the department must be issued and affixed in the space provided on the license plate.' The revalidation sticker CARRIES ITS OWN SERIAL — a second identifier on the plate that most datasets do not model."
234
+ fees: "§ 56-3-1230(D): 'Fees for regular license plates shall not exceed the regular motor vehicle license fee set forth in Article 5, Chapter 3, Title 56.' So the 250th-anniversary plate is the REGULAR plate at the REGULAR price, not a specialty plate — which is why it is modelled here as the standard series and not in the specialty index."
235
+ region_encoding: none
236
+ sources:
237
+ - "https://www.scstatehouse.gov/code/t56c003.php # § 56-3-1230(A): the 6x12 statutory minima, the required plate contents, the weight-class marking authority, the five-year durability floor, the ten-year reissue interval and its exclusions, the hypothecated production fund, the biennial no-sticker rule over 26,000 lb; (B): complete retroreflective treatment, departmental specification, the serialled revalidation sticker; (C): the 1 January 2026 - 31 December 2032 period, the Sestercentennial Commission's design role, 'Where the Revolutionary War Was Won', and the Moultrie Flag minimum; (D): the regular-fee cap. HISTORY line: 2025 Act No. 39 (H.3175), SECTION 1, eff May 12, 2025, which added (C) and (D)."
238
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_South_Carolina # LOCATOR ONLY (PRD-PLATES §4): the numeral-first serial arrangement and the 101CUV/101DDM/433DEN block progression. Not asserted as sourced."
239
+ notes: >-
240
+ SOUTH CAROLINA CURRENT STANDARD ISSUE — THE MODEL ENTRY FOR THE US PASS.
241
+ Start date, sunset date, slogan, minimum artwork, dimensions, durability,
242
+ retroreflectivity, reissue interval and fee cap are ALL statutory and all
243
+ quoted. Only the serial arrangement is locator-grade, and the file says so
244
+ at the point of use. Three things a verifier should carry forward. FIRST,
245
+ the sunset: this series is legislated to stop on 31 December 2032, which
246
+ means South Carolina has already scheduled its own next base change and a
247
+ dataset can know about it seven years early — no other state in this group
248
+ offers that. SECOND, "at a minimum" in § 56-3-1230(C) means the executed
249
+ artwork lawfully exceeds the statutory description, so a statute-only
250
+ render is incomplete BY DESIGN rather than by omission. THIRD, this is the
251
+ REGULAR plate at the REGULAR fee (subsection (D)), not a specialty plate —
252
+ South Carolina turned its whole standard issue into a commemorative for
253
+ seven years, which is a different move from Florida's optional "America
254
+ 250" variant and from Georgia's optional America 250 election.
255
+
256
+ # =========================================================================
257
+ # ONE SERIES BACK.
258
+ # =========================================================================
259
+ - id: us-sc-standard-while-i-breathe-2016
260
+ class: standard
261
+ categories: [car, van, motorcycle]
262
+ period: { start: 2016, end: 2025 }
263
+ period_evidence: secondary-locator-unverified
264
+ matching: strict
265
+ format:
266
+ pattern: "LLL 999"
267
+ regex: '\A(?:[A-Z]{3} ?\d{3}|\d{3} ?[A-Z]{3})\z'
268
+ format_evidence: secondary-locator-unverified
269
+ charset:
270
+ notes: >-
271
+ TWO ARRANGEMENTS ON ONE BASE, AND A CHARSET CHANGE MID-BASE. From
272
+ February 2016 the serial ran letters-first (reported LZD 800 to
273
+ XMV 999); from October 2023, on the same design, South Carolina both
274
+ switched to a numerals-first arrangement AND changed the serial font
275
+ AND started using the letter O, which had been excluded since the
276
+ 2008 base. The regex is the union of the two arrangements and is
277
+ still `strict` — the union is exactly what South Carolina issued on
278
+ this base, not wider (PRD-PLATES §2.7). No `regex_strict` is given
279
+ precisely BECAUSE the O-exclusion holds for part of the period and
280
+ not the rest: a strict twin would be right for 2016-2023 and wrong
281
+ for 2023-2025, and a twin that is wrong half the time is worse than
282
+ no twin.
283
+ progression: "reported: LZD 800 to XMV 999 (letters-first, Feb 2016 - Oct 2023); then YAA 101 to YCL 750 in the letters-first shape alongside 101 AAA to approximately 999 CUU numerals-first (Oct 2023 - Dec 2025). LOCATOR-GRADE."
284
+ manufacturer_mark: "locator-reported: plates of the October 2023 edition carry a very small number at the bottom centre from the manufacturer — a production mark, not part of the registration number, and exactly the kind of glyph an over-eager OCR pipeline will append to the serial"
285
+ design:
286
+ plate: { w: 12, h: 6, unit: in, w_min_in: 12, h_min_in: 6, dimension_evidence: statutory-minimum }
287
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
288
+ foreground: "#000000"
289
+ legend_bottom: "While I Breathe, I Hope."
290
+ legend_note: "the English of Dum spiro spero, one of South Carolina's two state mottoes. Screened black serial on a white and blue ground with a state flag motif at the centre — locator-grade description; unlike the current base, NO artwork element of this one is legislated."
291
+ emblem: { present: true, rendered: placeholder }
292
+ rear_differs: false
293
+ replacement_cycle:
294
+ years: 10
295
+ statutory_text: "the same § 56-3-1230(A) ten-year rule governed this base; South Carolina's plate law was unchanged across the boundary except for the addition of subsections (C) and (D) in 2025"
296
+ region_encoding: none
297
+ sources:
298
+ - "https://www.scstatehouse.gov/code/t56c003.php # § 56-3-1230(A)-(B): the statutory frame that governed this base unchanged — dimensions, durability, ten-year reissue, retroreflectivity, revalidation stickers"
299
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_South_Carolina # LOCATOR ONLY: February 2016 - December 2025, 'While I Breathe, I Hope.', the state flag motif, the two serial arrangements, the October 2023 font change and return of the letter O, and the manufacturer's mark"
300
+ notes: >-
301
+ THE PREVIOUS SOUTH CAROLINA STANDARD BASE, AND THE CLEANEST EXAMPLE IN
302
+ THIS GROUP OF WHY "ONE BASE = ONE REGEX" IS FALSE. Within a single
303
+ unchanged design South Carolina flipped the serial arrangement, changed
304
+ the font, and readmitted a letter it had excluded for fifteen years — all
305
+ in October 2023, none of it announced in the statute. A consumer holding
306
+ one regex per base rejects every South Carolina plate issued in the last
307
+ two years of this base. The boundary with the current series is HARD on
308
+ one side and soft on the other: 1 January 2026 is statutory for the
309
+ successor, while December 2025 for this one is inferred from that statute
310
+ plus a locator, so the end year is graded accordingly.
311
+
312
+ # =========================================================================
313
+ # CORE CLASSES — all statutory, which is the South Carolina pattern.
314
+ # =========================================================================
315
+ - id: us-sc-temporary
316
+ class: temporary
317
+ categories: [car, van, truck, bus, motorcycle, moped, trailer]
318
+ period: { start: 2026 }
319
+ period_evidence: instrument-in-force-upper-bound
320
+ matching: recall-only
321
+ format:
322
+ pattern: "LLLLLLL"
323
+ regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,6}\z'
324
+ charset: { notes: "recall-only. § 56-3-210(A)(2) puts the design and layout of temporary plates in the department's hands 'with input from temporary license plate distributors', and no serial grammar is stated. The plate must show the date of expiration and the name of the issuing entity along with identification information." }
325
+ design:
326
+ plate: { w: 11, h: 6, unit: in, dimension_evidence: statutory-minimum }
327
+ plate_dimension_rule: >-
328
+ § 56-3-210(A)(3), verbatim: "Temporary license plates must be six
329
+ inches wide and at least eleven inches in length. Temporary
330
+ motorcycle and moped license plates must be four inches wide and
331
+ seven inches in length." SOUTH CAROLINA LEGISLATES TEMPORARY-PLATE
332
+ DIMENSIONS TO THE INCH, AND THEY ARE NOT THE STANDARD SIZE — eleven
333
+ inches long against the standard twelve. Contrast North Carolina,
334
+ whose § 20-79.1 specifies no dimension at all. A renderer that
335
+ assumes every US plate is 12 x 6 gets South Carolina temporaries
336
+ wrong by a full inch, and its motorcycle temporaries wrong by half.
337
+ motorcycle_variant: { w: 7, h: 4, unit: in }
338
+ material: "§ 56-3-210(A)(2): 'of a material specified by the department so as to resist deterioration or fading from exposure to the elements during the period for which display is required'"
339
+ content: "the date of expiration and the name of the issuing entity, with identification information (§ 56-3-210)"
340
+ validity: "§ 56-3-210: 'All temporary license plates must be valid for no more than FORTY-FIVE DAYS.' Compare North Carolina's 30 days (§ 20-79.1) — the two neighbours differ by half again, which is exactly the kind of per-state fact a parse or compliance API needs and no aggregate list carries."
341
+ scope: "the department administers and regulates temporary plates both for items required to be registered in South Carolina AND for items purchased in South Carolina that may be registered in a foreign jurisdiction (§ 56-3-210(A)(1))"
342
+ region_encoding: none
343
+ sources:
344
+ - "https://www.scstatehouse.gov/code/t56c003.php # § 56-3-210(A)(1) the programme and its two-way scope; (A)(2) departmental design with distributor input and the weathering-resistant material rule; (A)(3) the 6 x 11 in standard and 4 x 7 in motorcycle/moped temporary dimensions; and the forty-five-day validity cap. Also § 56-3-212, referenced by § 56-3-1240(B) for intrastate-only large commercial vehicles."
345
+ notes: >-
346
+ SOUTH CAROLINA TEMPORARY PLATES — the best-specified temporary regime in
347
+ group southeast-a and one of the few anywhere with statutory dimensions.
348
+ Three facts worth carrying: the non-standard 6 x 11 inch size, the
349
+ separate 4 x 7 inch motorcycle and moped size, and the forty-five-day
350
+ cap. A fourth is cross-referenced from the display rules: an
351
+ intrastate-only large commercial vehicle running on a § 56-3-212
352
+ temporary may display a MOTORCYCLE-SIZED temporary plate inside the front
353
+ passenger windshield, which is a lawful US plate that is neither metal
354
+ nor mounted on the bodywork.
355
+
356
+ - id: us-sc-dealer
357
+ class: dealer
358
+ categories: [car, van, truck, bus, motorcycle, trailer]
359
+ period: { start: 2026 }
360
+ period_evidence: instrument-in-force-upper-bound
361
+ matching: recall-only
362
+ format:
363
+ pattern: "LLLLLLL"
364
+ regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,6}\z'
365
+ charset: { notes: "recall-only; § 56-3-2320 regulates eligibility, quota, use and fee exhaustively but states no serial grammar or design" }
366
+ design:
367
+ plate: { unit: in }
368
+ background: { finish: retroreflective }
369
+ binding: business
370
+ eligibility_and_quota: >-
371
+ § 56-3-2320: no dealer plate issues unless the dealer furnishes proof of
372
+ a retail business licence under Chapter 36, Title 12 AND has made AT
373
+ LEAST TWENTY SALES in the twelve months preceding application (waivable
374
+ if licensed under a year). Quota: two plates for the first fifteen
375
+ vehicles sold during the preceding year, plus one additional plate for
376
+ each fifteen sold beyond the initial twenty; a dealer in a manufacturer
377
+ programme gets two additional per fifteen beyond the initial twenty. The
378
+ department may issue extras for good cause. Anti-gaming: transferring the
379
+ same vehicle between the same parties more than once counts as ONE sale,
380
+ and multiple transfers between licensed dealers to meet eligibility are
381
+ prohibited.
382
+ permitted_use: "exclusively on vehicles owned by, assigned to, or loaned for TEST DRIVING to the dealer, when operated by the dealer, its corporate officers, its employees, a prospective purchaser, or a person whose vehicle is being serviced or repaired by the dealer. A prospective purchaser is limited to SEVEN DAYS with a dated demonstration certificate approved by the department; a service-loaner user to THIRTY DAYS, and only where the loaner is part of a manufacturer programme provided at no charge. Dealer plates must NOT be used on wreckers or service vehicles, nor on dealer-owned vehicles leased or rented to the public. (§ 56-3-2320)"
383
+ fee: "$20 per dealer plate (§ 56-3-2320(A)(3))"
384
+ region_encoding: none
385
+ sources:
386
+ - "https://www.scstatehouse.gov/code/t56c003.php # § 56-3-2320: dealer plate issuance, the twenty-sale eligibility floor and retail-licence proof, the sales-volume quota and manufacturer-programme uplift, the seven-day demonstration and thirty-day service-loaner limits, the wrecker/service/rental prohibitions, the anti-gaming rules, and the $20 fee"
387
+ notes: >-
388
+ SOUTH CAROLINA DEALER PLATES. `binding: business` — the plate follows the
389
+ dealership, not a vehicle. South Carolina is the most tightly drafted
390
+ dealer-plate regime in this group: it gates issuance on a sales floor,
391
+ rations plate counts by volume, times the two permitted third-party uses
392
+ to the day, and closes two specific gaming routes by name. All of that is
393
+ edict and quotable; none of it is a serial fact, which is the recorded
394
+ gap.
395
+
396
+ - id: us-sc-manufacturer
397
+ class: dealer
398
+ categories: [car, van, truck, bus, motorcycle]
399
+ period: { start: 2026 }
400
+ period_evidence: instrument-in-force-upper-bound
401
+ matching: recall-only
402
+ format:
403
+ pattern: "LLLLLLL"
404
+ regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,6}\z'
405
+ charset: { notes: "recall-only; § 56-3-2330 states no serial grammar" }
406
+ design:
407
+ plate: { unit: in }
408
+ background: { finish: retroreflective }
409
+ binding: business
410
+ quota_and_fee: "NOT MORE THAN FIVE HUNDRED manufacturer plates per manufacturer; $200 each, of which $160 is remitted to the county containing the manufacturer's principal facility and $40 goes to the State Highway Fund; each plate is valid for TWO YEARS (§ 56-3-2330(A)-(B))"
411
+ permitted_use: "exclusively on vehicles, including motorcycles, owned by or in the possession of the manufacturer; not on wreckers, not on vehicles leased or rented to the public. Vehicles so plated — not more than one licensed vehicle per household — may be operated by persons authorised by the manufacturer, on that manufacturer's brand, for TESTING, DISTRIBUTION, EVALUATION AND PROMOTION, and for no more than TWENTY CONSECUTIVE DAYS in connection with civic and sporting events (§ 56-3-2330(A), (C))"
412
+ region_encoding: none
413
+ sources:
414
+ - "https://www.scstatehouse.gov/code/t56c003.php # § 56-3-2330: the 500-plate cap, the $200 fee and its $160/$40 county/state split, the two-year validity, the permitted uses (testing, distribution, evaluation, promotion), the one-vehicle-per-household limit and the twenty-consecutive-day event rule"
415
+ notes: >-
416
+ SOUTH CAROLINA MANUFACTURER PLATES. Given `class: dealer` for the same
417
+ reason us-fl-manufacturer is — _meta/classes.yml has no `manufacturer`
418
+ value and the PRD's definition of dealer ("trade/garage plates bound to a
419
+ business, not a vehicle") fits the binding if not the trade. CLASS
420
+ VOCABULARY CANDIDATE, recorded a second time in the dataset now: two
421
+ states have legislated a manufacturer plate distinctly from a dealer
422
+ plate, with different caps, fees, validity and permitted uses. The
423
+ one-licensed-vehicle-per-household rule is a genuine oddity — South
424
+ Carolina limits how many manufacturer-plated cars can live at one address.
425
+
426
+ - id: us-sc-government
427
+ class: government
428
+ categories: [car, van, truck, bus]
429
+ period: { start: 2026 }
430
+ period_evidence: instrument-in-force-upper-bound
431
+ matching: recall-only
432
+ format:
433
+ pattern: "LLLLLLL"
434
+ regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,6}\z'
435
+ charset: { notes: "recall-only. What is sourced is that South Carolina registers state and political-subdivision vehicles as a DISTINCT REGISTRATION CLASS at a reduced fee; whether that class carries a distinct plate SERIES or merely a distinct fee is not established (recorded gap), and the regex claims nothing about it." }
436
+ design:
437
+ plate: { unit: in }
438
+ background: { finish: retroreflective }
439
+ emblem: { present: true, rendered: placeholder }
440
+ eligibility_and_transfer_rule: >-
441
+ § 56-3-1260: where a vehicle "is registered and licensed in the name of
442
+ the State, any department, agency, or political subdivision of the State,
443
+ or any department or agency of such a subdivision AND A REDUCED
444
+ REGISTRATION AND LICENSE FEE HAS BEEN PAID, the owner shall return the
445
+ registration card and the plate issued for the vehicle to the Department
446
+ for cancellation, unless the transfer is made to another like agency
447
+ qualified to obtain a registration and license of the vehicle at the
448
+ reduced rate." So a South Carolina government plate CANNOT follow a
449
+ vehicle out of government ownership — it must be cancelled — which is a
450
+ lifecycle constraint most plate datasets have no field for and which
451
+ matters to anyone reasoning about plate reuse.
452
+ region_encoding: none
453
+ sources:
454
+ - "https://www.scstatehouse.gov/code/t56c003.php # § 56-3-1260: the reduced-fee state/agency/political-subdivision registration class and the mandatory cancellation-on-transfer rule with its like-agency exception"
455
+ notes: >-
456
+ SOUTH CAROLINA GOVERNMENT REGISTRATION. Deliberately modest: the sourced
457
+ fact is a distinct reduced-fee registration class with a distinct
458
+ end-of-life rule, not a distinct plate design or serial series. Recording
459
+ it this way keeps the useful part — the cancellation-on-transfer
460
+ constraint, which is a genuine fact about the plate's lifecycle — without
461
+ inventing a series that may not exist as a separate design.
462
+
463
+ # =========================================================================
464
+ # PERSONALIZED + SPECIALTY INDEX.
465
+ # =========================================================================
466
+ - id: us-sc-personalized
467
+ class: personalized
468
+ categories: [car, van, motorcycle]
469
+ period: { start: 2026 }
470
+ period_evidence: instrument-in-force-upper-bound
471
+ matching: recall-only
472
+ format:
473
+ pattern: "LLLLLLL"
474
+ regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,6}\z'
475
+ charset:
476
+ notes: >-
477
+ recall-only. § 56-3-2010(A) says the personalized plates "must be of
478
+ the design and bear the letters and numerals THE DEPARTMENT
479
+ PRESCRIBES" — a full delegation, with no length and no alphabet in
480
+ the statute. The department's prescription was not obtained because
481
+ scdmvonline.com was unreachable (see the file header). Given that
482
+ Virginia and North Carolina both officially permit non-alphanumeric
483
+ glyphs in a personalized serial, South Carolina's permitted set must
484
+ be checked before any strict regex is written here.
485
+ design:
486
+ plate: { unit: in }
487
+ background: { finish: retroreflective }
488
+ eligibility_and_limits: >-
489
+ § 56-3-2010(A): personalized plates issue to owners of PRIVATE PASSENGER
490
+ MOTOR VEHICLES AND MOTORCYCLES on proper application. "However, there may
491
+ be NO DUPLICATION of registration plates, except South Carolina members
492
+ of the United States Congress or members of the South Carolina General
493
+ Assembly may purchase a maximum of the original and TWO DUPLICATE
494
+ registration plates." A statutory exception to plate uniqueness itself,
495
+ granted to legislators — which breaks the assumption, near-universal in
496
+ plate software, that a plate string identifies at most one registration.
497
+ refusal_policy: "§ 56-3-2010(A): the department 'in its discretion, may refuse the issue of letter combinations which may carry connotations offensive to good taste and decency and MAY NOT ASSIGN to a person not holding the relevant office letters or numerals denoting the holder to have a public office' — the second limb is mandatory, not discretionary"
498
+ registration_period: "biennial, expiring on a staggered monthly basis; application may be made two months in advance of expiry; plates issued to members of the General Assembly and to members of licensed state or federal commissions and boards expire on 31 January each year (§ 56-3-2010(B))"
499
+ accessibility: "§ 56-3-2010(C): where the holder also qualifies for a handicapped plate under § 56-3-1910, the personalized plate shall include an International Symbol of Access decal, but only if it can be placed without covering any identifying numbers or letters"
500
+ region_encoding: none
501
+ sources:
502
+ - "https://www.scstatehouse.gov/code/t56c003.php # § 56-3-2010(A) eligibility, the full delegation of design and characters to the department, the no-duplication rule and its legislator exception, and the two refusal limbs; (B) biennial staggered registration and the 31 January legislative/commission expiry; (C) the International Symbol of Access decal condition"
503
+ notes: >-
504
+ SOUTH CAROLINA PERSONALIZED. The entry earns its place for one sentence
505
+ of statute: § 56-3-2010(A) lets South Carolina members of Congress and of
506
+ the General Assembly hold the SAME registration plate up to three times
507
+ (an original and two duplicates). Plate uniqueness is treated as an
508
+ axiom by essentially every validator, parse API and ALPR pipeline in
509
+ existence; South Carolina legislates an exception to it. Recorded here
510
+ because it is the kind of fact that only ever surfaces from the statute,
511
+ which is precisely the argument PRD-PLATES §4 makes for preferring
512
+ statutes over brochures.
513
+
514
+ - id: us-sc-specialty-index
515
+ class: specialty
516
+ categories: [car, van, truck, motorcycle, trailer]
517
+ period: { start: 2026 }
518
+ period_evidence: instrument-in-force-upper-bound
519
+ matching: recall-only
520
+ format:
521
+ pattern: "LLLLLLL"
522
+ regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,6}\z'
523
+ charset: { notes: "specialty serials sit on a department-designed basic plate; no arrangement is stated in statute and the index makes no claim" }
524
+ design:
525
+ plate: { unit: in }
526
+ background: { finish: retroreflective }
527
+ unified_design_rule: >-
528
+ THE MOST IMPORTANT SPECIALTY FACT IN THIS FILE. § 56-3-8100(C),
529
+ verbatim: "The department must develop a BASIC PLATE DESIGN that will
530
+ be used for ALL special license plates authorized by the General
531
+ Assembly. The license plate must be the same size and general design
532
+ of regular motor vehicle license plates but may be imprinted on the
533
+ license plate in an area specified by the department with an emblem,
534
+ seal, insignia, or other identifying symbol of the sponsoring
535
+ organization that the department considers appropriate. NO TEXT OR
536
+ SLOGANS MAY BE ADDED to the license plate design unless they are part
537
+ of the approved emblem, seal, insignia, or other identifying symbol.
538
+ The name of the organization may be imprinted across the top of the
539
+ license plate. The standard license plate design must be issued for
540
+ all organizational license plates newly requested after JULY 1, 2013.
541
+ License plate designs in production as of that date must be changed
542
+ when the license plate, or license plate class, is replaced."
543
+ South Carolina has legislated its specialty programme into ONE
544
+ TEMPLATE with a swappable emblem slot — which means a renderer can
545
+ produce every post-2013 South Carolina specialty plate from one
546
+ parametric template plus an emblem, and that the L4 "specialty design
547
+ depth" problem is, for this state, mostly solved by statute.
548
+ emblem: { present: true, rendered: placeholder }
549
+ program_index:
550
+ count_official: null
551
+ count_derived: 153
552
+ count_method: >-
553
+ DERIVED, NOT OFFICIAL, AND THE METHOD IS STATED SO IT CAN BE CHECKED.
554
+ SCDMV was unreachable, so no agency figure exists in this pass. Instead:
555
+ South Carolina creates each special-plate programme as its own ARTICLE
556
+ of Title 56 Chapter 3, and the chapter text contains 153 ARTICLE
557
+ headings, with article NUMBERS running to 155 (the numbering is not
558
+ dense). Not every article is a plate programme — the early articles
559
+ cover registration, fees, dealer plates and so on — so 153 is an UPPER
560
+ BOUND on the number of statutory special-plate programmes, not a count
561
+ of them. Examples of the pattern at the top of the range: Article 153,
562
+ Article 154 (South Carolina Association for Pupil Transportation
563
+ special license plates, 2024 Act No. 178 §10), Article 155 (Hearing
564
+ Impaired special license plates, recodified from § 56-3-15020 to
565
+ § 56-3-16410 at the Code Commissioner's direction). RECORDED AS A
566
+ DERIVED UPPER BOUND. Do not publish it as "South Carolina has 153
567
+ specialty plates".
568
+ official_list_url: "https://www.scstatehouse.gov/code/t56c003.php"
569
+ application_fee: "§ 56-3-8100(A): before producing a special plate created by the General Assembly after 1 January 2006, the department must receive SIX THOUSAND EIGHT HUNDRED DOLLARS from the individual or organisation seeking it AND a marketing plan approved by the department"
570
+ discontinuation_threshold: >-
571
+ § 56-3-8100(H), verbatim: "If the department receives LESS THAN THREE
572
+ HUNDRED biennial applications and renewals for a particular special
573
+ license plate, it shall not produce additional special license plates
574
+ in that series. The department shall continue to issue special license
575
+ plates of that series until the existing inventory is exhausted."
576
+ THIS IS THE NUMBER THE FLORIDA FILE RECORDED AS A GAP. us-fl's
577
+ specialty index notes that § 320.08056(8)(a) obliges Florida to
578
+ discontinue an approved specialty plate in stated circumstances and
579
+ that "the numeric threshold triggering discontinuation was not
580
+ extracted in this pass (recorded gap)". South Carolina's equivalent
581
+ threshold is 300 biennial applications and renewals, and subsection (I)
582
+ applies the same test by name to thirteen specific articles. The
583
+ Florida gap is not filled by this — different state, different statute
584
+ — but the SHAPE is now confirmed twice: US specialty programmes die by
585
+ numeric threshold, and the plates stay lawfully on the road until
586
+ inventory runs out.
587
+ fee_structure: "§ 56-3-8100(D)-(G): the regular biennial registration fee plus an organisation-requested additional fee, changeable only every five years from the first year of issue; if none is requested and none is prescribed by law the department may collect ten dollars; the department's production and administration costs come off the top and the remainder goes to the organisation or, absent a request, to the general fund"
588
+ biennial_period: "each special plate is issued or revalidated for a biennial period expiring twenty-four months from the month of issue (§§ 56-3-8100(D), 56-3-1230)"
589
+ motorcycle_rule: "§ 56-3-8100(K): each new classification of special vehicle plate, 'including, but not limited to, MOTORCYCLE license plates', must meet the requirements of Articles 81 and 82 of Chapter 3, Title 56"
590
+ region_encoding: none
591
+ sources:
592
+ - "https://www.scstatehouse.gov/code/t56c003.php # § 56-3-8100(A) the $6,800 fee and marketing plan; (C) the unified basic design, the emblem slot, the no-added-text rule, the organisation name across the top, and the 1 July 2013 mandatory-adoption date; (D)-(G) the fee structure and distribution; (H) the 300-application discontinuation threshold and issue-until-exhausted rule; (I) the thirteen articles it is applied to by name; (K) the motorcycle classification rule. Also the chapter's 153 ARTICLE headings, from which the derived upper bound is taken."
593
+ notes: >-
594
+ THE SOUTH CAROLINA SPECIALTY PROGRAM INDEX — and the one place in group
595
+ southeast-a where the specialty programme is BETTER sourced than the
596
+ standard plate, because South Carolina legislates the programme rather
597
+ than administering it. Three findings. FIRST, the unified basic design
598
+ (§ 56-3-8100(C)) makes South Carolina's specialty catalogue mechanically
599
+ renderable from one template plus an emblem — an L4 shortcut no other
600
+ state in this group offers. SECOND, the 300-application discontinuation
601
+ threshold answers, for South Carolina, the question us-fl recorded as an
602
+ open gap for Florida. THIRD, the count is DERIVED and labelled as an
603
+ upper bound rather than borrowed from an enthusiast site, because the
604
+ agency was unreachable; a verifier with SCDMV access should replace it
605
+ with the agency's own figure and keep the statutory structure either way.