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,472 @@
1
+ # plates/au-act.yml — Australian Capital Territory (PRD-PLATES gate L3, Australia).
2
+ #
3
+ # THIS FILE CARRIES THE 1948 LETTER ALLOCATION — the one genuinely national fact
4
+ # in Australian plates, and the reason plates/au-nsw.yml, plates/au-sa.yml and
5
+ # the rest of this wave point HERE for it. It is quoted below from a GOVERNMENT
6
+ # page (Access Canberra, the ACT Government's service arm), not from folklore,
7
+ # and it explains why ACT plates begin with Y, why Tasmania once ran a W series,
8
+ # and why every mainland State ran three letters and three numerals for most of
9
+ # the second half of the twentieth century.
10
+ #
11
+ # ACT IS ALSO THE JURISDICTION THAT PUBLISHES THE MOST ABOUT ITS OWN PLATES.
12
+ # Two very different primaries were read in full on 2026-08-02:
13
+ #
14
+ # 1. THE INSTRUMENT. Road Transport (Vehicle Registration) Regulation 2000
15
+ # (SL2000-12), made under the Road Transport (Vehicle Registration) Act 1999,
16
+ # Republication No 62, effective 5 January 2026, read as the authorised PDF
17
+ # from the ACT Legislation Register. It gives the issue rule (s 49), the
18
+ # bicycle-rack numberplate (s 50 — an ACT peculiarity worth the schema's
19
+ # attention) and the display rule (s 59). It does NOT give a serial grammar,
20
+ # exactly as every other Australian instrument in this wave does not: s 49(1)
21
+ # says the authority "must give a distinguishing registration number to the
22
+ # vehicle" and stops. Tasmania's reg 88(1) says the same thing in almost the
23
+ # same words (plates/au-tas.yml).
24
+ #
25
+ # 2. THE AGENCY PAGE. Access Canberra, "ACT numberplate information", read via
26
+ # the Internet Archive snapshot of 3 October 2018 because the live page has
27
+ # since been restructured. It is the single most informative government plate
28
+ # page found anywhere in this wave: it dates the Y series, names its opening
29
+ # combination, states the three plate LENGTHS and how many characters each
30
+ # holds, states the tin-plate colour rule, gives the personalised-plate
31
+ # grammar in terms, and — uniquely in this dataset — says what the DIAMOND
32
+ # between serial groups counts as.
33
+ #
34
+ # THE SEPARATOR IS A DIAMOND AND WE DO NOT WRITE IT (PRD-PLATES §2.6). ACT
35
+ # plates print a diamond between groups (YGH♦75R). U+2666 is neither in the
36
+ # serial alphabet nor in the emitted separator set, so no pattern or regex here
37
+ # spells it; patterns spell the gap as an emitted SPACE and every regex accepts
38
+ # it optionally. That this is a GAP rather than a CHARACTER is not free, and the
39
+ # ACT is the only Australian government to have said anything about it, verbatim:
40
+ # "A diamond symbol or space counts as a character." That sentence is about how
41
+ # many characters fit on a 190/317/372 mm plate — a plate-real-estate rule, not
42
+ # a serial rule — but it is close enough to the line that it is flagged here for
43
+ # the _meta/separators.yml owner rather than left as an assumption. Nothing in
44
+ # this dataset strips or emits the diamond either way.
45
+ #
46
+ # REGEX POLICY (identical to plates/gb.yml and the rest of this wave):
47
+ # `format.regex` is the LINT-ROUND-TRIPPABLE regex written in PRINTED form. The
48
+ # leading Y of the general series and the leading A of the European personalised
49
+ # style are LITERALS in `pattern` and in `regex`, which is why those series are
50
+ # `strict` with no `regex_strict` twin — the sourced restriction is already
51
+ # inside the round-trippable regex.
52
+ jurisdiction: au-act
53
+ authority:
54
+ name: Road Transport Authority (ACT), through Access Canberra
55
+ url: "https://www.accesscanberra.act.gov.au/"
56
+ binding: vehicle
57
+ binding_note: >-
58
+ ACT is a two-layer system and the agency says so in terms. Access Canberra,
59
+ verbatim: "Numberplates always remain the property of the Road Transport
60
+ Authority so when you order a nonstandard plate you are paying for the rights
61
+ to display the registration number. You can, however, transfer this right to
62
+ another person." The PLATE binds to the vehicle; the RIGHT to a nonstandard
63
+ combination binds to a person, is storable ("The minimum storage period is two
64
+ months and the maximum period is five years"), is transferable, and passes to
65
+ a beneficiary on death at no cost. A vehicle-keyed consumer must not treat an
66
+ ACT nonstandard combination as a vehicle-lifetime identifier.
67
+ instrument:
68
+ citation: "Road Transport (Vehicle Registration) Regulation 2000 (ACT), SL2000-12, made under the Road Transport (Vehicle Registration) Act 1999 (ACT)"
69
+ republication_read: "Republication No 62, effective 5 January 2026, republication date 5 January 2026, last amendment made by A2025-29 — the authorised PDF from the ACT Legislation Register, fetched and text-extracted 2026-08-02"
70
+ issue_rule: >-
71
+ s 49, verbatim: "(1) If the road transport authority registers a registrable
72
+ vehicle, the authority must give a distinguishing registration number to the
73
+ vehicle. (2) The road transport authority must issue— (a) for a motor
74
+ vehicle registered by the authority (other than a motorbike or
75
+ motortrike)—2 vehicle numberplates with the vehicle's registration number;
76
+ and (b) for a motorbike, motortrike or trailer registered by the
77
+ authority—at least 1 vehicle numberplate with the registration number of the
78
+ motorbike, motortrike or trailer; and (c) for any other registrable vehicle
79
+ registered by the authority—the number of vehicle numberplates the authority
80
+ considers appropriate with the vehicle's registration number."
81
+ grammar_absence: >-
82
+ THE ABSENCE IS THE FINDING. "A distinguishing registration number" is the
83
+ whole of the ACT's statutory constraint on what a registration number may
84
+ be: no alphabet, no length, no layout, no colour. Chapter 3 Part 3.5 runs
85
+ from s 49 to s 59 and never describes a plate's appearance beyond
86
+ legibility. Every FORMAT claim below therefore rests on the agency page or
87
+ on flagged secondary sources, and says which.
88
+ bicycle_rack_plate: >-
89
+ s 50, an ACT peculiarity this dataset should notice: the registered operator
90
+ of a registered motor vehicle "may apply to the road transport authority for
91
+ the issue of a bicycle rack numberplate for the vehicle IN ADDITION to the
92
+ vehicle numberplates issued for the vehicle". Access Canberra adds the rule
93
+ that matters for parsing: "A bike rack numberplate must display the same
94
+ number as the motor vehicle's registration numberplate and can only be used
95
+ for that vehicle. The type of material used must be the same as the vehicle
96
+ numberplates." So an ACT vehicle can lawfully display THREE plates bearing
97
+ one number. No separate series is authored for it — same number, same
98
+ grammar, different mount.
99
+ source: "https://www.legislation.act.gov.au/DownloadFile/sl/2000-12/current/PDF/2000-12.PDF # Road Transport (Vehicle Registration) Regulation 2000 (ACT), Republication No 62, authorised PDF, fetched and text-extracted 2026-08-02: s 49 issue rule, s 50 bicycle-rack plates, s 59 display"
100
+ licence: "ACT legislation is published by the ACT Parliamentary Counsel; the register states the material is authorised and accessible at www.legislation.act.gov.au. Edicts of government (PRD-PLATES §4)."
101
+
102
+ # ---------------------------------------------------------------------------
103
+ # THE 1948 ALLOCATION. Quoted here once for the whole Australian wave.
104
+ # ---------------------------------------------------------------------------
105
+ national_context:
106
+ atac_allocation_quote: >-
107
+ Access Canberra, "ACT numberplate information" (Internet Archive snapshot of
108
+ 3 October 2018, accessed 2026-08-02), verbatim: "In 1948 the 'Y' series was
109
+ allocated for the ACT by the Australian Transport Advisory Council as part
110
+ of the distribution of alpha-numeric numbers among the Australian States and
111
+ Territories. At the time it was decided the ACT would continue to use the
112
+ numeric series of numberplates until in August 1968, the first alpha-numeric
113
+ 'Y' series numberplates were issued. The new numberplates commenced at
114
+ 'YAA-000' in accordance with the agreement for a uniform Australia wide
115
+ system. The first 'Y' series numberplates featured blue lettering on a
116
+ reflective white background."
117
+ what_it_establishes: >-
118
+ Four things, all of which the rest of this wave depends on. (1) There WAS a
119
+ national agreement, and it was ADMINISTRATIVE — an Australian Transport
120
+ Advisory Council agreement between the jurisdictions, not a Commonwealth
121
+ instrument, which is why no statute in any of the eight files carries a
122
+ serial grammar. (2) What it distributed was LETTER BLOCKS, not a common
123
+ format: the ACT got Y, and the three-letter/three-numeral shape the mainland
124
+ States ran was the shared convention rather than a mandated layout. (3) The
125
+ ACT's own start is agency-dated to AUGUST 1968 at YAA-000. (4) The ACT was
126
+ late to it by twenty years, having stayed all-numeric until 1968.
127
+ atac_text_not_obtained: >-
128
+ NO TEXT OF THE 1948 AGREEMENT WAS LOCATED, and the hunt is recorded so it is
129
+ not repeated: the Australian Transport Advisory Council was a ministerial
130
+ council, its papers are not on any legislation register, and none of the
131
+ eight jurisdictions publishes it. The quote above is the best government
132
+ evidence obtained that the agreement exists and what it did. Treat the
133
+ agreement as SOURCED-BY-AGENCY-DESCRIPTION, never as a read instrument.
134
+ heavy_vehicles: >-
135
+ The national heavy-vehicle layer is a MECHANISM, not a series, and this wave
136
+ records it once per file: heavy vehicles (over 4.5 t) are registered under
137
+ the Heavy Vehicle National Law as applied in each jurisdiction and carry a
138
+ "national heavy vehicle number plate" issued BY the local registrar. The
139
+ Queensland regulation defines the object in terms (sch 8: "national heavy
140
+ vehicle number plate means a plate designed to be attached to a category 2
141
+ vehicle to identify the vehicle"; "category 2 vehicle means a vehicle with a
142
+ GVM, GCM or ATM of more than 4.5t"). Access Canberra publishes a separate
143
+ "Heavy Vehicle Numberplates and Fees" section. NO SERIES IS AUTHORED: no
144
+ source obtained states a distinct national serial grammar (recorded gap).
145
+ sources:
146
+ - "https://web.archive.org/web/20181003140711/https://www.accesscanberra.act.gov.au/app/answers/detail/a_id/2125/~/act-numberplate-information # Access Canberra (ACT Government), archived 2018-10-03, fetched 2026-08-02 — the 1948 ATAC allocation quoted verbatim above, the August 1968 first issue at YAA-000, the first Y-series colours, the heavy-vehicle section heading"
147
+ - "https://www.legislation.qld.gov.au/view/whole/html/inforce/current/sl-2021-0113 # Transport Operations (Road Use Management-Vehicle Registration) Regulation 2021 (Qld) sch 8, fetched 2026-08-02 — the 'national heavy vehicle number plate' and 'category 2 vehicle' definitions quoted above"
148
+
149
+ # ---------------------------------------------------------------------------
150
+ # Plate stock. THE ACT IS WHERE THE AUSTRALIAN PLATE DIMENSIONS ARE ACTUALLY
151
+ # SOURCED FROM A GOVERNMENT — three lengths, with the character capacity of
152
+ # each, in the agency's own words.
153
+ # ---------------------------------------------------------------------------
154
+ plate_stock:
155
+ lengths_quote: >-
156
+ Access Canberra, verbatim: "Numberplates can be made standard height (both
157
+ front and back) or as a slimline set (slimline front numberplate and
158
+ standard height back numberplate). The length of the plate depends on how
159
+ many characters the registration number contains. Short plates (190mm in
160
+ length) can have up to three characters, medium plates (317mm in length) can
161
+ have up to six characters and standard plates (372mm in length) can have up
162
+ to seven characters. A diamond symbol or space counts as a character."
163
+ standard_length_mm: 372
164
+ medium_length_mm: 317
165
+ short_length_mm: 190
166
+ height_note: >-
167
+ THE AGENCY GIVES LENGTHS AND NEVER HEIGHTS. No ACT source obtained states a
168
+ plate height. The 134 mm figure used elsewhere in this wave is sourced from
169
+ OTHER jurisdictions (Transport for NSW's Classic Vehicle Scheme fact sheet
170
+ gives "Car plate dimensions 317mm x 134mm"; WA's Department of Transport
171
+ publishes 372 x 134 mm — see plates/au-nsw.yml and plates/au-wa.yml). No
172
+ height is claimed for an ACT plate here, and `design.plate` below carries
173
+ the length only. This is the same posture plates/gb.yml takes when the
174
+ Regulations prescribe character metrics and never a plate size: an absence
175
+ that is a finding, not an omission.
176
+ slogan_capacity_quote: >-
177
+ Access Canberra, verbatim, on nonstandard plates: "Custom slogans can have a
178
+ maximum of 14 characters on short plates (190mm in length), 25 characters on
179
+ medium plates (317mm in length) and 30 characters on standard plates (372mm
180
+ in length)."
181
+ materials_quote: >-
182
+ Access Canberra, verbatim: "Tin numberplates only come with blue characters
183
+ on a white background unless they are a special series." Plastic
184
+ (polycarbonate) plates are offered in ten stated colour combinations: black
185
+ on white, blue on white, and white on each of black, brown, dark green,
186
+ maroon, blue, pink, purple and red. This is a rare thing in this dataset —
187
+ an AGENCY-STATED colour palette rather than an observed one.
188
+ group_separator:
189
+ printed_glyph: diamond
190
+ note: >-
191
+ Printed between serial groups on ACT plates. Not written in any pattern or
192
+ regex (PRD-PLATES §2.6 permits only "-" and " " as emitted separators);
193
+ patterns spell the gap as a SPACE. Flagged for the _meta/separators.yml
194
+ owner with the agency's own "A diamond symbol or space counts as a
195
+ character" sentence, which is the only government text found in this wave
196
+ that treats the diamond as occupying a position at all.
197
+ sources:
198
+ - "https://web.archive.org/web/20181003140711/https://www.accesscanberra.act.gov.au/app/answers/detail/a_id/2125/~/act-numberplate-information # Access Canberra, archived 2018-10-03, fetched 2026-08-02 — the three plate lengths and their character capacities, the diamond sentence, the custom-slogan capacities, the tin colour rule and the plastic colour list, all verbatim"
199
+
200
+ # ---------------------------------------------------------------------------
201
+ # Display. s 59 of the Regulation, and the agency's own gloss on it.
202
+ # ---------------------------------------------------------------------------
203
+ display_rules:
204
+ statutory: >-
205
+ s 59(1), verbatim: the registered operator "must ensure that a vehicle
206
+ numberplate issued for the vehicle is securely attached to the vehicle so
207
+ that (if the vehicle is on level ground)— (a) the numberplate is— (i)
208
+ upright and substantially parallel to the vehicle's axles; and (ii) not over
209
+ 1.3m above ground level; and (b) the numbers on the numberplate are clearly
210
+ visible from a distance of 20m at any point within an arc of 45° from the
211
+ surface of the numberplate above and to either side of the vehicle, as shown
212
+ in diagram 59.1, figures 1 and 2 (for heavy vehicles) and diagram 59.2,
213
+ figures 1 and 2 (for light vehicles); and (c) any cover on the
214
+ numberplate— (i) is clear, clean, untinted and flat over the surface of the
215
+ numberplate; and (ii) has no reflective or other characteristics that would
216
+ prevent the successful operation of a traffic offence detection device."
217
+ height_limit_note: >-
218
+ The 1.3 m ceiling in s 59(1)(a)(ii) is worth recording because it is the
219
+ inverse of Florida's: § 316.605(1) F.S. sets a maximum of 60 in (1.52 m) and
220
+ a MINIMUM of 12 in; the ACT sets a maximum only. Diagrams 59.1 and 59.2 are
221
+ line drawings inside the instrument and are cited, never reproduced
222
+ (PRD-PLATES §6).
223
+ agency_gloss: >-
224
+ Access Canberra, verbatim: "Unless exempted, all characters on a numberplate
225
+ must be fully visible when viewed from all positions within the areas
226
+ described above. They must not be obscured, even partly, by the body of the
227
+ vehicle, any load that it is carrying, numberplate holders or covers, or any
228
+ attachment, including tow couplings such as tow bars, hitches or spare
229
+ wheels." And the consequence: "A vehicle with a numberplate positioned
230
+ contrary to the requirements specified may not be registered in the ACT."
231
+ twenty_metre_test_note: >-
232
+ The 20 m / 45 degree test is the AUSTRALIA-WIDE formulation — Queensland
233
+ (s 118(2)(b)), Tasmania (reg 89) and Transport for NSW state it in the same
234
+ terms from their own instruments. It is the closest thing to a national
235
+ plate rule that actually exists, and it is about VISIBILITY, never about
236
+ format.
237
+ sources:
238
+ - "https://www.legislation.act.gov.au/DownloadFile/sl/2000-12/current/PDF/2000-12.PDF # Road Transport (Vehicle Registration) Regulation 2000 (ACT) s 59, Republication No 62, fetched 2026-08-02"
239
+ - "https://web.archive.org/web/20181003140711/https://www.accesscanberra.act.gov.au/app/answers/detail/a_id/2125/~/act-numberplate-information # Access Canberra's visibility section, archived 2018-10-03 — the obscuring rule and the registration consequence, verbatim"
240
+
241
+ series:
242
+
243
+ # =========================================================================
244
+ # CURRENT GENERAL ISSUE — the Y series, second generation.
245
+ # =========================================================================
246
+ - id: au-act-standard
247
+ class: standard
248
+ categories: [car, van, truck, bus]
249
+ period: { start: 1998 } # SECONDARY. The agency page confirms the
250
+ # 'Y' series is current issue but does not
251
+ # date this ARRANGEMENT. See notes.
252
+ period_evidence: secondary-wikipedia
253
+ matching: strict
254
+ format:
255
+ pattern: "YLL 99L"
256
+ regex: '\AY[A-Z]{2} ?\d{2}[A-Z]\z'
257
+ evidence: secondary
258
+ charset:
259
+ notes: >-
260
+ Y IS THE ACT, AND THAT MUCH IS AGENCY-SOURCED AND 1948-OLD. Access
261
+ Canberra, verbatim: "The majority of vehicles will receive a standard
262
+ 'Y' series numberplate unless the registered operator already has or
263
+ chooses to purchase a non-standard numberplate that is available for
264
+ use, or the vehicle is a public, government, diplomatic or heavy
265
+ vehicle." The Y is encoded as a LITERAL in `pattern` and `regex`,
266
+ which is why this series is `strict` with no strict twin. The
267
+ remaining positions carry no sourced exclusion — whether the ACT skips
268
+ I, O or Q is UNKNOWN and is a recorded gap; no restriction is claimed.
269
+ progression: >-
270
+ Reported: the second-generation Y arrangement (three letters then two
271
+ numerals then a letter) began when the first-generation YLL 999 series
272
+ was exhausted, and blocks have been allocated to optional slogans
273
+ (YGA-00A onward for the Centenary slogan; YKQ and YLP blocks for the
274
+ 2015 "AN AGE FRIENDLY CITY" slogan). Those are VALUES inside this shape,
275
+ not different shapes, and none is encoded.
276
+ design:
277
+ plate: { length_mm: 372, unit: mm }
278
+ plate_dimension_note: "length only, agency-stated (see plate_stock); no ACT source states a height, so none is recorded"
279
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
280
+ colour_note: >-
281
+ BLUE ON REFLECTIVE WHITE, and the colour words are AGENCY-SOURCED for
282
+ once: Access Canberra states of the first Y plates that they "featured
283
+ blue lettering on a reflective white background", and of current tin
284
+ stock that "Tin numberplates only come with blue characters on a white
285
+ background unless they are a special series". The WHITE is recorded as a
286
+ hex because white is unambiguous; NO HEX IS RECORDED FOR THE BLUE,
287
+ because the ACT publishes no chromaticity and guessing the shade would
288
+ invent a fact. Secondary sources report the blue was darkened at an
289
+ unstated date; that is recorded, not asserted.
290
+ legend_bottom_options: ["CANBERRA - THE NATION'S CAPITAL", "CANBERRA - THE BUSH CAPITAL"]
291
+ legend_note: >-
292
+ The ACT runs OPTIONAL SLOGANS on the standard plate, which is a real
293
+ modelling wrinkle: the bottom legend is a customer choice, not a
294
+ property of the series (the same wrinkle Florida has with its
295
+ county/motto/Sunshine State opt-out). Reported slogan history, secondary:
296
+ "ACT - Canberra The Nation's Capital" from November 1979, "Canberra Heart
297
+ of the Nation" as an option from 1998, "Celebration of a Century 2013"
298
+ from 2007, "CANBERRA - AN AGE FRIENDLY CITY" from 8 July 2015, and
299
+ "CANBERRA - THE BUSH CAPITAL" chosen by public vote in March 2017 and in
300
+ production from 3 July 2017.
301
+ special_series_note: >-
302
+ AGENCY-SOURCED, and a good example of a colour-only variant that is NOT
303
+ its own series under PRD-PLATES §2.3: "Rainbow numberplates are standard
304
+ tin 'Y' series plates with a rainbow stripe along the bottom. You are
305
+ unable to customise the size or numbers on these plates." Same format,
306
+ same period, same issuing rule — a sub-entry, not a series.
307
+ group_separator_glyph: diamond
308
+ rear_differs: false
309
+ plates_issued: 2
310
+ region_encoding: none
311
+ sources:
312
+ - "https://web.archive.org/web/20181003140711/https://www.accesscanberra.act.gov.au/app/answers/detail/a_id/2125/~/act-numberplate-information # Access Canberra, archived 2018-10-03, fetched 2026-08-02: the 'Y' series is the standard issue and who does not get it; the blue-on-reflective-white colour rule; the rainbow variant's identity as a standard Y plate; replacement plates 'cannot be requested out of sequence'"
313
+ - "https://www.legislation.act.gov.au/DownloadFile/sl/2000-12/current/PDF/2000-12.PDF # Road Transport (Vehicle Registration) Regulation 2000 (ACT) s 49: two plates for a motor vehicle, at least one for a motorbike, motortrike or trailer — the plate COUNT is statutory even though the format is not"
314
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_the_Australian_Capital_Territory # secondary (CC BY-SA; facts extracted in our expression per the PRD-PLATES §4 Wikipedia rule, accessed 2026-08-02): the YLL 99L arrangement, its 1998 start on exhaustion of the previous arrangement, the slogan history and the block allocations. The 1998 date carries NO citation in the article"
315
+ notes: >-
316
+ ACT GENERAL ISSUE, SECOND-GENERATION Y SERIES. The SHAPE is safe and the
317
+ DATE is not, and the two are tagged separately on purpose. What the agency
318
+ actually confirms: that the Y series is the standard issue, who is excluded
319
+ from it, what colour it is, and that replacements come in sequence. What no
320
+ ACT government source obtained states: when the three-letters/two-numerals/
321
+ one-letter arrangement replaced the three-letters/three-numerals one. So
322
+ `period_evidence: secondary-wikipedia` and 1998 is the article's claim,
323
+ flagged, not asserted (PRD-PLATES §9: primary-source-or-marked). THE ID IS
324
+ DELIBERATELY UNDATED (`au-act-standard`, not `au-act-standard-1998`) for
325
+ the same reason us-fl-standard is: minting a dated id on an uncited
326
+ boundary builds a dated id on sand, and the id contract (PRD-QUALITY
327
+ I-5/I-6) then forbids retracting it. When an agency date lands, the dated
328
+ id is added and this becomes its former-id alias. RECORDED GAPS: the ACT
329
+ issues plates to "public, government, diplomatic or heavy" vehicles on
330
+ series the agency names but never describes — none is authored; and no
331
+ motorcycle or trailer grammar was found anywhere (s 49(2)(b) proves those
332
+ vehicles get at least one plate and says nothing about what is on it).
333
+
334
+ # =========================================================================
335
+ # ONE SERIES BACK — the first-generation Y series. This is the best-dated
336
+ # boundary in the file, because the AGENCY dates its start.
337
+ # =========================================================================
338
+ - id: au-act-standard-y-1968
339
+ class: standard
340
+ categories: [car, van, truck, bus]
341
+ period: { start: 1968, end: 1998 }
342
+ period_evidence: agency-stated-date-start-secondary-end
343
+ matching: strict
344
+ format:
345
+ pattern: "YLL 999"
346
+ regex: '\AY[A-Z]{2} ?\d{3}\z'
347
+ charset:
348
+ notes: >-
349
+ Y then two letters then three numerals. The opening combination is
350
+ agency-stated: "The new numberplates commenced at 'YAA-000'". Access
351
+ Canberra adds the ACT's own footnote to its own history, which is the
352
+ kind of detail no secondary source carries: the numeric plates the Y
353
+ series replaced were NOT all recalled — "public pressure led to a
354
+ backflip and the authorities allowed motorists to retain their
355
+ existing numbers as long as they converted them into blue on
356
+ reflective white, for a fee" (that sentence is the secondary article's;
357
+ the agency states only the YAA-000 start).
358
+ progression: "ascending from YAA-000; secondary sources report it reached YZZ-999 in early 1996 and then back-filled unused blocks (YKL onward) before ending at YLZ-999"
359
+ design:
360
+ plate: { length_mm: 372, unit: mm }
361
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
362
+ colour_note: >-
363
+ Agency-sourced, verbatim: "The first 'Y' series numberplates featured
364
+ blue lettering on a reflective white background." Secondary sources add
365
+ the claim that "ACT plates were the first of any region in Australia to
366
+ be reflective" — an interesting and entirely uncited claim, recorded as
367
+ folklore and NOT asserted. No hex for the blue, for the same reason as
368
+ the current series.
369
+ group_separator_glyph: diamond
370
+ region_encoding: none
371
+ sources:
372
+ - "https://web.archive.org/web/20181003140711/https://www.accesscanberra.act.gov.au/app/answers/detail/a_id/2125/~/act-numberplate-information # Access Canberra, archived 2018-10-03, fetched 2026-08-02, verbatim: '... until in August 1968, the first alpha-numeric \"Y\" series numberplates were issued. The new numberplates commenced at \"YAA-000\" in accordance with the agreement for a uniform Australia wide system. The first \"Y\" series numberplates featured blue lettering on a reflective white background.' — the START, the opening combination and the colours are all agency-stated"
373
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_the_Australian_Capital_Territory # secondary (accessed 2026-08-02): the 1998 END on exhaustion, the YZZ-999/YKL back-fill, the November 1979 slogan change at YMA-000, and the 1988 Bicentennial block YRS-000 to YSP-999. The END is the article's, uncited"
374
+ notes: >-
375
+ THE FIRST ALPHA-NUMERIC ACT SERIES, AND THE ONLY PERIOD BOUNDARY IN THIS
376
+ FILE WITH A GOVERNMENT DATE ON IT. `period_evidence:
377
+ agency-stated-date-start-secondary-end` is deliberately compound, and the
378
+ two halves are not equal: the START (August 1968, at YAA-000) is stated by
379
+ Access Canberra in its own words and is a real claim; the END (1998) is the
380
+ Wikipedia article's uncited assertion and is a flagged one. Recording a
381
+ single evidence tier for the pair would have hidden that asymmetry, which
382
+ is exactly what the period discipline exists to prevent — plates/es.yml
383
+ and plates/no.yml already carry compound tiers for the same reason.
384
+ NOTE ALSO A DATE DISAGREEMENT, recorded and not averaged (PRD-PLATES §5.3):
385
+ the agency says the first Y plates were issued in AUGUST 1968 commencing
386
+ at YAA-000; the secondary article says "From September 1968 the Yaa-nnn
387
+ series commenced (in blue on reflective white) at YAB. YAA was set aside
388
+ for recalls of numericals." Different month, different opening
389
+ combination. The AGENCY IS THE AUTHORITY (PRD-PLATES §5.3: majority is not
390
+ authority) and its August/YAA-000 reading is the one recorded; the
391
+ article's is preserved here so a verifier can adjudicate rather than
392
+ rediscover. The all-numeric ACT series that ran to 1968 (reported "from 1
393
+ to 99-935 ... in white on navy blue") is NOT authored: the agency says only
394
+ that a numeric series existed, and everything else about it is uncited.
395
+
396
+ # =========================================================================
397
+ # PERSONALISED — the one ACT series whose GRAMMAR is agency-stated.
398
+ # =========================================================================
399
+ - id: au-act-personalized
400
+ class: personalized
401
+ categories: [car, van, truck, motorcycle, trailer]
402
+ period: { start: 2018 } # IN-FORCE OBSERVATION, not a scheme start:
403
+ # the date of the agency snapshot read. The
404
+ # scheme is obviously older. See notes.
405
+ period_evidence: agency-page-in-force
406
+ matching: strict
407
+ format:
408
+ pattern: "LL 999"
409
+ regex: '\A[A-Z]{2} ?\d{3}\z'
410
+ charset:
411
+ notes: >-
412
+ AGENCY-STATED IN ONE SENTENCE, which makes this the best-sourced
413
+ format in the file. Access Canberra, verbatim: "Personalised
414
+ numberplates consist of two letters followed by three numbers. A
415
+ European style numberplate made as a personalised numberplate will
416
+ consist of the letter 'A' followed by two letters then three numbers."
417
+ Two letters, three numerals — that is the whole grammar, and it is why
418
+ this series is `strict` rather than the `recall-only` every other
419
+ vanity series in this wave carries: the ACT's personalised plate is
420
+ NOT an owner-chosen free string, it is a fixed shape from a
421
+ departmental pool.
422
+ refusal_rule: >-
423
+ Access Canberra, verbatim: "The RTA will refuse applications for a
424
+ numberplate where it considers that the content would cause offence to
425
+ a reasonable person." A stated content-refusal criterion is rare in
426
+ this dataset (Florida's was a recorded gap); it is recorded here even
427
+ though nothing encodes it.
428
+ variants:
429
+ - name: "European style"
430
+ format:
431
+ pattern: "ALL 999"
432
+ regex: '\AA[A-Z]{2} ?\d{3}\z'
433
+ note: >-
434
+ Agency-stated in the same sentence: the European style personalised
435
+ plate is "the letter 'A' followed by two letters then three numbers".
436
+ A separate SHAPE on a separate plate size ("European style numberplates
437
+ are longer and thinner than standard numberplates and can also come in
438
+ a European style slimline set"), sharing the scheme, the period and the
439
+ issuing rule — hence a variant on this series rather than a series of
440
+ its own under PRD-PLATES §2.3.
441
+ design:
442
+ plate: { length_mm: 372, unit: mm }
443
+ plate_variants_note: "standard (372 mm), medium (317 mm) and short (190 mm) lengths, plus slimline and European styles, all agency-listed with their fees; the individual designs are out of scope (PRD-PLATES §2.5)"
444
+ background: { finish: retroreflective }
445
+ colour_note: "the ten plastic-plate colour combinations Access Canberra lists are recorded in plate_stock.materials_quote; tin personalised plates follow the blue-on-white tin rule"
446
+ custom_slogan_note: "nonstandard plates may carry a custom slogan of up to 14 / 25 / 30 characters by plate length, and a customer-supplied logo of up to seven colours supplied as .eps, .tif or .dxf — agency-stated"
447
+ other_named_categories:
448
+ - "Name — 'a commonly known given name, surname or initials up to a maximum of seven characters'"
449
+ - "Business — 'available using the name or initials of the business. Proof of operation of the business must be provided'"
450
+ - "Numeric (one/two, three/four/five digit tiers, priced differently), unique, vehicle make, trailer numeric, Brumbies and Raiders club series (BR1-BR99 premium, BR100-BR200, YOH series) — all agency-listed by NAME and FEE, none by grammar"
451
+ region_encoding: none
452
+ sources:
453
+ - "https://web.archive.org/web/20181003140711/https://www.accesscanberra.act.gov.au/app/answers/detail/a_id/2125/~/act-numberplate-information # Access Canberra, archived 2018-10-03, fetched 2026-08-02: the personalised grammar and the European-style grammar verbatim; the offence-refusal rule; the name/business/numeric/club categories and their transfer fees; the storage regime (two months minimum, five years maximum); the custom-slogan character capacities and the logo file formats"
454
+ notes: >-
455
+ ACT PERSONALISED PLATES, AND THE PERIOD IS THE WEAK PART OF AN OTHERWISE
456
+ STRONG ENTRY. `start: 2018` is NOT a claim that the scheme began in 2018 —
457
+ it is the date of the archived agency snapshot that evidences the scheme in
458
+ force, hence `period_evidence: agency-page-in-force`, which is the weakest
459
+ honest reading available. The scheme is certainly much older (the fee table
460
+ read is "correct as at 1 August 2018" and describes a mature programme with
461
+ club series and a deceased-estate transfer rule), but no ACT source
462
+ obtained dates its start and inventing one would be the exact disease the
463
+ period discipline removes. A verifier should replace this with a real start
464
+ the moment a dated Access Canberra or ACT Government page lands.
465
+ WHY THIS SERIES IS `strict` WHEN EVERY OTHER AUSTRALIAN VANITY SERIES IN
466
+ THIS WAVE IS `recall-only`: the §2.7 test is one question — is the regex
467
+ wider than what the authority issues? Here it is not, because the authority
468
+ states the shape ("two letters followed by three numbers") and issues from
469
+ a pool inside it. The NAME and BUSINESS categories ARE free strings and are
470
+ deliberately NOT folded into this series' regex; they are listed in
471
+ other_named_categories without a grammar, which is honest, and authoring
472
+ them would need the free-string catch-all this series does not want.