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.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +164 -0
- data/CHANGELOG.md +321 -0
- data/README.md +88 -15
- data/data/PROVENANCE-vehicles.md +12 -0
- data/data/plates/PROVENANCE.md +10 -0
- data/data/plates/_decode/at-districts.yml +287 -0
- data/data/plates/_decode/ch-cantons.yml +110 -0
- data/data/plates/_decode/cn-issuing-offices.yml +463 -0
- data/data/plates/_decode/cn-provinces.yml +614 -0
- data/data/plates/_decode/cz-kraj.yml +159 -0
- data/data/plates/_decode/dk-serial-blocks.yml +327 -0
- data/data/plates/_decode/es-provinces.yml +116 -0
- data/data/plates/_decode/fr-departements.yml +191 -0
- data/data/plates/_decode/gb-age-identifiers.yml +170 -0
- data/data/plates/_decode/gb-memory-tags.yml +202 -0
- data/data/plates/_decode/gr-prefectures.yml +1408 -0
- data/data/plates/_decode/hr-cities.yml +315 -0
- data/data/plates/_decode/ie-counties.yml +227 -0
- data/data/plates/_decode/in-state-codes.yml +169 -0
- data/data/plates/_decode/is-districts-1938.yml +116 -0
- data/data/plates/_decode/it-provinces.yml +348 -0
- data/data/plates/_decode/jp-office-marks.yml +960 -0
- data/data/plates/_decode/jp-use-marks.yml +205 -0
- data/data/plates/_decode/kr-authority-marks.yml +146 -0
- data/data/plates/_decode/kr-use-syllables.yml +194 -0
- data/data/plates/_decode/lu-series-order.yml +638 -0
- data/data/plates/_decode/mx-entity-series.yml +380 -0
- data/data/plates/_decode/my-index-marks.yml +271 -0
- data/data/plates/_decode/no-counties-1913.yml +148 -0
- data/data/plates/_decode/no-districts.yml +901 -0
- data/data/plates/_decode/pl-powiats.yml +567 -0
- data/data/plates/_decode/pt-trailer-services.yml +96 -0
- data/data/plates/_decode/ro-counties.yml +213 -0
- data/data/plates/_decode/se-diplomatic.yml +220 -0
- data/data/plates/_decode/si-regions.yml +123 -0
- data/data/plates/_decode/sk-districts.yml +314 -0
- data/data/plates/_decode/th-registration-elements.yml +208 -0
- data/data/plates/_decode/ua-regions.yml +393 -0
- data/data/plates/_decode/za-licence-marks.yml +215 -0
- data/data/plates/_meta/classes.yml +26 -0
- data/data/plates/_meta/separators.yml +102 -0
- data/data/plates/ad.yml +961 -0
- data/data/plates/ar.yml +762 -0
- data/data/plates/at.yml +1424 -0
- data/data/plates/au-act.yml +472 -0
- data/data/plates/au-nsw.yml +282 -0
- data/data/plates/au-nt.yml +431 -0
- data/data/plates/au-qld.yml +272 -0
- data/data/plates/au-sa.yml +248 -0
- data/data/plates/au-tas.yml +302 -0
- data/data/plates/au-vic.yml +215 -0
- data/data/plates/au-wa.yml +309 -0
- data/data/plates/be.yml +1840 -0
- data/data/plates/br.yml +1152 -0
- data/data/plates/ca-ab.yml +430 -0
- data/data/plates/ca-bc.yml +697 -0
- data/data/plates/ca-mb.yml +499 -0
- data/data/plates/ca-nb.yml +537 -0
- data/data/plates/ca-nl.yml +743 -0
- data/data/plates/ca-ns.yml +808 -0
- data/data/plates/ca-nt.yml +610 -0
- data/data/plates/ca-nu.yml +280 -0
- data/data/plates/ca-on.yml +881 -0
- data/data/plates/ca-pe.yml +592 -0
- data/data/plates/ca-qc.yml +1036 -0
- data/data/plates/ca-sk.yml +256 -0
- data/data/plates/ca-yt.yml +656 -0
- data/data/plates/ch.yml +1273 -0
- data/data/plates/cn.yml +1431 -0
- data/data/plates/cy.yml +688 -0
- data/data/plates/cz.yml +1179 -0
- data/data/plates/de.yml +1107 -0
- data/data/plates/dk.yml +1647 -0
- data/data/plates/ee.yml +1275 -0
- data/data/plates/es.yml +888 -0
- data/data/plates/fi.yml +1271 -0
- data/data/plates/fr.yml +1265 -0
- data/data/plates/gb.yml +1188 -0
- data/data/plates/gr.yml +721 -0
- data/data/plates/hr.yml +860 -0
- data/data/plates/hu.yml +959 -0
- data/data/plates/ie.yml +775 -0
- data/data/plates/in.yml +1172 -0
- data/data/plates/is.yml +667 -0
- data/data/plates/it.yml +1317 -0
- data/data/plates/jp.yml +3650 -0
- data/data/plates/kr.yml +1375 -0
- data/data/plates/li.yml +1010 -0
- data/data/plates/lt.yml +879 -0
- data/data/plates/lu.yml +842 -0
- data/data/plates/lv.yml +924 -0
- data/data/plates/mc.yml +1024 -0
- data/data/plates/mt.yml +854 -0
- data/data/plates/mx.yml +1372 -0
- data/data/plates/my.yml +685 -0
- data/data/plates/nl.yml +1016 -0
- data/data/plates/no.yml +1018 -0
- data/data/plates/nz.yml +1699 -0
- data/data/plates/pl.yml +1296 -0
- data/data/plates/pt.yml +847 -0
- data/data/plates/ro.yml +785 -0
- data/data/plates/se.yml +1091 -0
- data/data/plates/si.yml +1105 -0
- data/data/plates/sk.yml +1439 -0
- data/data/plates/sm.yml +1119 -0
- data/data/plates/th.yml +1150 -0
- data/data/plates/ua.yml +1672 -0
- data/data/plates/us-ak.yml +763 -0
- data/data/plates/us-al.yml +457 -0
- data/data/plates/us-ar.yml +427 -0
- data/data/plates/us-as.yml +454 -0
- data/data/plates/us-az.yml +430 -0
- data/data/plates/us-ca.yml +892 -0
- data/data/plates/us-co.yml +452 -0
- data/data/plates/us-ct.yml +427 -0
- data/data/plates/us-dc.yml +614 -0
- data/data/plates/us-de.yml +551 -0
- data/data/plates/us-fl.yml +741 -0
- data/data/plates/us-ga.yml +644 -0
- data/data/plates/us-gu.yml +658 -0
- data/data/plates/us-hi.yml +585 -0
- data/data/plates/us-ia.yml +438 -0
- data/data/plates/us-id.yml +531 -0
- data/data/plates/us-il.yml +516 -0
- data/data/plates/us-in.yml +324 -0
- data/data/plates/us-ks.yml +351 -0
- data/data/plates/us-ky.yml +770 -0
- data/data/plates/us-la.yml +568 -0
- data/data/plates/us-ma.yml +379 -0
- data/data/plates/us-md.yml +536 -0
- data/data/plates/us-me.yml +445 -0
- data/data/plates/us-mi.yml +408 -0
- data/data/plates/us-mn.yml +411 -0
- data/data/plates/us-mo.yml +356 -0
- data/data/plates/us-mp.yml +402 -0
- data/data/plates/us-ms.yml +432 -0
- data/data/plates/us-mt.yml +619 -0
- data/data/plates/us-nc.yml +602 -0
- data/data/plates/us-nd.yml +419 -0
- data/data/plates/us-ne.yml +483 -0
- data/data/plates/us-nh.yml +394 -0
- data/data/plates/us-nj.yml +547 -0
- data/data/plates/us-nm.yml +574 -0
- data/data/plates/us-nv.yml +655 -0
- data/data/plates/us-ny.yml +592 -0
- data/data/plates/us-oh.yml +404 -0
- data/data/plates/us-ok.yml +513 -0
- data/data/plates/us-or.yml +392 -0
- data/data/plates/us-pa.yml +506 -0
- data/data/plates/us-pr.yml +507 -0
- data/data/plates/us-ri.yml +445 -0
- data/data/plates/us-sc.yml +605 -0
- data/data/plates/us-sd.yml +428 -0
- data/data/plates/us-tn.yml +471 -0
- data/data/plates/us-tx.yml +535 -0
- data/data/plates/us-ut.yml +384 -0
- data/data/plates/us-va.yml +567 -0
- data/data/plates/us-vi.yml +489 -0
- data/data/plates/us-vt.yml +458 -0
- data/data/plates/us-wa.yml +484 -0
- data/data/plates/us-wi.yml +509 -0
- data/data/plates/us-wv.yml +446 -0
- data/data/plates/us-wy.yml +523 -0
- data/data/plates/va.yml +604 -0
- data/data/plates/za.yml +1141 -0
- data/data/vehicles.json +160653 -105090
- data/lib/vehicles/configuration.rb +18 -2
- data/lib/vehicles/dataset.rb +73 -18
- data/lib/vehicles/fuzzy.rb +115 -0
- data/lib/vehicles/http.rb +48 -0
- data/lib/vehicles/make.rb +36 -6
- data/lib/vehicles/mcp_server.rb +5 -5
- data/lib/vehicles/model.rb +42 -6
- data/lib/vehicles/plates/jurisdiction.rb +32 -0
- data/lib/vehicles/plates/series.rb +291 -0
- data/lib/vehicles/plates/template_fill.rb +188 -0
- data/lib/vehicles/plates/templates.rb +162 -0
- data/lib/vehicles/plates.rb +122 -0
- data/lib/vehicles/providers/hosted_provider.rb +49 -58
- data/lib/vehicles/providers/local_provider.rb +4 -3
- data/lib/vehicles/validators/vehicle_make_validator.rb +3 -1
- data/lib/vehicles/validators/vehicle_model_validator.rb +1 -1
- data/lib/vehicles/version.rb +1 -1
- data/lib/vehicles.rb +53 -16
- data/rakelib/data_refresh.rake +109 -0
- data/rakelib/plates_refresh.rake +29 -0
- data/sig/vehicles.rbs +18 -0
- metadata +174 -2
|
@@ -0,0 +1,697 @@
|
|
|
1
|
+
# plates/ca-bc.yml — British Columbia (PRD-PLATES gate L3, Canada west).
|
|
2
|
+
#
|
|
3
|
+
# CANADA IS FEDERATED THE WAY THE UNITED STATES IS, AND THIS FILE IS THE
|
|
4
|
+
# per-subdivision shape the schema already carries (`us-fl.yml` is its
|
|
5
|
+
# reference). There is no federal Canadian plate: the Constitution Act 1867
|
|
6
|
+
# s. 92(13) property-and-civil-rights head puts vehicle registration in the
|
|
7
|
+
# provinces and the territorial statutes replicate it, so `ca.yml` would have
|
|
8
|
+
# nothing true to say about a format. Jurisdiction code is the ISO 3166-2:CA
|
|
9
|
+
# suffix, lowercased, matching the `us-<state>` convention already on disk.
|
|
10
|
+
#
|
|
11
|
+
# ── FIVE STRUCTURAL FACTS THAT SHAPE THIS FILE ─────────────────────────────
|
|
12
|
+
#
|
|
13
|
+
# 1. BRITISH COLUMBIA DELEGATES THE ENTIRE PLATE DESIGN TO A CROWN INSURER,
|
|
14
|
+
# IN ONE SENTENCE OF STATUTE, AND WRITES NOTHING ELSE DOWN.
|
|
15
|
+
# Motor Vehicle Act, R.S.B.C. 1996, c. 318, s. 12(1), verbatim:
|
|
16
|
+
# "Each number plate must (a) be marked with the licence number of the
|
|
17
|
+
# motor vehicle or trailer for which it is issued, and (b) be of a
|
|
18
|
+
# material and design determined by the Insurance Corporation of
|
|
19
|
+
# British Columbia."
|
|
20
|
+
# That is the whole design law of British Columbia. No size, no colour, no
|
|
21
|
+
# character height, no serial grammar — the DELEGATE decides, and the
|
|
22
|
+
# delegate is an insurance corporation, not a ministry. This is the
|
|
23
|
+
# Washington State pattern (RCW 46.16A.200(1) hands design to the director)
|
|
24
|
+
# arriving in Canada, and it sets the evidence ceiling for the whole file:
|
|
25
|
+
# every format claim here comes from ICBC's OWN PUBLICATION, not from law.
|
|
26
|
+
#
|
|
27
|
+
# 2. THE PUBLICATION EXISTS, IT IS DATED, AND IT IS THE FIND OF THIS PASS.
|
|
28
|
+
# ICBC "Vehicle licensing & insurance bulletin", bulletin 33, 9 June 2025,
|
|
29
|
+
# "New licence plate number configurations", is a four-page law-enforcement
|
|
30
|
+
# bulletin that TABULATES the current and incoming character pattern of
|
|
31
|
+
# eight BC plate types in ICBC's own notation (`#` = a number 0-9,
|
|
32
|
+
# `@` = any letter other than I, O or Q). It is the closest thing British
|
|
33
|
+
# Columbia has to a statutory format annex, it is primary (the delegate's
|
|
34
|
+
# own act under s. 12(1)(b)), and every `format` block below that carries
|
|
35
|
+
# `evidence: agency-bulletin` is anchored on one of its rows. Verbatim, on
|
|
36
|
+
# the alphabet: "The new licence plate patterns may include the letters
|
|
37
|
+
# 'U', 'Y' and 'Z', which were not previously used. The letters 'I', 'O'
|
|
38
|
+
# and 'Q' remain excluded from use because they present identification
|
|
39
|
+
# issues." And on length: "All BC licence plate types consist of no more
|
|
40
|
+
# than six characters." That sentence is the outer bound in every
|
|
41
|
+
# `regex_statutory` in this file.
|
|
42
|
+
#
|
|
43
|
+
# 3. NO SIZE IS PRESCRIBED ANYWHERE, SO NO SERIES HERE CARRIES ONE.
|
|
44
|
+
# Division 3 of the Motor Vehicle Act Regulations (B.C. Reg. 26/58) —
|
|
45
|
+
# "Display and Use of Number Plates", ss. 3.01 to 3.15 — was read in full.
|
|
46
|
+
# It legislates ATTACHMENT (3.011), ORIENTATION (3.02, 3.021), LEGIBILITY
|
|
47
|
+
# (3.03), and then twelve sections of transfer/remission/disposal
|
|
48
|
+
# administration. It prescribes no dimension, no colour and no character
|
|
49
|
+
# metric. `design.plate` is therefore ABSENT from every series in this file
|
|
50
|
+
# and its absence is a sourced finding, exactly as in plates/gb.yml. The
|
|
51
|
+
# "12 x 6 inch North American plate" is a real convention and an UNSOURCED
|
|
52
|
+
# one here; it is recorded as a note, never as a dimension.
|
|
53
|
+
#
|
|
54
|
+
# 4. THE PLATE IS ICBC'S PROPERTY, NOT THE OWNER'S, AND THE BINDING IS TO THE
|
|
55
|
+
# VEHICLE VIA THE LICENCE. s. 12(6), verbatim: "Number plates and
|
|
56
|
+
# validation decals issued under this section are the property of the
|
|
57
|
+
# Insurance Corporation of British Columbia whether they were issued
|
|
58
|
+
# before, on or after the date this section comes into force." Reg. 3.031
|
|
59
|
+
# then lets a registered owner move plates between their OWN vehicles on
|
|
60
|
+
# payment, and reg. 3.05 forces removal on transfer of title — so a BC
|
|
61
|
+
# plate follows the OWNER's registration, not the car. `binding: vehicle`
|
|
62
|
+
# is retained because the plate is issued against a vehicle licence, with
|
|
63
|
+
# the transferability recorded in `binding_note`.
|
|
64
|
+
#
|
|
65
|
+
# 5. THE SEPARATOR QUESTION IS OPEN AND IS SAID SO, NOT GUESSED.
|
|
66
|
+
# ICBC's bulletin writes every pattern SOLID (`@###@@`, example `A123BC`).
|
|
67
|
+
# A physical BC passenger plate prints a visible gap between character
|
|
68
|
+
# groups, and secondary sources render the serial hyphenated (`A12-3BC`).
|
|
69
|
+
# ICBC states no separator glyph and no gap POSITION. Under PRD-PLATES
|
|
70
|
+
# § 2.6 the dataset ships the printed form; where the authority itself
|
|
71
|
+
# prints the form solid and states nothing else, the solid form is what is
|
|
72
|
+
# shipped, and the gap is recorded as an open question rather than placed
|
|
73
|
+
# at a guessed offset. A § 2.6-forgiving consumer canonicalises both forms
|
|
74
|
+
# to the same serial, so nothing is lost at match time — only the ability
|
|
75
|
+
# to SAY where the gap falls, which no primary establishes.
|
|
76
|
+
#
|
|
77
|
+
# REGEX POLICY (identical to plates/gb.yml, plates/de.yml, plates/us-fl.yml):
|
|
78
|
+
# `format.regex` is the lint-round-trippable regex — the lint generates
|
|
79
|
+
# serials from `format.pattern` (9 -> any digit, L -> any A-Z) and requires
|
|
80
|
+
# the regex to accept all of them, so `regex` can never carry the I/O/Q
|
|
81
|
+
# exclusion. `format.regex_strict` carries ICBC's own alphabet.
|
|
82
|
+
# `format.regex_statutory` carries the six-character bound the bulletin states
|
|
83
|
+
# for every BC plate type.
|
|
84
|
+
jurisdiction: ca-bc
|
|
85
|
+
authority:
|
|
86
|
+
name: Insurance Corporation of British Columbia (ICBC), as delegate of the Province under the Motor Vehicle Act
|
|
87
|
+
url: "https://www.icbc.com/vehicle-registration/licence-plates"
|
|
88
|
+
binding: vehicle
|
|
89
|
+
binding_note: >-
|
|
90
|
+
The plate is issued against a vehicle LICENCE and is ICBC's property
|
|
91
|
+
throughout (MVA s. 12(6)). It is not permanently married to the vehicle: reg.
|
|
92
|
+
3.031(1) lets a registered owner or lessee move plates from one of their own
|
|
93
|
+
vehicles to another on compliance with licensing and payment, and reg. 3.05
|
|
94
|
+
forces the transferor to REMOVE the plates before giving up possession on a
|
|
95
|
+
sale. So on a sale the plate stays with the seller — the opposite of the
|
|
96
|
+
British rule and of most US states — while remaining, in law, ICBC's.
|
|
97
|
+
instrument:
|
|
98
|
+
statute:
|
|
99
|
+
citation: "Motor Vehicle Act, R.S.B.C. 1996, c. 318, s. 12 (Number plates); s. 3 (registration, licence and insurance); s. 13 (offences)"
|
|
100
|
+
source: "https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/96318_01 # s. 12(1)(a)-(b), (2)-(6) read verbatim 2026-08-02"
|
|
101
|
+
regulation:
|
|
102
|
+
citation: "Motor Vehicle Act Regulations, B.C. Reg. 26/58 (O.C. 1004/58), Division 3 (Display and Use of Number Plates), Division 22 (Antique Motor Vehicles), Division 22A (Collector Motor Vehicles), Division 34 (Personalized Number Plates)"
|
|
103
|
+
consolidation: "This consolidation is current to July 28, 2026. Last amended April 20, 2026 by B.C. Reg. 59/2026."
|
|
104
|
+
source: "https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/26_58_01 # Division 3 ss. 3.01-3.15 read in full 2026-08-02"
|
|
105
|
+
source_div22: "https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/26_58_06 # Divisions 22 and 22A"
|
|
106
|
+
source_div34: "https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/26_58_10 # Division 34"
|
|
107
|
+
agency_bulletin:
|
|
108
|
+
citation: "ICBC, Vehicle licensing & insurance bulletin 33, 9 June 2025 — 'New licence plate number configurations'"
|
|
109
|
+
issued: "2025-06-09"
|
|
110
|
+
author: "Christopher Dicdiquin, Manager, Vehicle Registration Policy and Programs, ICBC"
|
|
111
|
+
self_declared_authority: >-
|
|
112
|
+
The bulletin's own Reference block names exactly four authorities:
|
|
113
|
+
"Motor Vehicle Act s. 3(7) / s. 12 / s. 13", "Motor Vehicle Act
|
|
114
|
+
Regulations Div. 3", "Vehicle licensing and insurance bulletins", and
|
|
115
|
+
"License Plate Standard, ed. 3 (AAMVA)". ICBC therefore cites the SAME
|
|
116
|
+
AAMVA Edition 3 the US files cite — a voluntary standard with no
|
|
117
|
+
enforcement power, adopted here by a Canadian Crown corporation.
|
|
118
|
+
source: "https://partners.icbc.com/assets/5GMseymkqs8E4Otb8osoGQ/bulletin-33-new-licence-plate-configurations.pdf # pp. 1-3: alphabet, six-character rule, the eight-row current/new pattern table, the Reference block"
|
|
119
|
+
licence: "bclaws.gov.bc.ca content is Copyright (c) King's Printer, Victoria, British Columbia, Canada, published under the King's Printer licence; the statute and regulation are edicts of government. The ICBC bulletin is an ICBC publication, served without click-through, and is cited (facts extracted) rather than reproduced."
|
|
120
|
+
|
|
121
|
+
# ---------------------------------------------------------------------------
|
|
122
|
+
# artwork_risk — PRD-PLATES § 4 requires this per federated subdivision.
|
|
123
|
+
# ---------------------------------------------------------------------------
|
|
124
|
+
artwork_risk:
|
|
125
|
+
posture: unresearched-crown-copyright-presumed
|
|
126
|
+
basis: >-
|
|
127
|
+
Canada has no Feist and no state-works doctrine: Crown copyright subsists
|
|
128
|
+
under s. 12 of the Copyright Act (R.S.C. 1985, c. C-42) in works "prepared
|
|
129
|
+
or published by or under the direction or control of His Majesty or any
|
|
130
|
+
government department". British Columbia's own bclaws pages carry
|
|
131
|
+
"Copyright (c) King's Printer, Victoria, British Columbia, Canada". No BC
|
|
132
|
+
equivalent of {{PD-FLGov}} exists on Commons. Nothing was found either
|
|
133
|
+
asserting or disclaiming copyright in the PLATE DESIGN specifically, so the
|
|
134
|
+
posture is recorded as UNRESEARCHED and the § 3 placeholder default governs.
|
|
135
|
+
emblem_rule: >-
|
|
136
|
+
PRD-PLATES § 3 placeholder rule applies to the provincial flag device on
|
|
137
|
+
the standard base and to all three BC Parks artworks (Kermode bear, Purcell
|
|
138
|
+
Mountains, Porteau Cove), which are commissioned photographic/illustrative
|
|
139
|
+
works, not statutory drawings. Render emblem slots as
|
|
140
|
+
`{present: true, rendered: placeholder}`.
|
|
141
|
+
contrast_note: >-
|
|
142
|
+
The neighbouring territories are the instructive contrast and are NOT
|
|
143
|
+
guesswork: the Northwest Territories holds a REGISTERED CANADIAN TRADE-MARK
|
|
144
|
+
over its polar-bear plate (TMA558214) and licensed it to Nunavut. See
|
|
145
|
+
plates/ca-nt.yml. No comparable BC registration was searched for; that is a
|
|
146
|
+
named gap, not a clearance.
|
|
147
|
+
sources:
|
|
148
|
+
- "https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/96318_01 # King's Printer copyright notice on the served text"
|
|
149
|
+
|
|
150
|
+
# ---------------------------------------------------------------------------
|
|
151
|
+
# Display rules — the part of BC law that IS specific.
|
|
152
|
+
# ---------------------------------------------------------------------------
|
|
153
|
+
display_rules:
|
|
154
|
+
attachment: >-
|
|
155
|
+
Reg. 3.011, verbatim: "Number plates issued for a vehicle under the
|
|
156
|
+
Commercial Transport Act or Motor Vehicle Act must be attached (a) one plate
|
|
157
|
+
to the front and one plate to the rear of the vehicle, if 2 number plates
|
|
158
|
+
are issued for a vehicle, and (b) to the rear of the vehicle, if a single
|
|
159
|
+
number plate is issued for a vehicle." Note the shape of the rule: BC does
|
|
160
|
+
not legislate HOW MANY plates a class gets — it legislates where they go
|
|
161
|
+
once ICBC has decided. The two-plate passenger convention is ICBC's, not
|
|
162
|
+
the regulation's.
|
|
163
|
+
orientation: >-
|
|
164
|
+
Reg. 3.02: "A number plate shall at all times be securely fastened in a
|
|
165
|
+
horizontal position to the vehicle for which it is issued." Reg. 3.021
|
|
166
|
+
(added by B.C. Reg. 193/2015): "Despite section 3.02, a number plate may be
|
|
167
|
+
attached in vertical position on the left front fork of a motorcycle, with
|
|
168
|
+
the first number or letter at the bottom of the fork." A VERTICAL,
|
|
169
|
+
BOTTOM-UP motorcycle plate is a real and lawful BC reading order — a
|
|
170
|
+
consumer doing OCR on a BC motorcycle must handle 90-degree rotation.
|
|
171
|
+
legibility: >-
|
|
172
|
+
Reg. 3.03: the plate "must be kept entirely unobstructed and free from dirt
|
|
173
|
+
or foreign material, so that the numbers and letters on it may be plainly
|
|
174
|
+
seen and read at all times and so that the numbers and letters may be
|
|
175
|
+
accurately photographed using a speed monitoring device or traffic light
|
|
176
|
+
safety device prescribed under section 83.1 of the Act." BC legislates
|
|
177
|
+
machine readability by name, which is unusual and is why bulletin 33 spends
|
|
178
|
+
a paragraph on ALPR compatibility.
|
|
179
|
+
validation_decal: >-
|
|
180
|
+
Reg. 3.012: a validation decal goes on the FRONT plate for a Commercial
|
|
181
|
+
Transport Act vehicle over 5 500 kg licensed GVW and on the REAR plate for
|
|
182
|
+
every other vehicle. Reg. 3.012(2) carves out decals issued before
|
|
183
|
+
1 May 2022 — ICBC stopped issuing decals in 2022, so a current BC plate
|
|
184
|
+
carries no visible validity marker.
|
|
185
|
+
off_road: "Reg. 3.0111: s. 3.011 does not apply to an off-road vehicle registered under the Off-Road Vehicle Act displaying a number plate or number sticker issued under that Act (a separate regime, out of scope here)."
|
|
186
|
+
sources:
|
|
187
|
+
- "https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/26_58_01 # Division 3 ss. 3.011, 3.0111, 3.012, 3.02, 3.021, 3.03"
|
|
188
|
+
|
|
189
|
+
# ---------------------------------------------------------------------------
|
|
190
|
+
# Jurisdiction-wide facts, cited once and referenced per series.
|
|
191
|
+
# ---------------------------------------------------------------------------
|
|
192
|
+
common:
|
|
193
|
+
alphabet:
|
|
194
|
+
excluded: ["I", "O", "Q"]
|
|
195
|
+
statement: >-
|
|
196
|
+
ICBC bulletin 33, verbatim: "In the patterns below, # represents a number
|
|
197
|
+
(0-9) and @ represents any letter (other than I, O, or Q.)" and "The
|
|
198
|
+
letters 'I', 'O' and 'Q' remain excluded from use because they present
|
|
199
|
+
identification issues."
|
|
200
|
+
newly_admitted: ["U", "Y", "Z"]
|
|
201
|
+
newly_admitted_statement: >-
|
|
202
|
+
Verbatim: "The new licence plate patterns may include the letters 'U',
|
|
203
|
+
'Y' and 'Z', which were not previously used." This is the single most
|
|
204
|
+
useful era signal in the file: a BC serial containing U, Y or Z is
|
|
205
|
+
2025-or-later on ICBC's own statement.
|
|
206
|
+
source: "https://partners.icbc.com/assets/5GMseymkqs8E4Otb8osoGQ/bulletin-33-new-licence-plate-configurations.pdf # p.1 alphabet paragraph, p.2 pattern-table legend"
|
|
207
|
+
length_bound:
|
|
208
|
+
max_characters: 6
|
|
209
|
+
statement: >-
|
|
210
|
+
Verbatim: "Will licence plates still have six characters maximum? Yes. By
|
|
211
|
+
altering the pattern of number and letter positions for each licence
|
|
212
|
+
plate type, ICBC was able to increase available licence plate
|
|
213
|
+
combinations using the same number of characters." And in Background:
|
|
214
|
+
"All BC licence plate types consist of no more than six characters."
|
|
215
|
+
source: "https://partners.icbc.com/assets/5GMseymkqs8E4Otb8osoGQ/bulletin-33-new-licence-plate-configurations.pdf # pp.1-2"
|
|
216
|
+
why_the_2025_recut:
|
|
217
|
+
statement: >-
|
|
218
|
+
Verbatim: "The changes are necessary to ensure every licence plate has a
|
|
219
|
+
unique alpha-numeric number, because the existing patterns are nearly used
|
|
220
|
+
up." And: "To ensure there is sufficient inventory of unique licence plate
|
|
221
|
+
numbers for the next twenty years, character pattern updates are planned
|
|
222
|
+
for 16 licence plate types. Ten of these are scheduled for rollout as
|
|
223
|
+
required over the next year." SIXTEEN types are being re-cut; the bulletin
|
|
224
|
+
tabulates EIGHT. The other eight are a known, named gap in this file.
|
|
225
|
+
source: "https://partners.icbc.com/assets/5GMseymkqs8E4Otb8osoGQ/bulletin-33-new-licence-plate-configurations.pdf # p.2 Background"
|
|
226
|
+
plate_count_note: >-
|
|
227
|
+
ICBC issues 40-odd plate types (bulletin 33: "ICBC maintains approximately
|
|
228
|
+
40 licence plate types"). This file authors the ten for which a grammar or a
|
|
229
|
+
dated design was secured. The remainder are a recorded gap, not an omission.
|
|
230
|
+
dimensions_note: >-
|
|
231
|
+
NEGATIVE FINDING, recorded so nobody repeats the hunt. Neither MVA s. 12
|
|
232
|
+
nor Division 3 of B.C. Reg. 26/58 prescribes any plate dimension, and no
|
|
233
|
+
ICBC page carrying one was found. The 12 x 6 in / 300 x 150 mm North
|
|
234
|
+
American convention is real and is NOT asserted here. `design.plate` is
|
|
235
|
+
absent from every series by design.
|
|
236
|
+
colour_note: >-
|
|
237
|
+
Blue characters on a reflective white ground with the provincial flag device
|
|
238
|
+
is the standard base as depicted on ICBC's own pages. No colour is in any
|
|
239
|
+
instrument; every hex below is `hex_basis: observed`.
|
|
240
|
+
|
|
241
|
+
series:
|
|
242
|
+
|
|
243
|
+
# =========================================================================
|
|
244
|
+
# STANDARD PASSENGER — the current recut and the series it replaces.
|
|
245
|
+
# =========================================================================
|
|
246
|
+
- id: ca-bc-standard-2025
|
|
247
|
+
class: standard
|
|
248
|
+
categories: [car, van, truck, bus]
|
|
249
|
+
period: { start: 2025 }
|
|
250
|
+
period_evidence: first-issue-announced
|
|
251
|
+
matching: strict
|
|
252
|
+
format:
|
|
253
|
+
pattern: "L999LL"
|
|
254
|
+
regex: '\A[A-Z]\d{3}[A-Z]{2}\z'
|
|
255
|
+
regex_strict: '\A[A-HJ-NPR-Z]\d{3}[A-HJ-NPR-Z]{2}\z'
|
|
256
|
+
regex_statutory: '\A[A-Z0-9](?: ?[A-Z0-9]){0,5}\z'
|
|
257
|
+
evidence: agency-bulletin
|
|
258
|
+
charset:
|
|
259
|
+
excluded: ["I", "O", "Q"]
|
|
260
|
+
notes: >-
|
|
261
|
+
ICBC bulletin 33 row "Passenger": current pattern @@###@, NEW pattern
|
|
262
|
+
@###@@, "Example of new pattern: A123BC". `@` is defined in the
|
|
263
|
+
bulletin's own legend as "any letter (other than I, O, or Q.)"
|
|
264
|
+
`regex_strict` is that legend spelled out; `regex` cannot carry it
|
|
265
|
+
because the lint generates I, O and Q from the human pattern.
|
|
266
|
+
separator_note: >-
|
|
267
|
+
ICBC prints the pattern and its example SOLID. The physical plate shows
|
|
268
|
+
a group gap and secondary renderings hyphenate it (`A12-3BC`), but ICBC
|
|
269
|
+
states neither a glyph nor a gap POSITION, so none is asserted. A
|
|
270
|
+
PRD-PLATES § 2.6 forgiving consumer strips the gap and matches this
|
|
271
|
+
regex unchanged.
|
|
272
|
+
progression: "not published. ICBC states only that the recut exists to extend the six-character space; no block-allocation order was found."
|
|
273
|
+
design:
|
|
274
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
275
|
+
foreground: "#12326E"
|
|
276
|
+
legend_top: "BRITISH COLUMBIA"
|
|
277
|
+
legend_bottom: "Beautiful British Columbia"
|
|
278
|
+
emblem: { present: true, rendered: placeholder, description: "provincial flag device" }
|
|
279
|
+
rear_differs: false
|
|
280
|
+
design_note: >-
|
|
281
|
+
Bulletin 33, verbatim: "All regular BC plates will remain six characters
|
|
282
|
+
with the same design, reflectivity, and materials, making them scannable
|
|
283
|
+
as usual." So the 2025 recut is a SERIAL-GRAMMAR change on an UNCHANGED
|
|
284
|
+
BASE — the base and the format have different lifetimes, and a schema
|
|
285
|
+
that conflates them cannot model British Columbia. Same finding as
|
|
286
|
+
Oregon's 1987 fir base outliving two serial arrangements.
|
|
287
|
+
notes: >-
|
|
288
|
+
Rollout, verbatim: "ICBC will be gradually introducing new licence plate
|
|
289
|
+
character configurations on some British Columbia licence plates. This will
|
|
290
|
+
begin with the B.C. Parks - Porteau Cove series within the next few weeks,
|
|
291
|
+
followed by regular passenger licence plates as early as August 2025."
|
|
292
|
+
`period.start: 2025` rests on that sentence and on the bulletin's own date
|
|
293
|
+
(9 June 2025) — an authority statement of intended first issue, not a
|
|
294
|
+
confirmed first-issue observation, which is why the evidence grade is
|
|
295
|
+
`first-issue-announced` and not `agency-stated-date`. The predecessor
|
|
296
|
+
series continues to issue from stock in parallel; see ca-bc-standard-2014.
|
|
297
|
+
sources:
|
|
298
|
+
- "https://partners.icbc.com/assets/5GMseymkqs8E4Otb8osoGQ/bulletin-33-new-licence-plate-configurations.pdf # pattern, alphabet, rollout month, unchanged-base statement"
|
|
299
|
+
- "https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/96318_01 # MVA s. 12(1)(b): the design is ICBC's to determine"
|
|
300
|
+
|
|
301
|
+
- id: ca-bc-standard-2014
|
|
302
|
+
class: standard
|
|
303
|
+
categories: [car, van, truck, bus]
|
|
304
|
+
period: { start: 2014, end: 2025 }
|
|
305
|
+
period_evidence: mixed-secondary-start-agency-end
|
|
306
|
+
matching: strict
|
|
307
|
+
format:
|
|
308
|
+
pattern: "LL999L"
|
|
309
|
+
regex: '\A[A-Z]{2}\d{3}[A-Z]\z'
|
|
310
|
+
regex_strict: '\A[A-HJ-NPR-TVWX]{2}\d{3}[A-HJ-NPR-TVWX]\z'
|
|
311
|
+
regex_statutory: '\A[A-Z0-9](?: ?[A-Z0-9]){0,5}\z'
|
|
312
|
+
evidence: agency-bulletin-for-format
|
|
313
|
+
charset:
|
|
314
|
+
excluded: ["I", "O", "Q", "U", "Y", "Z"]
|
|
315
|
+
notes: >-
|
|
316
|
+
Six letters, not three, and the extra three are the era signal. ICBC
|
|
317
|
+
bulletin 33 says the new patterns "may include the letters 'U', 'Y'
|
|
318
|
+
and 'Z', which were not previously used" — so the pre-2025 alphabet is
|
|
319
|
+
A-Z minus I, O, Q, U, Y, Z, which is exactly what `regex_strict`
|
|
320
|
+
spells (A-H, J-N, P, R-T, V, W, X).
|
|
321
|
+
separator_note: "As ca-bc-standard-2025: ICBC prints @@###@ solid; the gap position is unstated."
|
|
322
|
+
design:
|
|
323
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
324
|
+
foreground: "#12326E"
|
|
325
|
+
legend_top: "BRITISH COLUMBIA"
|
|
326
|
+
legend_bottom: "Beautiful British Columbia"
|
|
327
|
+
emblem: { present: true, rendered: placeholder, description: "provincial flag device" }
|
|
328
|
+
rear_differs: false
|
|
329
|
+
notes: >-
|
|
330
|
+
THE TWO ENDS OF THIS PERIOD HAVE DIFFERENT EVIDENCE GRADES AND THE KEY
|
|
331
|
+
SAYS SO. The END is strong: ICBC bulletin 33 (9 June 2025) tabulates
|
|
332
|
+
@@###@ as the "Current pattern" being replaced for Passenger, which dates
|
|
333
|
+
the changeover to 2025 from the authority. The START is weak: 2014 comes
|
|
334
|
+
only from the per-jurisdiction encyclopedia article used as a finding aid,
|
|
335
|
+
whose format-history row carries no footnote; no ICBC or provincial source
|
|
336
|
+
dating the AB1-23C arrangement was found. Treat 2014 as unverified.
|
|
337
|
+
Parallel issuance with ca-bc-standard-2025 is REAL — old plate stock is
|
|
338
|
+
issued until exhausted ("New licence plate configurations will roll out as
|
|
339
|
+
old inventories get exhausted") — which is why the two series overlap.
|
|
340
|
+
sources:
|
|
341
|
+
- "https://partners.icbc.com/assets/5GMseymkqs8E4Otb8osoGQ/bulletin-33-new-licence-plate-configurations.pdf # 'Current pattern' column = @@###@; old-inventory exhaustion rule"
|
|
342
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_British_Columbia # FINDING AID ONLY (PRD-PLATES §4 Wikipedia row): the unfootnoted 2014 start; accessed 2026-08-02"
|
|
343
|
+
|
|
344
|
+
# =========================================================================
|
|
345
|
+
# COMMERCIAL / FARM / TRAILER / PRORATE / INDUSTRIAL — the other seven rows
|
|
346
|
+
# of the bulletin's table. Each is a distinct plate TYPE in ICBC's own terms
|
|
347
|
+
# with its own grammar, which is why each is its own series.
|
|
348
|
+
# =========================================================================
|
|
349
|
+
- id: ca-bc-commercial-truck-2025
|
|
350
|
+
class: standard
|
|
351
|
+
categories: [truck]
|
|
352
|
+
period: { start: 2025 }
|
|
353
|
+
period_evidence: first-issue-announced
|
|
354
|
+
matching: strict
|
|
355
|
+
format:
|
|
356
|
+
pattern: "9LL999"
|
|
357
|
+
regex: '\A\d[A-Z]{2}\d{3}\z'
|
|
358
|
+
regex_strict: '\A\d[A-HJ-NPR-Z]{2}\d{3}\z'
|
|
359
|
+
regex_statutory: '\A[A-Z0-9](?: ?[A-Z0-9]){0,5}\z'
|
|
360
|
+
evidence: agency-bulletin
|
|
361
|
+
charset: { excluded: ["I", "O", "Q"] }
|
|
362
|
+
design:
|
|
363
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
364
|
+
foreground: "#12326E"
|
|
365
|
+
emblem: { present: true, rendered: placeholder }
|
|
366
|
+
notes: >-
|
|
367
|
+
Bulletin 33 row "Commercial Truck": current @#####, new #@@###, "Example
|
|
368
|
+
of new pattern: 1AB234". Commercial vehicles over 5 500 kg licensed GVW
|
|
369
|
+
are licensed under the COMMERCIAL TRANSPORT ACT rather than the Motor
|
|
370
|
+
Vehicle Act (reg. 3.012(1)(a) turns on exactly that threshold) and carry
|
|
371
|
+
their validation decal on the FRONT plate. The superseded @##### grammar
|
|
372
|
+
is not given a series of its own because no source dates it.
|
|
373
|
+
sources:
|
|
374
|
+
- "https://partners.icbc.com/assets/5GMseymkqs8E4Otb8osoGQ/bulletin-33-new-licence-plate-configurations.pdf # Commercial Truck row"
|
|
375
|
+
|
|
376
|
+
- id: ca-bc-farm-2025
|
|
377
|
+
class: agricultural
|
|
378
|
+
categories: [truck]
|
|
379
|
+
period: { start: 2025 }
|
|
380
|
+
period_evidence: first-issue-announced
|
|
381
|
+
matching: strict
|
|
382
|
+
format:
|
|
383
|
+
pattern: "99999L"
|
|
384
|
+
regex: '\A\d{5}[A-Z]\z'
|
|
385
|
+
regex_strict: '\A\d{5}[A-HJ-NPR-Z]\z'
|
|
386
|
+
regex_statutory: '\A[A-Z0-9](?: ?[A-Z0-9]){0,5}\z'
|
|
387
|
+
evidence: agency-bulletin
|
|
388
|
+
charset: { excluded: ["I", "O", "Q"] }
|
|
389
|
+
design:
|
|
390
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
391
|
+
foreground: "#12326E"
|
|
392
|
+
notes: >-
|
|
393
|
+
Bulletin 33 row "Farm Truck": current G#####, new #####A, "Example of new
|
|
394
|
+
pattern: 12345A". The recut RETIRES the leading G — the old grammar's only
|
|
395
|
+
geographic-free type marker — and moves the letter to the tail, so a BC
|
|
396
|
+
farm plate is no longer recognisable by its first character. Farm vehicles
|
|
397
|
+
are also the one class BC bars from personalised plates (reg. 34.05(1)(a)).
|
|
398
|
+
sources:
|
|
399
|
+
- "https://partners.icbc.com/assets/5GMseymkqs8E4Otb8osoGQ/bulletin-33-new-licence-plate-configurations.pdf # Farm Truck row"
|
|
400
|
+
- "https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/26_58_10 # reg. 34.05(1)(a): no personalised plate on a farm vehicle"
|
|
401
|
+
|
|
402
|
+
- id: ca-bc-trailer-utility-2025
|
|
403
|
+
class: trailer
|
|
404
|
+
categories: [trailer]
|
|
405
|
+
period: { start: 2025 }
|
|
406
|
+
period_evidence: first-issue-announced
|
|
407
|
+
matching: strict
|
|
408
|
+
format:
|
|
409
|
+
pattern: "9ULLL9"
|
|
410
|
+
regex: '\A\dU[A-Z]{3}\d\z'
|
|
411
|
+
regex_strict: '\A\dU[A-HJ-NPR-Z]{3}\d\z'
|
|
412
|
+
regex_statutory: '\A[A-Z0-9](?: ?[A-Z0-9]){0,5}\z'
|
|
413
|
+
evidence: agency-bulletin
|
|
414
|
+
charset: { excluded: ["I", "O", "Q"] }
|
|
415
|
+
design:
|
|
416
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
417
|
+
foreground: "#12326E"
|
|
418
|
+
notes: >-
|
|
419
|
+
Bulletin 33 row "Utility Trailer": current U####A, new #U@@@#, "Example of
|
|
420
|
+
new pattern: 1UABC2". The literal U is a TYPE MARKER that survives the
|
|
421
|
+
recut but MOVES from position 1 to position 2 — and note the collision it
|
|
422
|
+
creates with fact 2 above: U is simultaneously a newly admitted SERIAL
|
|
423
|
+
letter elsewhere in the system from 2025. A parser must not read "contains
|
|
424
|
+
U" as "utility trailer"; only "U in position 2 of a six-character serial"
|
|
425
|
+
carries that meaning, and even that is a shape hit.
|
|
426
|
+
Trailers are barred from personalised plates (reg. 34.05(1)(f)).
|
|
427
|
+
sources:
|
|
428
|
+
- "https://partners.icbc.com/assets/5GMseymkqs8E4Otb8osoGQ/bulletin-33-new-licence-plate-configurations.pdf # Utility Trailer row"
|
|
429
|
+
- "https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/26_58_10 # reg. 34.05(1)(f)"
|
|
430
|
+
|
|
431
|
+
- id: ca-bc-prorate-2025
|
|
432
|
+
class: standard
|
|
433
|
+
categories: [truck, bus]
|
|
434
|
+
period: { start: 2025 }
|
|
435
|
+
period_evidence: first-issue-announced
|
|
436
|
+
matching: strict
|
|
437
|
+
format:
|
|
438
|
+
pattern: "9999P9"
|
|
439
|
+
regex: '\A\d{4}P\d\z'
|
|
440
|
+
regex_statutory: '\A[A-Z0-9](?: ?[A-Z0-9]){0,5}\z'
|
|
441
|
+
evidence: agency-bulletin
|
|
442
|
+
design:
|
|
443
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
444
|
+
foreground: "#12326E"
|
|
445
|
+
notes: >-
|
|
446
|
+
Bulletin 33 row "Prorate": current #####P, new ####P#, "Example of new
|
|
447
|
+
pattern: 1234P5". A prorate plate is an International Registration Plan
|
|
448
|
+
apportioned plate for interjurisdictional commercial carriers; the literal
|
|
449
|
+
P is the type marker and moves from the tail to position 5. No
|
|
450
|
+
`regex_strict` is carried because the grammar has no free letter position
|
|
451
|
+
left to restrict.
|
|
452
|
+
sources:
|
|
453
|
+
- "https://partners.icbc.com/assets/5GMseymkqs8E4Otb8osoGQ/bulletin-33-new-licence-plate-configurations.pdf # Prorate row"
|
|
454
|
+
|
|
455
|
+
- id: ca-bc-industrial-2025
|
|
456
|
+
class: standard
|
|
457
|
+
categories: [truck]
|
|
458
|
+
period: { start: 2025 }
|
|
459
|
+
period_evidence: first-issue-announced
|
|
460
|
+
matching: strict
|
|
461
|
+
format:
|
|
462
|
+
pattern: "9X9999"
|
|
463
|
+
regex: '\A\dX\d{4}\z'
|
|
464
|
+
regex_statutory: '\A[A-Z0-9](?: ?[A-Z0-9]){0,5}\z'
|
|
465
|
+
evidence: agency-bulletin
|
|
466
|
+
design:
|
|
467
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
468
|
+
foreground: "#12326E"
|
|
469
|
+
notes: >-
|
|
470
|
+
Bulletin 33 row "Industrial": current X#####, new #X####, "Example of new
|
|
471
|
+
pattern: 1X2345". Industrial plates are for machines used off-highway that
|
|
472
|
+
make limited highway movements; Division 24 of B.C. Reg. 26/58 ("Vehicles
|
|
473
|
+
of Unusual Size, Weight or Operating Characteristics") is the neighbouring
|
|
474
|
+
regime and reg. 3.121 forbids moving plates between a Division 24 vehicle
|
|
475
|
+
and any other class — a hard, sourced class boundary.
|
|
476
|
+
sources:
|
|
477
|
+
- "https://partners.icbc.com/assets/5GMseymkqs8E4Otb8osoGQ/bulletin-33-new-licence-plate-configurations.pdf # Industrial row"
|
|
478
|
+
- "https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/26_58_01 # reg. 3.121, reg. 3.13 classes of vehicles"
|
|
479
|
+
|
|
480
|
+
# =========================================================================
|
|
481
|
+
# BC PARKS — the specialty programme, and the one series in this file with a
|
|
482
|
+
# first-issue date to the DAY from a provincial news release.
|
|
483
|
+
# =========================================================================
|
|
484
|
+
- id: ca-bc-parks-2025
|
|
485
|
+
class: specialty
|
|
486
|
+
categories: [car, van, truck]
|
|
487
|
+
period: { start: 2025 }
|
|
488
|
+
period_evidence: first-issue-announced
|
|
489
|
+
matching: strict
|
|
490
|
+
format:
|
|
491
|
+
pattern: "P999LL"
|
|
492
|
+
regex: '\A[PRS]\d{3}[A-Z]{2}\z'
|
|
493
|
+
regex_strict: '\A[PRS]\d{3}[A-HJ-NPR-Z]{2}\z'
|
|
494
|
+
regex_statutory: '\A[A-Z0-9](?: ?[A-Z0-9]){0,5}\z'
|
|
495
|
+
evidence: agency-bulletin
|
|
496
|
+
charset: { excluded: ["I", "O", "Q"] }
|
|
497
|
+
first_character_is_the_design: >-
|
|
498
|
+
The leading letter identifies WHICH park artwork the plate carries, and
|
|
499
|
+
it is a closed three-member set from bulletin 33: S = Porteau Cove,
|
|
500
|
+
P = Kermode, R = Purcell. This is the only geographic-ish decode
|
|
501
|
+
dimension British Columbia has, and it decodes the DESIGN, not the
|
|
502
|
+
registrant's location. Small and closed, so it is inline here rather
|
|
503
|
+
than in a _decode file.
|
|
504
|
+
variants:
|
|
505
|
+
- name: "BC Parks - Porteau Cove"
|
|
506
|
+
format: { pattern: "S999LL", regex: '\AS\d{3}[A-Z]{2}\z' }
|
|
507
|
+
- name: "BC Parks - Purcell"
|
|
508
|
+
format: { pattern: "R999LL" }
|
|
509
|
+
design:
|
|
510
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
511
|
+
foreground: "#12326E"
|
|
512
|
+
emblem: { present: true, rendered: placeholder, description: "one of three park scenes: Kermode bear / Purcell Mountains / Porteau Cove" }
|
|
513
|
+
notes: >-
|
|
514
|
+
Bulletin 33 rows "Parks - Porteau Cove" (current RS###@, new S###@@,
|
|
515
|
+
example S123AA), "Parks - Kermode" (current RK###@, new P###@@, example
|
|
516
|
+
P123AA) and "Parks - Purcell" (current RM###@, new R###@@, example
|
|
517
|
+
R123AA). Porteau Cove is the FIRST type in the whole 2025 recut: "This
|
|
518
|
+
will begin with the B.C. Parks - Porteau Cove series within the next few
|
|
519
|
+
weeks" (bulletin dated 9 June 2025). The three superseded grammars
|
|
520
|
+
(RS###@ / RK###@ / RM###@) belong to ca-bc-parks-2017.
|
|
521
|
+
sources:
|
|
522
|
+
- "https://partners.icbc.com/assets/5GMseymkqs8E4Otb8osoGQ/bulletin-33-new-licence-plate-configurations.pdf # the three Parks rows + rollout order"
|
|
523
|
+
|
|
524
|
+
- id: ca-bc-parks-2017
|
|
525
|
+
class: specialty
|
|
526
|
+
categories: [car, van, truck]
|
|
527
|
+
period: { start: 2017, end: 2025 }
|
|
528
|
+
period_evidence: agency-stated-date
|
|
529
|
+
matching: strict
|
|
530
|
+
format:
|
|
531
|
+
pattern: "RK999L"
|
|
532
|
+
regex: '\AR[KMS]\d{3}[A-Z]\z'
|
|
533
|
+
regex_strict: '\AR[KMS]\d{3}[A-HJ-NPR-TVWX]\z'
|
|
534
|
+
regex_statutory: '\A[A-Z0-9](?: ?[A-Z0-9]){0,5}\z'
|
|
535
|
+
evidence: agency-bulletin
|
|
536
|
+
charset: { excluded: ["I", "O", "Q", "U", "Y", "Z"] }
|
|
537
|
+
decode_inline:
|
|
538
|
+
RK: "Kermode bear"
|
|
539
|
+
RM: "Purcell Mountains"
|
|
540
|
+
RS: "Porteau Cove"
|
|
541
|
+
design:
|
|
542
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
543
|
+
foreground: "#12326E"
|
|
544
|
+
emblem: { present: true, rendered: placeholder, description: "one of three park scenes" }
|
|
545
|
+
notes: >-
|
|
546
|
+
START IS PRIMARY AND TO THE DAY. Province of British Columbia news release
|
|
547
|
+
2017ENV0020-000696 (19 March 2017), verbatim: "The three licence plate
|
|
548
|
+
designs - a Kermode bear found only in British Columbia, the snow-capped
|
|
549
|
+
Purcell Mountains, and a stunning view from Porteau Cove overlooking Howe
|
|
550
|
+
Sound - were unveiled by Environment Minister Mary Polak and Transportation
|
|
551
|
+
and Infrastructure Minister Todd Stone on Jan. 18, 2017, in Vancouver" and
|
|
552
|
+
"became available for purchase at Autoplan broker offices on Jan. 29,
|
|
553
|
+
2017". Unveiling and FIRST ISSUE are eight days apart and this file records
|
|
554
|
+
the issue date, not the unveiling. END is the 2025 recut per bulletin 33.
|
|
555
|
+
`regex_strict` restricts the tail letter to the pre-2025 alphabet, which is
|
|
556
|
+
what makes an RK/RM/RS plate era-datable on sight.
|
|
557
|
+
sources:
|
|
558
|
+
- "https://news.gov.bc.ca/releases/2017ENV0020-000696 # unveiled 18 Jan 2017, on sale 29 Jan 2017, the three designs, the ICBC partnership"
|
|
559
|
+
- "https://partners.icbc.com/assets/5GMseymkqs8E4Otb8osoGQ/bulletin-33-new-licence-plate-configurations.pdf # the RS/RK/RM 'Current pattern' column"
|
|
560
|
+
|
|
561
|
+
# =========================================================================
|
|
562
|
+
# CLASSES WHOSE GRAMMAR ICBC HAS NOT PUBLISHED. Each is recall-only, bounded
|
|
563
|
+
# by the one thing that IS sourced for every BC plate: six characters.
|
|
564
|
+
# =========================================================================
|
|
565
|
+
- id: ca-bc-motorcycle
|
|
566
|
+
class: motorcycle
|
|
567
|
+
categories: [motorcycle]
|
|
568
|
+
period: { start: 1970 }
|
|
569
|
+
period_evidence: not-established
|
|
570
|
+
matching: recall-only
|
|
571
|
+
format:
|
|
572
|
+
pattern: "999LL"
|
|
573
|
+
regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,5}\z'
|
|
574
|
+
evidence: none-published
|
|
575
|
+
charset: { excluded: ["I", "O", "Q"] }
|
|
576
|
+
design:
|
|
577
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
578
|
+
foreground: "#12326E"
|
|
579
|
+
mounting_note: >-
|
|
580
|
+
Reg. 3.021 permits a BC motorcycle plate to be mounted VERTICALLY on the
|
|
581
|
+
left front fork, first character at the BOTTOM. Reading order is
|
|
582
|
+
bottom-to-top in that mounting.
|
|
583
|
+
notes: >-
|
|
584
|
+
RECALL-ONLY AND HONEST ABOUT WHY. Bulletin 33 does not tabulate the
|
|
585
|
+
motorcycle pattern, and no other ICBC publication carrying it was found.
|
|
586
|
+
The regex is the six-character bound the bulletin states for EVERY BC
|
|
587
|
+
type — a genuine outer claim, not a guess — so a match here means "this
|
|
588
|
+
string has a shape British Columbia issues" and nothing more.
|
|
589
|
+
`period.start: 1970` is a floor carried only to satisfy the schema's
|
|
590
|
+
integer-year requirement and is marked `not-established`; it must not be
|
|
591
|
+
read as a claim. The 2025 recut list names sixteen types of which the
|
|
592
|
+
bulletin tabulates eight; motorcycle may be among the untabulated eight.
|
|
593
|
+
sources:
|
|
594
|
+
- "https://partners.icbc.com/assets/5GMseymkqs8E4Otb8osoGQ/bulletin-33-new-licence-plate-configurations.pdf # the six-character bound and the I/O/Q exclusion; motorcycle NOT tabulated"
|
|
595
|
+
- "https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/26_58_01 # reg. 3.021 vertical fork mounting"
|
|
596
|
+
|
|
597
|
+
- id: ca-bc-personalized
|
|
598
|
+
class: personalized
|
|
599
|
+
categories: [car, van, truck, motorcycle]
|
|
600
|
+
period: { start: 1979 }
|
|
601
|
+
period_evidence: enabling-instrument
|
|
602
|
+
matching: recall-only
|
|
603
|
+
format:
|
|
604
|
+
pattern: "LLLLLL"
|
|
605
|
+
regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,5}\z'
|
|
606
|
+
evidence: regulation-for-restrictions-only
|
|
607
|
+
design:
|
|
608
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
609
|
+
foreground: "#12326E"
|
|
610
|
+
notes: >-
|
|
611
|
+
Division 34 of B.C. Reg. 26/58 is the personalised-plate regime and it was
|
|
612
|
+
ADDED BY B.C. Reg. 295/79 — every operative section of Division 34 carries
|
|
613
|
+
the enactment note "[en. B.C. Reg. 295/79, s. (c)]", which is what
|
|
614
|
+
`period.start: 1979` rests on (`enabling-instrument`: the year the
|
|
615
|
+
regime was created, not a first-issue observation). Reg. 34.04 states the
|
|
616
|
+
refusal grounds verbatim: a combination "identical to one already in use",
|
|
617
|
+
"identical to a number plate in an existing or projected series of number
|
|
618
|
+
plates to be issued", one that "could create identification problems", one
|
|
619
|
+
that "is unseemly, vulgar, indecent or may offend any person", or one that
|
|
620
|
+
"might distract the drivers of other vehicles so as to reduce the level of
|
|
621
|
+
their driving care or attention". Reg. 34.05(1) bars personalised plates
|
|
622
|
+
on farm vehicles, 'vintage'-plated antique cars, collector-plated vehicles,
|
|
623
|
+
trailers, Commercial Transport Act vehicles over 5 500 kg, and Division 24
|
|
624
|
+
vehicles other than neighbourhood zero-emission vehicles. Reg. 34.10(1)(c)
|
|
625
|
+
dates the fee regime to plates "issued on or after January 1, 1984".
|
|
626
|
+
No character-count rule is stated in the regulation; the six-character
|
|
627
|
+
bound comes from bulletin 33.
|
|
628
|
+
sources:
|
|
629
|
+
- "https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/26_58_10 # Division 34 ss. 34.01-34.08, enactment note B.C. Reg. 295/79"
|
|
630
|
+
- "https://partners.icbc.com/assets/5GMseymkqs8E4Otb8osoGQ/bulletin-33-new-licence-plate-configurations.pdf # six-character bound"
|
|
631
|
+
|
|
632
|
+
- id: ca-bc-vintage-antique
|
|
633
|
+
class: historic
|
|
634
|
+
categories: [car, van, truck]
|
|
635
|
+
period: { start: 1966 }
|
|
636
|
+
period_evidence: enabling-instrument
|
|
637
|
+
matching: recall-only
|
|
638
|
+
format:
|
|
639
|
+
pattern: "999999"
|
|
640
|
+
regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,5}\z'
|
|
641
|
+
evidence: none-published
|
|
642
|
+
design:
|
|
643
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
644
|
+
foreground: "#12326E"
|
|
645
|
+
notes: >-
|
|
646
|
+
British Columbia runs TWO parallel old-vehicle regimes and they are not the
|
|
647
|
+
same thing. Division 22 (ANTIQUE MOTOR VEHICLES), enacted by B.C. Reg.
|
|
648
|
+
55/66 — hence `period.start: 1966` — defines an antique motor vehicle as
|
|
649
|
+
"a motor vehicle 30 years of age or older maintained as nearly as possible
|
|
650
|
+
with original component parts, and owned as a collector's item and operated
|
|
651
|
+
solely for use in exhibition or club activities, parades and other like
|
|
652
|
+
functions", and reg. 22.03(1)(b) directs ICBC to issue "a distinctive
|
|
653
|
+
number plate or plates". Reg. 34.05(1)(b) calls the resulting plates
|
|
654
|
+
"'vintage' number plates" in terms. Reg. 22.03(1)(a) is the unusual part:
|
|
655
|
+
the licence is "valid for as long as the vehicle is in existence and
|
|
656
|
+
continues to be operated as an antique motor vehicle" — a NON-EXPIRING
|
|
657
|
+
registration, which is why BC antique plates carry no validity marker of
|
|
658
|
+
any kind. No serial grammar is published, hence recall-only.
|
|
659
|
+
sources:
|
|
660
|
+
- "https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/26_58_06 # Division 22 ss. 22.01-22.04, enactment note B.C. Reg. 55/66"
|
|
661
|
+
- "https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/26_58_10 # reg. 34.05(1)(b) naming them 'vintage' plates"
|
|
662
|
+
|
|
663
|
+
- id: ca-bc-collector
|
|
664
|
+
class: historic
|
|
665
|
+
categories: [car, van, truck]
|
|
666
|
+
period: { start: 2006 }
|
|
667
|
+
period_evidence: enabling-instrument
|
|
668
|
+
matching: recall-only
|
|
669
|
+
format:
|
|
670
|
+
pattern: "LLL999"
|
|
671
|
+
regex: '\A[A-Z0-9](?: ?[A-Z0-9]){0,5}\z'
|
|
672
|
+
evidence: none-published
|
|
673
|
+
design:
|
|
674
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
675
|
+
foreground: "#12326E"
|
|
676
|
+
notes: >-
|
|
677
|
+
The SECOND old-vehicle regime, and a distinct one: Division 22A (COLLECTOR
|
|
678
|
+
MOTOR VEHICLES) was enacted by B.C. Reg. 139/2006 (hence
|
|
679
|
+
`period.start: 2006`) and amended by B.C. Reg. 105/2017. Its four
|
|
680
|
+
qualifying items are a genuinely useful vehicle-catalogue hook and are
|
|
681
|
+
quoted rather than paraphrased: (1) a vehicle "at least 25 years old" and
|
|
682
|
+
"maintained or restored to a condition that conforms to the original
|
|
683
|
+
manufacturer's specifications"; (2) at least 15 years old AND "no longer
|
|
684
|
+
produced, or of limited availability", same condition test; (3) a MODIFIED
|
|
685
|
+
motor vehicle manufactured 1974 or earlier and registered in BC as a 1974
|
|
686
|
+
or earlier model whose body, chassis, power train or steering/braking has
|
|
687
|
+
been altered by a non-manufacturer; (4) a CONSTRUCTED motor vehicle
|
|
688
|
+
manufactured 1942 or earlier (or built to resemble one) and registered as
|
|
689
|
+
a 1942-or-earlier model. Reg. 22A.04(1) is the schema-stressing part: one
|
|
690
|
+
collector licence and plate "may, with the prior approval of the Insurance
|
|
691
|
+
Corporation of British Columbia, be used on ANY of the collector motor
|
|
692
|
+
vehicles in respect of which the licence was issued" — a ONE-PLATE-MANY-
|
|
693
|
+
VEHICLES binding that a vehicle-keyed consumer must not assume away.
|
|
694
|
+
Distinct from ca-bc-vintage-antique: different regime, different
|
|
695
|
+
eligibility, different enacting instrument, overlapping in time.
|
|
696
|
+
sources:
|
|
697
|
+
- "https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/26_58_06 # Division 22A ss. 22A.01-22A.04, enactment note B.C. Reg. 139/2006"
|