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
data/data/plates/pt.yml CHANGED
@@ -1,4 +1,4 @@
1
- # plates/pt.yml — Portugal (PRD-PLATES gate L1, EU/EEA wave 2).
1
+ # plates/pt.yml — Portugal (the plates spec gate L1, EU/EEA wave 2).
2
2
  #
3
3
  # ONE INSTRUMENT CARRIES ALMOST THIS WHOLE FILE, and it is not the one the
4
4
  # secondary web cites. The Portuguese plate is governed by the REGULAMENTO DO
@@ -173,12 +173,20 @@ series:
173
173
  where the Anexo IV Modelo I drawing it replaces plainly draws one. The
174
174
  canonical printed form in `pattern` is therefore the GAP. `regex` still
175
175
  spells the position as the sanctioned separator-only class `[- ]`
176
- (PRD-PLATES §2.8) because the instrument now prescribes millimetres and
176
+ (the plates spec §2.8) because the instrument now prescribes millimetres and
177
177
  no glyph, which is precisely the es-consular-cc-1999 situation: with no
178
178
  glyph mandated, both members of the emitted set are inside the grammar,
179
179
  so the class is `strict` rather than a widening. FLAGGED FOR THE
180
180
  VERIFIER: this reading rests on the statutory drawing plus a deletion,
181
181
  and a photograph of an issued plate would settle it in one look.
182
+ SETTLED 2026-08-03: it did. Commons "2020 Portugal license plate
183
+ example.jpg" (CC BY-SA 4.0) photographs issued AE 36 EM — no
184
+ separator glyph anywhere, tight intra-group spacing, a small clear
185
+ gap between the pairs whose measured proportion (~0.19 of the
186
+ character em) matches the Anexo V 20 mm chain. Independently
187
+ reported by the project owner from plates in the wild the same day.
188
+ The statutory reading holds; the printed form is the GAP, full stop.
189
+ Evidence: statutory + photographic-observed.
182
190
  progression: >-
183
191
  Nationally sequential and non-geographic, like every Portuguese series
184
192
  since 1937. The known anchor is the first number, AA-01-AA, so the two
@@ -576,7 +584,7 @@ series:
576
584
  body that assigns the CD/CC/FM prefixes and their per-mission numbering is
577
585
  the Ministério dos Negócios Estrangeiros, not the IMT, and no MNE
578
586
  instrument was reached — so no mission decode table exists here and none
579
- was invented. PRD-PLATES puts diplomatic decode tables at gate L4.
587
+ was invented. The plates spec puts diplomatic decode tables at gate L4.
580
588
 
581
589
  # =========================================================================
582
590
  # TEMPORARY IMPORT — the blue-character plate.
@@ -704,7 +712,7 @@ series:
704
712
  one, with black letters, digits, dashes and border on both. The yellow
705
713
  is recorded as the entry's background because ciclomotores are the
706
714
  dominant population; the white variant is a colour-only difference on
707
- the same format and period, hence a note per PRD-PLATES §2.3 rather than
715
+ the same format and period, hence a note per the plates spec §2.3 rather than
708
716
  a second series.
709
717
  region_encoding: "câmara municipal — three-letter codes not enumerated by the instrument; no decode table authored"
710
718
  sources:
@@ -764,7 +772,7 @@ series:
764
772
  what the drawing — the thing a manufacturer builds from — labels, with
765
773
  the red confined to the class-letter field; the enacting sentence is
766
774
  preserved verbatim here so a verifier can overturn that choice with one
767
- look at a photograph. PRD-PLATES §5.3: record disagreements, never
775
+ look at a photograph. The plates spec §5.3: record disagreements, never
768
776
  average them.
769
777
  region_encoding: none
770
778
  sources:
data/data/plates/ro.yml CHANGED
@@ -1,4 +1,4 @@
1
- # plates/ro.yml — Romania (PRD-PLATES gate L1, wave 2).
1
+ # plates/ro.yml — Romania (the plates spec gate L1, wave 2).
2
2
  #
3
3
  # WHAT IS PRIMARY HERE AND WHAT IS NOT.
4
4
  #
@@ -33,7 +33,7 @@
33
33
  # 23 of the Regulament prescribes "numărul de ordine, format din cifre arabe"
34
34
  # and fixes NO NUMBER OF DIGITS. That is why Bucharest could lengthen its
35
35
  # order number from two digits to three without any amendment, and it is why
36
- # every standard series here carries a `regex_statutory` (PRD-PLATES §2.7)
36
+ # every standard series here carries a `regex_statutory` (the plates spec §2.7)
37
37
  # that is genuinely wider than its `regex`: the issued grammar is two digits
38
38
  # for counties and three for the capital, but the LEGAL bound is any number of
39
39
  # Arabic numerals. Romania is the cleanest example of that tier in the dataset
@@ -56,14 +56,14 @@
56
56
  # 145e and DIN 74069 — building to them is fine, their text is not
57
57
  # redistributable, and in this pass neither was purchased or read. They are
58
58
  # the reason every colour and every millimetre below is `secondary-wikipedia`
59
- # with `hex_basis: observed`. This is the same posture PRD-PLATES §4 records
59
+ # with `hex_basis: observed`. This is the same posture the plates spec §4 records
60
60
  # for SAE J686: NAMED, UNPINNED, never quoted.
61
61
  #
62
62
  # 5. ROMANIA'S EU BAND HAS A HARD DATE AND A SOFT ONE. Accession was 1 January
63
63
  # 2007, which is a treaty date and not in doubt. That the twelve-star band
64
64
  # REPLACED the Romanian tricolour band on plates on or about that date is
65
65
  # reported by a secondary and is tagged as such. The design change is modelled
66
- # as a series boundary (PRD-PLATES §2.3, the same cut plates/it.yml makes at
66
+ # as a series boundary (the plates spec §2.3, the same cut plates/it.yml makes at
67
67
  # 1999), so each of the two territorial formats appears twice: once with the
68
68
  # national band and once with the EU band.
69
69
  jurisdiction: ro
@@ -152,7 +152,7 @@ common:
152
152
  the Government. These are reservations INSIDE the ordinary serial space, so
153
153
  they are recorded here rather than authored as series: a reserved
154
154
  combination changes who holds the plate, not the format or the design, and
155
- PRD-PLATES §2.3 makes that a note and not a series.
155
+ the plates spec §2.3 makes that a note and not a series.
156
156
  not_encoded_because: >-
157
157
  The three restrictions above do not compose into a single sourced alphabet
158
158
  (Q excluded everywhere? only in the letter group? is the leading-I/O rule
@@ -196,14 +196,14 @@ common:
196
196
  phosphorescent holograms of the Romanian coat of arms running the length of
197
197
  the plate. The SERIAL is not reported to change.
198
198
  why_not_a_series: >-
199
- A design change of that size WOULD be a series boundary under PRD-PLATES
199
+ A design change of that size WOULD be a series boundary under the plates spec
200
200
  §2.3, and the honest reason it is not authored as one is that the entire
201
201
  evidence for it is a single secondary summary with a month and no
202
202
  instrument. Authoring `ro-standard-2024` on that basis would put a
203
203
  confidently-dated series into the dataset on the weakest evidence in this
204
204
  file. It is recorded here instead, and named as the FIRST target for the
205
205
  Romanian verifier: find the instrument, and re-cut ro-standard-2007 at its
206
- commencement date. The series-id contract (PRD-QUALITY I-5/I-6) makes that
206
+ commencement date. The series-id contract (the quality spec I-5/I-6) makes that
207
207
  re-cut cheap — a new id plus an alias — which is precisely why waiting is
208
208
  the cheap option and guessing is not.
209
209
  source: "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Romania # the September 2024 security-feature generation. Accessed 2026-08-02"
@@ -265,7 +265,7 @@ series:
265
265
  evidence_tier: secondary-wikipedia
266
266
  notes: "see common.alphabet — the reported letter restrictions are recorded there and deliberately not encoded."
267
267
  separator_note: >-
268
- Both printed gaps are written as optional emitted SPACEs (PRD-PLATES
268
+ Both printed gaps are written as optional emitted SPACEs (the plates spec
269
269
  §2.6). No separator GLYPH is prescribed by art. 23, which names three
270
270
  element groups and no punctuation between them.
271
271
  progression: >-
@@ -498,7 +498,7 @@ series:
498
498
  notes: >-
499
499
  THE MOTORCYCLE PLATE — the ordinary county mark on a 240 x 130 mm two-row
500
500
  plate. Its own series rather than a variant because the dimensions differ
501
- (PRD-PLATES §2.3), and `corroboration-only` because the size is sourced
501
+ (the plates spec §2.3), and `corroboration-only` because the size is sourced
502
502
  while the date is inherited. Romania does not appear to give motorcycles a
503
503
  distinct serial grammar, which is worth stating as a negative: unlike Italy,
504
504
  whose motorcycle plate had five digits where the car had three-plus-two,
@@ -568,7 +568,7 @@ series:
568
568
  stopped with the 1992 reform, but these plates remained VALID UNTIL 2000,
569
569
  so Romanian traffic ran both systems side by side for eight years and a
570
570
  photograph from the 1990s proves nothing about a vehicle's registration
571
- date. Recorded as a period overlap with distinct notes, per PRD-PLATES
571
+ date. Recorded as a period overlap with distinct notes, per the plates spec
572
572
  §2.2, rather than as a clean cut.
573
573
 
574
574
  # =========================================================================
@@ -682,7 +682,7 @@ series:
682
682
  A TWO-PART NUMERIC DECODE: the first three digits are a country code
683
683
  identifying the sending state and the last three a rank or sequence
684
684
  within the mission, with 101 reported for an ambassador or head of
685
- mission. The country-code table is NOT authored — PRD-PLATES puts
685
+ mission. The country-code table is NOT authored — the plates spec puts
686
686
  diplomatic decode tables at gate L4, and plates/fi.yml made the same
687
687
  call for the Finnish mission table. Note that this is a MISSION decode,
688
688
  not a geographic one, and it does not touch ro-counties.yml.
@@ -697,7 +697,7 @@ series:
697
697
  - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Romania # secondary-wikipedia: CD plus six digits in blue, three-digit country code and three-digit rank code, 101 for the head of mission. FORMAT + COLOUR. Accessed 2026-08-02"
698
698
  notes: >-
699
699
  THE DIPLOMATIC CORPS PLATE. Authored despite an unsourced start date
700
- because PRD-PLATES gate L1 names diplomatic among the core classes, and
700
+ because the plates spec gate L1 names diplomatic among the core classes, and
701
701
  because the FORMAT and the DECODE MECHANISM are described well enough to be
702
702
  useful; the date is the part this file admits it does not have, in the
703
703
  period_note rather than in a footnote. A companion series TC — reported for
@@ -739,7 +739,7 @@ series:
739
739
  unmodelled_series:
740
740
  evidence_tier: secondary-wikipedia
741
741
  source: "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Romania # every row below. Accessed 2026-08-02"
742
- reason_not_modelled: "each lacks a defensible date, a determinate format, or both. PRD-PLATES §5.3 prefers the recorded gap."
742
+ reason_not_modelled: "each lacks a defensible date, a determinate format, or both. The plates spec §5.3 prefers the recorded gap."
743
743
  rows:
744
744
  - token: "long-term temporary plate"
745
745
  note: >-
@@ -777,7 +777,7 @@ unmodelled_series:
777
777
  Reported for public utilities, tractors, agricultural machinery, scooters
778
778
  and golf carts, valid only inside the issuing locality, on a yellow
779
779
  ground — and, in the source's own words, of NON-STANDARDISED format
780
- varying by issuing authority. That is a species PRD-PLATES §2.2 cannot
780
+ varying by issuing authority. That is a species the plates spec §2.2 cannot
781
781
  represent as one series and should not: a format that varies by locality
782
782
  is a table of formats, not a format. Recorded as the shape of the problem
783
783
  for whoever attempts it.
data/data/plates/se.yml CHANGED
@@ -1,4 +1,4 @@
1
- # plates/se.yml — Sweden (PRD-PLATES gate L1).
1
+ # plates/se.yml — Sweden (the plates spec gate L1).
2
2
  #
3
3
  # EVERY format, colour, dimension and class claim here comes from one of four
4
4
  # primary layers, and each series says which:
@@ -98,7 +98,7 @@
98
98
  #
99
99
  # SEPARATOR POLICY: the printed gap between letter group and digit group is a
100
100
  # GAP, not a glyph — TSFS 2015:63 6 kap. 4 § says only "tre bokstäver till
101
- # vänster och tre siffror till höger". Per PRD-PLATES §2.6 that gap is written
101
+ # vänster och tre siffror till höger". Per the plates spec §2.6 that gap is written
102
102
  # as the emitted SPACE in `pattern` and as an optional " ?" in every regex.
103
103
  #
104
104
  # REGEX POLICY: `format.regex` is the lint-round-trippable regex over the full
@@ -110,7 +110,7 @@
110
110
  # dimensions, colours, the black frame and the left/right and top/bottom
111
111
  # arrangement of the character groups, and nothing else — no named font, no
112
112
  # character height, no stroke width, and no statutory Schriftmuster of the
113
- # German or Spanish kind. Per PRD-PLATES §6 the render layer therefore has no
113
+ # German or Spanish kind. Per the plates spec §6 the render layer therefore has no
114
114
  # licensable font to clear and no drawing to derive from either; the schematic
115
115
  # fallback applies and the gap is recorded.
116
116
  jurisdiction: se
@@ -297,7 +297,7 @@ series:
297
297
  separator_note: >-
298
298
  The gap between letter group and digit group is a printed GAP with no
299
299
  glyph (TSFS 2015:63 6 kap. 4 §: "tre bokstäver till vänster och tre
300
- siffror till höger"). Written as the emitted SPACE per PRD-PLATES §2.6.
300
+ siffror till höger"). Written as the emitted SPACE per the plates spec §2.6.
301
301
  design:
302
302
  plate: { w: 520, h: 110, unit: mm }
303
303
  plate_variants:
@@ -325,7 +325,7 @@ series:
325
325
  - "https://www.transportstyrelsen.se/TSFS/TSFS%202015_63k.pdf # 6 kap. 2-5 §: the four plate shapes, which vehicle gets which, the layout and colours, the EU mark; accessed 2026-08-02"
326
326
  notes: >-
327
327
  THE SWEDISH STANDARD PLATE, first shape. PERIOD DISAGREEMENT, RECORDED
328
- RATHER THAN AVERAGED (PRD-PLATES §5.3): Transportstyrelsen says "1972"
328
+ RATHER THAN AVERAGED (the plates spec §5.3): Transportstyrelsen says "1972"
329
329
  twice in its own words (2017-02-17: "Dagens system för registreringsnummer
330
330
  med tre bokstäver och tre siffror har funnits sedan 1972"; 2019-01-16:
331
331
  "Senaste gången registreringsnumren ändrades var 1972"), and the
@@ -419,7 +419,7 @@ series:
419
419
 
420
420
  # =========================================================================
421
421
  # MOTORCYCLE AND MOPED KLASS I — the two-row 170x150 plate. Same numbers,
422
- # different plate, so a series of its own (PRD-PLATES §2.3 design limb).
422
+ # different plate, so a series of its own (the plates spec §2.3 design limb).
423
423
  # =========================================================================
424
424
  - id: se-motorcycle
425
425
  class: motorcycle
@@ -461,7 +461,7 @@ series:
461
461
  notes: >-
462
462
  MOTORCYCLES AND MOPED KLASS I share ONE plate and one number system, so
463
463
  they are one series with two categories rather than two series: the
464
- PRD-PLATES §2.3 test (own series iff format OR design OR period differs)
464
+ the plates spec §2.3 test (own series iff format OR design OR period differs)
465
465
  separates nothing between them. period.start follows the standard series
466
466
  because the NUMBER is the same national number; the 170x150 plate itself
467
467
  is younger — Transportstyrelsen announced the reduction on 2013-05-08 and
@@ -639,7 +639,7 @@ series:
639
639
  släpslädar eller terrängsläp, bokstäverna 'LS'." Time-limited licences
640
640
  additionally carry the expiry date stamped into the plate. Neither can
641
641
  be expressed in a single `pattern` string — the same schema pressure
642
- PRD-PLATES §2.2 records for Japan.
642
+ the plates spec §2.2 records for Japan.
643
643
  design:
644
644
  plate: { w: 520, h: 110, unit: mm }
645
645
  plate_variants:
@@ -736,7 +736,7 @@ series:
736
736
  region_encoding: "plates/_decode/se-diplomatic.yml"
737
737
  region_encoding_note: >-
738
738
  128 landskoder + 10 kategorikoder, both closed and primary. Held in a
739
- _decode file rather than inline (PRD-PLATES §2.4) because 138 rows is well
739
+ _decode file rather than inline (the plates spec §2.4) because 138 rows is well
740
740
  past de.yml's Anlage-2 inline threshold.
741
741
  sources:
742
742
  - "https://www.transportstyrelsen.se/TSFS/TSFS%202015_63k.pdf # 12 kap. 1 a § (definitions of landskod and kategorikod, added by TSFS 2025:33), 12 kap. 2 § (six characters, black on light blue reflective, black frame), 12 kap. 3 § (the 2+3+1 composition, one-row and two-row); 6 kap. 6 § (no EU mark, no VIN marking); accessed 2026-08-02"
@@ -882,7 +882,7 @@ series:
882
882
  "Du får använda alla bokstäver i svenska alfabetet, A-Ö" — so Å, Ä and
883
883
  Ö ARE issued on personal plates, and they are OUTSIDE this dataset's
884
884
  serial alphabet (_meta/separators.yml: "ABCDEFGHIJKLMNOPQRSTUVWXYZ
885
- 0123456789" and nothing else). Per PRD-PLATES §2.6 that is "a schema
885
+ 0123456789" and nothing else). Per the plates spec §2.6 that is "a schema
886
886
  amendment, not a data entry": the regexes here are therefore
887
887
  deliberately NARROWER than the issuing grammar in that one respect,
888
888
  which §2.7 confirms is still `strict`. A Swedish personal plate reading
@@ -897,7 +897,7 @@ series:
897
897
  "Det får finnas mellanrum mellan tecknen under förutsättning att
898
898
  teckenkombinationen inklusive mellanrum ryms på skylten. Ett mellanrum
899
899
  tar samma plats på skylten som ett tecken." So a space COUNTS toward
900
- the 2-7 budget. It is still an emitted separator per PRD-PLATES §2.6
900
+ the 2-7 budget. It is still an emitted separator per the plates spec §2.6
901
901
  and is written as a bare literal inside an alternation, never inside a
902
902
  mixed character class (§2.8).
903
903
  forbidden_shapes: >-
@@ -961,7 +961,7 @@ series:
961
961
  admits Å, Ä and Ö, which this dataset's serial alphabet cannot spell; it
962
962
  treats O/0 and I/1 as THE SAME CHARACTER for allocation, which no regex
963
963
  can express; and it counts a SPACE as a character position while
964
- PRD-PLATES §2.6 classifies space as a separator a lenient consumer may
964
+ the plates spec §2.6 classifies space as a separator a lenient consumer may
965
965
  delete — a consumer deriving a separator-free twin of this regex is
966
966
  therefore doing something semantically different here than everywhere
967
967
  else in the dataset. The character budget also grew: 2-6 under the 1988
@@ -1038,7 +1038,7 @@ series:
1038
1038
  categories: [car, van, truck, bus, motorcycle, trailer, machine]
1039
1039
  period: { start: 2009 }
1040
1040
  period_evidence: instrument-in-force
1041
- # RECALL-ONLY (PRD-PLATES §2.7): militärtrafikförordningen states the
1041
+ # RECALL-ONLY (the plates spec §2.7): militärtrafikförordningen states the
1042
1042
  # COLOURS and that the number is rendered in "gula siffror", and delegates
1043
1043
  # everything else — length, grouping, any leading letters — to Försvars-
1044
1044
  # makten's own föreskrifter, which were not reached in this pass. A 1-6
data/data/plates/si.yml CHANGED
@@ -1,4 +1,4 @@
1
- # plates/si.yml — Slovenia (PRD-PLATES gate L1, wave 2).
1
+ # plates/si.yml — Slovenia (the plates spec gate L1, wave 2).
2
2
  #
3
3
  # EVERY format, colour, dimension and class claim here is read from the Uradni
4
4
  # list Republike Slovenije, in the instruments' own published text, on
@@ -40,7 +40,7 @@
40
40
  # glyph, and all three are primary. Every `pattern` here prints it.
41
41
  # Slovenia's specimen drawings render it as a raised dot; the dataset writes
42
42
  # the hyphen the LAW names, because U+00B7 is in the forgiving set of
43
- # plates/_meta/separators.yml but not the emitted set (PRD-PLATES §2.6).
43
+ # plates/_meta/separators.yml but not the emitted set (the plates spec §2.6).
44
44
  #
45
45
  # 3. THE CHARSET RULE IS THIRTY-FOUR YEARS OLD AND ALMOST UNCHANGED. 1992
46
46
  # (15. člen): "se v registrski oznaki vozila ne uporablja črk O, Č, Š in Ž
@@ -148,7 +148,7 @@ common:
148
148
  artwork_risk: unresearched
149
149
  artwork_note: >-
150
150
  Fifty-eight municipal coats of arms, each protected under its own
151
- municipal instrument and none assessed in this pass. PRD-PLATES §3
151
+ municipal instrument and none assessed in this pass. The plates spec §3
152
152
  applies: every series below carries `rendered: placeholder`.
153
153
  source: "https://www.uradni-list.si/glasilo-uradni-list-rs/vsebina/2011-01-2292 # 28. člen. Accessed 2026-08-02"
154
154
  alphabet:
@@ -240,7 +240,7 @@ common:
240
240
  font:
241
241
  name: null
242
242
  statutory_basis: "31. člen, in its entirety: 'Podrobnosti o obliki zapisa na registrski tablici so navedene v tehnični specifikaciji.' One sentence, delegating everything, to a document the pravilnik does not name, publish or date — and which 55. člen then makes the trigger for 31. člen's own application. The specimen drawings in Priloga VI are the only published glyph evidence and carry no measurements."
243
- licence: "PRD-PLATES §6 applies unchanged: derive glyphs from the drawings, never from a third-party TTF. Slovenia is a WEAKER case than Germany for a public-domain argument because the operative document is a procurement specification rather than a statutory annex. Recorded gap."
243
+ licence: "The plates spec §6 applies unchanged: derive glyphs from the drawings, never from a third-party TTF. Slovenia is a WEAKER case than Germany for a public-domain argument because the operative document is a procurement specification rather than a statutory annex. Recorded gap."
244
244
  secondary_note: "en.wikipedia names the typeface as Helvetica. That is a secondary claim about a document this pass never saw, and it is recorded here rather than in any design block."
245
245
  secondary_evidence: secondary-wikipedia
246
246
  secondary_source: "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Slovenia # 'Text in Helvetica typeface'. Accessed 2026-08-02"
@@ -252,7 +252,7 @@ common:
252
252
  federal system in 1991; authoring it in each national file would duplicate
253
253
  a single historical layer, give it two ids, and let the two copies drift
254
254
  apart under later correction. It belongs in ONE historical jurisdiction
255
- file at gate L4 (PRD-PLATES §7 — "historical depth, the pre-2000 world"),
255
+ file at gate L4 (the plates spec §7 — "historical depth, the pre-2000 world"),
256
256
  not twice at L1. What is recorded in each national file is the HINGE, from
257
257
  that nation's own primary, so the L4 pass has two dated anchors to work
258
258
  from.
@@ -704,7 +704,7 @@ series:
704
704
  chosen marks on foreign-mission plates and on test plates.
705
705
  why_recall_only: >-
706
706
  The regex is deliberately wider than the issuing grammar and a match is
707
- a shape hit only (PRD-PLATES §2.7). It does not enforce the
707
+ a shape hit only (the plates spec §2.7). It does not enforce the
708
708
  three-character floor, does not count the hyphen against the six-character
709
709
  budget, cannot express the O-excludes-0 rule, and cannot express
710
710
  "kombinacija znakov, ki jo omogoča prostor na tablici" — a physical-fit
@@ -758,7 +758,7 @@ series:
758
758
  kombinacija je lahko tudi izbirna."
759
759
  recorded_conflict: >-
760
760
  THE TEXT AND THE DRAWING DISAGREE, AND THE DISAGREEMENT IS RECORDED
761
- RATHER THAN RESOLVED (PRD-PLATES §5.3). 40. člen (1) says the mark is
761
+ RATHER THAN RESOLVED (the plates spec §5.3). 40. člen (1) says the mark is
762
762
  the ORDINARY four- or five-character combination, which by 30. člen (3)-(4)
763
763
  means one of nine enumerated arrangements. Risba št. 9 of Priloga VI
764
764
  shows the specimen "MV [grb] H1-001" — a letter followed by four digits,
@@ -873,7 +873,7 @@ series:
873
873
  first numeric group is a COUNTRY code assigned by the agency — neither is
874
874
  geographic in the si-regions.yml sense. The country-code table is not
875
875
  published in the pravilnik ("ki jo določi agencija") and was not obtained
876
- from any primary: a RECORDED GAP, and PRD-PLATES puts diplomatic decode
876
+ from any primary: a RECORDED GAP, and the plates spec puts diplomatic decode
877
877
  tables at gate L4 in any case.
878
878
  sources:
879
879
  - "https://www.uradni-list.si/glasilo-uradni-list-rs/vsebina/2011-01-2292 # 39. člen (1)-(3), 28. člen (2), 35. člen (5) (no chosen marks on these plates)"
data/data/plates/sk.yml CHANGED
@@ -1,4 +1,4 @@
1
- # plates/sk.yml — Slovakia (PRD-PLATES gate L1, wave 2).
1
+ # plates/sk.yml — Slovakia (the plates spec gate L1, wave 2).
2
2
  #
3
3
  # EVERY claim below is read from slov-lex.sk, the Slovak government's own legal
4
4
  # portal, in its OFFICIAL CONSOLIDATED PDFs. slov-lex publishes a dated version
@@ -49,7 +49,7 @@
49
49
  # č. 227/2006 Z. z. Čl. I bod 13 replaced the words "za pomlčkou" with "za
50
50
  # štátnym znakom Slovenskej republiky" throughout. Every regex in this file
51
51
  # therefore spells that position as the separator-only class `[- ]?`
52
- # (PRD-PLATES §2.8): a hyphen is what the law once prescribed and what Slovak
52
+ # (the plates spec §2.8): a hyphen is what the law once prescribed and what Slovak
53
53
  # text still commonly writes, a space is the printed gap, and neither is
54
54
  # mandatory today.
55
55
  #
@@ -100,7 +100,7 @@
100
100
  # the commonly-quoted "Czechoslovak plates expired on 1 January 2005" is right
101
101
  # but only became right by amendment. Both readings are recorded below. Neither
102
102
  # country file duplicates the other silently and neither drops the era; a shared
103
- # `cs-` file was rejected because PRD-PLATES §2.1 keys on ISO 3166-1 and CS is
103
+ # `cs-` file was rejected because the plates spec §2.1 keys on ISO 3166-1 and CS is
104
104
  # withdrawn with no authority left to cite.
105
105
  #
106
106
  # WHAT THIS PASS COULD NOT ESTABLISH, recorded rather than filled:
@@ -119,7 +119,7 @@
119
119
  # colours quoted here come from the last instrument that stated them in
120
120
  # words (vyhláška 225/2004 Z. z.) and from § 36 ods. 1 of vyhláška 9/2009
121
121
  # as in force to 31 December 2022. Flagged per series.
122
- # * WHICH MISSIONS HOLD WHICH EE/ZZ BLOCKS. PRD-PLATES puts diplomatic decode
122
+ # * WHICH MISSIONS HOLD WHICH EE/ZZ BLOCKS. The plates spec puts diplomatic decode
123
123
  # tables at L4; none is authored.
124
124
  jurisdiction: sk
125
125
  authority:
@@ -197,7 +197,7 @@ common:
197
197
  90/1997 § 44 ods. 2 and vyhláška 225/2004 § 48 ods. 2 ("za pomlčkou") —
198
198
  and vyhláška č. 227/2006 Z. z. Čl. I bod 13 replaced those words with "za
199
199
  štátnym znakom Slovenskej republiky". Every regex here spells the position
200
- `[- ]?`, the sanctioned separator-only class of PRD-PLATES §2.8, which
200
+ `[- ]?`, the sanctioned separator-only class of the plates spec §2.8, which
201
201
  accepts the historic hyphen, the modern printed gap, and the closed-up
202
202
  form Slovak registries and databases use. `pattern` prints a space for
203
203
  post-2006 series and a hyphen for pre-2006 ones, matching what each plate
@@ -287,7 +287,7 @@ common:
287
287
  geometry is the recorded gap here; between the two jurisdictions the
288
288
  coverage is complementary and neither is complete.
289
289
  licence: >-
290
- PRD-PLATES §6: derive from published geometry, never from a third-party
290
+ the plates spec §6: derive from published geometry, never from a third-party
291
291
  TTF. With no Slovak glyph geometry published at all, a renderer must use
292
292
  the schematic fallback for this jurisdiction and record the substitution.
293
293
  No Slovak public-domain-of-statutes provision was researched — recorded gap.
@@ -305,7 +305,7 @@ common:
305
305
  keeping the same number.
306
306
  note: >-
307
307
  Modelled as a material option on the standard series rather than as a
308
- separate series: PRD-PLATES §2.3 makes a variant its own series iff format,
308
+ separate series: The plates spec §2.3 makes a variant its own series iff format,
309
309
  design or period differs, and the illuminated plate shares all three
310
310
  (§ 35 ods. 6 gives it the same black-on-white and the same 52 x 11 cm).
311
311
  source: "https://www.slov-lex.sk/static/pdf/2009/8/ZZ_2009_8_20230101.pdf # § 123 ods. 3, 9, 12, 13. Accessed 2026-08-02"
@@ -391,7 +391,7 @@ series:
391
391
  foreground_note: "'vypuklé' — embossed, not printed"
392
392
  border: { color: "#000000", hex_basis: observed, note: "§ 35 ods. 10: 'Tabuľka s evidenčným číslom má na okraji vylisovanú obvodovú drážku, ktorej farba je totožná s farbou písmen a číslic' — an embossed peripheral groove in the character colour, carrying security features. No width is given, unlike the Czech 4 mm." }
393
393
  band: { side: left, color: "#003399", content: eu-stars+SK, hex_basis: observed, geometry_note: "fully dimensioned — see common.euro_band.geometry" }
394
- emblem: { present: true, rendered: placeholder, position: "between the first letter pair and the digits, in the separator position", content: "štátny znak Slovenskej republiky (the double cross on three hills)", dimensions: { h: 49, w: 38, unit: mm }, render_note: "PRD-PLATES §3 placeholder rule: the Slovak state arms are not licence-cleared in this pass. The millimetres ARE published (vyhláška 227/2006 Čl. I bod 21) and are recorded so a renderer that clears them needs no further research." }
394
+ emblem: { present: true, rendered: placeholder, position: "between the first letter pair and the digits, in the separator position", content: "štátny znak Slovenskej republiky (the double cross on three hills)", dimensions: { h: 49, w: 38, unit: mm }, render_note: "The plates spec §3 placeholder rule: the Slovak state arms are not licence-cleared in this pass. The millimetres ARE published (vyhláška 227/2006 Čl. I bod 21) and are recorded so a renderer that clears them needs no further research." }
395
395
  material_options: ["light alloy", "illuminated polycarbonate/polyester blend"]
396
396
  rear_differs: false
397
397
  display: "front and rear on categories M and N and on goods L7e quadricycles; rear only (centre or left) on L1e-L6e, O, R, PS and multi-purpose L7e — § 35 ods. 11"
@@ -423,7 +423,7 @@ series:
423
423
  § 143h it inserted is headed "Prechodné ustanovenie k úpravám účinným od
424
424
  1. marca 2022", the fossil of an earlier plan that zákon č. 404/2021 Z. z.
425
425
  postponed. THE FORMAT DID NOT CHANGE, which is why this series and its
426
- predecessor share a regex and are separated by MEANING alone: PRD-PLATES
426
+ predecessor share a regex and are separated by MEANING alone: The plates spec
427
427
  §2.3 makes a series its own iff format OR design OR period differs, and
428
428
  here it is the region_encoding — a semantic, machine-readable difference
429
429
  that a parse API must act on — plus the period. The pre-2023 plates were
@@ -683,7 +683,7 @@ series:
683
683
  regex: '\A(?:EL|EV)[- ]?\d{3}[A-Z]{2}\z'
684
684
  pattern_note: >-
685
685
  THE PATTERN SHOWS THE EV FORM AND THE REGEX CARRIES BOTH, for a schema
686
- reason rather than a legal one: the human-pattern DSL of PRD-PLATES §2.2
686
+ reason rather than a legal one: the human-pattern DSL of the plates spec §2.2
687
687
  reserves L for "any letter", so a literal EL prefix cannot be spelled as a
688
688
  pattern at all without meaning "E followed by any letter". EV is equally
689
689
  canonical — § 35 ods. 7 offers the two as alternatives with no preference —
@@ -790,7 +790,7 @@ series:
790
790
  from the district system's own start rather than sourced. Flagged for the
791
791
  verifier as the first thing to check in this file. Modelled as its own
792
792
  series rather than a variant because the FORMAT differs — a reserved letter
793
- at a fixed position is a grammar difference, and PRD-PLATES §2.3 makes that
793
+ at a fixed position is a grammar difference, and the plates spec §2.3 makes that
794
794
  a series.
795
795
 
796
796
  # =========================================================================
@@ -814,7 +814,7 @@ series:
814
814
  číslic" — which is why this series runs unbroken from 1997.
815
815
  block_allocation: >-
816
816
  NOT AUTHORED. Which mission holds which five-digit block is exactly the
817
- decode PRD-PLATES defers to L4, and no instrument publishes it.
817
+ decode the plates spec defers to L4, and no instrument publishes it.
818
818
  Recorded gap.
819
819
  design:
820
820
  plate: { w: 520, h: 110, unit: mm }
@@ -1307,8 +1307,8 @@ series:
1307
1307
  words. A small provision that captures the whole reform: when the
1308
1308
  prefix stopped meaning a place, it stopped being able to make a word.
1309
1309
  matching_note: >-
1310
- `matching: recall-only` (PRD-PLATES §2.7), and the test is the one the
1311
- PRD sets: is this regex WIDER than what the authority issues? It is.
1310
+ `matching: recall-only` (the plates spec §2.7), and the test is the one the
1311
+ the spec sets: is this regex WIDER than what the authority issues? It is.
1312
1312
  § 124 ods. 2 admits any five-character tail "iná ako je uvedená
1313
1313
  v odseku 1" — anything EXCEPT the ordinary three-digits-two-letters
1314
1314
  arrangement — and no anchored regex in this dialect can subtract one
@@ -1366,7 +1366,7 @@ series:
1366
1366
  code) and `regex` accepts all thirty-two combinations of five
1367
1367
  alphanumerics. A match is a shape hit. The alternative — three
1368
1368
  alternated branches inside one anchored regex — was rejected because
1369
- each branch would straddle the separator position and PRD-PLATES §2.8
1369
+ each branch would straddle the separator position and the plates spec §2.8
1370
1370
  forbids mixing separator and serial characters in one class.
1371
1371
  strict_note: >-
1372
1372
  The three enumerated shapes are all letter-initial and never place a
data/data/plates/sm.yml CHANGED
@@ -1,4 +1,4 @@
1
- # plates/sm.yml — San Marino (PRD-PLATES gate L1, microstates group).
1
+ # plates/sm.yml — San Marino (the plates spec gate L1, microstates group).
2
2
  # DRAFT for verification. All primary text fetched from the Consiglio Grande e
3
3
  # Generale law archive (consigliograndeegenerale.sm), 2026-08-02.
4
4
  #
@@ -239,7 +239,7 @@ common:
239
239
  rule: >-
240
240
  The "stemma ufficiale" appears in relief on every ordinary plate, at the
241
241
  left. DD 132/2022 art. 2 binds it to the constitutional annex's
242
- proportions and Pantones. PRD-PLATES §3's placeholder rule applies: the
242
+ proportions and Pantones. The plates spec §3's placeholder rule applies: the
243
243
  arms are a state emblem with no located clean licence, and the
244
244
  constitutional annex was not fetched.
245
245
  not_modelled:
@@ -373,7 +373,7 @@ series:
373
373
  THE CURRENT ORDINARY SERIES. Same letter+four-digit grammar as 1993, but a
374
374
  smaller FRONT plate (300x100 mm), a twentieth letter (U), and RAL 5017
375
375
  blue from 1 July 2023. Modelled as its own series because the design
376
- changed, per PRD-PLATES §2.3. Overlaps sm-standard-1993 across the
376
+ changed, per the plates spec §2.3. Overlaps sm-standard-1993 across the
377
377
  2022-2023 run-off, which is genuine parallel issuance provided for by the
378
378
  decree itself. NOTE the motorcycle and moped series below are NOT split at
379
379
  2022, because their plate SIZE did not change — only character metrics and
@@ -455,7 +455,7 @@ series:
455
455
  separator_note: >-
456
456
  PRINTED WITH DOTS as "R.S.M.". U+002E FULL STOP is in
457
457
  _meta/separators.yml's FORGIVING set but not its EMITTED set, so
458
- PRD-PLATES §2.6 forbids writing it; the pattern spells "RSM" undotted
458
+ the plates spec §2.6 forbids writing it; the pattern spells "RSM" undotted
459
459
  and a conformant consumer canonicalises a real "R.S.M. 123" to "RSM123",
460
460
  which the separator-free twin matches. The same limitation as the Swiss
461
461
  mid-height point.
@@ -520,7 +520,7 @@ series:
520
520
  Modelled as one continuous series across the 2022 redesign because the
521
521
  plate size did not change; the character metrics and the RAL 5017 colour
522
522
  are dated design facts inside it. Contrast the car series, which IS split,
523
- because its front plate shrank. This is the PRD-PLATES §2.3 test producing
523
+ because its front plate shrank. This is the plates spec §2.3 test producing
524
524
  different answers on the same reform for different vehicle classes.
525
525
  sources:
526
526
  - "https://www.consigliograndeegenerale.sm/on-line/home/archivio-leggi-decreti-e-regolamenti/documento17021492.html # Decreto 109/1993 art. 1: 165x165 mm, letter + three digits"
@@ -1002,7 +1002,7 @@ series:
1002
1002
  format_evidence: statutory
1003
1003
  separator_note: >-
1004
1004
  PRINTED WITH DOTS as "M.A.". As with the 1922 RSM series, U+002E is
1005
- forgiving-but-not-emitted under PRD-PLATES §2.6, so the pattern spells
1005
+ forgiving-but-not-emitted under the plates spec §2.6, so the pattern spells
1006
1006
  "MA" undotted and a conformant consumer canonicalises correctly.
1007
1007
  progression: "Decreto 47/1990 art. 2: numbering adopted from 1010 for macchine agricole"
1008
1008
  design:
@@ -1104,7 +1104,7 @@ series:
1104
1104
  issued in green rather than blue — DD 22/2019 art. 2: "la serie
1105
1105
  alfanumerica speciale scelta ed il bordo perimetrale saranno di colore
1106
1106
  verde." A colour-only variant of the same format and period, so a
1107
- sub-entry here rather than its own series, per PRD-PLATES §2.3.
1107
+ sub-entry here rather than its own series, per the plates spec §2.3.
1108
1108
  region_encoding: none
1109
1109
  notes: >-
1110
1110
  PERSONALIZED PLATES, from 2003. Priced at EUR 750 initially and EUR 900 a
data/data/plates/th.yml CHANGED
@@ -1,4 +1,4 @@
1
- # plates/th.yml — Thailand (PRD-PLATES gate L3). DRAFT for verification.
1
+ # plates/th.yml — Thailand (the plates spec gate L3). DRAFT for verification.
2
2
  #
3
3
  # EVERY size, layout, colour and class claim about the MOTOR-VEHICLE-ACT plates
4
4
  # in this file comes from one instrument, read verbatim from the Royal Gazette
@@ -34,7 +34,7 @@
34
34
  # this file models them as two blocks of series.
35
35
  #
36
36
  # 2. THE SERIAL IS PARTLY IN THAI SCRIPT, WHICH IS A GENUINE COLLISION WITH
37
- # PRD-PLATES §2.6. The separator contract fixes the dataset-wide serial
37
+ # the plates spec §2.6. The separator contract fixes the dataset-wide serial
38
38
  # alphabet at A-Z0-9 "and nothing else", and says in terms that a
39
39
  # jurisdiction printing a glyph inside the serial "is a schema amendment,
40
40
  # not a data entry". Thailand is that jurisdiction. The line taken here,
@@ -44,7 +44,7 @@
44
44
  # block the plate prints — which is what §2.6 permits us to spell — and
45
45
  # every such series therefore carries `matching: recall-only`, because a
46
46
  # bare digit regex is deliberately wider than the mark it belongs to.
47
- # * `format.fields` (the PRD §2.2 Japan extension point) carries the WHOLE
47
+ # * `format.fields` (the spec §2.2 Japan extension point) carries the WHOLE
48
48
  # composition, field by field, each with its script and its source.
49
49
  # * `format.regex_native` carries the full Unicode-aware regex. It is NOT
50
50
  # one of the three lint-checked regex keys (`regex`, `regex_strict`,
@@ -224,7 +224,7 @@ charset_defaults:
224
224
  source: "https://web.archive.org/web/20171113165614/http://www.ratchakitcha.soc.go.th/DATA/PDF/2554/A/045/6.PDF # ข้อ ๓ (๑) (ก) ๕) and (ข) ๔) — the delegation"
225
225
 
226
226
  # The pattern/regex policy, stated once and referenced by every Thai-script
227
- # series (PRD-PLATES §2.6 collision — see header fact 2).
227
+ # series (the plates spec §2.6 collision — see header fact 2).
228
228
  regex_policy:
229
229
  thai_script_series: >-
230
230
  `format.pattern` is the ARABIC-NUMERAL BLOCK ONLY ("9999" = the registration
@@ -284,7 +284,7 @@ series:
284
284
  # in the legal vehicle class, which is exactly why the regulation writes the
285
285
  # sizes once in ข้อ ๓ (๑) (ก) and the colours eight times in ข้อ ๓ (๒).
286
286
  # Because DESIGN differs (background and character colour), each is its own
287
- # SERIES under PRD-PLATES §2.3 and not a colour sub-entry.
287
+ # SERIES under the plates spec §2.3 and not a colour sub-entry.
288
288
  # =========================================================================
289
289
 
290
290
  - id: th-private-car-2011
@@ -304,7 +304,7 @@ series:
304
304
  `regex_native`, and the file header, fact 2.
305
305
  regex_native: '\A[1-9]?[ก-ฮ]{2}\s?\d{1,4}\z'
306
306
  regex_native_note: >-
307
- Not lint-checked (PRD-PLATES §2.6 admits only A-Z0-9 in a serial). It
307
+ Not lint-checked (the plates spec §2.6 admits only A-Z0-9 in a serial). It
308
308
  covers ONE LINE — the province name of line 2 is a separate field. The
309
309
  letter positions are written as the whole Thai consonant range
310
310
  U+0E01-U+0E2E because the category-letter alphabet is delegated and
@@ -355,7 +355,7 @@ series:
355
355
  "ในแผ่นป้ายมีเครื่องหมายเป็นตัวอักษร ขส อยู่ภายในวงกลมอัดเป็นรอยดุนที่
356
356
  มุมล่างด้านขวาของแผ่นป้าย" — the letters ขส (the DLT's abbreviation)
357
357
  inside an embossed circle at the LOWER RIGHT corner, at a size the
358
- Director-General fixes. PRD-PLATES §3 placeholder rule applies.
358
+ Director-General fixes. The plates spec §3 placeholder rule applies.
359
359
  border: { note: "ขอบแผ่นป้ายอัดเป็นรอยดุน — the plate edge is embossed; the border takes the character colour (ข้อ ๓ (๒) (ค))" }
360
360
  characters:
361
361
  line1_digit_min_h_mm: 58
@@ -411,7 +411,7 @@ series:
411
411
  PRIVATE PASSENGER VEHICLE of MORE than seven persons (รถยนต์นั่งส่วนบุคคล
412
412
  เกินเจ็ดคน) — vans and minibuses in private ownership. Identical format and
413
413
  size to the ordinary car plate; only the character colour differs, which
414
- under PRD-PLATES §2.3 would make it a sub-entry — except that the
414
+ under the plates spec §2.3 would make it a sub-entry — except that the
415
415
  regulation treats it as a distinct legal vehicle class with its own
416
416
  colour rule, and the auction regulation of B.E. 2546 draws its own line at
417
417
  "more than seven but not more than twelve", so it is carried as a series.
@@ -763,7 +763,7 @@ series:
763
763
  fields:
764
764
  - { name: corps_letter, section: left, line: 1, script: Thai, values: ["ท"], rule: "ข้อ ๓ (๑) (ค) ๓) ก): 'รถยนต์ของบุคคลในคณะผู้แทนทางการทูต ให้ใช้อักษร ท'" }
765
765
  - { name: country_code, section: left, line: 2, script: "Arabic numerals", values: "a code standing for the country or the international organisation or UN specialised agency stationed in Thailand — the code list is not in the regulation" }
766
- - { name: separator_bar, section: middle, note: "ขีดตามทางยาว, 1.1 cm wide x 4 cm long, embossed; a printed SEPARATOR, spelled '-' under PRD-PLATES §2.6" }
766
+ - { name: separator_bar, section: middle, note: "ขีดตามทางยาว, 1.1 cm wide x 4 cm long, embossed; a printed SEPARATOR, spelled '-' under the plates spec §2.6" }
767
767
  - { name: registration_number, section: right, script: "Arabic numerals", values: "1 to 9999 (หมายเลขทะเบียนให้เริ่มตั้งแต่ ๑ ถึง ๙๙๙๙)" }
768
768
  design:
769
769
  plate: { w: 387, h: 110, unit: mm }
@@ -835,7 +835,7 @@ series:
835
835
  สำหรับรถยนต์ของเจ้าพนักงานกงสุลกิตติมศักดิ์ ให้พื้นแผ่นป้ายใช้สีเทา
836
836
  สะท้อนแสง โดยให้ตัวอักษร ตัวเลข และขีดใช้สีดำ" — a retroreflective GREY
837
837
  ground with black characters, digits and bar. Colour-only variant of
838
- the same format and period, so a sub-entry per PRD-PLATES §2.3.
838
+ the same format and period, so a sub-entry per the plates spec §2.3.
839
839
  sources:
840
840
  - "https://web.archive.org/web/20171113165614/http://www.ratchakitcha.soc.go.th/DATA/PDF/2554/A/045/6.PDF # ข้อ ๓ (๒) (ซ) proviso"
841
841
  sources: