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.
Files changed (195) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +57 -7
  3. data/README.md +353 -69
  4. data/data/PROVENANCE-vehicles.md +2 -2
  5. data/data/plates/PROVENANCE.md +2 -2
  6. data/data/plates/_decode/at-districts.yml +2 -2
  7. data/data/plates/_decode/cn-issuing-offices.yml +2 -2
  8. data/data/plates/_decode/cn-provinces.yml +2 -2
  9. data/data/plates/_decode/cz-kraj.yml +1 -1
  10. data/data/plates/_decode/dk-serial-blocks.yml +1 -1
  11. data/data/plates/_decode/es-provinces.yml +1 -1
  12. data/data/plates/_decode/fr-departements.yml +2 -2
  13. data/data/plates/_decode/gb-age-identifiers.yml +1 -1
  14. data/data/plates/_decode/gb-memory-tags.yml +1 -1
  15. data/data/plates/_decode/gr-prefectures.yml +1 -1
  16. data/data/plates/_decode/hr-cities.yml +3 -3
  17. data/data/plates/_decode/ie-counties.yml +3 -3
  18. data/data/plates/_decode/in-state-codes.yml +2 -2
  19. data/data/plates/_decode/it-provinces.yml +3 -3
  20. data/data/plates/_decode/jp-office-marks.yml +2 -2
  21. data/data/plates/_decode/jp-use-marks.yml +2 -2
  22. data/data/plates/_decode/kr-authority-marks.yml +1 -1
  23. data/data/plates/_decode/mx-entity-series.yml +1 -1
  24. data/data/plates/_decode/my-index-marks.yml +4 -4
  25. data/data/plates/_decode/pt-trailer-services.yml +1 -1
  26. data/data/plates/_decode/ro-counties.yml +1 -1
  27. data/data/plates/_decode/se-diplomatic.yml +1 -1
  28. data/data/plates/_decode/si-regions.yml +1 -1
  29. data/data/plates/_decode/ua-regions.yml +1 -1
  30. data/data/plates/_meta/classes.yml +1 -1
  31. data/data/plates/_meta/separators.yml +1 -1
  32. data/data/plates/ad.yml +555 -52
  33. data/data/plates/ar.yml +8 -8
  34. data/data/plates/at.yml +91 -10
  35. data/data/plates/au-act.yml +13 -13
  36. data/data/plates/au-nsw.yml +9 -9
  37. data/data/plates/au-nt.yml +13 -14
  38. data/data/plates/au-qld.yml +7 -7
  39. data/data/plates/au-sa.yml +7 -7
  40. data/data/plates/au-tas.yml +10 -10
  41. data/data/plates/au-vic.yml +6 -6
  42. data/data/plates/au-wa.yml +8 -8
  43. data/data/plates/be.yml +11 -11
  44. data/data/plates/br.yml +14 -14
  45. data/data/plates/ca-ab.yml +10 -10
  46. data/data/plates/ca-bc.yml +6 -6
  47. data/data/plates/ca-mb.yml +4 -4
  48. data/data/plates/ca-nb.yml +9 -9
  49. data/data/plates/ca-nl.yml +11 -11
  50. data/data/plates/ca-ns.yml +12 -12
  51. data/data/plates/ca-nt.yml +7 -7
  52. data/data/plates/ca-nu.yml +7 -7
  53. data/data/plates/ca-on.yml +21 -21
  54. data/data/plates/ca-pe.yml +13 -13
  55. data/data/plates/ca-qc.yml +11 -11
  56. data/data/plates/ca-sk.yml +6 -6
  57. data/data/plates/ca-yt.yml +6 -6
  58. data/data/plates/ch.yml +14 -14
  59. data/data/plates/cn.yml +9 -9
  60. data/data/plates/cy.yml +6 -6
  61. data/data/plates/cz.yml +9 -9
  62. data/data/plates/de.yml +8 -8
  63. data/data/plates/dk.yml +12 -12
  64. data/data/plates/ee.yml +13 -13
  65. data/data/plates/eg.yml +708 -0
  66. data/data/plates/es.yml +8 -8
  67. data/data/plates/fi.yml +14 -14
  68. data/data/plates/fr.yml +12 -12
  69. data/data/plates/gb.yml +16 -16
  70. data/data/plates/gr.yml +14 -14
  71. data/data/plates/hr.yml +15 -15
  72. data/data/plates/hu.yml +16 -16
  73. data/data/plates/ie.yml +7 -7
  74. data/data/plates/in.yml +7 -7
  75. data/data/plates/is.yml +3 -3
  76. data/data/plates/it.yml +21 -21
  77. data/data/plates/jp.yml +121 -121
  78. data/data/plates/kr.yml +6 -6
  79. data/data/plates/li.yml +6 -6
  80. data/data/plates/lt.yml +10 -10
  81. data/data/plates/lu.yml +4 -4
  82. data/data/plates/lv.yml +9 -9
  83. data/data/plates/mc.yml +4 -4
  84. data/data/plates/mt.yml +5 -5
  85. data/data/plates/mx.yml +7 -7
  86. data/data/plates/my.yml +18 -18
  87. data/data/plates/ng.yml +346 -0
  88. data/data/plates/nl.yml +5 -5
  89. data/data/plates/no.yml +7 -7
  90. data/data/plates/nz.yml +18 -18
  91. data/data/plates/pl.yml +4 -4
  92. data/data/plates/pt.yml +13 -5
  93. data/data/plates/ro.yml +14 -14
  94. data/data/plates/se.yml +13 -13
  95. data/data/plates/si.yml +8 -8
  96. data/data/plates/sk.yml +15 -15
  97. data/data/plates/sm.yml +7 -7
  98. data/data/plates/th.yml +10 -10
  99. data/data/plates/tr.yml +432 -0
  100. data/data/plates/ua.yml +9 -9
  101. data/data/plates/us-ak.yml +11 -11
  102. data/data/plates/us-al.yml +12 -12
  103. data/data/plates/us-ar.yml +15 -15
  104. data/data/plates/us-as.yml +10 -10
  105. data/data/plates/us-az.yml +10 -10
  106. data/data/plates/us-ca.yml +13 -13
  107. data/data/plates/us-co.yml +14 -14
  108. data/data/plates/us-ct.yml +24 -24
  109. data/data/plates/us-dc.yml +7 -7
  110. data/data/plates/us-de.yml +10 -10
  111. data/data/plates/us-fl.yml +17 -17
  112. data/data/plates/us-ga.yml +10 -10
  113. data/data/plates/us-gu.yml +11 -11
  114. data/data/plates/us-hi.yml +11 -11
  115. data/data/plates/us-ia.yml +9 -9
  116. data/data/plates/us-id.yml +13 -13
  117. data/data/plates/us-il.yml +11 -11
  118. data/data/plates/us-in.yml +9 -9
  119. data/data/plates/us-ks.yml +8 -8
  120. data/data/plates/us-ky.yml +11 -11
  121. data/data/plates/us-la.yml +11 -11
  122. data/data/plates/us-ma.yml +10 -10
  123. data/data/plates/us-md.yml +7 -7
  124. data/data/plates/us-me.yml +16 -16
  125. data/data/plates/us-mi.yml +8 -8
  126. data/data/plates/us-mn.yml +13 -13
  127. data/data/plates/us-mo.yml +13 -13
  128. data/data/plates/us-mp.yml +12 -12
  129. data/data/plates/us-ms.yml +8 -8
  130. data/data/plates/us-mt.yml +12 -12
  131. data/data/plates/us-nc.yml +12 -12
  132. data/data/plates/us-nd.yml +10 -10
  133. data/data/plates/us-ne.yml +10 -10
  134. data/data/plates/us-nh.yml +8 -8
  135. data/data/plates/us-nj.yml +8 -8
  136. data/data/plates/us-nm.yml +14 -14
  137. data/data/plates/us-nv.yml +18 -18
  138. data/data/plates/us-ny.yml +17 -17
  139. data/data/plates/us-oh.yml +13 -13
  140. data/data/plates/us-ok.yml +12 -12
  141. data/data/plates/us-or.yml +15 -15
  142. data/data/plates/us-pa.yml +14 -14
  143. data/data/plates/us-pr.yml +15 -15
  144. data/data/plates/us-ri.yml +10 -10
  145. data/data/plates/us-sc.yml +7 -7
  146. data/data/plates/us-sd.yml +12 -12
  147. data/data/plates/us-tn.yml +8 -8
  148. data/data/plates/us-tx.yml +17 -17
  149. data/data/plates/us-ut.yml +12 -12
  150. data/data/plates/us-va.yml +14 -14
  151. data/data/plates/us-vi.yml +16 -16
  152. data/data/plates/us-vt.yml +9 -9
  153. data/data/plates/us-wa.yml +18 -18
  154. data/data/plates/us-wi.yml +8 -8
  155. data/data/plates/us-wv.yml +9 -9
  156. data/data/plates/us-wy.yml +10 -10
  157. data/data/plates/va.yml +7 -7
  158. data/data/plates/za.yml +11 -11
  159. data/data/vehicles.json +121081 -62015
  160. data/lib/generators/vehicles/templates/initializer.rb +21 -12
  161. data/lib/generators/vehicles/templates/vehicles_refresh_job.rb +8 -4
  162. data/lib/vehicles/color.rb +8 -1
  163. data/lib/vehicles/colors.rb +14 -10
  164. data/lib/vehicles/configuration.rb +82 -3
  165. data/lib/vehicles/data_source.rb +220 -0
  166. data/lib/vehicles/dataset.rb +38 -6
  167. data/lib/vehicles/dataset_resolution.rb +39 -3
  168. data/lib/vehicles/dataset_slice.rb +90 -0
  169. data/lib/vehicles/hosted_result.rb +94 -0
  170. data/lib/vehicles/http.rb +75 -7
  171. data/lib/vehicles/id_lookup.rb +37 -0
  172. data/lib/vehicles/kind_rule.rb +63 -0
  173. data/lib/vehicles/labels.rb +131 -0
  174. data/lib/vehicles/make.rb +45 -19
  175. data/lib/vehicles/model.rb +66 -19
  176. data/lib/vehicles/model_match.rb +16 -2
  177. data/lib/vehicles/model_matcher.rb +6 -7
  178. data/lib/vehicles/plates/series.rb +87 -8
  179. data/lib/vehicles/plates/template_fill.rb +2 -2
  180. data/lib/vehicles/plates/templates.rb +9 -5
  181. data/lib/vehicles/plates.rb +54 -8
  182. data/lib/vehicles/providers/hosted_provider.rb +145 -32
  183. data/lib/vehicles/providers/local_provider.rb +2 -2
  184. data/lib/vehicles/refresh_result.rb +74 -0
  185. data/lib/vehicles/refresher.rb +190 -54
  186. data/lib/vehicles/release_checks.rb +72 -0
  187. data/lib/vehicles/text_matcher.rb +19 -10
  188. data/lib/vehicles/validators/vehicle_make_validator.rb +18 -1
  189. data/lib/vehicles/validators/vehicle_model_validator.rb +17 -1
  190. data/lib/vehicles/version.rb +1 -1
  191. data/lib/vehicles.rb +119 -67
  192. data/rakelib/data_refresh.rake +1 -1
  193. data/rakelib/plates_refresh.rake +1 -1
  194. data/sig/vehicles.rbs +67 -13
  195. metadata +13 -2
@@ -1,4 +1,4 @@
1
- # plates/ca-pe.yml — Prince Edward Island, Canada (PRD-PLATES gate L2/L3, Canada east wave).
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 (PRD-PLATES §2.6): the gap in a Prince Edward Island serial is
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 (PRD-PLATES §4). Every verbatim quotation of statute in this
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
- PRD-PLATES §3 placeholder default applies. The provincial escutcheon used as
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 (PRD-PLATES §4, owner override 2026-08-02), read 2026-08-02: every serial arrangement in this file, the county coding and the base dates"
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
- PRD-PLATES §2.5 keeps individual specialty DESIGNS out of v1, and neither
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 PRD-PLATES §2.2 contemplates.
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 (PRD-PLATES §2.3)."
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 PRD-PLATES §2.3 test twice over.
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 (PRD-QUALITY I-5/I-6). Entirely secondary.
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` (PRD-PLATES §2.2, owner ruling 2026-08-02), single-quoted so YAML keeps the backslash" }
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 (PRD-PLATES §2.2). The arrangement is the article's; that the plate must carry a distinguishing letter or device is STATUTORY — see `statutory_basis`." }
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 PRD-PLATES §2.3 forbids inventing
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
@@ -1,4 +1,4 @@
1
- # plates/ca-qc.yml — Québec, Canada (PRD-PLATES gate L2/L3, Canada east wave).
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 (PRD-PLATES §5.3).
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 (PRD-PLATES §2.6): Québec prints a GAP between groups, not a
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 (PRD-PLATES §4); every verbatim quotation in this file is from
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
- PRD-PLATES §3 placeholder default applies without exception. The fleur-de-lys
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 (PRD-PLATES §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"
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 PRD-PLATES §5.3: the en.wikipedia article says Québec issued a
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 PRD-PLATES §2.7 calls `strict`.
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` (PRD-PLATES
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 PRD-PLATES §2.6 and is
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 (PRD-PLATES §2.7).
1036
+ regex that wide must not be sold as a validity claim (the plates spec §2.7).
@@ -1,4 +1,4 @@
1
- # plates/ca-sk.yml — Saskatchewan (PRD-PLATES gate L3, Canada west).
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
- # PRD-PLATES § 4 Wikipedia row's tagging condition. None of them is traced to a
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: "PRD-PLATES § 3 placeholder default applies to the wheat device reported at the centre of the standard base."
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 PRD-PLATES § 2.8 the position is spelled with the sanctioned
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 PRD-PLATES § 2.3 test (own series iff format OR
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 (PRD-PLATES §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"
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
@@ -1,4 +1,4 @@
1
- # plates/ca-yt.yml — Yukon (PRD-PLATES gate L3, Canada territories).
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
- PRD-PLATES § 3 placeholder default applies to the prospector graphic, which
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 (plates-research-us-world.md § 2.1)
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 PRD-PLATES § 2.3, and should not be done ad hoc here.
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 (PRD-PLATES §4 Wikipedia row): ABC12 reported 1990-present, corroborating the instrument year; accessed 2026-08-02"
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 PRD-PLATES § 2.3's test (own
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 (PRD-PLATES gate L1). DRAFT for verification.
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 PRD-PLATES §2.2 introduced for exactly
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) — PRD-PLATES §6's "affirmatively clean per
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
- # PRD-PLATES §2.6, and rightly: the dataset commits to writing only "-" and
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 (PRD-PLATES §2.7 tiers), applied consistently below
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 PRD-PLATES §2.4 names when it introduces
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
- PRD-PLATES §6 the render layer therefore uses the schematic fallback and
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 PRD-PLATES §3's placeholder is mandatory rather than merely
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 (PRD-PLATES §2.5 scope discipline)."
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 PRD-PLATES §2.4's "inline
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 PRD-PLATES §2.2 introduced
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
- PRD-PLATES §2.3 test. The STRING, by contrast, is indistinguishable from a
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 PRD-PLATES §2.4 warns about.
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 (PRD-PLATES puts diplomatic decode tables at L4)." }
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), PRD-PLATES gate L3.
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 (PRD-PLATES §2.6)
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 PRD-PLATES § 2.6 says a
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 PRD-PLATES § 2.6
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 (PRD-PLATES §2.4, the instrument-date rule)
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 PRD-PLATES § 2.6 contract, NOT lint-validated, and NOT
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 (PRD-PLATES §2.7): the readable text fixes the trailer plate's
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
- PRD-PLATES § 2.2 anticipates.
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 PRD-PLATES § 2.3.
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 (PRD-PLATES gate L1, wave 2).
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 PRD-PLATES §2.6 a jurisdiction printing a glyph the serial alphabet
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
- PRD-PLATES §6 records for the UK, Germany and Spain: statutory
412
+ the plates spec §6 records for the UK, Germany and Spain: statutory
413
413
  drawing, not licensable font.
414
- license: "statutory drawing — PRD-PLATES §6: derive glyphs from the specimens, never from a third-party TTF"
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
- PRD-PLATES §2.7, and it is why no regex_strict exists.
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
- PRD-PLATES §7 and no source was consulted.
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 (PRD-PLATES gate L1, wave 2).
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
- # (PRD-PLATES §2.6), so it appears NOWHERE in a pattern or a regex here; it
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
- # PRD-PLATES §2.1 keys files on ISO 3166-1 and CS is a withdrawn code with no
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
- PRD-PLATES §6 applies unchanged: derive glyphs from the published
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 PRD-PLATES §2.7 describes. The statute's further
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 PRD-PLATES §2.3; recorded
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 (PRD-PLATES §2.6), the
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. PRD-PLATES puts diplomatic
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 PRD-PLATES §2.3 would make it a
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