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,592 @@
1
+ # plates/us-ny.yml — New York (PRD-PLATES gate L2, mid-Atlantic group).
2
+ #
3
+ # WHY NEW YORK IS THE HARD ARTWORK CASE. The US/world dossier flags NY as
4
+ # ADVERSE: courts have held works of the State of New York generally subject to
5
+ # copyright (County of Suffolk v. First American Real Estate Solutions, 261 F.3d
6
+ # 179 (2d Cir. 2001)), there is no {{PD-NYGov}} tag on Commons, and the current
7
+ # Excelsior base is the most graphically loaded standard plate in this group —
8
+ # Niagara Falls and the New York City skyline across the bottom. Under PRD-PLATES
9
+ # §3 the emblem/graphic slot renders as a NEUTRAL PLACEHOLDER here, and unlike
10
+ # Florida there is no favourable state posture to revisit it against. See
11
+ # `artwork_risk`.
12
+ #
13
+ # SOURCING RULE APPLIED HERE. New York's Vehicle & Traffic Law is unusually
14
+ # THIN on plate design: § 401(3)(a) hands the commissioner discretion over
15
+ # reflectorisation "according to specifications prescribed by the commissioner",
16
+ # and § 402(2)'s entire colour rule is that there be "a marked contrast between
17
+ # the color of the number plates and that of the numerals or letters thereon".
18
+ # NO SERIAL FORMAT, NO COLOUR VALUE AND NO PLATE DIMENSION IS IN THE STATUTE.
19
+ # So the statute carries the display law and the character bound (§ 404), the
20
+ # DMV's own pages carry the charset and the specialty count, and the serial
21
+ # ARRANGEMENTS (ABC-1234) are locator-grade and labelled as such per series in
22
+ # `format_evidence`. Nothing here launders a Wikipedia era table as sourced.
23
+ #
24
+ # period_evidence VOCABULARY used across the mid-Atlantic group:
25
+ # statutory-date the instrument states the date in terms
26
+ # instrument-in-force-upper-bound the edition read; an UPPER bound only
27
+ # agency-page-in-force an official agency page shows it current
28
+ # secondary-locator-unverified a year reported ONLY by a locator
29
+ # (Wikipedia); NOT a sourced claim
30
+ #
31
+ # format_evidence VOCABULARY (same group):
32
+ # statutory | official-agency-image | official-agency-text |
33
+ # secondary-locator-unverified
34
+ jurisdiction: us-ny
35
+ authority:
36
+ name: New York State Department of Motor Vehicles (NYSDMV)
37
+ url: "https://dmv.ny.gov/"
38
+ binding: vehicle
39
+ statute_edition: "New York Consolidated Laws, Vehicle and Traffic Law (VAT), as served by nysenate.gov and read 2026-08-02. No point-in-time edition marker is exposed by that service, so the read date is the edition marker."
40
+
41
+ # ---------------------------------------------------------------------------
42
+ # artwork_risk — required per jurisdiction by PRD-PLATES §4.
43
+ # ---------------------------------------------------------------------------
44
+ artwork_risk:
45
+ posture: adverse
46
+ basis: >-
47
+ New York is one of the four states the US/world dossier names as ADVERSE.
48
+ 17 U.S.C. § 105 puts only FEDERAL works in the public domain and does not
49
+ reach the states, so a state work is copyrighted unless the state says
50
+ otherwise — and New York does not say otherwise. The Second Circuit in
51
+ County of Suffolk v. First American Real Estate Solutions, 261 F.3d 179 (2d
52
+ Cir. 2001) held that New York's Freedom of Information Law does not strip
53
+ copyright from a New York government work, i.e. works of New York
54
+ governments are GENERALLY COPYRIGHTABLE. No {{PD-NYGov}} template exists on
55
+ Wikimedia Commons, in contrast to {{PD-FLGov}}, {{PD-CAGov}}, {{PD-GAGov}}
56
+ and {{PD-MAGov}}.
57
+ evidence_grade: >-
58
+ HONEST LIMIT: the County of Suffolk opinion itself was NOT FETCHED in this
59
+ pass — it was located through the Wikipedia survey of subnational copyright
60
+ status, which is a LOCATOR under PRD-PLATES §4 and not an authority. The
61
+ CITATION is recorded so a verifier can pull the opinion (an edict of
62
+ government, public domain, and freely quotable once obtained). The posture
63
+ conclusion should be re-derived from the opinion before any render decision
64
+ is taken on New York artwork.
65
+ emblem_rule: >-
66
+ RENDER PLACEHOLDER, and unlike Florida do not expect to revisit it. The
67
+ Excelsior base carries a photographic-derived Niagara Falls image and a New
68
+ York City skyline; the Empire Gold base carries none. Both are
69
+ `graphic: {present: true, rendered: placeholder}`. PRD-PLATES §4.5's own
70
+ risk ladder puts "exact reproduction of the state's graphic" at the top of
71
+ the risk column in NY specifically.
72
+ photograph_caution: >-
73
+ Commons photographs of New York plates are the photographer's licence on
74
+ the photograph and say nothing about the design (the standing §4 reading).
75
+ One New York plate file is genuinely public domain and it is PD BY AGE, not
76
+ by government status: File:1911 government-issued New York state license
77
+ plate, 63923.png — pre-1929 publication. That is a design-level clearance
78
+ for a 1911 plate and for nothing later.
79
+ sources:
80
+ - "https://en.wikipedia.org/wiki/Copyright_status_of_works_by_subnational_governments_of_the_United_States # LOCATOR ONLY: surfaces County of Suffolk v. First American Real Estate Solutions, 261 F.3d 179 (2d Cir. 2001) and the 'works of this state are subject to copyright restrictions' reading. The opinion itself was not fetched."
81
+ - "https://commons.wikimedia.org/wiki/Commons:Copyright_rules_by_territory/United_States # the state-exclusion rule ('This does not include governments of the individual states') and the list of state PD tags that exist — New York is absent from it"
82
+
83
+ # ---------------------------------------------------------------------------
84
+ # The US standards chain, recorded per state because adoption is VOLUNTARY.
85
+ # Nothing below quotes SAE J686: its text is paywalled and UNPINNED, and the
86
+ # standing rule is that AAMVA is the only route to a US dimension claim.
87
+ # ---------------------------------------------------------------------------
88
+ us_standards:
89
+ no_federal_mandate: true
90
+ chain: "SAE J686 -> AAMVA License Plate Standard Edition 3 (September 2025) -> voluntary state adoption. AAMVA writes recommendations in the declarative present and has no enforcement power."
91
+ aamva_edition_3:
92
+ dimensions_delegated: "AAMVA §3.1 sends plate dimensions and bolt holes to SAE J686. J686's own text was NOT obtained (paywalled); no J686 dimension is quoted here. New York's Vehicle and Traffic Law states no plate dimension at all, so this file carries NO sourced dimension for a New York plate — a recorded gap, not an omission."
93
+ 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 — RECOMMENDED practice, not New York law."
94
+ jurisdiction_name_layout: "AAMVA §2.1: jurisdiction name in the top centre between the bolt holes, at least 0.25 in above the plate number; jurisdiction characters 0.75-1.0 in. New York's 'NEW YORK' legend sits top-centre, consistent with this recommendation."
95
+ replacement_cycle: "AAMVA §1.1 recommends a replacement cycle 'not to exceed 7 to 10 years'. New York legislates NO replacement cycle — VAT § 401 has no reissuance clause and § 402 has no plate-age rule. Contrast Pennsylvania, which legislates a reissuance PROGRAM (75 Pa.C.S. § 1331(f)), and Florida, which legislates 10 years."
96
+ source: "https://www.aamva.org/getmedia/646bcc8a-219b-47d8-b5cd-726240473163/License-Plate-Standard-Edition-3_September-2025-Update.pdf"
97
+ folklore_caution: >-
98
+ The "1956 AMA standardization agreement" that supposedly fixed the 6x12 inch
99
+ plate is UNCITED in its Wikipedia source (a `citation needed` since 2017,
100
+ copied verbatim across articles). It is recorded as COMMONLY REPEATED,
101
+ UNSOURCED. New York, unlike Florida, has no statutory dimension to put in
102
+ its place, so this file simply carries none.
103
+
104
+ # ---------------------------------------------------------------------------
105
+ # Display rules. New York is a TWO-PLATE state with a one-plate fallback
106
+ # written into the statute itself.
107
+ # ---------------------------------------------------------------------------
108
+ display_rules:
109
+ default: "TWO plates. VAT § 402(1)(a) requires number plates displayed 'one on the front and one on the rear of such vehicle', with the fallback that 'in any registration year for which only one number plate is issued, such number plate shall ... be displayed on the rear'."
110
+ mounting: "§ 402(1)(a): not higher than forty-eight inches and not lower than twelve inches from the ground."
111
+ legibility: "§ 402(1)(b)(i): 'Number plates shall be kept clean and in a condition so as to be easily readable'."
112
+ obstruction: "§ 402(1)(b)(iii): 'The view of such number plates shall not be obstructed by any part of the vehicle or by anything carried thereon'."
113
+ contrast_rule: "§ 402(2): 'there shall be at all times a marked contrast between the color of the number plates and that of the numerals or letters thereon'. THIS IS THE ENTIRE STATUTORY COLOUR LAW OF NEW YORK — a property, not a value, exactly like Florida's 'distinguishing color' for historic plates."
114
+ issuance: "§ 401(3)(a): the commissioner shall 'assign to such motor vehicle a distinctive number and, without expense to the applicant, issue and deliver ... a certificate of registration ... and two number plates'. A plate 'may, in the discretion of the commissioner, be a plate of a permanent nature, treated with reflectorized material according to specifications prescribed by the commissioner', with an additional fee 'not to exceed twenty-five dollars' when a reflectorized set is issued."
115
+ sources:
116
+ - "https://www.nysenate.gov/legislation/laws/VAT/402 # § 402(1)(a) two plates front and rear + one-plate fallback, 48 in / 12 in mounting; (1)(b)(i) clean and easily readable; (1)(b)(iii) no obstruction; (2) the marked-contrast rule"
117
+ - "https://www.nysenate.gov/legislation/laws/VAT/401 # § 401(3)(a) distinctive number, TWO number plates, reflectorized material to the commissioner's specifications, the $25 reflectorized-set fee; (3)(b) re-assignment of the distinctive number on surrender"
118
+
119
+ # ---------------------------------------------------------------------------
120
+ # A SCHEMA STRESSOR NEW YORK CREATES ALL BY ITSELF (PRD-PLATES §2.6 rule 3).
121
+ # ---------------------------------------------------------------------------
122
+ serial_alphabet_finding:
123
+ headline: "New York lets a GRAPHIC be a character inside the serial."
124
+ text: >-
125
+ NYSDMV's personalised-plate rules state, in terms: 'A character is a letter
126
+ (A to Z), number (0 to 9), the state image, or a space.' The state image is
127
+ counted toward the eight-character allowance, and 'your plate combination
128
+ cannot begin or end with the state image. It must have at least one
129
+ character on each side of it.' That is a glyph INSIDE a serial, which
130
+ PRD-PLATES §2.6 rule 3 says is a SCHEMA AMENDMENT, not a data entry. It is
131
+ NOT encoded anywhere in this file: `_meta/separators.yml` declares the
132
+ serial alphabet as A-Z and 0-9 and nothing else, and there is no sanctioned
133
+ way to spell a state-outline glyph in a pattern or a regex.
134
+ consequence: >-
135
+ Every New York regex in this file describes the ALPHANUMERIC-ONLY subset.
136
+ A New York personalised plate containing the state image is a real,
137
+ lawfully issued registration that this dataset cannot currently express,
138
+ and a consumer must not read a non-match as invalidity. Recommended
139
+ amendment: add the New York state image to `_meta/separators.yml`'s
140
+ `never_separator` list with this citation, so no consumer's
141
+ separator-stripping tier ever deletes it, and open the `format.fields[]`
142
+ question the Japan row already raises.
143
+ source: "https://dmv.ny.gov/plates/personalized-plate-numbers # 'A character is a letter (A to Z), number (0 to 9), the state image, or a space'; 2 to 8 characters on a standard plate; the no-leading/trailing-state-image rule"
144
+
145
+ series:
146
+
147
+ # =========================================================================
148
+ # THE CURRENT STANDARD-ISSUE SERIES.
149
+ # =========================================================================
150
+ - id: us-ny-excelsior
151
+ class: standard
152
+ categories: [car, van, truck, bus]
153
+ period: { start: 2020 }
154
+ period_evidence: secondary-locator-unverified
155
+ format_evidence: secondary-locator-unverified
156
+ matching: strict
157
+ format:
158
+ pattern: "LLL-9999"
159
+ regex: '\A[A-Z]{3}-?\d{4}\z'
160
+ charset:
161
+ notes: >-
162
+ NO CHARSET RULE IS IN THE STATUTE. VAT § 401(3)(a) says only that the
163
+ commissioner assigns 'a distinctive number'; § 404 caps SPECIAL plates
164
+ at 'not more than eight letters, numerals or any combination thereof',
165
+ which bounds personalised configurations rather than the ordinary
166
+ series. The letter exclusions reported for New York (I, O and Q
167
+ excluded from the 2001 Empire State series) are locator-grade and are
168
+ recorded on `us-ny-empire-state-2001` below, not asserted here.
169
+ pattern_note: >-
170
+ The three-letter / four-numeral arrangement and the KAA-1000 starting
171
+ point are reported by the Wikipedia article and by NOTHING ELSE
172
+ obtained in this pass. NYSDMV publishes no serial-format statement and
173
+ the Vehicle and Traffic Law states none. `format_evidence` is therefore
174
+ `secondary-locator-unverified` and a verifier must re-derive the
175
+ arrangement before this series carries a five-nines claim. The hyphen is
176
+ optional in the regex because it is a printed separator (PRD-PLATES
177
+ §2.6): the canonical separator-free twin is derived, not shipped.
178
+ stacked_characters_note: "AAMVA treats stacked characters as part of the official number, at most two stacked. New York does not stack on the passenger base."
179
+ design:
180
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
181
+ foreground: "#003087"
182
+ colour_note: >-
183
+ NEITHER COLOUR IS IN THE STATUTE — VAT § 402(2) requires only 'a marked
184
+ contrast'. Dark-blue characters on white is the reported and observed
185
+ appearance; both hexes are `hex_basis: observed` and unverified pending a
186
+ departmental specification. NYSDMV's own page describes the plate only as
187
+ 'featuring New York State landmarks'.
188
+ legend_top: "NEW YORK"
189
+ legend_bottom: "EXCELSIOR"
190
+ graphic:
191
+ present: true
192
+ rendered: placeholder
193
+ description: "Niagara Falls and a New York City skyline across the lower half, with the state motto EXCELSIOR — reported by a locator and visible in NYSDMV's own page imagery. NOT rendered: this is the single highest-risk artwork in the mid-Atlantic group under `artwork_risk` above."
194
+ emblem: { present: true, rendered: placeholder }
195
+ band: { side: none }
196
+ rear_differs: false
197
+ dimension_note: "NO SOURCED DIMENSION. New York states no plate size in statute and AAMVA delegates dimensions to the unpinned SAE J686. Recorded gap rather than the conventional 12x6 in assumed."
198
+ replacement_cycle:
199
+ years: null
200
+ note: "NEW YORK LEGISLATES NO REPLACEMENT CYCLE. Neither VAT § 401 nor § 402 states a plate age limit or a reissuance duty. NYSDMV runs a 'Peeling and Damaged License Plates' remedy instead, i.e. condition-triggered rather than age-triggered. This is the opposite pole from Florida's statutory 10 years and from Pennsylvania's statutory reissuance PROGRAM."
201
+ region_encoding: none
202
+ sources:
203
+ - "https://dmv.ny.gov/plates # NYSDMV: 'DMV now offers Excelsior license plates featuring New York State landmarks' — the official evidence that this design is the current offering (agency-page-in-force)"
204
+ - "https://www.nysenate.gov/legislation/laws/VAT/401 # § 401(3)(a): the distinctive number, two plates, reflectorized material to the commissioner's specifications — the whole of New York's statutory design law"
205
+ - "https://www.nysenate.gov/legislation/laws/VAT/402 # § 402(2): the marked-contrast rule, which is why the hexes below are `observed` and not `spec`"
206
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_New_York # LOCATOR ONLY (PRD-PLATES §4): the June 2020 introduction, the ABC-1234 arrangement and the KAA-1000 start. None of the three is asserted as sourced."
207
+ notes: >-
208
+ EXCELSIOR — THE CURRENT NEW YORK STANDARD ISSUE. `start: 2020` is
209
+ `secondary-locator-unverified`: the June 2020 rollout is reported by
210
+ Wikipedia and by no primary obtained here. What IS officially sourced is
211
+ that the Excelsior plate is the design NYSDMV offers today, which makes
212
+ 2020 a plausible start and 2026 an instrument-in-force upper bound; the
213
+ honest record is both facts with their grades, not a single confident
214
+ year. PARALLEL ISSUANCE IS REAL HERE: New York has no replacement cycle,
215
+ so Empire Gold plates from 2010 remain lawfully on the road indefinitely
216
+ alongside Excelsior plates — which is why the two series overlap at 2020
217
+ and why this note and the Empire Gold note differ.
218
+
219
+ # =========================================================================
220
+ # ONE SERIES BACK.
221
+ # =========================================================================
222
+ - id: us-ny-empire-gold
223
+ class: standard
224
+ categories: [car, van, truck, bus]
225
+ period: { start: 2010, end: 2020 }
226
+ period_evidence: secondary-locator-unverified
227
+ format_evidence: secondary-locator-unverified
228
+ matching: strict
229
+ format:
230
+ pattern: "LLL-9999"
231
+ regex: '\A[A-Z]{3}-?\d{4}\z'
232
+ charset: { notes: "no charset rule in statute; see us-ny-excelsior. The reported start of this series is FAA-1000." }
233
+ design:
234
+ background: { color: "#F2B700", finish: retroreflective, hex_basis: observed }
235
+ foreground: "#003087"
236
+ colour_note: "Dark blue serial on a golden-yellow ground — reported and observed, `hex_basis: observed`. VAT § 402(2)'s marked-contrast rule is satisfied by it and says nothing more."
237
+ legend_top: "NEW YORK"
238
+ legend_bottom: "EMPIRE STATE"
239
+ graphic: { present: false, rendered: none, description: "the Empire Gold base is TYPOGRAPHIC ONLY — no landmark imagery. It is therefore the low-artwork-risk New York base and the one a render can approach most safely." }
240
+ emblem: { present: false }
241
+ band: { side: none }
242
+ rear_differs: false
243
+ region_encoding: none
244
+ sources:
245
+ - "https://www.nysenate.gov/legislation/laws/VAT/402 # § 402(2) marked contrast — the only colour law the series answers to"
246
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_New_York # LOCATOR ONLY: Empire Gold April 2010 - May 2020, ABC-1234 from FAA-1000, dark blue on golden yellow"
247
+ notes: >-
248
+ EMPIRE GOLD — THE PREVIOUS STANDARD BASE, and the reason New York needs
249
+ the overlap rule. Because New York legislates no replacement cycle, an
250
+ Empire Gold plate issued in 2019 is still a current, valid registration in
251
+ 2026: `end: 2020` closes the ISSUANCE window, not the validity window. A
252
+ consumer must not treat a series end as an expiry. Both boundary years are
253
+ `secondary-locator-unverified`.
254
+
255
+ - id: us-ny-empire-state-2001
256
+ class: standard
257
+ categories: [car, van, truck, bus]
258
+ period: { start: 2001, end: 2010 }
259
+ period_evidence: secondary-locator-unverified
260
+ format_evidence: secondary-locator-unverified
261
+ matching: strict
262
+ format:
263
+ pattern: "LLL-9999"
264
+ regex: '\A[A-Z]{3}-?\d{4}\z'
265
+ regex_strict: '\A[A-HJ-NPR-Z]{3}-?\d{4}\z'
266
+ charset:
267
+ excluded: ["I", "O", "Q"]
268
+ notes: >-
269
+ The 2001 Empire State series is reported to EXCLUDE I, O and Q from
270
+ the letter positions — the lookalike exclusions AAMVA-style systems
271
+ make. This is the only New York charset restriction reported anywhere
272
+ and it is LOCATOR-GRADE; it is expressed as `regex_strict` precisely
273
+ because PRD-PLATES §2.7 forbids `regex` from carrying charset
274
+ restrictions (the round-trip against `pattern` would fail).
275
+ design:
276
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
277
+ foreground: "#003087"
278
+ legend_top: "NEW YORK"
279
+ graphic: { present: false, rendered: none }
280
+ emblem: { present: false }
281
+ band: { side: none }
282
+ region_encoding: none
283
+ sources:
284
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_New_York # LOCATOR ONLY: Empire State 2001 base from ACA-1000, excluding I, O and Q"
285
+ notes: >-
286
+ EMPIRE STATE 2001 — carried TWO SERIES BACK, past the L2 minimum, for one
287
+ reason: it is the only New York base with a reported letter exclusion, and
288
+ an exclusion is the kind of fact that makes a `regex_strict` twin earn its
289
+ keep. Everything about this entry is locator-grade. It is included so the
290
+ exclusion is not lost, and flagged so it is not believed.
291
+
292
+ # =========================================================================
293
+ # CORE DISTINCT CLASSES — New York serialises these separately.
294
+ # =========================================================================
295
+ - id: us-ny-motorcycle
296
+ class: motorcycle
297
+ categories: [motorcycle]
298
+ period: { start: 2020 }
299
+ period_evidence: secondary-locator-unverified
300
+ format_evidence: secondary-locator-unverified
301
+ matching: strict
302
+ format:
303
+ pattern: "99LL99"
304
+ regex: '\A\d{2}[A-Z]{2}\d{2}\z'
305
+ charset: { notes: "six characters, reported arrangement two numerals / two letters / two numerals, reported start 10RA00. NYSDMV confirms motorcycles are separately serialised by pricing personalised MOTORCYCLE plates apart from passenger ones and capping them at 2 to 6 characters." }
306
+ design:
307
+ background: { finish: retroreflective }
308
+ legend_top: "NEW YORK"
309
+ emblem: { present: true, rendered: placeholder }
310
+ note: "reduced-size motorcycle plate; NO SOURCED DIMENSION (New York states none, AAMVA delegates to the unpinned J686)."
311
+ region_encoding: none
312
+ sources:
313
+ - "https://dmv.ny.gov/plates/personalized-plate-numbers # NYSDMV: '2 to 6 characters on a motorcycle plate', with its own initial ($35.00) and annual ($18.75) fees — the official evidence that the motorcycle series is separately administered"
314
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_New_York # LOCATOR ONLY: the 12AB34 arrangement and the 10RA00 start"
315
+ notes: >-
316
+ MOTORCYCLE. The CLASS is officially evidenced (separate character cap,
317
+ separate fee schedule); the ARRANGEMENT is locator-grade. That split is
318
+ the normal shape of a New York claim in this file and is why
319
+ `format_evidence` is a per-series field rather than a file-level one.
320
+
321
+ - id: us-ny-trailer
322
+ class: trailer
323
+ categories: [trailer]
324
+ period: { start: 2020 }
325
+ period_evidence: secondary-locator-unverified
326
+ format_evidence: secondary-locator-unverified
327
+ matching: strict
328
+ format:
329
+ pattern: "LL-99999"
330
+ regex: '\A[A-Z]{2}-?\d{5}\z'
331
+ charset: { notes: "reported two-letter prefix plus five numerals; the reported current prefix block begins CA." }
332
+ design:
333
+ background: { finish: retroreflective }
334
+ legend_top: "NEW YORK"
335
+ emblem: { present: true, rendered: placeholder }
336
+ region_encoding: none
337
+ sources:
338
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_New_York # LOCATOR ONLY: trailer CA-12345"
339
+ notes: >-
340
+ TRAILER. Entirely locator-grade. Included because L2 asks for the core
341
+ distinct classes a state separately serialises and New York does
342
+ serialise trailers apart; flagged because nothing official was obtained.
343
+
344
+ - id: us-ny-dealer
345
+ class: dealer
346
+ categories: [car, van, truck, motorcycle, trailer]
347
+ period: { start: 2020 }
348
+ period_evidence: secondary-locator-unverified
349
+ format_evidence: secondary-locator-unverified
350
+ matching: strict
351
+ binding: business
352
+ format:
353
+ pattern: "9999999"
354
+ regex: '\A\d{7}\z'
355
+ charset: { notes: "reported all-numeric seven-digit dealer serial, reported start 7100000." }
356
+ design:
357
+ background: { finish: retroreflective }
358
+ legend_top: "NEW YORK"
359
+ emblem: { present: true, rendered: placeholder }
360
+ region_encoding: none
361
+ sources:
362
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_New_York # LOCATOR ONLY: dealer 1234567 from 7100000"
363
+ - "https://dmv.ny.gov/businesses-regulated-dmv # NYSDMV regulates dealers as a distinct business class — the official hook for the class, not for the format"
364
+ notes: >-
365
+ DEALER. `binding: business` for the same reason as Florida's dealer plate
366
+ and Germany's rote Kennzeichen: the plate follows the dealership, not a
367
+ vehicle. Format locator-grade.
368
+
369
+ - id: us-ny-historic
370
+ class: historic
371
+ categories: [car, truck]
372
+ period: { start: 2020 }
373
+ period_evidence: agency-page-in-force
374
+ format_evidence: official-agency-text
375
+ matching: strict
376
+ format:
377
+ pattern: "HX9999"
378
+ regex: '\A(?:HX\d{1,5}|\d{1,5}HX)\z'
379
+ charset:
380
+ notes: >-
381
+ NYSDMV, in its own words: historical plates 'begin or end with the
382
+ letters "HX" for cars and trucks or "HM" for motorcycles'. The HX
383
+ token is a LITERAL and its POSITION is genuinely optional — the
384
+ alternation encodes exactly what the agency states and nothing more.
385
+ The DIGIT WIDTH is not stated by NYSDMV, so the quantifier is bounded
386
+ only by the § 404 eight-character frame; it makes no width claim.
387
+ progression: "not stated by NYSDMV (recorded gap)"
388
+ eligibility: "NYSDMV: a vehicle 'manufactured more than 25 years before the current calendar year' — a ROLLING threshold, which silently changes every year and must therefore be re-audited annually. Contrast Maryland (fixed model year 1999 or earlier) and Florida Horseless Carriage (fixed model year 1945 or earlier) in this same programme."
389
+ fee: "initial registration $28.75 standard / $60 personalised for passenger; $23.75 / $42.50 for motorcycle; annual renewal at the same tiers (NYSDMV)"
390
+ design:
391
+ background: { finish: retroreflective }
392
+ legend_top: "NEW YORK"
393
+ emblem: { present: true, rendered: placeholder }
394
+ region_encoding: none
395
+ sources:
396
+ - "https://dmv.ny.gov/plates/historical-and-vintage-plates # NYSDMV: the HX (cars and trucks) / HM (motorcycles) letter rule, the 'manufactured more than 25 years before the current calendar year' eligibility, and the fee schedule"
397
+ notes: >-
398
+ HISTORICAL. THE BEST-SOURCED FORMAT CLAIM IN THIS FILE — the HX/HM letters
399
+ come from NYSDMV's own page, not from a locator, which is why
400
+ `format_evidence` is `official-agency-text` here and
401
+ `secondary-locator-unverified` almost everywhere else in us-ny. Note the
402
+ threshold is ROLLING (25 years before the CURRENT calendar year), so the
403
+ eligibility boundary moves without any instrument changing — the audit
404
+ case PRD-PLATES §9 warns about.
405
+
406
+ - id: us-ny-historic-motorcycle
407
+ class: historic
408
+ categories: [motorcycle]
409
+ period: { start: 2020 }
410
+ period_evidence: agency-page-in-force
411
+ format_evidence: official-agency-text
412
+ matching: strict
413
+ format:
414
+ pattern: "HM9999"
415
+ regex: '\A(?:HM\d{1,4}|\d{1,4}HM)\z'
416
+ charset: { notes: "NYSDMV: historical plates 'begin or end with the letters ... \"HM\" for motorcycles'. Width unstated; the quantifier is bounded by the six-character motorcycle personalisation frame and makes no width claim." }
417
+ eligibility: "as us-ny-historic: manufactured more than 25 years before the current calendar year (rolling)"
418
+ design:
419
+ background: { finish: retroreflective }
420
+ legend_top: "NEW YORK"
421
+ emblem: { present: true, rendered: placeholder }
422
+ region_encoding: none
423
+ sources:
424
+ - "https://dmv.ny.gov/plates/historical-and-vintage-plates # NYSDMV: 'HM' for motorcycles; the motorcycle historical fee tiers ($23.75 standard / $42.50 personalised)"
425
+ notes: >-
426
+ HISTORICAL MOTORCYCLE. Its own series rather than a variant because the
427
+ literal token in the serial differs (HM, not HX) — a FORMAT difference, which
428
+ PRD-PLATES §2.3 makes the test for a separate series.
429
+
430
+ - id: us-ny-vintage
431
+ class: historic
432
+ categories: [car, truck, motorcycle]
433
+ period: { start: 2020 }
434
+ period_evidence: agency-page-in-force
435
+ format_evidence: official-agency-text
436
+ matching: recall-only
437
+ format:
438
+ pattern: "999999"
439
+ regex: '\A[A-Z0-9](?:[- ]?[A-Z0-9]){0,7}\z'
440
+ charset:
441
+ notes: >-
442
+ A VINTAGE PLATE IS AN ORIGINAL NEW YORK PLATE FROM THE YEAR THE
443
+ VEHICLE WAS MANUFACTURED. NYSDMV requires the authentic plate and
444
+ states that 'DMV does not accept reproductions'. So this series has no
445
+ grammar of its own at all — its serial is whatever New York issued in
446
+ some year between 1901 and roughly 2001, across a century of unrecorded
447
+ arrangements.
448
+ pattern_note: >-
449
+ `matching: recall-only` (PRD-PLATES §2.7), and it is the textbook case
450
+ alongside `nl-export`: the regex is a deliberate CATCH-ALL over every
451
+ New York arrangement, so a match says only 'this string has a shape New
452
+ York has issued' and is emphatically NOT a claim that the string is a
453
+ valid vintage registration. No `regex_strict` may exist here and the
454
+ lint enforces that.
455
+ eligibility: "NYSDMV: the plates must be the original plates for the vehicle's year of manufacture; reproductions are not accepted."
456
+ fee: "$3.75 initial for passenger and motorcycle where a New York registration already exists (NYSDMV)"
457
+ design:
458
+ background: { finish: unknown }
459
+ note: "the design IS the original year's design — there is no current New York vintage design to record. Renders of this series are meaningless at L2."
460
+ emblem: { present: true, rendered: placeholder }
461
+ region_encoding: none
462
+ sources:
463
+ - "https://dmv.ny.gov/plates/historical-and-vintage-plates # NYSDMV: vintage plates must be the authentic original plates for the year of manufacture, 'DMV does not accept reproductions', $3.75 initial fee"
464
+ notes: >-
465
+ VINTAGE — THE SECOND RECALL-ONLY SERIES IN THE WHOLE DATASET, and the
466
+ first one in the US slice. It matters out of proportion to its size: it
467
+ proves the §2.7 distinction is not a Netherlands-specific artefact but a
468
+ recurring shape wherever a jurisdiction re-authorises OLD plates for
469
+ CURRENT use. Any state with a year-of-manufacture programme will need the
470
+ same treatment.
471
+
472
+ # =========================================================================
473
+ # PERSONALISED.
474
+ # =========================================================================
475
+ - id: us-ny-personalized
476
+ class: personalized
477
+ categories: [car, van, truck, bus, motorcycle]
478
+ period: { start: 2020 }
479
+ period_evidence: agency-page-in-force
480
+ format_evidence: official-agency-text
481
+ matching: strict
482
+ format:
483
+ pattern: "LLLLLLLL"
484
+ regex: '\A[A-Z0-9]{2,8}\z'
485
+ regex_statutory: '\A[A-Z0-9](?: ?[A-Z0-9]){1,7}\z'
486
+ charset:
487
+ notes: >-
488
+ NYSDMV: '2 to 8 characters on a standard plate', '2 to 6 characters on
489
+ a motorcycle plate', 'up to 6 characters on a picture plate'. The
490
+ statutory frame behind it is VAT § 404, which defines a special number
491
+ plate as one containing 'not more than eight letters, numerals or any
492
+ combination thereof'. A SPACE IS A CHARACTER AND COUNTS TOWARD THE
493
+ EIGHT — that is why `regex_statutory` is the space-permitting twin and
494
+ `regex` is the alphanumeric-only core. THE STATE IMAGE IS ALSO A
495
+ CHARACTER and cannot be spelled at all; see `serial_alphabet_finding`
496
+ at the top of this file.
497
+ pattern_note: >-
498
+ HONEST IMPRECISION, STATED: `regex_statutory` permits up to eight
499
+ alphanumerics AND interleaved spaces, so it accepts strings longer than
500
+ eight printed characters, whereas NYSDMV counts each space against the
501
+ eight. Encoding the exact 'alphanumerics + spaces <= 8' bound requires an
502
+ alternation the dataset does not need at L2. The twin is therefore
503
+ slightly LOOSER than the rule, which is the correct direction for a
504
+ `regex_statutory` (an outer bound), and it is recorded rather than hidden.
505
+ fee: "passenger/commercial: $60.00 initial, $31.25 annual. Motorcycle: $35.00 initial, $18.75 annual (NYSDMV). VAT § 404 sets the underlying annual service charge at thirty-one dollars and twenty-five cents, with commissioner discretion between $18.75 and $31.25 on budget-director approval — the statute and the fee page agree exactly."
506
+ region_encoding: none
507
+ sources:
508
+ - "https://dmv.ny.gov/plates/personalized-plate-numbers # NYSDMV: 2-8 characters standard / 2-6 motorcycle / up to 6 on a picture plate; 'A character is a letter (A to Z), number (0 to 9), the state image, or a space'; the state-image position rule; the fee schedule"
509
+ - "https://www.nysenate.gov/legislation/laws/VAT/404 # § 404: a special number plate contains 'not more than eight letters, numerals or any combination thereof'; the $31.25 annual service charge and the $18.75-$31.25 discretion; 'Nothing contained in this section shall be construed to require the commissioner to issue a special number plate'"
510
+ notes: >-
511
+ PERSONALISED. New York is the rare state where the character cap is in
512
+ STATUTE (§ 404's eight) and the agency page agrees with it to the cent on
513
+ fees — a clean statute/agency corroboration of the kind the sourcing law
514
+ wants. It is also the series that surfaces the state-image finding, which
515
+ is the most consequential schema result of the mid-Atlantic pass.
516
+
517
+ # =========================================================================
518
+ # SPECIALTY — THE PROGRAM INDEX, per PRD-PLATES §2.5. Count and links only.
519
+ # =========================================================================
520
+ - id: us-ny-specialty-index
521
+ class: specialty
522
+ categories: [car, van, truck, motorcycle]
523
+ period: { start: 2020 }
524
+ period_evidence: agency-page-in-force
525
+ format_evidence: official-agency-text
526
+ matching: strict
527
+ format:
528
+ pattern: "LLL-9999"
529
+ regex: '\A[A-Z]{3}-?\d{4}\z'
530
+ charset: { notes: "custom picture plates carry ORDINARY serials on an alternative design; when personalised they are capped at SIX characters rather than eight (NYSDMV), which is the one place a New York specialty plate's grammar differs from the standard series." }
531
+ design:
532
+ background: { finish: retroreflective }
533
+ note: "one design per approved organisation or cause; the designs themselves are L4 scope (PRD-PLATES §2.5) and none is described here"
534
+ emblem: { present: true, rendered: placeholder }
535
+ program_index:
536
+ count_official: 206
537
+ count_official_quote: "NYSDMV's own Custom Picture Plates catalogue reports '206 items available' (read 2026-08-02)."
538
+ count_method: "READ FROM THE AGENCY'S OWN RESULT COUNTER, not enumerated by hand and not taken from a locator. It is a live figure and will drift; snapshot the date with the number."
539
+ categories_official: ["Causes", "Colleges, Fraternities, Sororities", "Counties and Regions", "I Love NY Adventure", "Military and Veterans", "Organizations", "Sports", "Zodiac"]
540
+ official_list_url: "https://dmv.ny.gov/plates/picture-plates"
541
+ professional_plates_url: "https://dmv.ny.gov/plates/professional-custom-plates"
542
+ professional_note: "NYSDMV runs a distinct PROFESSIONAL CUSTOM PLATE track 'exclusively available to emergency, medical, and other qualified professionals' — an eligibility-gated subtype comparable to Florida's SPECIAL REQUIREMENT plates. Not enumerated in this pass."
543
+ churn_note: "no discontinuation rule was located in VAT § 404, which is purely permissive ('Nothing contained in this section shall be construed to require the commissioner to issue a special number plate'). Whether New York retires dead programmes, and on what trigger, is a recorded gap."
544
+ region_encoding: none
545
+ sources:
546
+ - "https://dmv.ny.gov/plates/picture-plates # the official catalogue and its '206 items available' counter; the eight listed categories"
547
+ - "https://dmv.ny.gov/plates # NYSDMV's three plate tracks: Personalized Plates, Custom Picture Plates, Professional Custom Plates"
548
+ - "https://www.nysenate.gov/legislation/laws/VAT/404 # § 404: the permissive special-plate authority, the eight-character cap and the service charge"
549
+ notes: >-
550
+ THE SPECIALTY PROGRAM INDEX — one entry standing for the whole programme,
551
+ which is what PRD-PLATES §2.5 asks for at this gate. New York's count is
552
+ the CLEANEST in the mid-Atlantic group because the agency publishes a
553
+ machine-readable result count (206) rather than a rounded claim: contrast
554
+ Florida's contested 'over 100' (agency) versus 'over 120' (locator). No
555
+ New York equivalent of Florida's monthly active-plate registration report
556
+ was found — New York publishes designs, not issuance volumes.
557
+
558
+ # ---------------------------------------------------------------------------
559
+ # CLASSES NEW YORK ISSUES THAT ARE DELIBERATELY NOT MODELLED AS SERIES.
560
+ # A series needs a format. Where no format was obtained, a recorded gap beats
561
+ # an invented pattern (PRD-PLATES §5.3: record disagreements, never average).
562
+ # ---------------------------------------------------------------------------
563
+ unmodelled_classes:
564
+ temporary: >-
565
+ New York's temporary instrument is the IN-TRANSIT PERMIT under VAT § 401-a,
566
+ 'valid for a period of thirty days from the date of issuance', for vehicles
567
+ being taken out of state for registration elsewhere; a vehicle displaying it
568
+ is excused from the ordinary number-plate requirement. NO SERIAL FORMAT IS
569
+ PUBLISHED, so no series is minted. Source:
570
+ https://www.nysenate.gov/legislation/laws/VAT/401-A and
571
+ https://dmv.ny.gov/registration/in-transit-vehicle-permits-temporary-registrations
572
+ government: >-
573
+ New York issues distinct official/municipal plates (locator-reported forms
574
+ R-12345 and A1234 with the political subdivision and county named on the
575
+ plate). Neither a statutory nor an agency format statement was obtained and
576
+ the locator's own account is inconsistent, so nothing is minted. RECORDED
577
+ GAP — the highest-value New York follow-up after the base-year primaries.
578
+ apportioned_and_commercial: >-
579
+ New York registers commercial vehicles by weight class and participates in
580
+ the International Registration Plan, but no separate serial grammar was
581
+ obtained. Recorded gap.
582
+
583
+ # ---------------------------------------------------------------------------
584
+ # GAPS, stated so the verifier does not have to rediscover them.
585
+ # ---------------------------------------------------------------------------
586
+ gaps:
587
+ - "NO PRIMARY FOR ANY NEW YORK BASE-DESIGN YEAR. Excelsior 2020, Empire Gold 2010, Empire State 2001 are all locator-grade. The primaries to chase are NYSDMV press releases and the Governor's office announcements of the 2019 plate-design public vote."
588
+ - "NO SOURCED PLATE DIMENSION for any New York plate. The statute states none and SAE J686 is unpinned."
589
+ - "NO SOURCED COLOUR VALUE. VAT § 402(2) states a contrast PROPERTY, not values; every hex here is `observed`."
590
+ - "The County of Suffolk opinion (261 F.3d 179) was not fetched; the adverse posture rests on a locator's reading of it."
591
+ - "The state-image-as-a-character finding needs a `_meta/separators.yml` amendment before any consumer ships a New York validator."
592
+ - "Government/official and temporary formats unobtained (see unmodelled_classes)."