vehicles 0.9.0 → 0.9.2
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/CHANGELOG.md +57 -7
- data/README.md +353 -69
- data/data/PROVENANCE-vehicles.md +2 -2
- data/data/plates/PROVENANCE.md +2 -2
- data/data/plates/_decode/at-districts.yml +2 -2
- data/data/plates/_decode/cn-issuing-offices.yml +2 -2
- data/data/plates/_decode/cn-provinces.yml +2 -2
- data/data/plates/_decode/cz-kraj.yml +1 -1
- data/data/plates/_decode/dk-serial-blocks.yml +1 -1
- data/data/plates/_decode/es-provinces.yml +1 -1
- data/data/plates/_decode/fr-departements.yml +2 -2
- data/data/plates/_decode/gb-age-identifiers.yml +1 -1
- data/data/plates/_decode/gb-memory-tags.yml +1 -1
- data/data/plates/_decode/gr-prefectures.yml +1 -1
- data/data/plates/_decode/hr-cities.yml +3 -3
- data/data/plates/_decode/ie-counties.yml +3 -3
- data/data/plates/_decode/in-state-codes.yml +2 -2
- data/data/plates/_decode/it-provinces.yml +3 -3
- data/data/plates/_decode/jp-office-marks.yml +2 -2
- data/data/plates/_decode/jp-use-marks.yml +2 -2
- data/data/plates/_decode/kr-authority-marks.yml +1 -1
- data/data/plates/_decode/mx-entity-series.yml +1 -1
- data/data/plates/_decode/my-index-marks.yml +4 -4
- data/data/plates/_decode/pt-trailer-services.yml +1 -1
- data/data/plates/_decode/ro-counties.yml +1 -1
- data/data/plates/_decode/se-diplomatic.yml +1 -1
- data/data/plates/_decode/si-regions.yml +1 -1
- data/data/plates/_decode/ua-regions.yml +1 -1
- data/data/plates/_meta/classes.yml +1 -1
- data/data/plates/_meta/separators.yml +1 -1
- data/data/plates/ad.yml +555 -52
- data/data/plates/ar.yml +8 -8
- data/data/plates/at.yml +91 -10
- data/data/plates/au-act.yml +13 -13
- data/data/plates/au-nsw.yml +9 -9
- data/data/plates/au-nt.yml +13 -14
- data/data/plates/au-qld.yml +7 -7
- data/data/plates/au-sa.yml +7 -7
- data/data/plates/au-tas.yml +10 -10
- data/data/plates/au-vic.yml +6 -6
- data/data/plates/au-wa.yml +8 -8
- data/data/plates/be.yml +11 -11
- data/data/plates/br.yml +14 -14
- data/data/plates/ca-ab.yml +10 -10
- data/data/plates/ca-bc.yml +6 -6
- data/data/plates/ca-mb.yml +4 -4
- data/data/plates/ca-nb.yml +9 -9
- data/data/plates/ca-nl.yml +11 -11
- data/data/plates/ca-ns.yml +12 -12
- data/data/plates/ca-nt.yml +7 -7
- data/data/plates/ca-nu.yml +7 -7
- data/data/plates/ca-on.yml +21 -21
- data/data/plates/ca-pe.yml +13 -13
- data/data/plates/ca-qc.yml +11 -11
- data/data/plates/ca-sk.yml +6 -6
- data/data/plates/ca-yt.yml +6 -6
- data/data/plates/ch.yml +14 -14
- data/data/plates/cn.yml +9 -9
- data/data/plates/cy.yml +6 -6
- data/data/plates/cz.yml +9 -9
- data/data/plates/de.yml +8 -8
- data/data/plates/dk.yml +12 -12
- data/data/plates/ee.yml +13 -13
- data/data/plates/eg.yml +708 -0
- data/data/plates/es.yml +8 -8
- data/data/plates/fi.yml +14 -14
- data/data/plates/fr.yml +12 -12
- data/data/plates/gb.yml +16 -16
- data/data/plates/gr.yml +14 -14
- data/data/plates/hr.yml +15 -15
- data/data/plates/hu.yml +16 -16
- data/data/plates/ie.yml +7 -7
- data/data/plates/in.yml +7 -7
- data/data/plates/is.yml +3 -3
- data/data/plates/it.yml +21 -21
- data/data/plates/jp.yml +121 -121
- data/data/plates/kr.yml +6 -6
- data/data/plates/li.yml +6 -6
- data/data/plates/lt.yml +10 -10
- data/data/plates/lu.yml +4 -4
- data/data/plates/lv.yml +9 -9
- data/data/plates/mc.yml +4 -4
- data/data/plates/mt.yml +5 -5
- data/data/plates/mx.yml +7 -7
- data/data/plates/my.yml +18 -18
- data/data/plates/ng.yml +346 -0
- data/data/plates/nl.yml +5 -5
- data/data/plates/no.yml +7 -7
- data/data/plates/nz.yml +18 -18
- data/data/plates/pl.yml +4 -4
- data/data/plates/pt.yml +13 -5
- data/data/plates/ro.yml +14 -14
- data/data/plates/se.yml +13 -13
- data/data/plates/si.yml +8 -8
- data/data/plates/sk.yml +15 -15
- data/data/plates/sm.yml +7 -7
- data/data/plates/th.yml +10 -10
- data/data/plates/tr.yml +432 -0
- data/data/plates/ua.yml +9 -9
- data/data/plates/us-ak.yml +11 -11
- data/data/plates/us-al.yml +12 -12
- data/data/plates/us-ar.yml +15 -15
- data/data/plates/us-as.yml +10 -10
- data/data/plates/us-az.yml +10 -10
- data/data/plates/us-ca.yml +13 -13
- data/data/plates/us-co.yml +14 -14
- data/data/plates/us-ct.yml +24 -24
- data/data/plates/us-dc.yml +7 -7
- data/data/plates/us-de.yml +10 -10
- data/data/plates/us-fl.yml +17 -17
- data/data/plates/us-ga.yml +10 -10
- data/data/plates/us-gu.yml +11 -11
- data/data/plates/us-hi.yml +11 -11
- data/data/plates/us-ia.yml +9 -9
- data/data/plates/us-id.yml +13 -13
- data/data/plates/us-il.yml +11 -11
- data/data/plates/us-in.yml +9 -9
- data/data/plates/us-ks.yml +8 -8
- data/data/plates/us-ky.yml +11 -11
- data/data/plates/us-la.yml +11 -11
- data/data/plates/us-ma.yml +10 -10
- data/data/plates/us-md.yml +7 -7
- data/data/plates/us-me.yml +16 -16
- data/data/plates/us-mi.yml +8 -8
- data/data/plates/us-mn.yml +13 -13
- data/data/plates/us-mo.yml +13 -13
- data/data/plates/us-mp.yml +12 -12
- data/data/plates/us-ms.yml +8 -8
- data/data/plates/us-mt.yml +12 -12
- data/data/plates/us-nc.yml +12 -12
- data/data/plates/us-nd.yml +10 -10
- data/data/plates/us-ne.yml +10 -10
- data/data/plates/us-nh.yml +8 -8
- data/data/plates/us-nj.yml +8 -8
- data/data/plates/us-nm.yml +14 -14
- data/data/plates/us-nv.yml +18 -18
- data/data/plates/us-ny.yml +17 -17
- data/data/plates/us-oh.yml +13 -13
- data/data/plates/us-ok.yml +12 -12
- data/data/plates/us-or.yml +15 -15
- data/data/plates/us-pa.yml +14 -14
- data/data/plates/us-pr.yml +15 -15
- data/data/plates/us-ri.yml +10 -10
- data/data/plates/us-sc.yml +7 -7
- data/data/plates/us-sd.yml +12 -12
- data/data/plates/us-tn.yml +8 -8
- data/data/plates/us-tx.yml +17 -17
- data/data/plates/us-ut.yml +12 -12
- data/data/plates/us-va.yml +14 -14
- data/data/plates/us-vi.yml +16 -16
- data/data/plates/us-vt.yml +9 -9
- data/data/plates/us-wa.yml +18 -18
- data/data/plates/us-wi.yml +8 -8
- data/data/plates/us-wv.yml +9 -9
- data/data/plates/us-wy.yml +10 -10
- data/data/plates/va.yml +7 -7
- data/data/plates/za.yml +11 -11
- data/data/vehicles.json +121081 -62015
- data/lib/generators/vehicles/templates/initializer.rb +21 -12
- data/lib/generators/vehicles/templates/vehicles_refresh_job.rb +8 -4
- data/lib/vehicles/color.rb +8 -1
- data/lib/vehicles/colors.rb +14 -10
- data/lib/vehicles/configuration.rb +82 -3
- data/lib/vehicles/data_source.rb +220 -0
- data/lib/vehicles/dataset.rb +38 -6
- data/lib/vehicles/dataset_resolution.rb +39 -3
- data/lib/vehicles/dataset_slice.rb +90 -0
- data/lib/vehicles/hosted_result.rb +94 -0
- data/lib/vehicles/http.rb +75 -7
- data/lib/vehicles/id_lookup.rb +37 -0
- data/lib/vehicles/kind_rule.rb +63 -0
- data/lib/vehicles/labels.rb +131 -0
- data/lib/vehicles/make.rb +45 -19
- data/lib/vehicles/model.rb +66 -19
- data/lib/vehicles/model_match.rb +16 -2
- data/lib/vehicles/model_matcher.rb +6 -7
- data/lib/vehicles/plates/series.rb +87 -8
- data/lib/vehicles/plates/template_fill.rb +2 -2
- data/lib/vehicles/plates/templates.rb +9 -5
- data/lib/vehicles/plates.rb +54 -8
- data/lib/vehicles/providers/hosted_provider.rb +145 -32
- data/lib/vehicles/providers/local_provider.rb +2 -2
- data/lib/vehicles/refresh_result.rb +74 -0
- data/lib/vehicles/refresher.rb +190 -54
- data/lib/vehicles/release_checks.rb +72 -0
- data/lib/vehicles/text_matcher.rb +19 -10
- data/lib/vehicles/validators/vehicle_make_validator.rb +18 -1
- data/lib/vehicles/validators/vehicle_model_validator.rb +17 -1
- data/lib/vehicles/version.rb +1 -1
- data/lib/vehicles.rb +119 -67
- data/rakelib/data_refresh.rake +1 -1
- data/rakelib/plates_refresh.rake +1 -1
- data/sig/vehicles.rbs +67 -13
- metadata +13 -2
data/data/plates/ca-pe.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/ca-pe.yml — Prince Edward Island, Canada (
|
|
1
|
+
# plates/ca-pe.yml — Prince Edward Island, Canada (the plates spec gate L2/L3, Canada east wave).
|
|
2
2
|
#
|
|
3
3
|
# THE SMALLEST CANADIAN PROVINCE AND, PER PLATE, THE MOST INVENTIVE: Prince
|
|
4
4
|
# Edward Island has changed its base design roughly every decade since 1973, has
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
# stacked is recorded in `design`. A normaliser that drops stacked characters
|
|
51
51
|
# will silently corrupt every Prince Edward Island commercial plate.
|
|
52
52
|
#
|
|
53
|
-
# SEPARATOR NOTE (
|
|
53
|
+
# SEPARATOR NOTE (the plates spec §2.6): the gap in a Prince Edward Island serial is
|
|
54
54
|
# occupied by the PROVINCIAL CREST — a graphic separator, like Ontario's crown.
|
|
55
55
|
# It is an emblem (see `design.emblem`), never part of the serial. Every `pattern`
|
|
56
56
|
# spells the gap as the emitted space; every regex accepts it as optional.
|
|
@@ -76,7 +76,7 @@ instrument:
|
|
|
76
76
|
- "https://www.princeedwardisland.ca/sites/default/files/legislation/h-05-highway_traffic_act.pdf # Highway Traffic Act consolidation, current to 29 May 2026, fetched and text-extracted 2026-08-02 — every statutory quotation in this file"
|
|
77
77
|
licence: >-
|
|
78
78
|
The Highway Traffic Act is an EDICT OF GOVERNMENT and its text is
|
|
79
|
-
uncopyrightable (
|
|
79
|
+
uncopyrightable (the plates spec §4). Every verbatim quotation of statute in this
|
|
80
80
|
file is of that text.
|
|
81
81
|
fetch_note: >-
|
|
82
82
|
princeedwardisland.ca serves the STATUTE PDF freely but sits behind a Radware
|
|
@@ -93,7 +93,7 @@ artwork_risk:
|
|
|
93
93
|
open licence covering plate ARTWORK was located. The statute TEXT is free as an
|
|
94
94
|
edict of government and is quoted freely; nothing else is assumed.
|
|
95
95
|
emblem_rule: >-
|
|
96
|
-
|
|
96
|
+
the plates spec §3 placeholder default applies. The provincial escutcheon used as
|
|
97
97
|
the serial separator, the Province House facsimile on the 2013 base and the
|
|
98
98
|
provincial coat of arms are rendered `placeholder`. The escutcheon and arms
|
|
99
99
|
carry protection independent of copyright; unresearched, flagged.
|
|
@@ -159,7 +159,7 @@ common:
|
|
|
159
159
|
and QB C12 forms after QZ 999. The 1997 base dropped county coding entirely.
|
|
160
160
|
A parse API must not read a modern Prince Edward Island serial as geographic;
|
|
161
161
|
it must read a 1993-1997 one that way. Both facts are the article's.
|
|
162
|
-
source_secondary: "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Prince_Edward_Island # TAGGED SECONDARY (
|
|
162
|
+
source_secondary: "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Prince_Edward_Island # TAGGED SECONDARY (the plates spec §4, owner override 2026-08-02), read 2026-08-02: every serial arrangement in this file, the county coding and the base dates"
|
|
163
163
|
|
|
164
164
|
classes_not_modelled:
|
|
165
165
|
motorcycle:
|
|
@@ -201,7 +201,7 @@ classes_not_modelled:
|
|
|
201
201
|
"$5 for a new license plate and $10 for a conservation or Canada's Food Island
|
|
202
202
|
plate".
|
|
203
203
|
why_not_modelled: >-
|
|
204
|
-
|
|
204
|
+
the plates spec §2.5 keeps individual specialty DESIGNS out of v1, and neither
|
|
205
205
|
programme's serial grammar is stated anywhere. The programmes are indexed here
|
|
206
206
|
with the government's own words instead.
|
|
207
207
|
sources:
|
|
@@ -276,7 +276,7 @@ series:
|
|
|
276
276
|
THE LAST SENTENCE IS THE MODELLING FACT: there is no forced re-plating, so
|
|
277
277
|
the 2013 base below is not merely still on the road but still LAWFULLY
|
|
278
278
|
CURRENT, and the two series genuinely overlap. That is the parallel-issuance
|
|
279
|
-
case
|
|
279
|
+
case the plates spec §2.2 contemplates.
|
|
280
280
|
sources:
|
|
281
281
|
- "https://web.archive.org/web/20231201163420/https://www.princeedwardisland.ca/en/news/province-unveils-new-license-plates # Government of Prince Edward Island news release, 16 November 2022: the new design, the first-ever distinct electric-vehicle plate, the 6-digit numbering statement, the late-December-2022 availability, the fees and the no-forced-replacement rule — all quoted above. Read via the Internet Archive 2026-08-02; the live page is behind a bot defence."
|
|
282
282
|
- "https://www.princeedwardisland.ca/sites/default/files/legislation/h-05-highway_traffic_act.pdf # HTA s. 20(1) (one plate), s. 20(2) (the content rule), s. 20(3) (Crown property), s. 21(1.1),(2) (rear, and front for a truck-tractor), s. 21(3),(3.1) (300 mm, no obscuring)"
|
|
@@ -307,7 +307,7 @@ series:
|
|
|
307
307
|
variants:
|
|
308
308
|
- name: "six-character arrangement on the same base"
|
|
309
309
|
format: { pattern: "L9 99L", regex: '\A[A-Z]\d ?\d{2}[A-Z]\z' }
|
|
310
|
-
note: "the article records A1 23B alongside 12 3AB on the 2013 base, the second taking over when the first exhausted at 99 9ZZ. A variant rather than a series because the base, the period and everything else are identical (
|
|
310
|
+
note: "the article records A1 23B alongside 12 3AB on the 2013 base, the second taking over when the first exhausted at 99 9ZZ. A variant rather than a series because the base, the period and everything else are identical (the plates spec §2.3)."
|
|
311
311
|
design:
|
|
312
312
|
plate: { w: 12, h: 6, unit: in, plate_basis: convention }
|
|
313
313
|
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
@@ -386,7 +386,7 @@ series:
|
|
|
386
386
|
2022 release as the standard base and earns `period_evidence:
|
|
387
387
|
agency-stated-date`. The ARRANGEMENT is the article's. Authored as its own
|
|
388
388
|
series rather than a variant because BOTH the design and the format differ from
|
|
389
|
-
ca-pe-standard-2022, which is the
|
|
389
|
+
ca-pe-standard-2022, which is the plates spec §2.3 test twice over.
|
|
390
390
|
|
|
391
391
|
# =========================================================================
|
|
392
392
|
# COMMERCIAL — and the stacked-character case.
|
|
@@ -466,7 +466,7 @@ series:
|
|
|
466
466
|
Edward Island "Service Vehicle" plate, and the choice is flagged: the article
|
|
467
467
|
does not say who holds them, and no instrument names the class. If a verifier
|
|
468
468
|
establishes that the class is commercial rather than governmental, the class
|
|
469
|
-
value moves and the id stays (
|
|
469
|
+
value moves and the id stays (the quality spec I-5/I-6). Entirely secondary.
|
|
470
470
|
|
|
471
471
|
# =========================================================================
|
|
472
472
|
# TRAILER.
|
|
@@ -480,7 +480,7 @@ series:
|
|
|
480
480
|
format:
|
|
481
481
|
pattern: 'T\LR99T99'
|
|
482
482
|
regex: '\ATLR\d{2}T\d{2}\z'
|
|
483
|
-
charset: { notes: "the literal TLR opens the serial and a further literal T sits between the two digit pairs — an unusual shape, and the article gives it as TLR12T34 with no note about stacking. NOTE THE PATTERN ESCAPE: the L in TLR is a literal L, so the pattern writes `\L` (
|
|
483
|
+
charset: { notes: "the literal TLR opens the serial and a further literal T sits between the two digit pairs — an unusual shape, and the article gives it as TLR12T34 with no note about stacking. NOTE THE PATTERN ESCAPE: the L in TLR is a literal L, so the pattern writes `\L` (the plates spec §2.2, owner ruling 2026-08-02), single-quoted so YAML keeps the backslash" }
|
|
484
484
|
design:
|
|
485
485
|
plate: { w: 12, h: 6, unit: in, plate_basis: convention }
|
|
486
486
|
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
@@ -512,7 +512,7 @@ series:
|
|
|
512
512
|
format:
|
|
513
513
|
pattern: 'D\LR9999'
|
|
514
514
|
regex: '\ADLR ?\d{4}\z'
|
|
515
|
-
charset: { notes: "the literal DLR is the class marker; four numerals follow. The L is escaped as `\L` in the pattern because L is the DSL's letter token (
|
|
515
|
+
charset: { notes: "the literal DLR is the class marker; four numerals follow. The L is escaped as `\L` in the pattern because L is the DSL's letter token (the plates spec §2.2). The arrangement is the article's; that the plate must carry a distinguishing letter or device is STATUTORY — see `statutory_basis`." }
|
|
516
516
|
design:
|
|
517
517
|
plate: { w: 12, h: 6, unit: in, plate_basis: convention }
|
|
518
518
|
background: { color: "#FFD100", finish: retroreflective, hex_basis: observed }
|
|
@@ -583,7 +583,7 @@ series:
|
|
|
583
583
|
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Prince_Edward_Island # TAGGED SECONDARY: the volunteer-firefighter series from 1993 (A12), through 1A1 on the 1997 and 2007 bases, to 12 3FA on the 2013 base with blocks FD to FS"
|
|
584
584
|
notes: >-
|
|
585
585
|
`class: specialty` for the same reason as Nova Scotia's firefighter plate: the
|
|
586
|
-
vocabulary has no firefighter member and
|
|
586
|
+
vocabulary has no firefighter member and the plates spec §2.3 forbids inventing
|
|
587
587
|
one. Entirely secondary. Worth authoring because the embedded literal F makes
|
|
588
588
|
the shape recognisable, and because the Canada east wave now carries a
|
|
589
589
|
firefighter series in two provinces — Nova Scotia's with a statutory grammar
|
data/data/plates/ca-qc.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/ca-qc.yml — Québec, Canada (
|
|
1
|
+
# plates/ca-qc.yml — Québec, Canada (the plates spec gate L2/L3, Canada east wave).
|
|
2
2
|
#
|
|
3
3
|
# QUÉBEC IS THE BEST-LEGISLATED PLATE JURISDICTION IN CANADA AND ONE OF THE BEST
|
|
4
4
|
# IN THIS DATASET. Where Ontario, Nova Scotia and New Brunswick leave the whole
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
# n'en est pas déjà muni, lors du remplacement de la plaque. » Inserted by
|
|
54
54
|
# décret 968-2017, art. 1. A DAY, IN THE INSTRUMENT, FOR A DESIGN. See
|
|
55
55
|
# ca-qc-electric-2017 for the disagreement this creates with the secondary
|
|
56
|
-
# record, which is recorded and not averaged (
|
|
56
|
+
# record, which is recorded and not averaged (the plates spec §5.3).
|
|
57
57
|
#
|
|
58
58
|
# 4. QUÉBEC IS A ONE-PLATE PROVINCE, REAR, WITH ONE STATUTORY INVERSION.
|
|
59
59
|
# CSR art. 30 al. 1, verbatim: « Le propriétaire d'un véhicule routier doit
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
# SAAQ page is quoted anywhere in this file; the agency's own plate-category
|
|
75
75
|
# page is cited as a known, unread source on the series it would corroborate.
|
|
76
76
|
#
|
|
77
|
-
# SEPARATOR NOTE (
|
|
77
|
+
# SEPARATOR NOTE (the plates spec §2.6): Québec prints a GAP between groups, not a
|
|
78
78
|
# glyph — the plates read "H32 KGA" with white space. Every `pattern` spells the
|
|
79
79
|
# emitted SPACE and every regex accepts it as optional. Règlement art. 139 al. 2
|
|
80
80
|
# and art. 141 al. 2 are the one place a Québec instrument mentions a printed
|
|
@@ -120,7 +120,7 @@ instrument:
|
|
|
120
120
|
licence: >-
|
|
121
121
|
LégisQuébec is published by the Éditeur officiel du Québec / Les Publications
|
|
122
122
|
du Québec. Statutes and regulations are EDICTS OF GOVERNMENT and their text is
|
|
123
|
-
uncopyrightable (
|
|
123
|
+
uncopyrightable (the plates spec §4); every verbatim quotation in this file is from
|
|
124
124
|
that class of material. Translations into English are OURS and are marked.
|
|
125
125
|
|
|
126
126
|
artwork_risk:
|
|
@@ -131,7 +131,7 @@ artwork_risk:
|
|
|
131
131
|
plate ARTWORK's licence was possible. The instrument TEXT is free as an edict
|
|
132
132
|
of government and is quoted freely here. Nothing else is assumed.
|
|
133
133
|
emblem_rule: >-
|
|
134
|
-
|
|
134
|
+
the plates spec §3 placeholder default applies without exception. The fleur-de-lys
|
|
135
135
|
and the « Je me souviens » wordmark are rendered `placeholder`. The fleur-de-
|
|
136
136
|
lys as used on Québec plates is an element of the provincial flag and arms and
|
|
137
137
|
carries protection independent of copyright; unresearched, flagged.
|
|
@@ -208,7 +208,7 @@ common:
|
|
|
208
208
|
does not author a taxi series because no grammar and no primary date were
|
|
209
209
|
obtained.
|
|
210
210
|
source: "https://www.legisquebec.gouv.qc.ca/fr/document/rc/C-24.2,%20r.%2029 # Règlement arts. 97-114, 124, 136, 137, 139-141, 159 — every prefix above quoted from its own article"
|
|
211
|
-
source_secondary: "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Quebec # TAGGED SECONDARY (
|
|
211
|
+
source_secondary: "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Quebec # TAGGED SECONDARY (the plates spec §4, owner override 2026-08-02), read 2026-08-02: the retired-prefix list, the XA motorcycle-dealer form, and every digit-and-letter arrangement in this file"
|
|
212
212
|
dimensions:
|
|
213
213
|
note: >-
|
|
214
214
|
NO QUÉBEC INSTRUMENT PRESCRIBES A PLATE SIZE. The Règlement and the CSR were
|
|
@@ -465,7 +465,7 @@ series:
|
|
|
465
465
|
THE STRONGEST PERIOD CLAIM IN THE CANADA EAST WAVE: a DAY, in the
|
|
466
466
|
instrument, for a design — « à compter du 26 octobre 2017 ». Hence
|
|
467
467
|
`period_evidence: enabling-instrument`. THE DISAGREEMENT IS RECORDED AND NOT
|
|
468
|
-
RESOLVED, per
|
|
468
|
+
RESOLVED, per the plates spec §5.3: the en.wikipedia article says Québec issued a
|
|
469
469
|
green electric plate from 2011, six years earlier, with distinct serial forms
|
|
470
470
|
(E00 VEA and so on), and cites a SAAQ page that no longer exists and could
|
|
471
471
|
not be reached from this location anyway. Two readings fit the evidence — a
|
|
@@ -496,7 +496,7 @@ series:
|
|
|
496
496
|
is consistent with the article and with the regulation, and `regex`
|
|
497
497
|
encodes the no-prefix form. An M-prefixed Québec motorcycle plate
|
|
498
498
|
(MAA 001-era) is lawful and out of this series' regex; that is the
|
|
499
|
-
correct-but-incomplete case
|
|
499
|
+
correct-but-incomplete case the plates spec §2.7 calls `strict`.
|
|
500
500
|
progression: "10001A upward per the article's issuance record"
|
|
501
501
|
design:
|
|
502
502
|
plate: { w: 20, h: 10, unit: cm, plate_basis: secondary-wikipedia }
|
|
@@ -579,7 +579,7 @@ series:
|
|
|
579
579
|
notes: >-
|
|
580
580
|
The literal L is PRIMARY (art. 110); the six digits are the article's.
|
|
581
581
|
NOTE THE PATTERN ESCAPE: `L` is the human-pattern DSL's own token for
|
|
582
|
-
"any letter", so a plate that PRINTS an L must write `\L` (
|
|
582
|
+
"any letter", so a plate that PRINTS an L must write `\L` (the plates spec
|
|
583
583
|
§2.2, owner ruling 2026-08-02). This is the only series in the Canada
|
|
584
584
|
east wave that needs it, and it needs it because Québec's heavy-truck
|
|
585
585
|
prefix happens to collide with the DSL. Written in single quotes so YAML
|
|
@@ -1000,7 +1000,7 @@ series:
|
|
|
1000
1000
|
le préfixe "V" suivi d'un trait d'union. » Art. 141 al. 2 says the same for
|
|
1001
1001
|
a snowmobile of 450 kg or less. OUR TRANSLATION: a personalized plate on an
|
|
1002
1002
|
all-terrain vehicle (or such a snowmobile) bears the prefix V FOLLOWED BY A
|
|
1003
|
-
HYPHEN. That hyphen is an emitted separator under
|
|
1003
|
+
HYPHEN. That hyphen is an emitted separator under the plates spec §2.6 and is
|
|
1004
1004
|
the only printed separator glyph any Québec instrument prescribes.
|
|
1005
1005
|
eligibility:
|
|
1006
1006
|
text: >-
|
|
@@ -1033,4 +1033,4 @@ series:
|
|
|
1033
1033
|
it — and the file says so rather than implying otherwise. `matching:
|
|
1034
1034
|
recall-only` is the deliberate consequence of the geo-block: with no readable
|
|
1035
1035
|
SAAQ length rule, the only defensible regex is the statutory alphabet, and a
|
|
1036
|
-
regex that wide must not be sold as a validity claim (
|
|
1036
|
+
regex that wide must not be sold as a validity claim (the plates spec §2.7).
|
data/data/plates/ca-sk.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/ca-sk.yml — Saskatchewan (
|
|
1
|
+
# plates/ca-sk.yml — Saskatchewan (the plates spec gate L3, Canada west).
|
|
2
2
|
#
|
|
3
3
|
# ── THE HONEST HEADLINE: THIS IS THE THINNEST FILE IN THE CANADA-WEST GROUP,
|
|
4
4
|
# AND THE REASON IS INFRASTRUCTURE, NOT SASKATCHEWAN.
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
#
|
|
53
53
|
# ── PERIOD DISCIPLINE, STATED UP FRONT ─────────────────────────────────────
|
|
54
54
|
# Every serial-format claim below is graded `secondary-wikipedia` under the
|
|
55
|
-
#
|
|
55
|
+
# the plates spec § 4 Wikipedia row's tagging condition. None of them is traced to a
|
|
56
56
|
# Saskatchewan instrument or to SGI, because neither was reachable. A verifier
|
|
57
57
|
# with working access to publications.saskatchewan.ca should treat every such
|
|
58
58
|
# grade as an open item; they are enumerated in the dossier.
|
|
@@ -96,7 +96,7 @@ artwork_risk:
|
|
|
96
96
|
is a CROWN INSURANCE CORPORATION with commercial operations, as British
|
|
97
97
|
Columbia's is, which makes the "edict of government" argument weaker for
|
|
98
98
|
SGI's own materials than for a statute.
|
|
99
|
-
emblem_rule: "
|
|
99
|
+
emblem_rule: "The plates spec § 3 placeholder default applies to the wheat device reported at the centre of the standard base."
|
|
100
100
|
sources:
|
|
101
101
|
- "https://www.saskatchewan.ca/government/news-and-media/2004/june/28/saskatchewan-moves-to-a-single-plate-on-june-30th # the province's own publication of the plate regime"
|
|
102
102
|
|
|
@@ -126,7 +126,7 @@ common:
|
|
|
126
126
|
separator_note: >-
|
|
127
127
|
The Saskatchewan serial is universally rendered as two groups of three with
|
|
128
128
|
a printed gap (`123 ABC`). No Saskatchewan source states a separator glyph.
|
|
129
|
-
Under
|
|
129
|
+
Under the plates spec § 2.8 the position is spelled with the sanctioned
|
|
130
130
|
separator-only class, and `pattern` shows the canonical printed space.
|
|
131
131
|
dimensions_note: >-
|
|
132
132
|
NEGATIVE FINDING. No dimension is sourced. The reported 12 x 6 in /
|
|
@@ -182,7 +182,7 @@ series:
|
|
|
182
182
|
beginning "early 2009" with the SAME arrangement, which on inspection is
|
|
183
183
|
an ALPHABET change and not a format change (see common.alphabet_note) —
|
|
184
184
|
so it is recorded as a charset fact inside this series rather than minted
|
|
185
|
-
as a second series, on the
|
|
185
|
+
as a second series, on the plates spec § 2.3 test (own series iff format OR
|
|
186
186
|
design OR period differs; a charset widening inside one arrangement is
|
|
187
187
|
none of the three).
|
|
188
188
|
THE STRONGEST THING IN THIS RECORD IS NOT THE FORMAT. It is the display
|
|
@@ -193,7 +193,7 @@ series:
|
|
|
193
193
|
its replacement cycle, arrived at eleven years earlier by a different
|
|
194
194
|
route.
|
|
195
195
|
sources:
|
|
196
|
-
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Saskatchewan # FINDING AID (
|
|
196
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Saskatchewan # FINDING AID (the plates spec §4 Wikipedia row): 123 ABC reported from May 1998, the 2009 alphabet widening, the green-on-white wheat design, 'Land of Living Skies', aluminium; accessed 2026-08-02"
|
|
197
197
|
- "https://www.saskatchewan.ca/government/news-and-media/2004/june/28/saskatchewan-moves-to-a-single-plate-on-june-30th # the single-plate regime this series is issued under"
|
|
198
198
|
|
|
199
199
|
- id: ca-sk-standard-1977
|
data/data/plates/ca-yt.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/ca-yt.yml — Yukon (
|
|
1
|
+
# plates/ca-yt.yml — Yukon (the plates spec gate L3, Canada territories).
|
|
2
2
|
#
|
|
3
3
|
# ── THE HEADLINE: YUKON LEGISLATES ITS SERIAL GRAMMARS, ALL OF THEM, IN ONE
|
|
4
4
|
# SECTION, AND IT IS THE BEST FORMAT SOURCE IN THE CANADA-WEST GROUP.
|
|
@@ -120,7 +120,7 @@ artwork_risk:
|
|
|
120
120
|
every Yukon government web host refused connection this pass. Recorded as
|
|
121
121
|
UNRESEARCHED rather than presumed either way.
|
|
122
122
|
emblem_rule: >-
|
|
123
|
-
|
|
123
|
+
the plates spec § 3 placeholder default applies to the prospector graphic, which
|
|
124
124
|
secondary sources report as continuously present on Yukon plates since 1952
|
|
125
125
|
and which is the territory's identifying device. It is NOT a statutory
|
|
126
126
|
drawing — C.O. 1978/120 contains no design annex — so the German
|
|
@@ -165,7 +165,7 @@ common:
|
|
|
165
165
|
standardised in 1955, are recorded here once and asserted nowhere.
|
|
166
166
|
charset_disagreement: >-
|
|
167
167
|
RECORDED, NOT AVERAGED. Two secondary readings of the Yukon private-series
|
|
168
|
-
alphabet disagree: the world dossier (
|
|
168
|
+
alphabet disagree: the world dossier (§ 2.1)
|
|
169
169
|
reports "excludes I, O, Q, U"; the per-territory encyclopedia article
|
|
170
170
|
reports "letters I, Q, U, Y excluded" — the two agree on I, Q and U and
|
|
171
171
|
disagree on O and Y. C.O. 1978/120 s. 10(g) states only "three letters",
|
|
@@ -176,7 +176,7 @@ common:
|
|
|
176
176
|
1978/120 s. 10(h) and the NWT's reg. 8(2)(a) both create as their own
|
|
177
177
|
statutory type. `ca-yt-ham` is filed under `specialty` as the nearest
|
|
178
178
|
available value; adding an `amateur-radio` class is a _meta PR with a
|
|
179
|
-
definition, per
|
|
179
|
+
definition, per the plates spec § 2.3, and should not be done ad hoc here.
|
|
180
180
|
|
|
181
181
|
series:
|
|
182
182
|
|
|
@@ -225,7 +225,7 @@ series:
|
|
|
225
225
|
private plate (10(g)) or a "Y" government plate (10(i)).
|
|
226
226
|
sources:
|
|
227
227
|
- "https://laws.yukon.ca/cms/images/LEGISLATION/SUBORDINATE/1978/1978-0120/1978-0120.pdf # s. 10(g) grammar + amendment note O.I.C. 1990/112"
|
|
228
|
-
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Yukon # FINDING AID (
|
|
228
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Yukon # FINDING AID (the plates spec §4 Wikipedia row): ABC12 reported 1990-present, corroborating the instrument year; accessed 2026-08-02"
|
|
229
229
|
|
|
230
230
|
- id: ca-yt-private-1982
|
|
231
231
|
class: standard
|
|
@@ -447,7 +447,7 @@ series:
|
|
|
447
447
|
Cars, Trucks, Buses, and other vehicles not provided for" and 10(a.1),
|
|
448
448
|
added by O.I.C. 2007/121, covers "Dealer - Motor cycle, trailer,
|
|
449
449
|
snowmobile and off-road vehicle"; both prescribe the identical
|
|
450
|
-
D+3-digits / DLR+3-digits alternative, so
|
|
450
|
+
D+3-digits / DLR+3-digits alternative, so the plates spec § 2.3's test (own
|
|
451
451
|
series iff format OR design OR period differs) puts them in one record
|
|
452
452
|
with both vehicle scopes in `categories`. 10(a) points at Motor Vehicles
|
|
453
453
|
Act s. 54 for the use rules. Collides on the leading D with
|
data/data/plates/ch.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/ch.yml — Switzerland (
|
|
1
|
+
# plates/ch.yml — Switzerland (the plates spec gate L1). DRAFT for verification.
|
|
2
2
|
#
|
|
3
3
|
# EVERY format, colour, layout and class claim in this file comes from the
|
|
4
4
|
# consolidated federal law on fedlex.admin.ch, fetched 2026-08-02:
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
# vehicle on the road before the plates must go back ("Lässt der Halter innert
|
|
34
34
|
# 14 Tagen kein anderes Fahrzeug in den Verkehr setzen, so hat er auch die
|
|
35
35
|
# Kontrollschilder unverzüglich zurückzugeben"). Hence `binding: owner`
|
|
36
|
-
# at the top of this file — the field
|
|
36
|
+
# at the top of this file — the field the plates spec §2.2 introduced for exactly
|
|
37
37
|
# this jurisdiction. A vehicle-keyed consumer must not join on a Swiss plate.
|
|
38
38
|
#
|
|
39
39
|
# 2. THE CANTON TABLE IS IN THE ORDINANCE, IT IS CLOSED, AND IT IS 26 ROWS.
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
# Gemeinwesen, zu dem sie gehören, gebraucht werden." Abs. 3: "Die Zeichen nach
|
|
82
82
|
# den Absätzen 1 und 2 können nicht lizenziert und nicht übertragen werden."
|
|
83
83
|
# There is therefore no clean-licence route to the exact artwork for ANY of the
|
|
84
|
-
# 27 arms (federal + 26 cantonal) —
|
|
84
|
+
# 27 arms (federal + 26 cantonal) — the plates spec §6's "affirmatively clean per
|
|
85
85
|
# emblem" exit does not exist in Switzerland. Recorded honestly, and NOT read
|
|
86
86
|
# as legal advice: WSchG Art. 8 Abs. 4 lit. a does permit use "als Abbildung in
|
|
87
87
|
# Wörterbüchern, Nachschlagewerken, wissenschaftlichen und ähnlichen Werken",
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
# canton letters and the number on every single-line plate. A mid-height point
|
|
107
107
|
# is U+00B7 MIDDLE DOT; U+00B7 is in _meta/separators.yml's FORGIVING set but
|
|
108
108
|
# NOT in its EMITTED set, so writing it would be a lint failure under
|
|
109
|
-
#
|
|
109
|
+
# the plates spec §2.6, and rightly: the dataset commits to writing only "-" and
|
|
110
110
|
# " ". Two consequences, both benign:
|
|
111
111
|
# (a) `pattern` spells the gap as a SPACE — which is also literally correct
|
|
112
112
|
# for the two-line Hochformat and motorcycle plates, where Art. 85 Abs. 2
|
|
@@ -122,7 +122,7 @@
|
|
|
122
122
|
# a KNOWN emitted-set gap rather than leaving it undocumented).
|
|
123
123
|
#
|
|
124
124
|
# ---------------------------------------------------------------------------
|
|
125
|
-
# REGEX POLICY (
|
|
125
|
+
# REGEX POLICY (the plates spec §2.7 tiers), applied consistently below
|
|
126
126
|
# ---------------------------------------------------------------------------
|
|
127
127
|
# regex the lint-round-trippable printed form: [A-Z]{2} for the
|
|
128
128
|
# canton, `[- ]?` for the point, and 1-6 digits. The SIX-DIGIT
|
|
@@ -146,7 +146,7 @@ binding_note: >-
|
|
|
146
146
|
Art. 87 Abs. 1 VZV: "Die einmal zugeteilte Schildnummer bleibt für den Halter
|
|
147
147
|
reserviert." The plate is allocated to the KEEPER and follows the keeper, not
|
|
148
148
|
the vehicle; Art. 87 Abs. 5 keeps ownership of the physical plate with the
|
|
149
|
-
authority. This is the jurisdiction
|
|
149
|
+
authority. This is the jurisdiction the plates spec §2.4 names when it introduces
|
|
150
150
|
`binding:`; every series in this file inherits `owner` unless it says otherwise.
|
|
151
151
|
instrument:
|
|
152
152
|
citation: "Verordnung vom 27. Oktober 1976 über die Zulassung von Personen und Fahrzeugen zum Strassenverkehr (Verkehrszulassungsverordnung, VZV), SR 741.51, Stand am 1. Januar 2026"
|
|
@@ -285,7 +285,7 @@ common:
|
|
|
285
285
|
NO LICENSABLE FONT IS MANDATED — the same finding the EU dossier records for
|
|
286
286
|
the UK, Germany and Spain, reached here by a different route: Switzerland
|
|
287
287
|
does not even publish a Schriftmuster in the ordinance, it delegates. Per
|
|
288
|
-
|
|
288
|
+
the plates spec §6 the render layer therefore uses the schematic fallback and
|
|
289
289
|
records the substitution; no third-party "Swiss plate font" TTF is touched.
|
|
290
290
|
gap: "the ASTRA Schriftbild determination is a RECORDED GAP — unpinned, and the reason no character heights or stroke widths appear in this file"
|
|
291
291
|
source: "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # Art. 85 Abs. 5"
|
|
@@ -320,21 +320,21 @@ common:
|
|
|
320
320
|
WSchG Art. 8 Abs. 1 reserves the Swiss and cantonal arms to the polity they
|
|
321
321
|
belong to; Abs. 3: "Die Zeichen nach den Absätzen 1 und 2 können nicht
|
|
322
322
|
lizenziert und nicht übertragen werden." There is no licensable route to the
|
|
323
|
-
artwork, so
|
|
323
|
+
artwork, so the plates spec §3's placeholder is mandatory rather than merely
|
|
324
324
|
prudent. Abs. 4 lit. a's reference-work exception is noted, not relied on.
|
|
325
325
|
source: "https://www.fedlex.admin.ch/eli/cc/2015/613/20250701/de # WSchG Art. 8 Abs. 1, 3, 4 lit. a"
|
|
326
326
|
not_modelled:
|
|
327
327
|
- "EXPORT PLATES DO NOT EXIST. Art. 82 Abs. 1-2 VZV is exhaustive and has no export series; a vehicle permanently leaving Switzerland is simply deregistered. The nearest regime is the PROVISIONAL immatriculation of VVV Art. 16-19 (vehicles whose Standort is in Switzerland only for a limited time), which is modelled as ch-provisional. Sourced negative, not an omission."
|
|
328
328
|
- "HISTORIC / VETERAN PLATES DO NOT EXIST as a plate class. Art. 82's colour list has no historic entry and no VZV or VTS provision creates one; Swiss veteran vehicles carry ordinary white plates. (The administrative 'Veteranenfahrzeug' status is an entry in the Fahrzeugausweis; its federal basis was NOT located in the VZV or VTS text fetched here and is a recorded gap.) This is the only L1 core class Switzerland genuinely lacks."
|
|
329
329
|
- "TAXI PLATES DO NOT EXIST. Professional passenger transport is authorised on the driving licence (VZV Art. 25), not on the plate."
|
|
330
|
-
- "CANTONAL NUMBER AUCTIONS AND CHOSEN NUMBERS are cantonal law, outside the federal instruments read here, and are not modelled (
|
|
330
|
+
- "CANTONAL NUMBER AUCTIONS AND CHOSEN NUMBERS are cantonal law, outside the federal instruments read here, and are not modelled (the plates spec §2.5 scope discipline)."
|
|
331
331
|
|
|
332
332
|
region_encoding_tables:
|
|
333
333
|
cantons:
|
|
334
334
|
reference: "plates/_decode/ch-cantons.yml"
|
|
335
335
|
inline_codes: [AG, AI, AR, BE, BL, BS, FR, GE, GL, GR, JU, LU, NE, NW, OW, SG, SH, SO, SZ, TG, TI, UR, VD, VS, ZG, ZH]
|
|
336
336
|
note: >-
|
|
337
|
-
26 rows, closed, primary, and small enough for
|
|
337
|
+
26 rows, closed, primary, and small enough for the plates spec §2.4's "inline
|
|
338
338
|
table" branch — the codes are inlined here for regex derivation and the full
|
|
339
339
|
table with German/French/Italian names and the Jura period row lives in the
|
|
340
340
|
decode file. Two decode traps a parse API must carry: (1) the two-letter
|
|
@@ -401,7 +401,7 @@ series:
|
|
|
401
401
|
rear_differs_note: >-
|
|
402
402
|
TRUE, and structurally so: the Swiss front plate is 300x80 mm with no arms
|
|
403
403
|
at all, the rear plate is 300x160 or 500x110 mm and carries two coats of
|
|
404
|
-
arms. This is the UK-style asymmetry
|
|
404
|
+
arms. This is the UK-style asymmetry the plates spec §2.2 introduced
|
|
405
405
|
`rear_differs` for, arriving in a stronger form than in the UK — there the
|
|
406
406
|
difference is colour, here it is size, layout and emblem content.
|
|
407
407
|
display: "front and rear (VTS Art. 96)"
|
|
@@ -509,7 +509,7 @@ series:
|
|
|
509
509
|
one reason and one only: the DESIGN differs by trailer type — an
|
|
510
510
|
Arbeitsanhänger carries the armless 300x80 front-plate form while a
|
|
511
511
|
Transportanhänger carries the armed rear-plate form — which is exactly the
|
|
512
|
-
|
|
512
|
+
the plates spec §2.3 test. The STRING, by contrast, is indistinguishable from a
|
|
513
513
|
car's: Art. 84 Abs. 2 puts "Motorwagen, Motoreinachser und Anhänger" in ONE
|
|
514
514
|
number space, so no consumer can tell a Swiss trailer registration from a car
|
|
515
515
|
registration by parsing it. Recorded here because a parse API that scores
|
|
@@ -855,7 +855,7 @@ series:
|
|
|
855
855
|
not imply an M plate; and VFBF Art. 29 required Grenzwachtkorps and customs
|
|
856
856
|
investigation vehicles to leave the military registers by 31 December 2023,
|
|
857
857
|
which is an ENDED sub-population inside a live series and exactly the kind of
|
|
858
|
-
row-level period discipline
|
|
858
|
+
row-level period discipline the plates spec §2.4 warns about.
|
|
859
859
|
|
|
860
860
|
# =========================================================================
|
|
861
861
|
# DIPLOMATIC AND CONSULAR — CD, CC, AT on a dark green or dark blue field.
|
|
@@ -875,7 +875,7 @@ series:
|
|
|
875
875
|
- { name: sign, value: "CD", note: "on a dark green or dark blue field (Art. 82 Abs. 2 lit. d)" }
|
|
876
876
|
- { name: canton, note: "the two canton letters, in BLACK — Art. 84 Abs. 4" }
|
|
877
877
|
- { name: mission_serial, note: "first number group: 'Ordnungsnummer innerhalb der Mission, des Postens, der Delegation oder der Organisation'; the LOWEST numbers are reserved for the head of mission and the deputies (Art. 84 Abs. 4)" }
|
|
878
|
-
- { name: state_code, note: "second number group: 'bezeichnet den einzelnen Staat oder die Organisation' — the country/organisation code. The code TABLE is an FDFA allocation and is NOT published in the VZV: recorded gap, deliberately not guessed (
|
|
878
|
+
- { name: state_code, note: "second number group: 'bezeichnet den einzelnen Staat oder die Organisation' — the country/organisation code. The code TABLE is an FDFA allocation and is NOT published in the VZV: recorded gap, deliberately not guessed (the plates spec puts diplomatic decode tables at L4)." }
|
|
879
879
|
separator_note: >-
|
|
880
880
|
Art. 84 Abs. 4 prescribes "die Zahlen und der Punkt" and Art. 85 Abs. 4
|
|
881
881
|
"die durch einen Punkt getrennten zwei Zahlengruppen" — the group
|
data/data/plates/cn.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/cn.yml — People's Republic of China (mainland),
|
|
1
|
+
# plates/cn.yml — People's Republic of China (mainland), the plates spec gate L3.
|
|
2
2
|
#
|
|
3
3
|
# ============================================================================
|
|
4
4
|
# 1. THE SOURCE SITUATION, STATED FIRST BECAUSE IT SHAPES EVERY CLAIM HERE
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
# what was DELIBERATELY not asserted.
|
|
44
44
|
#
|
|
45
45
|
# ============================================================================
|
|
46
|
-
# 2. THE HAN LINE — where the dataset's serial alphabet stops (
|
|
46
|
+
# 2. THE HAN LINE — where the dataset's serial alphabet stops (the plates spec §2.6)
|
|
47
47
|
# ============================================================================
|
|
48
48
|
# GA 36-2007 § 3.2 defines the thing a plate carries, verbatim:
|
|
49
49
|
# "机动车登记编号 registration number of motor vehicle
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
# Translation ours; the Chinese is the sourced text.)
|
|
59
59
|
#
|
|
60
60
|
# So a Chinese registration number has FOUR elements, two of them Han. The
|
|
61
|
-
# dataset's serial alphabet is A-Z and 0-9 and
|
|
61
|
+
# dataset's serial alphabet is A-Z and 0-9 and the plates spec § 2.6 says a
|
|
62
62
|
# jurisdiction that prints a glyph inside the serial "is a schema amendment,
|
|
63
63
|
# not a data entry". This file does NOT smuggle Han characters into any
|
|
64
64
|
# `format.pattern`, `format.regex`, `format.regex_strict` or
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
# character and looks it up in cn-provinces.yml; (2) splits a trailing Han
|
|
84
84
|
# character if present and looks it up in `common.classification_han` below;
|
|
85
85
|
# (3) matches what is left — "A12345" — against `format.regex`. The two decode
|
|
86
|
-
# files make steps 1 and 2 mechanical. The schema amendment
|
|
86
|
+
# files make steps 1 and 2 mechanical. The schema amendment the plates spec § 2.6
|
|
87
87
|
# anticipates (a `never_separator` / non-Latin-element ruling in
|
|
88
88
|
# _meta/separators.yml) is REQUESTED in the dossier; until it lands, this is the
|
|
89
89
|
# honest encoding and it is stated here once rather than guessed per series.
|
|
@@ -142,7 +142,7 @@
|
|
|
142
142
|
# in the same regex, is not an inconsistency — it is the sourced rule.
|
|
143
143
|
#
|
|
144
144
|
# ============================================================================
|
|
145
|
-
# 4. PERIOD POLICY (
|
|
145
|
+
# 4. PERIOD POLICY (the plates spec §2.4, the instrument-date rule)
|
|
146
146
|
# ============================================================================
|
|
147
147
|
# The system in force is the "92-pattern" (92式) created by GA 36-1992, whose
|
|
148
148
|
# existence and designation year are evidenced by GA 36-2007's own 前言 ("本标准
|
|
@@ -335,7 +335,7 @@ series:
|
|
|
335
335
|
printed_example: "京A·12345"
|
|
336
336
|
regex_informational: '\A[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼渝川贵云藏陕甘青宁新][A-Z][·\- ]?[A-Z0-9]{5}\z'
|
|
337
337
|
regex_informational_note: >-
|
|
338
|
-
NOT part of the
|
|
338
|
+
NOT part of the plates spec § 2.6 contract, NOT lint-validated, and NOT
|
|
339
339
|
a substitute for format.regex — provided because a consumer holding a
|
|
340
340
|
whole Chinese plate string needs one expression to split it. The Han
|
|
341
341
|
class is the 31 characters of cn-provinces.yml in Table 2's order.
|
|
@@ -437,7 +437,7 @@ series:
|
|
|
437
437
|
period: { start: 1992 }
|
|
438
438
|
period_evidence: enabling-instrument
|
|
439
439
|
standard_edition: "GA 36-2007 表 1 row 2"
|
|
440
|
-
# RECALL-ONLY (
|
|
440
|
+
# RECALL-ONLY (the plates spec §2.7): the readable text fixes the trailer plate's
|
|
441
441
|
# DESIGN and its classification character but never states which of the two
|
|
442
442
|
# serial widths 表 3 defines applies to it — that lives in Annex C's
|
|
443
443
|
# figures, which the government republication reproduces as headings only.
|
|
@@ -1091,7 +1091,7 @@ series:
|
|
|
1091
1091
|
2016 is the enabling instrument — the Ministry's announcement creating the
|
|
1092
1092
|
pilot — with the whole rollout ladder recorded in period.rollout rather
|
|
1093
1093
|
than averaged into one date, which is exactly the Mercosur pattern
|
|
1094
|
-
|
|
1094
|
+
the plates spec § 2.2 anticipates.
|
|
1095
1095
|
|
|
1096
1096
|
- id: cn-nev-large-2016
|
|
1097
1097
|
class: electric
|
|
@@ -1186,7 +1186,7 @@ series:
|
|
|
1186
1186
|
(试), and an over-dimension/over-mass special vehicle (超). The blue
|
|
1187
1187
|
tint above is for movement WITHIN one administrative jurisdiction.
|
|
1188
1188
|
A tint-and-character variant of one format and period, so a sub-entry
|
|
1189
|
-
per
|
|
1189
|
+
per the plates spec § 2.3.
|
|
1190
1190
|
sources:
|
|
1191
1191
|
- "https://web.archive.org/web/20150701102419/http://www.hngy.gov.cn/sitepublish/site1/wsbs/lyfwzl/jtfw/jdc/jdcfw/content_25106.html # GA 36-2007 表 1 row 16 (all four uses and their tints); § 6.4 c)-d) (the two GB/T 3181-1995 colour designations); accessed 2026-08-02"
|
|
1192
1192
|
validity:
|
data/data/plates/cy.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/cy.yml — Republic of Cyprus (
|
|
1
|
+
# plates/cy.yml — Republic of Cyprus (the plates spec gate L1, wave 2).
|
|
2
2
|
#
|
|
3
3
|
# ============================================================================
|
|
4
4
|
# WHAT THIS FILE COVERS, AND WHAT IT DOES NOT — READ FIRST
|
|
@@ -272,7 +272,7 @@ not_representable:
|
|
|
272
272
|
following an old-form Greek flag; no instrument located.
|
|
273
273
|
* «ΔΟΚΙΜΗ» dealer legend — Δ U+0394. See dealer_plates below, where the
|
|
274
274
|
larger finding is that this legend is not in the instrument at all.
|
|
275
|
-
Per
|
|
275
|
+
Per the plates spec §2.6 a jurisdiction printing a glyph the serial alphabet
|
|
276
276
|
lacks is a SCHEMA AMENDMENT, not a data entry. Transliterating ΚΔ to "KD"
|
|
277
277
|
would fabricate a string no Cypriot plate shows. Reported, not authored.
|
|
278
278
|
|
|
@@ -409,9 +409,9 @@ series:
|
|
|
409
409
|
squarish 8), so the secondary claim is substantively defensible, but
|
|
410
410
|
the citable fact is "the letterforms reproduced in the Annex to
|
|
411
411
|
Κ.Δ.Π. 71/2013", not a typeface name. This is the same posture
|
|
412
|
-
|
|
412
|
+
the plates spec §6 records for the UK, Germany and Spain: statutory
|
|
413
413
|
drawing, not licensable font.
|
|
414
|
-
license: "statutory drawing —
|
|
414
|
+
license: "statutory drawing — the plates spec §6: derive glyphs from the specimens, never from a third-party TTF"
|
|
415
415
|
mounting: { note: "Μέρος ΙΙ παρ. 3: vertical, tilt not exceeding 5 degrees (30/15 degree tolerances in specified cases), lower edge at least 0.30 m above the ground" }
|
|
416
416
|
rear_differs: false
|
|
417
417
|
rear_differs_note: >-
|
|
@@ -505,7 +505,7 @@ series:
|
|
|
505
505
|
match here says "this string has a shape Cyprus has issued and the
|
|
506
506
|
vehicle MAY be eligible for a black plate" — it is emphatically not a
|
|
507
507
|
claim that the plate is black. This is the nl-export case in
|
|
508
|
-
|
|
508
|
+
the plates spec §2.7, and it is why no regex_strict exists.
|
|
509
509
|
design:
|
|
510
510
|
background: { color: "#000000", finish: non-retroreflective, hex_basis: observed }
|
|
511
511
|
foreground: "#FFFFFF"
|
|
@@ -642,7 +642,7 @@ series:
|
|
|
642
642
|
overlaps cy-standard-1990's start for the ordinary reason that a
|
|
643
643
|
Registrar's change of practice is not a dated event. PRE-1956 CYPRUS IS
|
|
644
644
|
NOT MODELLED — colonial-era registration is L4 historical depth under
|
|
645
|
-
|
|
645
|
+
the plates spec §7 and no source was consulted.
|
|
646
646
|
|
|
647
647
|
# =========================================================================
|
|
648
648
|
# DIPLOMATIC — green in law 1973-2013, then silently dropped.
|
data/data/plates/cz.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/cz.yml — Czechia (
|
|
1
|
+
# plates/cz.yml — Czechia (the plates spec gate L1, wave 2).
|
|
2
2
|
#
|
|
3
3
|
# EVERY format, colour, dimension and class claim below is read from the
|
|
4
4
|
# OFFICIAL Sbírka zákonů PDFs on aplikace.mv.gov.cz — the Ministry of the
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
# bicycle carrier "je mezi třetím a čtvrtým místem určeným pro znak umístěn
|
|
63
63
|
# speciální znak". An ASTERISK occupies the sticker-well position on that one
|
|
64
64
|
# plate type. It is not in the serial alphabet and not an emitted separator
|
|
65
|
-
# (
|
|
65
|
+
# (the plates spec §2.6), so it appears NOWHERE in a pattern or a regex here; it
|
|
66
66
|
# is carried as prose on the cz-standard-2004 variant and is flagged as a
|
|
67
67
|
# `never_separator` candidate for plates/_meta/separators.yml. Note it sits
|
|
68
68
|
# BETWEEN groups, in the gap, so it is a separator-position glyph and not an
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
# amended). See plates/sk.yml.
|
|
87
87
|
# Neither file silently duplicates the other and neither drops the era. The
|
|
88
88
|
# alternative — a single shared `cs-` jurisdiction file — was rejected because
|
|
89
|
-
#
|
|
89
|
+
# the plates spec §2.1 keys files on ISO 3166-1 and CS is a withdrawn code with no
|
|
90
90
|
# current authority to cite; recording the era twice, with each successor's own
|
|
91
91
|
# terminating instrument, keeps every claim attached to a live primary.
|
|
92
92
|
#
|
|
@@ -250,7 +250,7 @@ common:
|
|
|
250
250
|
registrační značky formou prolisování", with the paper one-trip plate the
|
|
251
251
|
only printed exception ("formou vytištění").
|
|
252
252
|
licence: >-
|
|
253
|
-
|
|
253
|
+
the plates spec §6 applies unchanged: derive glyphs from the published
|
|
254
254
|
geometry, never from a third-party TTF. No Czech public-domain-of-statutes
|
|
255
255
|
provision was researched in this pass (the German §5(1) UrhG argument was
|
|
256
256
|
not tested against Czech law) — recorded gap, and one more reason to
|
|
@@ -339,7 +339,7 @@ series:
|
|
|
339
339
|
plus any digit. `regex_statutory` is the outer bound of § 24 odst. 2 —
|
|
340
340
|
five to eight characters printed as three, the gap, and two to five —
|
|
341
341
|
and it is genuinely wider than what is issued, which is exactly the
|
|
342
|
-
us-fl situation
|
|
342
|
+
us-fl situation the plates spec §2.7 describes. The statute's further
|
|
343
343
|
requirement of "nejméně 1 písmeno a nejméně 1 číslice" cannot be
|
|
344
344
|
expressed without a lookahead spanning the separator position, which
|
|
345
345
|
§2.8 forbids, so it is recorded here in words and not in the regex.
|
|
@@ -393,7 +393,7 @@ series:
|
|
|
393
393
|
note: >-
|
|
394
394
|
Motorcycles carry the SAME mark on a 200 x 160 two-line plate with one
|
|
395
395
|
sticker well instead of two (§ 29 odst. 1 písm. d), odst. 5). A
|
|
396
|
-
size-only variant, hence a sub-entry per
|
|
396
|
+
size-only variant, hence a sub-entry per the plates spec §2.3; recorded
|
|
397
397
|
with a class so class-keyed queries reach it.
|
|
398
398
|
sources:
|
|
399
399
|
- "https://aplikace.mv.gov.cz/sbirka-zakonu/ViewFile.aspx?type=z&id=27609 # § 29 odst. 1 písm. d), odst. 5. Accessed 2026-08-02"
|
|
@@ -418,7 +418,7 @@ series:
|
|
|
418
418
|
určeným pro znak umístěn speciální znak."; § 27 odst. 5: "Pro speciální
|
|
419
419
|
znaky se použije znak *." The serial is the towing vehicle's own mark;
|
|
420
420
|
an ASTERISK replaces the sticker gap. Because * is neither in the
|
|
421
|
-
serial alphabet nor an emitted separator (
|
|
421
|
+
serial alphabet nor an emitted separator (the plates spec §2.6), the
|
|
422
422
|
`pattern` above prints the ordinary space and the asterisk is recorded
|
|
423
423
|
HERE, in prose. It sits BETWEEN character groups, so it is a
|
|
424
424
|
separator-position glyph and a candidate for the `never_separator`
|
|
@@ -646,7 +646,7 @@ series:
|
|
|
646
646
|
PREFIX GOES WITH WHICH CLASS IS A RECORDED GAP; the OVAL supplementary
|
|
647
647
|
plate (common.supplementary_plates) does gloss its own three letters
|
|
648
648
|
(CD = Corps diplomatique, CC = Corps consulaire, HC = Consuls
|
|
649
|
-
honoraires) and that is a different plate.
|
|
649
|
+
honoraires) and that is a different plate. The plates spec puts diplomatic
|
|
650
650
|
decode tables at L4 and none is authored here.
|
|
651
651
|
separator_note: "the § 27 odst. 2 sticker gap after position 3, as on every single-row Czech plate"
|
|
652
652
|
design:
|
|
@@ -1167,7 +1167,7 @@ series:
|
|
|
1167
1167
|
notes: >-
|
|
1168
1168
|
THE YELLOW PLATE. Czechia colour-codes agricultural and works machinery
|
|
1169
1169
|
rather than serialising it separately — the mark is an ordinary one and
|
|
1170
|
-
only the ground is different, which under
|
|
1170
|
+
only the ground is different, which under the plates spec §2.3 would make it a
|
|
1171
1171
|
sub-entry were the CLASS not different; it is recorded as its own series
|
|
1172
1172
|
because the class is the point. A SCOPE CHANGE, dated: under vyhláška
|
|
1173
1173
|
243/2001 Sb. the yellow plate covered all "zvláštní motorová vozidla" plus
|