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/kr.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/kr.yml — Republic of Korea (
|
|
1
|
+
# plates/kr.yml — Republic of Korea (the plates spec gate L3).
|
|
2
2
|
#
|
|
3
3
|
# EVERY dimension, colour, layout, class-code range and use-syllable claim in
|
|
4
4
|
# this file comes from ONE instrument and its annexes: 「자동차 등록번호판 등의
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
# a rental car (허). It is emphatically NOT a separator and no consumer may
|
|
47
47
|
# delete it.
|
|
48
48
|
#
|
|
49
|
-
#
|
|
49
|
+
# the plates spec §2.6 fixes the dataset's serial alphabet at A-Z and 0-9 and says in
|
|
50
50
|
# terms that a jurisdiction printing a glyph inside a serial "is a schema
|
|
51
51
|
# amendment, not a data entry". Korea is that jurisdiction. Until the amendment
|
|
52
52
|
# lands, this file draws the line exactly where §2.5/§2.6 and the Japan note in
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
# in printed order, with the hangul element ELIDED. For 123가4568 the
|
|
58
58
|
# skeleton is 1234568 and the pattern is "9999999".
|
|
59
59
|
# * `format.hangul_field` (this file's local extension, the `fields[]`
|
|
60
|
-
# composition
|
|
60
|
+
# composition the plates spec §2.2 anticipates for Japan) carries the elided
|
|
61
61
|
# element: its position, its script, its width in millimetres, its closed
|
|
62
62
|
# value set and a pointer into plates/_decode/kr-use-syllables.yml.
|
|
63
63
|
# * `matching: strict` is nonetheless correct on these series, and the reason
|
|
@@ -138,7 +138,7 @@
|
|
|
138
138
|
# in the dossier; the year is asserted, the day is not.
|
|
139
139
|
#
|
|
140
140
|
# ---------------------------------------------------------------------------
|
|
141
|
-
# WHAT IS DELIBERATELY NOT IN THIS FILE (
|
|
141
|
+
# WHAT IS DELIBERATELY NOT IN THIS FILE (the plates spec §2.5)
|
|
142
142
|
# ---------------------------------------------------------------------------
|
|
143
143
|
# * Military plates. Korean armed-forces registration is a Ministry of
|
|
144
144
|
# National Defense system outside 「자동차관리법」 and outside this notice;
|
|
@@ -383,7 +383,7 @@ series:
|
|
|
383
383
|
hex_basis: cmyk-naive
|
|
384
384
|
cmyk_spec: "Annex 2-2 item 5: 디자인 배경 basic ground 밝은색 C40 M4 Y0 K0 / 중간색 C96 M90 Y0 K1 / 어두운색 C100 M97 Y22 K29; 국가축약문자 KOR same three, KOR outline C9 M7 Y7 K0; 숫자 및 한글 C73 M67 Y65 K80"
|
|
385
385
|
note: "The band is a blue gradient, not a flat colour; the hex is a naive CMYK conversion of the mid tone and is for rendering only. This is Korea's equivalent of the EU band and it is NOT an EU band: it carries the national taegeuk and the ISO country abbreviation KOR."
|
|
386
|
-
emblem: { present: true, rendered: placeholder, note: "the taegeuk in the band is a national symbol;
|
|
386
|
+
emblem: { present: true, rendered: placeholder, note: "the taegeuk in the band is a national symbol; the plates spec §3 placeholder rule applies until its licence posture is affirmatively cleared" }
|
|
387
387
|
hologram: { present: true, note: "Annex 2-2 item 4 (홀로그램 패턴) — a 25 mm grid of holographic security marks across the plate face" }
|
|
388
388
|
rear_differs: false
|
|
389
389
|
region_encoding: none
|
|
@@ -1083,7 +1083,7 @@ series:
|
|
|
1083
1083
|
quasi-diplomatic (준외), quasi-consular (준영), international-
|
|
1084
1084
|
organisation (국기) and other-diplomatic (협정, 대표) plates likewise.
|
|
1085
1085
|
Same format, same colours, same period — a WORD-only variant, so a
|
|
1086
|
-
sub-entry per
|
|
1086
|
+
sub-entry per the plates spec §2.3 rather than six near-identical series.
|
|
1087
1087
|
The full seven-word list with its Korean category names is in
|
|
1088
1088
|
plates/_decode/kr-use-syllables.yml under `diplomatic`.
|
|
1089
1089
|
sources:
|
data/data/plates/li.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/li.yml — Liechtenstein (
|
|
1
|
+
# plates/li.yml — Liechtenstein (the plates spec gate L1, microstates group).
|
|
2
2
|
# DRAFT for verification. All primary text fetched from gesetze.li 2026-08-02.
|
|
3
3
|
#
|
|
4
4
|
# ---------------------------------------------------------------------------
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
# agency-level or is omitted.
|
|
96
96
|
#
|
|
97
97
|
# ---------------------------------------------------------------------------
|
|
98
|
-
# REGEX POLICY (
|
|
98
|
+
# REGEX POLICY (the plates spec §2.7 tiers)
|
|
99
99
|
# ---------------------------------------------------------------------------
|
|
100
100
|
# regex the printed form: literal FL, an optional separator, and
|
|
101
101
|
# 1-5 digits. THE DIGIT CEILING IS NOT IN THE ORDINANCE —
|
|
@@ -182,7 +182,7 @@ common:
|
|
|
182
182
|
status: RECORDED SCHEMA FINDING — affects every series in this file
|
|
183
183
|
finding: >-
|
|
184
184
|
THE HUMAN-PATTERN DSL CANNOT SPELL A LITERAL "L", AND LIECHTENSTEIN IS THE
|
|
185
|
-
JURISDICTION WHERE THAT BITES HARDEST.
|
|
185
|
+
JURISDICTION WHERE THAT BITES HARDEST. The plates spec §2.2 defines the pattern
|
|
186
186
|
alphabet as "9=digit L=letter, literal separators as printed", and
|
|
187
187
|
lint_plates.rb implements it by substituting EVERY "9" and EVERY "L" in a
|
|
188
188
|
pattern with a random digit or letter. There is no escape mechanism. So
|
|
@@ -205,7 +205,7 @@ common:
|
|
|
205
205
|
A schema amendment would fix this properly — either an escape in the
|
|
206
206
|
pattern DSL (e.g. a quoted literal) or a `format.literal_prefix` field.
|
|
207
207
|
Recorded here rather than acted on, because inventing notation in a data
|
|
208
|
-
PR is exactly what
|
|
208
|
+
PR is exactly what the plates spec §2.6 forbids for separators and the same
|
|
209
209
|
discipline applies to the pattern alphabet. The same limitation forced
|
|
210
210
|
sm.yml to model the San Marino POLIZIA legend as plate furniture rather
|
|
211
211
|
than as part of the serial.
|
|
@@ -362,7 +362,7 @@ common:
|
|
|
362
362
|
Wappengesetz's use article.
|
|
363
363
|
rendered: placeholder
|
|
364
364
|
licence_posture: >-
|
|
365
|
-
|
|
365
|
+
the plates spec §3's placeholder rule applies. The Wappengesetz reserves the
|
|
366
366
|
state arms to the State and no affirmatively-clean licence route to the
|
|
367
367
|
artwork was located, so the emblem slot renders as a neutral placeholder
|
|
368
368
|
exactly as in ch.yml. Recorded honestly and NOT as legal advice: the
|
|
@@ -391,7 +391,7 @@ common:
|
|
|
391
391
|
delegation — Liechtenstein does not even delegate the question the way the
|
|
392
392
|
Swiss ordinance does to the ASTRA.
|
|
393
393
|
licence: >-
|
|
394
|
-
No licensable font is mandated, so per
|
|
394
|
+
No licensable font is mandated, so per the plates spec §6 the render layer uses
|
|
395
395
|
the schematic fallback and records the substitution. No third-party plate
|
|
396
396
|
font is touched.
|
|
397
397
|
source: "https://www.gesetze.li/konso/1978.020 # VZV Art. 72 Abs. 2, Art. 74 — the whole of what the ordinance says about characters"
|
data/data/plates/lt.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/lt.yml — Lithuania (
|
|
1
|
+
# plates/lt.yml — Lithuania (the plates spec gate L1, EU/EEA wave 2). DRAFT for
|
|
2
2
|
# verification: researched by an Opus L1 researcher, never applied directly.
|
|
3
3
|
#
|
|
4
4
|
# THE LITHUANIAN SOURCE POSITION, STATED HONESTLY UP FRONT
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
# which the authority and the secondary sources alike render solid
|
|
62
62
|
# ("T06868", "H02401", "P28737").
|
|
63
63
|
# Both choices are RECORDED INFERENCES, flagged per series, and both are made
|
|
64
|
-
# safe by
|
|
64
|
+
# safe by the plates spec §2.6: a separator-forgiving consumer collapses the two
|
|
65
65
|
# printed forms to one canonical serial either way.
|
|
66
66
|
jurisdiction: lt
|
|
67
67
|
authority:
|
|
@@ -103,7 +103,7 @@ common:
|
|
|
103
103
|
Regitra's general-use page gives format 5 as 185 x 210 mm; its
|
|
104
104
|
diplomatic page gives the same slot as 182 x 210 mm. A 3 mm disagreement
|
|
105
105
|
between two pages of the same authority is RECORDED, not averaged
|
|
106
|
-
(
|
|
106
|
+
(the plates spec §5.3). Neither figure is traceable to an instrument here.
|
|
107
107
|
source: "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/of-general-use/"
|
|
108
108
|
colours:
|
|
109
109
|
hex_basis_note: >-
|
|
@@ -176,7 +176,7 @@ region_encoding_gap:
|
|
|
176
176
|
accounts identify DIFFERENT POSITIONS in the mark. No Lithuanian
|
|
177
177
|
instrument, and no Regitra page, was reached that settles it. Shipping a
|
|
178
178
|
positional decode table while unsure WHICH POSITION it decodes would be the
|
|
179
|
-
precise failure
|
|
179
|
+
precise failure the plates spec §2.4 warns about — a decode table that makes the
|
|
180
180
|
parse API lie — so none is shipped, in either position.
|
|
181
181
|
also_unresolved: >-
|
|
182
182
|
Even taking the county reading at face value, the scheme is described as
|
|
@@ -197,7 +197,7 @@ out_of_scope:
|
|
|
197
197
|
followed by 777, three identical letters with a low serial, and other
|
|
198
198
|
premium patterns — in four priced groups. These are ORDINARY general-use
|
|
199
199
|
marks in the ordinary general-use format, distinguished only by
|
|
200
|
-
desirability and price. Under
|
|
200
|
+
desirability and price. Under the plates spec §2.3 that is neither a format nor
|
|
201
201
|
a design nor a period difference, so it is not a series; a consumer that
|
|
202
202
|
needs it wants a price list, not a plate record.
|
|
203
203
|
source: "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/exclusive/"
|
|
@@ -218,7 +218,7 @@ out_of_scope:
|
|
|
218
218
|
that are being carried" — a repeater plate for a rear-mounted bicycle
|
|
219
219
|
rack. It duplicates the towing vehicle's existing mark rather than
|
|
220
220
|
carrying one of its own, so it has no serial grammar of its own, and under
|
|
221
|
-
|
|
221
|
+
the plates spec §2.7 it would in any case be a `recall-only` echo of whatever
|
|
222
222
|
series the car belongs to. Not authored.
|
|
223
223
|
source: "https://www.regitra.lt/en/services/state-number-plates/types-of-vehicle-registration-number-license-plates/"
|
|
224
224
|
|
|
@@ -286,7 +286,7 @@ series:
|
|
|
286
286
|
RECORDED INFERENCE. Regitra states the composition but not the printed
|
|
287
287
|
separator. A gap between the letter and digit groups is shown in the
|
|
288
288
|
authority's own plate imagery on the 520 x 110 blank, and is spelled
|
|
289
|
-
here as a space per
|
|
289
|
+
here as a space per the plates spec §2.6 rule 2. On the 300 x 150 blank the
|
|
290
290
|
mark is very likely set on two rows with no separator at all; a
|
|
291
291
|
forgiving consumer collapses both forms to one serial.
|
|
292
292
|
design:
|
|
@@ -297,7 +297,7 @@ series:
|
|
|
297
297
|
foreground: "#000000"
|
|
298
298
|
border: { color: "#000000", note: "Regitra: the edging, letters and numbers are black" }
|
|
299
299
|
band: { side: left, color: "#003399", content: eu-stars+LT, hex_basis: observed }
|
|
300
|
-
emblem: { present: true, rendered: placeholder, content: "Vytis, the coat of arms of Lithuania, between the blue band and the letters on format 1; above the EU symbol on the band on the other formats", note: "
|
|
300
|
+
emblem: { present: true, rendered: placeholder, content: "Vytis, the coat of arms of Lithuania, between the blue band and the letters on format 1; above the EU symbol on the band on the other formats", note: "The plates spec §3 emblem rule: rendered as a neutral placeholder unless the artwork's licence is affirmatively clean" }
|
|
301
301
|
rear_differs: false
|
|
302
302
|
region_encoding: none
|
|
303
303
|
sources:
|
|
@@ -548,7 +548,7 @@ series:
|
|
|
548
548
|
THE EARLIER YELLOW TAXI PLATE. Regitra states that the white standard
|
|
549
549
|
described above was approved from 3 April 2018 and that yellow plates
|
|
550
550
|
issued earlier remain valid and "don't have to be changed". Recorded
|
|
551
|
-
as a colour-only variant per
|
|
551
|
+
as a colour-only variant per the plates spec §2.3 rather than as its own
|
|
552
552
|
series, because the mark and the blanks are unchanged — only the
|
|
553
553
|
ground colour differs. Its own start is the series start, 13 July 2006.
|
|
554
554
|
sources:
|
|
@@ -818,7 +818,7 @@ series:
|
|
|
818
818
|
The third digit's four values are enumerated by the authority and are
|
|
819
819
|
encoded nowhere else in this file; they are recorded here rather than as
|
|
820
820
|
a decode table because a four-row enumeration is a `charset` fact, not a
|
|
821
|
-
table (
|
|
821
|
+
table (the plates spec §2.4 puts small mappings inline by design). The
|
|
822
822
|
MISSION-CODE mapping — which country is 01, which is 14 — is NOT
|
|
823
823
|
published by Regitra and is NOT shipped; see notes.
|
|
824
824
|
separator_note: >-
|
data/data/plates/lu.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/lu.yml — Luxembourg (
|
|
1
|
+
# plates/lu.yml — Luxembourg (the plates spec gate L1, EU/EEA wave 2).
|
|
2
2
|
#
|
|
3
3
|
# ONE INSTRUMENT, READ END TO END, CARRIES THIS ENTIRE FILE. Every format,
|
|
4
4
|
# every colour, every dimension, every special series, every historic design
|
|
@@ -163,7 +163,7 @@ series:
|
|
|
163
163
|
to a cahier des charges approved by the minister, which is NOT published
|
|
164
164
|
in the Memorial and was not reached. That delegation is the reason the
|
|
165
165
|
separator position is spelled as the sanctioned separator-only class
|
|
166
|
-
`[- ]` (
|
|
166
|
+
`[- ]` (the plates spec §2.8) rather than as a literal: the gap is real, the
|
|
167
167
|
glyph is unlegislated.
|
|
168
168
|
design:
|
|
169
169
|
plate: { w: 520, h: 110, unit: mm, thickness: [1, 1.5] }
|
|
@@ -249,7 +249,7 @@ series:
|
|
|
249
249
|
background: { color: "#F9B700", finish: retroreflective, hex_basis: observed }
|
|
250
250
|
foreground: "#000000"
|
|
251
251
|
band: { side: left, color: "#003399", hex_basis: observed, content: eu-stars+L }
|
|
252
|
-
note: "no design of its own — a personalised number is printed on the ordinary plate. It is a SERIES here rather than a sub-entry because its number grammar and its binding both differ (
|
|
252
|
+
note: "no design of its own — a personalised number is printed on the ordinary plate. It is a SERIES here rather than a sub-entry because its number grammar and its binding both differ (the plates spec §2.3)."
|
|
253
253
|
region_encoding: none
|
|
254
254
|
sources:
|
|
255
255
|
- "https://data.legilux.public.lu/eli/etat/leg/rgd/2003/06/17/n2/jo/fr/pdf # RGD 17-06-2003 art. 8 (the three series a personalised number may come from, the waiting list, transfer between the holder's vehicles, the 36-month reservation, inheritance at first degree, and the fees of 50 EUR on first grant / 24 EUR on transfer) and art. 9 §2 (the five renunciation outcomes). Accessed 2026-08-02"
|
|
@@ -530,7 +530,7 @@ series:
|
|
|
530
530
|
institutional geography of Luxembourg City, written into a plate
|
|
531
531
|
regulation. THE DECODE TABLE IS A GAP: the instrument states the
|
|
532
532
|
MECHANISM (first group = the body) and publishes no codes, and no
|
|
533
|
-
Ministry of Foreign Affairs list was reached.
|
|
533
|
+
Ministry of Foreign Affairs list was reached. The plates spec puts diplomatic
|
|
534
534
|
decode tables at gate L4; this entry carries the mechanism so a table can
|
|
535
535
|
be hung off it later without an id change.
|
|
536
536
|
|
data/data/plates/lv.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/lv.yml — Latvia (
|
|
1
|
+
# plates/lv.yml — Latvia (the plates spec gate L1, EU/EEA wave 2). DRAFT for
|
|
2
2
|
# verification: researched by an Opus L1 researcher, never applied directly.
|
|
3
3
|
#
|
|
4
4
|
# THE LATVIAN SOURCE CHAIN — THE FULL INSTRUMENT LINE, DATED TO THE DAY
|
|
@@ -154,7 +154,7 @@ common:
|
|
|
154
154
|
practice rule the regulation does not contain: "Ja transportlīdzeklim
|
|
155
155
|
iepriekš bija izsniegta E tipa numura zīme, veicot numuru maiņu, CSDD
|
|
156
156
|
izsniedz C tipa numura zīmi." A divergence between the instrument and the
|
|
157
|
-
issuing authority, recorded and not averaged (
|
|
157
|
+
issuing authority, recorded and not averaged (the plates spec §5.3).
|
|
158
158
|
sources:
|
|
159
159
|
- "https://likumi.lv/ta/id/222145-transportlidzeklu-registracijas-noteikumi # 7. pielikums 1.1-1.7"
|
|
160
160
|
- "https://www.csdd.lv/numura-zimju-apraksts/nr-zimju-tipi-19 # CSDD's type table and the E-to-C replacement practice"
|
|
@@ -248,7 +248,7 @@ region_encoding_gap:
|
|
|
248
248
|
vehicle type) and its last digit (the year of validity); the trial plate's
|
|
249
249
|
"IZM"; the diplomatic plate's "C"/"CC"/"CD"; and the military plate's
|
|
250
250
|
"L"/"LA". Every one of those is encoded inline in the relevant series'
|
|
251
|
-
`charset`, which
|
|
251
|
+
`charset`, which the plates spec §2.4 makes the right home for a small mapping.
|
|
252
252
|
No Latvian instrument or CSDD page reached in this pass encodes region,
|
|
253
253
|
district or era anywhere in a general-use mark.
|
|
254
254
|
source: "https://likumi.lv/ta/id/222145-transportlidzeklu-registracijas-noteikumi # 7. pielikums, read in full for positional semantics"
|
|
@@ -295,7 +295,7 @@ gaps:
|
|
|
295
295
|
in 7. pielikums punkts 6. It is sold by the national standards body, its
|
|
296
296
|
catalogue is JS-rendered, and no edition was obtained: not LVS 20-92, not
|
|
297
297
|
LVS 20:2003, not /A1:2006, not LVS 20:2009 (the edition CSDD's current page
|
|
298
|
-
names).
|
|
298
|
+
names). The plates spec §4's SAE J686 posture applies exactly — never quote the
|
|
299
299
|
standard's values until it is bought. Consequence: this file carries NO
|
|
300
300
|
character height and NO font for any Latvian series, and its ordinary-plate
|
|
301
301
|
colours rest on CSDD's wording rather than on a specification.
|
|
@@ -356,7 +356,7 @@ series:
|
|
|
356
356
|
"A tipa numura zīmēs burti no cipariem atdalīti ar horizontālu svītru."
|
|
357
357
|
The horizontal stroke is prescribed for the A type ONLY; the B and C
|
|
358
358
|
blanks carry the same mark with no stroke prescribed. The pattern
|
|
359
|
-
spells the A-type printed form, per
|
|
359
|
+
spells the A-type printed form, per the plates spec §2.6 rule 2, and a
|
|
360
360
|
separator-forgiving consumer recovers the B/C form.
|
|
361
361
|
design:
|
|
362
362
|
plate: { w: 520, h: 110, unit: mm }
|
|
@@ -517,7 +517,7 @@ series:
|
|
|
517
517
|
motorcycle takes the C type (240 x 130 mm) or the F type. The pattern
|
|
518
518
|
therefore spells the mark solid — the same Latvian mark prints WITH a
|
|
519
519
|
hyphen on a car and WITHOUT one on a motorcycle, which is exactly the
|
|
520
|
-
situation
|
|
520
|
+
situation the plates spec §2.6 exists to make safe.
|
|
521
521
|
design:
|
|
522
522
|
plate: { w: 240, h: 130, unit: mm }
|
|
523
523
|
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
@@ -850,7 +850,7 @@ series:
|
|
|
850
850
|
this file does not assert it.
|
|
851
851
|
dsl_collision: >-
|
|
852
852
|
A GENUINE SCHEMA STRESSOR, RECORDED RATHER THAN WORKED AROUND
|
|
853
|
-
SILENTLY.
|
|
853
|
+
SILENTLY. The plates spec §2.2 defines the human pattern DSL as 9=digit,
|
|
854
854
|
L=letter, everything else literal — so the DSL CANNOT SPELL A LITERAL
|
|
855
855
|
"L" (nor a literal "9"). Latvia's military mark begins with exactly
|
|
856
856
|
that letter. Because `pattern` must round-trip against `regex`, and
|
|
@@ -861,7 +861,7 @@ series:
|
|
|
861
861
|
`issuing_grammar` so no information is lost, and it cannot live in
|
|
862
862
|
`regex_strict` because §2.7 forbids a strict twin on a recall-only
|
|
863
863
|
series. THE FIX IS A SCHEMA AMENDMENT (an escape for literal L/9 in
|
|
864
|
-
the DSL), not a data edit; flagged for
|
|
864
|
+
the DSL), not a data edit; flagged for the plates spec §2.6.
|
|
865
865
|
design:
|
|
866
866
|
plate: { w: 520, h: 110, unit: mm }
|
|
867
867
|
plate_variants:
|
|
@@ -921,4 +921,4 @@ series:
|
|
|
921
921
|
so. No amending regulation was traced to the insertion of 4.8. This is the
|
|
922
922
|
weakest date in the file and is flagged accordingly. Modelled as its own
|
|
923
923
|
series because the DESIGN differs (blue symbols) even though the FORMAT
|
|
924
|
-
does not —
|
|
924
|
+
does not — the plates spec §2.3's design limb.
|
data/data/plates/mc.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/mc.yml — Monaco (
|
|
1
|
+
# plates/mc.yml — Monaco (the plates spec gate L1, microstates group).
|
|
2
2
|
# DRAFT for verification. All primary text fetched from legimonaco.mc and the
|
|
3
3
|
# Journal de Monaco archive, 2026-08-02.
|
|
4
4
|
#
|
|
@@ -235,7 +235,7 @@ common:
|
|
|
235
235
|
routière in its own right — ratified 6 June 1978, in force for Monaco
|
|
236
236
|
6 June 1979. Art. 37.1 requires a distinguishing sign on the rear; Annexe
|
|
237
237
|
3.1 makes it one to three Latin capitals, black on a white ellipse; and
|
|
238
|
-
Annexe 3.3 is the provision
|
|
238
|
+
Annexe 3.3 is the provision the plates spec §4 flags — "Le signe distinctif ne
|
|
239
239
|
doit pas être incorporé dans le numéro d'immatriculation, ni apposé de
|
|
240
240
|
façon telle qu'il puisse créer une confusion avec ce dernier ou nuire à sa
|
|
241
241
|
lisibilité."
|
|
@@ -300,7 +300,7 @@ common:
|
|
|
300
300
|
The "écusson fuselé rouge et blanc" — the lozengy red-and-white shield of
|
|
301
301
|
the Grimaldi arms — is on the front plate and on the estampille. On the
|
|
302
302
|
princely série spéciale, "les armoiries princières remplacent l'écusson
|
|
303
|
-
rouge et blanc et l'estampille".
|
|
303
|
+
rouge et blanc et l'estampille". The plates spec §3's placeholder rule applies;
|
|
304
304
|
no clean licence route to the Grimaldi arms was located.
|
|
305
305
|
not_modelled:
|
|
306
306
|
- "NO POLICE SERIES EXISTS IN THE LAW. Art. 6 lists ME (Ministère d'État) and CN (Conseil National) and no Sûreté Publique series at all. The commonly-repeated 'SP + two digits' for police motorcycles has no primary basis located and is NOT modelled — a searched-for negative, not an oversight."
|
|
@@ -970,7 +970,7 @@ series:
|
|
|
970
970
|
plate: { w: 455, h: 85, unit: mm, note: "the adhesive band for cars — 'longueur : 45,5 cm ; largeur : 8,5 cm'. THE ONLY OVERALL DIMENSION IN THE WHOLE INSTRUMENT, because a band is not a deposited model." }
|
|
971
971
|
plate_variants:
|
|
972
972
|
- { w: 205, h: 100, unit: mm, note: "motorcycles — 'longueur : 20,5 cm ; largeur : 10 cm'" }
|
|
973
|
-
font: { name: "Swiss721 BT", note: "NAMED IN THE INSTRUMENT — the only typeface named anywhere in the microstates group, and a licensing question
|
|
973
|
+
font: { name: "Swiss721 BT", note: "NAMED IN THE INSTRUMENT — the only typeface named anywhere in the microstates group, and a licensing question the plates spec §6 must answer before any render uses it. Swiss721 is a Bitstream commercial font; the render layer uses the schematic fallback." }
|
|
974
974
|
band: { side: none }
|
|
975
975
|
emblem: { present: false }
|
|
976
976
|
rear_differs: false
|
data/data/plates/mt.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/mt.yml — Malta (
|
|
1
|
+
# plates/mt.yml — Malta (the plates spec gate L1, wave 2).
|
|
2
2
|
#
|
|
3
3
|
# THE INTERESTING THING ABOUT MALTA IS THE LETTER BLOCK, AND IT IS PUBLISHED.
|
|
4
4
|
# Most small jurisdictions allocate class-marking letters by unpublished
|
|
@@ -164,7 +164,7 @@ letter_blocks:
|
|
|
164
164
|
write. Secondary sources describe a "GM 99" form; no instrument supports
|
|
165
165
|
the two digits.
|
|
166
166
|
lapsed:
|
|
167
|
-
note: "blocks that were prescribed and then withdrawn — kept because plates issued under them remain on the road, exactly as the period discipline in
|
|
167
|
+
note: "blocks that were prescribed and then withdrawn — kept because plates issued under them remain on the road, exactly as the period discipline in the plates spec §2.4 requires for decode rows"
|
|
168
168
|
blocks:
|
|
169
169
|
- { block: BY, meaning: "route buses", period: "2004-2018", note: "replaced by BUS by L.N. 139 of 2018 s.4(a). The familiar DBY / EBY / FBY marks of the old Malta buses are instances of this rule with a varying leading letter — not three separate blocks" }
|
|
170
170
|
- { block: CY, meaning: "coaches", period: "2004-2011", note: "replaced by PY by L.N. 110 of 2011 s.6(b)" }
|
|
@@ -341,7 +341,7 @@ series:
|
|
|
341
341
|
for annotations. Unlike Cyprus, which at least publishes drawn
|
|
342
342
|
specimens, Malta publishes neither a name nor a dimensioned drawing.
|
|
343
343
|
The letterforms are therefore, on the face of the law, unconstrained.
|
|
344
|
-
|
|
344
|
+
The plates spec §6 posture: the render layer picks a free face and records
|
|
345
345
|
the substitution, because there is no statutory drawing to derive from.
|
|
346
346
|
license: "n/a — nothing prescribed"
|
|
347
347
|
rear_differs: false
|
|
@@ -367,7 +367,7 @@ series:
|
|
|
367
367
|
STATING: the EU band did not arrive with that instrument but with L.N. 476
|
|
368
368
|
of 2004 on 1 MAY 2004, Malta's EU accession day — so there was a
|
|
369
369
|
seven-week window in which this exact format was issued WITHOUT the band.
|
|
370
|
-
That is a genuine design difference and under
|
|
370
|
+
That is a genuine design difference and under the plates spec §2.3 it would
|
|
371
371
|
merit its own series, but `period` is modelled in INTEGER YEARS and both
|
|
372
372
|
dates fall in 2004, so the two are indistinguishable in this schema and
|
|
373
373
|
are recorded as one series with the sequence written into the sources
|
|
@@ -851,4 +851,4 @@ series:
|
|
|
851
851
|
deserves a shape to match, clearly labelled recall-only. PRE-1952 MALTA IS
|
|
852
852
|
NOT MODELLED: the Motor Vehicles Regulations 1948 and the calesse-era
|
|
853
853
|
registrations that secondary sources mention for the 19th century are L4
|
|
854
|
-
historical depth under
|
|
854
|
+
historical depth under the plates spec §7 and no primary was consulted.
|
data/data/plates/mx.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/mx.yml — Mexico (
|
|
1
|
+
# plates/mx.yml — Mexico (the plates spec gate L3).
|
|
2
2
|
#
|
|
3
3
|
# EVERY format, dimension, character-metric, alphabet and series-allocation
|
|
4
4
|
# claim in this file comes from ONE primary instrument and its predecessor,
|
|
@@ -69,14 +69,14 @@
|
|
|
69
69
|
# fix is a REPLACEMENT cycle (canje) whose phase differs per state; the
|
|
70
70
|
# widely repeated "Mexican states redesign their plates every three years"
|
|
71
71
|
# is the consequence, not the rule, and the artwork of a given state in a
|
|
72
|
-
# given trienio is NOT modelled here (
|
|
72
|
+
# given trienio is NOT modelled here (the plates spec §2.5).
|
|
73
73
|
#
|
|
74
74
|
# 4. THE HYPHENS ARE PHYSICAL. NOM Apéndice A, under every figure, verbatim:
|
|
75
75
|
# "Las dimensiones de los guiones serán de 16 x 5.6." — the group separator
|
|
76
76
|
# is a stamped 16 × 5.6 mm bar, not typography, and 5.1.4.3 says the figures
|
|
77
77
|
# "contienen un guión o dos guiones de separación entre letras y dígitos".
|
|
78
78
|
# Every regex here therefore spells the hyphen as a MANDATORY literal
|
|
79
|
-
# (
|
|
79
|
+
# (the plates spec §2.6 rule 2: regexes are written in printed form). The
|
|
80
80
|
# five-character motorcycle formats print NO separator and carry none.
|
|
81
81
|
#
|
|
82
82
|
# 5. FRONT AND REAR DIFFER — BY A LETTER, NOT A COLOUR. NOM 5.3.5, verbatim:
|
|
@@ -189,7 +189,7 @@ common:
|
|
|
189
189
|
figuras, distintivos o leyendas que dificulten su lectura."
|
|
190
190
|
font_posture: >-
|
|
191
191
|
The glyph shapes are STATUTORY DRAWINGS (figuras 36-39 of Apéndice A
|
|
192
|
-
Normativo), not a named typeface — the same posture
|
|
192
|
+
Normativo), not a named typeface — the same posture the plates spec §6 records
|
|
193
193
|
for the UK, Germany and Spain. No licensable font is mandated and none is
|
|
194
194
|
recorded here.
|
|
195
195
|
source: "https://www.dof.gob.mx/nota_detalle.php?codigo=5442476&fecha=24/06/2016 # 5.1.3.1, 5.1.3.2, 5.1.4.3 (guiones 16 x 5.6)"
|
|
@@ -1004,7 +1004,7 @@ series:
|
|
|
1004
1004
|
notes: >-
|
|
1005
1005
|
AMBULANCIAS and BOMBEROS. Tabla C gives them two rows and ONE order
|
|
1006
1006
|
(AA-000-AA), and Apéndice A gives them ONE figure (34), so under
|
|
1007
|
-
|
|
1007
|
+
the plates spec §2.3 they are one series with a shared format and design rather
|
|
1008
1008
|
than two — the color-only-variant rule applied to a leyenda-only variant.
|
|
1009
1009
|
|
|
1010
1010
|
- id: mx-civil-protection-2016
|
|
@@ -1036,7 +1036,7 @@ series:
|
|
|
1036
1036
|
SISTEMA NACIONAL DE PROTECCIÓN CIVIL — the ONLY series in this file whose
|
|
1037
1037
|
colours the NOM prescribes, which is why it is the only one carrying a
|
|
1038
1038
|
background hex. The hexes are `observed` renderings of the NAMED Pantone
|
|
1039
|
-
references (200 C red, Cool Gray 10 grey):
|
|
1039
|
+
references (200 C red, Cool Gray 10 grey): The plates spec §6 lets us build to a
|
|
1040
1040
|
colour standard and forbids reproducing it, and Pantone's own coordinates
|
|
1041
1041
|
are a licensed dataset, so the numbered colour is cited and the hex is
|
|
1042
1042
|
marked observed — the same posture plates/gb.yml takes for BS AU 145e.
|
|
@@ -1103,7 +1103,7 @@ series:
|
|
|
1103
1103
|
notes: >-
|
|
1104
1104
|
TRASLADO NACIONAL — the federal transfer/ferry plate for moving an
|
|
1105
1105
|
unregistered vehicle across the country, which is Mexico's `temporary`
|
|
1106
|
-
class in the
|
|
1106
|
+
class in the spec vocabulary sense (short-validity, movement-only). Distinct
|
|
1107
1107
|
from the state DEMOSTRACIÓN plates above, which are bound to a dealer
|
|
1108
1108
|
rather than to a journey.
|
|
1109
1109
|
|
data/data/plates/my.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/my.yml — Malaysia (
|
|
1
|
+
# plates/my.yml — Malaysia (the plates spec gate L3). DRAFT for verification.
|
|
2
2
|
#
|
|
3
3
|
# ===========================================================================
|
|
4
4
|
# THE CENTRAL SOURCING FACT, STATED FIRST BECAUSE IT SHAPES EVERY ENTRY
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
# the CURRENT format of every Malaysian state in one pass. Its readings are
|
|
81
81
|
# recorded per row in plates/_decode/my-index-marks.yml and drive the two
|
|
82
82
|
# standard series below. This is as close to a registration-corpus test
|
|
83
|
-
# (
|
|
83
|
+
# (the plates spec §5.2) as a jurisdiction without open registry data can get.
|
|
84
84
|
#
|
|
85
85
|
# WHAT THE SNAPSHOT PROVES, mechanically, from 28 successful readings:
|
|
86
86
|
# * TWO live arrangements coexist nationwide, not one.
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
# THE EXCLUDED LETTERS — AND A FOLKLORE CORRECTION THIS FILE MAKES EXPLICITLY
|
|
113
113
|
# ===========================================================================
|
|
114
114
|
# The rule Malaysia actually runs, per both the English and Malay Wikipedia
|
|
115
|
-
# articles (the mandatory finding aid,
|
|
115
|
+
# articles (the mandatory finding aid, the plates spec §4) and CONSISTENT WITH every
|
|
116
116
|
# one of the 28 live JPJ readings above: the letters I and O are never issued
|
|
117
117
|
# (confusable with 1 and 0) and Z is reserved for military vehicles. The Malay
|
|
118
118
|
# article states it directly — "Huruf I dan O ditiadakan daripada urutan abjad
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
# NOTE THE ONE PLACE THE EXCLUSION IS NOT VISIBLE: it is an ISSUING rule, not a
|
|
131
131
|
# spelling rule, so `format.regex` cannot carry it (the lint generates "I" and
|
|
132
132
|
# "O" from `pattern`). It lives in `format.regex_strict` on every series that
|
|
133
|
-
# has one, which is exactly what
|
|
133
|
+
# has one, which is exactly what the plates spec §2.7 built the twin for.
|
|
134
134
|
#
|
|
135
135
|
# ===========================================================================
|
|
136
136
|
# WHAT IS DELIBERATELY NOT MODELLED
|
|
@@ -142,7 +142,7 @@
|
|
|
142
142
|
# (FA, FB, FC, FD, FE, FF, FFF, FG, FH), university series, NGO series, event
|
|
143
143
|
# series, the national "MALAYSIA 1-9999" series. Each is an ORDINARY
|
|
144
144
|
# registration whose mark was auctioned; none has its own format, design or
|
|
145
|
-
# period.
|
|
145
|
+
# period. The plates spec §2.5 excludes exactly this, so the programme is recorded
|
|
146
146
|
# once, as a class note on my-standard-prefix (see `special_series` in
|
|
147
147
|
# `common`), and no series is authored for any individual release. The one
|
|
148
148
|
# exception is `my-jpjeplate-ev-2024`, which is a genuinely different PLATE
|
|
@@ -188,7 +188,7 @@ instrument:
|
|
|
188
188
|
Chambers. Unless and until reprinted pursuant to the powers of the
|
|
189
189
|
Commissioner of Law Revision under subsection 14(1) of the Revision of Laws
|
|
190
190
|
Act 1968 [Act 1], this text is NOT AN AUTHENTIC TEXT." Recorded because
|
|
191
|
-
|
|
191
|
+
the plates spec §5.3 says the authority is the authority: this is the authority's
|
|
192
192
|
own updated text, published by the authority, flagged by the authority as
|
|
193
193
|
non-authentic. Every quotation above and below is from it.
|
|
194
194
|
sections_used:
|
|
@@ -222,7 +222,7 @@ charset_defaults:
|
|
|
222
222
|
the Malay- and English-language Wikipedia articles and is CONSISTENT WITH
|
|
223
223
|
all 28 live JPJ readings of 3 August 2026, none of which contains I, O or
|
|
224
224
|
Z. Tagged `secondary-wikipedia` wherever it is load-bearing, per
|
|
225
|
-
|
|
225
|
+
the plates spec §4.
|
|
226
226
|
digits_note: >-
|
|
227
227
|
"No leading zeroes permitted" is stated by the English Wikipedia article
|
|
228
228
|
and is corroborated by every one of the 28 live JPJ readings (859, 1644,
|
|
@@ -283,9 +283,9 @@ common:
|
|
|
283
283
|
"MALAYSIA 1-9999" series, and well over a hundred others) is an ORDINARY
|
|
284
284
|
registration under my-standard-prefix or my-standard-suffix whose mark
|
|
285
285
|
was auctioned rather than allocated in sequence. No separate series is
|
|
286
|
-
authored for any of them (
|
|
286
|
+
authored for any of them (the plates spec §2.5); a consumer wanting the
|
|
287
287
|
programme index should treat it as the Malaysian analogue of a US
|
|
288
|
-
specialty-plate index, which
|
|
288
|
+
specialty-plate index, which the plates spec puts at L2/L4.
|
|
289
289
|
statutory_basis: "Act 333 s. 66(1)(jj), verbatim: 'to prescribe the procedures relating to tender of registration numbers'"
|
|
290
290
|
source: "https://lom.agc.gov.my/ilims/upload/portal/akta/outputaktap/1871744_BI/Act%20333_Final_15%20Oct%202023%20(25.3.24).pdf # s. 66(1)(jj). Accessed 2026-08-02"
|
|
291
291
|
|
|
@@ -325,7 +325,7 @@ series:
|
|
|
325
325
|
NO SEPARATOR GLYPH is prescribed by anything located, and Malaysian
|
|
326
326
|
plates print a GAP between the letter group and the number group. The
|
|
327
327
|
space in `pattern` is that gap; every regex accepts it as optional and
|
|
328
|
-
also accepts a hyphen, per
|
|
328
|
+
also accepts a hyphen, per the plates spec §2.8 (a separator-only class).
|
|
329
329
|
design:
|
|
330
330
|
background: { color: "#000000", finish: non-reflective, hex_basis: observed }
|
|
331
331
|
foreground: "#FFFFFF"
|
|
@@ -342,7 +342,7 @@ series:
|
|
|
342
342
|
Arial Bold with Calisto MT Italic and Franklin Gothic Bold as
|
|
343
343
|
alternates; the diagram is an image and was not read in this pass.
|
|
344
344
|
Charles Wright and FE-Schrift are both common in the wild and both are
|
|
345
|
-
aftermarket choices, not standards.
|
|
345
|
+
aftermarket choices, not standards. The plates spec §6's schematic-render
|
|
346
346
|
fallback applies.
|
|
347
347
|
region_encoding: "plates/_decode/my-index-marks.yml"
|
|
348
348
|
sources:
|
|
@@ -386,7 +386,7 @@ series:
|
|
|
386
386
|
Sarawak to prevent collision with the division prefixes; that
|
|
387
387
|
refinement is NOT carried in regex_strict because the live sample
|
|
388
388
|
contains a Q suffix (SU 7665 Q, Keningau) which contradicts it.
|
|
389
|
-
Recorded as a disagreement, not averaged (
|
|
389
|
+
Recorded as a disagreement, not averaged (the plates spec §5.3).
|
|
390
390
|
separator_note: "two printed gaps, both optional in the regexes and both spelled as separator-only classes"
|
|
391
391
|
design:
|
|
392
392
|
background: { color: "#000000", finish: non-reflective, hex_basis: observed }
|
|
@@ -405,7 +405,7 @@ series:
|
|
|
405
405
|
Sabah and Sarawak arrangement, it is now also Johor's (the J…J series),
|
|
406
406
|
Langkawi's (KV) and was Kuala Lumpur's during the W run-out before the V
|
|
407
407
|
series began. Separate series from my-standard-prefix because the FORMAT
|
|
408
|
-
differs (
|
|
408
|
+
differs (the plates spec §2.3); same statutory frame, same colours, same
|
|
409
409
|
period, and both are live — which is why both carry distinct notes and
|
|
410
410
|
the lint's overlap rule is satisfied honestly rather than by accident.
|
|
411
411
|
period.start 1987 is the Act in force, not the arrangement's origin; the
|
|
@@ -465,7 +465,7 @@ series:
|
|
|
465
465
|
pattern_note: >-
|
|
466
466
|
Country code, rank/serial number, and the literal DC. The two numeric
|
|
467
467
|
groups and the DC marking are printed as three groups; the country-code
|
|
468
|
-
group's own table is a RECORDED GAP (
|
|
468
|
+
group's own table is a RECORDED GAP (the plates spec puts diplomatic decode
|
|
469
469
|
tables at L4) and \d{1,3} is a practical bound, not a sourced one. The
|
|
470
470
|
RANK BLOCK of the second group IS sourced, in detail, and is carried in
|
|
471
471
|
plates/_decode/my-index-marks.yml.
|
|
@@ -473,7 +473,7 @@ series:
|
|
|
473
473
|
- { name: country_code, note: "the sending state's code — table not located, recorded gap" }
|
|
474
474
|
- { name: rank_number, note: "allocated by diplomatic rank: 01 head of mission's official car, 02/03 head of mission's personal car, 04 deputy chief of mission / deputy high commissioner / minister, 05 minister counsellor, 06-09 counsellor, 10-19 first secretary, 20-29 second secretary, 30-39 third secretary, 40-59 attaché (including military advisers, trade representatives and defence advisers), 60-99 a diplomat's SECOND duty-free car, 101 and above vehicles registered in the name of the mission — Wisma Putra, Protocol Department, paras 6.4, 6.6, 6.8" }
|
|
475
475
|
- { name: marking, value: "DC", note: "Diplomatic Corps" }
|
|
476
|
-
separator_note: "printed as three groups; the regexes spell the gap as an emitted separator class per
|
|
476
|
+
separator_note: "printed as three groups; the regexes spell the gap as an emitted separator class per the plates spec §2.8"
|
|
477
477
|
design:
|
|
478
478
|
background: { color: "#CC0000", finish: non-reflective, hex_basis: observed }
|
|
479
479
|
foreground: "#FFFFFF"
|
|
@@ -495,7 +495,7 @@ series:
|
|
|
495
495
|
or 'UN' respectively." So RED means a PERSON (an accredited diplomat);
|
|
496
496
|
BLACK means an INSTITUTION (the mission, the consular corps, a UN
|
|
497
497
|
office). Colour-only variant of the same format and period, hence a
|
|
498
|
-
sub-entry per
|
|
498
|
+
sub-entry per the plates spec §2.3.
|
|
499
499
|
sources:
|
|
500
500
|
- "https://web.archive.org/web/20140714163606/http://www.kln.gov.my/web/guest/diplomat # Ministry of Foreign Affairs Malaysia, Protocol > Foreign Missions > Diplomat, 'MOTOR VEHICLES' para 6.9 'Colour Identification Of Registration Plate'. Accessed 2026-08-02"
|
|
501
501
|
region_encoding: "plates/_decode/my-index-marks.yml"
|
|
@@ -651,7 +651,7 @@ series:
|
|
|
651
651
|
note: >-
|
|
652
652
|
The MARK is an ordinary Malaysian registration — this is a different
|
|
653
653
|
PLATE, not a different numbering system, which is exactly the
|
|
654
|
-
|
|
654
|
+
the plates spec §2.3 test for a series of its own (design differs, format
|
|
655
655
|
and period do not).
|
|
656
656
|
design:
|
|
657
657
|
plate_note: >-
|
|
@@ -660,7 +660,7 @@ series:
|
|
|
660
660
|
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
661
661
|
foreground: "#000000"
|
|
662
662
|
band: { side: left, color: "#009000", content: "green stripe + Jalur Gemilang (national flag) + the international distinguishing code MAL", hex_basis: observed }
|
|
663
|
-
emblem: { present: true, rendered: placeholder, note: "the national flag is a state emblem —
|
|
663
|
+
emblem: { present: true, rendered: placeholder, note: "the national flag is a state emblem — the plates spec §3 placeholder rule applies, artwork not reproduced" }
|
|
664
664
|
rear_differs: false
|
|
665
665
|
features: >-
|
|
666
666
|
Embossed characters in FE-Schrift on a white retroreflective ground with
|