vehicles 0.6.1 → 0.8.0

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 (186) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +164 -0
  3. data/CHANGELOG.md +274 -0
  4. data/README.md +55 -10
  5. data/data/PROVENANCE-vehicles.md +12 -0
  6. data/data/plates/PROVENANCE.md +5 -4
  7. data/data/plates/_decode/at-districts.yml +287 -0
  8. data/data/plates/_decode/ch-cantons.yml +110 -0
  9. data/data/plates/_decode/cn-issuing-offices.yml +463 -0
  10. data/data/plates/_decode/cn-provinces.yml +614 -0
  11. data/data/plates/_decode/cz-kraj.yml +159 -0
  12. data/data/plates/_decode/dk-serial-blocks.yml +327 -0
  13. data/data/plates/_decode/fr-departements.yml +191 -0
  14. data/data/plates/_decode/gb-age-identifiers.yml +170 -0
  15. data/data/plates/_decode/gb-memory-tags.yml +202 -0
  16. data/data/plates/_decode/gr-prefectures.yml +1408 -0
  17. data/data/plates/_decode/hr-cities.yml +315 -0
  18. data/data/plates/_decode/ie-counties.yml +227 -0
  19. data/data/plates/_decode/in-state-codes.yml +169 -0
  20. data/data/plates/_decode/is-districts-1938.yml +116 -0
  21. data/data/plates/_decode/it-provinces.yml +348 -0
  22. data/data/plates/_decode/jp-office-marks.yml +960 -0
  23. data/data/plates/_decode/jp-use-marks.yml +205 -0
  24. data/data/plates/_decode/kr-authority-marks.yml +146 -0
  25. data/data/plates/_decode/kr-use-syllables.yml +194 -0
  26. data/data/plates/_decode/lu-series-order.yml +638 -0
  27. data/data/plates/_decode/mx-entity-series.yml +380 -0
  28. data/data/plates/_decode/my-index-marks.yml +271 -0
  29. data/data/plates/_decode/no-counties-1913.yml +148 -0
  30. data/data/plates/_decode/no-districts.yml +901 -0
  31. data/data/plates/_decode/pl-powiats.yml +567 -0
  32. data/data/plates/_decode/pt-trailer-services.yml +96 -0
  33. data/data/plates/_decode/ro-counties.yml +213 -0
  34. data/data/plates/_decode/se-diplomatic.yml +220 -0
  35. data/data/plates/_decode/si-regions.yml +123 -0
  36. data/data/plates/_decode/sk-districts.yml +314 -0
  37. data/data/plates/_decode/th-registration-elements.yml +208 -0
  38. data/data/plates/_decode/ua-regions.yml +393 -0
  39. data/data/plates/_decode/za-licence-marks.yml +215 -0
  40. data/data/plates/_meta/classes.yml +1 -0
  41. data/data/plates/_meta/separators.yml +102 -0
  42. data/data/plates/ad.yml +961 -0
  43. data/data/plates/ar.yml +762 -0
  44. data/data/plates/at.yml +1424 -0
  45. data/data/plates/au-act.yml +472 -0
  46. data/data/plates/au-nsw.yml +282 -0
  47. data/data/plates/au-nt.yml +431 -0
  48. data/data/plates/au-qld.yml +272 -0
  49. data/data/plates/au-sa.yml +248 -0
  50. data/data/plates/au-tas.yml +302 -0
  51. data/data/plates/au-vic.yml +215 -0
  52. data/data/plates/au-wa.yml +309 -0
  53. data/data/plates/be.yml +1840 -0
  54. data/data/plates/br.yml +1152 -0
  55. data/data/plates/ca-ab.yml +430 -0
  56. data/data/plates/ca-bc.yml +697 -0
  57. data/data/plates/ca-mb.yml +499 -0
  58. data/data/plates/ca-nb.yml +537 -0
  59. data/data/plates/ca-nl.yml +743 -0
  60. data/data/plates/ca-ns.yml +808 -0
  61. data/data/plates/ca-nt.yml +610 -0
  62. data/data/plates/ca-nu.yml +280 -0
  63. data/data/plates/ca-on.yml +881 -0
  64. data/data/plates/ca-pe.yml +592 -0
  65. data/data/plates/ca-qc.yml +1036 -0
  66. data/data/plates/ca-sk.yml +256 -0
  67. data/data/plates/ca-yt.yml +656 -0
  68. data/data/plates/ch.yml +1273 -0
  69. data/data/plates/cn.yml +1431 -0
  70. data/data/plates/cy.yml +688 -0
  71. data/data/plates/cz.yml +1179 -0
  72. data/data/plates/de.yml +553 -118
  73. data/data/plates/dk.yml +1647 -0
  74. data/data/plates/ee.yml +1275 -0
  75. data/data/plates/es.yml +228 -32
  76. data/data/plates/fi.yml +1271 -0
  77. data/data/plates/fr.yml +1265 -0
  78. data/data/plates/gb.yml +1188 -0
  79. data/data/plates/gr.yml +721 -0
  80. data/data/plates/hr.yml +860 -0
  81. data/data/plates/hu.yml +959 -0
  82. data/data/plates/ie.yml +775 -0
  83. data/data/plates/in.yml +1172 -0
  84. data/data/plates/is.yml +667 -0
  85. data/data/plates/it.yml +1317 -0
  86. data/data/plates/jp.yml +3650 -0
  87. data/data/plates/kr.yml +1375 -0
  88. data/data/plates/li.yml +1010 -0
  89. data/data/plates/lt.yml +879 -0
  90. data/data/plates/lu.yml +842 -0
  91. data/data/plates/lv.yml +924 -0
  92. data/data/plates/mc.yml +1024 -0
  93. data/data/plates/mt.yml +854 -0
  94. data/data/plates/mx.yml +1372 -0
  95. data/data/plates/my.yml +685 -0
  96. data/data/plates/nl.yml +44 -0
  97. data/data/plates/no.yml +1018 -0
  98. data/data/plates/nz.yml +1699 -0
  99. data/data/plates/pl.yml +1296 -0
  100. data/data/plates/pt.yml +847 -0
  101. data/data/plates/ro.yml +785 -0
  102. data/data/plates/se.yml +1091 -0
  103. data/data/plates/si.yml +1105 -0
  104. data/data/plates/sk.yml +1439 -0
  105. data/data/plates/sm.yml +1119 -0
  106. data/data/plates/th.yml +1150 -0
  107. data/data/plates/ua.yml +1672 -0
  108. data/data/plates/us-ak.yml +763 -0
  109. data/data/plates/us-al.yml +457 -0
  110. data/data/plates/us-ar.yml +427 -0
  111. data/data/plates/us-as.yml +454 -0
  112. data/data/plates/us-az.yml +430 -0
  113. data/data/plates/us-ca.yml +892 -0
  114. data/data/plates/us-co.yml +452 -0
  115. data/data/plates/us-ct.yml +427 -0
  116. data/data/plates/us-dc.yml +614 -0
  117. data/data/plates/us-de.yml +551 -0
  118. data/data/plates/us-fl.yml +319 -96
  119. data/data/plates/us-ga.yml +644 -0
  120. data/data/plates/us-gu.yml +658 -0
  121. data/data/plates/us-hi.yml +585 -0
  122. data/data/plates/us-ia.yml +438 -0
  123. data/data/plates/us-id.yml +531 -0
  124. data/data/plates/us-il.yml +516 -0
  125. data/data/plates/us-in.yml +324 -0
  126. data/data/plates/us-ks.yml +351 -0
  127. data/data/plates/us-ky.yml +770 -0
  128. data/data/plates/us-la.yml +568 -0
  129. data/data/plates/us-ma.yml +379 -0
  130. data/data/plates/us-md.yml +536 -0
  131. data/data/plates/us-me.yml +445 -0
  132. data/data/plates/us-mi.yml +408 -0
  133. data/data/plates/us-mn.yml +411 -0
  134. data/data/plates/us-mo.yml +356 -0
  135. data/data/plates/us-mp.yml +402 -0
  136. data/data/plates/us-ms.yml +432 -0
  137. data/data/plates/us-mt.yml +619 -0
  138. data/data/plates/us-nc.yml +602 -0
  139. data/data/plates/us-nd.yml +419 -0
  140. data/data/plates/us-ne.yml +483 -0
  141. data/data/plates/us-nh.yml +394 -0
  142. data/data/plates/us-nj.yml +547 -0
  143. data/data/plates/us-nm.yml +574 -0
  144. data/data/plates/us-nv.yml +655 -0
  145. data/data/plates/us-ny.yml +592 -0
  146. data/data/plates/us-oh.yml +404 -0
  147. data/data/plates/us-ok.yml +513 -0
  148. data/data/plates/us-or.yml +392 -0
  149. data/data/plates/us-pa.yml +506 -0
  150. data/data/plates/us-pr.yml +507 -0
  151. data/data/plates/us-ri.yml +445 -0
  152. data/data/plates/us-sc.yml +605 -0
  153. data/data/plates/us-sd.yml +428 -0
  154. data/data/plates/us-tn.yml +471 -0
  155. data/data/plates/us-tx.yml +535 -0
  156. data/data/plates/us-ut.yml +384 -0
  157. data/data/plates/us-va.yml +567 -0
  158. data/data/plates/us-vi.yml +489 -0
  159. data/data/plates/us-vt.yml +458 -0
  160. data/data/plates/us-wa.yml +484 -0
  161. data/data/plates/us-wi.yml +509 -0
  162. data/data/plates/us-wv.yml +446 -0
  163. data/data/plates/us-wy.yml +523 -0
  164. data/data/plates/va.yml +604 -0
  165. data/data/plates/za.yml +1141 -0
  166. data/data/vehicles.json +160653 -105090
  167. data/lib/vehicles/configuration.rb +17 -3
  168. data/lib/vehicles/dataset.rb +73 -18
  169. data/lib/vehicles/fuzzy.rb +115 -0
  170. data/lib/vehicles/http.rb +48 -0
  171. data/lib/vehicles/make.rb +36 -6
  172. data/lib/vehicles/mcp_server.rb +5 -5
  173. data/lib/vehicles/model.rb +21 -2
  174. data/lib/vehicles/plates/series.rb +172 -18
  175. data/lib/vehicles/plates/template_fill.rb +188 -0
  176. data/lib/vehicles/plates/templates.rb +162 -0
  177. data/lib/vehicles/plates.rb +12 -0
  178. data/lib/vehicles/providers/hosted_provider.rb +28 -55
  179. data/lib/vehicles/validators/vehicle_make_validator.rb +3 -1
  180. data/lib/vehicles/validators/vehicle_model_validator.rb +1 -1
  181. data/lib/vehicles/version.rb +1 -1
  182. data/lib/vehicles.rb +32 -16
  183. data/rakelib/data_refresh.rake +109 -0
  184. data/rakelib/plates_refresh.rake +29 -0
  185. data/sig/vehicles.rbs +18 -0
  186. metadata +164 -2
@@ -0,0 +1,1018 @@
1
+ # plates/no.yml — Norway (PRD-PLATES gate L1, wave 2).
2
+ #
3
+ # THE ONE STRUCTURAL FACT THAT SHAPES THIS FILE, AND IT IS THE OPPOSITE OF
4
+ # SPAIN'S: Norway's HISTORIC plate formats are instrument-dated to the day,
5
+ # while its CURRENT one is not written down in any instrument at all.
6
+ #
7
+ # The reason is the veteran-plate regime. Forskrift om bruk av kjøretøy
8
+ # (FOR-1990-01-25-92) § 2-15 lets a vehicle first registered more than 30 years
9
+ # ago be plated to the registration order in force when it was first
10
+ # registered — so the regulation has to SAY what those orders were, and
11
+ # §§ 2-16, 2-17 and 2-18 do, with their date boundaries in their own headings:
12
+ #
13
+ # § 2-16 "Kjennemerke for registreringsordning før 1. april 1971"
14
+ # — "En bokstav og tre til seks tall"
15
+ # § 2-17 "... fra og med 1. april 1971 til og med 31. mars 1982"
16
+ # — "To bokstaver og 4 eller 5 tall"
17
+ # § 2-18 "... etter 31. mars 1982 frem til 1. januar 2002"
18
+ # — "To bokstaver og 4 eller 5 tall"
19
+ #
20
+ # Those three headings are the spine of this file. They are an IN-FORCE
21
+ # regulation stating, in its own words, the boundaries of four successive
22
+ # Norwegian registration orders — 1971-04-01, 1982-03-31/04-01, 2002-01-01 —
23
+ # which is a far stronger period source than the enthusiast web's "1971".
24
+ #
25
+ # Meanwhile the CURRENT composition — two letters and five digits — appears in
26
+ # no instrument. Kjøretøyforskriften (FOR-1994-10-04-918) § 39-1 delegates it:
27
+ # "Statens vegvesen fastsetter platekvalitet, utforming av plate, ... utforming
28
+ # av tegn og plassering av tegn på de enkelte kjennemerker." The nearest thing
29
+ # to an authority statement of the composition is a sentence on Statens
30
+ # vegvesen's own Skiltserier page giving the NUMBER RANGES — "Tallseriene for
31
+ # biler og lastebiler er fra 10000 til 99999, mens for andre kjøretøy er det
32
+ # fra 1000 til 9999" — which is why every current series here carries
33
+ # period_evidence `statutory-date` (from the § 2-18 upper bound) or
34
+ # `instrument-in-force`, and why the letter/digit counts are cited to the
35
+ # authority's web pages rather than to law.
36
+ #
37
+ # THE TWO INSTRUMENT LAYERS, cited per claim throughout:
38
+ # 1. FOR-1990-01-25-92, forskrift om bruk av kjøretøy, in force 1 April 1990,
39
+ # under vegtrafikkloven (LOV-1965-06-18-4) § 15: "Departementet gir nærmere
40
+ # bestemmelser om slik offentlig registrering av motorvogner, om
41
+ # kjennemerker (nummerskilt) og om vognkort." Kapittel 2 carries WHO gets
42
+ # which plate and — in § 2-11 — every COLOUR rule in this file. Kapittel 2a
43
+ # (added by forskrift 12 June 2017 nr. 722, in force 15 June 2017) carries
44
+ # personal plates.
45
+ # 2. FOR-1994-10-04-918, kjøretøyforskriften, kapittel 39 "Kjennemerker,
46
+ # antall og plassering" — plate SIZES (§ 39-10), which size per vehicle
47
+ # group (§ 39-11) and the nationality mark (§ 39-12).
48
+ # Note the FOR number: 1994-10-04-918, not the 1994-03-25-918 that circulates.
49
+ #
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
52
+ # forskrifter, and reading FOR-2015-07-13-888 suggested it "introduced" the
53
+ # green varebil plate in § 2-11 tredje ledd bokstav b. It did not. That
54
+ # forskrift RENUMBERED the whole of kapittel 2 (the colour rules had lived in
55
+ # § 2-5 since 1990) and carried the green text over verbatim. Shipping 2015 as
56
+ # the green plate's start would have been an instrument-date-as-series-date
57
+ # falsehood of the Spanish kind. The green rule is in the ORIGINAL 1990 text
58
+ # and the period below says 1990. A lovdata section footnote is a SECTION-NUMBER
59
+ # lineage, not a provision's history — that is the transferable lesson.
60
+ #
61
+ # COLOUR POLICY: no Norwegian instrument gives an RAL, CIE or RGB value for any
62
+ # plate colour. FOR-1990-01-25-92 § 2-11 names colours only ("grønn
63
+ # reflekterende bunn", "gul bunn"). Every non-black/white hex below is
64
+ # therefore `hex_basis: observed` and INDICATIVE, exactly as se.yml and de.yml
65
+ # record for Sweden and Germany.
66
+ #
67
+ # A DISAGREEMENT BETWEEN THE AUTHORITY AND ITSELF, recorded not averaged:
68
+ # § 2-11 tredje ledd says military plates are "sorte tegn på gul bunn"
69
+ # (yellow), while Statens vegvesen's own plain-language colour table calls the
70
+ # ground ORANGE. Both are the authority. The regulation wins in `design`, the
71
+ # web page is recorded in the note.
72
+ jurisdiction: "no"
73
+ authority:
74
+ name: Statens vegvesen
75
+ url: "https://www.vegvesen.no/kjoretoy/eie-og-vedlikeholde/skilt/"
76
+ binding: vehicle
77
+
78
+ instrument:
79
+ citation: "Forskrift 25. januar 1990 nr. 92 om bruk av kjøretøy, kapittel 2 og 2a"
80
+ in_force: "1990-04-01"
81
+ enabling: "Lov 18. juni 1965 nr. 4 om vegtrafikk (vegtrafikkloven) § 15"
82
+ delegated: "Forskrift 4. oktober 1994 nr. 918 om tekniske krav og godkjenning av kjøretøy, deler og utstyr (kjøretøyforskriften), kapittel 39"
83
+ source: "https://lovdata.no/dokument/SF/forskrift/1990-01-25-92 # ikrafttredelse 01.04.1990; hjemmel LOV-1965-06-18-4 §§ 4, 13-17, 20, 23, 36, 43, 43b. Accessed 2026-08-02"
84
+
85
+ common:
86
+ composition:
87
+ text: >-
88
+ NOT IN ANY INSTRUMENT — delegated. Kjøretøyforskriften § 39-1: "Statens
89
+ vegvesen fastsetter platekvalitet, utforming av plate, ... utforming av
90
+ tegn og plassering av tegn på de enkelte kjennemerker." The authority's
91
+ own statement of the resulting number ranges, from the Skiltserier page:
92
+ "Tallseriene for biler og lastebiler er fra 10000 til 99999, mens for
93
+ andre kjøretøy er det fra 1000 til 9999." So: two letters + FIVE digits
94
+ for cars and lorries, two letters + FOUR digits for motorcycles, mopeds,
95
+ trailers, caravans, tractors and machinery — and the leading digit is
96
+ never 0 in either range, which is what `regex_strict` encodes.
97
+ basis: authority-statement
98
+ source: "https://www.vegvesen.no/kjoretoy/eie-og-vedlikeholde/skilt/skiltserier/ # Statens vegvesen, Skiltserier: the number ranges verbatim. Accessed 2026-08-02"
99
+ charset:
100
+ letters_issued: [A, B, C, D, E, F, G, H, J, K, L, N, P, R, S, T, U, V, W, X, Y, Z]
101
+ letters_excluded: [I, M, O, Q, "Æ", "Ø", "Å"]
102
+ basis: authority-table-plus-secondary
103
+ note: >-
104
+ DERIVED, then corroborated. Across all 396 combinations in Statens
105
+ vegvesen's own allocation table, the first letter is drawn from
106
+ A B C D E F H J K L N P R S T U V X Y Z and the second adds W; I, M, O and
107
+ Q appear in neither position. no.wikipedia supplies the REASON —
108
+ "Bokstavene I, M, O, Q, Æ, Ø og Å brukes ikke på grunn av likheten med
109
+ andre bokstaver eller sifre" — and adds that G is reserved for gas
110
+ vehicles (GA) and prøveskilt, and W limited to four-digit plates and
111
+ prøveskilt. G and W are therefore kept in the issued alphabet: they are
112
+ restricted, not excluded. Æ, Ø and Å are outside this dataset's serial
113
+ alphabet (_meta/separators.yml) in any case.
114
+ avoided_combinations: [SS, NS]
115
+ avoided_combinations_note: >-
116
+ SS is not issued on FIVE-digit numbers (the Schutzstaffel association) but
117
+ IS issued on four-digit ones — motorcycles, tractors, trailers — and SS
118
+ appears in Bergen's allocation. NS is not issued at all (Nasjonal
119
+ Samling). Deliberately NOT compiled into any regex, on the nl.yml and
120
+ se.yml precedent: a non-issuance rule is not a well-formedness rule.
121
+ sources:
122
+ - "https://www.vegvesen.no/kjoretoy/eie-og-vedlikeholde/skilt/skiltserier/ # the allocation table the alphabet is derived from. Accessed 2026-08-02"
123
+ - "https://no.wikipedia.org/wiki/Kjennemerke_for_motorkj%C3%B8ret%C3%B8y_i_Norge # secondary-wikipedia (rev. 2026-07-16): the exclusion rationale, the G/W restrictions, and the SS/NS avoidance. Accessed 2026-08-02"
124
+ plate_sizes:
125
+ text: >-
126
+ Kjøretøyforskriften § 39-10, five sizes: stort smalt 52 x 11 cm; stort
127
+ høyt 34 x 21 cm; lite smalt 30,3 x 8,5 cm; lite høyt 22 x 15,2 cm;
128
+ US-skilt 30,3 x 15,3 cm. Trailers to a car take a 47 x 11 cm large narrow
129
+ plate. § 39-11 allocates them: "Bil skal ha store kjennemerker"; small
130
+ plates go to motorcycle, beltebil, beltemotorsykkel, traktor and
131
+ motorredskap; a trailer takes a large plate unless it is no wider than
132
+ 1,25 m. FOR-1990-01-25-92 § 2-13 restates the same sizes. The dimensions
133
+ are MAXIMA — smaller variants occur.
134
+ source: "https://lovdata.no/dokument/SF/forskrift/1994-10-04-918/KAPITTEL_39 # §§ 39-10, 39-11. Accessed 2026-08-02"
135
+ nationality_mark:
136
+ side: left
137
+ content: "norwegian-flag-over-N"
138
+ text: >-
139
+ Kjøretøyforskriften § 39-12 "Nasjonalitetsmerke": "Nasjonalitetsmerket
140
+ skal bestå av den latinske bokstaven N malt i hvitt og supplert av det
141
+ norske flagget", both on a "blå, retroreflekterende bakgrunn", placed
142
+ "helt til venstre på kjennemerket" with the flag above the letter. The N
143
+ is 20 mm high on a large plate and 16 mm on a small one. A separate oval
144
+ N sticker (at least 175 x 115 mm, black N at least 80 mm) remains the
145
+ alternative for plates that do not carry the band.
146
+ introduced_by: "Forskrift 10. november 2006 nr. 1286 (then § 39-11; renumbered to § 39-12 by forskrift 15. september 2010 nr. 1273)"
147
+ date_disagreement: >-
148
+ RECORDED, NOT AVERAGED, and it is a real instrument-date trap running the
149
+ OTHER way. The amending forskrift is dated 10 NOVEMBER 2006 and entered
150
+ into force straks; but the banded plates went into circulation on
151
+ 1 NOVEMBER 2006, nine days EARLIER, per both no.wikipedia and a
152
+ contemporary Aftenbladet report. period.start on the affected series is
153
+ 2006 either way, so nothing user-visible turns on it — but the dataset
154
+ records that the regulation post-dates the rollout rather than pretending
155
+ the two dates are one.
156
+ optional: >-
157
+ The band is VOLUNTARY. An owner may order banded plates for an older
158
+ vehicle from Statens vegvesen against a fee and surrender of the old
159
+ plates; unbanded Norwegian plates remain valid and are common.
160
+ sources:
161
+ - "https://lovdata.no/dokument/SF/forskrift/1994-10-04-918/KAPITTEL_39 # § 39-12, the wording and the 20/16 mm letter heights. Accessed 2026-08-02"
162
+ - "https://lovdata.no/dokument/LTI/forskrift/2006-11-10-1286 # the amending forskrift that created the integrated blue band. Accessed 2026-08-02"
163
+ - "https://no.wikipedia.org/wiki/Kjennemerke_for_motorkj%C3%B8ret%C3%B8y_i_Norge # secondary-wikipedia (rev. 2026-07-16): '1. november 2006 kom en ny type kjennemerker som har et blått nasjonalitetsmerke på venstre side'. Accessed 2026-08-02"
164
+ oblat:
165
+ text: >-
166
+ Between 1993 and 2012 a kontrollmerke (oblat) sat BETWEEN the letter group
167
+ and the digit group on plates carrying trafikkforsikringsavgift, showing
168
+ that tax, insurance and periodic inspection were in order. The 2002
169
+ redesign widened the inter-group gap specifically to make room for it. The
170
+ scheme ended in 2012 and the last plates with an oblat field were made in
171
+ May 2012 — so an oblat FIELD is a hard pre-mid-2012 manufacturing tell,
172
+ one of the very few dating signals a modern Norwegian plate carries. It
173
+ never formed part of the registration number.
174
+ source: "https://no.wikipedia.org/wiki/Kjennemerke_for_motorkj%C3%B8ret%C3%B8y_i_Norge # secondary-wikipedia (rev. 2026-07-16). Accessed 2026-08-02"
175
+ colour_rule:
176
+ text: >-
177
+ FOR-1990-01-25-92 § 2-11 tredje ledd is the single source of every colour
178
+ in this file: registration-liable vehicles carry "sorte tegn på hvit
179
+ reflekterende bunn" with seven lettered exceptions — a) vehicles used only
180
+ off public roads, "lysegule tegn på sort bunn"; b) "Varebil klasse 2 skal
181
+ ha kjennemerke med sorte tegn på grønn reflekterende bunn"; c) Forsvaret,
182
+ "sorte tegn på gul bunn"; d) diplomatic, "gule tegn på blå reflekterende
183
+ bunn"; e) licensed rally/trial/enduro, "hvite tegn på sort bunn";
184
+ f) "Årsprøvekjennemerke skal ha hvite tegn på rød bunn. Dagsprøve-
185
+ kjennemerke skal ha sorte tegn på rød bunn"; g) temporary import, a 45 mm
186
+ vertical red border on each side carrying the expiry date.
187
+ source: "https://lovdata.no/dokument/SF/forskrift/1990-01-25-92/KAPITTEL_2 # § 2-11 tredje ledd a-g. Accessed 2026-08-02"
188
+
189
+ series:
190
+
191
+ # =========================================================================
192
+ # THE CURRENT SERIES. Two letters + five digits (four on small vehicles).
193
+ # =========================================================================
194
+ - id: no-standard-2002
195
+ class: standard
196
+ categories: [car, van, truck, bus, motorcycle, moped, trailer, caravan, tractor, machine]
197
+ period: { start: 2002 }
198
+ period_evidence: statutory-date
199
+ matching: strict
200
+ format:
201
+ pattern: "LL 99999"
202
+ regex: '\A[A-Z]{2} ?\d{4,5}\z'
203
+ regex_strict: '\A[ABCDEFGHJKLNPRSTUVWXYZ]{2} ?[1-9]\d{3,4}\z'
204
+ charset:
205
+ letters_excluded: [I, M, O, Q]
206
+ notes: "see common.charset; regex_strict also encodes the leading-digit rule from common.composition (ranges 10000-99999 and 1000-9999, so never a leading zero)"
207
+ progression: >-
208
+ Allocated sequentially at registration and, since 1 April 1971, the
209
+ number FOLLOWS THE VEHICLE FOR ITS WHOLE LIFE and is not recycled —
210
+ the opposite of the pre-1971 order, where the number followed the
211
+ owner. Combinations are broadly issued by trafikkstasjon (see
212
+ region_encoding) but an owner may request another station's series.
213
+ separator_note: >-
214
+ The gap between letter group and digit group is a printed GAP with no
215
+ glyph — no instrument prescribes a separator, since no instrument
216
+ prescribes the composition at all. Written as the emitted SPACE per
217
+ PRD-PLATES §2.6 and optional in the regex.
218
+ design:
219
+ plate: { w: 520, h: 110, unit: mm }
220
+ plate_variants:
221
+ - { w: 340, h: 210, unit: mm, note: "stort høyt — two rows, letters above digits; common on the rear of SUVs" }
222
+ - { w: 303, h: 85, unit: mm, note: "lite smalt — motorcycle, beltebil, beltemotorsykkel, traktor, motorredskap; also cars with no room for the large plate, by application" }
223
+ - { w: 220, h: 152, unit: mm, note: "lite høyt" }
224
+ - { w: 303, h: 153, unit: mm, note: "US-skilt — for vehicles built for the American plate aperture" }
225
+ - { w: 470, h: 110, unit: mm, note: "tilhenger, stort smalt" }
226
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec, spec_note: "§ 2-11 tredje ledd: 'sorte tegn på hvit reflekterende bunn'" }
227
+ foreground: "#000000"
228
+ border: { color: "#000000", note: "the black edge ('sørgerand') arrived with the 2002 redesign" }
229
+ band: { side: left, color: "#003399", content: "norwegian-flag+N", hex_basis: observed, note: "voluntary, and only from 1 November 2006 — see common.nationality_mark. No Norwegian instrument gives the blue's RAL or RGB." }
230
+ emblem: { present: false }
231
+ rear_differs: false
232
+ display: "front and rear on bil; front or left side on beltemotorsykkel; rear only on other registration-liable vehicles (FOR-1990-01-25-92 § 2-9)"
233
+ design_history: >-
234
+ THE FORMAT HAS NOT CHANGED SINCE 1971; the plate has, three times, and
235
+ none of those changes is a new series. From 1 January 2002 the
236
+ "digitalskilt" font — uniform character widths for machine reading, a
237
+ black border, and a wider inter-group gap to fit the kontrolloblat;
238
+ its legibility was criticised (A and R too alike). From 1 November 2006
239
+ a revised font plus the optional blue nationality band. From
240
+ 1 January 2009 to 31 December 2011 plates were made in PLASTIC, which
241
+ broke in winter; aluminium returned from 2012 with the same font.
242
+ region_encoding: no-districts.yml
243
+ region_encoding_note: >-
244
+ READ THE DECODE FILE'S CAVEATS. Statens vegvesen publishes the allocation
245
+ but hedges it in its own words — "Bokstavkombinasjonen baserer seg OFTE
246
+ på hvilken trafikkstasjon som har utstedt registreringsnummeret" — six
247
+ combinations map to two stations each, and geographic distribution
248
+ stopped altogether for FOUR-DIGIT plates on 9 February 2017. A hit is a
249
+ low-confidence ISSUING-STATION hint, never a statement about where the
250
+ vehicle or owner is.
251
+ sources:
252
+ - "https://lovdata.no/dokument/SF/forskrift/1990-01-25-92/KAPITTEL_2 # § 2-11 (colours, and the delegation of design to Statens vegvesen), § 2-9 (how many plates and where), § 2-13 (sizes), § 2-18 (the predecessor order closes 1 January 2002). Accessed 2026-08-02"
253
+ - "https://lovdata.no/dokument/SF/forskrift/1994-10-04-918/KAPITTEL_39 # §§ 39-1 (the composition is delegated to Statens vegvesen), 39-10, 39-11, 39-12. Accessed 2026-08-02"
254
+ - "https://www.vegvesen.no/kjoretoy/eie-og-vedlikeholde/skilt/skiltserier/ # the number ranges 10000-99999 / 1000-9999 and the letter-combination allocation. Accessed 2026-08-02"
255
+ - "https://www.vegvesen.no/kjoretoy/eie-og-vedlikeholde/skilt/bestill-skilt/ # the authority's own size list and the 70 kr / 140 kr plate prices. Accessed 2026-08-02"
256
+ - "https://no.wikipedia.org/wiki/Kjennemerke_for_motorkj%C3%B8ret%C3%B8y_i_Norge # secondary-wikipedia (rev. 2026-07-16): the 2002 digitalskilt font and black border, the 2006 font revision, the 2009-2011 plastic episode, and 'to bokstaver etterfulgt av fem siffer' for cars / four for small vehicles. Accessed 2026-08-02"
257
+ notes: >-
258
+ THE CURRENT NORWEGIAN PLATE. period.start 2002 is a STATUTORY UPPER-BOUND
259
+ date, not an instrument's own date: FOR-1990-01-25-92 § 2-18 closes the
260
+ preceding registration order "frem til 1. januar 2002", so the current
261
+ order begins there in the regulation's own words. Independently,
262
+ FOR-2001-07-12-1098 entered into force on exactly 1 January 2002 and
263
+ rewrote § 2-5 nr. 3 to the effect that "Tildelt kjennemerke skal følge
264
+ kjøretøyet" — the same date from the other side. FOLKLORE FLAG: secondary
265
+ sources routinely present the Norwegian system as unchanged "since 1971".
266
+ The FORMAT has indeed been two letters + four or five digits since
267
+ 1 April 1971 — and this file models 1971-1982, 1982-2002 and 2002-onward
268
+ as three series only because the authority's own regulation does. A
269
+ consumer interested purely in the string shape should treat all three as
270
+ one grammar; a consumer interested in what plate a veteran vehicle may
271
+ lawfully carry needs the split.
272
+
273
+ - id: no-standard-1982
274
+ class: standard
275
+ categories: [car, van, truck, bus, motorcycle, moped, trailer, caravan, tractor, machine]
276
+ period: { start: 1982, end: 2002 }
277
+ period_evidence: instrument-dated-both-ends
278
+ matching: strict
279
+ format:
280
+ pattern: "LL 99999"
281
+ regex: '\A[A-Z]{2} ?\d{4,5}\z'
282
+ pattern_note: >-
283
+ Deliberately NO regex_strict. The letter exclusions (I, M, O, Q) and the
284
+ no-leading-zero rule are CURRENT authority statements; no source was
285
+ found establishing that either held in 1982-2002, and asserting them
286
+ for a closed historic period would be a guess dressed as a grammar.
287
+ progression: "as no-standard-2002 — sequential, number bound to the vehicle for life"
288
+ design:
289
+ plate: { w: 520, h: 110, unit: mm }
290
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
291
+ foreground: "#000000"
292
+ band: { side: none, note: "no nationality band — that arrives 1 November 2006" }
293
+ border: { color: "#FFFFFF", note: "no black border — the 'sørgerand' arrives with the 2002 redesign" }
294
+ emblem: { present: false }
295
+ rear_differs: false
296
+ design_reference: >-
297
+ RECORDED GAP, and it is the only substantive difference between this
298
+ series and its predecessor. § 2-18 does not describe the plate; it
299
+ refers to an external technical document, "Bestemmelser om kjøretøy,
300
+ datert 3. mai 1984", exactly as § 2-17 refers to "Bestemmelser om
301
+ kjøretøy, hovedgruppe 27 gjeldende fra 1. april 1971". Neither document
302
+ is carried by lovdata and neither was retrieved in this pass, so what
303
+ actually changed at the 1982 boundary is NOT established here. Note
304
+ also that the referenced document is dated 1984 while the order it
305
+ governs opens in 1982 — an inconsistency in the regulation itself,
306
+ recorded as found.
307
+ region_encoding: no-districts.yml
308
+ region_encoding_note: "the allocation file is a CURRENT snapshot; it is not evidence of which station issued a combination in this period"
309
+ sources:
310
+ - "https://lovdata.no/dokument/SF/forskrift/1990-01-25-92/KAPITTEL_2 # § 2-18: 'Kjennemerke for registreringsordning etter 31. mars 1982 frem til 1. januar 2002' — 'To bokstaver og 4 eller 5 tall', and the reference to Bestemmelser om kjøretøy datert 3. mai 1984. Accessed 2026-08-02"
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
+ notes: >-
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
315
+ authority's regulation splits the two-letter era at 31 March 1982 and
316
+ names a different technical specification on each side, while every
317
+ secondary source consulted — including a plate image captioned
318
+ "Kjennemerke med doble bokstaver 1971 - 2001" — treats the whole period as
319
+ one design and records nothing happening in 1982. The authority is the
320
+ authority, so the split is shipped; but the substance of the change could
321
+ not be established, and this note says so rather than inventing one.
322
+
323
+ - id: no-standard-1971
324
+ class: standard
325
+ categories: [car, van, truck, bus, motorcycle, moped, trailer, caravan, tractor, machine]
326
+ period: { start: 1971, end: 1982 }
327
+ period_evidence: instrument-dated-both-ends
328
+ matching: strict
329
+ format:
330
+ pattern: "LL 99999"
331
+ regex: '\A[A-Z]{2} ?\d{4,5}\z'
332
+ pattern_note: "no regex_strict, for the reason given on no-standard-1982"
333
+ progression: >-
334
+ THE REFORM THAT DEFINES THE ERA: from 1 April 1971 the number is bound
335
+ to the VEHICLE for its lifetime and is not recycled. Under the county-
336
+ letter order it had been bound to the OWNER's district, so a sale across
337
+ county lines re-plated the car. Allocation of letter pairs to police
338
+ districts began at this point and has drifted since.
339
+ design:
340
+ plate: { w: 520, h: 110, unit: mm }
341
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
342
+ foreground: "#000000"
343
+ band: { side: none }
344
+ emblem: { present: false }
345
+ rear_differs: false
346
+ design_reference: >-
347
+ § 2-17 refers the appearance to "Bestemmelser om kjøretøy, hovedgruppe
348
+ 27 gjeldende fra 1. april 1971" — not retrieved; see the same recorded
349
+ gap on no-standard-1982.
350
+ region_encoding: no-districts.yml
351
+ region_encoding_note: "the allocation file is a CURRENT snapshot and is weakest as evidence for this, the earliest two-letter period"
352
+ sources:
353
+ - "https://lovdata.no/dokument/SF/forskrift/1990-01-25-92/KAPITTEL_2 # § 2-17: 'Kjennemerke for registreringsordning fra og med 1. april 1971 til og med 31. mars 1982' — 'To bokstaver og 4 eller 5 tall'. Accessed 2026-08-02"
354
+ - "https://no.wikipedia.org/wiki/Kjennemerke_for_motorkj%C3%B8ret%C3%B8y_i_Norge # secondary-wikipedia (rev. 2026-07-16): 'Dagens system ble innført fra 1. april 1971'; the number now follows the vehicle and is not recycled. Accessed 2026-08-02"
355
+ notes: >-
356
+ THE FIRST TWO-LETTER ORDER. period.start 1971 is dated to the day —
357
+ 1 APRIL 1971 — by the heading of § 2-17 of a regulation in force today,
358
+ which is a materially better source than the bare "1971" that circulates
359
+ everywhere else, and it settles the boundary without averaging. This is
360
+ also where Norway's only real era signal is created: a plate whose number
361
+ is bound to the vehicle cannot belong to the county-letter order.
362
+
363
+ # =========================================================================
364
+ # THE COUNTY-LETTER ORDER, 1913-1971 — the decode-rich historic series.
365
+ # =========================================================================
366
+ - id: no-county-letter-1913
367
+ class: standard
368
+ categories: [car, van, truck, bus, motorcycle]
369
+ period: { start: 1913, end: 1971 }
370
+ period_evidence: statutory-date-end-secondary-start
371
+ matching: strict
372
+ format:
373
+ pattern: "L-999"
374
+ regex: '\A[A-Z]-\d{3,6}\z'
375
+ regex_strict: '\A[ABCDEFGHIKLOPQRSTUVWXYZ]-\d{3,6}\z'
376
+ charset:
377
+ letters_issued: [A, B, C, D, E, F, G, H, I, K, L, O, P, Q, R, S, T, U, V, W, X, Y, Z]
378
+ letters_never_used: [J, M, N]
379
+ notes: >-
380
+ regex_strict carries the 22 letters actually allocated (see
381
+ no-counties-1913.yml). Note this era USES I, which the modern order
382
+ excludes, and uses Q and P for non-geographic purposes.
383
+ progression: >-
384
+ The letter is the county; the digits are a sequence the county governor
385
+ (later the police) allocated among the police districts within it. The
386
+ number followed the OWNER, so a vehicle sold into another county was
387
+ re-plated. Digit width grew with motorisation: up to 3 digits in 1913,
388
+ 5 in several districts after the First World War, 6 by the 1960s.
389
+ layout_note: >-
390
+ § 2-16, verbatim: "En bokstav og tre til seks tall. Mellom bokstav og
391
+ tallkombinasjon skal det i halv høyde være en vannrett strek." The
392
+ stroke is STATUTORY, which is why the pattern spells a hyphen rather
393
+ than a gap. On the 1913 rear plate the letter sat ABOVE the digits
394
+ instead.
395
+ unmodelled_variant: >-
396
+ THE OSLO "TELEFONNUMMER" PLATES ARE NOT MATCHED BY THIS REGEX and that
397
+ is deliberate. From 1958 Oslo exhausted its five-digit range and issued
398
+ six digits with NO county letter, grouped in pairs (00-00-00); Akershus
399
+ followed. They are a genuine sub-shape of this order but no source
400
+ establishing their exact issuing window was retrieved, so no series is
401
+ authored for them. `no-historic-veteran-1991` does match them, because
402
+ the veteran regime expressly revived them.
403
+ design:
404
+ plate: { w: 520, h: 110, unit: mm, note: "REPRESENTATIVE ONLY — see design_history; this era had no single size" }
405
+ background: { color: "#FFFFFF", finish: painted, hex_basis: observed }
406
+ foreground: "#000000"
407
+ band: { side: none }
408
+ emblem: { present: false }
409
+ rear_differs: true
410
+ rear_note: "1913-1929: the front plate was 11,5 cm high with 7,5 cm characters and set the letter beside the digits; the rear plate was at least 30 cm high with 12 cm characters and set the letter ABOVE them. The 1929 reform made front and rear the same size."
411
+ design_history: >-
412
+ Four dated stages, all secondary-wikipedia. 1913: owner-made plates,
413
+ black on white, dimensions prescribed but nothing else — the police
414
+ applied LEAD SEALS to verify them. 17 January 1929: standardised cast
415
+ plates, characters fixed at 9 cm high and 4,5 cm wide in a uniform
416
+ vertical face; front and rear equal; commercial vehicles additionally
417
+ carried RUTEVOGN, LEIEVOGN or DROSJE beneath the number (kgl.res.
418
+ 13 November 1929). 1 July 1942: new regulations of 3 June 1942, same
419
+ characters, lead seals abolished. 1 June 1947: the police took sole
420
+ charge of supply and plates became embossed aluminium. From 1959
421
+ (forskriftsendring of 20 December 1959) two-row "høye" plates were
422
+ allowed for five- and six-digit numbers, rear only.
423
+ colour_variants: >-
424
+ The era's other grounds, all secondary-wikipedia: red with white
425
+ characters for prøveskilt from 1926 (white with a red "PRØVE"
426
+ undertext 1918-1926); black with yellow characters for vehicles not
427
+ approved for public roads, from 1960; GREEN anodised aluminium with
428
+ white characters for agricultural machines and tractors, 1960-1971 —
429
+ a green plate unrelated to the modern varebil green; yellow, from 1945
430
+ bronze anodised, with black characters for military vehicles from 1932;
431
+ bronze with red characters for military test plates from 1945; and
432
+ light blue anodised with black characters for loan plates issued while
433
+ new plates were being made, 1947-1971.
434
+ region_encoding: no-counties-1913.yml
435
+ sources:
436
+ - "https://lovdata.no/dokument/SF/forskrift/1990-01-25-92/KAPITTEL_2 # § 2-16: 'Kjennemerke for registreringsordning før 1. april 1971' — 'En bokstav og tre til seks tall', the half-height horizontal stroke, and legibility at 30 metres. PRIMARY, and the source of the 1971 end date. Accessed 2026-08-02"
437
+ - "https://no.wikipedia.org/wiki/Kjennemerke_for_motorkj%C3%B8ret%C3%B8y_i_Norge # secondary-wikipedia (rev. 2026-07-16): the 1 April 1913 start (lov om motorvogner 21 June 1912 + kgl.res. 18 March 1913), the letter-to-county allocation, every design stage above, the colour variants, and the Oslo telefonnummer plates. Accessed 2026-08-02"
438
+ notes: >-
439
+ NORWAY'S DECODABLE ERA, and the only one. period.start 1913 is
440
+ secondary-wikipedia: the enabling lov of 21 June 1912 and the kongelig
441
+ resolusjon of 18 March 1913 are named there and both took effect on
442
+ 1 April 1913, but neither instrument is carried by lovdata and neither was
443
+ retrieved — a recorded gap, and the reason this series is not tagged
444
+ instrument-in-force despite its end date being primary. The letter index,
445
+ with the four rows that genuinely move (G withdrawn 1931, Z from 1929,
446
+ Q from 1934, P from 1967), is in no-counties-1913.yml. These plates are
447
+ NOT merely historic: § 2-15 lets a vehicle first registered more than 30
448
+ years ago carry the order of its first registration, so county-letter
449
+ plates are lawfully issued today — see no-historic-veteran-1991.
450
+
451
+ - id: no-numeric-1899
452
+ class: standard
453
+ categories: [car, truck, bus]
454
+ period: { start: 1899, end: 1913 }
455
+ period_evidence: secondary-wikipedia
456
+ matching: recall-only
457
+ format:
458
+ pattern: "999"
459
+ regex: '\A\d{1,3}\z'
460
+ pattern_note: >-
461
+ RECALL-ONLY BY NECESSITY. There was no national system: each kjøpstad
462
+ and each amt kept its own register and its own sequence, so "1" was
463
+ issued many times over in different places and a bare number carries no
464
+ jurisdiction claim whatsoever. The regex is a shape hit and nothing
465
+ more.
466
+ progression: "sequential within each local register; numbers freed by sale or scrapping were re-used"
467
+ design:
468
+ background: { color: "#000000", finish: painted, hex_basis: observed }
469
+ foreground: "#FFFFFF"
470
+ band: { side: none }
471
+ note: >-
472
+ In the towns: one rear plate, up to three digits, 20 cm white characters
473
+ on black. In the amts until 1903-1911: no number at all — merely a plate
474
+ on the LEFT side showing the owner's name and address, unreadable in
475
+ motion and adequate only because at most two or three motor vehicles
476
+ existed. As the amts adopted town-style rules between 1903 and 1911 they
477
+ used 12 cm digits with the owner's home town above in 6 cm letters,
478
+ white on black. Owners had plates made themselves.
479
+ region_encoding: none
480
+ region_encoding_note: "none possible — the register was local and the plate carried no jurisdiction code at all, only (sometimes) a place name in words"
481
+ sources:
482
+ - "https://no.wikipedia.org/wiki/Kjennemerke_for_motorkj%C3%B8ret%C3%B8y_i_Norge # secondary-wikipedia (rev. 2026-07-16): the vedtak of Kristians amt 22 March 1899 confirmed by kgl.res. 2 September 1899; Kristiania's bystyre 29 June 1899 confirmed by kgl.res. 24 July 1899; Trondhjem 5 May 1900 confirmed by kgl.res. 26 May 1900; the formats and colours; Schous Bryggeri's plate '1' of 23 May 1900. Accessed 2026-08-02"
483
+ - "https://lovdata.no/dokument/SF/forskrift/1990-01-25-92/KAPITTEL_2 # § 2-16 closes everything before 1 April 1971; this era has no separate statutory description. Accessed 2026-08-02"
484
+ notes: >-
485
+ THE PRE-NATIONAL ERA. period.start 1899 is the year the first local
486
+ registration rules were made — Kristians amt on 22 March 1899, confirmed
487
+ by kongelig resolusjon on 2 September 1899 — which also puts Norway among
488
+ the first five countries in the world to register motor vehicles. Every
489
+ date here is secondary-wikipedia; the Norsk Lovtidend notices it cites
490
+ were not retrieved. PERIOD HONESTY: 1899 dates the RULES, not a plate —
491
+ the first Norwegian registration mark was issued on 23 May 1900 and the
492
+ amts outside the towns displayed no number at all until 1903-1911. The
493
+ lint's 1893 floor is respected. Modelled as ONE recall-only series
494
+ because it is a dozen unrelated local sequences, not a system.
495
+
496
+ # =========================================================================
497
+ # THE VETERAN REGIME — old formats, lawfully issued today.
498
+ # =========================================================================
499
+ - id: no-historic-veteran-1991
500
+ class: historic
501
+ categories: [car, van, truck, bus, motorcycle]
502
+ period: { start: 1991 }
503
+ period_evidence: secondary-wikipedia
504
+ matching: recall-only
505
+ format:
506
+ pattern: "L-99999"
507
+ regex: '\A(?:[A-Z]-\d{3,6}|\d{2}-\d{2}-\d{2}|[A-Z]{2} ?\d{4,5})\z'
508
+ pattern_note: >-
509
+ RECALL-ONLY: the regex is the UNION of every earlier Norwegian shape a
510
+ veteran vehicle may lawfully be re-plated to — county letter + 3-6
511
+ digits, the Oslo six-digit "telefonnummer" grouping, and the two-letter
512
+ orders. A match says only "this string has a shape Norway has issued";
513
+ it is not a claim that the plate is a veteran plate, because the very
514
+ same strings are ordinary registrations. Consumers must read
515
+ `matching:` and not infer validity.
516
+ progression: "the owner chooses; any previously used county letter except P and Q, with three to six digits in any combination"
517
+ design:
518
+ plate: { w: 520, h: 110, unit: mm, note: "plates may be made either in historic form or in modern manufacture — the owner's choice" }
519
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
520
+ foreground: "#000000"
521
+ band: { side: none }
522
+ emblem: { present: false }
523
+ region_encoding: no-counties-1913.yml
524
+ region_encoding_note: >-
525
+ DANGEROUS TO DECODE, and the reason this warning exists: a county letter
526
+ on a veteran plate issued after 1991 is the OWNER'S CHOICE from the
527
+ historic alphabet, not a record of where anything was registered. The
528
+ decode table gives the letter's historic meaning; it does not license an
529
+ inference about this vehicle. Only P and Q are unavailable.
530
+ sources:
531
+ - "https://lovdata.no/dokument/SF/forskrift/1990-01-25-92/KAPITTEL_2 # § 2-15: a vehicle first registered more than 30 years ago (alternatively of a model year more than 31 years old) may be assigned plates of the registration order in force at its first registration; §§ 2-16 to 2-18 supply the three orders. PRIMARY. Accessed 2026-08-02"
532
+ - "https://no.wikipedia.org/wiki/Kjennemerke_for_motorkj%C3%B8ret%C3%B8y_i_Norge # secondary-wikipedia (rev. 2026-07-16): county letters revived from June 1991 for vehicles previously on them or imported of model year 1970 or older; all letters except P and Q; telefonnummer plates selectable; plates follow the vehicle on sale; pre-1913 amt marks revived from 2013. Accessed 2026-08-02"
533
+ notes: >-
534
+ NORWAY'S VETERAN PLATE IS A FORMAT, NOT A DESIGN — the exact inverse of
535
+ the Netherlands, whose oldtimer plate is a distinctive dark blue carrying
536
+ the original serial, and of Spain, which issues a dedicated H- serial.
537
+ A Norwegian veteran plate is an ORDINARY-looking plate in a discontinued
538
+ FORMAT. period.start 1991 is secondary-wikipedia (June 1991, the revival
539
+ of county letters); the rolling 30-year eligibility rule in § 2-15 is
540
+ primary and current, and the two are different things: the entitlement
541
+ exists today by regulation, the 1991 date is when the practice began.
542
+ Note the eligibility ROLLS — in 2026 it reaches vehicles first registered
543
+ in 1996, which is why the two-letter orders appear in the union regex.
544
+ Pre-1913 amt marks became available again from 2013.
545
+
546
+ # =========================================================================
547
+ # THE GREEN COMMERCIAL PLATE — a real class distinction, and instrument-dated.
548
+ # =========================================================================
549
+ - id: no-green-varebil-1990
550
+ class: standard
551
+ categories: [van]
552
+ period: { start: 1990 }
553
+ period_evidence: instrument-in-force
554
+ matching: strict
555
+ format:
556
+ pattern: "LL 99999"
557
+ regex: '\A[A-Z]{2} ?\d{5}\z'
558
+ regex_strict: '\A[ABCDEFGHJKLNPRSTUVWXYZ]{2} ?[1-9]\d{4}\z'
559
+ charset: { notes: "as common.charset; five digits, from the car/lorry range 10000-99999" }
560
+ progression: "drawn from the same national sequence and the same trafikkstasjon allocation as no-standard-2002 — the plate colour, not the number, carries the class"
561
+ design:
562
+ plate: { w: 520, h: 110, unit: mm }
563
+ background: { color: "#008F72", finish: retroreflective, hex_basis: observed, spec_note: "the instrument says only 'grønn reflekterende bunn' — no RAL, no RGB" }
564
+ foreground: "#000000"
565
+ band: { side: left, color: "#003399", content: "norwegian-flag+N", hex_basis: observed, note: "voluntary, from 1 November 2006" }
566
+ emblem: { present: false }
567
+ rear_differs: false
568
+ region_encoding: no-districts.yml
569
+ variants:
570
+ - class: personalized
571
+ format: { pattern: "LLLLLLL" }
572
+ note: "A personal kjennemerke may be issued on the GREEN ground for a varebil klasse 2 — the same 2-7 character rule as no-personal-2017, only the ground colour differs, so a sub-entry rather than a series."
573
+ sources:
574
+ - "https://no.wikipedia.org/wiki/Kjennemerke_for_motorkj%C3%B8ret%C3%B8y_i_Norge # secondary-wikipedia (rev. 2026-07-16): the green plate type illustrated with a personalised example. Accessed 2026-08-02"
575
+ sources:
576
+ - "https://lovdata.no/dokument/SF/forskrift/1990-01-25-92/KAPITTEL_2 # § 2-11 tredje ledd bokstav b, verbatim: 'Varebil klasse 2 skal ha kjennemerke med sorte tegn på grønn reflekterende bunn.' Accessed 2026-08-02"
577
+ - "https://lovdata.no/dokument/LTI/forskrift/1990-01-25-92 # the forskrift AS ORIGINALLY MADE, showing the green rule already present at § 2-5 nr. 2 bokstav b; ikrafttredelse 1 April 1990. This is the citation that dates the series. Accessed 2026-08-02"
578
+ - "https://lovdata.no/dokument/LTI/forskrift/2015-07-13-888 # forskrift 13. juli 2015 nr. 888, in force 1 September 2015: the RENUMBERING of kapittel 2 that moved the colour rules from § 2-5 to § 2-11. Cited to show it did NOT introduce the green plate. Accessed 2026-08-02"
579
+ - "https://no.wikipedia.org/wiki/Kjennemerke_for_motorkj%C3%B8ret%C3%B8y_i_Norge # secondary-wikipedia (rev. 2026-07-16): green plates carry two letters + FIVE digits like ordinary cars; up to three seats; goods transport only; lower tax; 'Hvem som helst kan eie en bil med grønne skilt'. Accessed 2026-08-02"
580
+ notes: >-
581
+ THE GREEN VAREBIL KLASSE 2 PLATE — Norway's most visible tax-class signal
582
+ and, unusually, one a plate string cannot reveal: the number is drawn from
583
+ the ordinary sequence, so ONLY THE COLOUR distinguishes it. A parse API
584
+ given a bare string can never tell a green plate from a white one, and
585
+ must not pretend otherwise. period.start 1990 is the parent forskrift's
586
+ own entry into force, with the green rule present in the text as
587
+ originally made — see the header note for the 2015 renumbering trap that
588
+ nearly put 2015 here instead. CLASS CAVEAT: recorded as `standard`
589
+ because _meta/classes.yml has no commercial/tax-class category; the
590
+ statutory category is "varebil klasse 2", a vehicle-tax class defined by
591
+ having at most three seats and a goods compartment, not a distinct
592
+ registration regime. Flagged as a vocabulary gap.
593
+
594
+ # =========================================================================
595
+ # ELECTRIC VEHICLES — a genuine allocation class, weakly dated.
596
+ # =========================================================================
597
+ - id: no-electric-1999
598
+ class: electric
599
+ categories: [car, van]
600
+ period: { start: 1999 }
601
+ period_evidence: secondary-dated
602
+ matching: strict
603
+ format:
604
+ pattern: "LL 99999"
605
+ regex: '\A[A-Z]{2} ?\d{5}\z'
606
+ regex_strict: '\A(?:EL|EK|EV|EB|EC|ED|EE|EF|EH|EJ|EN|EP|ER|EA|EU) ?[1-9]\d{4}\z'
607
+ charset:
608
+ combinations: [EL, EK, EV, EB, EC, ED, EE, EF, EH, EJ, EN, EP, ER, EA, EU]
609
+ notes: >-
610
+ The fifteen combinations Statens vegvesen lists under "Elektriskdrevet
611
+ kjøretøy" on its Skiltserier page — a PRIMARY list, and it is fifteen,
612
+ not the thirteen that circulate in secondary compilations (EA and EU
613
+ are additional). regex_strict is where this lives; `regex` cannot
614
+ carry it, because the lint generates every letter A-Z from an "L".
615
+ progression: >-
616
+ Nationwide and NON-GEOGRAPHIC — an electric vehicle takes an E-series
617
+ combination wherever in the country it is registered, which is exactly
618
+ why these combinations are excluded from the trafikkstasjon allocation.
619
+ Series are opened as each fills: EL first, then EK, and so on.
620
+ design:
621
+ plate: { w: 520, h: 110, unit: mm }
622
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
623
+ foreground: "#000000"
624
+ band: { side: left, color: "#003399", content: "norwegian-flag+N", hex_basis: observed }
625
+ emblem: { present: false }
626
+ rear_differs: false
627
+ note: "VISUALLY IDENTICAL to the ordinary white plate. The class lives entirely in the letter pair."
628
+ region_encoding: none
629
+ region_encoding_note: "deliberately none — an E-series combination carries no geography at all, and reading it against no-districts.yml would produce a false location"
630
+ sources:
631
+ - "https://www.vegvesen.no/kjoretoy/eie-og-vedlikeholde/skilt/skiltserier/ # Statens vegvesen, 'Felles bokstavkombinasjoner': 'Elektriskdrevet kjøretøy: EL EK EV EB EC ED EE EF EH EJ EN EP ER EA EU'. PRIMARY, accessed 2026-08-02"
632
+ - "https://no.wikipedia.org/wiki/Kjennemerke_for_motorkj%C3%B8ret%C3%B8y_i_Norge # secondary-wikipedia (rev. 2026-07-16): the EL series introduced 1 January 1999, and the approximate dates at which each later series opened. Accessed 2026-08-02"
633
+ notes: >-
634
+ THE EV LETTER SERIES. Its purpose is enforcement, not decoration: the
635
+ E-series combination is what lets toll plazas, bus lanes, ferries and
636
+ parking enforce zero-emission privileges from the plate alone, which is
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
639
+ earlier). NOT A LEGAL CLASS, and this is an evidenced negative worth
640
+ having: neither FOR-1990-01-25-92 kapittel 2 nor kjøretøyforskriften
641
+ kapittel 39 mentions elbil, elektrisk drift or EL-kjennemerke anywhere.
642
+ The allocation is made under the § 39-1 delegation and published only on
643
+ the authority's website. PERIOD WEAKNESS, stated plainly: period.start
644
+ 1999 is `secondary-dated`. No government page states it. The best
645
+ available source is a 2016 TV2 report quoting Statens vegvesen ("De ble
646
+ innført i 1999"); the more precise 1 January 1999 appears only on
647
+ no.wikipedia, resting on that same report. A verifier should treat 1999
648
+ as the weakest date in this file. Two sibling series are recorded on the
649
+ same authority page and are NOT modelled separately, having no distinct
650
+ design or period evidence: GA for gas-driven and HY for hydrogen-driven
651
+ vehicles.
652
+
653
+ # =========================================================================
654
+ # OFF-ROAD, RALLY, DIPLOMATIC, MILITARY, TRADE, EXPORT, PERSONAL.
655
+ # =========================================================================
656
+ - id: no-offroad-1990
657
+ class: standard
658
+ categories: [tractor, machine, snowmobile, atv, truck]
659
+ period: { start: 1990 }
660
+ period_evidence: instrument-in-force
661
+ matching: strict
662
+ format:
663
+ pattern: "LL 99999"
664
+ regex: '\A[A-Z]{2} ?\d{4,5}\z'
665
+ regex_strict: '\A[ABCDEFGHJKLNPRSTUVWXYZ]{2} ?[1-9]\d{3,4}\z'
666
+ progression: "same letter allocation and same number ranges as the ordinary white plate — only the colour differs"
667
+ design:
668
+ plate: { w: 520, h: 110, unit: mm }
669
+ plate_variants:
670
+ - { w: 303, h: 85, unit: mm, note: "lite smalt, the common form on tractors and snowmobiles" }
671
+ background: { color: "#000000", finish: painted, hex_basis: spec, spec_note: "§ 2-11 tredje ledd a: 'lysegule tegn på sort bunn'" }
672
+ foreground: "#F2E14C"
673
+ band: { side: none }
674
+ emblem: { present: false }
675
+ region_encoding: no-districts.yml
676
+ sources:
677
+ - "https://lovdata.no/dokument/SF/forskrift/1990-01-25-92/KAPITTEL_2 # § 2-11 tredje ledd a: vehicles used only off public roads carry light-yellow characters on a black ground. Accessed 2026-08-02"
678
+ - "https://no.wikipedia.org/wiki/Kjennemerke_for_motorkj%C3%B8ret%C3%B8y_i_Norge # secondary-wikipedia (rev. 2026-07-16): 'anleggsskilt' — tractors, snowmobiles, airport and harbour vehicles; the same letter codes and numbering as the white plate; SVALBARD uses this type because its roads are privately owned. Accessed 2026-08-02"
679
+ notes: >-
680
+ THE ANLEGGSSKILT — black with light-yellow characters, for vehicles
681
+ approved but never driven on public roads. THE SVALBARD POINT is the one
682
+ worth knowing: Svalbard's roads are private, so every vehicle in the
683
+ archipelago carries this plate, on the ZN and FH combinations. That makes
684
+ the black plate the only Norwegian plate whose colour plus combination
685
+ together do encode a place. CLASS CAVEAT: recorded as `standard` because
686
+ _meta/classes.yml has no off-road class; se.yml takes the same course for
687
+ the Swedish terrängskoter plate.
688
+
689
+ - id: no-rally-1996
690
+ class: standard
691
+ categories: [car, motorcycle]
692
+ period: { start: 1996 }
693
+ period_evidence: instrument-in-force
694
+ matching: strict
695
+ format:
696
+ pattern: "LL 99999"
697
+ regex: '\A[A-Z]{2} ?\d{4,5}\z'
698
+ regex_strict: '\A[ABCDEFGHJKLNPRSTUVWXYZ]{2} ?[1-9]\d{3,4}\z'
699
+ design:
700
+ plate: { w: 303, h: 85, unit: mm, note: "SMALL plates only — rally cars are the one car category that takes the small plate as standard" }
701
+ background: { color: "#000000", finish: painted, hex_basis: spec, spec_note: "§ 2-11 tredje ledd e: 'hvite tegn på sort bunn'" }
702
+ foreground: "#FFFFFF"
703
+ band: { side: none }
704
+ emblem: { present: false }
705
+ region_encoding: no-districts.yml
706
+ sources:
707
+ - "https://lovdata.no/dokument/SF/forskrift/1990-01-25-92/KAPITTEL_2 # § 2-11 tredje ledd e: licensed competition vehicles exempt from engangsavgift carry white characters on black. Accessed 2026-08-02"
708
+ - "https://lovdata.no/dokument/LTI/forskrift/1996-06-14-595 # forskrift 14. juni 1996 nr. 595, in force on publication: adds the rally provision at § 2-3 nr. 3 litra e, § 2-4 nr. 3 and § 2-5 nr. 2 litra e, conditioned on the vehicle being 'lisensiert i overensstemmelse med reglement gitt av Norges Bilsportforbund'. THE DATING INSTRUMENT. Accessed 2026-08-02"
709
+ - "https://lovdata.no/dokument/LTI/forskrift/1997-06-17-768 # forskrift 17. juni 1997 nr. 768, in force 17 June 1997: extends the same black plate to licensed TRIAL and ENDURO motorcycles. Accessed 2026-08-02"
710
+ - "https://no.wikipedia.org/wiki/Kjennemerke_for_motorkj%C3%B8ret%C3%B8y_i_Norge # secondary-wikipedia (rev. 2026-07-16): the holder needs a personal licence from an NMF club and must carry vognkort, licence and club confirmation of training times; road use is limited to travel to and from training or competition. Accessed 2026-08-02"
711
+ notes: >-
712
+ THE RALLY PLATE — white on black, and instrument-dated to a day, which
713
+ makes it one of the better-evidenced entries here. period.start 1996 is
714
+ forskrift 14 June 1996 nr. 595, which took effect on publication; the
715
+ 1997 amendment extended it to trial and enduro motorcycles, so a
716
+ motorcycle rally plate cannot predate 17 June 1997 — recorded in
717
+ categories rather than split into a second series. CLASS CAVEAT:
718
+ `standard`, because _meta/classes.yml has no competition class; the plate
719
+ marks a vehicle exempt from registration tax but liable to annual tax and
720
+ third-party insurance. Note the collision hazard with no-offroad-1990:
721
+ both are BLACK, and they are told apart only by character colour — white
722
+ here, light yellow there.
723
+
724
+ - id: no-diplomatic-1990
725
+ class: diplomatic
726
+ categories: [car, van, trailer]
727
+ period: { start: 1990 }
728
+ period_evidence: instrument-in-force
729
+ matching: strict
730
+ format:
731
+ pattern: "CD 99999"
732
+ regex: '\ACD ?\d{4,5}\z'
733
+ charset: { notes: "the letters are the literal CD; five digits on vehicles, four on trailers" }
734
+ progression: >-
735
+ THE FIRST TWO DIGITS AFTER CD IDENTIFY THE MISSION, the rest is a
736
+ sequence within it — the only decodable dimension of a Norwegian
737
+ diplomatic plate. The code list itself was NOT retrieved: it is set by
738
+ Utenriksdepartementet and published in no instrument this pass could
739
+ reach, so no decode table is authored. Recorded so one can be hung off
740
+ this series later without an id change.
741
+ design:
742
+ plate: { w: 520, h: 110, unit: mm }
743
+ background: { color: "#1A85FF", finish: retroreflective, hex_basis: observed, spec_note: "§ 2-11 tredje ledd d: 'gule tegn på blå reflekterende bunn' — colour named, not numbered" }
744
+ foreground: "#FFD700"
745
+ band: { side: none }
746
+ emblem: { present: false }
747
+ region_encoding: "mission code — decode table not authored; see format.progression"
748
+ sources:
749
+ - "https://lovdata.no/dokument/SF/forskrift/1990-01-25-92/KAPITTEL_2 # § 2-11 tredje ledd d: yellow characters on a blue retroreflective ground for diplomatic vehicles. Accessed 2026-08-02"
750
+ - "https://www.vegvesen.no/kjoretoy/eie-og-vedlikeholde/skilt/skiltserier/ # 'Ambassadekjøretøy (Corps Diplomatique): CD' among the nationwide combinations. PRIMARY, accessed 2026-08-02"
751
+ - "https://no.wikipedia.org/wiki/Kjennemerke_for_motorkj%C3%B8ret%C3%B8y_i_Norge # secondary-wikipedia (rev. 2026-07-16): CD plus five digits, trailers four; the first two digits give the mission; the British, Israeli and US embassies stopped using them (2002, 2002 and 2001) and now use ordinary plates; from 1922 diplomatic cars carried an additional oval CD or CC sign in black on white while keeping ordinary numbers. Accessed 2026-08-02"
752
+ notes: >-
753
+ CORPS DIPLOMATIQUE — yellow on blue. Worth recording that the plate is not
754
+ compulsory for missions and several of the largest have abandoned it: the
755
+ US embassy from 2001, the British and Israeli embassies from 2002, all now
756
+ on ordinary white plates. So a Norwegian diplomatic vehicle is NOT
757
+ reliably identifiable from its plate, and "CD plate" is a sufficient but
758
+ not a necessary condition. period.start 1990 is the parent forskrift's
759
+ entry into force, which is the earliest date this pass can defend for the
760
+ CURRENT design; the diplomatic regime itself is far older — distinguishing
761
+ CD/CC signs were carried from 1922 alongside ordinary numbers — and the
762
+ instrument that first created a dedicated blue plate was not retrieved.
763
+
764
+ - id: no-military-1932
765
+ class: military
766
+ categories: [car, van, truck, bus, trailer, machine]
767
+ period: { start: 1932 }
768
+ period_evidence: secondary-wikipedia
769
+ matching: strict
770
+ format:
771
+ pattern: "999999"
772
+ regex: '\A\d{3,6}\z'
773
+ charset: { notes: "digits only — the ONLY Norwegian series with no letters at all; trailers likewise three to six digits" }
774
+ design:
775
+ plate: { w: 520, h: 110, unit: mm }
776
+ background: { color: "#E8A317", finish: painted, hex_basis: observed, spec_note: "§ 2-11 tredje ledd c: 'sorte tegn på gul bunn'" }
777
+ foreground: "#000000"
778
+ band: { side: none }
779
+ emblem: { present: false }
780
+ colour_disagreement: >-
781
+ RECORDED, NOT AVERAGED. The regulation says GUL (yellow);
782
+ Statens vegvesen's own plain-language colour table and no.wikipedia both
783
+ call the ground ORANGE. The hex above sits where the two readings meet
784
+ and is `observed`, not spec. Historically the ground was yellow and,
785
+ from 1945, bronze-coloured anodised aluminium — which plausibly explains
786
+ how one colour acquired two names.
787
+ region_encoding: none
788
+ region_encoding_note: "none — the military sequence is national and carries no geography"
789
+ sources:
790
+ - "https://lovdata.no/dokument/SF/forskrift/1990-01-25-92/KAPITTEL_2 # § 2-11 tredje ledd c: vehicles belonging to Forsvaret carry black characters on a yellow ground. PRIMARY for the colour. Accessed 2026-08-02"
791
+ - "https://no.wikipedia.org/wiki/Kjennemerke_for_motorkj%C3%B8ret%C3%B8y_i_Norge # secondary-wikipedia (rev. 2026-07-16): military plates from 1932, yellow and from 1945 bronze anodised, three to six digits with no letters. Accessed 2026-08-02"
792
+ notes: >-
793
+ FORSVARETS KJENNEMERKER. The distinguishing fact is structural rather than
794
+ chromatic: this is the only Norwegian series with NO LETTER GROUP at all,
795
+ so a bare three-to-six-digit string is unambiguously military in the
796
+ modern era — with ONE collision, which a parse API must handle: the export
797
+ plate (no-export-1971) is also digits-only, exactly five of them, so any
798
+ five-digit string matches BOTH series and the two can be separated only by
799
+ colour (orange/yellow ground here, white with red side fields there).
800
+ Three-, four- and six-digit strings are unambiguously military.
801
+ period.start 1932 is secondary-wikipedia; the instrument was not
802
+ retrieved, and the colour (but not the date) is confirmed by the current
803
+ regulation.
804
+
805
+ - id: no-military-test-1945
806
+ class: military
807
+ categories: [car, van, truck, machine]
808
+ period: { start: 1945 }
809
+ period_evidence: secondary-wikipedia
810
+ matching: strict
811
+ format:
812
+ pattern: "FMU 999"
813
+ regex: '\A(?:FMU|T-U) ?\d{3}\z'
814
+ charset:
815
+ notes: >-
816
+ Two fixed literal prefixes and nothing else: FMU = Forsvarsmuseet,
817
+ T-U = test og utvikling. The hyphen in T-U is an emitted separator
818
+ inside a sourced token, the same posture _meta/separators.yml records
819
+ for the Spanish military "-VE" suffix.
820
+ design:
821
+ plate: { w: 520, h: 110, unit: mm }
822
+ background: { color: "#E8A317", finish: painted, hex_basis: observed }
823
+ foreground: "#CC0000"
824
+ band: { side: none }
825
+ emblem: { present: false }
826
+ region_encoding: none
827
+ sources:
828
+ - "https://no.wikipedia.org/wiki/Kjennemerke_for_motorkj%C3%B8ret%C3%B8y_i_Norge # secondary-wikipedia (rev. 2026-07-16): military test plates from 1945, red characters on the bronze/orange military ground, three characters (FMU or T-U) plus three digits, today used by only two units. Accessed 2026-08-02"
829
+ notes: >-
830
+ MILITARY TEST PLATES — red characters on the military ground, and now
831
+ vanishingly rare: only two units still hold them, the Armed Forces Museum
832
+ (FMU) and the test-and-development organisation (T-U). Wholly
833
+ secondary-wikipedia, including the 1945 start; no instrument mentions
834
+ them, and § 2-11 tredje ledd c covers only Forsvaret's ordinary plates.
835
+ Recorded because the shape is unmistakable and a parse API meeting
836
+ "FMU 123" should not fail; a verifier should treat the whole entry as
837
+ unconfirmed.
838
+
839
+ - id: no-dealer-annual-2015
840
+ class: dealer
841
+ categories: [car, van, truck, bus, motorcycle, moped, trailer, tractor, machine]
842
+ period: { start: 2015 }
843
+ period_evidence: secondary-wikipedia
844
+ matching: strict
845
+ format:
846
+ pattern: "LLL 99"
847
+ regex: '\A[A-Z]{3} ?\d{2}T?\z'
848
+ charset:
849
+ notes: >-
850
+ Three letters and two digits since June 2015. Trailer plates append a
851
+ literal T after the digits — a suffix inside the mark, not a separate
852
+ field, which is why it sits in the regex rather than in `design`.
853
+ progression: >-
854
+ NO GEOGRAPHIC ALLOCATION AT ALL, and the authority says so: plates are
855
+ produced consecutively regardless of which trafikkstasjon ordered them.
856
+ This is the one Norwegian series where the letters are known to be
857
+ meaningless.
858
+ design:
859
+ plate: { w: 520, h: 110, unit: mm }
860
+ background: { color: "#CC0000", finish: painted, hex_basis: observed, spec_note: "§ 2-11 tredje ledd f: 'Årsprøvekjennemerke skal ha hvite tegn på rød bunn'" }
861
+ foreground: "#FFFFFF"
862
+ band: { side: none }
863
+ emblem: { present: false }
864
+ binding: business
865
+ region_encoding: none
866
+ sources:
867
+ - "https://lovdata.no/dokument/SF/forskrift/1990-01-25-92/KAPITTEL_2 # § 2-11 tredje ledd f (white on red) and §§ 2-20 to 2-23 (who may hold an årsprøvekjennemerke and how it may be used). Accessed 2026-08-02"
868
+ - "https://no.wikipedia.org/wiki/Kjennemerke_for_motorkj%C3%B8ret%C3%B8y_i_Norge # secondary-wikipedia (rev. 2026-07-16): 'Kjennemerkene består fra juni 2015 av tre bokstaver etterfulgt av to siffer'; the trailer T suffix; no geographic distribution; valid in Norway, Sweden, Denmark and Finland; not for carrying persons or goods without permission endorsed on the kjøreseddel. Accessed 2026-08-02"
869
+ notes: >-
870
+ THE ANNUAL TRADE PLATE — bound to a BUSINESS, not a vehicle, like the
871
+ German rote Kennzeichen and the Swedish saluvagnsskylt. period.start 2015
872
+ dates the CURRENT three-letter format (June 2015, secondary-wikipedia),
873
+ not the regime, which is far older; the predecessor format was not
874
+ established and no series is authored for it — a recorded gap. The
875
+ cross-border validity is unusual and worth surfacing: an årsprøve-
876
+ kjennemerke may be used in Sweden, Denmark and Finland as well as Norway.
877
+
878
+ - id: no-dealer-day-1990
879
+ class: dealer
880
+ categories: [car, van, truck, bus, motorcycle, moped, trailer, tractor, machine]
881
+ period: { start: 1990 }
882
+ period_evidence: instrument-in-force
883
+ matching: strict
884
+ format:
885
+ pattern: "LL 999"
886
+ regex: '\A[A-Z]{2} ?\d{3}\z'
887
+ charset: { notes: "two letters and three digits, with the dates of validity printed on the mark beside the number" }
888
+ design:
889
+ plate: { w: 520, h: 110, unit: mm, note: "nominal — in practice now an ADHESIVE FOIL rather than a plate, applied for the day" }
890
+ background: { color: "#CC0000", finish: painted, hex_basis: observed, spec_note: "§ 2-11 tredje ledd f: 'Dagsprøvekjennemerke skal ha sorte tegn på rød bunn'" }
891
+ foreground: "#000000"
892
+ band: { side: none }
893
+ emblem: { present: false }
894
+ extra_field: { position: right, content: "the dates on which the mark is valid" }
895
+ binding: business
896
+ region_encoding: none
897
+ sources:
898
+ - "https://lovdata.no/dokument/SF/forskrift/1990-01-25-92/KAPITTEL_2 # § 2-11 tredje ledd f: black characters on red for dagsprøvekjennemerke. Accessed 2026-08-02"
899
+ - "https://lovdata.no/dokument/LTI/forskrift/1998-06-18-589 # forskrift 18. juni 1998 nr. 589, in force 1 July 1998: adds the single-use variant — 'Engangs dagsprøvekjennemerke skal ha sorte tegn på rød bunn' — at § 2-5 nr. 2 f. Accessed 2026-08-02"
900
+ - "https://www.vegvesen.no/kjoretoy/eie-og-vedlikeholde/skilt/proveskilt/ # Statens vegvesen: dagsprøvekjennemerke costs 340 kr per 24 hours, is issued as adhesive foil, and the purchaser must be at least 16. PRIMARY, accessed 2026-08-02"
901
+ notes: >-
902
+ THE DAY TRADE PLATE — black on red, the inverse of the annual plate's
903
+ white on red, which is the whole visual distinction between them. Used by
904
+ dealers for test drives and for the gap between border clearance and
905
+ approval of an imported vehicle. period.start 1990 is the parent
906
+ forskrift's entry into force; the format (two letters + three digits) is
907
+ secondary-wikipedia and the colour is primary. Physically these are no
908
+ longer plates at all but stickers, which is why `design.plate` is marked
909
+ nominal.
910
+
911
+ - id: no-export-1971
912
+ class: export
913
+ categories: [car, van]
914
+ period: { start: 1971 }
915
+ period_evidence: secondary-wikipedia
916
+ matching: strict
917
+ format:
918
+ pattern: "99999"
919
+ regex: '\A\d{5}\z'
920
+ charset:
921
+ notes: >-
922
+ Five digits and no letters. The month and year of expiry are printed
923
+ in the RED SIDE FIELDS, not in the mark — the se.yml taxi-T posture:
924
+ a stamped field beside the number is design, not serial.
925
+ progression: >-
926
+ THE FIRST DIGIT IS THE ISSUING POLICE DISTRICT — 1 Oslo, 2 Larvik,
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
929
+ Oslo exhausted its combinations and restarted its sequence from the
930
+ beginning, so the digit does NOT support any age inference.
931
+ district_codes:
932
+ "1": Oslo
933
+ "2": Larvik
934
+ "3": Kristiansand
935
+ "4": Stavanger
936
+ "5": Bergen
937
+ "6": Trondheim
938
+ "7": Troms
939
+ design:
940
+ plate: { w: 520, h: 110, unit: mm }
941
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
942
+ foreground: "#000000"
943
+ band: { side: none }
944
+ emblem: { present: false }
945
+ side_fields:
946
+ left: { color: "#CC0000", content: "expiry month, white on red", width: 45, unit: mm }
947
+ right: { color: "#CC0000", content: "expiry year, white on red", width: 45, unit: mm }
948
+ note: "§ 2-11 tredje ledd g prescribes 'en 45 mm loddrett, rød bord på hver side' carrying the expiry date — the one Norwegian plate with borders on BOTH sides and the only one that carries its own expiry on its face"
949
+ region_encoding: "issuing police district — inline in format.district_codes"
950
+ sources:
951
+ - "https://lovdata.no/dokument/SF/forskrift/1990-01-25-92/KAPITTEL_2 # § 2-11 tredje ledd g: the 45 mm vertical red border on each side, bearing the expiry date, for temporarily imported/exported vehicles. PRIMARY for the design. Accessed 2026-08-02"
952
+ - "https://no.wikipedia.org/wiki/Kjennemerke_for_motorkj%C3%B8ret%C3%B8y_i_Norge # secondary-wikipedia (rev. 2026-07-16): factory-new duty-free vehicles bought for export; issued by the POLICE, mostly Oslo politidistrikt; the seven district digits; introduced in 1971 replacing the Q plates; Oslo's series restarted in 2004. Accessed 2026-08-02"
953
+ notes: >-
954
+ THE EXPORT PLATE, and the direct successor to the pre-1971 Q series for
955
+ uncustomed vehicles (see no-counties-1913.yml, letter Q) — which is a
956
+ genuinely satisfying continuity: the same job, moved from a letter to a
957
+ colour scheme, on the same 1971 date as the general reform. Issued by the
958
+ POLICE rather than by Statens vegvesen, uniquely in this file.
959
+ period.start 1971 is secondary-wikipedia; the design is primary. The
960
+ district digit is the only Norwegian region encoding outside the two
961
+ letter tables, and it decodes the ISSUING OFFICE, not a destination.
962
+ PARSE COLLISION, stated on both sides: a bare five-digit string matches
963
+ no-military-1932 as well as this series, because both are digits-only.
964
+ Nothing in the string separates them — only the ground colour and this
965
+ plate's red expiry borders do.
966
+
967
+ - id: no-personal-2017
968
+ class: personalized
969
+ categories: [car, van, truck, bus, motorcycle, trailer]
970
+ period: { start: 2017 }
971
+ period_evidence: instrument-in-force
972
+ matching: strict
973
+ format:
974
+ pattern: "LLLLLLL"
975
+ regex: '\A[A-Z0-9]{2,7}\z'
976
+ regex_statutory: '\A[A-Z0-9](?:[A-Z0-9]| ){0,5}[A-Z0-9]\z'
977
+ charset:
978
+ notes: >-
979
+ § 2a-2, verbatim: "minst to og maksimalt sju norske bokstaver eller
980
+ arabiske tall. Mellomrom er å anse som et tegn." A SPACE COUNTS AS A
981
+ CHARACTER — which is why this series carries a `regex_statutory`: the
982
+ outer legal bound admits an interior space, while `regex` describes
983
+ the ordinary space-free mark. It is the one place in this file where
984
+ _meta/separators.yml's emitted SPACE is serial-significant rather
985
+ than a group gap, and a separator-stripping consumer will silently
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
988
+ affects only this series.
989
+ The authority narrows the statute further by plate size — seven
990
+ characters fit the 52 x 11 cm plate, six the small, US and motorcycle
991
+ plates. Both bounds are cited.
992
+ progression: "owner-chosen, subject to refusal; the mark is PERSONAL and does not follow the vehicle on sale, though the holder may move it to another vehicle he owns"
993
+ design:
994
+ plate: { w: 520, h: 110, unit: mm }
995
+ plate_variants:
996
+ - { w: 303, h: 85, unit: mm, note: "small plate — six characters maximum" }
997
+ - { w: 303, h: 153, unit: mm, note: "US-skilt — six characters maximum" }
998
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
999
+ foreground: "#000000"
1000
+ band: { side: left, color: "#003399", content: "norwegian-flag+N", hex_basis: observed }
1001
+ emblem: { present: false }
1002
+ rear_differs: false
1003
+ note: "also issued on the GREEN varebil klasse 2 ground — recorded as a variant on no-green-varebil-1990 rather than duplicated here"
1004
+ region_encoding: none
1005
+ region_encoding_note: "none by construction — the characters are the owner's choice"
1006
+ sources:
1007
+ - "https://lovdata.no/dokument/SF/forskrift/1990-01-25-92/KAPITTEL_2a # kapittel 2a, §§ 2a-1 to 2a-10: application, composition, issue and use, loss, renewal, sale of the vehicle, transfer, re-use, revocation and change of combination. Footnote: 'Kapitlet tilføyd ved forskrift 12 juni 2017 nr. 722 (i kraft 15 juni 2017).' Accessed 2026-08-02"
1008
+ - "https://lovdata.no/dokument/LTI/forskrift/2017-06-12-722 # the introducing forskrift: § 2a-2 'minst to og maksimalt sju norske bokstaver eller arabiske tall. Mellomrom er å anse som et tegn'; § 2a-5 renewal 'med en periode på 10 år'; the fee is left to Vegdirektoratet. THE DATING INSTRUMENT. Accessed 2026-08-02"
1009
+ - "https://www.vegvesen.no/kjoretoy/eie-og-vedlikeholde/skilt/personlig-skilt/ # Statens vegvesen: 9 000 kr, the right runs 10 years with the first renewals due in summer 2027, applicant must be 18 and must own the vehicle, no co-owners, leased vehicles ineligible. PRIMARY, accessed 2026-08-02"
1010
+ notes: >-
1011
+ PERSONAL KJENNEMERKER, and Norway came to them late — 15 JUNE 2017, dated
1012
+ to the day by the forskrift that inserted kapittel 2a. The right lasts ten
1013
+ years and is renewable, the fee was 9 000 kr at introduction, and the
1014
+ revenue is earmarked for road-safety measures. The mark attaches to the
1015
+ PERSON, not the vehicle: on sale it comes off and the vehicle reverts to
1016
+ an ordinary number, which makes `binding` genuinely ambiguous for this
1017
+ series alone — it is recorded at jurisdiction level as `vehicle` because
1018
+ every other Norwegian series is.