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,430 @@
|
|
|
1
|
+
# plates/ca-ab.yml — Alberta (PRD-PLATES gate L3, Canada west).
|
|
2
|
+
#
|
|
3
|
+
# ── FOUR STRUCTURAL FACTS THAT SHAPE THIS FILE ─────────────────────────────
|
|
4
|
+
#
|
|
5
|
+
# 1. ALBERTA DELEGATES THE PLATE TWICE, AND THE SECOND DELEGATE PUBLISHES
|
|
6
|
+
# ALMOST NOTHING. Operator Licensing and Vehicle Control Regulation,
|
|
7
|
+
# AR 320/2002, Division 3 (Licence Plates), s. 63, verbatim:
|
|
8
|
+
# "63(1) The Registrar shall issue a licence plate for a vehicle if the
|
|
9
|
+
# Registrar issues a certificate of registration for the vehicle.
|
|
10
|
+
# (2) The Registrar shall issue licence plates in the number and of the
|
|
11
|
+
# type and colour approved by the Minister."
|
|
12
|
+
# So the REGULATION delegates the number, type and colour to the MINISTER,
|
|
13
|
+
# and the Minister's approval is not itself published as an instrument. No
|
|
14
|
+
# dimension, no character metric, no serial grammar exists anywhere in
|
|
15
|
+
# Alberta law. The whole of Division 3 (ss. 63-75) was read; it legislates
|
|
16
|
+
# ELIGIBILITY and DISPLAY and nothing about what a plate looks like. This is
|
|
17
|
+
# the Washington/British Columbia pattern with one more hop.
|
|
18
|
+
#
|
|
19
|
+
# 2. THE SERIAL GRAMMAR IS THEREFORE UNSOURCED TO ANY ALBERTA PUBLICATION, AND
|
|
20
|
+
# THIS FILE SAYS SO ON ITS FACE. `ABC-1234` is universally reported and was
|
|
21
|
+
# NOT located on any alberta.ca page, in the Traffic Safety Act, or in
|
|
22
|
+
# AR 320/2002. It is carried with `period_evidence: secondary-wikipedia` and
|
|
23
|
+
# `format.evidence: secondary`, per the PRD-PLATES § 4 Wikipedia row's
|
|
24
|
+
# tagging condition. Contrast plates/ca-yt.yml, whose grammar for every class
|
|
25
|
+
# is in the regulation itself, and plates/ca-nt.yml, whose thirteen plate
|
|
26
|
+
# types are enumerated with their letter prefixes in the regulation. Alberta
|
|
27
|
+
# is the WEAKEST-sourced format in this seven-jurisdiction group and the
|
|
28
|
+
# ranking is stated so a verifier knows where to spend effort.
|
|
29
|
+
#
|
|
30
|
+
# 3. ALBERTA IS A ONE-PLATE PROVINCE THAT LEGISLATES A SECOND PLATE FOR
|
|
31
|
+
# OLD CARS, AND THAT SECOND PLATE IS A GENUINE HISTORIC ARTEFACT.
|
|
32
|
+
# AR 320/2002 s. 70(2)(a) forbids displaying "any other vehicle plate or
|
|
33
|
+
# device bearing numbers or letters or both that are identical to or have the
|
|
34
|
+
# general appearance of a licence plate". s. 66 then carves out, verbatim:
|
|
35
|
+
# "66 Despite section 70(2), the owner of a motor vehicle that is 25 years
|
|
36
|
+
# old or older and registered as a private passenger vehicle may attach to
|
|
37
|
+
# the front of it one, but not more than one, licence plate issued in
|
|
38
|
+
# Alberta in the year in which the vehicle was manufactured."
|
|
39
|
+
# A lawful Alberta front plate is thus, by statute, a PERIOD-CORRECT PLATE
|
|
40
|
+
# FROM THE VEHICLE'S BUILD YEAR — no current registration, no validity. Any
|
|
41
|
+
# consumer reading Alberta front plates will read expired historic serials as
|
|
42
|
+
# live registrations unless it knows this rule. It is modelled as a DISPLAY
|
|
43
|
+
# RULE, not a series, because no new plate is manufactured for it.
|
|
44
|
+
#
|
|
45
|
+
# 4. THE ONE SOURCED CHARSET RULE IN THE FILE IS ALBERTA'S OWN AND IT IS ABOUT
|
|
46
|
+
# ZERO. alberta.ca, on personalized plates, verbatim among the prohibited
|
|
47
|
+
# configurations: "the letter O (use the number zero)". The same page lists
|
|
48
|
+
# the substitution pairs Alberta polices to prevent look-alikes: 1/I, 1/L,
|
|
49
|
+
# 6/G, 5/S, 2/Z, 0/Q, 8/B, 3/E, 4/A. Note what that list implies and this
|
|
50
|
+
# file does NOT assert: it is a rule about PERSONALIZED plates, and it is not
|
|
51
|
+
# evidence about the regular-series alphabet.
|
|
52
|
+
#
|
|
53
|
+
# REGEX POLICY: as plates/gb.yml. `format.regex` is the round-trippable tier;
|
|
54
|
+
# `regex_strict` carries a sourced narrowing where one exists (here: only the
|
|
55
|
+
# personalized O-exclusion, which cannot go in `regex` because the lint
|
|
56
|
+
# generates O from the human pattern).
|
|
57
|
+
jurisdiction: ca-ab
|
|
58
|
+
authority:
|
|
59
|
+
name: Registrar of Motor Vehicle Services, Government of Alberta (plates issued through registry agents)
|
|
60
|
+
url: "https://www.alberta.ca/licence-plates"
|
|
61
|
+
binding: vehicle
|
|
62
|
+
binding_note: >-
|
|
63
|
+
AR 320/2002 s. 113 lets a registered owner "pass" a plate from one vehicle to
|
|
64
|
+
another of the same class that they own, and s. 68(1) lets a trailer plate be
|
|
65
|
+
transferred between the owner's own trailers with the Registrar's consent,
|
|
66
|
+
while s. 68(2) forbids passing a trailer plate "from one trailer owner to
|
|
67
|
+
another". The plate follows the OWNER's registration within a class, not the
|
|
68
|
+
vehicle.
|
|
69
|
+
instrument:
|
|
70
|
+
statute:
|
|
71
|
+
citation: "Traffic Safety Act, R.S.A. 2000, c. T-6"
|
|
72
|
+
note: "The Act creates the Registrar and the registration regime; the plate provisions live in the regulation below. The Act's own text was not fetched in this pass (recorded gap)."
|
|
73
|
+
regulation:
|
|
74
|
+
citation: "Operator Licensing and Vehicle Control Regulation, Alta. Reg. 320/2002, Part 3 Division 3 (Licence Plates), ss. 63, 63.1, 64, 65, 66, 66.1, 67, 68, 69, 70, 71, 72, 73, 74, 75; s. 115 (Personal licence plates)"
|
|
75
|
+
amendments_seen_in_text: "s. 63.1 added AR 160/2014 s2, amended 77/2022; s. 64 substituted AR 282/2020 s2; s. 66.1 as amended AR 253/2004 s3, 48/2005, 131/2010, 73/2012, 207/2020, 160/2026; s. 70 amended AR 282/2020 s3"
|
|
76
|
+
source: "https://kings-printer.alberta.ca/documents/Regs/2002_320.pdf # Division 3 ss. 63-75 and s. 115 read verbatim 2026-08-02 (PDF, text layer present)"
|
|
77
|
+
agency_page:
|
|
78
|
+
citation: "Government of Alberta, 'Licence plates' (alberta.ca), accessed 2026-08-02"
|
|
79
|
+
source: "https://www.alberta.ca/licence-plates # plate location, one-plate rule, veterans-plate dates, personalized-plate prohibitions incl. the O rule and the look-alike substitution list, the three named specialty plates"
|
|
80
|
+
licence: "Alberta King's Printer serves AR 320/2002 without click-through; it is an edict of government. alberta.ca content is Crown copyright, cited not reproduced."
|
|
81
|
+
|
|
82
|
+
artwork_risk:
|
|
83
|
+
posture: unresearched-crown-copyright-presumed
|
|
84
|
+
basis: >-
|
|
85
|
+
Crown copyright under s. 12 of the Copyright Act (Canada) is the default and
|
|
86
|
+
no Alberta disclaimer was found. Alberta is additionally the group's
|
|
87
|
+
THIRD-PARTY-MARK case, from its own regulation and its own web pages: two of
|
|
88
|
+
the three specialty plates alberta.ca names are professional sports club
|
|
89
|
+
marks (Calgary Flames, Edmonton Oilers), and AR 320/2002 s. 63.1(3) makes
|
|
90
|
+
every specialty plate the product of "a written agreement with[] an
|
|
91
|
+
organization". Alberta legislates that its specialty artwork is a
|
|
92
|
+
contracted third-party property — the same posture Montana reaches by a
|
|
93
|
+
different route (MCA 61-3-475's hold-harmless clause).
|
|
94
|
+
emblem_rule: >-
|
|
95
|
+
PRD-PLATES § 3 placeholder default applies to the wild-rose device, the
|
|
96
|
+
provincial wordmark, the Calgary Flames and Edmonton Oilers marks, and the
|
|
97
|
+
Royal Canadian Legion's "integrated maple leaf and poppy logo", which
|
|
98
|
+
AR 320/2002 s. 66.1(1) puts on the veterans' plate BY NAME. The Legion logo
|
|
99
|
+
is a third-party registered mark placed on a government plate by regulation;
|
|
100
|
+
no theory of Crown copyright reaches it.
|
|
101
|
+
sources:
|
|
102
|
+
- "https://kings-printer.alberta.ca/documents/Regs/2002_320.pdf # s. 63.1(3) written agreement with an organization; s. 66.1(1) the Royal Canadian Legion logo by name"
|
|
103
|
+
- "https://www.alberta.ca/licence-plates # Calgary Flames and Edmonton Oilers specialty plates"
|
|
104
|
+
|
|
105
|
+
display_rules:
|
|
106
|
+
count: >-
|
|
107
|
+
ONE plate. alberta.ca, verbatim: "You cannot display more than one licence
|
|
108
|
+
plate on your vehicle or any other type of plate that could be mistaken for
|
|
109
|
+
a valid licence plate." AR 320/2002 s. 70(2) is the regulation behind it.
|
|
110
|
+
location: >-
|
|
111
|
+
AR 320/2002 s. 70(1), verbatim: "The owner of a vehicle shall attach a
|
|
112
|
+
licence plate securely as follows: (a) if the vehicle is not a truck tractor
|
|
113
|
+
or a motor cycle, to the rear of the vehicle so that the lower edge of the
|
|
114
|
+
plate is not lower than the axle; (b) if the vehicle is a truck tractor, to
|
|
115
|
+
the front of the vehicle; (c) if the vehicle is a motor cycle, on the rear
|
|
116
|
+
mudguard or rear fender so that it is clearly visible."
|
|
117
|
+
truck_tractor_inversion: >-
|
|
118
|
+
Alberta puts the truck tractor's ONLY plate on the FRONT — the same outlier
|
|
119
|
+
Florida legislates (§ 320.0706 F.S.). Two jurisdictions on different
|
|
120
|
+
continents of the same continent reach the identical rule; it is not a
|
|
121
|
+
typo in either file.
|
|
122
|
+
historic_front_plate: >-
|
|
123
|
+
s. 66 (quoted in the header): a private passenger vehicle 25 years old or
|
|
124
|
+
older may carry, ON THE FRONT ONLY, one Alberta plate issued in the year the
|
|
125
|
+
vehicle was manufactured. This is a re-display permission for an EXPIRED
|
|
126
|
+
historic plate, not an issuance, so it has no series.
|
|
127
|
+
condition: "s. 71(1): no person shall drive a vehicle if the licence plate is not securely attached, 'legible and clearly visible at all times'. s. 71(2) excuses obstruction caused only by a trailer attached to the rear."
|
|
128
|
+
foreign_plates: "s. 70(2)(b) forbids displaying a plate issued by another jurisdiction 'unless the display is required by this Regulation or by the laws of the jurisdiction that issued the plate'."
|
|
129
|
+
sources:
|
|
130
|
+
- "https://kings-printer.alberta.ca/documents/Regs/2002_320.pdf # ss. 66, 70, 71"
|
|
131
|
+
- "https://www.alberta.ca/licence-plates # the one-plate sentence and the plate-location list"
|
|
132
|
+
|
|
133
|
+
common:
|
|
134
|
+
separator_note: >-
|
|
135
|
+
Alberta's serial is universally rendered with a hyphen (`ABC-1234`) and NO
|
|
136
|
+
Alberta publication states a separator glyph or a group gap. Under
|
|
137
|
+
PRD-PLATES § 2.8 the honest encoding of an authority that names no glyph is
|
|
138
|
+
a separator-only class, so every regex here spells the position `[- ]?`
|
|
139
|
+
while `pattern` shows the canonical printed hyphen. A § 2.6-forgiving
|
|
140
|
+
consumer deletes it either way.
|
|
141
|
+
dimensions_note: >-
|
|
142
|
+
NEGATIVE FINDING. No dimension appears in AR 320/2002 or on alberta.ca.
|
|
143
|
+
`design.plate` is absent from every series here, as in plates/ca-bc.yml and
|
|
144
|
+
plates/gb.yml.
|
|
145
|
+
charset_disagreement: >-
|
|
146
|
+
RECORDED, NOT AVERAGED (PRD-PLATES § 5.3). Two secondary readings of the
|
|
147
|
+
Alberta regular-series alphabet are in circulation: the world dossier
|
|
148
|
+
(aux/research/plates-2026-07/plates-research-us-world.md § 2.1) reports
|
|
149
|
+
"excludes I, O, Q, U"; the per-province encyclopedia article reports that
|
|
150
|
+
"A, E, I, O, Q, U are skipped" — i.e. all vowels plus Q. No Alberta source
|
|
151
|
+
resolves it. NEITHER is asserted: no `regex_strict` narrows the
|
|
152
|
+
regular-series alphabet in this file, and the disagreement is carried here
|
|
153
|
+
as the standing verifier target.
|
|
154
|
+
|
|
155
|
+
series:
|
|
156
|
+
|
|
157
|
+
# =========================================================================
|
|
158
|
+
# STANDARD PASSENGER.
|
|
159
|
+
# =========================================================================
|
|
160
|
+
- id: ca-ab-standard
|
|
161
|
+
class: standard
|
|
162
|
+
categories: [car, van, truck, bus]
|
|
163
|
+
period: { start: 2010 }
|
|
164
|
+
period_evidence: secondary-wikipedia
|
|
165
|
+
matching: strict
|
|
166
|
+
format:
|
|
167
|
+
pattern: "LLL-9999"
|
|
168
|
+
regex: '\A[A-Z]{3}[- ]?\d{4}\z'
|
|
169
|
+
evidence: secondary
|
|
170
|
+
progression: "not published"
|
|
171
|
+
design:
|
|
172
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
173
|
+
foreground: "#1B3F8B"
|
|
174
|
+
legend_top: "ALBERTA"
|
|
175
|
+
legend_bottom: "Wild Rose Country"
|
|
176
|
+
emblem: { present: true, rendered: placeholder, description: "wild rose device / provincial wordmark" }
|
|
177
|
+
rear_differs: false
|
|
178
|
+
notes: >-
|
|
179
|
+
THE FORMAT AND THE PERIOD ARE BOTH SECONDARY AND THE FILE DOES NOT
|
|
180
|
+
PRETEND OTHERWISE. Three letters, a hyphen and four numerals is the
|
|
181
|
+
arrangement every source reports and no Alberta publication states. The
|
|
182
|
+
reported first issue is June 2010; the encyclopedia row carries no
|
|
183
|
+
footnote for it, so it is tagged `secondary-wikipedia` under the
|
|
184
|
+
PRD-PLATES § 4 Wikipedia condition (tagged + article URL, so that every
|
|
185
|
+
such fact is enumerable in one pass if the decision is revisited). The
|
|
186
|
+
base design itself is reported as introduced in late 1983 and refreshed
|
|
187
|
+
with an updated provincial logo in July 2019 — BASE AND FORMAT HAVE
|
|
188
|
+
DIFFERENT LIFETIMES in Alberta as they do in Oregon and British Columbia,
|
|
189
|
+
and neither reported base date is asserted as a series boundary here.
|
|
190
|
+
No `regex_strict` is offered: see common.charset_disagreement.
|
|
191
|
+
sources:
|
|
192
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Alberta # FINDING AID (PRD-PLATES §4 Wikipedia row): the ABC-1234 arrangement, the reported June 2010 first issue, the reported 1983 base and 2019 logo refresh; accessed 2026-08-02"
|
|
193
|
+
- "https://kings-printer.alberta.ca/documents/Regs/2002_320.pdf # s. 63(1)-(2): the Registrar issues; the Minister approves number, type and colour"
|
|
194
|
+
|
|
195
|
+
- id: ca-ab-standard-3x3
|
|
196
|
+
class: standard
|
|
197
|
+
categories: [car, van, truck, bus]
|
|
198
|
+
period: { start: 1975, ended: true }
|
|
199
|
+
year_end_min: 2003
|
|
200
|
+
period_evidence: secondary-wikipedia
|
|
201
|
+
matching: strict
|
|
202
|
+
format:
|
|
203
|
+
pattern: "LLL-999"
|
|
204
|
+
regex: '\A[A-Z]{3}[- ]?\d{3}\z'
|
|
205
|
+
evidence: secondary
|
|
206
|
+
design:
|
|
207
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
208
|
+
foreground: "#1B3F8B"
|
|
209
|
+
legend_top: "ALBERTA"
|
|
210
|
+
legend_bottom: "Wild Rose Country"
|
|
211
|
+
rear_differs: false
|
|
212
|
+
notes: >-
|
|
213
|
+
THE "ONE SERIES BACK" REQUIREMENT, MET WEAKLY AND LABELLED AS SUCH. Three
|
|
214
|
+
letters and three numerals ran from a reported 1975 on a yellow base and
|
|
215
|
+
continued onto the white/red/blue base; the reported end is 2003, seven
|
|
216
|
+
years before the reported ABC-1234 start, and NO SOURCE EXPLAINS THE GAP.
|
|
217
|
+
Because the end year is contested by that gap, the schema's known-over-
|
|
218
|
+
undated shape is used: `ended: true` with `year_end_min: 2003` rather than
|
|
219
|
+
a hard `end`, which is exactly the case PRD-PLATES § 2.2 introduced it
|
|
220
|
+
for. "Wild Rose Country" is reported as the slogan from 1973, i.e. it
|
|
221
|
+
spans both series and is not an era signal.
|
|
222
|
+
sources:
|
|
223
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Alberta # FINDING AID: ABC-123 reported 1975-2003, yellow base, slogan from 1973; accessed 2026-08-02"
|
|
224
|
+
|
|
225
|
+
# =========================================================================
|
|
226
|
+
# CLASSES ALBERTA LEGISLATES BUT DOES NOT SPECIFY A GRAMMAR FOR.
|
|
227
|
+
# =========================================================================
|
|
228
|
+
- id: ca-ab-veterans
|
|
229
|
+
class: specialty
|
|
230
|
+
categories: [car, van, truck, motorcycle, moped]
|
|
231
|
+
period: { start: 2005 }
|
|
232
|
+
period_evidence: agency-stated-date
|
|
233
|
+
matching: recall-only
|
|
234
|
+
format:
|
|
235
|
+
pattern: "LLL-999"
|
|
236
|
+
regex: '\A[A-Z0-9](?:[- ]?[A-Z0-9])*\z'
|
|
237
|
+
evidence: none-published
|
|
238
|
+
design:
|
|
239
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
240
|
+
foreground: "#1B3F8B"
|
|
241
|
+
legend: "Veteran"
|
|
242
|
+
emblem: { present: true, rendered: placeholder, description: "integrated maple leaf and poppy logo of the Royal Canadian Legion (named in AR 320/2002 s. 66.1(1))" }
|
|
243
|
+
notes: >-
|
|
244
|
+
THE DESIGN IS IN THE REGULATION EVEN THOUGH THE SERIAL IS NOT.
|
|
245
|
+
AR 320/2002 s. 66.1(1), verbatim: "The Registrar may issue a veterans'
|
|
246
|
+
licence plate that includes the word 'Veteran' and bears a depiction of
|
|
247
|
+
the integrated maple leaf and poppy logo of the Royal Canadian Legion to
|
|
248
|
+
an individual who meets the criteria set out in this section." s. 66.1(6)
|
|
249
|
+
restricts it to passenger-class motor vehicles, Class 2 farm vehicles,
|
|
250
|
+
motor cycles (not off-highway vehicles) and mopeds. s. 66.1(4) is the
|
|
251
|
+
unusual bit: "The evaluation of service documentation ... is the EXCLUSIVE
|
|
252
|
+
RESPONSIBILITY of the Royal Canadian Legion, Alberta-NWT Command" — a
|
|
253
|
+
government plate whose eligibility adjudication is contracted out to a
|
|
254
|
+
private body, with its own appeal process. `period.start: 2005` is
|
|
255
|
+
alberta.ca's own statement: "The Government of Alberta introduced a
|
|
256
|
+
special veterans' licence plate in 2005 and a motorcycle veterans' licence
|
|
257
|
+
plate in 2012". The motorcycle variant is recorded here rather than given
|
|
258
|
+
its own series because no format difference is sourced. s. 66.1(9)-(10)
|
|
259
|
+
let the Registrar recall the plate when eligibility lapses, and
|
|
260
|
+
alberta.ca adds that on the veteran's death the plate "may be retained
|
|
261
|
+
only as a memento but can no longer be used on a vehicle".
|
|
262
|
+
sources:
|
|
263
|
+
- "https://kings-printer.alberta.ca/documents/Regs/2002_320.pdf # s. 66.1(1), (4), (6), (9), (10)"
|
|
264
|
+
- "https://www.alberta.ca/licence-plates # 2005 introduction, 2012 motorcycle variant, memento rule"
|
|
265
|
+
|
|
266
|
+
- id: ca-ab-antique
|
|
267
|
+
class: historic
|
|
268
|
+
categories: [car, van, truck]
|
|
269
|
+
period: { start: 2002 }
|
|
270
|
+
period_evidence: instrument-in-force-upper-bound
|
|
271
|
+
matching: recall-only
|
|
272
|
+
format:
|
|
273
|
+
pattern: "999999"
|
|
274
|
+
regex: '\A[A-Z0-9](?:[- ]?[A-Z0-9])*\z'
|
|
275
|
+
evidence: none-published
|
|
276
|
+
design:
|
|
277
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
278
|
+
foreground: "#1B3F8B"
|
|
279
|
+
legend: "ANTIQUE"
|
|
280
|
+
notes: >-
|
|
281
|
+
AR 320/2002 s. 65(1), verbatim: "The Registrar shall issue a licence plate
|
|
282
|
+
that has 'antique' on it if the Registrar issues a certificate of
|
|
283
|
+
registration for an antique motor vehicle." The LEGEND is therefore
|
|
284
|
+
statutory even though the serial is not. s. 65(2)-(3) give the owner a
|
|
285
|
+
genuine choice the schema should not flatten: instead of the antique
|
|
286
|
+
plate, the Registrar may approve "a licence plate that was issued in
|
|
287
|
+
Alberta, in the year an antique motor vehicle was manufactured and that is
|
|
288
|
+
in a condition satisfactory to the Registrar", and the owner "may attach
|
|
289
|
+
either ... but not both". A vehicle-keyed consumer can therefore meet an
|
|
290
|
+
Alberta-registered antique wearing a plate from the 1930s as its LIVE
|
|
291
|
+
registration. `period.start: 2002` is the year AR 320/2002 was made and is
|
|
292
|
+
an UPPER BOUND on the regime's start, not its creation — Alberta plainly
|
|
293
|
+
registered antiques before 2002 and the predecessor instrument was not
|
|
294
|
+
traced.
|
|
295
|
+
sources:
|
|
296
|
+
- "https://kings-printer.alberta.ca/documents/Regs/2002_320.pdf # s. 65(1)-(5)"
|
|
297
|
+
|
|
298
|
+
- id: ca-ab-personalized
|
|
299
|
+
class: personalized
|
|
300
|
+
categories: [car, van, truck, motorcycle]
|
|
301
|
+
period: { start: 2002 }
|
|
302
|
+
period_evidence: instrument-in-force-upper-bound
|
|
303
|
+
matching: recall-only
|
|
304
|
+
format:
|
|
305
|
+
pattern: "LLLLLL"
|
|
306
|
+
regex: '\A[A-Z0-9](?:[- ]?[A-Z0-9])*\z'
|
|
307
|
+
evidence: agency-page-for-restrictions-only
|
|
308
|
+
charset:
|
|
309
|
+
excluded: ["O"]
|
|
310
|
+
notes: >-
|
|
311
|
+
alberta.ca, verbatim, among the things a personalized configuration
|
|
312
|
+
must not contain: "the letter O (use the number zero)". This is the
|
|
313
|
+
Idaho rule exactly ("The letter O and the number zero look the same on
|
|
314
|
+
a license plate, therefore only the number zero will be accepted") and
|
|
315
|
+
it is carried as `charset.excluded` rather than in a regex: § 2.7
|
|
316
|
+
makes `regex` the round-trippable tier and `recall-only` forbids a
|
|
317
|
+
strict twin, so there is nowhere in the regex tiers to put it.
|
|
318
|
+
design:
|
|
319
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
320
|
+
foreground: "#1B3F8B"
|
|
321
|
+
notes: >-
|
|
322
|
+
AR 320/2002 s. 115 is the personal-plate section (its text was located in
|
|
323
|
+
the regulation's index and its operative body was not extracted in this
|
|
324
|
+
pass — recorded gap). alberta.ca carries the substantive rules and they
|
|
325
|
+
are worth recording because Alberta polices LOOK-ALIKES explicitly, by
|
|
326
|
+
enumerated substitution pair: "Letters and numbers cannot be substituted
|
|
327
|
+
to create a plate similar to an existing plate such as H1 QT and HI QT.
|
|
328
|
+
Common substitutions include: Number 1 and the letter I; Number 1 and the
|
|
329
|
+
letter L; Number 6 and the letter G; Number 5 and the letter S; Number 2
|
|
330
|
+
and the letter Z; Number 0 and the letter Q; Number 8 and the letter B;
|
|
331
|
+
Number 3 and the letter E; Number 4 and the letter A." That is a
|
|
332
|
+
publishable OCR-confusability table straight from a motor-vehicle
|
|
333
|
+
authority. A personalized plate may not use "a configuration used by Motor
|
|
334
|
+
Vehicles Services for regular series licence plates", and may not be
|
|
335
|
+
registered on dealer plates, antiques, consular corps, disabled or
|
|
336
|
+
specialty plates. No character COUNT is stated on the page.
|
|
337
|
+
sources:
|
|
338
|
+
- "https://www.alberta.ca/licence-plates # the O rule, the substitution table, the ineligible classes, the no-regular-series rule"
|
|
339
|
+
- "https://kings-printer.alberta.ca/documents/Regs/2002_320.pdf # s. 115 Personal licence plates (index entry)"
|
|
340
|
+
|
|
341
|
+
- id: ca-ab-specialty-index
|
|
342
|
+
class: specialty
|
|
343
|
+
categories: [car, van, truck]
|
|
344
|
+
period: { start: 2014 }
|
|
345
|
+
period_evidence: enabling-instrument
|
|
346
|
+
matching: recall-only
|
|
347
|
+
format:
|
|
348
|
+
pattern: "LLL-999"
|
|
349
|
+
regex: '\A[A-Z0-9](?:[- ]?[A-Z0-9])*\z'
|
|
350
|
+
evidence: none-published
|
|
351
|
+
design:
|
|
352
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
353
|
+
foreground: "#1B3F8B"
|
|
354
|
+
emblem: { present: true, rendered: placeholder }
|
|
355
|
+
programs_named_by_the_authority:
|
|
356
|
+
- "Calgary Flames"
|
|
357
|
+
- "Edmonton Oilers"
|
|
358
|
+
- "Support our Troops"
|
|
359
|
+
program_count: 3
|
|
360
|
+
program_count_basis: "alberta.ca names exactly three specialty plates and links a page for each. Alberta publishes no total and no catalogue; three is what the authority lists, not an estimate."
|
|
361
|
+
notes: >-
|
|
362
|
+
THE INDEX ENTRY, per PRD-PLATES § 2.5 (individual specialty DESIGNS are
|
|
363
|
+
L4 work). `period.start: 2014` is the enabling instrument, not a program
|
|
364
|
+
date: s. 63.1 was ADDED to AR 320/2002 by AR 160/2014 s. 2 and amended by
|
|
365
|
+
AR 77/2022. s. 63.1(3): the Registrar, "on the application of, and having
|
|
366
|
+
entered into a written agreement with, an organization, may create a
|
|
367
|
+
special type of licence plate with respect to that organization".
|
|
368
|
+
s. 63.1(4) requires the Registrar to PUBLISH the creation criteria "on the
|
|
369
|
+
Registrar's website maintained on the Government of Alberta website" —
|
|
370
|
+
a statutory publication duty whose output was NOT located in this pass and
|
|
371
|
+
which is the single highest-value follow-up for Alberta. s. 63.1(5):
|
|
372
|
+
"Specialty licence plates must be in the form and design approved by the
|
|
373
|
+
Registrar." s. 63.1(6) lets the Registrar restrict a specialty plate to
|
|
374
|
+
named vehicle classes in writing.
|
|
375
|
+
sources:
|
|
376
|
+
- "https://kings-printer.alberta.ca/documents/Regs/2002_320.pdf # s. 63.1(1)-(6), enactment AR 160/2014 s2, amendment 77/2022"
|
|
377
|
+
- "https://www.alberta.ca/licence-plates # the three named programs"
|
|
378
|
+
|
|
379
|
+
- id: ca-ab-dealer
|
|
380
|
+
class: dealer
|
|
381
|
+
categories: [car, van, truck, trailer]
|
|
382
|
+
period: { start: 2002 }
|
|
383
|
+
period_evidence: instrument-in-force-upper-bound
|
|
384
|
+
matching: recall-only
|
|
385
|
+
format:
|
|
386
|
+
pattern: "LL-9999"
|
|
387
|
+
regex: '\A[A-Z0-9](?:[- ]?[A-Z0-9])*\z'
|
|
388
|
+
evidence: none-published
|
|
389
|
+
design:
|
|
390
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
391
|
+
foreground: "#1B3F8B"
|
|
392
|
+
notes: >-
|
|
393
|
+
AR 320/2002 ss. 72-74. s. 72(4) states the binding plainly and it is the
|
|
394
|
+
classic dealer-plate shape: "A dealer's certificate of registration and
|
|
395
|
+
the licence plates issued with it apply to ALL MOTOR VEHICLES HELD FOR
|
|
396
|
+
SALE by the holder of the certificate of registration from time to time" —
|
|
397
|
+
the plate is bound to the BUSINESS, not to any vehicle. s. 72(5) excludes
|
|
398
|
+
vehicles held for hire. s. 73 runs the parallel regime for trailer dealers
|
|
399
|
+
and s. 74 for dealers' plates generally. No serial grammar is published,
|
|
400
|
+
hence recall-only. Separate from ca-ab-personalized, which s. 115 and
|
|
401
|
+
alberta.ca both bar from dealer plates.
|
|
402
|
+
sources:
|
|
403
|
+
- "https://kings-printer.alberta.ca/documents/Regs/2002_320.pdf # ss. 72(1)-(6), 73, 74"
|
|
404
|
+
|
|
405
|
+
- id: ca-ab-trailer
|
|
406
|
+
class: trailer
|
|
407
|
+
categories: [trailer]
|
|
408
|
+
period: { start: 2002 }
|
|
409
|
+
period_evidence: instrument-in-force-upper-bound
|
|
410
|
+
matching: recall-only
|
|
411
|
+
format:
|
|
412
|
+
pattern: "9999-LL"
|
|
413
|
+
regex: '\A[A-Z0-9](?:[- ]?[A-Z0-9])*\z'
|
|
414
|
+
evidence: none-published
|
|
415
|
+
design:
|
|
416
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
417
|
+
foreground: "#1B3F8B"
|
|
418
|
+
notes: >-
|
|
419
|
+
AR 320/2002 s. 68: a trailer plate may be transferred between trailers of
|
|
420
|
+
the same owner with the Registrar's consent (s. 68(1)) but never "from one
|
|
421
|
+
trailer owner to another" (s. 68(2)); a trailer-rental business may not
|
|
422
|
+
rent out a trailer without a trailer plate on it (s. 68(3)). s. 69 adds
|
|
423
|
+
the Alberta oddity: the Registrar "may issue a TRAILER licence plate to
|
|
424
|
+
the owner of a COMMERCIAL VEHICLE if the owner is engaged in the business
|
|
425
|
+
of towing trailers", and that owner "may attach the trailer licence plate
|
|
426
|
+
to a trailer towed by the commercial vehicle" — a trailer plate bound to
|
|
427
|
+
the tractor's operator rather than to any trailer. Recall-only: no
|
|
428
|
+
grammar published; the pattern shown is a placeholder shape only.
|
|
429
|
+
sources:
|
|
430
|
+
- "https://kings-printer.alberta.ca/documents/Regs/2002_320.pdf # ss. 68(1)-(3), 69(1)-(2)"
|