vehicles 0.6.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +164 -0
  3. data/CHANGELOG.md +274 -0
  4. data/README.md +55 -10
  5. data/data/PROVENANCE-vehicles.md +12 -0
  6. data/data/plates/PROVENANCE.md +5 -4
  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/fr-departements.yml +191 -0
  14. data/data/plates/_decode/gb-age-identifiers.yml +170 -0
  15. data/data/plates/_decode/gb-memory-tags.yml +202 -0
  16. data/data/plates/_decode/gr-prefectures.yml +1408 -0
  17. data/data/plates/_decode/hr-cities.yml +315 -0
  18. data/data/plates/_decode/ie-counties.yml +227 -0
  19. data/data/plates/_decode/in-state-codes.yml +169 -0
  20. data/data/plates/_decode/is-districts-1938.yml +116 -0
  21. data/data/plates/_decode/it-provinces.yml +348 -0
  22. data/data/plates/_decode/jp-office-marks.yml +960 -0
  23. data/data/plates/_decode/jp-use-marks.yml +205 -0
  24. data/data/plates/_decode/kr-authority-marks.yml +146 -0
  25. data/data/plates/_decode/kr-use-syllables.yml +194 -0
  26. data/data/plates/_decode/lu-series-order.yml +638 -0
  27. data/data/plates/_decode/mx-entity-series.yml +380 -0
  28. data/data/plates/_decode/my-index-marks.yml +271 -0
  29. data/data/plates/_decode/no-counties-1913.yml +148 -0
  30. data/data/plates/_decode/no-districts.yml +901 -0
  31. data/data/plates/_decode/pl-powiats.yml +567 -0
  32. data/data/plates/_decode/pt-trailer-services.yml +96 -0
  33. data/data/plates/_decode/ro-counties.yml +213 -0
  34. data/data/plates/_decode/se-diplomatic.yml +220 -0
  35. data/data/plates/_decode/si-regions.yml +123 -0
  36. data/data/plates/_decode/sk-districts.yml +314 -0
  37. data/data/plates/_decode/th-registration-elements.yml +208 -0
  38. data/data/plates/_decode/ua-regions.yml +393 -0
  39. data/data/plates/_decode/za-licence-marks.yml +215 -0
  40. data/data/plates/_meta/classes.yml +1 -0
  41. data/data/plates/_meta/separators.yml +102 -0
  42. data/data/plates/ad.yml +961 -0
  43. data/data/plates/ar.yml +762 -0
  44. data/data/plates/at.yml +1424 -0
  45. data/data/plates/au-act.yml +472 -0
  46. data/data/plates/au-nsw.yml +282 -0
  47. data/data/plates/au-nt.yml +431 -0
  48. data/data/plates/au-qld.yml +272 -0
  49. data/data/plates/au-sa.yml +248 -0
  50. data/data/plates/au-tas.yml +302 -0
  51. data/data/plates/au-vic.yml +215 -0
  52. data/data/plates/au-wa.yml +309 -0
  53. data/data/plates/be.yml +1840 -0
  54. data/data/plates/br.yml +1152 -0
  55. data/data/plates/ca-ab.yml +430 -0
  56. data/data/plates/ca-bc.yml +697 -0
  57. data/data/plates/ca-mb.yml +499 -0
  58. data/data/plates/ca-nb.yml +537 -0
  59. data/data/plates/ca-nl.yml +743 -0
  60. data/data/plates/ca-ns.yml +808 -0
  61. data/data/plates/ca-nt.yml +610 -0
  62. data/data/plates/ca-nu.yml +280 -0
  63. data/data/plates/ca-on.yml +881 -0
  64. data/data/plates/ca-pe.yml +592 -0
  65. data/data/plates/ca-qc.yml +1036 -0
  66. data/data/plates/ca-sk.yml +256 -0
  67. data/data/plates/ca-yt.yml +656 -0
  68. data/data/plates/ch.yml +1273 -0
  69. data/data/plates/cn.yml +1431 -0
  70. data/data/plates/cy.yml +688 -0
  71. data/data/plates/cz.yml +1179 -0
  72. data/data/plates/de.yml +553 -118
  73. data/data/plates/dk.yml +1647 -0
  74. data/data/plates/ee.yml +1275 -0
  75. data/data/plates/es.yml +228 -32
  76. data/data/plates/fi.yml +1271 -0
  77. data/data/plates/fr.yml +1265 -0
  78. data/data/plates/gb.yml +1188 -0
  79. data/data/plates/gr.yml +721 -0
  80. data/data/plates/hr.yml +860 -0
  81. data/data/plates/hu.yml +959 -0
  82. data/data/plates/ie.yml +775 -0
  83. data/data/plates/in.yml +1172 -0
  84. data/data/plates/is.yml +667 -0
  85. data/data/plates/it.yml +1317 -0
  86. data/data/plates/jp.yml +3650 -0
  87. data/data/plates/kr.yml +1375 -0
  88. data/data/plates/li.yml +1010 -0
  89. data/data/plates/lt.yml +879 -0
  90. data/data/plates/lu.yml +842 -0
  91. data/data/plates/lv.yml +924 -0
  92. data/data/plates/mc.yml +1024 -0
  93. data/data/plates/mt.yml +854 -0
  94. data/data/plates/mx.yml +1372 -0
  95. data/data/plates/my.yml +685 -0
  96. data/data/plates/nl.yml +44 -0
  97. data/data/plates/no.yml +1018 -0
  98. data/data/plates/nz.yml +1699 -0
  99. data/data/plates/pl.yml +1296 -0
  100. data/data/plates/pt.yml +847 -0
  101. data/data/plates/ro.yml +785 -0
  102. data/data/plates/se.yml +1091 -0
  103. data/data/plates/si.yml +1105 -0
  104. data/data/plates/sk.yml +1439 -0
  105. data/data/plates/sm.yml +1119 -0
  106. data/data/plates/th.yml +1150 -0
  107. data/data/plates/ua.yml +1672 -0
  108. data/data/plates/us-ak.yml +763 -0
  109. data/data/plates/us-al.yml +457 -0
  110. data/data/plates/us-ar.yml +427 -0
  111. data/data/plates/us-as.yml +454 -0
  112. data/data/plates/us-az.yml +430 -0
  113. data/data/plates/us-ca.yml +892 -0
  114. data/data/plates/us-co.yml +452 -0
  115. data/data/plates/us-ct.yml +427 -0
  116. data/data/plates/us-dc.yml +614 -0
  117. data/data/plates/us-de.yml +551 -0
  118. data/data/plates/us-fl.yml +319 -96
  119. data/data/plates/us-ga.yml +644 -0
  120. data/data/plates/us-gu.yml +658 -0
  121. data/data/plates/us-hi.yml +585 -0
  122. data/data/plates/us-ia.yml +438 -0
  123. data/data/plates/us-id.yml +531 -0
  124. data/data/plates/us-il.yml +516 -0
  125. data/data/plates/us-in.yml +324 -0
  126. data/data/plates/us-ks.yml +351 -0
  127. data/data/plates/us-ky.yml +770 -0
  128. data/data/plates/us-la.yml +568 -0
  129. data/data/plates/us-ma.yml +379 -0
  130. data/data/plates/us-md.yml +536 -0
  131. data/data/plates/us-me.yml +445 -0
  132. data/data/plates/us-mi.yml +408 -0
  133. data/data/plates/us-mn.yml +411 -0
  134. data/data/plates/us-mo.yml +356 -0
  135. data/data/plates/us-mp.yml +402 -0
  136. data/data/plates/us-ms.yml +432 -0
  137. data/data/plates/us-mt.yml +619 -0
  138. data/data/plates/us-nc.yml +602 -0
  139. data/data/plates/us-nd.yml +419 -0
  140. data/data/plates/us-ne.yml +483 -0
  141. data/data/plates/us-nh.yml +394 -0
  142. data/data/plates/us-nj.yml +547 -0
  143. data/data/plates/us-nm.yml +574 -0
  144. data/data/plates/us-nv.yml +655 -0
  145. data/data/plates/us-ny.yml +592 -0
  146. data/data/plates/us-oh.yml +404 -0
  147. data/data/plates/us-ok.yml +513 -0
  148. data/data/plates/us-or.yml +392 -0
  149. data/data/plates/us-pa.yml +506 -0
  150. data/data/plates/us-pr.yml +507 -0
  151. data/data/plates/us-ri.yml +445 -0
  152. data/data/plates/us-sc.yml +605 -0
  153. data/data/plates/us-sd.yml +428 -0
  154. data/data/plates/us-tn.yml +471 -0
  155. data/data/plates/us-tx.yml +535 -0
  156. data/data/plates/us-ut.yml +384 -0
  157. data/data/plates/us-va.yml +567 -0
  158. data/data/plates/us-vi.yml +489 -0
  159. data/data/plates/us-vt.yml +458 -0
  160. data/data/plates/us-wa.yml +484 -0
  161. data/data/plates/us-wi.yml +509 -0
  162. data/data/plates/us-wv.yml +446 -0
  163. data/data/plates/us-wy.yml +523 -0
  164. data/data/plates/va.yml +604 -0
  165. data/data/plates/za.yml +1141 -0
  166. data/data/vehicles.json +160653 -105090
  167. data/lib/vehicles/configuration.rb +17 -3
  168. data/lib/vehicles/dataset.rb +73 -18
  169. data/lib/vehicles/fuzzy.rb +115 -0
  170. data/lib/vehicles/http.rb +48 -0
  171. data/lib/vehicles/make.rb +36 -6
  172. data/lib/vehicles/mcp_server.rb +5 -5
  173. data/lib/vehicles/model.rb +21 -2
  174. data/lib/vehicles/plates/series.rb +172 -18
  175. data/lib/vehicles/plates/template_fill.rb +188 -0
  176. data/lib/vehicles/plates/templates.rb +162 -0
  177. data/lib/vehicles/plates.rb +12 -0
  178. data/lib/vehicles/providers/hosted_provider.rb +28 -55
  179. data/lib/vehicles/validators/vehicle_make_validator.rb +3 -1
  180. data/lib/vehicles/validators/vehicle_model_validator.rb +1 -1
  181. data/lib/vehicles/version.rb +1 -1
  182. data/lib/vehicles.rb +32 -16
  183. data/rakelib/data_refresh.rake +109 -0
  184. data/rakelib/plates_refresh.rake +29 -0
  185. data/sig/vehicles.rbs +18 -0
  186. metadata +164 -2
@@ -0,0 +1,614 @@
1
+ # plates/us-dc.yml — District of Columbia (PRD-PLATES gate L2, mid-Atlantic group).
2
+ #
3
+ # THE DISTRICT IS THE ONLY JURISDICTION IN THE UNITED STATES WHOSE STANDARD
4
+ # PLATE LEGEND IS A POLITICAL DEMAND, AND THE DEMAND IS IN THE STATUTE.
5
+ # DC Official Code § 50-1501.02(f-1) provides that identification tags designed
6
+ # under subsection (f)(3) — excluding for-hire vehicles, organization plates,
7
+ # motorcycles and autocycles — 'shall display the phrase "End Taxation Without
8
+ # Representation"'. And in the same breath it legislates an OPT-OUT: 'An
9
+ # individual who does not wish to display the phrase "End Taxation Without
10
+ # Representation" on his or her identification tag may request an identification
11
+ # tag featuring an alternate design, to be supplied by the Department of Motor
12
+ # Vehicles.' A MANDATED SLOGAN WITH A STATUTORY CONSCIENCE CLAUSE — structurally
13
+ # the same wrinkle as Florida's county-name legend, which is a county-commission
14
+ # opt-out, and modelled the same way: the alternate is its own series because
15
+ # its design differs.
16
+ #
17
+ # THE ARTWORK FINDING HERE IS A DEBUNK, NOT A LOOKUP. Wikimedia Commons carries
18
+ # a {{PD-DC}} template asserting that District of Columbia government works are
19
+ # public domain. THE DISTRICT'S OWN TERMS OF USE SAY THE OPPOSITE: dc.gov
20
+ # content 'is licensed under a Creative Commons Attribution 3.0 License'. A CC BY
21
+ # licence is an EXERCISE of copyright, not a disclaimer of it — you cannot
22
+ # licence what you do not own. The Commons tag and the District's own statement
23
+ # cannot both be right, and the District's own statement is the better authority
24
+ # about the District. See `artwork_risk`; this is recorded as a folklore
25
+ # correction, exactly as PRD-PLATES §4 asks.
26
+ #
27
+ # period_evidence / format_evidence vocabularies as in us-ny.yml.
28
+ jurisdiction: us-dc
29
+ authority:
30
+ name: District of Columbia Department of Motor Vehicles (DC DMV)
31
+ url: "https://dmv.dc.gov/"
32
+ binding: vehicle
33
+ statute_edition: "Code of the District of Columbia, Title 50, Chapter 15, as served by code.dccouncil.gov and read 2026-08-02. DCMR Title 18 § 422 ('Display of Identification Tags', effective 11 August 2017) was identified in the DC Register index but its TEXT was not retrieved — the register serves rule metadata and puts the text behind a per-notice viewer. Recorded gap."
34
+
35
+ # ---------------------------------------------------------------------------
36
+ # artwork_risk — required per jurisdiction by PRD-PLATES §4.
37
+ # ---------------------------------------------------------------------------
38
+ artwork_risk:
39
+ posture: asserted-but-openly-licensed
40
+ basis: >-
41
+ THE DISTRICT ASSERTS COPYRIGHT AND THEN LICENSES IT OPENLY. dc.gov's own
42
+ terms and conditions of use state that 'content on this site is licensed
43
+ under a Creative Commons Attribution 3.0 License' (excluding third-party
44
+ copyrighted content), that user submissions are granted to the world under
45
+ the same licence, and that data on the DC Open Data portal carries a
46
+ 'Creative Commons CC0 1.0 Universal' dedication. The same page separately
47
+ notes that 'federal government-produced materials appearing on this site or
48
+ elsewhere are not copyright protected' — the District distinguishing FEDERAL
49
+ material (public domain) from DISTRICT material (CC BY 3.0), which is itself
50
+ the clearest possible statement that it does not consider its own works
51
+ federal.
52
+ folklore_correction: >-
53
+ WIKIMEDIA COMMONS IS WRONG, OR AT LEAST UNSUPPORTED, ABOUT THE DISTRICT.
54
+ Commons carries {{PD-DCGov}} (a redirect to {{PD-DC}}), which asserts that
55
+ District of Columbia government works are PUBLIC DOMAIN and cites, for
56
+ authority, the US Copyright Office's Compendium chapter 300 with no pinpoint
57
+ to any DC-specific holding. That assertion is inconsistent with the
58
+ District's own published terms, which licence District content CC BY 3.0 —
59
+ an act that presupposes ownership. The likely root of the error is the
60
+ federal-enclave intuition (that anything in Washington is federal), but
61
+ 17 U.S.C. § 101 defines a 'work of the United States Government' as one
62
+ prepared by an officer or employee OF THE UNITED STATES GOVERNMENT, and the
63
+ District government is a municipal government created by Congress, not a
64
+ federal agency. RECORDED AS A FOLKLORE CORRECTION per PRD-PLATES §4's
65
+ standing treatment of circular and unsupported claims. Anyone relying on
66
+ {{PD-DC}} for a DC plate design should stop.
67
+ practical_effect: >-
68
+ The CC BY 3.0 grant is genuinely useful and genuinely encumbered: it permits
69
+ reuse of dc.gov CONTENT with ATTRIBUTION, which is a real obligation that
70
+ would propagate into any dataset that copied that content. Because our
71
+ renders are generated from facts and never derived from District material,
72
+ the attribution obligation NEVER ATTACHES — the same argument that makes
73
+ Commons' CC BY-SA photographs harmless to us. The grant is recorded, not
74
+ relied upon.
75
+ emblem_rule: >-
76
+ RENDER PLACEHOLDER. The District's tags carry the DC flag device (three
77
+ stars over two bars) in several roles — as a graphic on the plate, as a
78
+ SERIAL SEPARATOR on the trailer series, and in the corners of the current
79
+ temporary tag. The flag is the District's heraldic device and carries
80
+ protection independent of copyright, unresearched here as everywhere.
81
+ photograph_caution: "Standard §4 reading: a Commons photograph carries the photographer's licence on the photograph and says nothing about the design."
82
+ sources:
83
+ - "https://dc.gov/page/terms-and-conditions-use # the District's own terms: 'content on this site is licensed under a Creative Commons Attribution 3.0 License'; DC Open Data under CC0 1.0; 'federal government-produced materials appearing on this site or elsewhere are not copyright protected'"
84
+ - "https://commons.wikimedia.org/wiki/Template:PD-DCGov # the Commons tag (a redirect to Template:PD-DC) asserting DC government works are public domain, citing the Copyright Office Compendium chapter 300 with no DC-specific pinpoint — RECORDED AS CONTRADICTED by the District's own terms"
85
+
86
+ # ---------------------------------------------------------------------------
87
+ # The US standards chain. Voluntary; J686 never quoted.
88
+ # ---------------------------------------------------------------------------
89
+ us_standards:
90
+ no_federal_mandate: true
91
+ chain: "SAE J686 -> AAMVA License Plate Standard Edition 3 (September 2025) -> voluntary state adoption. The District is an AAMVA member jurisdiction like any state; there is no federal plate mandate even in the federal district."
92
+ aamva_edition_3:
93
+ dimensions_delegated: "AAMVA §3.1 sends dimensions and bolt holes to SAE J686 (paywalled, NOT obtained). DC Code Chapter 15 states no tag dimension; the design is delegated wholesale to the Mayor by § 50-1501.02(f)(3). No sourced dimension is carried here — though see the temporary tag, whose mounting holes DC DMV states are 'set to vehicle industry standards', an agency acknowledgement of the same unpinned standard."
94
+ stacked_characters: >-
95
+ AAMVA: 'If stacked characters are used, they are part of the official
96
+ license plate number. No more than two characters are to be stacked.' THE
97
+ DISTRICT ACTUALLY STACKS. Its motorcycle tags are reported with a stacked
98
+ letter pair — M over a series letter — followed by the numerals. Under
99
+ AAMVA's rule the stacked pair is SERIAL, not decoration, which is exactly
100
+ the normalisation trap the dossier flagged: a consumer that reads a
101
+ stacked pair as one character, or drops it, gets a DC motorcycle serial
102
+ wrong. Recorded on us-dc-motorcycle.
103
+ replacement_cycle: "AAMVA §1.1 recommends a cycle 'not to exceed 7 to 10 years'. No District replacement cycle was located; DC DMV offers tag replacement as a service rather than as a schedule."
104
+ source: "https://www.aamva.org/getmedia/646bcc8a-219b-47d8-b5cd-726240473163/License-Plate-Standard-Edition-3_September-2025-Update.pdf"
105
+ folklore_caution: "The '1956 AMA standardization agreement' is UNCITED in its Wikipedia source and is recorded as COMMONLY REPEATED, UNSOURCED. Note the dossier's finding that the same uncited passage was copied verbatim into the Puerto Rico and Canada articles — territory articles are where this particular folklore propagates."
106
+
107
+ # ---------------------------------------------------------------------------
108
+ # Display rules. The District is a TWO-TAG jurisdiction.
109
+ # ---------------------------------------------------------------------------
110
+ display_rules:
111
+ default: "TWO tags. DC DMV: 'Vehicles are required to display two current tags: one on the front and the other on the rear of the vehicle.'"
112
+ exceptions: "DC DMV: 'Exceptions are for motorcycles, mopeds and trailers. For these, one tag is issued to be displayed on the rear of the vehicle.'"
113
+ mounting: "DC DMV: 'The vehicle tags must be securely fastened in a horizontal position, so that they do not fall off and can be easily read.'"
114
+ obstruction: "DC DMV: 'District law requires that the tags be visible and not obstructed or covered by any substance (e.g., glass, plastic, spray, license tag holders, etc.).' The underlying instrument is DCMR 18-422 'Display of Identification Tags' (effective 11 August 2017), whose text was not retrieved."
115
+ issuance: "DC Code § 50-1501.02: the Mayor issues identification tags as part of the registration certificate to owners meeting the statutory requirements; § 50-1501.02(f) requires the Mayor to establish (1) application forms, (2) the forms of registration and special use certificates, (3) THE DESIGN OF IDENTIFICATION TAGS, and (4) a records programme."
116
+ sources:
117
+ - "https://dmv.dc.gov/service/dmv-vehicle-tags # DC DMV: two tags front and rear; motorcycles, mopeds and trailers rear only; horizontal secure fastening; the visibility and non-obstruction rule"
118
+ - "https://code.dccouncil.gov/us/dc/council/code/sections/50-1501.02 # DC Code § 50-1501.02: issuance of identification tags; (f)(1)-(f)(4) the Mayor's rulemaking duties including 'The design of identification tags'; (f-1) the mandated phrase and the individual opt-out"
119
+ - "https://dcregs.dc.gov/Common/DCMR/SectionList.aspx?SectionNumber=18-422 # DCMR 18-422 'DISPLAY OF IDENTIFICATION TAGS', effective 11 August 2017 — index metadata only; the rule TEXT was not retrievable through this interface (recorded gap)"
120
+
121
+ series:
122
+
123
+ # =========================================================================
124
+ # THE CURRENT STANDARD-ISSUE SERIES — with a legend Congress-adjacent
125
+ # politics put in the statute.
126
+ # =========================================================================
127
+ - id: us-dc-end-taxation
128
+ class: standard
129
+ categories: [car, van, truck, bus]
130
+ period: { start: 2017 }
131
+ period_evidence: secondary-locator-unverified
132
+ format_evidence: secondary-locator-unverified
133
+ matching: strict
134
+ format:
135
+ pattern: "LL-9999"
136
+ regex: '\A[A-Z]{2}-?\d{4}\z'
137
+ charset:
138
+ notes: >-
139
+ NO CHARSET RULE IS IN THE DC CODE. § 50-1501.02 delegates 'The design
140
+ of identification tags' to the Mayor entire and states no length, no
141
+ alphabet and no exclusions. The two-letter / four-numeral arrangement
142
+ is locator-grade. Note that the District has been running this same
143
+ arrangement since at least November 2000 across every base change,
144
+ which is unusual stability: the DESIGN changes and the GRAMMAR does not.
145
+ pattern_note: >-
146
+ SEPARATOR CAVEAT. The locator writes DC serials as AB-1234 with a hyphen,
147
+ but it also describes at least one DC issue as using 'district flag used
148
+ as separator in serial' — i.e. the gap may carry the DC flag device
149
+ rather than a printed hyphen, as it demonstrably does on the trailer
150
+ series. The dataset spells the emitted hyphen and records the doubt here
151
+ rather than guessing; if the current base uses the flag device, the
152
+ correct treatment is the New Jersey one (space in the pattern, glyph in
153
+ `design.graphic`) and this series should be amended. FLAGGED FOR THE
154
+ VERIFIER — it is a one-photograph question.
155
+ progression: "reported to run FN-4000 to GV-9999, then JA-0000 to JU-7808 as of 26 October 2025 (locator)."
156
+ design:
157
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
158
+ foreground: "#003087"
159
+ colour_note: "blue serial on reflective white (locator); `hex_basis: observed`. The DC Code states no colour."
160
+ legend_top: "WASHINGTON, DC"
161
+ legend_bottom: "END TAXATION WITHOUT REPRESENTATION"
162
+ legend_rule: >-
163
+ THE LEGEND IS STATUTORY. DC Code § 50-1501.02(f-1): identification tags
164
+ designed under subsection (f)(3), 'not including identification tags for
165
+ vehicles for-hire, motor vehicles bearing organization plates,
166
+ motorcycles, or autocycles, shall display the phrase "End Taxation
167
+ Without Representation"'. NOTE THE FOUR CARVE-OUTS — for-hire vehicles,
168
+ organization plates, motorcycles and autocycles are excluded from the
169
+ mandate by name, which is why the taxi and motorcycle series below carry
170
+ no such legend and why an autocycle (a class no other jurisdiction in
171
+ this group legislates for) appears in a plate statute at all.
172
+ legend_history_note: >-
173
+ The phrase CHANGED at this base. The 2013 base and its predecessors read
174
+ 'TAXATION WITHOUT REPRESENTATION'; this base reads 'END TAXATION WITHOUT
175
+ REPRESENTATION'. One word, and it converts a statement of grievance into
176
+ a demand. The statute as read today carries the longer phrase, which is
177
+ consistent with the 2017 base being the one the current subsection
178
+ describes.
179
+ graphic: { present: true, rendered: placeholder, description: "DC flag device (three stars over two bars) — position on the current base not established; see the separator caveat above" }
180
+ emblem: { present: true, rendered: placeholder }
181
+ band: { side: none }
182
+ rear_differs: false
183
+ dimension_note: "NO SOURCED DIMENSION — the DC Code states none and SAE J686 is unpinned."
184
+ region_encoding: none
185
+ sources:
186
+ - "https://code.dccouncil.gov/us/dc/council/code/sections/50-1501.02 # § 50-1501.02(f)(3) the Mayor designs the tags; (f-1) the mandated 'End Taxation Without Representation' phrase, its four carve-outs, and the individual opt-out to an alternate design"
187
+ - "https://dmv.dc.gov/service/dmv-vehicle-tags # DC DMV: two tags front and rear — the agency-page-in-force evidence for the display regime"
188
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Washington,_D.C. # LOCATOR ONLY (PRD-PLATES §4): August 2017 base, 'WASHINGTON, DC' at top with 'END TAXATION WITHOUT REPRESENTATION' at bottom, AB-1234 from FN-4000, blue on reflective white"
189
+ notes: >-
190
+ END TAXATION WITHOUT REPRESENTATION (2017-) — THE CURRENT DISTRICT
191
+ STANDARD ISSUE, and the only standard-issue plate in the United States
192
+ whose legend is a political demand fixed by law. The statutory opt-out
193
+ makes the District structurally like Florida: one statutory design with a
194
+ legislated escape hatch, so the bottom legend is not a property of the
195
+ series but of the REGISTRANT'S CHOICE. Modelled as two series because the
196
+ designs differ; see us-dc-alternate-design. `start: 2017` is locator-grade,
197
+ though the statute's use of the longer phrase corroborates it. Parallel
198
+ issuance with the 2013 base is real — no recall was located — which is why
199
+ the periods overlap with distinct notes.
200
+
201
+ - id: us-dc-alternate-design
202
+ class: standard
203
+ categories: [car, van, truck, bus]
204
+ period: { start: 2018 }
205
+ period_evidence: secondary-locator-unverified
206
+ format_evidence: secondary-locator-unverified
207
+ matching: strict
208
+ format:
209
+ pattern: "LL-9999"
210
+ regex: '\A[A-Z]{2}-?\d{4}\z'
211
+ charset: { notes: "identical grammar to the mandated-legend base — the opt-out changes the LEGEND, not the serial. Reported range EA-3000 onward." }
212
+ design:
213
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
214
+ foreground: "#003087"
215
+ legend_top: "WASHINGTON, DC"
216
+ legend_bottom: "www.dc.gov"
217
+ legend_rule: >-
218
+ THE STATUTORY OPT-OUT MADE VISIBLE. § 50-1501.02(f-1): 'An individual who
219
+ does not wish to display the phrase "End Taxation Without
220
+ Representation" on his or her identification tag may request an
221
+ identification tag featuring an alternate design, to be supplied by the
222
+ Department of Motor Vehicles.' The alternate the District actually
223
+ supplies is reported to carry a URL where the demand would be — first
224
+ www.washingtondc.gov (from 2002), then www.dc.gov (from about 2018).
225
+ A CONSCIENCE CLAUSE ANSWERED WITH A WEB ADDRESS, which is either
226
+ deliberately anodyne or accidentally perfect.
227
+ graphic: { present: true, rendered: placeholder }
228
+ emblem: { present: true, rendered: placeholder }
229
+ band: { side: none }
230
+ region_encoding: none
231
+ sources:
232
+ - "https://code.dccouncil.gov/us/dc/council/code/sections/50-1501.02 # § 50-1501.02(f-1): the individual opt-out and the Department's duty to supply an alternate design"
233
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Washington,_D.C. # LOCATOR ONLY: the alternate issue reading 'www.dc.gov' screened in blue at the bottom from about 2018, EA-3000 onward; the earlier 'www.washingtondc.gov' alternate from January 2002"
234
+ notes: >-
235
+ THE ALTERNATE DESIGN (2018-). Its own series rather than a variant because
236
+ its DESIGN differs from the mandated-legend base while its format and
237
+ period overlap it — the §2.3 test. It is also, together with Florida's
238
+ county-name opt-out, the second example in this dataset of a US
239
+ legislature writing an INDIVIDUAL CHOICE into a plate's design, and the
240
+ first where the choice is a matter of conscience rather than of local
241
+ government. A consumer must not treat the legend as diagnostic of the
242
+ series: two District plates issued the same week can read differently and
243
+ both are standard issue.
244
+
245
+ # =========================================================================
246
+ # ONE SERIES BACK.
247
+ # =========================================================================
248
+ - id: us-dc-district-of-columbia
249
+ class: standard
250
+ categories: [car, van, truck, bus]
251
+ period: { start: 2013, end: 2017 }
252
+ period_evidence: secondary-locator-unverified
253
+ format_evidence: secondary-locator-unverified
254
+ matching: strict
255
+ format:
256
+ pattern: "LL-9999"
257
+ regex: '\A[A-Z]{2}-?\d{4}\z'
258
+ charset: { notes: "same grammar again. Reported range EK-0000 to FN-3999, plus ALL-NUMERIC REMAKES in a 000-000 form — a parallel numeric shape the letter-led regex does not cover and which is recorded here rather than silently folded in." }
259
+ design:
260
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
261
+ foreground: "#003087"
262
+ legend_top: "DISTRICT OF COLUMBIA"
263
+ legend_bottom: "TAXATION WITHOUT REPRESENTATION"
264
+ legend_note: "the jurisdiction name at the top is the FORMAL one on this base and the colloquial 'WASHINGTON, DC' on the base before and after it — the District has alternated between its two names across issues, which is a small but real trap for any OCR or classifier keyed on the top legend."
265
+ graphic: { present: true, rendered: placeholder }
266
+ emblem: { present: true, rendered: placeholder }
267
+ band: { side: none }
268
+ region_encoding: none
269
+ sources:
270
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Washington,_D.C. # LOCATOR ONLY: July 2013 to August 2017, 'DISTRICT OF COLUMBIA' in blue at top, 'TAXATION WITHOUT REPRESENTATION', AB-1234 from EK-0000 to FN-3999, all-numeric remakes"
271
+ notes: >-
272
+ DISTRICT OF COLUMBIA (2013-2017) — THE PREVIOUS BASE. `end: 2017` closes
273
+ ISSUANCE, not validity: no recall was located and these tags remain
274
+ current registrations. The reported ALL-NUMERIC REMAKES on this base are
275
+ worth a verifier's attention — a remake is a replacement plate carrying
276
+ the same registration, and if the District issued them in a different
277
+ grammar then the same registration can exist in two shapes, which no
278
+ format model in this dataset currently expresses.
279
+
280
+ # =========================================================================
281
+ # CORE DISTINCT CLASSES.
282
+ # =========================================================================
283
+ - id: us-dc-motorcycle
284
+ class: motorcycle
285
+ categories: [motorcycle]
286
+ period: { start: 2021 }
287
+ period_evidence: secondary-locator-unverified
288
+ format_evidence: secondary-locator-unverified
289
+ matching: recall-only
290
+ format:
291
+ pattern: "MY9999"
292
+ regex: '\A(?:M[TRCXY]\d{4}|\d{4}M|MC\d{3})\z'
293
+ charset:
294
+ notes: >-
295
+ THE DISTRICT STACKS ITS MOTORCYCLE SERIAL. The locator renders the
296
+ reported forms with superscripts and subscripts — M over T, R, C, X or
297
+ Y, followed by four numerals — which is the printed convention for a
298
+ STACKED CHARACTER PAIR. AAMVA is explicit that 'If stacked characters
299
+ are used, they are part of the official license plate number. No more
300
+ than two characters are to be stacked', so the stacked letter is
301
+ SERIAL and must not be dropped or merged. `matching: recall-only`
302
+ because three different reported shapes are unioned here (M+letter+4
303
+ digits, 4 digits + M, and MC + 3 digits) and none is dated well enough
304
+ to elect as current; a match is a shape hit only.
305
+ stacked_characters_note: >-
306
+ A RENDER AND NORMALISATION PROBLEM, NOT A FORMAT ONE. The dataset
307
+ records the stacked pair as two ordinary characters in sequence, which
308
+ is what AAMVA says they are. The RENDER layer must know they are set one
309
+ above the other, and a normaliser reading a photograph must emit them in
310
+ the right order. This is the first stacked serial in the dataset and it
311
+ should inform the render manifest before any US gallery ships.
312
+ design:
313
+ background: { finish: retroreflective }
314
+ legend_top: "WASHINGTON, DC"
315
+ legend_exclusion: "§ 50-1501.02(f-1) EXCLUDES motorcycles from the mandated 'End Taxation Without Representation' phrase by name — so a District motorcycle tag carries no political legend as a matter of law."
316
+ emblem: { present: true, rendered: placeholder }
317
+ dimension_note: "NO SOURCED DIMENSION."
318
+ region_encoding: none
319
+ sources:
320
+ - "https://code.dccouncil.gov/us/dc/council/code/sections/50-1501.02 # § 50-1501.02(f-1): motorcycles and autocycles are excluded from the mandated phrase"
321
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Washington,_D.C. # LOCATOR ONLY: motorcycle forms 1234M, MC123 and the stacked M-over-letter series (M/T, M/R, M/C, M/X, M/Y), current series from 2021"
322
+ - "https://www.aamva.org/getmedia/646bcc8a-219b-47d8-b5cd-726240473163/License-Plate-Standard-Edition-3_September-2025-Update.pdf # AAMVA: stacked characters are part of the official plate number, at most two stacked"
323
+ notes: >-
324
+ MOTORCYCLE — THE DATASET'S FIRST STACKED SERIAL. It is also the only
325
+ series in the mid-Atlantic group whose legend is governed by a statutory
326
+ EXCLUSION rather than a statutory mandate, which is a nice demonstration
327
+ that carve-outs are as load-bearing as rules: a classifier trained to
328
+ expect the District's slogan will fail on every DC motorcycle, taxi and
329
+ organization plate, all three excluded by name in § 50-1501.02(f-1).
330
+
331
+ - id: us-dc-trailer
332
+ class: trailer
333
+ categories: [trailer]
334
+ period: { start: 1974 }
335
+ period_evidence: secondary-locator-unverified
336
+ format_evidence: secondary-locator-unverified
337
+ matching: strict
338
+ format:
339
+ pattern: "T-99999"
340
+ regex: '\AT-?\d{3,5}\z'
341
+ charset: { notes: "reported literal T prefix on a numeric serial of variable width, the current sequence reported to have started in 1974 at T-101 and to be running still. A FIFTY-YEAR UNBROKEN SEQUENCE is the longest-running serial space in the mid-Atlantic group and rivals Delaware's." }
342
+ separator_note: >-
343
+ THE DISTRICT FLAG IS THE SEPARATOR ON THIS SERIES. The locator states it
344
+ in terms — the trailer plate uses the 'district flag' as the separator in
345
+ the serial. That is the THIRD graphic separator found in this group,
346
+ after New Jersey's state outline and Maryland's War of 1812 flag device,
347
+ and the pattern is now unmistakable: US jurisdictions routinely put a
348
+ DEVICE where European ones put a hyphen. The dataset spells an emitted
349
+ hyphen and carries the flag in `design.graphic`, per
350
+ `_meta/separators.yml`'s `never_separator_note`.
351
+ design:
352
+ background: { finish: retroreflective }
353
+ legend_top: "WASHINGTON, DC"
354
+ graphic: { present: true, rendered: placeholder, description: "DC flag device (three stars over two bars) printed in the serial gap as the separator" }
355
+ emblem: { present: true, rendered: placeholder }
356
+ display_note: "trailers get ONE tag, displayed on the rear (DC DMV)."
357
+ region_encoding: none
358
+ sources:
359
+ - "https://dmv.dc.gov/service/dmv-vehicle-tags # DC DMV: trailers among the one-tag, rear-display exceptions"
360
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Washington,_D.C. # LOCATOR ONLY: trailer T-12345 with district flag separator, sequence started 1974 at T-101"
361
+ notes: >-
362
+ TRAILER. The 1974 start is the earliest period start in the mid-Atlantic
363
+ group and it is locator-grade, so it is recorded with that grade rather
364
+ than rounded to the base year. The graphic separator is the interesting
365
+ structural fact and the reason this series carries its own separator_note.
366
+
367
+ - id: us-dc-dealer
368
+ class: dealer
369
+ categories: [car, van, truck, motorcycle, trailer]
370
+ period: { start: 2017 }
371
+ period_evidence: secondary-locator-unverified
372
+ format_evidence: secondary-locator-unverified
373
+ matching: recall-only
374
+ binding: business
375
+ format:
376
+ pattern: "DLL-9999"
377
+ regex: '\AD[A-Z]{2}-?\d{4,5}\z'
378
+ charset:
379
+ notes: >-
380
+ The reported serial is a literal DLR prefix on a four- or five-digit
381
+ numeric serial, the width varying by year. THE DATASET CANNOT SPELL IT
382
+ EXACTLY, AND THAT IS A SCHEMA FINDING — see `pattern_note`.
383
+ pattern_note: >-
384
+ THE HUMAN-PATTERN DSL CANNOT EXPRESS A LITERAL 'L'. `format.pattern`
385
+ reads 9 as any digit, L as any letter, and every other character as a
386
+ literal, with no escape mechanism — so 'DLR' is unspellable: the L is
387
+ eaten as a wildcard and the lint's round-trip generates DUR, DXR, DAR
388
+ and rejects the exact regex. The same hole exists for a literal '9'.
389
+ This series is therefore modelled `matching: recall-only` with the
390
+ middle character widened to any letter: the regex is DELIBERATELY WIDER
391
+ than the issuing grammar (which is DLR and nothing else), so a match is
392
+ a shape hit only, which is precisely what §2.7's recall-only tier means.
393
+ RECOMMENDED AMENDMENT: give the pattern DSL an escape (a backslash, or a
394
+ quoted-literal run) so that literal L and literal 9 can be spelled;
395
+ until then, any US jurisdiction with an L or a 9 in a fixed serial
396
+ position lands in recall-only for a notation reason rather than a
397
+ factual one, and that is the wrong reason to lose precision.
398
+ design:
399
+ background: { finish: retroreflective }
400
+ legend_top: "WASHINGTON, DC"
401
+ legend_bottom: "DEALER"
402
+ annual_redesign: >-
403
+ THE DISTRICT REDESIGNS ITS DEALER TAGS EVERY YEAR, with a unique colour
404
+ combination per year (locator). That is a genuinely unusual cadence — an
405
+ ANNUAL design cycle on one class while the standard base runs for years
406
+ — and it means the dealer tag's COLOUR is a date field. If confirmed
407
+ from a primary it would be the sharpest era-inference signal anywhere in
408
+ this group, because the plate literally encodes its year in its palette.
409
+ emblem: { present: true, rendered: placeholder }
410
+ region_encoding: none
411
+ sources:
412
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Washington,_D.C. # LOCATOR ONLY: dealer DLR-1234 / DLR-12345, annual designs with unique colour combinations"
413
+ notes: >-
414
+ DEALER. `binding: business`. The annual-colour claim is locator-grade and
415
+ is the highest-value thing in this entry to verify — a per-year colour
416
+ table would be a decode table in the §2.4 sense, keyed on colour rather
417
+ than on characters, which nothing in the schema currently anticipates.
418
+
419
+ - id: us-dc-taxi
420
+ class: taxi
421
+ categories: [car, van]
422
+ period: { start: 2017 }
423
+ period_evidence: statutory-authority-undated
424
+ format_evidence: secondary-locator-unverified
425
+ matching: strict
426
+ format:
427
+ pattern: "H-99999"
428
+ regex: '\AH-?\d{5}\z'
429
+ charset: { notes: "reported literal H prefix on a five-digit numeric serial for for-hire vehicles." }
430
+ design:
431
+ background: { finish: retroreflective }
432
+ legend_top: "WASHINGTON, DC"
433
+ legend_exclusion: "§ 50-1501.02(f-1) excludes 'identification tags for vehicles for-hire' from the mandated 'End Taxation Without Representation' phrase by name — the statutory basis for the for-hire class being visually distinct."
434
+ emblem: { present: true, rendered: placeholder }
435
+ region_encoding: none
436
+ sources:
437
+ - "https://code.dccouncil.gov/us/dc/council/code/sections/50-1501.02 # § 50-1501.02(f-1): for-hire vehicles excluded from the mandated phrase"
438
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Washington,_D.C. # LOCATOR ONLY: taxi H-12345"
439
+ notes: >-
440
+ TAXI (FOR-HIRE). The only `taxi`-class series in the mid-Atlantic group,
441
+ and it exists as a distinct class BECAUSE THE STATUTE CARVES IT OUT: DC
442
+ legislates that for-hire tags do not carry the political legend, which
443
+ necessarily makes them a different design and therefore a different series
444
+ under §2.3. A carve-out creating a class is a pattern worth watching for
445
+ in other jurisdictions.
446
+
447
+ - id: us-dc-government
448
+ class: government
449
+ categories: [car, van, truck, bus]
450
+ period: { start: 2017 }
451
+ period_evidence: secondary-locator-unverified
452
+ format_evidence: secondary-locator-unverified
453
+ matching: strict
454
+ binding: business
455
+ format:
456
+ pattern: "99999"
457
+ regex: '\A\d{5}\z'
458
+ charset:
459
+ notes: >-
460
+ Five numerals. The locator writes the District fleet format as
461
+ 'D/C 12345', where D/C is a legend printed beside the number rather
462
+ than a serial token — the same shape as Maryland's S/G and L/G markers.
463
+ THE DATASET CANNOT SPELL THE SOLIDUS: '/' is in
464
+ `_meta/separators.yml`'s FORGIVING set but not its EMITTED set, so a
465
+ literal '/' in a pattern or regex is a lint failure by design, and the
466
+ marker is carried as a legend where it belongs. A parallel GT-1234
467
+ form is also reported and is not covered by this regex; it is recorded
468
+ rather than folded in.
469
+ design:
470
+ background: { finish: retroreflective }
471
+ legend_top: "WASHINGTON, DC"
472
+ legend_bottom: "D/C"
473
+ emblem: { present: true, rendered: placeholder }
474
+ region_encoding: none
475
+ sources:
476
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Washington,_D.C. # LOCATOR ONLY: 'D/C 12345' District government fleet, and a parallel GT-1234 form"
477
+ notes: >-
478
+ DISTRICT GOVERNMENT FLEET. Locator-grade throughout. The second
479
+ independent appearance of a slash-marker legend in this group (after
480
+ Maryland's S/G and L/G) is quietly useful evidence that the separator
481
+ contract's exclusion of the solidus is right: three jurisdictions print it,
482
+ none of them uses it inside a serial, and in every case it belongs to the
483
+ legend layer.
484
+
485
+ - id: us-dc-temporary
486
+ class: temporary
487
+ categories: [car, van, truck, bus, motorcycle, trailer]
488
+ period: { start: 2024 }
489
+ period_evidence: agency-page-in-force
490
+ format_evidence: secondary-locator-unverified
491
+ matching: recall-only
492
+ format:
493
+ pattern: "LLLLLLLL"
494
+ regex: '\A[A-Z0-9]{8}\z'
495
+ charset:
496
+ notes: >-
497
+ DC DMV states the MECHANISM but not the grammar: the tags carry
498
+ 'laser-printed alphanumeric digits generated by the DESTINY motor
499
+ vehicle information system'. The locator reports the printed form as
500
+ an eight-character alphanumeric. `matching: recall-only` because an
501
+ eight-character alphanumeric catch-all is far wider than whatever
502
+ DESTINY actually emits — a match is a shape hit and nothing more.
503
+ Earlier reported forms (12345DA, X12345, Z12345, K12345, N12345)
504
+ belonged to the pre-2024 cardboard tags and are not modelled.
505
+ design:
506
+ background: { color: "#FFFFFF", finish: none, hex_basis: observed }
507
+ material: "DC DMV: 'weather resistant, fade proof and tear proof paper' with 'plate mounting holes set to vehicle industry standards' — an agency acknowledgement of the same unpinned physical standard AAMVA delegates to SAE J686"
508
+ legend_top: "Washington, DC"
509
+ graphic: { present: true, rendered: placeholder, description: "DC DMV: 'the DC flag in the upper left and right corner with a Washington, DC heading and the DMV logo in the lower right corner'" }
510
+ emblem: { present: true, rendered: placeholder }
511
+ validity: "45 days. DC DMV replaced the temporary registration WINDOW STICKER with a temporary registration CARD 'to be carried in the vehicle for 45 days'."
512
+ transition: "the redesign took effect 30 September 2024 and tags of the old design remained valid through 14 November 2024 — a stated six-week overlap window, the most precisely dated transition in the entire mid-Atlantic group."
513
+ region_encoding: none
514
+ sources:
515
+ - "https://dmv.dc.gov/release/dc-dmv-redesigns-temporary-tags-mitigate-fraud # DC DMV's own release: the 30 September 2024 changeover, the DESTINY-generated laser-printed alphanumeric, weather-resistant/fade-proof/tear-proof paper, industry-standard mounting holes, the DC flag corners and DMV logo, the 45-day temporary registration card, and the 14 November 2024 expiry of the old design"
516
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Washington,_D.C. # LOCATOR ONLY: the eight-character A1B2C3D4 printed form and the superseded cardboard forms"
517
+ notes: >-
518
+ TEMPORARY — THE BEST-DATED SERIES IN THE MID-ATLANTIC GROUP, AND THE ONLY
519
+ ONE WITH A PRIMARY FOR ITS OWN START DATE. DC DMV published the change
520
+ itself, with a reason (fraud mitigation), an effective date, a transition
521
+ window and a physical description. Every other period boundary in this
522
+ group is locator-grade; this one is agency-stated, which is why
523
+ `period_evidence` is `agency-page-in-force` and why 2024 is a real claim
524
+ rather than an upper bound. It is also a useful reminder that agency PRESS
525
+ RELEASES are systematically better sources for plate transitions than
526
+ agency service pages, and should be the first place a US pass looks.
527
+
528
+ # =========================================================================
529
+ # SPECIALTY — THE PROGRAM INDEX, per PRD-PLATES §2.5.
530
+ # =========================================================================
531
+ - id: us-dc-specialty-index
532
+ class: specialty
533
+ categories: [car, van, truck, motorcycle]
534
+ period: { start: 2017 }
535
+ period_evidence: agency-page-in-force
536
+ format_evidence: official-agency-text
537
+ matching: strict
538
+ format:
539
+ pattern: "LL-9999"
540
+ regex: '\A[A-Z]{2}-?\d{4}\z'
541
+ charset: { notes: "specialty tags carry ordinary serials on an alternative design. § 50-1501.02(f-1) excludes 'motor vehicles bearing organization plates' from the mandated phrase, so a District specialty tag is legally free of the political legend." }
542
+ design:
543
+ background: { finish: retroreflective }
544
+ note: "one design per approved programme; the designs themselves are L4 scope (PRD-PLATES §2.5) and none is described here"
545
+ emblem: { present: true, rendered: placeholder }
546
+ program_index:
547
+ count_official: 13
548
+ count_official_method: >-
549
+ ENUMERATED FROM DC DMV'S OWN SPECIALTY TAG PAGE on 2026-08-02. The agency
550
+ publishes the complete menu inline rather than a number, so this is OUR
551
+ COUNT OF THE AGENCY'S OWN LIST — not an agency claim. Two of the
552
+ thirteen are counted as single entries although they cover multiple
553
+ designs: 'Veterans Specialty' spans Army, Navy, Marines, Air Force and
554
+ Coast Guard, so a design-level count would be higher.
555
+ programmes_official:
556
+ - "Anacostia River Commemorative"
557
+ - "Breast Cancer Awareness"
558
+ - "DC Veteran"
559
+ - "DC Woman Veteran"
560
+ - "Disabled American Veteran (DAV)"
561
+ - "Pride Lives Here"
562
+ - "Washington Capitals"
563
+ - "Washington Mystics"
564
+ - "Washington Nationals"
565
+ - "Washington Wizards"
566
+ - "We Demand Statehood"
567
+ - "Veterans Specialty (Army, Navy, Marines, Air Force, Coast Guard)"
568
+ - "Vision Zero Bicycle Awareness"
569
+ scale_note: >-
570
+ THIRTEEN. That is the whole District programme, against Delaware's 149
571
+ and New York's 206, and it makes the District the smallest specialty
572
+ programme in the group by an order of magnitude. Two of the thirteen —
573
+ 'We Demand Statehood' and 'Pride Lives Here' — are POLITICAL, which no
574
+ state programme in this group offers: a District whose standard plate is
575
+ already a political demand also runs statehood advocacy as an optional
576
+ design.
577
+ official_list_url: "https://dmv.dc.gov/service/specialty-vehicle-tags"
578
+ index_url: "https://dmv.dc.gov/service/dmv-vehicle-tags"
579
+ churn_note: "no discontinuation rule was located in Chapter 15; recorded gap."
580
+ region_encoding: none
581
+ sources:
582
+ - "https://dmv.dc.gov/service/specialty-vehicle-tags # DC DMV's complete specialty tag menu — the source of the enumeration above, including the newest 'We Demand Statehood' and 'Pride Lives Here' tags"
583
+ - "https://code.dccouncil.gov/us/dc/council/code/sections/50-1501.02 # § 50-1501.02(f-1): organization plates excluded from the mandated phrase"
584
+ notes: >-
585
+ THE SPECIALTY PROGRAM INDEX. The District is the small, complete,
586
+ enumerable case — thirteen programmes, all listed on one agency page,
587
+ countable in one read. Set against Delaware (149, enumerable), New York
588
+ (206, agency-counted), New Jersey (17 in one of five tracks, no total) and
589
+ Pennsylvania (unknown, unenumerable), the mid-Atlantic group now covers the
590
+ full range of how badly or well a US jurisdiction publishes its own
591
+ catalogue — which is itself the finding the specialty INDEX exists to
592
+ surface.
593
+
594
+ # ---------------------------------------------------------------------------
595
+ # CLASSES THE DISTRICT ISSUES THAT ARE DELIBERATELY NOT MODELLED AS SERIES.
596
+ # ---------------------------------------------------------------------------
597
+ unmodelled_classes:
598
+ personalized: "DC DMV offers personalised tags but its 'Tag Variations' page 404'd on two URL attempts in this pass, so no character cap, alphabet or fee was obtained. No series is minted without a format. RECORDED GAP."
599
+ diplomatic: "the District hosts essentially the entire US diplomatic corps, but DIPLOMATIC PLATES ARE ISSUED BY THE US DEPARTMENT OF STATE, NOT BY DC DMV — they are a FEDERAL series that happens to be concentrated in the District, and they belong in a us.yml federation-level file rather than here. Recorded so a later pass does not mistake their absence for an omission."
600
+ autocycle: "§ 50-1501.02(f-1) names AUTOCYCLES as a class excluded from the mandated legend — the only mention of autocycles in any statute read in this group. Whether the District serialises them apart was not established."
601
+
602
+ # ---------------------------------------------------------------------------
603
+ # GAPS.
604
+ # ---------------------------------------------------------------------------
605
+ gaps:
606
+ - "DCMR 18-422 ('Display of Identification Tags', effective 11 August 2017) TEXT NOT RETRIEVED — dcregs.dc.gov serves rule metadata and puts the text behind a per-notice viewer. The display rules here rest on DC DMV's own summary."
607
+ - "SEPARATOR UNRESOLVED ON THE STANDARD BASE: hyphen or DC flag device? The locator says the flag is used as a separator on at least one issue and demonstrably on the trailer series. One photograph settles it."
608
+ - "Base-design years (2017, 2013, 2018 alternate) and all serial ranges are locator-grade. Only the 2024 temporary tag has a primary for its own date."
609
+ - "NO SOURCED DIMENSION and NO SOURCED COLOUR VALUE — the DC Code delegates design wholesale to the Mayor."
610
+ - "Personalised tag rules unobtained (DC DMV 'Tag Variations' 404'd twice)."
611
+ - "The annual dealer-tag colour cycle is locator-grade and would be a colour-keyed decode table if confirmed."
612
+ - "The all-numeric 'remakes' reported on the 2013 base are unexplained — same registration in a second grammar is a case the schema does not model."
613
+ - "{{PD-DC}} on Commons contradicts the District's own CC BY 3.0 terms. Recorded as a folklore correction; a Copyright Office pinpoint either way would settle it."
614
+ - "SCHEMA LIMITATION SURFACED BY THIS FILE: the human-pattern DSL has no escape for a literal 'L' or a literal '9', so the District's DLR dealer prefix is unspellable and the series had to be widened to recall-only for a NOTATION reason. See us-dc-dealer format.pattern_note for the recommended amendment."