gov_codes 0.1.1 → 0.1.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 (47) hide show
  1. checksums.yaml +4 -4
  2. data/.simplecov +13 -1
  3. data/.tool-versions +1 -1
  4. data/CHANGELOG.md +31 -26
  5. data/README.md +180 -25
  6. data/Rakefile +7 -2
  7. data/checksums/gov_codes-0.1.1.gem.sha512 +1 -0
  8. data/lib/gov_codes/afsc/enlisted.rb +111 -80
  9. data/lib/gov_codes/afsc/officer.rb +121 -65
  10. data/lib/gov_codes/afsc/releases/dafecd/2025-10-31/enlisted.yml +2726 -0
  11. data/lib/gov_codes/afsc/releases/dafecd/2025-10-31/ri.yml +369 -0
  12. data/lib/gov_codes/afsc/releases/dafocd/2025-10-31/officer.yml +2393 -0
  13. data/lib/gov_codes/afsc/releases/dafocd/2025-10-31/ri.yml +193 -0
  14. data/lib/gov_codes/afsc/releases.rb +219 -0
  15. data/lib/gov_codes/afsc/releases.yml +11 -0
  16. data/lib/gov_codes/afsc/ri.rb +161 -126
  17. data/lib/gov_codes/afsc.rb +29 -8
  18. data/lib/gov_codes/dafecd/index_builder.rb +416 -0
  19. data/lib/gov_codes/dafecd/patterns.rb +50 -0
  20. data/lib/gov_codes/dafecd/publication.rb +252 -0
  21. data/lib/gov_codes/dafecd/record_splitter.rb +77 -0
  22. data/lib/gov_codes/dafecd/ri_sdi/change_date.rb +63 -0
  23. data/lib/gov_codes/dafecd/ri_sdi/config.rb +137 -0
  24. data/lib/gov_codes/dafecd/ri_sdi/index_builder.rb +265 -0
  25. data/lib/gov_codes/dafecd/ri_sdi/ri_list_parser.rb +125 -0
  26. data/lib/gov_codes/dafecd/ri_sdi/sdi_card_parser.rb +151 -0
  27. data/lib/gov_codes/dafecd/ri_sdi/sdi_section_splitter.rb +77 -0
  28. data/lib/gov_codes/dafecd/ri_sdi/section_slicer.rb +45 -0
  29. data/lib/gov_codes/dafecd/ri_sdi/title.rb +76 -0
  30. data/lib/gov_codes/dafecd/ri_sdi/title_overrides/dafecd.yml +124 -0
  31. data/lib/gov_codes/dafecd/ri_sdi/title_overrides/dafocd.yml +78 -0
  32. data/lib/gov_codes/dafecd/shredout_acronyms.rb +47 -0
  33. data/lib/gov_codes/dafecd/shredout_degluer.rb +73 -0
  34. data/lib/gov_codes/dafecd/shredout_overrides/dafecd.yml +27 -0
  35. data/lib/gov_codes/dafecd/shredout_overrides/dafocd.yml +27 -0
  36. data/lib/gov_codes/dafecd/shredout_parser.rb +75 -0
  37. data/lib/gov_codes/dafecd/specialty_parser.rb +200 -0
  38. data/lib/gov_codes/dafecd/text.rb +48 -0
  39. data/lib/gov_codes/dafecd/title_degluer.rb +67 -0
  40. data/lib/gov_codes/dafecd/title_overrides/dafocd.yml +141 -0
  41. data/lib/gov_codes/dafecd/title_overrides.yml +142 -0
  42. data/lib/gov_codes/data_loader.rb +19 -0
  43. data/lib/gov_codes/version.rb +1 -1
  44. metadata +34 -6
  45. data/lib/gov_codes/afsc/enlisted.yml +0 -532
  46. data/lib/gov_codes/afsc/officer.yml +0 -1072
  47. data/lib/gov_codes/afsc/ri.yml +0 -237
@@ -0,0 +1,369 @@
1
+ # DAFECD Reporting Identifiers (RI) + Special Duty Identifiers (SDI)
2
+ # Source: DAFECD -31 October 25 v3.5 FINAL.pdf
3
+ # Directory: Department of the Air Force Enlisted Classification Directory
4
+ # Effective date: 2025-10-31 (v3.5)
5
+ # Generated deterministically by bin/extract_afsc_from_pdf.rb.
6
+ # Do not edit by hand; re-run the extractor against the source PDF.
7
+ # Titles are de-glued via human-verified overrides (spacing/case only, gated
8
+ # against the verbatim source); a title without an override is kept verbatim.
9
+ ---
10
+ :5I000:
11
+ :name: Intelligence, Surveillance & Reconnaissance Superintendent
12
+ :changed_date: '2025-04-30'
13
+ :5Z700:
14
+ :name: Space Operations Senior Enlisted Leader (USSF Only)
15
+ :changed_date: '2025-04-30'
16
+ :8A200:
17
+ :name: Enlisted Aide
18
+ :changed_date: '2016-10-31'
19
+ :8A300:
20
+ :name: Protocol
21
+ :changed_date: '2016-10-31'
22
+ :8A400:
23
+ :name: Talent Management Consultant
24
+ :changed_date: '2025-10-31'
25
+ :8B000:
26
+ :name: Miltary Training Instructor
27
+ :changed_date: '2024-10-31'
28
+ :8B100:
29
+ :name: Military Training Leader
30
+ :changed_date: '2024-10-31'
31
+ :8B200:
32
+ :name: Academy Military Training NCO
33
+ :changed_date: '2025-04-30'
34
+ :8B300:
35
+ :name: Officer Accessions Intructor
36
+ :changed_date: '2024-10-31'
37
+ :8B400:
38
+ :name: Military Training Instructor (Space Force)
39
+ :changed_date: '2025-10-31'
40
+ :8B500:
41
+ :name: Guardian Training Leader
42
+ :changed_date: '2025-04-30'
43
+ :8C000:
44
+ :name: Military and Family Readiness Non-Commissioned Officer (RNCO)
45
+ :acronym: RNCO
46
+ :changed_date: '2025-04-30'
47
+ :8D100:
48
+ :name: Language & Culture Advisor
49
+ :changed_date: '2016-10-31'
50
+ :8F000:
51
+ :name: First Sergeant
52
+ :changed_date: '2024-04-30'
53
+ :8F100:
54
+ :name: Guardian First Sergeant
55
+ :changed_date: '2025-04-30'
56
+ :8G000:
57
+ :name: Premier Honor Guard
58
+ :changed_date: '2025-10-31'
59
+ :shredouts:
60
+ :B: Pallbearer
61
+ :C: Color Guard
62
+ :D: Drill Team
63
+ :8G100:
64
+ :name: Base Honor Guard Program Manager
65
+ :changed_date: '2023-04-30'
66
+ :8G200:
67
+ :name: Premier Honor Guard (Space Force)
68
+ :changed_date: '2025-04-30'
69
+ :8H000:
70
+ :name: Airmen Dorm Leader
71
+ :changed_date: '2016-10-31'
72
+ :8I000:
73
+ :name: Superintendent, Inspector General
74
+ :changed_date: '2024-10-31'
75
+ :8I100:
76
+ :name: Inspections Coordinator
77
+ :changed_date: '2024-10-31'
78
+ :8I200:
79
+ :name: Complaints & Resolution Coordinator
80
+ :changed_date: '2024-10-31'
81
+ :8K000:
82
+ :name: Software Development Specialist
83
+ :changed_date: '2023-04-30'
84
+ :8L100:
85
+ :name: Air Advisor - Basic
86
+ :changed_date: '2022-10-31'
87
+ :8L200:
88
+ :name: Air Advisor Basic, Team Sergeant
89
+ :changed_date: '2022-10-31'
90
+ :8L300:
91
+ :name: Air Advisor Basic, Team Leader
92
+ :changed_date: '2022-10-31'
93
+ :8L400:
94
+ :name: Air Advisor Advanced
95
+ :changed_date: '2022-10-31'
96
+ :8L500:
97
+ :name: Air Advisor Advanced, Team Sergeant
98
+ :changed_date: '2022-10-31'
99
+ :8L600:
100
+ :name: Air Advisor Advanced, Team Leader
101
+ :changed_date: '2022-10-31'
102
+ :8L700:
103
+ :name: Combat Aviation Advisor
104
+ :changed_date: '2021-10-31'
105
+ :8L800:
106
+ :name: Combat Aviation Advisor Team Sergeant
107
+ :changed_date: '2021-10-31'
108
+ :8L900:
109
+ :name: Combat Aviation Advisor Team Leader
110
+ :changed_date: '2021-10-31'
111
+ :8P000:
112
+ :name: Courier
113
+ :changed_date: '2016-10-31'
114
+ :8P100:
115
+ :name: Defense Attaché
116
+ :changed_date: '2020-10-31'
117
+ :8R000:
118
+ :name: Enlisted Accessions Recruiter
119
+ :changed_date: '2025-04-30'
120
+ :8R100:
121
+ :name: Guardian Talent Scout
122
+ :changed_date: '2025-04-30'
123
+ :8R200:
124
+ :name: Second-Tier Recruiter
125
+ :changed_date: '2025-04-30'
126
+ :8R300:
127
+ :name: Third-Tier Recruiter
128
+ :changed_date: '2025-04-30'
129
+ :shredouts:
130
+ :A: Flight Chief
131
+ :B: Graduated, Flight Chief
132
+ :C: Production Superintendent
133
+ :E: Senior Enlisted Leader
134
+ :8S000:
135
+ :name: Missile Facility Manager
136
+ :changed_date: '2021-04-30'
137
+ :8S200:
138
+ :name: Combat Crew Communications
139
+ :changed_date: '2022-04-30'
140
+ :8T000:
141
+ :name: Professional Military Education Instructor
142
+ :changed_date: '2025-10-31'
143
+ :8T100:
144
+ :name: Enlisted Professional Military Education Instructional System Designer
145
+ :changed_date: '2025-10-31'
146
+ :8T200:
147
+ :name: Development Advisor
148
+ :changed_date: '2025-10-31'
149
+ :8T300:
150
+ :name: Professional Military Education Instructor (Space Force)
151
+ :changed_date: '2025-10-31'
152
+ :8U000:
153
+ :name: Unit Deployment Manager
154
+ :changed_date: '2016-10-31'
155
+ :8U100:
156
+ :name: Weapons of Mass Destruction Civil Support Team (WMD-CST)
157
+ :changed_date: '2020-10-31'
158
+ :8W000:
159
+ :name: Weapons Safety Manager - Wing Level
160
+ :changed_date: '2023-10-31'
161
+ :8W100:
162
+ :name: Weapons Safety Manager
163
+ :changed_date: '2025-10-31'
164
+ :shredouts:
165
+ :A: '8W1XX WSMs w/PAFSC: 2W0X1'
166
+ :B: '8W1XX WSMs w/PAFSC: 2W1X1'
167
+ :C: '8W1XX WSMs w/PAFSC: 2W2X1'
168
+ :8W200:
169
+ :name: Second-Tier Weapons Safety Manager
170
+ :changed_date: '2025-10-31'
171
+ :shredouts:
172
+ :A: '8W2XX WSMs w/PAFSC: 2W0X1'
173
+ :B: '8W2XX WSMs w/PAFSC: 2W1X1'
174
+ :C: '8W2XX WSMs w/PAFSC: 2W2X1'
175
+ :8W300:
176
+ :name: Third-Tier Weapons Safety Manager
177
+ :changed_date: '2025-10-31'
178
+ :shredouts:
179
+ :A: '8W3XX WSMs w/PAFSC: 2W0X1'
180
+ :B: '8W3XX WSMs w/PAFSC: 2W1X1'
181
+ :C: '8W3XX WSMs w/PAFSC: 2W2X1'
182
+ :8X100:
183
+ :name: Operational STEM Specialist
184
+ :changed_date: '2024-10-31'
185
+ :8Y000:
186
+ :name: Pathfinder
187
+ :changed_date: '2023-10-31'
188
+ :9A000:
189
+ :name: Enlisted Airman/Guardian - Disqualified for Reasons Beyond Control
190
+ :9A100:
191
+ :name: Enlisted Airman/Guardian - Disqualified for Reasons Within Control
192
+ :9A200:
193
+ :name: Enlisted Airman/Guardian Awaiting Discharge, Separation, or Retirement for
194
+ Reasons Within Their Control
195
+ :changed_date: '2015-09-02'
196
+ :9A300:
197
+ :name: Enlisted Airman/Guardian Awaiting Discharge, Separation, or Retirement for
198
+ Reasons Beyond Their Control
199
+ :changed_date: '2015-09-02'
200
+ :9A400:
201
+ :name: Disqualified Airman/Guardian, Return to Duty Program
202
+ :9A500:
203
+ :name: Enlisted Airman/Guardian Temporarily Ineligible for Retraining - Disqualified
204
+ for Reasons Beyond Control
205
+ :9B000:
206
+ :name: Senior Enlisted Advisor to the Chairman of the Joint Chiefs of Staff
207
+ :changed_date: '2022-10-31'
208
+ :9B100:
209
+ :name: Senior Enlisted Advisor to the Chief of the National Guard Bureau (CNGB)
210
+ :changed_date: '2023-10-31'
211
+ :9C000:
212
+ :name: Chief Master Sergeant of the Air Force
213
+ :9C100:
214
+ :name: Executive Assistant to the Chief Master Sergeant of the Air Force
215
+ :changed_date: '2021-10-31'
216
+ :9D100:
217
+ :name: AF Developmental Senior Enlisted Positions
218
+ :changed_date: '2021-10-31'
219
+ :9D200:
220
+ :name: Key Developmental Senior Enlisted Positions
221
+ :changed_date: '2021-10-31'
222
+ :9D300:
223
+ :name: Wing (Wing level) or Headquarter (HQ level) Senior Enlisted Leader
224
+ :changed_date: '2025-10-31'
225
+ :9E000:
226
+ :name: Command Chief Master Sergeant
227
+ :9E100:
228
+ :name: Command Chief Executive Assistant
229
+ :changed_date: '2016-04-30'
230
+ :9E200:
231
+ :name: Individual Mobilization Augmentee to Command Chief Master Sergeant
232
+ :changed_date: '2019-10-31'
233
+ :9F000:
234
+ :name: First Term Enlisted Course (FTEC) NCOIC
235
+ :changed_date: '2025-10-31'
236
+ :9G100:
237
+ :name: Group Senior Enlisted Leader
238
+ :changed_date: '2022-04-30'
239
+ :9H000:
240
+ :name: Academic Faculty Instructor
241
+ :changed_date: '2018-10-31'
242
+ :9H100:
243
+ :name: White House Communications Agency Technician (WHCA)
244
+ :changed_date: '2022-10-31'
245
+ :9H200:
246
+ :name: Academic Faculty Instructor (Space Force)
247
+ :changed_date: '2024-04-30'
248
+ :9I000:
249
+ :name: Futures Airmen
250
+ :changed_date: '2022-04-30'
251
+ :9J000:
252
+ :name: Prisoner
253
+ :changed_date: '2013-08-12'
254
+ :9L000:
255
+ :name: Interpreter/Translator
256
+ :changed_date: '2023-10-31'
257
+ :9L100:
258
+ :name: International Affairs Specialist
259
+ :changed_date: '2025-04-30'
260
+ :shredouts:
261
+ :A: Air Component Manager
262
+ :B: Tactical Specialist
263
+ :C: Institutional Specialist
264
+ :D: Embassy Specialist
265
+ :9M000:
266
+ :name: Military Entrance Processing Command (MEPCOM) Senior Enlisted Advisor
267
+ :changed_date: '2015-10-31'
268
+ :9M200:
269
+ :name: International Health Specialists (IHS)
270
+ :acronym: IHS
271
+ :changed_date: '2024-04-30'
272
+ :9M400:
273
+ :name: Chief, Medical Enlisted Force (CMEF), Senior Enlisted Leader and/or Senior
274
+ Enlisted Advisor (SEA)
275
+ :changed_date: '2025-10-31'
276
+ :9N000:
277
+ :name: Secretary of the Air Force Enlisted Legislative Fellows
278
+ :changed_date: '2024-04-30'
279
+ :9N100:
280
+ :name: Secretary of the Air Force Enlisted Legislative Fellows (Space Force)
281
+ :changed_date: '2024-04-30'
282
+ :9N200:
283
+ :name: DAF World Class Athlete Program (WCAP)
284
+ :acronym: WCAP
285
+ :9P000:
286
+ :name: Patient
287
+ :9Q000:
288
+ :name: Reserve Force Generation and Oversight NCO
289
+ :changed_date: '2020-04-30'
290
+ :9R000:
291
+ :name: Civil Air Patrol (CAP)-USAF Reserve Assistance NCO
292
+ :9S000:
293
+ :name: Chief Master Sergeant of the Space Force
294
+ :changed_date: '2020-04-30'
295
+ :9S100:
296
+ :name: Scientific Applications Specialist
297
+ :changed_date: '2025-10-31'
298
+ :shredouts:
299
+ :D: ISR Applied Data Science
300
+ :9T000:
301
+ :name: Basic Enlisted Airman
302
+ :9T100:
303
+ :name: Officer Trainee
304
+ :9T200:
305
+ :name: Precadet Assignee
306
+ :9T400:
307
+ :name: AFIT/EWI Enlisted Students
308
+ :changed_date: '2017-10-31'
309
+ :9T500:
310
+ :name: Basic Special Warfare Enlisted Airman
311
+ :changed_date: '2025-10-31'
312
+ :9U000:
313
+ :name: Enlisted Airman/Guardian Ineligible for Local Utilization
314
+ :9U100:
315
+ :name: Unallotted Enlisted Authorization
316
+ :changed_date: '2014-07-23'
317
+ :9V000:
318
+ :name: Key Developmental Joint Senior Enlisted Position
319
+ :changed_date: '2021-10-31'
320
+ :9V100:
321
+ :name: Executive Assistant to the Senior Enlisted Advisor to the Chairman of the
322
+ Joint Chiefs of Staff
323
+ :changed_date: '2022-10-31'
324
+ :9W000:
325
+ :name: Combat Wounded Warrior
326
+ :changed_date: '2015-05-11'
327
+ :9W100:
328
+ :name: Reserved for Future Use
329
+ :changed_date: '2015-05-11'
330
+ :9W200:
331
+ :name: Combat Wounded Warrior with Exemptions
332
+ :changed_date: '2015-05-11'
333
+ :9W300:
334
+ :name: Non-Combat Wounded Warrior
335
+ :changed_date: '2015-05-11'
336
+ :9W400:
337
+ :name: Wounded Warrior - Limited Assignment Status (LAS)
338
+ :acronym: LAS
339
+ :changed_date: '2015-05-11'
340
+ :9W500:
341
+ :name: Reserved for Future Use
342
+ :changed_date: '2015-05-11'
343
+ :9W600:
344
+ :name: Reserved for Future Use
345
+ :changed_date: '2015-05-11'
346
+ :9W700:
347
+ :name: Reserved for Future Use
348
+ :changed_date: '2015-05-11'
349
+ :9W800:
350
+ :name: Wounded Warrior - Ambassador
351
+ :changed_date: '2019-10-31'
352
+ :9W900:
353
+ :name: Wounded Warrior - Project Planner/Officer
354
+ :changed_date: '2019-10-31'
355
+ :9Y000:
356
+ :name: Air Force Parachute Team (AFPT) Instructor
357
+ :changed_date: '2023-04-30'
358
+ :9Z000:
359
+ :name: Special Warfare Mission Support (SWMS) Career Field Manager (CFM) on Headquarters
360
+ Air Force Staff, Air Force Special Warfare Division
361
+ :changed_date: '2021-10-31'
362
+ :9Z100:
363
+ :name: Special Warfare Mission Support (SWMS) Senior Enlisted Leader, Air Force
364
+ Special Warfare (AFSPECWAR)
365
+ :changed_date: '2025-10-31'
366
+ :9Z200:
367
+ :name: Special Warfare Mission Support (SWMS) Superintendent, Air Force Special
368
+ Warfare (AFSPECWAR)
369
+ :changed_date: '2024-10-31'