Hoctar77 commited on
Commit
b1f197a
·
verified ·
1 Parent(s): c668200

Changed air missions to air man per N 7930.114

Browse files

https://www.faa.gov/documentLibrary/media/Notice/GENOT_N_7930.114_NOTAM_Term_Change_from_Notice_to_Air_Missions_to_Notice_to_Airmen.pdf

Files changed (1) hide show
  1. patterns.json +476 -476
patterns.json CHANGED
@@ -1,476 +1,476 @@
1
- {
2
- "terminology": [
3
- {
4
- "pattern": "\\btitle (\\d+) of the United States Code \\((\\d+ U\\.S\\.C\\.)\\)\\b",
5
- "description": "Ensure proper formatting for United States Code references",
6
- "is_error": false
7
- },
8
- {
9
- "pattern": "\\btitle (\\d+) of the Code of Federal Regulations \\((\\d+ CFR)\\)\\b",
10
- "description": "Ensure proper formatting for Code of Federal Regulations references",
11
- "is_error": false
12
- },
13
- {
14
- "pattern": "\\btitle (\\d+) of the (United States Code|Code of Federal Regulations) \\((\\d+ U\\.S\\.C\\.|\\d+ CFR)\\)\\b",
15
- "description": "Ensure proper formatting for references to titles of the United States Code or Code of Federal Regulations",
16
- "is_error": false
17
- },
18
- {
19
- "pattern": "\\bAD Compliance Team \\(AD CRT\\)\\b",
20
- "description": "Ignore 'AD Compliance Team (AD CRT)'",
21
- "is_error": false
22
- },
23
- {
24
- "_comment": "Per the GPO Style Manual",
25
- "pattern": "\\b(?:USC|U\\.S\\.C)\\b",
26
- "description": "USC should be U.S.C.",
27
- "is_error": true,
28
- "replacement": "U.S.C."
29
- },
30
- {
31
- "_comment": "Per FAA Order 1320.46",
32
- "pattern": "\\bCFR Part\\b",
33
- "description": "CFR Part should be CFR part (lowercase)",
34
- "is_error": true,
35
- "replacement": "CFR part"
36
- },
37
- {
38
- "_comment": "Per the GPO Style Manual",
39
- "pattern": "\\bC\\.F\\.R\\.\\b",
40
- "description": "C.F.R. should be CFR",
41
- "is_error": true,
42
- "replacement": "CFR"
43
- },
44
- {
45
- "pattern": "\\b(?:[Ww]e)\\b",
46
- "description": "'We' or 'we' should be replaced with 'The FAA' or 'the FAA', depending on case",
47
- "is_error": true,
48
- "replacements": {
49
- "We": "The FAA",
50
- "we": "the FAA"
51
- }
52
- },
53
- {
54
- "_comment": "Per the GPO Style Manual",
55
- "pattern": "\\bcancelled\\b",
56
- "description": "'cancelled' should be 'canceled'",
57
- "is_error": true,
58
- "replacement": "canceled"
59
- },
60
- {
61
- "_comment": "Per FAA Order 1320.46",
62
- "pattern": "\\bshall\\b",
63
- "description": "'shall' should be 'must'",
64
- "is_error": true,
65
- "replacement": "must"
66
- },
67
- {
68
- "_comment": "Per AIR-600 Quick Reference Guide",
69
- "pattern": "\\bflight crew\\b",
70
- "description": "'flight crew' should be 'flightcrew'",
71
- "is_error": true,
72
- "replacement": "flightcrew"
73
- },
74
- {
75
- "_comment": "Per AIR-600 Quick Reference Guide",
76
- "pattern": "\\b(chairman|flagman|man|manmade|manpower)\\b",
77
- "description": "Replace gendered terms with their appropriate alternatives",
78
- "is_error": true,
79
- "replacements": {
80
- "chairman": "chair",
81
- "flagman": "flagperson",
82
- "man": "person",
83
- "manmade": "personmade",
84
- "manpower": "labor force"
85
- }
86
- },
87
- {
88
- "_comment": "Per AIR-600 Quick Reference Guide",
89
- "pattern": "\\bnotice to airmen?\\b",
90
- "description": "'notice to airman/airmen' should be 'notice to air missions'",
91
- "is_error": true,
92
- "replacement": "notice to air missions"
93
- },
94
- {
95
- "_comment": "Per AIR-600 Quick Reference Guide",
96
- "pattern": "\\bcockpit\\b",
97
- "description": "'cockpit' should be 'flight deck'",
98
- "is_error": true,
99
- "replacement": "flight deck"
100
- },
101
- {
102
- "pattern": "\\b(in order to|for the purpose of)\\b",
103
- "description": "Simplify phrases like 'in order to' to 'to'",
104
- "is_error": true
105
- },
106
- {
107
- "pattern": "\\b(herein|therein|thereof|heretofore|aforementioned)\\b",
108
- "description": "Avoid archaic or legalese terms; use modern, plain language equivalents",
109
- "is_error": true
110
- },
111
- {
112
- "pattern": "\\b(aircraft|airplane|flightcrew|flight deck|maintenance technician)\\b",
113
- "description": "Ensure consistent use of defined aviation terms",
114
- "is_error": true
115
- },
116
- {
117
- "pattern": "\\b(shall|will|may|must)\\b",
118
- "description": "Ensure proper use of 'must' instead of 'shall' for requirements",
119
- "is_error": true
120
- },
121
- {
122
- "pattern": "\\b(very|extremely|highly|quite)\\b",
123
- "description": "Avoid unnecessary qualifiers; use precise language",
124
- "is_error": true
125
- },
126
- {
127
- "pattern": "\\b(data are|criteria is|phenomena is)\\b",
128
- "description": "Ensure consistent singular/plural usage (e.g., 'data is,' 'criteria are,' 'phenomena are')",
129
- "is_error": true
130
- },
131
- {
132
- "pattern": "\\bappropriate\\b",
133
- "description": "Avoid vague terms like 'appropriate'; specify conditions or criteria",
134
- "is_error": true
135
- },
136
- {
137
- "pattern": "\\b(is|was|were|are|be|been|being)\\s+(\\w+ed)\\b",
138
- "description": "Flag likely passive constructions even if no agent ('by') is present",
139
- "is_error": true
140
- },
141
- {
142
- "pattern": "\\babove\\b",
143
- "description": "Avoid using 'above' for references",
144
- "is_error": true
145
- },
146
- {
147
- "pattern": "\\bbelow\\b",
148
- "description": "Avoid using 'below' for references",
149
- "is_error": true
150
- },
151
- {
152
- "pattern": "\\baforementioned\\b",
153
- "description": "Avoid using 'aforementioned' as it can be unclear",
154
- "is_error": true
155
- },
156
- {
157
- "pattern": "\\bpreceding\\b",
158
- "description": "Avoid using 'preceding' for references; specify the section or item explicitly",
159
- "is_error": true
160
- },
161
- {
162
- "pattern": "\\bfollowing\\b",
163
- "description": "Avoid using 'following' for references; specify the section or item explicitly",
164
- "is_error": true
165
- },
166
- {
167
- "pattern": "\\blatter\\b",
168
- "description": "Avoid using 'latter'; specify the item explicitly",
169
- "is_error": true
170
- },
171
- {
172
- "pattern": "\\bformer\\b",
173
- "description": "Avoid using 'former'; specify the item explicitly",
174
- "is_error": true
175
- },
176
- {
177
- "pattern": "\\bthis\\b",
178
- "description": "Avoid using 'this' without a clear antecedent",
179
- "is_error": true
180
- },
181
- {
182
- "pattern": "\\bit\\b",
183
- "description": "Avoid using 'it' without a clear antecedent",
184
- "is_error": true
185
- },
186
- {
187
- "pattern": "\\bthese\\b",
188
- "description": "Avoid using 'these' without a clear antecedent",
189
- "is_error": true
190
- },
191
- {
192
- "pattern": "\\bsuch\\b",
193
- "description": "Avoid using 'such' without a clear antecedent",
194
- "is_error": true
195
- },
196
- {
197
- "pattern": "\\brespectively\\b",
198
- "description": "Avoid using 'respectively' as it can be confusing in complex lists",
199
- "is_error": true
200
- },
201
- {
202
- "pattern": "\\bper above\\b",
203
- "description": "Avoid using 'per above'; provide a direct reference",
204
- "is_error": true
205
- },
206
- {
207
- "pattern": "\\bas mentioned earlier\\b",
208
- "description": "Avoid using 'as mentioned earlier'; provide a direct reference",
209
- "is_error": true
210
- },
211
- {
212
- "pattern": "\\bas stated earlier\\b",
213
- "description": "Avoid using 'as stated earlier'; provide a direct reference",
214
- "is_error": true
215
- },
216
- {
217
- "pattern": "\\bin question\\b",
218
- "description": "Avoid using 'in question'; specify the item explicitly",
219
- "is_error": true
220
- },
221
- {
222
- "pattern": "\\bafore\\b",
223
- "description": "Avoid using archaic terms like 'afore'; specify the item explicitly",
224
- "is_error": true
225
- },
226
- {
227
- "pattern": "\\b(may|might|could|should|possibly|likely)\\b",
228
- "description": "Avoid vague terms; use definitive language unless conditional meaning is intended",
229
- "is_error": true
230
- },
231
- {
232
- "pattern": "\\b(as stated in|refer to|see)\\b.*?(\\bAppendix\\b|\\bTable\\b|\\bSection\\b|\\bFigure\\b)",
233
- "description": "Ensure references are complete and properly formatted",
234
- "is_error": true
235
- }
236
- ],
237
- "section_symbol": [
238
- {
239
- "pattern": "\\b(section|subsection|paragraph|clause)\\b",
240
- "description": "Ensure proper use of '§' or '§§' instead of spelled-out 'section'",
241
- "is_error": true
242
- },
243
- {
244
- "pattern": "^§",
245
- "description": "Don't start a sentence with the section symbol. Write out 'Section'",
246
- "is_error": true
247
- },
248
- {
249
- "pattern": "\\b(\\d+ U\\.S\\.C\\. §§? \\d+\\([a-zA-Z0-9]*\\)(?:\\([a-zA-Z0-9]*\\))?)\\b",
250
- "description": "Do not flag properly formatted citations with section symbols (e.g., '5 U.S.C. § 533(a)(1)')",
251
- "is_error": false
252
- },
253
- {
254
- "pattern": "\\b14 CFR §\\s*\\d+\\.\\d+\\b",
255
- "description": "14 CFR should not use section symbol",
256
- "is_error": true
257
- },
258
- {
259
- "pattern": "§\\s*\\d+\\.\\d+\\s+(?:and|or)\\s+\\d+\\.\\d+",
260
- "description": "Missing section symbol in multiple sections",
261
- "is_error": true
262
- },
263
- {
264
- "pattern": "§\\s*\\d+\\.\\d+\\s+through\\s+\\d+\\.\\d+",
265
- "description": "Missing section symbol in range of sections",
266
- "is_error": true
267
- },
268
- {
269
- "pattern": "§\\s*\\d+\\.\\d+\\s+or\\s+§?\\s*\\d+\\.\\d+",
270
- "description": "Inconsistent section symbol usage with 'or'",
271
- "is_error": true
272
- }
273
- ],
274
- "spacing": [
275
- {
276
- "pattern": "([^\\s]+)[ ]{2,}([^\\s]+)",
277
- "description": "Remove double spacing between '{0}' and '{1}'",
278
- "is_error": true
279
- },
280
- {
281
- "pattern": "(?<!\\s)(AC|AD|CFR|FAA|N|SFAR)(\\d+[-]?\\d*[A-Z]?)",
282
- "description": "Add space between '{0}' and '{1}'",
283
- "is_error": true
284
- },
285
- {
286
- "pattern": "(§|§§)(\\d+\\.\\d+)",
287
- "description": "Add space after '{0}' before '{1}'",
288
- "is_error": true
289
- },
290
- {
291
- "pattern": "(?<!\\s)(Part)(\\d+)",
292
- "description": "Add space between '{0}' and '{1}'",
293
- "is_error": true
294
- },
295
- {
296
- "pattern": "^(\\d+\\.\\d+\\.\\d+\\.\\d+)\\s*$",
297
- "description": "Ensure subsections are followed by content",
298
- "is_error": true
299
- },
300
- {
301
- "pattern": "^\\s*[-*]\\s*[^a-zA-Z0-9]+",
302
- "description": "Flag empty or improperly formatted bullet points",
303
- "is_error": true
304
- },
305
- {
306
- "pattern": "\\b(\\d+)\\s*to\\s*(\\d+)\\b",
307
- "description": "Ensure numeric ranges use a dash (e.g., '10-20') instead of 'to'",
308
- "is_error": true
309
- }
310
- ],
311
- "dates": [
312
- {
313
- "pattern": "(?<![\\w/-])(\\d{1,2}/\\d{1,2}/\\d{2,4}|\\d{1,2}-\\d{1,2}-\\d{2,4}|\\d{4}-\\d{1,2}-\\d{1,2})(?![\\w/-])",
314
- "description": "Use 'Month Day, Year' format instead of numeric date formats (MM/DD/YYYY, MM-DD-YYYY, YYYY-MM-DD)",
315
- "is_error": true
316
- }
317
- ],
318
- "placeholders": [
319
- {
320
- "pattern": "\\bTBD\\b",
321
- "description": "Remove TBD placeholder",
322
- "is_error": true
323
- },
324
- {
325
- "pattern": "\\bTo be determined\\b",
326
- "description": "Remove 'To be determined' placeholder",
327
- "is_error": true
328
- },
329
- {
330
- "pattern": "\\bTo be added\\b",
331
- "description": "Remove 'To be added' placeholder",
332
- "is_error": true
333
- },
334
- {
335
- "pattern": "\\bTBA\\b",
336
- "description": "Remove TBA (To Be Announced) placeholder",
337
- "is_error": true
338
- },
339
- {
340
- "pattern": "\\bTo be updated\\b",
341
- "description": "Remove 'To be updated' placeholder",
342
- "is_error": true
343
- },
344
- {
345
- "pattern": "\\bTo follow\\b",
346
- "description": "Remove 'To follow' placeholder",
347
- "is_error": true
348
- },
349
- {
350
- "pattern": "\\bInsert here\\b",
351
- "description": "Remove 'Insert here' placeholder",
352
- "is_error": true
353
- },
354
- {
355
- "pattern": "\\[Insert.*?\\]",
356
- "description": "Remove '[Insert...]' placeholder",
357
- "is_error": true
358
- },
359
- {
360
- "pattern": "\\[Placeholder.*?\\]",
361
- "description": "Remove '[Placeholder...]' placeholder",
362
- "is_error": true
363
- },
364
- {
365
- "pattern": "\\bComing soon\\b",
366
- "description": "Remove 'Coming soon' placeholder",
367
- "is_error": true
368
- },
369
- {
370
- "pattern": "\\[Add .*?\\]",
371
- "description": "Remove '[Add...]' placeholder",
372
- "is_error": true
373
- },
374
- {
375
- "pattern": "\\[Replace .*?\\]",
376
- "description": "Remove '[Replace...]' placeholder",
377
- "is_error": true
378
- },
379
- {
380
- "pattern": "\\[Example.*?\\]",
381
- "description": "Remove '[Example...]' placeholder",
382
- "is_error": true
383
- },
384
- {
385
- "pattern": "\\[Add text here\\]",
386
- "description": "Remove '[Add text here]' placeholder",
387
- "is_error": true
388
- },
389
- {
390
- "pattern": "\\bTo be filled\\b",
391
- "description": "Remove 'To be filled' placeholder",
392
- "is_error": true
393
- }
394
- ],
395
- "periods": [
396
- {
397
- "pattern": "\\.\\.",
398
- "description": "Remove double periods",
399
- "is_error": true
400
- },
401
- {
402
- "pattern": "(?<!\\.)\\.\\s*\\.\\s*",
403
- "description": "Remove multiple standalone periods",
404
- "is_error": true
405
- },
406
- {
407
- "pattern": "\\s+\\.",
408
- "description": "Remove unnecessary spaces before periods",
409
- "is_error": true
410
- },
411
- {
412
- "pattern": "(?<!\\w)\\.\\s*$",
413
- "description": "Avoid ending sentences with only a period (check for sentence fragment)",
414
- "is_error": true
415
- },
416
- {
417
- "pattern": "\\.(?!\\s|$)",
418
- "description": "Add a space after a period unless at the end of the text",
419
- "is_error": true
420
- },
421
- {
422
- "pattern": "(\\.{3,})",
423
- "description": "Replace repeated periods with an ellipsis ('...') where appropriate",
424
- "is_error": true,
425
- "replacement": "..."
426
- },
427
- {
428
- "pattern": "(?<!\\s)\\.{3}(?!\\s)",
429
- "description": "Ensure spaces before and after ellipses",
430
- "is_error": true
431
- },
432
- {
433
- "pattern": "\\.{4,}",
434
- "description": "Replace four or more periods with a single ellipsis ('...')",
435
- "is_error": true,
436
- "replacement": "..."
437
- },
438
- {
439
- "pattern": "\\.(\\d)",
440
- "description": "Add a space between the period and the number if it's not a decimal",
441
- "is_error": true
442
- },
443
- {
444
- "pattern": "\\.\\s+(\\.|\\d)",
445
- "description": "Remove extra spaces after a period if followed by another period or number",
446
- "is_error": true
447
- },
448
- {
449
- "pattern": "\\bU\\.S\\.C\\.\\s*\\d+\\b",
450
- "description": "Do not flag 'U.S.C. x' as a period issue",
451
- "is_error": false
452
- }
453
- ],
454
- "table_figure_references": [
455
- {
456
- "pattern": "(?<!^)(?<![.!?])\\s+(Table|Figure)\\s+\\d+(?:-\\d+)?",
457
- "description": "'Table' and 'Figure' references within sentences should be lowercase",
458
- "is_error": true,
459
- "enforce_case": "lowercase"
460
- },
461
- {
462
- "pattern": "^(table|figure)\\s+\\d+(?:-\\d+)?",
463
- "description": "'Table' and 'Figure' references at the start of a sentence should be capitalized",
464
- "is_error": true,
465
- "enforce_case": "capitalized"
466
- }
467
- ],
468
- "parentheses": [
469
- {
470
- "pattern": "\\([^)]*$|[^(]*\\)",
471
- "description": "Detect unmatched parentheses (missing opening or closing parenthesis)",
472
- "is_error": true,
473
- "notes": "Matches cases where a closing parenthesis is missing after an opening or an opening parenthesis is missing before a closing."
474
- }
475
- ]
476
- }
 
1
+ {
2
+ "terminology": [
3
+ {
4
+ "pattern": "\\btitle (\\d+) of the United States Code \\((\\d+ U\\.S\\.C\\.)\\)\\b",
5
+ "description": "Ensure proper formatting for United States Code references",
6
+ "is_error": false
7
+ },
8
+ {
9
+ "pattern": "\\btitle (\\d+) of the Code of Federal Regulations \\((\\d+ CFR)\\)\\b",
10
+ "description": "Ensure proper formatting for Code of Federal Regulations references",
11
+ "is_error": false
12
+ },
13
+ {
14
+ "pattern": "\\btitle (\\d+) of the (United States Code|Code of Federal Regulations) \\((\\d+ U\\.S\\.C\\.|\\d+ CFR)\\)\\b",
15
+ "description": "Ensure proper formatting for references to titles of the United States Code or Code of Federal Regulations",
16
+ "is_error": false
17
+ },
18
+ {
19
+ "pattern": "\\bAD Compliance Team \\(AD CRT\\)\\b",
20
+ "description": "Ignore 'AD Compliance Team (AD CRT)'",
21
+ "is_error": false
22
+ },
23
+ {
24
+ "_comment": "Per the GPO Style Manual",
25
+ "pattern": "\\b(?:USC|U\\.S\\.C)\\b",
26
+ "description": "USC should be U.S.C.",
27
+ "is_error": true,
28
+ "replacement": "U.S.C."
29
+ },
30
+ {
31
+ "_comment": "Per FAA Order 1320.46",
32
+ "pattern": "\\bCFR Part\\b",
33
+ "description": "CFR Part should be CFR part (lowercase)",
34
+ "is_error": true,
35
+ "replacement": "CFR part"
36
+ },
37
+ {
38
+ "_comment": "Per the GPO Style Manual",
39
+ "pattern": "\\bC\\.F\\.R\\.\\b",
40
+ "description": "C.F.R. should be CFR",
41
+ "is_error": true,
42
+ "replacement": "CFR"
43
+ },
44
+ {
45
+ "pattern": "\\b(?:[Ww]e)\\b",
46
+ "description": "'We' or 'we' should be replaced with 'The FAA' or 'the FAA', depending on case",
47
+ "is_error": true,
48
+ "replacements": {
49
+ "We": "The FAA",
50
+ "we": "the FAA"
51
+ }
52
+ },
53
+ {
54
+ "_comment": "Per the GPO Style Manual",
55
+ "pattern": "\\bcancelled\\b",
56
+ "description": "'cancelled' should be 'canceled'",
57
+ "is_error": true,
58
+ "replacement": "canceled"
59
+ },
60
+ {
61
+ "_comment": "Per FAA Order 1320.46",
62
+ "pattern": "\\bshall\\b",
63
+ "description": "'shall' should be 'must'",
64
+ "is_error": true,
65
+ "replacement": "must"
66
+ },
67
+ {
68
+ "_comment": "Per AIR-600 Quick Reference Guide",
69
+ "pattern": "\\bflight crew\\b",
70
+ "description": "'flight crew' should be 'flightcrew'",
71
+ "is_error": true,
72
+ "replacement": "flightcrew"
73
+ },
74
+ {
75
+ "_comment": "Per AIR-600 Quick Reference Guide",
76
+ "pattern": "\\b(chairman|flagman|man|manmade|manpower)\\b",
77
+ "description": "Replace gendered terms with their appropriate alternatives",
78
+ "is_error": true,
79
+ "replacements": {
80
+ "chairman": "chair",
81
+ "flagman": "flagperson",
82
+ "man": "person",
83
+ "manmade": "personmade",
84
+ "manpower": "labor force"
85
+ }
86
+ },
87
+ {
88
+ "_comment": "Per AIR-600 Quick Reference Guide",
89
+ "pattern": "\\bnotice to air missions?\\b", # Per N 7930.114
90
+ "description": "'notice to missions' should be 'notice to air man/men'",
91
+ "is_error": true,
92
+ "replacement": "notice to air missions"
93
+ },
94
+ {
95
+ "_comment": "Per AIR-600 Quick Reference Guide",
96
+ "pattern": "\\bcockpit\\b",
97
+ "description": "'cockpit' should be 'flight deck'",
98
+ "is_error": true,
99
+ "replacement": "flight deck"
100
+ },
101
+ {
102
+ "pattern": "\\b(in order to|for the purpose of)\\b",
103
+ "description": "Simplify phrases like 'in order to' to 'to'",
104
+ "is_error": true
105
+ },
106
+ {
107
+ "pattern": "\\b(herein|therein|thereof|heretofore|aforementioned)\\b",
108
+ "description": "Avoid archaic or legalese terms; use modern, plain language equivalents",
109
+ "is_error": true
110
+ },
111
+ {
112
+ "pattern": "\\b(aircraft|airplane|flightcrew|flight deck|maintenance technician)\\b",
113
+ "description": "Ensure consistent use of defined aviation terms",
114
+ "is_error": true
115
+ },
116
+ {
117
+ "pattern": "\\b(shall|will|may|must)\\b",
118
+ "description": "Ensure proper use of 'must' instead of 'shall' for requirements",
119
+ "is_error": true
120
+ },
121
+ {
122
+ "pattern": "\\b(very|extremely|highly|quite)\\b",
123
+ "description": "Avoid unnecessary qualifiers; use precise language",
124
+ "is_error": true
125
+ },
126
+ {
127
+ "pattern": "\\b(data are|criteria is|phenomena is)\\b",
128
+ "description": "Ensure consistent singular/plural usage (e.g., 'data is,' 'criteria are,' 'phenomena are')",
129
+ "is_error": true
130
+ },
131
+ {
132
+ "pattern": "\\bappropriate\\b",
133
+ "description": "Avoid vague terms like 'appropriate'; specify conditions or criteria",
134
+ "is_error": true
135
+ },
136
+ {
137
+ "pattern": "\\b(is|was|were|are|be|been|being)\\s+(\\w+ed)\\b",
138
+ "description": "Flag likely passive constructions even if no agent ('by') is present",
139
+ "is_error": true
140
+ },
141
+ {
142
+ "pattern": "\\babove\\b",
143
+ "description": "Avoid using 'above' for references",
144
+ "is_error": true
145
+ },
146
+ {
147
+ "pattern": "\\bbelow\\b",
148
+ "description": "Avoid using 'below' for references",
149
+ "is_error": true
150
+ },
151
+ {
152
+ "pattern": "\\baforementioned\\b",
153
+ "description": "Avoid using 'aforementioned' as it can be unclear",
154
+ "is_error": true
155
+ },
156
+ {
157
+ "pattern": "\\bpreceding\\b",
158
+ "description": "Avoid using 'preceding' for references; specify the section or item explicitly",
159
+ "is_error": true
160
+ },
161
+ {
162
+ "pattern": "\\bfollowing\\b",
163
+ "description": "Avoid using 'following' for references; specify the section or item explicitly",
164
+ "is_error": true
165
+ },
166
+ {
167
+ "pattern": "\\blatter\\b",
168
+ "description": "Avoid using 'latter'; specify the item explicitly",
169
+ "is_error": true
170
+ },
171
+ {
172
+ "pattern": "\\bformer\\b",
173
+ "description": "Avoid using 'former'; specify the item explicitly",
174
+ "is_error": true
175
+ },
176
+ {
177
+ "pattern": "\\bthis\\b",
178
+ "description": "Avoid using 'this' without a clear antecedent",
179
+ "is_error": true
180
+ },
181
+ {
182
+ "pattern": "\\bit\\b",
183
+ "description": "Avoid using 'it' without a clear antecedent",
184
+ "is_error": true
185
+ },
186
+ {
187
+ "pattern": "\\bthese\\b",
188
+ "description": "Avoid using 'these' without a clear antecedent",
189
+ "is_error": true
190
+ },
191
+ {
192
+ "pattern": "\\bsuch\\b",
193
+ "description": "Avoid using 'such' without a clear antecedent",
194
+ "is_error": true
195
+ },
196
+ {
197
+ "pattern": "\\brespectively\\b",
198
+ "description": "Avoid using 'respectively' as it can be confusing in complex lists",
199
+ "is_error": true
200
+ },
201
+ {
202
+ "pattern": "\\bper above\\b",
203
+ "description": "Avoid using 'per above'; provide a direct reference",
204
+ "is_error": true
205
+ },
206
+ {
207
+ "pattern": "\\bas mentioned earlier\\b",
208
+ "description": "Avoid using 'as mentioned earlier'; provide a direct reference",
209
+ "is_error": true
210
+ },
211
+ {
212
+ "pattern": "\\bas stated earlier\\b",
213
+ "description": "Avoid using 'as stated earlier'; provide a direct reference",
214
+ "is_error": true
215
+ },
216
+ {
217
+ "pattern": "\\bin question\\b",
218
+ "description": "Avoid using 'in question'; specify the item explicitly",
219
+ "is_error": true
220
+ },
221
+ {
222
+ "pattern": "\\bafore\\b",
223
+ "description": "Avoid using archaic terms like 'afore'; specify the item explicitly",
224
+ "is_error": true
225
+ },
226
+ {
227
+ "pattern": "\\b(may|might|could|should|possibly|likely)\\b",
228
+ "description": "Avoid vague terms; use definitive language unless conditional meaning is intended",
229
+ "is_error": true
230
+ },
231
+ {
232
+ "pattern": "\\b(as stated in|refer to|see)\\b.*?(\\bAppendix\\b|\\bTable\\b|\\bSection\\b|\\bFigure\\b)",
233
+ "description": "Ensure references are complete and properly formatted",
234
+ "is_error": true
235
+ }
236
+ ],
237
+ "section_symbol": [
238
+ {
239
+ "pattern": "\\b(section|subsection|paragraph|clause)\\b",
240
+ "description": "Ensure proper use of '§' or '§§' instead of spelled-out 'section'",
241
+ "is_error": true
242
+ },
243
+ {
244
+ "pattern": "^§",
245
+ "description": "Don't start a sentence with the section symbol. Write out 'Section'",
246
+ "is_error": true
247
+ },
248
+ {
249
+ "pattern": "\\b(\\d+ U\\.S\\.C\\. §§? \\d+\\([a-zA-Z0-9]*\\)(?:\\([a-zA-Z0-9]*\\))?)\\b",
250
+ "description": "Do not flag properly formatted citations with section symbols (e.g., '5 U.S.C. § 533(a)(1)')",
251
+ "is_error": false
252
+ },
253
+ {
254
+ "pattern": "\\b14 CFR §\\s*\\d+\\.\\d+\\b",
255
+ "description": "14 CFR should not use section symbol",
256
+ "is_error": true
257
+ },
258
+ {
259
+ "pattern": "§\\s*\\d+\\.\\d+\\s+(?:and|or)\\s+\\d+\\.\\d+",
260
+ "description": "Missing section symbol in multiple sections",
261
+ "is_error": true
262
+ },
263
+ {
264
+ "pattern": "§\\s*\\d+\\.\\d+\\s+through\\s+\\d+\\.\\d+",
265
+ "description": "Missing section symbol in range of sections",
266
+ "is_error": true
267
+ },
268
+ {
269
+ "pattern": "§\\s*\\d+\\.\\d+\\s+or\\s+§?\\s*\\d+\\.\\d+",
270
+ "description": "Inconsistent section symbol usage with 'or'",
271
+ "is_error": true
272
+ }
273
+ ],
274
+ "spacing": [
275
+ {
276
+ "pattern": "([^\\s]+)[ ]{2,}([^\\s]+)",
277
+ "description": "Remove double spacing between '{0}' and '{1}'",
278
+ "is_error": true
279
+ },
280
+ {
281
+ "pattern": "(?<!\\s)(AC|AD|CFR|FAA|N|SFAR)(\\d+[-]?\\d*[A-Z]?)",
282
+ "description": "Add space between '{0}' and '{1}'",
283
+ "is_error": true
284
+ },
285
+ {
286
+ "pattern": "(§|§§)(\\d+\\.\\d+)",
287
+ "description": "Add space after '{0}' before '{1}'",
288
+ "is_error": true
289
+ },
290
+ {
291
+ "pattern": "(?<!\\s)(Part)(\\d+)",
292
+ "description": "Add space between '{0}' and '{1}'",
293
+ "is_error": true
294
+ },
295
+ {
296
+ "pattern": "^(\\d+\\.\\d+\\.\\d+\\.\\d+)\\s*$",
297
+ "description": "Ensure subsections are followed by content",
298
+ "is_error": true
299
+ },
300
+ {
301
+ "pattern": "^\\s*[-*]\\s*[^a-zA-Z0-9]+",
302
+ "description": "Flag empty or improperly formatted bullet points",
303
+ "is_error": true
304
+ },
305
+ {
306
+ "pattern": "\\b(\\d+)\\s*to\\s*(\\d+)\\b",
307
+ "description": "Ensure numeric ranges use a dash (e.g., '10-20') instead of 'to'",
308
+ "is_error": true
309
+ }
310
+ ],
311
+ "dates": [
312
+ {
313
+ "pattern": "(?<![\\w/-])(\\d{1,2}/\\d{1,2}/\\d{2,4}|\\d{1,2}-\\d{1,2}-\\d{2,4}|\\d{4}-\\d{1,2}-\\d{1,2})(?![\\w/-])",
314
+ "description": "Use 'Month Day, Year' format instead of numeric date formats (MM/DD/YYYY, MM-DD-YYYY, YYYY-MM-DD)",
315
+ "is_error": true
316
+ }
317
+ ],
318
+ "placeholders": [
319
+ {
320
+ "pattern": "\\bTBD\\b",
321
+ "description": "Remove TBD placeholder",
322
+ "is_error": true
323
+ },
324
+ {
325
+ "pattern": "\\bTo be determined\\b",
326
+ "description": "Remove 'To be determined' placeholder",
327
+ "is_error": true
328
+ },
329
+ {
330
+ "pattern": "\\bTo be added\\b",
331
+ "description": "Remove 'To be added' placeholder",
332
+ "is_error": true
333
+ },
334
+ {
335
+ "pattern": "\\bTBA\\b",
336
+ "description": "Remove TBA (To Be Announced) placeholder",
337
+ "is_error": true
338
+ },
339
+ {
340
+ "pattern": "\\bTo be updated\\b",
341
+ "description": "Remove 'To be updated' placeholder",
342
+ "is_error": true
343
+ },
344
+ {
345
+ "pattern": "\\bTo follow\\b",
346
+ "description": "Remove 'To follow' placeholder",
347
+ "is_error": true
348
+ },
349
+ {
350
+ "pattern": "\\bInsert here\\b",
351
+ "description": "Remove 'Insert here' placeholder",
352
+ "is_error": true
353
+ },
354
+ {
355
+ "pattern": "\\[Insert.*?\\]",
356
+ "description": "Remove '[Insert...]' placeholder",
357
+ "is_error": true
358
+ },
359
+ {
360
+ "pattern": "\\[Placeholder.*?\\]",
361
+ "description": "Remove '[Placeholder...]' placeholder",
362
+ "is_error": true
363
+ },
364
+ {
365
+ "pattern": "\\bComing soon\\b",
366
+ "description": "Remove 'Coming soon' placeholder",
367
+ "is_error": true
368
+ },
369
+ {
370
+ "pattern": "\\[Add .*?\\]",
371
+ "description": "Remove '[Add...]' placeholder",
372
+ "is_error": true
373
+ },
374
+ {
375
+ "pattern": "\\[Replace .*?\\]",
376
+ "description": "Remove '[Replace...]' placeholder",
377
+ "is_error": true
378
+ },
379
+ {
380
+ "pattern": "\\[Example.*?\\]",
381
+ "description": "Remove '[Example...]' placeholder",
382
+ "is_error": true
383
+ },
384
+ {
385
+ "pattern": "\\[Add text here\\]",
386
+ "description": "Remove '[Add text here]' placeholder",
387
+ "is_error": true
388
+ },
389
+ {
390
+ "pattern": "\\bTo be filled\\b",
391
+ "description": "Remove 'To be filled' placeholder",
392
+ "is_error": true
393
+ }
394
+ ],
395
+ "periods": [
396
+ {
397
+ "pattern": "\\.\\.",
398
+ "description": "Remove double periods",
399
+ "is_error": true
400
+ },
401
+ {
402
+ "pattern": "(?<!\\.)\\.\\s*\\.\\s*",
403
+ "description": "Remove multiple standalone periods",
404
+ "is_error": true
405
+ },
406
+ {
407
+ "pattern": "\\s+\\.",
408
+ "description": "Remove unnecessary spaces before periods",
409
+ "is_error": true
410
+ },
411
+ {
412
+ "pattern": "(?<!\\w)\\.\\s*$",
413
+ "description": "Avoid ending sentences with only a period (check for sentence fragment)",
414
+ "is_error": true
415
+ },
416
+ {
417
+ "pattern": "\\.(?!\\s|$)",
418
+ "description": "Add a space after a period unless at the end of the text",
419
+ "is_error": true
420
+ },
421
+ {
422
+ "pattern": "(\\.{3,})",
423
+ "description": "Replace repeated periods with an ellipsis ('...') where appropriate",
424
+ "is_error": true,
425
+ "replacement": "..."
426
+ },
427
+ {
428
+ "pattern": "(?<!\\s)\\.{3}(?!\\s)",
429
+ "description": "Ensure spaces before and after ellipses",
430
+ "is_error": true
431
+ },
432
+ {
433
+ "pattern": "\\.{4,}",
434
+ "description": "Replace four or more periods with a single ellipsis ('...')",
435
+ "is_error": true,
436
+ "replacement": "..."
437
+ },
438
+ {
439
+ "pattern": "\\.(\\d)",
440
+ "description": "Add a space between the period and the number if it's not a decimal",
441
+ "is_error": true
442
+ },
443
+ {
444
+ "pattern": "\\.\\s+(\\.|\\d)",
445
+ "description": "Remove extra spaces after a period if followed by another period or number",
446
+ "is_error": true
447
+ },
448
+ {
449
+ "pattern": "\\bU\\.S\\.C\\.\\s*\\d+\\b",
450
+ "description": "Do not flag 'U.S.C. x' as a period issue",
451
+ "is_error": false
452
+ }
453
+ ],
454
+ "table_figure_references": [
455
+ {
456
+ "pattern": "(?<!^)(?<![.!?])\\s+(Table|Figure)\\s+\\d+(?:-\\d+)?",
457
+ "description": "'Table' and 'Figure' references within sentences should be lowercase",
458
+ "is_error": true,
459
+ "enforce_case": "lowercase"
460
+ },
461
+ {
462
+ "pattern": "^(table|figure)\\s+\\d+(?:-\\d+)?",
463
+ "description": "'Table' and 'Figure' references at the start of a sentence should be capitalized",
464
+ "is_error": true,
465
+ "enforce_case": "capitalized"
466
+ }
467
+ ],
468
+ "parentheses": [
469
+ {
470
+ "pattern": "\\([^)]*$|[^(]*\\)",
471
+ "description": "Detect unmatched parentheses (missing opening or closing parenthesis)",
472
+ "is_error": true,
473
+ "notes": "Matches cases where a closing parenthesis is missing after an opening or an opening parenthesis is missing before a closing."
474
+ }
475
+ ]
476
+ }