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,282 @@
1
+ # plates/au-nsw.yml — New South Wales (PRD-PLATES gate L3, Australia).
2
+ #
3
+ # AUSTRALIA IS FEDERATED THE US WAY, NOT THE GERMAN WAY: there is no national
4
+ # plate format, no national design standard, and no Commonwealth registry for
5
+ # light vehicles. Each State and Territory registers vehicles under its own
6
+ # Act and its own regulation, and each allocates its own serials. So NSW gets
7
+ # its own file (us-fl exemplar), and every claim below is a NEW SOUTH WALES
8
+ # claim sourced to a New South Wales instrument or to Transport for NSW.
9
+ #
10
+ # THE STRUCTURAL FACT THAT SHAPES EVERY AUSTRALIAN FILE IN THIS WAVE, and it
11
+ # is the British pattern arriving by a different route: THE COMPOSITION OF AN
12
+ # AUSTRALIAN REGISTRATION NUMBER IS NOT IN ANY INSTRUMENT. The regulations
13
+ # empower the registering authority to "assign a distinguishing registration
14
+ # number" and stop there — the Tasmanian regulation says exactly that in terms
15
+ # (Vehicle and Traffic (Driver Licensing and Vehicle Registration) Regulations
16
+ # 2021 (Tas) reg 88(1), quoted in plates/au-tas.yml), and Queensland's says the
17
+ # chief executive "must ... assign a registration number to the vehicle"
18
+ # (quoted in plates/au-qld.yml). WHICH letters and digits, in WHICH order, is
19
+ # an administrative allocation published nowhere. NSW is the extreme case: the
20
+ # Road Transport (Vehicle Registration) Regulation 2017 (NSW) could not be read
21
+ # at all in this pass (see instrument.access_note), and Transport for NSW's own
22
+ # number-plate pages — all three were fetched in full on 2026-08-02 — describe
23
+ # ordering, reserving, replacing and displaying plates and NEVER state the
24
+ # general-issue combination. That is why the standard series below carries
25
+ # secondary evidence and says so, rather than pretending to a statutory source.
26
+ #
27
+ # WHAT IS PRIMARY HERE, and it is not nothing: the display rules (Transport for
28
+ # NSW, verbatim below, itself citing cl 25 of the 2017 Regulation) and the
29
+ # Classic Vehicle Scheme plate — the one NSW series in this file with an exact
30
+ # agency-dated start, exact dimensions and an agency-stated issuing rule, from
31
+ # the Transport for NSW fact sheet of June 2024.
32
+ #
33
+ # REGEX POLICY (identical to plates/gb.yml and plates/us-fl.yml): `format.regex`
34
+ # is the LINT-ROUND-TRIPPABLE regex written in PRINTED form (PRD-PLATES §2.6
35
+ # rule 2) — the gap between groups is spelled as an optional emitted SPACE
36
+ # because that is how the plate prints it and how `pattern` spells it. No NSW
37
+ # plate prints a hyphen; the hyphenated renderings common on enthusiast sites
38
+ # are typography, not the plate.
39
+ jurisdiction: au-nsw
40
+ authority:
41
+ name: Transport for NSW
42
+ url: "https://www.nsw.gov.au/driving-boating-and-transport/vehicle-registration/vehicle-number-plates"
43
+ binding: vehicle
44
+ binding_note: >-
45
+ Transport for NSW, verbatim (accessed 2026-08-02): "Number plates remain the
46
+ property of Transport for NSW. We have the authority to issue, decline to
47
+ issue, renew or withdraw number plates." And: "If your registration has been
48
+ cancelled for any reason, it is an offence to keep the number plates." The
49
+ RIGHT TO DISPLAY a combination is separable from the vehicle — a seller may
50
+ "reserve your plates and replace them with general number plates" for an
51
+ annual fee — so NSW is a two-layer system: the plate binds to the vehicle,
52
+ the combination binds to a person who pays to hold it.
53
+ instrument:
54
+ citation: "Road Transport (Vehicle Registration) Regulation 2017 (NSW), made under the Road Transport Act 2013 (NSW)"
55
+ cited_by: "Transport for NSW's own display page cites 'cl.25 of the Road Transport (Vehicle Registration) Regulation 2017' for auxiliary (bike-rack) plate visibility — the agency's own pin to the instrument"
56
+ access_note: >-
57
+ NOT READ IN THIS PASS, AND THE REASON IS RECORDED SO NOBODY REPEATS THE
58
+ HUNT: legislation.nsw.gov.au sits behind a Cloudflare managed challenge
59
+ that returns HTTP 403 to every non-browser client. Direct fetch, browser
60
+ header sets and the AustLII mirror (classic.austlii.edu.au, also 403) all
61
+ failed on 2026-08-02, and the Internet Archive holds no snapshot of the
62
+ instrument's view URL. Consequently NOT ONE WORD of the NSW regulation is
63
+ quoted in this file; every claim below comes from Transport for NSW pages,
64
+ which are primary authority publications in their own right (PRD-PLATES
65
+ §4), or is marked secondary. The verifier with a browser should read the
66
+ 2017 Regulation and re-audit this file first — it is the largest single
67
+ sourcing gap in the Australian wave.
68
+ licence: "NSW Government material on nsw.gov.au is published under Crown copyright with a stated copyright page; the fact claims extracted here are uncopyrightable facts (PRD-PLATES §4)"
69
+
70
+ # ---------------------------------------------------------------------------
71
+ # The national layer. Recorded once per Australian file because it is real,
72
+ # it is small, and it is the only thing in Australia that is NOT per-State.
73
+ # ---------------------------------------------------------------------------
74
+ national_schemes:
75
+ heavy_vehicle: >-
76
+ THE HEAVY VEHICLE NATIONAL LAW is the one genuinely national registration
77
+ layer, and it is a MECHANISM, not a series: heavy vehicles (over 4.5 t GVM)
78
+ are registered under the Heavy Vehicle National Law as applied in each
79
+ participating jurisdiction, and the plate they carry is a NATIONAL HEAVY
80
+ VEHICLE NUMBER PLATE issued BY THE STATE registrar on the national pattern.
81
+ Three State instruments name the object in those words and were read in
82
+ this wave: Transport Operations (Road Use Management—Vehicle Registration)
83
+ Regulation 2021 (Qld) s 117(2)(c); Vehicle and Traffic (Driver Licensing and
84
+ Vehicle Registration) Regulations 2021 (Tas) reg 88(6); Motor Vehicles
85
+ Regulations 1977 (NT) reg 10, headed "Ownership of national heavy vehicle
86
+ number plates". Transport for NSW likewise sends heavy-vehicle plate fees to
87
+ a "national heavy vehicle number plate" schedule. NO SERIES IS AUTHORED for
88
+ it in any file of this wave: the national heavy-vehicle serial grammar was
89
+ not obtained from the NHVR or from any State instrument (recorded gap, L4).
90
+ light_vehicle_standards: >-
91
+ The Australian Light Vehicle Standards Rules 2015 (national MODEL law
92
+ published by the Parliamentary Counsel's Committee, consolidated as at
93
+ 22 March 2019) are the nearest thing to a national plate standard, and they
94
+ reach only the LIGHTING, never the plate: rule 86(1), verbatim, "At least 1
95
+ number plate light must be fitted to the rear of a vehicle"; 86(2) "When on,
96
+ the number plate light or lights must illuminate a number plate on the rear
97
+ of the vehicle with white light, so the characters on the number plate can
98
+ be read at night 20 metres from the rear of the vehicle". The Rules state of
99
+ themselves: "These Rules are a national model law and are intended to
100
+ provide the basis for nationally consistent transport laws. These Rules do
101
+ not, by themselves, have any legal effect." Nothing in them prescribes plate
102
+ dimensions, colours or serial grammar.
103
+ firs_closed: >-
104
+ The Federal Interstate Registration Scheme — the one Commonwealth vehicle
105
+ registration scheme, which issued its own red-on-white plates — CLOSED on
106
+ 30 June 2018 and its vehicles moved to State registration. Recorded as a
107
+ dead scheme; no series is authored for it (the Commonwealth instrument, the
108
+ Interstate Road Transport Regulations 1986, was not read in this pass).
109
+ source: "https://www.pcc.gov.au/uniform/Australian%20Light%20Vehicle%20Standards%20Rules%202015%20-%2022%20March%202019.pdf # Australian Light Vehicle Standards Rules 2015 as at 22 March 2019, rule 86 quoted verbatim above and the model-law disclaimer from the title page (accessed 2026-08-02)"
110
+
111
+ # ---------------------------------------------------------------------------
112
+ # Display rules — Transport for NSW, quoted verbatim. The 20 m / 45 degree
113
+ # test is the AUSTRALIA-WIDE formulation: Queensland, Tasmania, the ACT and
114
+ # South Australia all state it in the same terms, from their own instruments.
115
+ # ---------------------------------------------------------------------------
116
+ display_rules:
117
+ plates_per_vehicle: "verbatim: 'For vehicles, 1 number plate must be fitted to the front of the vehicle and another to its rear. If different in size, the larger number plate must be fitted to its rear.' / 'For motorcycles or trailers, 1 number plate must be fitted to its rear.'"
118
+ visibility: "verbatim: 'The numbers on number plates must be clearly visible from any point that is up to 20 metres from the number plate, and within an arc of 45 degrees from the surface of the number plate above or to either side of the vehicle.'"
119
+ covers: "verbatim: 'Number plate covers must be clear, clean, untinted and flat over the entire surface, and have no reflective or other characteristics that would prevent the successful operation of traffic offence detection devices.'"
120
+ lighting: "verbatim: 'At least 1 number plate light must be fitted to the rear of vehicles. When on, number plate lights must illuminate number plates on the rear of vehicles with white light, so the numbers can be read at night 20 metres from the vehicle's rear.' — the Australian Light Vehicle Standards Rules 2015 rule 86 restated by the agency"
121
+ auxiliary_plates: "bike-rack (auxiliary) plates must be 'compliant with cl.25 of the Road Transport (Vehicle Registration) Regulation 2017'"
122
+ sources:
123
+ - "https://www.nsw.gov.au/driving-boating-and-transport/vehicle-registration/vehicle-number-plates/displaying-number-plates # Transport for NSW, read via the Internet Archive snapshot of 2026-01-24 (the live host 403s to non-browser clients): the front/rear rule, the motorcycle/trailer single-plate rule, the 20 m / 45 degree visibility test, the cover rule, the lighting rule and the cl.25 auxiliary-plate pin"
124
+
125
+ series:
126
+
127
+ # =========================================================================
128
+ # CURRENT GENERAL ISSUE.
129
+ # =========================================================================
130
+ - id: au-nsw-standard
131
+ class: standard
132
+ categories: [car, van, truck, bus, motorcycle, trailer]
133
+ period: { start: 2004 } # SECONDARY. Two independent secondary
134
+ # sources put the current serial style at
135
+ # 2004; no agency page dates it. See notes.
136
+ period_evidence: corroboration-only
137
+ matching: strict
138
+ format:
139
+ pattern: "LL 99 LL"
140
+ regex: '\A[A-Z]{2} ?\d{2} ?[A-Z]{2}\z'
141
+ evidence: secondary
142
+ charset:
143
+ notes: >-
144
+ SIX CHARACTERS, two letters / two numerals / two letters, printed as
145
+ three groups. NO NSW INSTRUMENT AND NO TRANSPORT FOR NSW PAGE STATES
146
+ THIS — all three agency number-plate pages were fetched in full on
147
+ 2026-08-02 and none gives the combination. Letter exclusions (whether
148
+ NSW skips I, O, Q, U as several Canadian provinces do) are UNKNOWN and
149
+ are a recorded gap: no charset restriction is claimed here, which is
150
+ why there is no `regex_strict`.
151
+ progression: "ascending within the two-letter leading block; the leading block in general issue at the time of writing is reported as 'D..', which is a VALUE inside this shape and not a different shape — no fixed literal is encoded"
152
+ design:
153
+ plate: { w: 372, h: 134, unit: mm }
154
+ plate_dimension_note: >-
155
+ 372 x 134 mm is the Australian passenger-car plate size, and in this
156
+ wave it is SOURCED — not from a national standard, which does not
157
+ exist, but from two State authorities independently publishing the same
158
+ millimetres for their own plates: WA's Department of Transport
159
+ ("Motor vehicle plate 372 mm x 134 mm") and the NT's Motor Vehicle
160
+ Registry ("372mm x 133mm"), with the ACT publishing 372 mm as its
161
+ standard plate LENGTH. The widely repeated "372 x 135 mm Australian
162
+ standard" is a rounding of these; the underlying figure is per-State.
163
+ NSW's own dimension for general issue was NOT found on any agency page
164
+ (recorded gap) — the value here is the cross-State figure and is
165
+ flagged as such.
166
+ colour_note: >-
167
+ Black characters on a yellow retroreflective ground. NO AGENCY SOURCE:
168
+ Transport for NSW publishes no colour specification. The colour words
169
+ are corroborated by an enthusiast reference describing a NSW "standard
170
+ black on yellow serial" plate; NO HEX IS RECORDED, because guessing the
171
+ yellow would be inventing a fact the state has never published.
172
+ rear_differs: false
173
+ region_encoding: none
174
+ sources:
175
+ - "https://www.nsw.gov.au/driving-boating-and-transport/vehicle-registration/vehicle-number-plates/order-reserve-or-replace-number-plates # Transport for NSW (Internet Archive snapshot 2025-12-05, accessed 2026-08-02): plates remain TfNSW property; new plates issued on first registration; the reserve/exchange machinery. NEGATIVE FINDING: the page never states the general-issue combination"
176
+ - "http://www.plateshack.com/y2k/New_South_Wales/nswy2k.html # enthusiast reference (PRD-PLATES §4 corroboration class), read via the Internet Archive, accessed 2026-08-02: a photo-dated 2010 NSW plate captioned 'serial style in use since 2004 and still in current use', and a NSW plate described as a remake of the 'standard black on yellow serial'. Corroborates the 2004 start and the colour words INDEPENDENTLY of the locator"
177
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_New_South_Wales # LOCATOR ONLY (PRD-PLATES §4), accessed 2026-08-02: the two-letter/two-numeral/two-letter arrangement and the 2004 changeover. Used as a finding aid; its citations were chased and none reaches a NSW instrument"
178
+ notes: >-
179
+ NEW SOUTH WALES GENERAL ISSUE. THE FORMAT AND THE PERIOD ARE BOTH
180
+ SECONDARY, AND THIS SERIES SAYS SO RATHER THAN DRESSING THEM UP. What was
181
+ actually attempted, in order: (1) the Road Transport (Vehicle
182
+ Registration) Regulation 2017 — unreadable, Cloudflare, see
183
+ instrument.access_note; (2) all three Transport for NSW number-plate pages
184
+ — fetched in full, none states a combination; (3) myPlates.com.au, the
185
+ agency's own licensed personalised-plate operator — a JavaScript
186
+ application with no server-rendered text; (4) the NSW Government's
187
+ Classic Vehicle Scheme fact sheet — states dimensions and a start date but
188
+ not the general-issue grammar. So `period_evidence: corroboration-only`:
189
+ 2004 rests on an enthusiast reference's photo-dated caption AND the
190
+ locator agreeing, which is two weak sources agreeing rather than one
191
+ source verified. THE ID IS DELIBERATELY UNDATED (`au-nsw-standard`, not
192
+ `au-nsw-standard-2004`) for exactly the reason us-fl-standard is: minting
193
+ a dated id on a folklore boundary builds a dated id on sand, and the id
194
+ contract (PRD-QUALITY I-5/I-6) then forbids taking it back. When an
195
+ agency or instrument date lands, the dated id is added and this one
196
+ becomes its former-id alias.
197
+
198
+ # =========================================================================
199
+ # ONE SERIES BACK.
200
+ # =========================================================================
201
+ - id: au-nsw-standard-3l3n
202
+ class: standard
203
+ categories: [car, van, truck, bus]
204
+ period: { start: 1951, end: 2004 }
205
+ period_evidence: secondary-locator-unverified
206
+ matching: strict
207
+ format:
208
+ pattern: "LLL 999"
209
+ regex: '\A[A-Z]{3} ?\d{3}\z'
210
+ evidence: secondary
211
+ charset: { notes: "three letters then three numerals — the arrangement every Australian State ran for most of the second half of the twentieth century, under the 1948 letter allocation described in plates/au-act.yml. NSW's own block of that allocation, and any letter exclusions, are not published" }
212
+ design:
213
+ colour_note: "black on yellow for the later part of the run; the earlier colour history of NSW plates was not researched (out of scope at this gate — PRD-PLATES §2.5)"
214
+ region_encoding: none
215
+ sources:
216
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_New_South_Wales # LOCATOR ONLY, accessed 2026-08-02: the three-letter/three-numeral general issue and its 1951-2004 window. BOTH boundaries are the locator's, uncited in its own text"
217
+ - "http://www.plateshack.com/y2k/New_South_Wales/nswy2k.html # enthusiast reference, accessed 2026-08-02: corroborates the 2004 END only, indirectly, by dating the SUCCESSOR style's first use to 2004"
218
+ notes: >-
219
+ THE PREVIOUS NEW SOUTH WALES GENERAL ISSUE, AND EVERY DIGIT OF ITS PERIOD
220
+ IS THE LOCATOR'S. The 1951 start is uncited in the locator's own article;
221
+ the 2004 end is corroborated only in the weak sense that an independent
222
+ enthusiast reference dates the successor style to 2004. It is authored
223
+ anyway because the ARRANGEMENT is not in dispute anywhere and a consumer
224
+ parsing a 1990s NSW plate needs a shape to match; but nothing here is
225
+ asserted as sourced. A verifier who reaches the 2017 Regulation should
226
+ NOT expect it to help: Australian registration regulations do not carry
227
+ serial grammars, so the fix for this series is an agency history page or
228
+ a Government Gazette notice, not the instrument.
229
+
230
+ # =========================================================================
231
+ # CLASSIC VEHICLE SCHEME — the one NSW series in this file with an exact
232
+ # agency-dated start, exact dimensions and an agency-stated issuing rule.
233
+ # =========================================================================
234
+ - id: au-nsw-classic
235
+ class: historic
236
+ categories: [car, motorcycle]
237
+ period: { start: 2024 } # "From 1 July 2024, a new number plate will
238
+ # be available for vehicles in the Classic
239
+ # Vehicle Scheme (CVS)" — the agency, dated.
240
+ period_evidence: agency-stated-date
241
+ matching: recall-only
242
+ format:
243
+ pattern: "99999"
244
+ regex: '\A[A-Z0-9]{1,7}( ?[A-Z0-9]{1,7})?\z'
245
+ evidence: none
246
+ charset:
247
+ notes: >-
248
+ THE ARRANGEMENT IS NOT PUBLISHED AND IS NOT GUESSED. All the agency
249
+ says about the serial is HOW it is allocated, verbatim: "the new CVS
250
+ plates will be issued in numerical order 'off the shelf, in sequential
251
+ order', with no personalised options available." That is an allocation
252
+ rule, not a grammar — it does not even settle whether the serial is
253
+ all-numeric. So `matching: recall-only` and the regex is an explicit
254
+ catch-all over the serial alphabet: a match is a shape hit and nothing
255
+ more (PRD-PLATES §2.7). Narrowing it when the arrangement lands is a
256
+ one-line change; guessing it now would be a fabricated fact.
257
+ design:
258
+ plate: { w: 317, h: 134, unit: mm }
259
+ plate_variants:
260
+ - { for: motorcycle, w: 186, h: 100, unit: mm }
261
+ plate_dimension_note: "verbatim from the fact sheet's figure captions: 'Car plate dimensions 317mm x 134mm' and 'Motorcycle plate dimensions 186mm x 100mm'. The agency's stated reason: 'The new number plate size and design better fits classic vehicles, without needing alterations to the plate or the mounting.'"
262
+ legend: "Classic"
263
+ legend_rule: "verbatim: the plate 'includes the word \"Classic\" to enhance the authenticity of classic vehicles and to help differentiate classic vehicles from other vehicles'"
264
+ eligibility: "vehicles in the NSW Classic Vehicle Scheme; issued automatically to vehicles joining the scheme, and purchasable by existing scheme vehicles at registration renewal. Verbatim: 'No, only vehicles in the CVS can be issued with the new CVS plate' — it is NOT available to the separate Historic Vehicle Scheme"
265
+ supersedes: "the Conditional number plate previously issued to CVS vehicles, which 'will continue to be produced and used for other vehicles in the conditional registration scheme, such as tractors' — so the predecessor plate is NOT dead, it merely lost this class of vehicle"
266
+ fee: "$55 from 1 July 2024, which the agency states 'is the same price as all General Issue number plates'"
267
+ region_encoding: none
268
+ sources:
269
+ - "https://www.nsw.gov.au/sites/default/files/noindex/2024-06/cvs-number-plate-fact-sheet.pdf # Transport for NSW fact sheet 'Classic Registration Number Plate', June 2024, 2 pp (accessed 2026-08-02): the 1 July 2024 start, both plate dimensions, the 'Classic' legend and its stated purpose, the sequential off-the-shelf issuing rule, the $55 fee, the CVS-only eligibility and the fate of the Conditional plate"
270
+ notes: >-
271
+ THE NSW CLASSIC VEHICLE SCHEME PLATE, AND THE ONLY SERIES IN THIS FILE
272
+ WITH A REAL DATE. `period_evidence: agency-stated-date` is earned: the
273
+ agency's own dated fact sheet opens "From 1 July 2024, a new number plate
274
+ will be available for vehicles in the Classic Vehicle Scheme (CVS)". Note
275
+ the modelling wrinkle worth carrying forward: NSW runs TWO historic
276
+ regimes — the Classic Vehicle Scheme (this plate) and the Historic Vehicle
277
+ Scheme (a different, older plate) — and the fact sheet says in terms that
278
+ this plate may not be used on HVS vehicles. The HVS plate is NOT authored:
279
+ no fact sheet for it was obtained (recorded gap). `matching: recall-only`
280
+ here is not laziness, it is the §2.7 test applied honestly — the regex is
281
+ deliberately wider than whatever NSW issues, because what NSW issues is
282
+ unpublished.