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
@@ -0,0 +1,346 @@
1
+ # plates/ng.yml — Nigeria (the plates spec gate L5).
2
+ #
3
+ # THE CENTRAL FINDING, AND IT IS AN AWKWARD ONE: **THE GAZETTE DOES NOT CONTAIN
4
+ # THE PLATE MASK.** The National Road Traffic Regulations 2012 (S.I. No. 61,
5
+ # Government Notice No. 270, Official Gazette Vol. 99 No. 101, Lagos,
6
+ # 25 December 2012) regulates plate COLOUR, DIMENSION, EMBLEM PLACEMENT,
7
+ # REFLECTIVITY, FIELD CONTENT and the temporary/trade/fancy regimes in detail —
8
+ # and never once prints a format mask. The familiar `AAA-NNNAA` shape
9
+ # (three letters, three figures, two letters) is TERTIARY ONLY.
10
+ #
11
+ # THIS FILE KEEPS THOSE TWO TIERS APART ON PURPOSE. The design and colour data
12
+ # below is `statute`, quoted to regulation number. The SHAPE is not, and every
13
+ # series whose regex rests on the unverified mask is marked `recall-only` so
14
+ # that a match is a shape hit and nothing more (§2.7). The temptation this file
15
+ # is built to resist is letting the statute-tier badge on the surrounding
16
+ # fields bleed onto the mask sitting between them.
17
+ #
18
+ # WHAT THE STATUTE DOES ESTABLISH ABOUT ORDERING — reg. 39(4)(f), verbatim:
19
+ # "Local Government Area codes shall come first in respect of Private,
20
+ # Commercial and Local Government Area vehicles". So LGA-FIRST IS STATUTORY,
21
+ # and it is the strongest confirmation available of the 2011 redesign's shape.
22
+ # Reg. 3(1) assigns a plate "within the Local Government Code"; reg. 39(2)(a)
23
+ # lists a private plate's fields as the State name, "the licensing office code
24
+ # number, the vehicle registration number and Local Government code number".
25
+ # Reg. 39(5) then delegates the code TABLES entirely: "The Commission shall
26
+ # determine, from time to time, the appropriate number codes for all categories
27
+ # of vehicles." The tables are FRSC's, not the gazette's — which is exactly why
28
+ # no decode table ships here (see V2).
29
+ #
30
+ # FOUR MORE STRUCTURAL FACTS
31
+ #
32
+ # 1. COLOUR IS THE CLASS MARKER AND THE BACKGROUND IS ALWAYS WHITE. Every
33
+ # Nigerian class shares a white ground and is distinguished by LETTERING
34
+ # COLOUR (reg. 39(2), Schedule 5 Figs 6-8). The widely-repeated "black on
35
+ # white" description of the ordinary Nigerian plate is wrong: a private
36
+ # plate letters in BLUE.
37
+ # 2. THE EMBLEM IS A CORNER DEVICE, NOT A SEPARATOR. National FLAG top-left for
38
+ # private and commercial (reg. 39(3)(a)); national COAT OF ARMS top-left for
39
+ # government and LGA (39(3)(b)) and for military and para-military
40
+ # (39(3)(c)). Under §2.6's never_separator reasoning this is a design
41
+ # element carried in `design.emblem` and never in the serial.
42
+ # 3. NO SEPARATOR IS PRESCRIBED ANYWHERE. The statute regulates field content
43
+ # and emblem position and says nothing about hyphens, spaces or dividers. So
44
+ # every regex here spells the group boundaries as the SEPARATOR-ONLY CLASS
45
+ # `[- ]?` sanctioned by §2.8 — the honest encoding of a real gap in the
46
+ # authority's text, exactly as `es-consular-cc-1999` does, rather than an
47
+ # invented hyphen.
48
+ # 4. NIGERIA HAS NO HISTORIC/CLASSIC PLATE CLASS. NRTR 2012 contains no such
49
+ # category. Recorded as ABSENT rather than as not-yet-researched — a
50
+ # different and more useful claim. "Keke"/tricycle likewise never appears as
51
+ # a plate class in the instrument.
52
+ #
53
+ # §VERIFIER — open questions in priority order
54
+ # V1. THE MASK. Pin an FRSC instrument or gazette amendment that states the
55
+ # 3+3+2 shape, then flip the recall-only series to strict.
56
+ # V2. The LGA -> three-letter code table and the 774 LGA count. Delegated to
57
+ # FRSC by reg. 39(5); the Schedule 5 code tables in the gazette PDF are
58
+ # UN-EXTRACTABLE IMAGES. No decode table ships until this is pinned.
59
+ # V3. DIPLOMATIC AND CONSULAR ARE ENTIRELY ABSENT FROM THIS FILE and the
60
+ # reason is specific: reg. 39(4)(e) points to "figure 11 of Schedule 5",
61
+ # and Schedule 5 in the gazette PDF ENDS AT FIGURE 10. Figure 11 is
62
+ # missing from the instrument as published. The purple/green CD/CC
63
+ # description in circulation is tertiary and is NOT recorded here.
64
+ # V4. Serial alphabet, and specifically whether I, O and Q are excluded.
65
+ # NO EVIDENCE EITHER WAY was found, so no `serial_alphabet:` is declared
66
+ # and the global A-Z 0-9 is inherited. Declaring an exclusion nobody
67
+ # sourced would be the Croatian folding error in a new costume.
68
+ # V5. Security features. NO hologram, barcode or NVIS chip is described
69
+ # anywhere in the instrument — only reflectivity. Recorded as absent.
70
+ jurisdiction: ng
71
+ authority:
72
+ name: "Federal Road Safety Commission (FRSC)"
73
+ url: "https://sabilaw.org/wp-content/uploads/2021/12/National-Road-Traffic-Regulations-2012.pdf"
74
+ authority_evidence: >-
75
+ Reg. 39(5) gives the Commission the power to determine number codes for all
76
+ categories of vehicles, and reg. 39(10) gives FRSC the production monopoly
77
+ for the Federation. The url is the gazetted instrument that says so.
78
+ NOTE ON THE HOST: frsc.gov.ng has no reachable deep page on the plate
79
+ scheme (sitemap.xml and robots.txt both 404), so the instrument is cited to
80
+ a third-party host whose scan preserves the gazette pagination B 1531-B
81
+ 1680 intact. The pagination is why this is treated as `statute` and not as
82
+ a secondary retelling; a verifier with access to an official Federal
83
+ Government Press copy should re-point these URLs.
84
+ binding: vehicle
85
+ series:
86
+
87
+ # =========================================================================
88
+ # THE ORDINARY MARK — flag emblem, colour-by-use. Private and commercial
89
+ # share format, period, dimensions and emblem and differ ONLY in lettering
90
+ # colour, which under §2.3 makes them SUB-ENTRIES on one series rather than
91
+ # two series.
92
+ # =========================================================================
93
+ - id: ng-standard-2011
94
+ class: standard
95
+ categories: [car, van, truck, bus]
96
+ period: { start: 2011 }
97
+ period_evidence: secondary-first-issue
98
+ period_note: >-
99
+ 2011 is the commonly-given first-issue year of the national uniform
100
+ scheme and is NOT statutory — the instrument that gazettes the design is
101
+ dated 2012 and does not state a rollout date. Recorded at
102
+ secondary-first-issue tier for that reason. The 2012 regulations are the
103
+ instrument in force over the format; the 2011 date describes issuance.
104
+ matching: recall-only
105
+ format:
106
+ pattern: "LLL999LL"
107
+ # RECALL-ONLY, and this is the file's central honesty point. The mask is
108
+ # TERTIARY: the gazette never prints it. What IS statutory is that the
109
+ # LGA code comes first (reg. 39(4)(f)). Separator positions are spelled
110
+ # as the sanctioned separator-only class of §2.8 because the statute
111
+ # prescribes no separator glyph at all.
112
+ regex: '\A[A-Z]{3}[- ]?\d{3}[- ]?[A-Z]{2}\z'
113
+ design:
114
+ plate: { w: 308, h: 155.6, unit: mm }
115
+ plate_note: "reg. 39(1): 12.125 in x 6.125 in for vehicles"
116
+ background_note: "white ground for every class (reg. 39(2)) — colour named in words; no hex asserted"
117
+ foreground_note: "varies BY USE, not by design era — see colour_by_use"
118
+ colour_by_use:
119
+ - { use: private, lettering: blue, cite: "reg. 39(2)(a); State name in black, 'Federal Republic of Nigeria' in black" }
120
+ - { use: commercial, lettering: red, cite: "reg. 39(2)(b); State name in black" }
121
+ emblem: { present: true, device: "national flag, top left", cite: "reg. 39(3)(a)" }
122
+ layout: >-
123
+ Top: the State name. Bottom: "FEDERAL REPUBLIC OF NIGERIA" in black.
124
+ Schedule 5 Figs 1-2 add that the plate "shall in addition contain
125
+ graphics as may be determined by the Commission" — which is why the
126
+ Nigeria map outline and the State slogans that appear on real plates
127
+ are FRSC-determined and NOT gazetted. Those are recorded here as
128
+ FRSC-determined, not as statutory design.
129
+ reflectivity: "reg. 37(4): legible day and night in clear weather at not less than 60 m"
130
+ rear_differs: false
131
+ region_encoding: none
132
+ region_encoding_mechanism: >-
133
+ The leading group is the Local Government Area code and it comes FIRST by
134
+ statute (reg. 39(4)(f)). `none` means NO TABLE SHIPPED: reg. 39(5)
135
+ delegates the code tables to FRSC and the Schedule 5 tables are
136
+ un-extractable images in the gazette scan. See V2.
137
+ notes: >-
138
+ The ordinary Nigerian plate. Private and commercial are one series with
139
+ two lettering colours. A Vehicle Identification Tag (Form MVA 25, reg. 38)
140
+ carrying the same number is displayed on the rear windscreen — a second
141
+ carrier of the registration, not a second series.
142
+ sources:
143
+ - "https://sabilaw.org/wp-content/uploads/2021/12/National-Road-Traffic-Regulations-2012.pdf # reg. 39(4)(f) LGA-first ordering; reg. 39(2)(a)-(b) private blue / commercial red on white; reg. 39(1) 12.125x6.125 in; reg. 39(3)(a) flag top-left; reg. 37(4) 60 m legibility; reg. 38 Form MVA 25 tag; Schedule 5 Figs 1-2 FRSC-determined graphics — Official Gazette Vol. 99 No. 101, 25 Dec 2012, pagination B 1531-B 1680 intact; accessed 2026-09-12"
144
+ - "https://sabilaw.org/national-road-traffic-regulations-2012-with-2016-amendments/ # landing page establishing the instrument identity and the 2016 amendments — accessed 2026-09-12"
145
+
146
+ - id: ng-government-2011
147
+ class: government
148
+ categories: [car, van, truck, bus]
149
+ period: { start: 2011 }
150
+ period_evidence: secondary-first-issue
151
+ matching: recall-only
152
+ format:
153
+ pattern: "LLL999LL"
154
+ regex: '\A[A-Z]{3}[- ]?\d{3}[- ]?[A-Z]{2}\z'
155
+ design:
156
+ plate: { w: 308, h: 155.6, unit: mm }
157
+ background_note: "white ground — no hex asserted"
158
+ foreground_note: "green lettering"
159
+ colour_by_use:
160
+ - { use: "federal and state government", lettering: green, cite: "reg. 39(2)(c), Schedule 5 Fig. 7(a)" }
161
+ - { use: "local government / area council", lettering: green, cite: "reg. 39(2)(d)" }
162
+ emblem: { present: true, device: "national Coat of Arms, top left", cite: "reg. 39(3)(b)" }
163
+ layout: "top line carries the Ministry or Parastatal name rather than a State name"
164
+ region_encoding: none
165
+ notes: >-
166
+ Federal, State and Local Government fleets. A SEPARATE SERIES from
167
+ ng-standard-2011 rather than a colour sub-entry of it, because the
168
+ difference is not colour alone: the corner device changes from the
169
+ national flag to the Coat of Arms and the top line changes from a State
170
+ name to a Ministry or Parastatal name. Under §2.3 that is a DESIGN
171
+ difference, and a design difference makes a series.
172
+ sources:
173
+ - "https://sabilaw.org/wp-content/uploads/2021/12/National-Road-Traffic-Regulations-2012.pdf # reg. 39(2)(c)-(d) green lettering for federal/state government and LGA; reg. 39(3)(b) Coat of Arms top-left; Schedule 5 Fig. 7(a) — accessed 2026-09-12"
174
+
175
+ - id: ng-forces-2011
176
+ class: military
177
+ categories: [car, van, truck, bus]
178
+ period: { start: 2011 }
179
+ period_evidence: secondary-first-issue
180
+ matching: recall-only
181
+ format:
182
+ pattern: "LLL999LL"
183
+ regex: '\A[A-Z]{3}[- ]?\d{3}[- ]?[A-Z]{2}\z'
184
+ design:
185
+ plate: { w: 308, h: 155.6, unit: mm }
186
+ background_note: "white ground — no hex asserted"
187
+ foreground_note: "black lettering"
188
+ colour_by_use:
189
+ - { use: "armed forces", lettering: black, cite: "reg. 39(2)(e), Schedule 5 Fig. 7(b)" }
190
+ - { use: "para-military, including the police", lettering: black, cite: "Schedule 5 Fig. 8" }
191
+ emblem: { present: true, device: "national Coat of Arms, top left", cite: "reg. 39(3)(c)" }
192
+ layout: "top line carries the Armed Forces or para-military body's name"
193
+ region_encoding: none
194
+ notes: >-
195
+ Armed forces and para-military bodies. THE POLICE SHARE THIS SERIES
196
+ rather than having their own: the instrument groups them under the
197
+ para-military black-lettering figure (Schedule 5 Fig. 8) with the same
198
+ Coat of Arms device, so splitting out a `police` class here would invent
199
+ a distinction the statute does not draw.
200
+ sources:
201
+ - "https://sabilaw.org/wp-content/uploads/2021/12/National-Road-Traffic-Regulations-2012.pdf # reg. 39(2)(e) black lettering for military; reg. 39(3)(c) Coat of Arms; Schedule 5 Fig. 7(b) military and Fig. 8 para-military — accessed 2026-09-12"
202
+
203
+ - id: ng-motorcycle-2011
204
+ class: motorcycle
205
+ categories: [motorcycle]
206
+ period: { start: 2011 }
207
+ period_evidence: secondary-first-issue
208
+ matching: recall-only
209
+ format:
210
+ pattern: "LLL999LL"
211
+ regex: '\A[A-Z]{3}[- ]?\d{3}[- ]?[A-Z]{2}\z'
212
+ design:
213
+ plate: { w: 229, h: 102, unit: mm }
214
+ plate_note: "reg. 39(1): 9 in x 4 in for motorcycles"
215
+ background_note: "white ground — no hex asserted"
216
+ foreground_note: "lettering colour follows the vehicle's use, exactly as for four-wheelers"
217
+ colour_by_use:
218
+ - { use: private, lettering: blue, cite: "reg. 37(2)(c)" }
219
+ - { use: commercial, lettering: red, cite: "reg. 37(2)(c)" }
220
+ - { use: government, lettering: green, cite: "reg. 37(2)(c)" }
221
+ - { use: "armed forces", lettering: black, cite: "reg. 37(2)(c)" }
222
+ reflectivity: "reg. 37(4): 30 m for motorcycles, against 60 m for other vehicles"
223
+ region_encoding: none
224
+ notes: >-
225
+ Its own series on DIMENSION grounds — 9x4 in against 12.125x6.125 in — and
226
+ on a second, sourced ground that is easy to miss: the reflectivity
227
+ requirement is HALVED for motorcycles, 30 m rather than 60 m (reg. 37(4)).
228
+ Format is assumed to follow the ordinary mask and is therefore
229
+ recall-only like every other series resting on it.
230
+ sources:
231
+ - "https://sabilaw.org/wp-content/uploads/2021/12/National-Road-Traffic-Regulations-2012.pdf # reg. 39(1) 9x4 in motorcycle plate; reg. 37(2)(c) per-use lettering colours; reg. 37(4) 30 m motorcycle legibility — accessed 2026-09-12"
232
+
233
+ - id: ng-dealer
234
+ class: dealer
235
+ categories: [car, van, truck, bus]
236
+ period: { start: 2012 }
237
+ period_evidence: enabling-statute
238
+ matching: recall-only
239
+ format:
240
+ pattern: "LL L999 9"
241
+ regex: '\A[A-Z]{2}[- ]?[A-Z][- ]?\d{3}[- ]?\d\z'
242
+ design:
243
+ background_note: "not separately specified for dealer plates"
244
+ emblem: { present: true, device: "national flag symbol", cite: "reg. 31" }
245
+ region_encoding: none
246
+ notes: >-
247
+ Trade and dealer plates, issued to motor dealers and mechanic workshop
248
+ operators (regs. 26(4), 30-32, Form MVA 10). Reg. 31 enumerates the
249
+ FIELDS verbatim — national flag symbol, dealer name, dealer's code, State
250
+ code, dealer's number (alphanumeric), individual vehicle code
251
+ (alphanumeric), "Federal Republic of Nigeria" — but again gives no mask;
252
+ the shape here approximates Schedule 5 Fig. 10 and is therefore
253
+ recall-only.
254
+ TWO STATUTORY RESTRICTIONS WORTH CARRYING because they are conditions of
255
+ validity rather than design: a dealer plate may not carry fee-paying
256
+ passengers, and it MAY NOT BE USED BETWEEN 18:00 AND 06:00. Workshop
257
+ plates are road-test only.
258
+ sources:
259
+ - "https://sabilaw.org/wp-content/uploads/2021/12/National-Road-Traffic-Regulations-2012.pdf # regs. 26(4), 30-32 dealer and workshop plates, Form MVA 10, no fee-paying passengers, 18:00-06:00 prohibition; reg. 31 field list; Schedule 5 Fig. 10 layout — accessed 2026-09-12"
260
+
261
+ - id: ng-temporary-wooden
262
+ class: temporary
263
+ categories: [car, van, truck, bus, motorcycle]
264
+ period: { start: 2012 }
265
+ period_evidence: enabling-statute
266
+ matching: recall-only
267
+ format:
268
+ pattern: "LLL999LL"
269
+ regex: '\A[A-Z]{3}[- ]?\d{3}[- ]?[A-Z]{2}\z'
270
+ design:
271
+ material: "wood — reg. 39(7)-(8) expressly contemplates an owner-constructed wooden plate"
272
+ background_note: "same colouring and lettering codes as the lost plate it replaces"
273
+ region_encoding: none
274
+ notes: >-
275
+ THE MOST UNUSUAL SERIES IN THIS FILE AND IT IS ENTIRELY STATUTORY. On
276
+ reporting a plate lost, the owner MAY CONSTRUCT A TEMPORARY PLATE IN THE
277
+ FORM OF WOOD, carrying the same colouring and lettering codes, until the
278
+ replacement issues — which must be within 14 days of payment of the fee
279
+ (reg. 39(7)-(8)). It reproduces the EXISTING registration rather than
280
+ carrying a serial of its own, which is the `nl-export` situation: the
281
+ regex is a shape union and a match is emphatically not a claim that the
282
+ string is a valid temporary registration. recall-only for that reason as
283
+ well as for the mask.
284
+ sources:
285
+ - "https://sabilaw.org/wp-content/uploads/2021/12/National-Road-Traffic-Regulations-2012.pdf # reg. 39(7)-(8) owner-constructed wooden temporary plate, same colouring/lettering codes, replacement within 14 days of fee payment — accessed 2026-09-12"
286
+
287
+ - id: ng-fancy
288
+ class: personalized
289
+ categories: [car, van, truck, bus, motorcycle]
290
+ period: { start: 2012 }
291
+ period_evidence: enabling-statute
292
+ matching: strict
293
+ format:
294
+ pattern: "LLLLLLLL"
295
+ # THE ONLY CHARACTER-COUNT RULE IN THE ENTIRE INSTRUMENT, so this is the
296
+ # one series in the file whose regex IS the sourced grammar.
297
+ regex: '\A[A-Z0-9]{1,8}\z'
298
+ design:
299
+ background_note: "not separately specified; the fancy regime governs the SERIAL, not a distinct design"
300
+ region_encoding: none
301
+ notes: >-
302
+ Special or fancy numbers. `strict`, and it is the only strict series here,
303
+ because reg. 5(3) states an actual grammar: a special or fancy number
304
+ "shall not exceed eight digits made up of alphabets, numerals or
305
+ combination of both". That is a real statutory bound and the regex is
306
+ exactly it — note it is the OUTER bound, so a match is a well-formedness
307
+ claim under §2.7 even though FRSC approves individual combinations "as it
308
+ deems fit" on payment.
309
+ Transfer between vehicles is permitted but requires POLICE CLEARANCE plus
310
+ an application to the State of last registration (reg. 6) — a condition
311
+ on the serial following a person, and the Nigerian analogue of the za.yml
312
+ personalised-number case.
313
+ FRSC's own 2024 Service Level Agreements to PEBEC price the classes
314
+ (production / State disposal, in naira): standard private 5,000/12,500;
315
+ MV fancy 40,000/80,000; motorcycle 1,500/3,000; articulated 10,000/20,000;
316
+ out-of-series 20,000/40,000; government fancy MV 20,000/20,000. Recorded
317
+ as `official` tier and as context, not as schema data — the plates spec §2.5
318
+ excludes fees from the model.
319
+ sources:
320
+ - "https://sabilaw.org/wp-content/uploads/2021/12/National-Road-Traffic-Regulations-2012.pdf # reg. 5(3) not exceeding eight alphanumeric characters; reg. 6 transfer requires police clearance and application to the State of last registration — accessed 2026-09-12"
321
+ - "https://frsc.gov.ng/wp-content/uploads/2024/05/SLAs-TO-PEBEC.pdf # FRSC 2024 Service Level Agreements to PEBEC: number-plate price table and issuance chain — OFFICIAL tier, published on frsc.gov.ng; accessed 2026-09-12"
322
+
323
+ - id: ng-out-of-series
324
+ class: standard
325
+ categories: [car, van, truck, bus]
326
+ period: { start: 2012 }
327
+ period_evidence: enabling-statute
328
+ matching: recall-only
329
+ format:
330
+ pattern: "LLL999LL"
331
+ regex: '\A[A-Z]{3}[- ]?\d{3}[- ]?[A-Z]{2}\z'
332
+ design:
333
+ background_note: "not separately specified"
334
+ region_encoding: none
335
+ notes: >-
336
+ Out-of-series allocations: reg. 5(1) provides for a code "not in the
337
+ series being issued at the time, but in the control of the Central Motor
338
+ Registry", applied for via Schedule 5 Fig. 9 and Form MVA2. Recorded as
339
+ its own series because it is a distinct ALLOCATION regime with its own
340
+ form and its own controlling body, and priced separately in the FRSC
341
+ schedule. Overlaps ng-standard-2011 in shape by construction — the whole
342
+ point of an out-of-series number is that it looks ordinary while coming
343
+ from a reserved pool — which is why both are recall-only and why this
344
+ note differs from that one.
345
+ sources:
346
+ - "https://sabilaw.org/wp-content/uploads/2021/12/National-Road-Traffic-Regulations-2012.pdf # reg. 5(1) out-of-series codes under Central Motor Registry control, Schedule 5 Fig. 9, Form MVA2 — accessed 2026-09-12"
data/data/plates/nl.yml CHANGED
@@ -1,9 +1,9 @@
1
- # plates/nl.yml — Netherlands (PRD-PLATES gate L0 pilot, COMPLETION PASS).
1
+ # plates/nl.yml — Netherlands (the plates spec gate L0 pilot, COMPLETION PASS).
2
2
  #
3
3
  # Supersedes the 4-entry L0 seed. Entry ids from the seed are preserved
4
4
  # verbatim (nl-sidecode11-moped, nl-sidecode11-agricultural,
5
5
  # nl-sidecode11-car, nl-historic-darkblue) per the id contract
6
- # (PRD-QUALITY I-5/I-6); their DATA is corrected where the RDW pages
6
+ # (the quality spec I-5/I-6); their DATA is corrected where the RDW pages
7
7
  # contradicted the seed — corrections are called out in each `notes`.
8
8
  #
9
9
  # THE NL MODELLING RULE (EU dossier finding 6, binding): a sidecode is a
@@ -93,7 +93,7 @@ series:
93
93
  design: { background: { color: "#7CB9E8", finish: retroreflective, hex_basis: observed }, foreground: "#000000", plate: { w: 520, h: 110, unit: mm } }
94
94
  note: >-
95
95
  Light-blue taxi plates carry the vehicle's OWN registration — colour-only
96
- variant of this series, so a sub-entry per PRD-PLATES §2.3, not a series.
96
+ variant of this series, so a sub-entry per the plates spec §2.3, not a series.
97
97
  Models 27.30 (long), 27.31 (rectangular), 18.2 (American, light blue).
98
98
  sources:
99
99
  - "https://www.rdw.nl/de-kentekenplaat/soorten-kentekenplaten # taxikentekenplaat lichtblauw met zwarte letters en cijfers; 520x110 / 340x210 / 310x110"
@@ -938,7 +938,7 @@ series:
938
938
  categories: [tractor, machine, trailer]
939
939
  period: { start: 1978 }
940
940
  period_evidence: eligibility-cutoff
941
- # RECALL-ONLY (PRD-PLATES §2.7): RDW exempts these vehicles from the
941
+ # RECALL-ONLY (the plates spec §2.7): RDW exempts these vehicles from the
942
942
  # 2+2+2 registration-shape rule, so the regex is the same fourteen-shape
943
943
  # union as nl-export. A match is a SHAPE hit — it says the string has a
944
944
  # shape the Netherlands has issued, not that it is a valid historic
@@ -979,7 +979,7 @@ series:
979
979
  categories: [car, van, truck, bus, motorcycle, moped, trailer, semitrailer, tractor, machine]
980
980
  period: { start: 1951 }
981
981
  period_evidence: earliest-underlying-series # the regime's own start is unsourced
982
- # RECALL-ONLY (PRD-PLATES §2.7): the export plate carries the vehicle's
982
+ # RECALL-ONLY (the plates spec §2.7): the export plate carries the vehicle's
983
983
  # OWN existing registration, so the regex is the union of all fourteen
984
984
  # RDW sidecode shapes. A match is a SHAPE hit, never the claim that the
985
985
  # string is a valid export registration — the union admits vowel serials
data/data/plates/no.yml CHANGED
@@ -1,4 +1,4 @@
1
- # plates/no.yml — Norway (PRD-PLATES gate L1, wave 2).
1
+ # plates/no.yml — Norway (the plates spec gate L1, wave 2).
2
2
  #
3
3
  # THE ONE STRUCTURAL FACT THAT SHAPES THIS FILE, AND IT IS THE OPPOSITE OF
4
4
  # SPAIN'S: Norway's HISTORIC plate formats are instrument-dated to the day,
@@ -48,7 +48,7 @@
48
48
  # Note the FOR number: 1994-10-04-918, not the 1994-03-25-918 that circulates.
49
49
  #
50
50
  # A MISTAKE MADE AND CAUGHT IN THIS PASS, recorded because it is the exact
51
- # defect PRD-PLATES §9 warns about. The § 2-11 footnote lists twelve amending
51
+ # defect the plates spec §9 warns about. The § 2-11 footnote lists twelve amending
52
52
  # forskrifter, and reading FOR-2015-07-13-888 suggested it "introduced" the
53
53
  # green varebil plate in § 2-11 tredje ledd bokstav b. It did not. That
54
54
  # forskrift RENUMBERED the whole of kapittel 2 (the colour rules had lived in
@@ -214,7 +214,7 @@ series:
214
214
  The gap between letter group and digit group is a printed GAP with no
215
215
  glyph — no instrument prescribes a separator, since no instrument
216
216
  prescribes the composition at all. Written as the emitted SPACE per
217
- PRD-PLATES §2.6 and optional in the regex.
217
+ the plates spec §2.6 and optional in the regex.
218
218
  design:
219
219
  plate: { w: 520, h: 110, unit: mm }
220
220
  plate_variants:
@@ -311,7 +311,7 @@ series:
311
311
  - "https://no.wikipedia.org/wiki/Kjennemerke_for_motorkj%C3%B8ret%C3%B8y_i_Norge # secondary-wikipedia (rev. 2026-07-16): the source treats 1971-2001 as ONE plate design and records no 1982 event at all — the disagreement noted below. Accessed 2026-08-02"
312
312
  notes: >-
313
313
  THE SECOND TWO-LETTER ORDER, 1 April 1982 to 31 December 2001. A REAL
314
- DISAGREEMENT, recorded rather than averaged (PRD-PLATES §5.3): the
314
+ DISAGREEMENT, recorded rather than averaged (the plates spec §5.3): the
315
315
  authority's regulation splits the two-letter era at 31 March 1982 and
316
316
  names a different technical specification on each side, while every
317
317
  secondary source consulted — including a plate image captioned
@@ -635,7 +635,7 @@ series:
635
635
  E-series combination is what lets toll plazas, bus lanes, ferries and
636
636
  parking enforce zero-emission privileges from the plate alone, which is
637
637
  why it is modelled as a series in its own right rather than a note on
638
- no-standard-2002 (PRD-PLATES §2.3 period limb — it starts three years
638
+ no-standard-2002 (the plates spec §2.3 period limb — it starts three years
639
639
  earlier). NOT A LEGAL CLASS, and this is an evidenced negative worth
640
640
  having: neither FOR-1990-01-25-92 kapittel 2 nor kjøretøyforskriften
641
641
  kapittel 39 mentions elbil, elektrisk drift or EL-kjennemerke anywhere.
@@ -925,7 +925,7 @@ series:
925
925
  progression: >-
926
926
  THE FIRST DIGIT IS THE ISSUING POLICE DISTRICT — 1 Oslo, 2 Larvik,
927
927
  3 Kristiansand, 4 Stavanger, 5 Bergen, 6 Trondheim, 7 Troms. A small
928
- decode, inline rather than in a decode file per PRD-PLATES §2.4. In 2004
928
+ decode, inline rather than in a decode file per the plates spec §2.4. In 2004
929
929
  Oslo exhausted its combinations and restarted its sequence from the
930
930
  beginning, so the digit does NOT support any age inference.
931
931
  district_codes:
@@ -984,7 +984,7 @@ series:
984
984
  _meta/separators.yml's emitted SPACE is serial-significant rather
985
985
  than a group gap, and a separator-stripping consumer will silently
986
986
  collapse "MIN BIL" to "MINBIL". Recorded rather than resolved: it is
987
- a genuine tension with PRD-PLATES §2.6, not a data error, and it
987
+ a genuine tension with the plates spec §2.6, not a data error, and it
988
988
  affects only this series.
989
989
  The authority narrows the statute further by plate size — seven
990
990
  characters fit the 52 x 11 cm plate, six the small, US and motorcycle
data/data/plates/nz.yml CHANGED
@@ -1,4 +1,4 @@
1
- # plates/nz.yml — New Zealand (PRD-PLATES gate L3).
1
+ # plates/nz.yml — New Zealand (the plates spec gate L3).
2
2
  #
3
3
  # EVERY format, colour and class claim in this file is read off one of two
4
4
  # instruments on legislation.govt.nz, or off a NZ Transport Agency Waka Kotahi
@@ -110,7 +110,7 @@
110
110
  # THEREFORE PRINTS NO SEPARATOR GLYPH AND TREATS INTERNAL SPACING AS
111
111
  # NON-IDENTITY-BEARING: every `pattern` and every regex in this file is
112
112
  # written contiguously, with no emitted separator at all, and a consumer's
113
- # separator-forgiving tier (PRD-PLATES § 2.6) is what absorbs a plate that
113
+ # separator-forgiving tier (the plates spec § 2.6) is what absorbs a plate that
114
114
  # happens to be set with a gap.
115
115
  #
116
116
  # 4. THE BLACK PLATE OF 1964 IS NOT HISTORY — IT IS A CURRENT LAWFUL FORM.
@@ -135,7 +135,7 @@
135
135
  # `format.regex_statutory` carries the outer bound of the CURRENT law — reg
136
136
  # 33(1)'s bare six- or five-character cap — which is far wider than anything
137
137
  # issued and is the reason `matching: strict` is still correct on the standard
138
- # series (PRD-PLATES § 2.7: narrower than the statute is still strict).
138
+ # series (the plates spec § 2.7: narrower than the statute is still strict).
139
139
  jurisdiction: nz
140
140
  authority:
141
141
  name: NZ Transport Agency Waka Kotahi (the Registrar of Motor Vehicles under Part 17 of the Land Transport Act 1998)
@@ -377,7 +377,7 @@ common:
377
377
  it if you turn the plate to a 15–30-degree angle. This helps to identify if
378
378
  a plate is authentic or fake." A RETROREFLECTIVE-SHEETING WATERMARK, not
379
379
  printed artwork: it is visible only off-axis, it carries no information,
380
- and a renderer must not draw it as a graphic element (PRD-PLATES § 3).
380
+ and a renderer must not draw it as a graphic element (the plates spec § 3).
381
381
  manufacture: >-
382
382
  Plates are manufactured under contract, not by the agency. NZTA routes
383
383
  duplicate orders to LicenSys ("0800 REMAKE") and personalised sales to
@@ -447,12 +447,12 @@ common:
447
447
  though CR marks are attested on New Zealand ministerial cars long before
448
448
  2011 (see nz-government-cr notes).
449
449
  agency_disagreement: >-
450
- RECORDED, NOT AVERAGED (PRD-PLATES § 5.3). NZTA's own history page groups
450
+ RECORDED, NOT AVERAGED (the plates spec § 5.3). NZTA's own history page groups
451
451
  the marks wrongly: "Diplomatic plates – for vehicles owned by embassies,
452
452
  consulates and high commissions (DC, DCC, FC and FCC plates) and
453
453
  ministerial vehicles (CC, CCC, CR and CROWN plates)." Schedule 4 assigns CC
454
454
  and CCC to CONSULAR missions, not to ministers. THE INSTRUMENT IS THE
455
- AUTHORITY (PRD-PLATES § 5.3: "MAJORITY IS NOT AUTHORITY; the authority is
455
+ AUTHORITY (the plates spec § 5.3: "MAJORITY IS NOT AUTHORITY; the authority is
456
456
  the authority"), so this file follows Schedule 4 and records the agency
457
457
  page's error here.
458
458
  source: "https://www.legislation.govt.nz/regulation/public/2011/0079/latest/whole.html # reg 37 and Schedule 4, all five rows verbatim"
@@ -473,7 +473,7 @@ classes_not_modelled:
473
473
  limb (b) — "a letter, number, symbol, or distinguishing mark" — so the
474
474
  crown IS the identifier in law. A regex cannot express this and none is
475
475
  authored; a renderer must place the emblem and no characters.
476
- emblem_risk: "the New Zealand crown device is a vice-regal insignia; PRD-PLATES § 3's neutral-placeholder rule applies and no artwork is claimed clean"
476
+ emblem_risk: "the New Zealand crown device is a vice-regal insignia; the plates spec § 3's neutral-placeholder rule applies and no artwork is claimed clean"
477
477
  sources:
478
478
  - "https://www.legislation.govt.nz/regulation/public/2011/0079/latest/whole.html # Schedule 4 item 1; reg 3 'unique identifier' limb (b); reg 37(2) 'distinguished solely by the symbol'"
479
479
  supplementary:
@@ -578,7 +578,7 @@ series:
578
578
  33(1)(b), which prescribes nothing but a six-character cap: under it
579
579
  "4ZZ99Z" is a perfectly lawful ordinary identifier that this series
580
580
  would never issue. A match on `regex` is a real claim about THIS series
581
- (PRD-PLATES § 2.7, the us-fl case), which is why `matching` is `strict`.
581
+ (the plates spec § 2.7, the us-fl case), which is why `matching` is `strict`.
582
582
  progression: >-
583
583
  NZTA, verbatim: "The new series of three letters and three numbers – from
584
584
  AAA104 ongoing to ZZZ999 – offers about 17.6 million possible
@@ -681,7 +681,7 @@ series:
681
681
  THE REFLECTORISED TWO-LETTER PLATE — same mark space as nz-standard-1964,
682
682
  opposite colours. Cut as its own series and not as a design variant
683
683
  because BOTH the period and the design differ, which is exactly the
684
- PRD-PLATES § 2.3 test, and because the two colourways are not successive
684
+ the plates spec § 2.3 test, and because the two colourways are not successive
685
685
  states of one specification: reg 33(4) still offers them as live
686
686
  alternatives (a) and (b) with no cut-off, so a consumer needs to be able
687
687
  to say "black-on-white, two letters, so issued between November 1986 and
@@ -843,7 +843,7 @@ series:
843
843
  obvious candidate is reg 33(1)(a)'s five-character cap — but the fullest
844
844
  shape this series' own grammar allows, three numerals plus three letters,
845
845
  is SIX characters, so the 2011 cap does not contain this series' regex and
846
- writing it as `regex_statutory` would have inverted the PRD-PLATES § 2.7
846
+ writing it as `regex_statutory` would have inverted the plates spec § 2.7
847
847
  tier order. The cap post-dates the series' issuance window in any case.
848
848
  The correct outer bound is SR 1995/136 cl 2(3)(a)(ii) itself, which
849
849
  `regex` already carries.
@@ -953,7 +953,7 @@ series:
953
953
  secondary account that a numeral-first trailer shape replaced it that year,
954
954
  against an agency page that still calls A111A-Z999Z current — and the agency
955
955
  page is visibly stale elsewhere (it also calls the pre-2007 motorcycle range
956
- current). Both readings are recorded and neither is averaged (PRD-PLATES
956
+ current). Both readings are recorded and neither is averaged (the plates spec
957
957
  § 5.3). A verifier with access to a current NZTA trailer-series statement
958
958
  settles this in one step; until then, treat the end date as the softest
959
959
  claim in this file.
@@ -992,12 +992,12 @@ series:
992
992
  display: "one plate, rear (reg 39(2))"
993
993
  region_encoding: none
994
994
  sources:
995
- - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_New_Zealand # SECONDARY, and the ONLY source for this arrangement and its 2024 start; accessed 2026-08-02. Extracted as a FACT under PRD-PLATES § 4's Wikipedia row and tagged `secondary-wikipedia` at point of use; the article's own section carries an 'unsourced section' banner"
995
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_New_Zealand # SECONDARY, and the ONLY source for this arrangement and its 2024 start; accessed 2026-08-02. Extracted as a FACT under the plates spec § 4's Wikipedia row and tagged `secondary-wikipedia` at point of use; the article's own section carries an 'unsourced section' banner"
996
996
  - "https://www.legislation.govt.nz/regulation/public/2011/0079/latest/whole.html # reg 33(1)(a) the five-character cap, 33(4)(b) the colours, 39(2) the single rear plate — everything about this series EXCEPT its arrangement"
997
997
  notes: >-
998
998
  THE REPORTED CURRENT TRAILER SHAPE, CARRIED ON A SECONDARY AND FLAGGED IN
999
999
  EVERY FIELD THAT MATTERS. It is authored rather than dropped because
1000
- jurisdiction-completeness (PRD-PLATES § 5.1) asks for the CURRENT series of
1000
+ jurisdiction-completeness (the plates spec § 5.1) asks for the CURRENT series of
1001
1001
  every core class, and because a tagged secondary claim is recoverable in one
1002
1002
  pass while a silent omission is not. Everything here except the arrangement
1003
1003
  and the year is instrument-sourced. The same secondary reports two
@@ -1044,7 +1044,7 @@ series:
1044
1044
  `[A-Z0-9]{1,6}` is reg 34(2)'s cap and nothing narrower exists to state:
1045
1045
  it necessarily contains every ordinary, trade and official identifier in
1046
1046
  New Zealand, so a match means "this string is a shape New Zealand could
1047
- have issued" and never "this is a personalised plate". PRD-PLATES § 2.7's
1047
+ have issued" and never "this is a personalised plate". The plates spec § 2.7's
1048
1048
  recall-only definition — "a union, a catch-all ... a shape hit and nothing
1049
1049
  more" — describes it exactly. `regex_strict` is forbidden here and none is
1050
1050
  wanted: the Registrar's refusal grounds (reg 34(3): already allocated,
@@ -1074,7 +1074,7 @@ series:
1074
1074
  NZTA states the palette in its own words: personalised plate
1075
1075
  characters "can be: white or silver on a black background; black, red
1076
1076
  or blue on a white background." A colour-only variant of the same
1077
- format and the same series, hence a sub-entry (PRD-PLATES § 2.3) and
1077
+ format and the same series, hence a sub-entry (the plates spec § 2.3) and
1078
1078
  not a series of its own. Its 2022 launch is a secondary claim and is
1079
1079
  NOT carried as a period.
1080
1080
  evidence: secondary-wikipedia
@@ -1221,7 +1221,7 @@ series:
1221
1221
  notes: >-
1222
1222
  THE HEAVY TRADE PLATE — a distinct series and not a variant, because the
1223
1223
  numeral run is FOUR rather than five and the vertical field carries an extra
1224
- token, so both the format and the design differ (PRD-PLATES § 2.3). It came
1224
+ token, so both the format and the design differ (the plates spec § 2.3). It came
1225
1225
  into existence with the Road User Charges regime's vocabulary: reg 36(1)(a)
1226
1226
  defines its scope by reference to a "heavy RUC vehicle (within the meaning
1227
1227
  of the Road User Charges Act 2012)", and NZTA translates that into the 3500
@@ -1559,7 +1559,7 @@ series:
1559
1559
  research_notes:
1560
1560
  wikipedia_dependent_claims:
1561
1561
  rule: >-
1562
- PRD-PLATES § 4's Wikipedia row authorises fact extraction on four
1562
+ the plates spec § 4's Wikipedia row authorises fact extraction on four
1563
1563
  conditions, the first of which is that every Wikipedia-derived fact is
1564
1564
  tagged. Here is the complete enumeration for New Zealand, so that a future
1565
1565
  decision to revisit the override can find every one of them in a single
@@ -1611,7 +1611,7 @@ research_notes:
1611
1611
  NEW ZEALAND IS A VEHICLESDB REGISTRY SOURCE, AND THAT MAKES IT A CORPUS
1612
1612
  CANDIDATE. NZTA publishes Motor Vehicle Register extracts and a
1613
1613
  registrations dashboard as open data; where a licensed extract carries
1614
- plate strings, the PRD-PLATES § 5.2 corpus test applies exactly as it does
1614
+ plate strings, the plates spec § 5.2 corpus test applies exactly as it does
1615
1615
  to the Dutch kenteken set — the CURRENT series' regexes should jointly
1616
1616
  match ≥ 99.9% of current New Zealand plates. The joint expression to test
1617
1617
  is nz-standard-2001 ∪ nz-standard-1986 ∪ nz-standard-1964 for cars,
data/data/plates/pl.yml CHANGED
@@ -1,4 +1,4 @@
1
- # plates/pl.yml — Poland (PRD-PLATES gate L1, wave 2).
1
+ # plates/pl.yml — Poland (the plates spec gate L1, wave 2).
2
2
  #
3
3
  # EVERY format, colour, dimension and class claim here is read from a Polish
4
4
  # primary instrument fetched in this pass through the Sejm's ELI API
@@ -198,7 +198,7 @@ common:
198
198
  pkt 2.12's rule that layout follows Rysunki 9-25, with the substitute
199
199
  rectangles of Rysunek 27 used for the digit 1 and the letters I, J, L and T.
200
200
  licence: >-
201
- PRD-PLATES §6 applies unchanged: the render layer derives glyphs from the
201
+ the plates spec §6 applies unchanged: the render layer derives glyphs from the
202
202
  statutory drawing, never from a third-party TTF. Whether Poland has a
203
203
  German-style §5 UrhG public-domain rule for designs published inside
204
204
  statutory instruments was NOT researched in this pass — recorded gap, and
@@ -240,7 +240,7 @@ common:
240
240
  it OFF moped plates and temporary plates.
241
241
  rendered: placeholder
242
242
  render_note: >-
243
- PRD-PLATES §3 placeholder rule applies. The eagle is a state emblem under
243
+ the plates spec §3 placeholder rule applies. The eagle is a state emblem under
244
244
  the 1980 ustawa o godle and its licensing posture was not researched here;
245
245
  the render layer draws a neutral placeholder in the slot.
246
246
  source: "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # § 28 ust. 4 pkt 1 and ust. 6; załącznik nr 12 pkt 2.6 lit. b. Accessed 2026-08-02"
@@ -830,7 +830,7 @@ series:
830
830
  from the bottom, with a two-letter prefix 105 mm from the left and
831
831
  66.5 mm from the bottom. The sticker moves to a different ROW of the
832
832
  two-row plate according to how long the prefix is — the same pressure
833
- PRD-PLATES §2.2 records for Japan, and a `format.fields` case if the
833
+ the plates spec §2.2 records for Japan, and a `format.fields` case if the
834
834
  render bundle ever needs it.
835
835
  region_encoding: "plates/_decode/pl-powiats.yml"
836
836
  sources: