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,881 @@
1
+ # plates/ca-on.yml — Ontario, Canada (PRD-PLATES gate L2/L3, Canada east wave).
2
+ #
3
+ # FEDERATED JURISDICTION, per-province file, exactly as the US states are cut
4
+ # (us-fl.yml is the exemplar). Canada has NO federal plate mandate: every
5
+ # province and territory registers vehicles under its own statute and issues its
6
+ # own plates. There is no Canadian analogue of the EU band, no national colour
7
+ # rule and no national format.
8
+ #
9
+ # FIVE STRUCTURAL FACTS THAT SHAPE THIS FILE
10
+ #
11
+ # 1. AN ONTARIO PLATE BINDS TO THE OWNER, NOT THE VEHICLE — and the statute says
12
+ # so twice. HTA s. 11(1), verbatim: "Upon the holder of a permit ceasing to be
13
+ # the owner or lessee of the motor vehicle or trailer referred to in the
14
+ # permit, he, she or it shall, (a) remove his, her or its number plates from
15
+ # the vehicle; (b) retain the plate portion of the permit". And s. 11(3):
16
+ # "a person to whom number plates have been issued under subsection 7 (7) for
17
+ # a vehicle the person no longer owns or leases may affix the number plates to
18
+ # a similar class of vehicle that the person owns or leases where it is done
19
+ # in accordance with the prescribed requirements." That is the Swiss pattern
20
+ # (plates/ch.yml, `binding: owner`) arriving in Canada by a different route,
21
+ # and it is decisive for any consumer that treats a plate as a vehicle key:
22
+ # an Ontario plate number identifies a REGISTRATION HELD BY A PERSON, and it
23
+ # moves between that person's vehicles of the same class.
24
+ #
25
+ # 2. THE COMPOSITION OF AN ONTARIO PLATE NUMBER IS IN NO STATUTE AND NO
26
+ # REGULATION. HTA s. 7(1)(b)(i) requires "number plates issued in accordance
27
+ # with the regulations showing the number of the permit issued for the
28
+ # vehicle"; the regulation-making power in s. 7(24) reaches issuance,
29
+ # validation, display, fees, surrender, classification and "(o) prescribing
30
+ # the criteria for the issuance, retention and return of a number plate
31
+ # bearing a requested number" — and NEVER the letters and digits a plate is
32
+ # made of. R.R.O. 1990, Reg. 628 (Vehicle Permits) was read end to end on
33
+ # 2026-08-02: it contains NO colour, NO dimension, NO character metric and NO
34
+ # serial grammar. The serial system is therefore an ADMINISTRATIVE allocation
35
+ # by the Ministry, exactly as the DVLA memory tags are in plates/gb.yml and
36
+ # the district codes are in plates/de.yml. Every `format` below that is not
37
+ # quoted from an Ontario government page is graded as a secondary claim and
38
+ # says so.
39
+ #
40
+ # 3. THE ONE FORMAT FACT ONTARIO PUBLISHES ITSELF IS THE PERSONALIZED CHARACTER
41
+ # COUNT. ServiceOntario, verbatim: "Personalized passenger and commercial
42
+ # plates may have 2 to 8 characters. Personalized motorcycle plates may have
43
+ # 2 to 5 characters." Everything else about Ontario serial shape in this file
44
+ # (ABCD 123, AB 12345, the motorcycle and trailer arrangements, the excluded
45
+ # letters G/I/O/Q/U) rests on the en.wikipedia Ontario article's tables, is
46
+ # tagged `secondary-wikipedia` per PRD-PLATES §4, and is flagged in terms.
47
+ #
48
+ # 4. FRONT AND REAR ARE PRESCRIBED, AND THE VALIDATION STICKER MOVES BETWEEN
49
+ # THEM BY VEHICLE CLASS. O. Reg. 628 s. 9(3), verbatim: "The number plates for
50
+ # a motor vehicle, other than a motorcycle or a motor assisted bicycle, shall
51
+ # be attached to and exposed in a conspicuous position on the front and rear
52
+ # of the motor vehicle." s. 9(4): "The number plate for a motorcycle, motor
53
+ # assisted bicycle or trailer shall be attached to and exposed in a
54
+ # conspicuous position on the rear of the vehicle." s. 9(1): validation goes
55
+ # "in the upper right corner of the number plate exposed on the FRONT of the
56
+ # motor vehicle" for a commercial motor vehicle and "on the REAR" in all other
57
+ # cases. Ontario is a two-plate province and the sticker corner is a real
58
+ # class signal.
59
+ #
60
+ # 5. THE 2020 BLUE PLATE IS A GENUINE FOUR-MONTH SERIES AND IS MODELLED AS ONE.
61
+ # It was announced by the Government of Ontario in April 2019, entered issue
62
+ # in February 2020, was recalled and then abandoned in May 2020, and the white
63
+ # "Yours to Discover" base resumed. Overlapping series are legal under
64
+ # PRD-PLATES §2.2 when the notes are distinct; here they are distinct because
65
+ # the two really were issued in parallel while blue stock was exhausted.
66
+ #
67
+ # SEPARATOR NOTE (PRD-PLATES §2.6): an Ontario plate prints NO separator glyph
68
+ # between the letter group and the digit group. What sits in the gap is a
69
+ # SCREENED CROWN GRAPHIC (an emblem, carried in `design.emblem`, never in the
70
+ # serial — the `never_separator` reasoning in _meta/separators.yml §4 exactly).
71
+ # Every `pattern` here spells that gap as the emitted SPACE and every regex
72
+ # accepts it as optional, which is also how ServiceOntario writes plate numbers.
73
+ jurisdiction: ca-on
74
+ authority:
75
+ name: Ministry of Transportation of Ontario (MTO); plates and permits issued through ServiceOntario
76
+ url: "https://www.ontario.ca/page/personalized-licence-plate"
77
+ binding: owner
78
+ binding_note: >-
79
+ HTA s. 11(1)(a) and s. 11(3) (quoted in the header) make the Ontario plate a
80
+ possession of the REGISTRANT. On sale the seller strips the plates and keeps
81
+ the plate portion of the permit; the plates may then go on another vehicle of
82
+ a similar class that the same person owns or leases. A consumer keying on
83
+ "which vehicle wears this plate" must therefore treat the answer as
84
+ time-varying. HTA s. 12(2) adds the ownership twist: "Every number plate is
85
+ the property of the Crown and shall be returned to the Ministry when required
86
+ by the Registrar."
87
+ instrument:
88
+ statute: "Highway Traffic Act, R.S.O. 1990, c. H.8, ss. 7, 11, 12, 13 (Part II — Permits)"
89
+ regulation: "R.R.O. 1990, Reg. 628 (VEHICLE PERMITS), made under the Highway Traffic Act"
90
+ regulation_currency: "e-Laws consolidated text as served on 2026-08-02; Reg. 628 s. 1 carries amendments to O. Reg. 170/23"
91
+ reg_making_power: >-
92
+ HTA s. 7(24), verbatim opening: "The Lieutenant Governor in Council may make
93
+ regulations respecting any matter ancillary to the provisions of this Part
94
+ with respect to permits and number plates and in particular, ... (b)
95
+ respecting the issuance and validation of permits and the issuance of number
96
+ plates; ... (e) governing the manner of displaying number plates on motor
97
+ vehicles and trailers or any class or type of either of them; ... (k)
98
+ requiring the surrender of number plates; (l) classifying permits, providing
99
+ for the issuing or validating of any class of permit and the requirements
100
+ therefor and for the issuing of number plates and evidence of validation and
101
+ the requirements therefor; ... (o) prescribing the criteria for the issuance,
102
+ retention and return of a number plate bearing a requested number."
103
+ NOTE WHAT IS ABSENT: no power over the COMPOSITION of a mark, no power over
104
+ colour, no power over dimensions.
105
+ sources:
106
+ - "https://www.ontario.ca/laws/statute/90h08 # HTA ss. 7(1),(7),(7.1),(7.2),(24); 11(1),(3); 12(1),(2),(2.4); 13(1),(2) — read via the e-Laws document service on 2026-08-02"
107
+ - "https://www.ontario.ca/laws/regulation/900628 # R.R.O. 1990, Reg. 628 (Vehicle Permits) ss. 6, 9, 10, 13-13.4 — read via the e-Laws document service on 2026-08-02"
108
+ licence: >-
109
+ e-Laws content is published by the King's Printer for Ontario under the
110
+ Government of Ontario's Open Government Licence. Independently, statutes and
111
+ regulations are EDICTS OF GOVERNMENT and their text is uncopyrightable
112
+ (PRD-PLATES §4) — every verbatim quotation in this file is from that class of
113
+ material or from a ServiceOntario public information page.
114
+
115
+ # ---------------------------------------------------------------------------
116
+ # artwork_risk — carried here even though PRD-PLATES §7.1 makes it mandatory
117
+ # only for US states, because the Canadian posture differs from every US state
118
+ # and a renderer must not guess.
119
+ # ---------------------------------------------------------------------------
120
+ artwork_risk:
121
+ posture: crown-copyright-asserted
122
+ basis: >-
123
+ Ontario asserts Crown copyright. Every ontario.ca page fetched for this file
124
+ closes with the notice "King's Printer for Ontario, 2012 - to 26". Canada has
125
+ no US-style federal-works exclusion and no Canadian equivalent of
126
+ {{PD-FLGov}}; Crown copyright in Canada subsists under s. 12 of the federal
127
+ Copyright Act and provincial Crown copyright is claimed in practice. The
128
+ edicts-of-government principle still frees the TEXT of the Highway Traffic
129
+ Act and Reg. 628, which is why this file quotes them freely; it does not free
130
+ plate ARTWORK, the trillium graphic or the Ontario crown device.
131
+ emblem_rule: >-
132
+ PRD-PLATES §3 placeholder default applies without exception. The crown
133
+ separator, the stylized white trillium of the 2020 base and the provincial
134
+ wordmark are all rendered `placeholder` until affirmatively cleared per
135
+ emblem. The Ontario crown is additionally a royal device with protection
136
+ independent of copyright; that question is unresearched and flagged.
137
+ photograph_caution: >-
138
+ Commons photographs of Ontario plates carry the PHOTOGRAPHER's licence, not a
139
+ licence over the design (PRD-PLATES §6). Our renders are generated from this
140
+ data, never derived from a photograph, so those obligations never attach.
141
+
142
+ # ---------------------------------------------------------------------------
143
+ # Jurisdiction-wide facts, cited once, referenced per series.
144
+ # ---------------------------------------------------------------------------
145
+ common:
146
+ display:
147
+ two_plates: >-
148
+ O. Reg. 628 s. 9(3), verbatim: "The number plates for a motor vehicle,
149
+ other than a motorcycle or a motor assisted bicycle, shall be attached to
150
+ and exposed in a conspicuous position on the front and rear of the motor
151
+ vehicle."
152
+ one_plate: >-
153
+ O. Reg. 628 s. 9(4), verbatim: "The number plate for a motorcycle, motor
154
+ assisted bicycle or trailer shall be attached to and exposed in a
155
+ conspicuous position on the rear of the vehicle."
156
+ year_of_manufacture_single: >-
157
+ O. Reg. 628 s. 9(3.1): "Where the number plates attached to the vehicle are
158
+ year-of-manufacture plates, and only one plate was issued by the Ministry in
159
+ that year for display on a motor vehicle, that plate shall be attached to
160
+ and exposed in a conspicuous position at the rear of the vehicle."
161
+ validation_sticker: >-
162
+ O. Reg. 628 s. 9(1), verbatim: evidence of validation "shall be affixed,
163
+ (a) where the permit is for a commercial motor vehicle, in the upper right
164
+ corner of the number plate exposed on the front of the motor vehicle; and
165
+ (b) in all other cases, in the upper right corner of the number plate
166
+ exposed on the rear of the motor vehicle." s. 9(2): a RUO sticker goes "in
167
+ the upper left corner of the number plate exposed on the front of the bus."
168
+ dealer_exclusion: "O. Reg. 628 s. 9(5): section 9 does not apply to Dealer, Service, Dealer and Service, or Manufacturer permits and number plates."
169
+ legibility: >-
170
+ HTA s. 13(2), verbatim: "Every number plate shall be kept free from dirt and
171
+ obstruction and shall be affixed so that the entire number plate, including
172
+ the numbers, is plainly visible at all times, and the view of the number
173
+ plate shall not be obscured or obstructed by spare tires, bumper bars, any
174
+ part of the vehicle, any attachments to the vehicle or the load carried."
175
+ s. 13(3.0.1) and s. 13(3.1) extend the rule to anything defeating a red
176
+ light camera system or an electronic toll system.
177
+ no_other_numbers: >-
178
+ HTA s. 13(1), verbatim: "No number other than that upon the number plate
179
+ furnished by the Ministry shall be exposed on any part of a motor vehicle or
180
+ trailer in such a position or manner as to confuse the identity of the
181
+ number plate."
182
+ firefighter_sticker: >-
183
+ HTA s. 12.1 (s. 7(12.1)): a firefighter may be issued "a sticker, that
184
+ indicates that the vehicle is registered to or leased by a firefighter, to be
185
+ attached to the lower left hand corner of the FRONT number plate". A sticker
186
+ on an ordinary plate, not a series — recorded here rather than invented as one.
187
+ source: "https://www.ontario.ca/laws/regulation/900628 # Reg. 628 ss. 9(1)-(5), 6(1)-(4)"
188
+ source_statute: "https://www.ontario.ca/laws/statute/90h08 # HTA ss. 7(12.1), 13(1),(2),(3.0.1),(3.1)"
189
+ validation:
190
+ rule: >-
191
+ O. Reg. 628 s. 6(1): "For the purposes of clause 7 (1) (c) of the Act,
192
+ evidence of the current validation of a permit is required to be affixed to
193
+ the number plate of a motor vehicle." s. 6(2) exempts the classes listed in
194
+ Schedule 4.
195
+ sticker_abolition_2022: >-
196
+ Ontario eliminated licence-plate renewal STICKERS for passenger vehicles,
197
+ light commercial vehicles, motorcycles and mopeds in 2022; renewal itself
198
+ remains mandatory and is now automatic for eligible plates. ServiceOntario,
199
+ verbatim from the registration page: "Your passenger vehicle, light
200
+ commercial vehicle, motorcycle or moped license plate will renew
201
+ automatically". Commercial vehicles over 3,000 kg still validate annually.
202
+ RECORDED AS A FACT ABOUT THE STICKER, NOT ABOUT THE PLATE: no series in this
203
+ file changes at 2022, because the plate did not.
204
+ source: "https://www.ontario.ca/page/register-vehicle-permit-and-licence-plate # accessed 2026-08-02"
205
+ charset:
206
+ excluded_letters_current: [G, I, O, Q, U]
207
+ excluded_note: >-
208
+ SECONDARY, TAGGED. The en.wikipedia Ontario article states that G, I, O, Q
209
+ and U are not used in the current four-letter passenger serial format,
210
+ citing the collector site allaboutlicenseplates.com. No Ontario government
211
+ page states any letter exclusion, and Reg. 628 states none. The exclusion is
212
+ encoded ONLY in `regex_strict`; `regex` never carries it, so a consumer who
213
+ distrusts the secondary loses nothing.
214
+ statutory_alphabet_absent: >-
215
+ NEGATIVE FINDING, recorded so nobody repeats the hunt: neither the Highway
216
+ Traffic Act nor R.R.O. 1990 Reg. 628 states an alphabet, a length, or a
217
+ character set for an Ontario number plate. The only length statement located
218
+ from a government source anywhere in this pass is the personalized-plate
219
+ count on the ServiceOntario page (2-8 / 2-5), which is why
220
+ `ca-on-personalized` is the only series in this file whose `regex` is
221
+ authority-sourced end to end.
222
+ source: "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Ontario # FINDING AID + tagged secondary (PRD-PLATES §4, owner override 2026-08-02): passenger/commercial/motorcycle/trailer serial formats and the excluded-letter sets; article read 2026-08-02"
223
+ dimensions:
224
+ note: >-
225
+ NO ONTARIO PRIMARY PRESCRIBES A PLATE SIZE. The 6 in x 12 in
226
+ (152.4 x 304.8 mm) North American plate is the continental convention and is
227
+ recorded on the series below as `plate_basis: convention`, never as an
228
+ Ontario legal claim. Contrast Nova Scotia (plates/ca-ns.yml), where the size
229
+ IS in the regulations in centimetres — that is what a sourced dimension looks
230
+ like, and Ontario has no equivalent.
231
+ folklore_caution: >-
232
+ The "1956 AMA / AAMVA standardization agreement" that supposedly fixed
233
+ 6 x 12 in is UNCITED in its Wikipedia source and is copied verbatim across
234
+ the Canada, US and Puerto Rico articles (circular). PRD-PLATES §4 records it
235
+ as commonly repeated, unsourced. It is NOT relied on here.
236
+
237
+ # ---------------------------------------------------------------------------
238
+ # Classes Ontario HAS but this file deliberately does not model, each with the
239
+ # primary that proves the class exists and the reason no `format` is authored.
240
+ # ---------------------------------------------------------------------------
241
+ classes_not_modelled:
242
+ dealer:
243
+ exists: true
244
+ mechanism: >-
245
+ O. Reg. 628 s. 13(1): "Upon filing satisfactory evidence as to the need for
246
+ it, a Dealer permit and number plate may be issued to a dealer in motor
247
+ vehicles, other than motorcycles and motor assisted bicycles". s. 13(2)-(7)
248
+ confine its use to inventory offered for sale, private use in Ontario and
249
+ purposes related to the sale, and forbid its use on a loaded commercial
250
+ vehicle (with a 2020 pick-up-truck carve-out at s. 13(6), O. Reg. 734/20).
251
+ Parallel regimes: s. 13.1 Service permit and number plate; s. 13.2 Dealer
252
+ and Service; Manufacturer permits and plates are named in s. 8.2(e) and
253
+ s. 9(5).
254
+ why_not_modelled: >-
255
+ NEITHER THE FORMAT NOR THE COLOUR OF AN ONTARIO DEALER, SERVICE OR
256
+ MANUFACTURER PLATE IS PUBLISHED IN ANY PRIMARY LOCATED IN THIS PASS.
257
+ Reg. 628 prescribes eligibility and permitted use and never appearance, and
258
+ the ServiceOntario page for these plates describes who may hold them and
259
+ what they cost, not what they look like. Recorded as a gap.
260
+ sources:
261
+ - "https://www.ontario.ca/laws/regulation/900628 # Reg. 628 ss. 13, 13.1, 13.2, 9(5)"
262
+ - "https://www.ontario.ca/page/get-manufacturer-licence-plate-dealer-plate-or-service-plate # ServiceOntario, accessed 2026-08-02: eligibility and fees only, no format and no colour"
263
+ year_of_manufacture:
264
+ exists: true
265
+ mechanism: >-
266
+ HTA s. 7(7.2), verbatim: subsection (7.1) applies to number plates that
267
+ "(a) are Ontario number plates that were issued during the year of
268
+ manufacture of the motor vehicle; (b) are in a condition satisfactory to the
269
+ Ministry; and (c) show no numbers that duplicate the number of any other
270
+ existing permit." s. 7(7.1): where such plates are used, "the number of the
271
+ permit shall be the same as the number shown on those number plates."
272
+ ServiceOntario adds the eligibility rule verbatim: the vehicle must weigh
273
+ "under 3,000 kg", be "a passenger or light commercial vehicle from 1973 and
274
+ earlier, or ... a motorcycle from 1975 and earlier", and be unmodified; the
275
+ plate must be "manufactured in Ontario", "from the same year as the vehicle",
276
+ and is compared against an original "to make sure that the requested plate
277
+ has the same material used, colour scheme, layout and numbering sequence."
278
+ why_not_modelled: >-
279
+ A YEAR-OF-MANUFACTURE PLATE HAS NO FORMAT OF ITS OWN — it is a genuine
280
+ historic Ontario plate of whatever year, re-authorised. Modelling it would
281
+ mean authoring every Ontario series back to 1911, which is L4 scope
282
+ (PRD-PLATES §7). The class is recorded because the STATUTE creates it and
283
+ because a parse API must know that a pre-1973 Ontario shape on a modern road
284
+ is lawful and dates the VEHICLE, not the registration.
285
+ sources:
286
+ - "https://www.ontario.ca/laws/statute/90h08 # HTA s. 7(7.1), (7.2)"
287
+ - "https://www.ontario.ca/page/get-year-manufacture-licence-plate # ServiceOntario, updated 14 January 2026, accessed 2026-08-02"
288
+ specialty_graphics:
289
+ exists: true
290
+ mechanism: >-
291
+ ServiceOntario, verbatim: "You can choose to include graphics on your licence
292
+ plate" and "There are over 60 graphics available to choose from." Graphic
293
+ plates are PERSONALIZED plates with a smaller character budget: "2 to 8
294
+ characters (letters and/or numbers) without a graphic - $310 / 2 to 6
295
+ characters (letters and/or numbers) with a graphic - $336.40".
296
+ why_not_modelled: >-
297
+ PRD-PLATES §2.5 excludes the individual specialty DESIGN catalogue from v1;
298
+ L2 indexes programs, L4 does designs. The graphic budget is carried instead
299
+ as a variant on `ca-on-personalized`, where it belongs, because the SERIAL
300
+ grammar is what changes.
301
+ sources:
302
+ - "https://www.ontario.ca/page/personalized-licence-plate # ServiceOntario, accessed 2026-08-02: graphics, fees and the 8/6/5-character budgets"
303
+ - "https://www.ontario.ca/page/choose-licence-plate-graphic # the official graphic chooser, accessed 2026-08-02"
304
+ veteran:
305
+ exists: true
306
+ mechanism: "ServiceOntario states the Veteran licence plate design as an option a green plate cannot take: 'Green licence plates are not customizable with the Veteran licence plate design or other personalized licence plate design.'"
307
+ why_not_modelled: "No format or colour published in any primary located; an ordinary serial on an alternative design. Recorded as a gap."
308
+ sources:
309
+ - "https://www.ontario.ca/page/get-green-licence-plate # ServiceOntario, updated 10 July 2025, accessed 2026-08-02"
310
+
311
+ series:
312
+
313
+ # =========================================================================
314
+ # THE CURRENT STANDARD PASSENGER SERIES — four letters, three numerals.
315
+ # =========================================================================
316
+ - id: ca-on-standard-1997
317
+ class: standard
318
+ categories: [car, van, bus]
319
+ period: { start: 1997 }
320
+ period_evidence: secondary-wikipedia
321
+ matching: strict
322
+ format:
323
+ pattern: "LLLL 999"
324
+ regex: '\A[A-Z]{4} ?\d{3}\z'
325
+ regex_strict: '\A[ABCDEFHJKLMNPRSTVWXYZ]{4} ?\d{3}\z'
326
+ charset:
327
+ excluded: [G, I, O, Q, U]
328
+ notes: >-
329
+ See `common.charset`. The exclusion is a TAGGED SECONDARY and lives only
330
+ in `regex_strict`. No Ontario statute, regulation or government page
331
+ states any letter exclusion.
332
+ structure:
333
+ - "characters 1-4: letter block, allocated sequentially by the Ministry"
334
+ - "characters 5-7: numerals 001-999 within the letter block"
335
+ progression: >-
336
+ Sequential: the article's issuance record runs AAAA-001 upward, with a
337
+ separate F-block reserved since April 2019 for the French-slogan plate and
338
+ GV/GW/VE reserved for the Green Vehicle programme (own series below).
339
+ THERE IS NO DATE OR REGION SIGNAL IN AN ONTARIO PASSENGER PLATE — no
340
+ equivalent of the DVLA age identifier and no equivalent of a German
341
+ district code. A parse API must not infer either.
342
+ separator_note: >-
343
+ The gap between the letter block and the numeral block is occupied by a
344
+ SCREENED CROWN GRAPHIC, not by a glyph. It is an emblem (see
345
+ `design.emblem`) and is never part of the serial. `pattern` renders the gap
346
+ as the emitted space; both regexes accept it as optional.
347
+ design:
348
+ plate: { w: 12, h: 6, unit: in, w_mm: 304.8, h_mm: 152.4, plate_basis: convention }
349
+ plate_note: "NOT an Ontario legal claim — see `common.dimensions`. No Ontario instrument prescribes a plate size."
350
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
351
+ foreground: "#003C71"
352
+ colour_note: >-
353
+ Blue on reflective white. NEITHER COLOUR IS IN ANY ONTARIO INSTRUMENT: the
354
+ Highway Traffic Act and Reg. 628 are silent on colour. Both hexes are
355
+ `hex_basis: observed` and should be treated as unverified pending an MTO
356
+ specification.
357
+ legend_top: "ONTARIO"
358
+ legend_bottom_options: ["YOURS TO DISCOVER", "TANT À DÉCOUVRIR"]
359
+ legend_note: >-
360
+ The French-slogan plate is the SAME series in a different bottom legend,
361
+ allocated its own serial blocks (F-block exclusively since April 2019 per
362
+ the article). It is recorded as a variant rather than a series because
363
+ format and period are identical — the PRD-PLATES §2.3 test.
364
+ emblem: { present: true, rendered: placeholder, description: "provincial crown device, screened, between the letter and numeral groups" }
365
+ band: { side: none }
366
+ rear_differs: false
367
+ display: "front and rear (O. Reg. 628 s. 9(3)); validation, when required, in the upper right corner of the REAR plate (s. 9(1)(b))"
368
+ spec_history:
369
+ - { from: 1997, to: 2020, note: "embossed blue serial on reflective white, screened crown separator" }
370
+ - { from: 2020, note: "white base resumed after the blue base was abandoned in May 2020, with a more durable coating; the mark, the format and the colours are unchanged" }
371
+ variants:
372
+ - name: "French slogan (TANT À DÉCOUVRIR)"
373
+ format: { pattern: "LLLL 999", regex: '\A[A-Z]{4} ?\d{3}\z' }
374
+ note: "introduced 2008; per the article, exclusively F-block serials since April 2019. Same design but for the bottom legend."
375
+ region_encoding: none
376
+ region_encoding_note: "An Ontario plate encodes NO geography and NO date. There is no county legend, no regional prefix and no age identifier."
377
+ sources:
378
+ - "https://www.ontario.ca/laws/statute/90h08 # HTA s. 7(1)(b)(i): the plate shows 'the number of the permit issued for the vehicle'; s. 7(24) regulation-making power, which reaches display and never composition"
379
+ - "https://www.ontario.ca/laws/regulation/900628 # R.R.O. 1990, Reg. 628 s. 9(1),(3): front-and-rear display and the rear-plate validation corner"
380
+ - "https://www.ontario.ca/page/register-vehicle-permit-and-licence-plate # ServiceOntario: 'Vehicle permits and licence plates are issued immediately'; automatic renewal for passenger, light commercial, motorcycle and moped plates"
381
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Ontario # TAGGED SECONDARY (PRD-PLATES §4): the ABCD-123 format, its 1997 start, and the G/I/O/Q/U exclusion. Read 2026-08-02. The article's own citation for the exclusion is a collector site, not a government source."
382
+ notes: >-
383
+ THE CURRENT ONTARIO PASSENGER PLATE, and the whole of it rests on a
384
+ SECONDARY for its start year — which is stated here rather than hidden.
385
+ period.start 1997 is the en.wikipedia table's date for the switch from
386
+ 123-ABC to ABCD-123; the article footnotes the SERIAL RANGE to a collector
387
+ forum and the exclusion to a collector site, and dates the format change
388
+ itself with no footnote at all. No MTO or ServiceOntario page dates any
389
+ Ontario base or format, and the statute and regulation are silent on
390
+ composition (`common.charset.statutory_alphabet_absent`). So
391
+ `period_evidence: secondary-wikipedia` and 1997 is a flagged claim, not an
392
+ asserted fact (PRD-PLATES §9: primary-source-or-marked). WHAT IS
393
+ INDEPENDENTLY SOLID: that this format is CURRENT ISSUE is confirmed by
394
+ ServiceOntario's own personalized-plate page, which prices passenger plates
395
+ at "2 to 8 characters" and therefore presupposes a seven-character standard
396
+ arrangement; and the display, validation and ownership rules on this series
397
+ are all quoted from the Act and the regulation. THE ID IS DATED because the
398
+ 1997 boundary is at least consistently reported across the article's own
399
+ issuance ranges; if a primary lands that moves it, the dated id gains a
400
+ former-id alias under the PRD-QUALITY I-5/I-6 contract rather than moving.
401
+
402
+ # =========================================================================
403
+ # ONE SERIES BACK — three numerals, three letters (1986-1997).
404
+ # =========================================================================
405
+ - id: ca-on-standard-1986
406
+ class: standard
407
+ categories: [car, van, bus]
408
+ period: { start: 1986, end: 1997 }
409
+ period_evidence: secondary-wikipedia
410
+ matching: strict
411
+ format:
412
+ pattern: "999 LLL"
413
+ regex: '\A\d{3} ?[A-Z]{3}\z'
414
+ regex_strict: '\A\d{3} ?[ABCDEFHJKLMNPRSTVWXYZ]{3}\z'
415
+ charset:
416
+ excluded: [G, I, O, Q, U]
417
+ notes: "the article states G, I, Q and U were unused in this format and that O was discontinued after the ZZO series in 1997 — so the strict twin here excludes all five, which is a DELIBERATE OVER-NARROWING for the tail of the run and is flagged rather than silently applied."
418
+ separator_note: "crown graphic in the gap, as on the current series"
419
+ design:
420
+ plate: { w: 12, h: 6, unit: in, plate_basis: convention }
421
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
422
+ foreground: "#003C71"
423
+ legend_top: "ONTARIO"
424
+ legend_bottom_options: ["YOURS TO DISCOVER"]
425
+ emblem: { present: true, rendered: placeholder }
426
+ band: { side: none }
427
+ rear_differs: false
428
+ region_encoding: none
429
+ sources:
430
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Ontario # TAGGED SECONDARY: 123-ABC issued 1986-1997, ranges 001-AAA to 999-ZZZ; the 1994 switch to screened reflective plates inside the same format"
431
+ - "https://www.ontario.ca/laws/statute/90h08 # HTA s. 11(3): plates of this vintage remain lawfully transferable between the holder's vehicles of a similar class, which is why the series has no hard end for DISPLAY purposes"
432
+ notes: >-
433
+ THE IMMEDIATELY PRIOR PASSENGER FORMAT, authored because PRD-PLATES scopes
434
+ L2/L3 at the current series plus ONE back, and because Ontario plates are
435
+ permanent: since 1973 the province has not re-plated annually, so
436
+ 123-ABC plates remain lawfully displayed in quantity. The period END is an
437
+ ISSUANCE end, not a validity end — a distinction that matters more in
438
+ Ontario than in most jurisdictions and is the reason this series is not
439
+ marked `ended: true`. Both boundary years are the article's, unfootnoted,
440
+ hence `secondary-wikipedia`. The 1994 change from embossed to screened
441
+ reflective plates happened INSIDE this format and is not cut as a series:
442
+ format, period and colours were unchanged and only the manufacturing method
443
+ moved (PRD-PLATES §2.3).
444
+
445
+ # =========================================================================
446
+ # THE 2020 BLUE BASE — a real four-month series, announced, issued, recalled.
447
+ # =========================================================================
448
+ - id: ca-on-standard-blue-2020
449
+ class: standard
450
+ categories: [car, van, bus]
451
+ period: { start: 2020, end: 2020 }
452
+ period_evidence: secondary-wikipedia
453
+ matching: strict
454
+ format:
455
+ pattern: "LLLL 999"
456
+ regex: '\A[A-Z]{4} ?\d{3}\z'
457
+ regex_strict: '\A[ABCDEFHJKLMNPRSTVWXYZ]{4} ?\d{3}\z'
458
+ charset: { excluded: [G, I, O, Q, U], notes: "identical to ca-on-standard-1997 — the MARK did not change, only the base" }
459
+ separator_note: "the crown moved to the bottom right and a stylized white trillium took the separator position; still a graphic, still never part of the serial"
460
+ design:
461
+ plate: { w: 12, h: 6, unit: in, plate_basis: convention }
462
+ background: { color: "#1B3A6B", finish: retroreflective, hex_basis: observed, note: "two-hue blue" }
463
+ foreground: "#FFFFFF"
464
+ legend_top: "Ontario"
465
+ legend_bottom_options: ["A PLACE TO GROW", "EN PLEIN ESSOR"]
466
+ emblem: { present: true, rendered: placeholder, description: "stylized white trillium as separator; crown at bottom right" }
467
+ band: { side: none }
468
+ rear_differs: false
469
+ material: "synthetic, not embossed"
470
+ sources:
471
+ - "https://news.ontario.ca/mgs/en/2019/04/open-for-business-and-a-place-to-grow-new-licence-plate-and-drivers-licence-to-reflect-ontarios-opti-2.html # Government of Ontario news release, 15 April 2019, announcing the redesign and the 'A Place to Grow' slogan. FETCH FAILED on 2026-08-02: news.ontario.ca served no body to either the direct fetch or the Wayback copy attempted; the release is cited as the article's own primary and is NOT quoted here because it was not read."
472
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Ontario # TAGGED SECONDARY: issue from 1 February 2020, initial batch recalled after 4 March 2020, design scrapped 6 May 2020, blue stock exhausted through early June; serials CMAA-001 onward; the French 'EN PLEIN ESSOR' variant on F-block serials"
473
+ notes: >-
474
+ THE BLUE PLATE. Its own series because BOTH the design and the period differ
475
+ from ca-on-standard-1997 while the format does not (PRD-PLATES §2.3), and
476
+ because a consumer holding a photograph of a blue Ontario plate needs to be
477
+ told it is a four-month artefact rather than a current base. OVERLAP IS
478
+ DELIBERATE AND REAL: white "Yours to Discover" plates never stopped being
479
+ issued in French-slogan blocks and resumed in full in May 2020 while blue
480
+ stock ran out, so this series and ca-on-standard-1997 genuinely overlap in
481
+ 2020 — the parallel-issuance case PRD-PLATES §2.2 contemplates. EVERY DATE
482
+ HERE IS SECONDARY. The Government of Ontario's own April 2019 announcement
483
+ and its February 2020 update are cited by the article and were BOTH
484
+ unreachable on 2026-08-02 (news.ontario.ca returned an empty body to the
485
+ direct fetch, to WebFetch and to the Wayback attempt), so nothing from them
486
+ is quoted. A verifier with Canadian network access should re-pin this
487
+ series first: it is the one series in this file where a government primary
488
+ is known to exist and known to be unread.
489
+
490
+ # =========================================================================
491
+ # GREEN VEHICLE PLATES — the Ontario electric series. A REAL parse signal:
492
+ # unlike Britain's green flash, the Ontario green plate changes the SERIAL.
493
+ # =========================================================================
494
+ - id: ca-on-green-2010
495
+ class: electric
496
+ categories: [car, van, truck]
497
+ period: { start: 2010 }
498
+ period_evidence: secondary-wikipedia
499
+ matching: strict
500
+ format:
501
+ pattern: "LLLL 999"
502
+ regex: '\A[A-Z]{4} ?\d{3}\z'
503
+ regex_strict: '\A(?:GV|GW|VE)[ABCDEFHJKLMNPRSTVWXYZ]{2} ?\d{3}\z'
504
+ charset:
505
+ notes: >-
506
+ The two-letter programme prefix is what makes this series parseable. GV
507
+ and GW carry the English "GREEN VEHICLE" legend and VE the French
508
+ "VÉHICULE ÉCOLOGIQUE" legend, per the article's issuance table. CONTRAST
509
+ plates/gb.yml `gb-green-zev-2020`, where the mark is unchanged and a
510
+ British ZEV is NOT identifiable from its registration string. Ontario's
511
+ is.
512
+ progression: "GVAA-001 onward, continuing into the GW block; VEAA-001 onward for the French legend"
513
+ design:
514
+ plate: { w: 12, h: 6, unit: in, plate_basis: convention }
515
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
516
+ foreground: "#00843D"
517
+ colour_note: "green serial on white. No Ontario instrument states either colour; both are `hex_basis: observed`."
518
+ legend_top: "ONTARIO"
519
+ legend_bottom_options: ["GREEN VEHICLE", "VÉHICULE ÉCOLOGIQUE"]
520
+ emblem: { present: true, rendered: placeholder, description: "trillium graphic as separator" }
521
+ band: { side: none }
522
+ rear_differs: false
523
+ eligibility: >-
524
+ ServiceOntario, verbatim: eligible are "plug-in hybrid electric vehicles
525
+ (PHEV)", "battery electric vehicles (BEV)", "hydrogen fuel cell vehicles
526
+ (HFCVs)", "used 2010 or later model year PHEVs and BEVs" and vehicles running
527
+ in Ontario pilot programmes. Explicitly NOT eligible: "low-speed vehicles,
528
+ e-bikes, motorcycles, off-road vehicles, conventional hybrid electric vehicle
529
+ (HEVs), vehicles that have been converted to plug-in capability, commercial
530
+ vehicles with a registered gross weight (RGW) of more than 4,500 kg". Note
531
+ the PHEV inclusion — the Ontario test is a plug, not a tailpipe, which is the
532
+ exact inverse of the British reg. 16(11)(a) "cannot produce any tailpipe
533
+ emissions" test.
534
+ privilege: >-
535
+ ServiceOntario, verbatim: vehicles with green plates may drive in "High
536
+ Occupancy Vehicle (HOV) lanes with any number of occupants" and in "High
537
+ Occupancy Toll (HOT) lanes on 400-series highways and the Queen Elizabeth Way
538
+ (QEW) at no cost with any number of occupants". Since 25 November 2024
539
+ commercial vehicles of 3,001-4,500 kg are eligible.
540
+ restrictions: >-
541
+ ServiceOntario, verbatim: "Green vehicle licence plates are available at any
542
+ ServiceOntario centre. Online orders and personalized green vehicle licence
543
+ plates are not available." and "Green licence plates are not customizable
544
+ with the Veteran licence plate design or other personalized licence plate
545
+ design." The plates are OPTIONAL and cost the same as ordinary plates — so a
546
+ green plate proves an eligible powertrain and its absence proves nothing.
547
+ sources:
548
+ - "https://www.ontario.ca/page/get-green-licence-plate # ServiceOntario, published 21 January 2022, updated 10 July 2025, accessed 2026-08-02: the eligibility list verbatim, the HOV/HOT privilege, the 25 November 2024 commercial extension, the no-online-order and no-personalization rules, and 'The plates are optional and cost the same as regular licence plates.'"
549
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Ontario # TAGGED SECONDARY: the 2010 first-issue year and the GV / GW / VE prefix blocks with their issuance ranges"
550
+ notes: >-
551
+ ONTARIO'S GREEN PLATE IS A SERIAL SIGNAL, NOT A DECORATION — the single most
552
+ consumer-useful fact in this file, and the reason this series is authored
553
+ rather than folded into the standard series. The ELIGIBILITY, PRIVILEGE and
554
+ RESTRICTION text above is quoted from ServiceOntario and is as good as
555
+ Ontario evidence gets. The PERIOD is not: 2010 is the article's first-issue
556
+ year with no footnote, hence `period_evidence: secondary-wikipedia`. The
557
+ former MTO programme page (mto.gov.on.ca/english/vehicles/electric/
558
+ green-licence-plate.shtml), which the article cites, is dead; its content
559
+ moved to the ontario.ca page cited above, which does not date the programme.
560
+
561
+ # =========================================================================
562
+ # COMMERCIAL — two letters, five numerals. A DIFFERENT PLATE AND A DIFFERENT
563
+ # STICKER CORNER, both of which follow from the regulation.
564
+ # =========================================================================
565
+ - id: ca-on-commercial-2011
566
+ class: standard
567
+ categories: [truck, van]
568
+ period: { start: 2011 }
569
+ period_evidence: secondary-wikipedia
570
+ matching: strict
571
+ format:
572
+ pattern: "LL 99999"
573
+ regex: '\A[A-Z]{2} ?\d{5}\z'
574
+ charset:
575
+ notes: >-
576
+ No letter exclusion is stated for the commercial format by any source
577
+ located, so NO `regex_strict` is authored — the absence is deliberate and
578
+ is not the same as "no exclusions exist". PRD-PLATES §2.7: a missing
579
+ strict twin does not weaken `matching: strict`.
580
+ progression: "AA-10001 upward per the article's issuance record; a separate D-block (DA-10001 onward) carries the French slogan"
581
+ design:
582
+ plate: { w: 12, h: 6, unit: in, plate_basis: convention }
583
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
584
+ foreground: "#003C71"
585
+ legend_top: "ONTARIO"
586
+ legend_bottom_options: ["YOURS TO DISCOVER", "TANT À DÉCOUVRIR"]
587
+ emblem: { present: true, rendered: placeholder, description: "crown separator" }
588
+ band: { side: none }
589
+ rear_differs: false
590
+ display: "front and rear (O. Reg. 628 s. 9(3)); validation in the upper right corner of the FRONT plate (s. 9(1)(a)) — the inverse of a passenger vehicle, and a class signal a photograph carries"
591
+ pickup_truck_rule: >-
592
+ ServiceOntario, verbatim: "In Ontario, under the Highway Traffic Act all
593
+ vehicles defined as pickup trucks are classed as commercial vehicles
594
+ regardless of their intended use." So an ordinary private pick-up wears a
595
+ commercial plate in Ontario, and a consumer inferring "commercial use" from
596
+ this series will be wrong a great deal of the time.
597
+ sources:
598
+ - "https://www.ontario.ca/laws/regulation/900628 # Reg. 628 s. 9(1)(a): the commercial validation sticker goes on the FRONT plate; s. 8.0.1: CVOR certificate condition on issuing plates or validation for certain commercial vehicles"
599
+ - "https://www.ontario.ca/page/get-green-licence-plate # ServiceOntario, accessed 2026-08-02, for the pickup-truck classification quoted above and the 4,500 kg RGW ceiling"
600
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Ontario # TAGGED SECONDARY: the AB-12345 commercial format from 2011 and its issuance ranges; the DA French block"
601
+ notes: >-
602
+ ONTARIO'S COMMERCIAL PLATE IS A STANDARD-CLASS PLATE ON A DIFFERENT SERIAL
603
+ SHAPE, which is why `class: standard` and not a bespoke value: the
604
+ _meta/classes.yml vocabulary has no "commercial" member and inventing one ad
605
+ hoc is forbidden. What separates it from ca-on-standard-1997 is format and
606
+ the front-plate sticker corner, both recorded. period.start 2011 is the
607
+ article's, unfootnoted.
608
+
609
+ # =========================================================================
610
+ # MOTORCYCLE — rear only, small plate, its own serial line.
611
+ # =========================================================================
612
+ - id: ca-on-motorcycle-2024
613
+ class: motorcycle
614
+ categories: [motorcycle]
615
+ period: { start: 2024 }
616
+ period_evidence: secondary-wikipedia
617
+ matching: strict
618
+ format:
619
+ pattern: "99L9L"
620
+ regex: '\A\d{2}[A-Z]\d[A-Z]\z'
621
+ charset: { notes: "no exclusion stated by any source located; no strict twin authored" }
622
+ layout_note: "no separator and no gap: the Ontario motorcycle serial is printed as one five-character block under a screened 'ONT' legend"
623
+ design:
624
+ plate_note: "reduced motorcycle size; no Ontario instrument states it, and no measured figure was obtained. Deliberately absent rather than guessed."
625
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
626
+ foreground: "#003C71"
627
+ legend_top: "ONT"
628
+ emblem: { present: false, rendered: placeholder }
629
+ band: { side: none }
630
+ rear_differs: false
631
+ display: "REAR ONLY — O. Reg. 628 s. 9(4), verbatim: 'The number plate for a motorcycle, motor assisted bicycle or trailer shall be attached to and exposed in a conspicuous position on the rear of the vehicle.'"
632
+ sources:
633
+ - "https://www.ontario.ca/laws/regulation/900628 # Reg. 628 s. 9(4): rear-only display for a motorcycle or motor assisted bicycle"
634
+ - "https://www.ontario.ca/page/personalized-licence-plate # ServiceOntario, accessed 2026-08-02: 'Personalized motorcycle plates may have 2 to 5 characters.' — a GOVERNMENT statement that the motorcycle serial budget is five, which independently corroborates the five-character shape below"
635
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Ontario # TAGGED SECONDARY: the 12A3B arrangement from 2024 and its issuance range"
636
+ notes: >-
637
+ THE CURRENT ONTARIO MOTORCYCLE SERIES, and the one series in this file whose
638
+ LENGTH is corroborated by a government source: ServiceOntario prices
639
+ personalized motorcycle plates at "2 to 5 characters", which is exactly the
640
+ five-character budget the standard motorcycle serial uses. The specific
641
+ ARRANGEMENT (two digits, letter, digit, letter) and the 2024 start are the
642
+ article's and are unfootnoted. Ontario has cycled through six five-character
643
+ motorcycle arrangements since 1996 (AB123, 1A234, 123A4, 1234A, 1A2B3,
644
+ 12A3B); only the current one and its immediate predecessor are authored, per
645
+ the L2/L3 scope rule.
646
+
647
+ - id: ca-on-motorcycle-2013
648
+ class: motorcycle
649
+ categories: [motorcycle]
650
+ period: { start: 2013, end: 2024 }
651
+ period_evidence: secondary-wikipedia
652
+ matching: strict
653
+ format:
654
+ pattern: "9L9L9"
655
+ regex: '\A\d[A-Z]\d[A-Z]\d\z'
656
+ design:
657
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
658
+ foreground: "#003C71"
659
+ legend_top: "ONT"
660
+ band: { side: none }
661
+ rear_differs: false
662
+ sources:
663
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Ontario # TAGGED SECONDARY: the 1A2B3 arrangement, 2013-2024, ranges 0A0A1 onward"
664
+ - "https://www.ontario.ca/laws/regulation/900628 # Reg. 628 s. 9(4): the same rear-only rule applies"
665
+ notes: >-
666
+ ONE SERIES BACK for motorcycles. Authored because Ontario plates are
667
+ permanent and 1A2B3 machines are still on the road; the end year is an
668
+ ISSUANCE end, not a validity end, exactly as on ca-on-standard-1986. Both
669
+ boundaries are the article's, unfootnoted.
670
+
671
+ # =========================================================================
672
+ # TRAILER — rear only, permanent (no annual validation since 1980).
673
+ # =========================================================================
674
+ - id: ca-on-trailer-2025
675
+ class: trailer
676
+ categories: [trailer]
677
+ period: { start: 2025 }
678
+ period_evidence: secondary-wikipedia
679
+ matching: strict
680
+ format:
681
+ pattern: "LL9 99L"
682
+ regex: '\A[A-Z]{2}\d ?\d{2}[A-Z]\z'
683
+ charset: { notes: "no exclusion stated by any located source for the current trailer format" }
684
+ design:
685
+ plate: { w: 12, h: 6, unit: in, plate_basis: convention }
686
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
687
+ foreground: "#003C71"
688
+ legend_top: "ONTARIO"
689
+ legend_side: "TRAILER, screened vertically at the left"
690
+ emblem: { present: true, rendered: placeholder }
691
+ band: { side: none }
692
+ rear_differs: false
693
+ display: "REAR ONLY (O. Reg. 628 s. 9(4))"
694
+ validation: "HTA s. 7(4): a trailer needs a permit and 'there is displayed on the trailer, in the prescribed manner, a number plate showing the number of the permit issued for the trailer.' Ontario trailer plates carry a one-time fee rather than annual validation."
695
+ sources:
696
+ - "https://www.ontario.ca/laws/statute/90h08 # HTA s. 7(4): the trailer permit and plate requirement"
697
+ - "https://www.ontario.ca/laws/regulation/900628 # Reg. 628 s. 9(4): rear-only display for a trailer"
698
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Ontario # TAGGED SECONDARY: the AB1-23C trailer arrangement from 2025 and its ranges"
699
+ notes: >-
700
+ THE CURRENT ONTARIO TRAILER SERIES. period.start 2025 is the article's,
701
+ unfootnoted, and is the youngest claim in this file — a verifier should treat
702
+ it as the least settled. The trailer plate is genuinely permanent, which is
703
+ why its predecessor below carries an issuance end and no `ended: true`.
704
+
705
+ - id: ca-on-trailer-2002
706
+ class: trailer
707
+ categories: [trailer]
708
+ period: { start: 2002, end: 2025 }
709
+ period_evidence: secondary-wikipedia
710
+ matching: strict
711
+ format:
712
+ pattern: "L99 99L"
713
+ regex: '\A[A-Z]\d{2} ?\d{2}[A-Z]\z'
714
+ design:
715
+ plate: { w: 12, h: 6, unit: in, plate_basis: convention }
716
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
717
+ foreground: "#003C71"
718
+ legend_top: "ONTARIO"
719
+ legend_side: "TRAILER, screened vertically at the left"
720
+ band: { side: none }
721
+ rear_differs: false
722
+ sources:
723
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Ontario # TAGGED SECONDARY: the A12-34B trailer arrangement, 2002-2025, ranges A10-01A to Z99-99Z"
724
+ - "https://www.ontario.ca/laws/regulation/900628 # Reg. 628 s. 9(4)"
725
+ notes: >-
726
+ ONE SERIES BACK for trailers, and the bulk of the Ontario trailer fleet: the
727
+ A12-34B range ran twenty-three years and to exhaustion (Z99-99Z), which is
728
+ why the successor above changed shape. Both boundaries are the article's.
729
+
730
+ # =========================================================================
731
+ # HISTORIC — the class the STATUTE defines, unusually.
732
+ # =========================================================================
733
+ - id: ca-on-historic-2007
734
+ class: historic
735
+ categories: [car, van, truck, motorcycle]
736
+ period: { start: 2007 }
737
+ period_evidence: secondary-wikipedia
738
+ matching: strict
739
+ format:
740
+ pattern: "9H9999"
741
+ regex: '\A\dH\d{4}\z'
742
+ charset: { notes: "the literal H in position 2 is the programme marker; the rest is numeric. The pattern spells H as an ordinary literal letter, which the §2.6 alphabet permits without an escape (the escape is only needed for the DSL's own 9 and L tokens)." }
743
+ progression: "1H0001 upward per the article's issuance record"
744
+ design:
745
+ plate: { w: 12, h: 6, unit: in, plate_basis: convention }
746
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
747
+ foreground: "#003C71"
748
+ legend_top: "ONTARIO"
749
+ legend_side: "HISTORIC, screened vertically at the left"
750
+ emblem: { present: true, rendered: placeholder, description: "crown separator" }
751
+ band: { side: none }
752
+ rear_differs: false
753
+ eligibility: >-
754
+ HTA s. 7(1.1), verbatim: "'historic vehicle' means a motor vehicle that,
755
+ (a) is at least 30 years old, and (b) is substantially unchanged or
756
+ unmodified from the original manufacturer's product." Reg. 628 s. 1(1)
757
+ carries its own definition "despite the definition in subsection 7 (1.1) of
758
+ the Act" for registration purposes. A HISTORIC plate is NOT a
759
+ year-of-manufacture plate — see `classes_not_modelled.year_of_manufacture`.
760
+ sources:
761
+ - "https://www.ontario.ca/laws/statute/90h08 # HTA s. 7(1.1): the 30-year, substantially-unmodified statutory definition"
762
+ - "https://www.ontario.ca/laws/regulation/900628 # Reg. 628 s. 1(1) 'historic vehicle', which overrides the Act's definition for registration purposes"
763
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Ontario # TAGGED SECONDARY: the 1H2345 arrangement from 2007 and its issuance range; the 1969 origin of the class and the 1973 switch to permanent plates"
764
+ notes: >-
765
+ THE ELIGIBILITY TEST IS STATUTORY AND THE FORMAT IS NOT — the split this
766
+ whole file is built around, in one series. HTA s. 7(1.1) states the 30-year
767
+ rule in terms; nothing in the Act or the regulation says a historic plate
768
+ reads 1H2345, and 2007 is the article's unfootnoted date.
769
+
770
+ # =========================================================================
771
+ # DIPLOMATIC — red plates, and a FEDERAL rule sits over the provincial series.
772
+ # =========================================================================
773
+ - id: ca-on-diplomatic-1994
774
+ class: diplomatic
775
+ categories: [car, van]
776
+ period: { start: 1994 }
777
+ period_evidence: secondary-wikipedia
778
+ matching: strict
779
+ format:
780
+ pattern: "999 LLL"
781
+ regex: '\A\d{3} ?[A-Z]{3}\z'
782
+ charset: { notes: "no exclusion located. NOTE THE COLLISION RISK a parse API must handle: the printed serial shape is identical to ca-on-standard-1986, and only the PLATE COLOUR distinguishes them. A string alone cannot separate the two." }
783
+ design:
784
+ plate: { w: 12, h: 6, unit: in, plate_basis: convention }
785
+ background: { color: "#C8102E", finish: retroreflective, hex_basis: observed }
786
+ foreground: "#FFFFFF"
787
+ colour_note: "white on reflective red. The article states the red is EXCLUSIVE to diplomatic plates in Ontario. No instrument states the colour; `hex_basis: observed`."
788
+ legend_top: "ONTARIO"
789
+ legend_bottom_options: ["YOURS TO DISCOVER"]
790
+ emblem: { present: true, rendered: placeholder, description: "crown separator" }
791
+ band: { side: none }
792
+ rear_differs: false
793
+ federal_overlay: >-
794
+ Global Affairs Canada's Office of Protocol sets the rule that foreign
795
+ representatives and accredited family members must obtain the provincial
796
+ diplomatic plate when registering a passenger vehicle, within 30 days of
797
+ taking up residence, and that the rule does not extend to motorcycles. The
798
+ GAC guidance page was FETCHED on 2026-08-02 and returned a navigation shell
799
+ only (736 characters, no policy body), so the rule is recorded here from the
800
+ article's summary of it and is NOT quoted. Flagged for the verifier.
801
+ sources:
802
+ - "https://www.international.gc.ca/protocol-protocole/policies-politiques/licence-plates-guidelines_lignes-directrices-plaques-immatriculation.aspx?lang=eng # Global Affairs Canada, 'Issuance of Licence Plates to Foreign Representatives, including Honorary Consular Officers' — FETCHED 2026-08-02, returned a navigation shell with no policy body; cited as the known federal primary, unread"
803
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Ontario # TAGGED SECONDARY: the 1994 base, the 123-ABC diplomatic format, the red-is-exclusive claim, and the 30-day / no-motorcycle federal rule"
804
+ notes: >-
805
+ THE WEAKEST-SOURCED SERIES IN THIS FILE, and it says so. Ontario publishes
806
+ nothing about diplomatic plates; the federal page that would govern them was
807
+ unreadable from this location. Everything here is the article's. It is
808
+ authored anyway because the class vocabulary has a `diplomatic` member, the
809
+ colour is genuinely diagnostic on the road, and the SERIAL COLLISION with
810
+ ca-on-standard-1986 is a fact a parse API needs stated rather than
811
+ discovered. A verifier should re-pin this from Global Affairs Canada before
812
+ the file is applied.
813
+
814
+ # =========================================================================
815
+ # PERSONALIZED — the ONE series whose grammar is authority-sourced end to end.
816
+ # =========================================================================
817
+ - id: ca-on-personalized
818
+ class: personalized
819
+ categories: [car, van, truck, motorcycle]
820
+ period: { start: 1998 }
821
+ period_evidence: statutory-authority-undated
822
+ matching: strict
823
+ format:
824
+ pattern: "LLLLLLLL"
825
+ regex: '\A[A-Z0-9]{2,8}\z'
826
+ charset:
827
+ notes: >-
828
+ ServiceOntario, verbatim: "A personalized licence plate message may
829
+ contain almost any combination of letters and numbers." and
830
+ "Personalized passenger and commercial plates may have 2 to 8
831
+ characters. Personalized motorcycle plates may have 2 to 5 characters."
832
+ The refusal rules are equally quotable and are real charset constraints:
833
+ the Ministry rejects "combinations with: more than 4 identical characters
834
+ in sequence" and "interchangeable letters or numbers (such as S/5, A/4,
835
+ G/6, Q/O) — for example, if a plate has been issued with an 'S' in its
836
+ combination and an identical plate request is submitted substituting the
837
+ 'S' with a '5', that plate will not be approved". Neither rule is
838
+ encoded in a regex: the first is expressible but would narrow the series
839
+ against a discretionary standard, and the second is a COLLISION rule
840
+ against the existing issue rather than a property of the string.
841
+ length_note: "2-8 for passenger and commercial; 2-5 for motorcycle (variant below); 2-6 when a graphic is chosen (ServiceOntario fee table)."
842
+ design:
843
+ plate: { w: 12, h: 6, unit: in, plate_basis: convention }
844
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
845
+ foreground: "#003C71"
846
+ legend_top: "ONTARIO"
847
+ legend_bottom_options: ["YOURS TO DISCOVER", "TANT À DÉCOUVRIR"]
848
+ emblem: { present: true, rendered: placeholder }
849
+ band: { side: none }
850
+ rear_differs: false
851
+ graphics_note: "ServiceOntario: 'There are over 60 graphics available to choose from.' The graphic occupies plate area and costs two characters of serial budget."
852
+ variants:
853
+ - name: "motorcycle personalized"
854
+ format: { pattern: "LLLLL", regex: '\A[A-Z0-9]{2,5}\z' }
855
+ note: "ServiceOntario, verbatim: 'Personalized motorcycle plates may have 2 to 5 characters.' and 'Personalized licence plates cannot be registered to limited speed motorcycles.'"
856
+ - name: "personalized with graphic"
857
+ format: { pattern: "LLLLLL", regex: '\A[A-Z0-9]{2,6}\z' }
858
+ note: "ServiceOntario fee table: '2 to 6 characters (letters and/or numbers) with a graphic - $336.40', against '2 to 8 characters ... without a graphic - $310'."
859
+ transfer_rule: >-
860
+ ServiceOntario, verbatim: "A personalized licence plate can be transferred
861
+ only once to another person before it is attached to a vehicle. Once the
862
+ plate is registered to a vehicle, it cannot be transferred again." — which
863
+ sits on top of the ordinary Ontario owner-binding rule (HTA s. 11(3)).
864
+ sources:
865
+ - "https://www.ontario.ca/page/personalized-licence-plate # ServiceOntario, accessed 2026-08-02: the 2-8 / 2-5 / 2-6 character budgets verbatim, the 'almost any combination of letters and numbers' statement, the four-identical-character and interchangeable-character refusal rules, the gift/transfer rule and the fee table"
866
+ - "https://www.ontario.ca/laws/statute/90h08 # HTA s. 7(24)(o): the Lieutenant Governor in Council may make regulations 'prescribing the criteria for the issuance, retention and return of a number plate bearing a requested number' — the statutory hook for the whole programme; HTA s. 12(3)(a) confirms 'number plate' includes 'a number plate bearing a requested number'"
867
+ notes: >-
868
+ THE ONLY ONTARIO SERIES WHOSE REGEX IS AUTHORITY-SOURCED END TO END. The
869
+ statute creates the class (s. 7(24)(o), s. 12(3)(a)) and ServiceOntario
870
+ publishes the exact character budgets, so `regex` here is a real claim rather
871
+ than a reported shape. PERIOD IS THE WEAK PART and is graded honestly:
872
+ `statutory-authority-undated`. HTA s. 7(24)(o) and s. 12(3)(a) both entered
873
+ the Act by 1999, c. 12, Sched. R, in force 1 January 2001 per the e-Laws
874
+ amendment table, and Ontario's requested-number programme demonstrably
875
+ predates that consolidation. 1998 is recorded as a conservative start with no
876
+ primary behind the exact year; a verifier should either pin it or replace it
877
+ with the 2001 in-force date and re-grade to `enabling-instrument`. THE
878
+ OVERLAP with every other Ontario series is by construction — a personalized
879
+ plate is an ordinary plate with a chosen serial, so its regex deliberately
880
+ swallows the standard shapes, and `matching: strict` is still correct because
881
+ the authority really does issue any 2-8 alphanumeric string.