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,708 @@
1
+ # plates/eg.yml — Egypt (the plates spec gate L5).
2
+ #
3
+ # THE ONE THING TO READ FIRST: **NO EGYPTIAN INSTRUMENT PRINTS THE SERIAL MASK
4
+ # OF THE CURRENT PLATE, AND THAT IS A SOURCED STRUCTURAL CONCLUSION RATHER THAN
5
+ # A RESEARCH FAILURE.** Article 13 of the Traffic Law, as replaced by Law
6
+ # 121/2008, expressly DELEGATES "شكل اللوحات، والبيانات التى تتضمنها" — the
7
+ # shape of the plates and THE DATA THEY CONTAIN — to a decision of the Minister
8
+ # of Interior. Law 17/2024 re-delegated the same list to "the executive
9
+ # regulation of this Law". The only executive regulation the Ministry actually
10
+ # publishes is Interior Minister's Decision 2777 of **2000**, which predates the
11
+ # current design by eight years and describes a DIFFERENT, LEGACY plate.
12
+ #
13
+ # So every mask-bearing series in this file is `matching: recall-only`. This is
14
+ # the Nigeria shape from `plates/ng.yml` — an instrument that regulates colour,
15
+ # material, mounting, dimensions and deposits in detail and never once prints
16
+ # the grammar — and Egypt is the second jurisdiction in this corpus to show it.
17
+ #
18
+ # SEVEN STRUCTURAL FACTS
19
+ #
20
+ # 1. THE LATIN LINE IS A POSITIONAL GLOSS, NOT A TRANSLITERATION OF THE STRING.
21
+ # Egyptian plates print the Arabic serial on top and a smaller Latin/Western
22
+ # rendering beneath. Each Latin letter sits DIRECTLY BENEATH the Arabic
23
+ # letter occupying the same physical slot. Arabic reads right-to-left, so:
24
+ # **the Arabic letter sequence read RTL is the exact REVERSE of the
25
+ # Latin letter sequence read LTR.**
26
+ # Established photographically, twice, glyph by glyph (corpus D-1 and D-3 in
27
+ # the dossier). DIGITS ARE NOT REVERSED — Arabic-Indic numerals are written
28
+ # most-significant-first in both scripts, confirmed on the same photographs.
29
+ # THIS FILE STORES THE LATIN RENDERING IN PRINTED LEFT-TO-RIGHT ORDER, and
30
+ # `script:` below carries the map and the reversal rule. See fact 2 for why
31
+ # that is a recording choice and not a fold.
32
+ #
33
+ # 2. WHY THE LATIN RENDERING IS THE RECORDED ONE, AND WHY THAT IS NOT FOLDING.
34
+ # `plates/ua.yml` records a HOMOGLYPH fold: its Latin form is our own
35
+ # transliteration of Cyrillic letters that happen to be drawn identically.
36
+ # Egypt is a stronger case, not a weaker one — the Latin rendering is not
37
+ # ours at all, it is PRINTED ON THE PLATE BY THE ISSUING AUTHORITY. We record
38
+ # one of two official renderings and publish the other beside it.
39
+ # Three further reasons, stated so a reviewer can attack them:
40
+ # (a) the map is INJECTIVE — 17 Arabic letters to 17 DISTINCT Latin letters
41
+ # (A B C D E F G H K L M N R S T W Y), so nothing is destroyed and the
42
+ # reverse map below is exact. This was checked, not assumed; it is the
43
+ # Croatian ŠI→SI test and Egypt passes it.
44
+ # (b) the pattern DSL cannot express the alternative. `L` generates from a
45
+ # hardcoded Latin A-Z in `scripts/lint_plates.rb` and `[A-Z]` expands
46
+ # to 26 Latin letters that must be in the declared alphabet, so a file
47
+ # whose regexes were Arabic would fail its own gate on every line.
48
+ # (c) the Latin line is OPTIONAL and is being dropped — corpus D-4, an
49
+ # in-service plate, has no Latin line at all. So a regex must never
50
+ # REQUIRE it, and none here does; what is recorded is the rendering,
51
+ # not a claim that both lines are always present.
52
+ #
53
+ # 3. THE LETTER SET IS 17, AND THE "16" IN CIRCULATION IS TRACEABLE TO NOTHING.
54
+ # Both the English and Arabic Wikipedia tables carry exactly 17 rows and
55
+ # neither article states a count in prose. No source asserting 16 was found.
56
+ # Corroborating arithmetic, recorded as corroboration and NOT as a sourced
57
+ # rule: the Arabic alphabet has 28 letters, 28 − 17 = 11 excluded, and ten of
58
+ # those eleven are precisely the dotted twin of a retained letter
59
+ # (ب keeps / ت ث drop; ج / ح خ; د / ذ; ر / ز; س / ش; ص / ض; ط / ظ; ع / غ),
60
+ # leaving only ك unexplained. The set is internally consistent with a
61
+ # one-letter-per-visually-confusable-group rule. NO INSTRUMENT ENUMERATES IT.
62
+ #
63
+ # 4. THE "OFFENSIVE WORDS" EXCLUSION RULE DOES NOT EXIST. FOLKLORE, REFUTED.
64
+ # The story is real and the rule is not. Because the new plates print three
65
+ # SEPARATE letters, Egyptians read them as joined words, and in 2009 owners
66
+ # threatened litigation over the results. The Traffic Department's answer,
67
+ # quoted contemporaneously: «هذه الأحرف منفصلة، ولا ينبغي اعتبارها متصلة ...
68
+ # المسألة ليست تهريجا، ونحن لا نمزح في عملنا» — the letters are separate,
69
+ # they should not be treated as joined, and officials COMPLETELY REJECTED
70
+ # exchanging the plates. The stated basis for the 17-letter restriction is
71
+ # VISUAL CONFUSABILITY, not decency. No regex here excludes any combination.
72
+ #
73
+ # 5. THE GOVERNORATE IS PARTIALLY ENCODED — WHICH REFUTES THE COMMON BELIEF —
74
+ # BUT NO DECODE TABLE SHIPS. The widely repeated claim that Egyptian letters
75
+ # are purely sequential and carry no geography is WRONG. The General Traffic
76
+ # Department described the semantics itself in 2009: one letter for the
77
+ # governorate of the owner's RESIDENCE, one for the traffic unit, one for the
78
+ # registration. Law 66/1973 art. 2(2), as replaced in 2008, ties the
79
+ # competent traffic department to the governorate of the applicant's
80
+ # residence — statutory backing for the link. Photographic corroboration
81
+ # exists in exactly one case (corpus D-4, an Aswan tourist bus whose letters
82
+ # read RTL are ص و ن, matching ص و = Aswan).
83
+ # IT STILL DOES NOT SHIP. The only letter→governorate table is a 2014 press
84
+ # article, the Arabic Wikipedia article is a near-verbatim copy of it and is
85
+ # therefore NOT independent corroboration, and the allocating instrument was
86
+ # never found. The encoding is also PARTIAL by its own terms: Cairo and Giza
87
+ # are expressly unrestricted («لا تتقيد بأحرف معينة»). A table that is
88
+ # press-sourced, partially inapplicable and unpinned is exactly the kind of
89
+ # reproducible-everywhere artifact §2.4 forbids. V5.
90
+ #
91
+ # 6. THE COLOUR "CONTEST" IS NOT A CONTEST — IT IS TWO ERAS AND ONE OMISSION.
92
+ # Sources appear to disagree about brown: a 2014 press piece calls it
93
+ # "commercial", the Mint's own specimen labels it «مؤقت» (temporary), and
94
+ # English Wikipedia lists neither. Decision 2777 art. 340 سادسا settles it —
95
+ # the brown plate is ONE combined statutory category, «لوحات التجارى
96
+ # والمؤقت», commercial AND temporary. Each secondary source was reporting one
97
+ # half of one category. Recorded here because a reviewer who meets the two
98
+ # halves separately will otherwise "fix" the file in the wrong direction.
99
+ # ⚠ AND: the Ministry's OWN ENGLISH TRANSLATION of art. 340 SILENTLY OMITS
100
+ # category سادسا. Anyone working from the English page concludes brown does
101
+ # not exist. Use the Arabic.
102
+ #
103
+ # 7. NO HEX IS ASSERTED ANYWHERE IN THIS FILE. Article 340 names colours in
104
+ # words («أبيض» «أحمر» «أخضر» «أصفر ليمونى» «برتقالى» «بنى» «رمادى») and
105
+ # words are not hex. The modern band colours have no instrument at all —
106
+ # only the Egyptian Mint's ten specimen images. RGB values sampled from those
107
+ # JPEGs are recorded in `band_color_observed:` notes as a reproducibility aid
108
+ # for the verifier, deliberately NOT in `design.band.color`, because a value
109
+ # sampled off a JPEG render of a specimen is not a published colour spec and
110
+ # must not enter the dataset wearing one's clothes.
111
+ #
112
+ # §VERIFIER — open questions in priority order
113
+ # V1. THE BIG ONE: the post-2008 implementing decision required by art. 13.
114
+ # Between 2008 and 2024 it was a Minister-of-Interior decision; the MOI
115
+ # portal publishes only 2777/2000. Find it and most of this file rises a
116
+ # tier. manshurat.org search returns 403; cc.gov.eg is now subscription-
117
+ # gated.
118
+ # V2. An instrument for the 17-letter set. Wikipedia-tier only today.
119
+ # V3. Current plate DIMENSIONS. Decision 2777 gives 40x16 cm for the LEGACY
120
+ # plate; 35x17 cm for the current one is Wikipedia-only. Unreconciled, so
121
+ # NO dimension ships on the 2008 series.
122
+ # V4. The ي / ى / ی codepoint question — both Wikipedia tables print
123
+ # ی U+06CC (Farsi yeh), the underlying Arabic press writes ي U+064A, and
124
+ # Egyptian print commonly uses ى U+0649. Declared as U+064A here; the
125
+ # ambiguity is unresolved AT SOURCE and is recorded, not hidden.
126
+ # V5. The letter→governorate table and its allocating instrument (fact 5).
127
+ # V6. The diplomatic 2-digit right-hand group — presumably a mission/country
128
+ # code. No decode table sourced.
129
+ # V7. Export, dealer/trade, historic and military series — not investigated
130
+ # for want of any source. The plate VALIDITY PERIOD is delegated by
131
+ # art. 13 («مدة صلاحيتها») and its value is unknown.
132
+ # V8. «تحت الطلب» is CONTESTED and therefore ships as NO series: Decision 2777
133
+ # art. 340 files it under passenger vehicles meaning «سيارات نقل الموتى»
134
+ # (HEARSES), while the Mint's black specimen glosses it "on-call". One
135
+ # term, two incompatible readings, no instrument for the modern plate.
136
+ # V9. Live-site access: `www.moi.gov.eg` is a parked placeholder and
137
+ # `traffic.moi.gov.eg` returns a 246-byte stub from outside Egypt. Use the
138
+ # Wayback timestamps cited on each source line, not the live URLs.
139
+ jurisdiction: eg
140
+
141
+ # The EXACT characters Egyptian plates print, as a union of BOTH official
142
+ # renderings — §2.6 decision 2 says this key declares what the plate shows, and
143
+ # an Egyptian plate shows all four blocks below. Declaring REPLACES the global
144
+ # set, so the Latin A-Z and 0-9 must be present or every regex in this file
145
+ # would fail its own gate (see header fact 2b).
146
+ # Latin A-Z + Western 0-9 .... the lower sub-line, and the recorded rendering
147
+ # Arabic letters (17) ........ أ U+0623 ب U+0628 ج U+062C د U+062F
148
+ # ر U+0631 س U+0633 ص U+0635 ط U+0637
149
+ # ع U+0639 ف U+0641 ق U+0642 ل U+0644
150
+ # م U+0645 ن U+0646 ه U+0647 و U+0648
151
+ # ي U+064A
152
+ # Arabic-Indic digits ........ ٠-٩ U+0660-U+0669 (NOT the Extended
153
+ # Arabic-Indic U+06F0-U+06F9 Persian/Urdu forms)
154
+ # TWO CODEPOINT TRAPS, both measured rather than transcribed by eye:
155
+ # * ه is U+0647 ALONE. Both Wikipedia tables write it «هـ» = U+0647 followed
156
+ # by U+0640 ARABIC TATWEEL. The tatweel is PRESENTATIONAL — it forces the
157
+ # initial form so the isolated letter prints with a tail. U+0640 is NOT part
158
+ # of the letter and must never enter a character class or a key.
159
+ # * ي is declared as U+064A, and this is UNRESOLVED AT SOURCE (V4).
160
+ serial_alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789أبجدرسصطعفقلمنهوي٠١٢٣٤٥٦٧٨٩"
161
+ serial_alphabet_evidence: >-
162
+ The Latin and Western halves are directly observed on the plate and are not in
163
+ doubt. The 17 Arabic letters are `secondary-wikipedia` — no Egyptian
164
+ instrument enumerates them (V2), and the corroborating dotted-twin arithmetic
165
+ in header fact 3 is arithmetic, not authority. The declaration is deliberately
166
+ WIDER than the issuing grammar in its Latin half: all 26 Latin letters are
167
+ declared although only the 17 in `script.correspondence` are believed to
168
+ appear, because a too-narrow alphabet silently rejects real plates while a
169
+ too-wide one merely under-rejects, and the narrowing is the direction that
170
+ cannot be sourced.
171
+
172
+ script:
173
+ printed: "Arabic letters + Arabic-Indic digits (upper line); Latin letters + Western digits (lower sub-line)"
174
+ recorded_as: "the LATIN rendering, in printed left-to-right order (digits group, then letters group)"
175
+ recorded_as_rationale: >-
176
+ See header facts 1 and 2. The Latin rendering is printed by the authority,
177
+ is what OCR and a consumer's keyboard produce, and is the only rendering the
178
+ pattern DSL can express. It is NOT a transliteration produced by us.
179
+ letter_order_warning: >-
180
+ READ THIS BEFORE COMPARING OUR SERIAL TO ANY ARABIC-ORDER SOURCE. The Latin
181
+ letters are POSITION-ALIGNED with the Arabic letters, not sequence-aligned.
182
+ Reading the Latin line left-to-right therefore yields the Arabic letter
183
+ sequence REVERSED. A consumer that OCRs the Arabic line and reads it in
184
+ proper right-to-left order will produce the reverse of the string this file
185
+ records, and both strings are correct renderings of the same registration.
186
+ Digits are NOT affected — numerals run most-significant-first in both
187
+ scripts.
188
+ block_order: >-
189
+ Printed left-to-right the DIGIT group is on the left and the LETTER group on
190
+ the right, separated by a holographic security strip on current production.
191
+ In proper Arabic reading order (right-to-left) the LETTERS come first. Both
192
+ statements are true; they describe different axes.
193
+ correspondence:
194
+ # Arabic letter (codepoint) -> the Latin letter printed beneath it.
195
+ # INJECTIVE over all 17 — verified, and that is what makes the recorded
196
+ # rendering lossless (header fact 2a). Latin letters NEVER used: I J O P Q
197
+ # U V X Z.
198
+ "أ U+0623": A
199
+ "ب U+0628": B
200
+ "ج U+062C": G
201
+ "د U+062F": D
202
+ "ر U+0631": R
203
+ "س U+0633": S
204
+ "ص U+0635": C
205
+ "ط U+0637": T
206
+ "ع U+0639": E
207
+ "ف U+0641": F
208
+ "ق U+0642": K
209
+ "ل U+0644": L
210
+ "م U+0645": M
211
+ "ن U+0646": N
212
+ "ه U+0647": H
213
+ "و U+0648": W
214
+ "ي U+064A": Y
215
+ correspondence_evidence: "secondary-wikipedia (en + ar, identical tables), corroborated glyph-by-glyph on the photographs in the dossier corpus"
216
+
217
+ authority:
218
+ name: "الإدارة العامة للمرور — General Department of Traffic, Ministry of Interior (وزارة الداخلية)"
219
+ url: "https://traffic.moi.gov.eg/Arabic/OurServices/InfoServices/InteriorMinisterDecision/Pages/license-plates-taxes-traffic-fees.aspx"
220
+ authority_evidence: >-
221
+ Law 66/1973 art. 13 vests issuance in «إدارة المرور المختصة» and makes the
222
+ plates STATE PROPERTY sealed with the State seal. The url is the Traffic
223
+ Department's own publication of Interior Minister's Decision 2777/2000,
224
+ not a ministry landing page. It is geo-restricted — use the Wayback
225
+ timestamps on the source lines. Note the ministry root www.moi.gov.eg
226
+ currently serves a parked placeholder.
227
+ manufacturer:
228
+ name: "مصلحة سك العملة — Egyptian Mint Authority, Ministry of Finance"
229
+ url: "http://www.egyptmint.gov.eg/Home/Plates"
230
+ note: >-
231
+ A SEPARATE body from the issuing authority, and the best available source
232
+ for the modern band colours because it publishes ten blank class
233
+ specimens. Its own page states the plates are coded «وفق نظام تكويد معين
234
+ تم الأتفاق عليه بين وزارة المالية ... ووزارة الداخلية» — according to a
235
+ coding system AGREED BETWEEN the two ministries. That sentence is itself
236
+ evidence that the serial grammar is an inter-ministerial administrative
237
+ arrangement rather than a published legal rule, which is header fact 0
238
+ restated by the body that makes the plates.
239
+
240
+ binding: vehicle
241
+ binding_note: >-
242
+ Law 66/1973 art. 13: the plates are «ملك الدولة» — State property, sealed with
243
+ the State seal. Art. 14, as replaced by Law 121/2008: «لا يجوز استعمال اللوحات
244
+ إلا للمركبة المنصرفة لها» — plates may be used only for the vehicle they were
245
+ issued to, may not be swapped, and their data may not be altered. Art. 12(1):
246
+ the licence is valid only for the vehicle it was issued for.
247
+
248
+ instrument:
249
+ act:
250
+ citation: "قانون المرور الصادر بالقانون رقم 66 لسنة 1973 — Traffic Law, Law No. 66 of 1973"
251
+ url: "https://manshurat.org/sites/default/files/%D9%82%D8%A7%D9%86%D9%88%D9%86%20%D8%B1%D9%82%D9%85%2066%20%D9%84%D8%B3%D9%86%D8%A9%2073%20-%D8%A7%D9%84%D9%85%D8%B1%D9%88%D8%B1.pdf"
252
+ relevant_articles: >-
253
+ Art. 13 (two metal plates; State property; the Minister determines shape,
254
+ DATA CONTAINED, security marks, validity, mounting, deposit) — the
255
+ delegation that is the whole reason this file is recall-only. Art. 14
256
+ (plates usable only on the vehicle issued to). Art. 2(2) (competent
257
+ traffic department = that of the applicant's governorate of residence).
258
+ Art. 12 (licence vehicle-specific; vehicle may travel countrywide).
259
+ amendment_2008:
260
+ citation: "القانون رقم 121 لسنة 2008 — Law No. 121 of 2008, الجريدة الرسمية العدد 23 مكرر، 9 يونية 2008"
261
+ url: "https://manshurat.org/sites/default/files/docs/pdf/015473.pdf"
262
+ effect: >-
263
+ REPLACED art. 13 in its entirety and re-delegated the shape, the data, the
264
+ security marks, the validity period and the mounting to a decision of the
265
+ Minister of Interior, raising the deposit ceiling to EGP 100. This is the
266
+ legal act that enables the current design. It does NOT describe the
267
+ design.
268
+ amendment_2024:
269
+ citation: "القانون رقم 17 لسنة 2024 — Law No. 17 of 2024, الجريدة الرسمية العدد 13 تابع (أ)، 28 مارس 2024"
270
+ url: "https://manshurat.org/sites/default/files/ldd_13tb_-_mwmn-2-7.pdf"
271
+ effect: >-
272
+ Moved the delegatee from "the Minister of Interior by his decision" to
273
+ "the executive regulation of this Law", and introduced a plate-development
274
+ charge of up to EGP 600. THE DELEGATION STILL ENUMERATES NO LETTERS AND NO
275
+ DIGITS. Also globally replaces «نارية» with «آلية» for motorcycles. This
276
+ is a live change inside the last three years and is recorded as such; it
277
+ is NOT an era boundary, because a change in who writes the specification
278
+ is not evidence that the specification changed.
279
+ regulation:
280
+ citation: "قرار وزير الداخلية رقم 2777 لسنة 2000 — Interior Minister's Decision No. 2777 of 2000"
281
+ url: "https://traffic.moi.gov.eg/Arabic/OurServices/InfoServices/InteriorMinisterDecision/Pages/license-plates-taxes-traffic-fees.aspx"
282
+ relevant_articles: "340 (colours, dimensions, classes) · 341 (issued per vehicle type/use) · 342 (material and layout) · 343 (deposits) · 344-345 (mounting) · 346-348 (surrender)"
283
+ caution: >-
284
+ ⚠ THE INSTRUMENT IN FORCE DESCRIBES A PLATE THAT IS NO LONGER ISSUED.
285
+ Art. 342's layout — licence type + issuing authority + numbers in Arabic
286
+ on the RIGHT, licence type + numbers + «مدلول المحافظة باللغة الإنجليزية»
287
+ (governorate indicator in ENGLISH) on the LEFT — is the PRE-2008 plate,
288
+ confirmed exactly by a photographed legacy plate. Art. 340's whole-plate
289
+ background colours and 40x16 cm dimensions are likewise legacy. DO NOT
290
+ derive the modern mask, the modern colours or the modern dimensions from
291
+ Decision 2777. Its non-repeal is not evidence the legacy format is still
292
+ issued; it is an un-updated regulation.
293
+
294
+ series:
295
+
296
+ # =========================================================================
297
+ # THE ORDINARY MARK, 2008-. One layout, one grammar, one period; the
298
+ # civilian classes below differ from it only in the colour of the top band
299
+ # and in which vehicles they are issued to. Each is its own series because
300
+ # `class:` is a first-class per-series field and these are distinct legal
301
+ # licence classes — the `in-transport-1989` precedent, where the goods
302
+ # distinction rides on `categories:` rather than on a new class term.
303
+ # =========================================================================
304
+ - id: eg-standard-2008
305
+ class: standard
306
+ categories: [car, van]
307
+ period: { start: 2008 }
308
+ period_evidence: enabling-instrument
309
+ period_note: >-
310
+ 2008 = Law 121/2008, gazetted 9 June 2008, which replaced art. 13 and
311
+ enabled the redesign. AN ENABLING-INSTRUMENT DATE, NOT A FIRST-ISSUE DATE,
312
+ and the two are deliberately kept apart. The separate and weaker
313
+ first-issue claim is "August 2008" (secondary-wikipedia), corroborated by
314
+ contemporaneous press in August 2009 describing the plates as adopted
315
+ «منذ ما يقرب من عام» — about a year earlier — and by the Egyptian Mint
316
+ dating the secure-plate manufacturing award to December 2007. None of
317
+ those is instrument-grade and none is recorded as the period start.
318
+ matching: recall-only
319
+ matching_note: >-
320
+ recall-only for TWO independent reasons, either of which alone would be
321
+ enough. (1) No instrument prints the mask — art. 13 delegates "البيانات
322
+ التى تتضمنها" away and Decision 2777/2000 describes the legacy plate
323
+ (header fact 0). (2) The regex is a genuine UNION across three
324
+ governorate-specific shapes, so it accepts combinations no governorate
325
+ issues — 3 digits with 2 letters, for instance, is matched here and is not
326
+ an issued shape anywhere. A match is a shape hit and nothing more.
327
+ format:
328
+ # Recorded in the LATIN rendering, printed left-to-right: digits group
329
+ # then letters group (see `script:`). The gap is the emitted SPACE of
330
+ # §2.6 and is optional in the regex, because the two groups are separated
331
+ # by a holographic strip rather than by a printed character.
332
+ pattern: "9999 LLL"
333
+ regex: '\A\d{3,4} ?[A-Z]{2,3}\z'
334
+ charset:
335
+ used: "A B C D E F G H K L M N R S T W Y"
336
+ excluded: [I, J, O, P, Q, U, V, X, Z]
337
+ excluded_basis: >-
338
+ These nine Latin letters are absent because no Arabic letter in the
339
+ 17-letter set maps to them (see `script.correspondence`), NOT because
340
+ any instrument excludes them. The restriction is therefore carried
341
+ here as documentation and NOT in a `regex_strict` — `matching:
342
+ recall-only` forbids a strict twin, and rightly so: narrowing on a
343
+ Wikipedia-tier alphabet is exactly the unsourced narrowing that
344
+ silently rejects real plates.
345
+ progression: >-
346
+ Not sourced. The General Traffic Department described the three letters
347
+ in 2009 as a code — one for the owner's governorate of residence, one
348
+ for the traffic unit, one for the registration — but no allocating rule
349
+ or sequence was published. FOLKLORE, FLAGGED AND NOT ASSERTED: the
350
+ common claim that the letters simply advance alphabetically nationwide
351
+ is unsupported and is inconsistent with the governorate semantics the
352
+ authority itself gave.
353
+ variants:
354
+ - format: { pattern: "999 LLL" }
355
+ note: >-
356
+ CAIRO (القاهرة) — three digits, three letters. Cairo and Giza are
357
+ expressly NOT restricted to particular letters; officials choose
358
+ freely subject only to non-repetition.
359
+ - format: { pattern: "9999 LL" }
360
+ note: >-
361
+ GIZA (الجيزة) — four digits, TWO letters. The only shape in the file
362
+ with a two-letter group, and the reason the parent regex quantifies
363
+ [A-Z]{2,3} rather than fixing three.
364
+ design:
365
+ band:
366
+ side: top
367
+ content: "coloured band bearing EGYPT (left), the national emblem (centre) and مصر (right)"
368
+ band_note: >-
369
+ The class-distinguishing colour of the modern plate lives in this TOP
370
+ BAND, not in the plate ground — which is the structural difference
371
+ between the 2008 design and the art. 340 legacy design, where the whole
372
+ plate carried the colour.
373
+ band_color_words: "light blue (الملاكى / private) — the Egyptian Mint's own class label on its specimen"
374
+ band_color_observed: >-
375
+ RGB ~ABD6E8 sampled from the Mint's blank specimen JPEG. RECORDED HERE
376
+ AND DELIBERATELY NOT IN `design.band.color`: a value sampled off a JPEG
377
+ render of a specimen is not a published colour spec (header fact 7).
378
+ background_note: "white ground, black characters — observed; art. 340's white/black is for the LEGACY passenger plate and is not carried over as a claim about this design"
379
+ material: >-
380
+ Decision 2777 art. 342 (still in force, and consistent with current
381
+ practice): pure aluminium, thickness not less than 1 mm, covered with a
382
+ reflective layer. The Egyptian Mint independently describes reflective
383
+ security marks and a capacity of roughly 2,000 pairs a day.
384
+ security: "a holographic strip divides the digit and letter groups on current production — observed on the dossier corpus, no instrument"
385
+ dimensions_note: >-
386
+ NO DIMENSION SHIPS. Decision 2777 art. 340 gives 40 x 16 cm, but for the
387
+ LEGACY plate; 35 x 17 cm for the current plate is Wikipedia-only and has
388
+ no instrument. Unreconciled — V3.
389
+ rear_differs: false
390
+ mounting: "Law 66/1973 art. 13: one plate front, one rear. Trailers and semi-trailers carry ONE plate, at the rear."
391
+ region_encoding: none
392
+ region_encoding_mechanism: >-
393
+ `none` here means NO TABLE SHIPPED, not "no geography encoded" — the
394
+ distinction matters and header fact 5 sets out why the common "no
395
+ geography" belief is refuted and why the table still cannot ship. The
396
+ encoding is partial (Cairo and Giza are unrestricted), press-sourced, and
397
+ its allocating instrument was never found. V5.
398
+ notes: >-
399
+ The ordinary Egyptian mark. Issuance is NATIONAL, administered by
400
+ governorate traffic offices — this is expressly NOT the UAE emirate-level
401
+ model: one national law, one national authority, and art. 12 makes the
402
+ registration valid countrywide.
403
+ sources:
404
+ - "https://manshurat.org/sites/default/files/docs/pdf/015473.pdf # Law 121/2008 replacing art. 13: the Minister determines the shape and THE DATA THE PLATES CONTAIN — the delegation that makes this series recall-only; Official Gazette 23 bis, 9 June 2008, p.5 — accessed 2026-09-12"
405
+ - "https://manshurat.org/sites/default/files/%D9%82%D8%A7%D9%86%D9%88%D9%86%20%D8%B1%D9%82%D9%85%2066%20%D9%84%D8%B3%D9%86%D8%A9%2073%20-%D8%A7%D9%84%D9%85%D8%B1%D9%88%D8%B1.pdf # Law 66/1973 arts. 2(2), 12, 13, 14 — plates are State property, vehicle-bound, governorate of residence determines the competent office — accessed 2026-09-12"
406
+ - "https://web.archive.org/web/20251010130322/https://traffic.moi.gov.eg/Arabic/OurServices/InfoServices/InteriorMinisterDecision/Pages/license-plates-taxes-traffic-fees.aspx # Decision 2777/2000 arts. 340, 342, 343 — legacy colours and dimensions, aluminium >= 1 mm reflective; the Arabic text, because the ministry's own English omits category سادسا — accessed 2026-09-12"
407
+ - "http://www.egyptmint.gov.eg/Home/Plates # Egyptian Mint Authority: the ten class specimens and the inter-ministerial coding statement — accessed 2026-09-12"
408
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Egypt # secondary-wikipedia: the 17-letter table and its Latin correspondence; the abandonment of the Latin sub-line for legibility — accessed 2026-09-12"
409
+ - "https://web.archive.org/web/20181001220455/http://www.masrawy.com/Autos/autos_news/details/2014/12/3/401710/ # press, 3 Dec 2014: the letter-group shapes per governorate (Cairo 3+3, Giza 4+2, others 4+3) and the Cairo/Giza non-restriction — the ONLY source for the masks, which is why this series is recall-only — accessed 2026-09-12"
410
+
411
+ - id: eg-transport-2008
412
+ class: standard
413
+ categories: [truck, van, trailer, tractor, machine]
414
+ period: { start: 2008 }
415
+ period_evidence: enabling-instrument
416
+ period_note: "as eg-standard-2008 — Law 121/2008, an enabling-instrument date"
417
+ matching: recall-only
418
+ matching_note: "as eg-standard-2008: no instrument prints the mask, and the regex unions the governorate shapes"
419
+ format:
420
+ pattern: "9999 LLL"
421
+ regex: '\A\d{3,4} ?[A-Z]{2,3}\z'
422
+ design:
423
+ band: { side: top, content: "red band bearing EGYPT / emblem / مصر" }
424
+ band_color_words: "red (النقل / goods transport) — Mint class label «ترخيص نقل»"
425
+ band_color_observed: "RGB ~DC2804 sampled from the Mint specimen JPEG — not a colour spec, see header fact 7"
426
+ legacy_note: >-
427
+ Decision 2777 art. 340 ثانيا put this class on a RED GROUND with WHITE
428
+ characters at 40 x 16 cm, grouping goods transport with trailers, heavy
429
+ equipment (الآلات under art. 30 of Law 66/1973), agricultural tractors
430
+ and agricultural trailers. The red survives the redesign as the band
431
+ colour; the whole-plate red does not.
432
+ region_encoding: none
433
+ notes: >-
434
+ Goods transport («نقل»). Egypt treats this as a distinct licence class,
435
+ but the plates spec §2.3 vocabulary has no term for a commercial/goods
436
+ class, so — following `in-transport-1989` — the class stays `standard` and
437
+ the distinction rides on `categories:`. AGRICULTURAL TRACTORS AND TRAILERS
438
+ ARE INSIDE THIS CATEGORY under art. 340 ثانيا rather than in a separate
439
+ agricultural series; that is the instrument's own grouping and it is not
440
+ second-guessed here.
441
+ sources:
442
+ - "https://web.archive.org/web/20251010130322/https://traffic.moi.gov.eg/Arabic/OurServices/InfoServices/InteriorMinisterDecision/Pages/license-plates-taxes-traffic-fees.aspx # Decision 2777/2000 art. 340 ثانيا — goods transport, trailers, heavy equipment, agricultural tractors and trailers on one red/white plate — accessed 2026-09-12"
443
+ - "http://www.egyptmint.gov.eg/Home/Plates # Mint specimen «ترخيص نقل», red band — accessed 2026-09-12"
444
+
445
+ - id: eg-taxi-2008
446
+ class: taxi
447
+ categories: [car, van]
448
+ period: { start: 2008 }
449
+ period_evidence: enabling-instrument
450
+ matching: recall-only
451
+ format:
452
+ pattern: "9999 LLL"
453
+ regex: '\A\d{3,4} ?[A-Z]{2,3}\z'
454
+ design:
455
+ band: { side: top, content: "orange band bearing EGYPT / emblem / مصر" }
456
+ band_color_words: "orange (الأجرة / taxi) — art. 340 خامسا «برتقالى» with black characters; Mint class label «ترخيص اجره»"
457
+ band_color_observed: "RGB ~E28236 sampled from the Mint specimen JPEG"
458
+ region_encoding: none
459
+ notes: "For-hire vehicles, including «أجرة سياحة» (tourist hire) under art. 340 خامسا. Orange is one of the colours that survives the 2008 redesign from whole-plate ground to top band."
460
+ sources:
461
+ - "https://web.archive.org/web/20251010130322/https://traffic.moi.gov.eg/Arabic/OurServices/InfoServices/InteriorMinisterDecision/Pages/license-plates-taxes-traffic-fees.aspx # Decision 2777/2000 art. 340 خامسا — taxi and tourist-hire, orange ground, black characters — accessed 2026-09-12"
462
+ - "http://www.egyptmint.gov.eg/Home/Plates # Mint specimen «ترخيص اجره», orange band — accessed 2026-09-12"
463
+
464
+ - id: eg-government-2008
465
+ class: government
466
+ categories: [car, van, truck, bus]
467
+ period: { start: 2008 }
468
+ period_evidence: secondary-first-issue
469
+ period_evidence_note: >-
470
+ Weaker than the civilian series above. Decision 2777 art. 340 has NO grey
471
+ category at all — it files government and governorate vehicles under the
472
+ white passenger class — so the grey band is known only from the Egyptian
473
+ Mint's specimen. The 2008 start is inherited from the redesign, not
474
+ independently sourced for this class.
475
+ matching: recall-only
476
+ format:
477
+ pattern: "9999 LLL"
478
+ regex: '\A\d{3,4} ?[A-Z]{2,3}\z'
479
+ design:
480
+ band: { side: top, content: "grey band bearing EGYPT / emblem / مصر" }
481
+ band_color_words: "grey (الحكومة / government) — Mint class label «ترخيص حكومه»"
482
+ band_color_observed: "RGB ~A29E9B sampled from the Mint specimen JPEG"
483
+ region_encoding: none
484
+ notes: "Civil government and governorate fleets. One of four modern classes (with tourism, police and on-call) that have NO counterpart in Decision 2777 — evidence that the 2008 redesign re-cut the class list and that the un-updated regulation cannot be used to enumerate it."
485
+ sources:
486
+ - "http://www.egyptmint.gov.eg/Home/Plates # Mint specimen «ترخيص حكومه», grey band — the only source for this class — accessed 2026-09-12"
487
+
488
+ - id: eg-tourism-2008
489
+ class: standard
490
+ categories: [bus, car, van]
491
+ period: { start: 2008 }
492
+ period_evidence: secondary-first-issue
493
+ period_evidence_note: "as eg-government-2008 — no art. 340 counterpart; the Mint specimen is the only source"
494
+ matching: recall-only
495
+ format:
496
+ pattern: "9999 LLL"
497
+ regex: '\A\d{3,4} ?[A-Z]{2,3}\z'
498
+ design:
499
+ band: { side: top, content: "beige band bearing EGYPT / emblem / مصر" }
500
+ band_color_words: "beige (السياحة / tourism) — Mint class label «ترخيص سياحه»"
501
+ band_color_observed: "RGB ~EFD3A3 sampled from the Mint specimen JPEG"
502
+ region_encoding: none
503
+ notes: >-
504
+ Tourism vehicles, principally tour buses. `class: standard` because the
505
+ §2.3 vocabulary has no tourism term; the distinction rides on
506
+ `categories:` and on this note. A photographed in-service plate of this
507
+ class (an Aswan tour bus) is the file's single piece of photographic
508
+ corroboration for the governorate encoding — and it carries NO LATIN LINE,
509
+ which is why no regex here requires one.
510
+ sources:
511
+ - "http://www.egyptmint.gov.eg/Home/Plates # Mint specimen «ترخيص سياحه», beige band — accessed 2026-09-12"
512
+ - "https://upload.wikimedia.org/wikipedia/commons/0/0a/License_plate_Egypt_tourist_bus.jpg # photographic: beige-band tour-bus plate, four digits + three letters, NO Latin sub-line; letters read RTL are ص و ن, corroborating ص و = Aswan — Commons 2015-01-03, accessed 2026-09-12"
513
+
514
+ - id: eg-police-2008
515
+ class: police
516
+ categories: [car, van, truck, bus, motorcycle]
517
+ period: { start: 2008 }
518
+ period_evidence: secondary-first-issue
519
+ matching: recall-only
520
+ format:
521
+ pattern: "9999 LLL"
522
+ regex: '\A\d{3,4} ?[A-Z]{2,3}\z'
523
+ design:
524
+ band: { side: top, content: "dark blue band whose legend reads POLICE / الشرطة — it does NOT read EGYPT / مصر" }
525
+ band_color_words: "dark blue with white text (الشرطة / police) — Mint class label «ترخيص شرطه»"
526
+ band_color_observed: "RGB ~304989 sampled from the Mint specimen JPEG"
527
+ region_encoding: none
528
+ notes: >-
529
+ The only modern class whose band legend replaces the country name. Note a
530
+ secondary caution recorded and not resolved: Wikipedia states the
531
+ governorate letter-coding does not apply to army, police and diplomatic
532
+ vehicles, which would mean the letters on this series are not geographic
533
+ even to the partial extent described in header fact 5.
534
+ sources:
535
+ - "http://www.egyptmint.gov.eg/Home/Plates # Mint specimen «ترخيص شرطه», dark blue band, POLICE/الشرطة legend — accessed 2026-09-12"
536
+
537
+ - id: eg-diplomatic-2008
538
+ class: diplomatic
539
+ categories: [car, van]
540
+ period: { start: 2008 }
541
+ period_evidence: enabling-instrument
542
+ period_note: "Law 121/2008 as for the civilian series; the green diplomatic colour itself long predates it — art. 340 ثالثا gave diplomatic and consular vehicles a green ground with black characters."
543
+ matching: recall-only
544
+ matching_note: >-
545
+ No instrument prints this mask either. Unlike the civilian series the
546
+ regex here is not a union across governorates — it is a single shape on
547
+ secondary and photographic evidence — but the reason for recall-only is
548
+ the same and the stronger one: the grammar is not in any instrument.
549
+ format:
550
+ # DIGITS IN BOTH GROUPS — the diplomatic series carries no letters at all,
551
+ # which is why its pattern cannot be shared with the civilian ones.
552
+ pattern: "999 99"
553
+ regex: '\A\d{3} ?\d{2}\z'
554
+ design:
555
+ band: { side: top, content: "green band bearing EGYPT / emblem / مصر" }
556
+ band_color_words: "green (الدبلوماسي / diplomatic) — art. 340 ثالثا «أخضر» with black characters; Mint class label «ترخيص دبلوماسى»"
557
+ band_color_observed: "RGB ~5B9936 sampled from the Mint specimen JPEG"
558
+ region_encoding: none
559
+ notes: >-
560
+ Diplomatic and consular missions. The right-hand two-digit group is
561
+ presumably a mission or country code; NO DECODE TABLE IS SOURCED and none
562
+ ships (V6). Decision 2777 art. 340 ثالثا treats diplomatic and consular as
563
+ ONE category, so this file does not invent a separate consular series —
564
+ recording a distinction the instrument does not draw would be as much an
565
+ error as folding one it does.
566
+ sources:
567
+ - "https://web.archive.org/web/20251010130322/https://traffic.moi.gov.eg/Arabic/OurServices/InfoServices/InteriorMinisterDecision/Pages/license-plates-taxes-traffic-fees.aspx # Decision 2777/2000 art. 340 ثالثا — diplomatic and consular as one category, green ground, black characters — accessed 2026-09-12"
568
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Egypt # secondary-wikipedia: diplomatic plates carry numbers in place of letters, ###-## — accessed 2026-09-12"
569
+ - "https://upload.wikimedia.org/wikipedia/commons/2/21/Egypt_-_License_Plate_-_Diplomatic.png # photographic corroboration of the all-digit shape — Commons 2020-03-11, accessed 2026-09-12"
570
+
571
+ - id: eg-temporary-commercial-2008
572
+ class: temporary
573
+ categories: [car, van, truck, bus, trailer]
574
+ period: { start: 2008 }
575
+ period_evidence: enabling-instrument
576
+ matching: recall-only
577
+ format:
578
+ pattern: "9999 LLL"
579
+ regex: '\A\d{3,4} ?[A-Z]{2,3}\z'
580
+ design:
581
+ band: { side: top, content: "brown band, white text" }
582
+ band_color_words: "brown (التجارى والمؤقت / commercial and temporary) — art. 340 سادسا «بنى» ground with «أبيض» characters; Mint class label «ترخيص مؤقت»"
583
+ band_color_observed: "RGB ~6F5C4A sampled from the Mint specimen JPEG"
584
+ region_encoding: none
585
+ notes: >-
586
+ THE CLASS THE SOURCES APPEAR TO FIGHT OVER, AND THEY DO NOT. Art. 340
587
+ سادسا creates ONE combined category «لوحات التجارى والمؤقت» — trade licence
588
+ and temporary licence together. A 2014 press piece reports only the
589
+ commercial half; the Mint labels its brown specimen only the temporary
590
+ half; English Wikipedia reports neither. See header fact 6. `class:
591
+ temporary` is chosen because it is the half the issuing authority's own
592
+ manufacturer names, and because the §2.3 vocabulary has `dealer` and
593
+ `temporary` but no combined term; the commercial half is recorded here
594
+ rather than lost.
595
+ sources:
596
+ - "https://web.archive.org/web/20251010130322/https://traffic.moi.gov.eg/Arabic/OurServices/InfoServices/InteriorMinisterDecision/Pages/license-plates-taxes-traffic-fees.aspx # Decision 2777/2000 art. 340 سادسا — «لوحات التجارى والمؤقت», brown ground, white characters. NOTE the ministry's own English rendering of art. 340 omits this category entirely — accessed 2026-09-12"
597
+ - "http://www.egyptmint.gov.eg/Home/Plates # Mint specimen «ترخيص مؤقت», brown band with white text — accessed 2026-09-12"
598
+
599
+ - id: eg-customs-2008
600
+ class: temporary
601
+ categories: [car, van, truck]
602
+ period: { start: 2008 }
603
+ period_evidence: enabling-instrument
604
+ matching: recall-only
605
+ format:
606
+ pattern: "9999 LLL"
607
+ regex: '\A\d{3,4} ?[A-Z]{2,3}\z'
608
+ design:
609
+ band: { side: top, content: "yellow band" }
610
+ band_color_words: "lemon yellow (الجمارك والمنطقة الحرة / customs and free zone) — art. 340 رابعا «أصفر ليمونى» ground with «أحمر» characters; Mint class label «ترخيص جمرك»"
611
+ band_color_observed: "RGB ~E6C72F sampled from the Mint specimen JPEG"
612
+ region_encoding: none
613
+ notes: >-
614
+ Customs and free-zone vehicles — art. 340 رابعا covers «جمرك أجانب»
615
+ (foreigners' customs), «جمرك مصريين» (Egyptians' customs) and «منطقة حرة»
616
+ (free zone). ⚠ A DELIBERATE IMPRECISION, WRITTEN INTO THE ROW RATHER THAN
617
+ SMOOTHED OVER: The plates spec §2.3 vocabulary HAS NO `customs` TERM.
618
+ `temporary` is the nearest honest fit — these are duty-unpaid vehicles on
619
+ time-limited authority — but it is not what the instrument calls them, and
620
+ it collides with the genuinely temporary brown series above. The right fix
621
+ is a vocabulary addition by PR with a definition, per §2.3; that is
622
+ proposed in the dossier and deliberately NOT made here, because growing
623
+ the shared vocabulary inside a data PR is the ad-hoc growth §2.3 forbids.
624
+ sources:
625
+ - "https://web.archive.org/web/20251010130322/https://traffic.moi.gov.eg/Arabic/OurServices/InfoServices/InteriorMinisterDecision/Pages/license-plates-taxes-traffic-fees.aspx # Decision 2777/2000 art. 340 رابعا — customs (foreign and Egyptian) and free zone, lemon-yellow ground, red characters — accessed 2026-09-12"
626
+ - "http://www.egyptmint.gov.eg/Home/Plates # Mint specimen «ترخيص جمرك», yellow band — accessed 2026-09-12"
627
+
628
+ - id: eg-motorcycle-2008
629
+ class: motorcycle
630
+ categories: [motorcycle, moped]
631
+ period: { start: 2008 }
632
+ period_evidence: enabling-instrument
633
+ matching: recall-only
634
+ format:
635
+ # PORTRAIT PLATE: the letters sit ABOVE the digits rather than beside
636
+ # them, so the printed reading order differs from every other series in
637
+ # this file. Recorded letters-first to match what the plate shows.
638
+ pattern: "LLL 9999"
639
+ regex: '\A[A-Z]{2,3} ?\d{3,4}\z'
640
+ design:
641
+ plate_note: "portrait format with the coloured band across the top, letters above digits"
642
+ band_color_words: "light blue — secondary-wikipedia"
643
+ legacy_dimensions: "Decision 2777 art. 340 gives 19 x 17.5 cm with a white ground and black characters for the LEGACY motorcycle plate; not carried over as a claim about the current one"
644
+ mounting: "Law 66/1973 art. 13: motorcycles carry a single plate at the rear"
645
+ region_encoding: none
646
+ notes: >-
647
+ Law 17/2024 globally replaced «دراجة نارية» with «دراجة آلية» in the
648
+ Traffic Law — a terminology change, not a format change, and recorded so
649
+ a later reader meeting both terms does not infer two regimes.
650
+ sources:
651
+ - "https://web.archive.org/web/20251010130322/https://traffic.moi.gov.eg/Arabic/OurServices/InfoServices/InteriorMinisterDecision/Pages/license-plates-taxes-traffic-fees.aspx # Decision 2777/2000 art. 340 — legacy motorcycle plate 19 x 17.5 cm, white ground, black characters — accessed 2026-09-12"
652
+ - "https://upload.wikimedia.org/wikipedia/commons/d/df/Egypt_-_License_Plate_-_Motorcycle.png # photographic/diagram: portrait plate, letters above digits — Commons 2020-03-11, accessed 2026-09-12"
653
+
654
+ # =========================================================================
655
+ # THE CLOSED LEGACY SERIES. This is the plate Decision 2777 art. 342 actually
656
+ # describes, and it is the reason that article must not be read as evidence
657
+ # about the modern plate.
658
+ # =========================================================================
659
+ - id: eg-legacy-2000
660
+ class: standard
661
+ categories: [car, van, truck, bus, motorcycle, trailer]
662
+ period: { start: 2000, end: 2008 }
663
+ period_evidence: instrument-in-force
664
+ period_note: >-
665
+ BOTH ENDS ARE WEAK AND BOTH SAY SO. 2000 is the date of Decision 2777, the
666
+ instrument that DESCRIBES this plate — the za.yml `instrument-in-force`
667
+ sense, expressly not a first-issue date; plates of this general shape are
668
+ far older. 2008 is the introduction of the replacement design, not a
669
+ sourced cessation of issue: no instrument states when the legacy series
670
+ stopped being issued, and legacy plates remained valid and in circulation
671
+ afterwards.
672
+ matching: recall-only
673
+ matching_note: >-
674
+ The regex covers the NUMERIC SERIAL ONLY. The plate also prints the
675
+ licence type and the governorate as WORDS, and those cannot be carried by
676
+ a serial regex at all — see `notes`. A match is therefore a shape hit
677
+ against a bare number, which is about as weak a claim as this dataset
678
+ makes, and it is marked accordingly.
679
+ format:
680
+ pattern: "9999"
681
+ regex: '\A\d{1,6}\z'
682
+ design:
683
+ layout: >-
684
+ Decision 2777 art. 342, verbatim in structure: the RIGHT side carries
685
+ the licence type, the issuing authority and the numbers IN ARABIC; the
686
+ LEFT side carries the licence type, the numbers, and «مدلول المحافظة
687
+ باللغة الإنجليزية» — the governorate indicator IN ENGLISH.
688
+ background_note: "whole-plate colour by class per art. 340 — white/black passenger, red/white goods, green/black diplomatic, lemon-yellow/red customs, orange/black taxi, brown/white commercial-and-temporary, grey/white for slow-transit carts, at 40 x 16 cm"
689
+ material: "pure aluminium, not less than 1 mm, reflective (art. 342)"
690
+ region_encoding: none
691
+ region_encoding_mechanism: >-
692
+ The legacy plate encoded the governorate EXPLICITLY and in Latin letters,
693
+ not through the serial — a photographed Aswan cart plate reads «C.ASN»
694
+ on its left side, where ASN is Aswan. No table ships: the abbreviation
695
+ list was never located, and this series is closed.
696
+ notes: >-
697
+ WHAT THE SCHEMA CANNOT CARRY, RECORDED HERE INSTEAD. The legacy plate
698
+ spelled the vehicle's activity out in words — «أجرة» «ملاكي» «نقل» «هيئة
699
+ دبلوماسية» «شرطة» «أتوبيس خاص» «أتوبيس عام» «رحلات» «جرار زراعي» — beside
700
+ the governorate name. Those words are part of the plate's identity but are
701
+ not part of the SERIAL, so they appear in no pattern. They were «ألغيت
702
+ تماما» — abolished entirely — in the 2008 design, which replaced them with
703
+ the single word «مصر» in the band. That abolition is the clearest single
704
+ marker of the era boundary.
705
+ sources:
706
+ - "https://web.archive.org/web/20251010130322/https://traffic.moi.gov.eg/Arabic/OurServices/InfoServices/InteriorMinisterDecision/Pages/license-plates-taxes-traffic-fees.aspx # Decision 2777/2000 arts. 340 and 342 — the legacy layout, the whole-plate class colours, 40 x 16 cm, aluminium >= 1 mm — accessed 2026-09-12"
707
+ - "https://upload.wikimedia.org/wikipedia/commons/3/3d/License_plates_of_Egypt_1129a.jpg # photographic: a legacy Aswan plate confirming art. 342 exactly — Arabic class word + governorate + numerals right, «C.ASN» + numerals left — Commons 2019-10-21, accessed 2026-09-12"
708
+ - "https://web.archive.org/web/20181001220455/http://www.masrawy.com/Autos/autos_news/details/2014/12/3/401710/ # press, 3 Dec 2014: the activity words were abolished entirely in the new plates and replaced by «مصر» — accessed 2026-09-12"