create-filegrc 0.6.4 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/package.json +1 -1
  2. package/src/defaults.js +60 -121
  3. package/src/index.js +12 -11
  4. package/template/AGENTS.md +8 -3
  5. package/template/README.md +9 -5
  6. package/template/data/AGENTS.md +6 -3
  7. package/template/data/appointments/appointment-policy-owner.json +1 -1
  8. package/template/data/documents/document-data-retention-schedule.json +1 -1
  9. package/template/data/documents/document-data-retention-schedule.md +7 -9
  10. package/template/data/documents/{document-incident-response-plan.json → document-security-incident-recovery-plan.json} +5 -6
  11. package/template/data/documents/document-security-incident-recovery-plan.md +79 -0
  12. package/template/data/obligations/AGENTS.md +2 -1
  13. package/template/data/policies/AGENTS.md +18 -8
  14. package/template/data/policies/policy-information-security.json +1 -7
  15. package/template/data/policies/policy-information-security.md +50 -185
  16. package/template/data/training/training-security-awareness.json +1 -4
  17. package/template/data/training/training-security-awareness.md +16 -2
  18. package/template/package.json +1 -1
  19. package/template/data/documents/document-business-continuity-disaster-recovery.json +0 -29
  20. package/template/data/documents/document-business-continuity-disaster-recovery.md +0 -192
  21. package/template/data/documents/document-contractor-policy-acknowledgement.json +0 -20
  22. package/template/data/documents/document-contractor-policy-acknowledgement.md +0 -24
  23. package/template/data/documents/document-contractor-training-acknowledgement.json +0 -23
  24. package/template/data/documents/document-contractor-training-acknowledgement.md +0 -20
  25. package/template/data/documents/document-employee-handbook-acknowledgement.json +0 -20
  26. package/template/data/documents/document-employee-handbook-acknowledgement.md +0 -19
  27. package/template/data/documents/document-employee-policy-acknowledgement.json +0 -20
  28. package/template/data/documents/document-employee-policy-acknowledgement.md +0 -24
  29. package/template/data/documents/document-employee-training-acknowledgement.json +0 -23
  30. package/template/data/documents/document-employee-training-acknowledgement.md +0 -20
  31. package/template/data/documents/document-incident-response-plan.md +0 -138
  32. package/template/data/policies/policy-anti-bribery-corruption.json +0 -19
  33. package/template/data/policies/policy-anti-bribery-corruption.md +0 -87
  34. package/template/data/policies/policy-clear-desk-screen.json +0 -18
  35. package/template/data/policies/policy-clear-desk-screen.md +0 -49
  36. package/template/data/policies/policy-data-protection-handling.json +0 -22
  37. package/template/data/policies/policy-data-protection-handling.md +0 -130
  38. package/template/data/policies/policy-employee-handbook.json +0 -21
  39. package/template/data/policies/policy-employee-handbook.md +0 -161
  40. package/template/data/policies/policy-mobile-computing-communications.json +0 -18
  41. package/template/data/policies/policy-mobile-computing-communications.md +0 -74
  42. package/template/data/training/training-anti-bribery-high-risk-roles.json +0 -16
  43. package/template/data/training/training-anti-bribery-high-risk-roles.md +0 -19
  44. package/template/data/training/training-privileged-sensitive-roles.json +0 -20
  45. package/template/data/training/training-privileged-sensitive-roles.md +0 -20
  46. package/template/data/training/training-secure-development.json +0 -19
  47. package/template/data/training/training-secure-development.md +0 -22
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-filegrc",
3
- "version": "0.6.4",
3
+ "version": "0.7.0",
4
4
  "description": "Create a filegrc workspace for a SOC 2 program",
5
5
  "license": "MIT",
6
6
  "repository": {
package/src/defaults.js CHANGED
@@ -7,13 +7,8 @@ const PROGRAM_LEAD_ID = "person-program-lead";
7
7
  const POLICY_OWNER_APPOINTMENT_ID = "appointment-policy-owner";
8
8
  const OVERSIGHT_TEAM_ID = "team-security-risk-oversight";
9
9
  const INFORMATION_SECURITY_POLICY_ID = "policy-information-security";
10
- const DATA_POLICY_ID = "policy-data-protection-handling";
11
10
  const RETENTION_SCHEDULE_ID = "document-data-retention-schedule";
12
- const ROLE_TRAINING_IDS = [
13
- "training-secure-development",
14
- "training-privileged-sensitive-roles",
15
- "training-anti-bribery-high-risk-roles"
16
- ];
11
+ const SECURITY_PLAN_ID = "document-security-incident-recovery-plan";
17
12
  const FILEGRC_SOURCE_FAMILIES = [
18
13
  "training-acknowledgement",
19
14
  "exception-finding",
@@ -109,7 +104,7 @@ const controls = [
109
104
  controlType: "preventive",
110
105
  operationMode: "manual",
111
106
  operationPattern: "scheduled",
112
- policies: [INFORMATION_SECURITY_POLICY_ID, "policy-anti-bribery-corruption"]
107
+ policies: [INFORMATION_SECURITY_POLICY_ID]
113
108
  },
114
109
  {
115
110
  id: "control-policy-management",
@@ -121,13 +116,7 @@ const controls = [
121
116
  controlType: "preventive",
122
117
  operationMode: "manual",
123
118
  operationPattern: "mixed",
124
- policies: [
125
- "policy-anti-bribery-corruption",
126
- "policy-clear-desk-screen",
127
- DATA_POLICY_ID,
128
- INFORMATION_SECURITY_POLICY_ID,
129
- "policy-mobile-computing-communications"
130
- ]
119
+ policies: [INFORMATION_SECURITY_POLICY_ID]
131
120
  },
132
121
  {
133
122
  id: "control-security-communication",
@@ -139,7 +128,7 @@ const controls = [
139
128
  controlType: "preventive",
140
129
  operationMode: "hybrid",
141
130
  operationPattern: "mixed",
142
- policies: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
131
+ policies: [INFORMATION_SECURITY_POLICY_ID]
143
132
  },
144
133
  {
145
134
  id: "control-workforce-expectations",
@@ -151,7 +140,7 @@ const controls = [
151
140
  controlType: "preventive",
152
141
  operationMode: "manual",
153
142
  operationPattern: "event-driven",
154
- policies: [INFORMATION_SECURITY_POLICY_ID, "policy-anti-bribery-corruption"]
143
+ policies: [INFORMATION_SECURITY_POLICY_ID]
155
144
  },
156
145
  {
157
146
  id: "control-security-training",
@@ -163,18 +152,6 @@ const controls = [
163
152
  controlType: "preventive",
164
153
  operationMode: "manual",
165
154
  operationPattern: "mixed",
166
- policies: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID, "policy-anti-bribery-corruption"]
167
- },
168
- {
169
- id: "control-performance-review",
170
- code: "HR-03",
171
- title: "Workforce performance review",
172
- statement: "Managers conduct a documented performance review at least annually and address responsibilities, conduct, and corrective action as appropriate to each worker's role.",
173
- requirements: ["CC1.5"],
174
- activity: "Complete and retain annual performance reviews and resulting corrective work.",
175
- controlType: "detective",
176
- operationMode: "manual",
177
- operationPattern: "scheduled",
178
155
  policies: [INFORMATION_SECURITY_POLICY_ID]
179
156
  },
180
157
  {
@@ -187,7 +164,7 @@ const controls = [
187
164
  controlType: "detective",
188
165
  operationMode: "manual",
189
166
  operationPattern: "mixed",
190
- policies: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
167
+ policies: [INFORMATION_SECURITY_POLICY_ID]
191
168
  },
192
169
  {
193
170
  id: "control-monitoring-remediation",
@@ -211,7 +188,7 @@ const controls = [
211
188
  controlType: "preventive",
212
189
  operationMode: "hybrid",
213
190
  operationPattern: "event-driven",
214
- policies: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
191
+ policies: [INFORMATION_SECURITY_POLICY_ID]
215
192
  },
216
193
  {
217
194
  id: "control-strong-authentication",
@@ -223,7 +200,7 @@ const controls = [
223
200
  controlType: "preventive",
224
201
  operationMode: "hybrid",
225
202
  operationPattern: "continuous",
226
- policies: [INFORMATION_SECURITY_POLICY_ID, "policy-mobile-computing-communications"]
203
+ policies: [INFORMATION_SECURITY_POLICY_ID]
227
204
  },
228
205
  {
229
206
  id: "control-access-review-offboarding",
@@ -235,7 +212,7 @@ const controls = [
235
212
  controlType: "detective",
236
213
  operationMode: "manual",
237
214
  operationPattern: "mixed",
238
- policies: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
215
+ policies: [INFORMATION_SECURITY_POLICY_ID]
239
216
  },
240
217
  {
241
218
  id: "control-physical-workspace-security",
@@ -247,7 +224,7 @@ const controls = [
247
224
  controlType: "preventive",
248
225
  operationMode: "manual",
249
226
  operationPattern: "continuous",
250
- policies: [INFORMATION_SECURITY_POLICY_ID, "policy-clear-desk-screen", "policy-mobile-computing-communications"]
227
+ policies: [INFORMATION_SECURITY_POLICY_ID]
251
228
  },
252
229
  {
253
230
  id: "control-data-classification-inventory",
@@ -259,7 +236,7 @@ const controls = [
259
236
  controlType: "preventive",
260
237
  operationMode: "manual",
261
238
  operationPattern: "mixed",
262
- policies: [DATA_POLICY_ID, INFORMATION_SECURITY_POLICY_ID]
239
+ policies: [INFORMATION_SECURITY_POLICY_ID]
263
240
  },
264
241
  {
265
242
  id: "control-encryption-transmission",
@@ -271,7 +248,7 @@ const controls = [
271
248
  controlType: "preventive",
272
249
  operationMode: "automated",
273
250
  operationPattern: "continuous",
274
- policies: [DATA_POLICY_ID, INFORMATION_SECURITY_POLICY_ID, "policy-mobile-computing-communications"]
251
+ policies: [INFORMATION_SECURITY_POLICY_ID]
275
252
  },
276
253
  {
277
254
  id: "control-data-retention-disposal",
@@ -283,7 +260,7 @@ const controls = [
283
260
  controlType: "preventive",
284
261
  operationMode: "hybrid",
285
262
  operationPattern: "event-driven",
286
- policies: [DATA_POLICY_ID, INFORMATION_SECURITY_POLICY_ID]
263
+ policies: [INFORMATION_SECURITY_POLICY_ID]
287
264
  },
288
265
  {
289
266
  id: "control-inventory-configuration",
@@ -303,11 +280,11 @@ const controls = [
303
280
  title: "Endpoint protection",
304
281
  statement: "Devices that access company systems use approved configuration, encryption, screen locking, supported software, security updates, and continuous malware protection when supported.",
305
282
  requirements: ["CC6.6", "CC7.1"],
306
- activity: "Manage endpoint safeguards and perform a full or equivalent malware scan at least monthly.",
283
+ activity: "Use continuous platform protection where supported and verify endpoint configuration, update, and compliance state on the risk-based schedule recorded in an Obligation when periodic work is needed.",
307
284
  controlType: "preventive",
308
285
  operationMode: "automated",
309
286
  operationPattern: "mixed",
310
- policies: [INFORMATION_SECURITY_POLICY_ID, "policy-mobile-computing-communications"]
287
+ policies: [INFORMATION_SECURITY_POLICY_ID]
311
288
  },
312
289
  {
313
290
  id: "control-network-security",
@@ -319,15 +296,15 @@ const controls = [
319
296
  controlType: "preventive",
320
297
  operationMode: "hybrid",
321
298
  operationPattern: "mixed",
322
- policies: [INFORMATION_SECURITY_POLICY_ID, "policy-mobile-computing-communications"]
299
+ policies: [INFORMATION_SECURITY_POLICY_ID]
323
300
  },
324
301
  {
325
302
  id: "control-change-management",
326
303
  code: "CHG-01",
327
304
  title: "Change management",
328
- statement: "Material software and infrastructure changes are recorded, reviewed, tested, approved, deployed through an authorized process, and recoverable; emergency changes receive later review.",
305
+ statement: "Material software and infrastructure changes are recorded, tested, approved, deployed through an authorized process, and recoverable. Review is independent when practical; a small team records a risk-appropriate compensating or post-deployment review, or an approved Exception, when independent pre-deployment review is not possible.",
329
306
  requirements: ["CC6.8", "CC8.1"],
330
- activity: "Record the reason, author, reviewer, test result, deployment, and rollback method.",
307
+ activity: "Record the reason, author, risk, reviewer or compensating review, test result, deployment, and rollback method.",
331
308
  controlType: "preventive",
332
309
  operationMode: "hybrid",
333
310
  operationPattern: "event-driven",
@@ -337,9 +314,9 @@ const controls = [
337
314
  id: "control-vulnerability-management",
338
315
  code: "VUL-01",
339
316
  title: "Vulnerability management",
340
- statement: "The organization monitors for vulnerabilities and scans internet-facing and production systems at least quarterly and after material changes when practical. Critical, High, Medium, and Low vulnerabilities are remediated within 7, 14, 30, and 30 days unless an approved exception applies.",
317
+ statement: "The organization monitors for vulnerabilities, chooses scan coverage and cadence based on exposure and risk, and assigns each confirmed vulnerability an approved risk-based remediation target or time-bound Exception.",
341
318
  requirements: ["CC7.1", "CC7.2", "CC7.3"],
342
- activity: "Identify, validate, prioritize, remediate, or approve time-bound exceptions for vulnerabilities.",
319
+ activity: "Choose scan coverage and cadence. Review the starter remediation targets of Critical 7 days, High 14 days, Medium 30 days, and Low 90 days, then record the approved targets or time-bound Exceptions.",
343
320
  controlType: "detective",
344
321
  operationMode: "hybrid",
345
322
  operationPattern: "mixed",
@@ -349,7 +326,7 @@ const controls = [
349
326
  id: "control-penetration-testing",
350
327
  code: "PEN-01",
351
328
  title: "Penetration testing",
352
- statement: "An independent penetration test evaluates the external attack surface of the in-scope service at least annually, with findings tracked to resolution or approved risk treatment.",
329
+ statement: "Management records whether independent penetration testing is needed for the in-scope service, then documents its scope and cadence from exposure, change, customer commitments, and risk decisions. Findings are tracked to resolution or approved risk treatment.",
353
330
  requirements: ["CC7.1", "CC7.2"],
354
331
  activity: "Define scope, perform independent testing, review results, and track findings.",
355
332
  controlType: "detective",
@@ -361,7 +338,7 @@ const controls = [
361
338
  id: "control-logging-monitoring",
362
339
  code: "LOG-01",
363
340
  title: "Logging and monitoring",
364
- statement: "Important systems record security and operational events, protect and retain security logs for at least 12 months, and provide risk-based alerting, quarterly review, annual end-to-end alert-path testing, and testing after material alerting changes.",
341
+ statement: "Important systems record and protect security and operational events, retain them according to the approved Data Retention Schedule, and use risk-based alerting, review, and alert-path testing recorded in the applicable Controls and Obligations.",
365
342
  requirements: ["CC7.2", "CC7.3"],
366
343
  activity: "Collect, protect, alert on, test, and review important log output and access.",
367
344
  controlType: "detective",
@@ -379,7 +356,7 @@ const controls = [
379
356
  controlType: "corrective",
380
357
  operationMode: "hybrid",
381
358
  operationPattern: "event-driven",
382
- policies: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
359
+ policies: [INFORMATION_SECURITY_POLICY_ID]
383
360
  },
384
361
  {
385
362
  id: "control-incident-exercise",
@@ -397,9 +374,9 @@ const controls = [
397
374
  id: "control-backup-restoration",
398
375
  code: "BCP-01",
399
376
  title: "Backup and restoration",
400
- statement: "Important production data is backed up at least daily and retained for at least 30 days unless an approved stronger objective applies, with failures monitored and restoration tested annually.",
377
+ statement: "Each important System has backup scope, frequency, retention, monitoring, and restore validation that meet its approved recovery objectives, or a documented alternate recovery approach when backups are not the chosen safeguard.",
401
378
  requirements: ["CC7.5", "CC9.1"],
402
- activity: "Protect and monitor backups, then test retrieval and use of restored data.",
379
+ activity: "Record System recovery objectives and backup or alternate recovery procedures, monitor the chosen safeguards, and validate recovery on the approved schedule.",
403
380
  controlType: "corrective",
404
381
  operationMode: "hybrid",
405
382
  operationPattern: "scheduled",
@@ -421,13 +398,13 @@ const controls = [
421
398
  id: "control-vendor-due-diligence",
422
399
  code: "VEN-01",
423
400
  title: "Vendor due diligence and contracting",
424
- statement: "Vendors receive access to Confidential or Restricted data only after risk-based security and privacy review and suitable contractual safeguards.",
401
+ statement: "New Vendors receive risk-based security and privacy review and suitable contractual safeguards before access to Confidential or Restricted data. Vendors that predate Policy adoption receive a documented transition review, deadline, or approved risk acceptance.",
425
402
  requirements: ["CC9.2"],
426
403
  activity: "Assess service, data, access, assurance, recovery, incidents, and contract terms before access.",
427
404
  controlType: "preventive",
428
405
  operationMode: "manual",
429
406
  operationPattern: "event-driven",
430
- policies: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
407
+ policies: [INFORMATION_SECURITY_POLICY_ID]
431
408
  },
432
409
  {
433
410
  id: "control-vendor-monitoring",
@@ -439,7 +416,7 @@ const controls = [
439
416
  controlType: "detective",
440
417
  operationMode: "manual",
441
418
  operationPattern: "mixed",
442
- policies: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
419
+ policies: [INFORMATION_SECURITY_POLICY_ID]
443
420
  },
444
421
  {
445
422
  id: "control-security-exceptions",
@@ -451,7 +428,7 @@ const controls = [
451
428
  controlType: "preventive",
452
429
  operationMode: "manual",
453
430
  operationPattern: "event-driven",
454
- policies: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
431
+ policies: [INFORMATION_SECURITY_POLICY_ID]
455
432
  }
456
433
  ];
457
434
 
@@ -473,13 +450,8 @@ const obligations = [
473
450
  recurrence: calendar("year", 1),
474
451
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
475
452
  scopeResourceIds: [
476
- "policy-anti-bribery-corruption",
477
- "policy-clear-desk-screen",
478
- DATA_POLICY_ID,
479
453
  INFORMATION_SECURITY_POLICY_ID,
480
- "policy-mobile-computing-communications",
481
- "document-business-continuity-disaster-recovery",
482
- "document-incident-response-plan",
454
+ SECURITY_PLAN_ID,
483
455
  RETENTION_SCHEDULE_ID
484
456
  ],
485
457
  controlIds: ["control-policy-management"],
@@ -492,7 +464,7 @@ const obligations = [
492
464
  recurrence: calendar("year", 1),
493
465
  ownerIds: [OVERSIGHT_TEAM_ID],
494
466
  controlIds: ["control-risk-assessment"],
495
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
467
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
496
468
  },
497
469
  {
498
470
  id: "obligation-annual-security-training",
@@ -507,15 +479,6 @@ const obligations = [
507
479
  "control-workforce-expectations",
508
480
  "control-security-training"
509
481
  ],
510
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
511
- },
512
- {
513
- id: "obligation-annual-performance-review",
514
- title: "Annual workforce performance review",
515
- activityType: "performance-review",
516
- recurrence: calendar("year", 1),
517
- ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
518
- controlIds: ["control-performance-review"],
519
482
  policyIds: [INFORMATION_SECURITY_POLICY_ID]
520
483
  },
521
484
  {
@@ -525,7 +488,7 @@ const obligations = [
525
488
  recurrence: calendar("month", 3),
526
489
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
527
490
  controlIds: ["control-access-review-offboarding"],
528
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
491
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
529
492
  },
530
493
  {
531
494
  id: "obligation-annual-access-review",
@@ -534,7 +497,7 @@ const obligations = [
534
497
  recurrence: calendar("year", 1),
535
498
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
536
499
  controlIds: ["control-access-review-offboarding"],
537
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
500
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
538
501
  },
539
502
  {
540
503
  id: "obligation-annual-inventory-review",
@@ -543,12 +506,12 @@ const obligations = [
543
506
  recurrence: calendar("year", 1),
544
507
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
545
508
  controlIds: ["control-inventory-configuration", "control-data-classification-inventory"],
546
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
509
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
547
510
  },
548
511
  {
549
- id: "obligation-monthly-malware-scan",
550
- title: "Monthly endpoint malware scan",
551
- activityType: "security-scan",
512
+ id: "obligation-monthly-endpoint-protection-verification",
513
+ title: "Monthly endpoint protection configuration verification",
514
+ activityType: "endpoint-verification",
552
515
  recurrence: calendar("month", 1),
553
516
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
554
517
  controlIds: ["control-endpoint-protection"],
@@ -596,8 +559,8 @@ const obligations = [
596
559
  activityType: "exercise",
597
560
  recurrence: calendar("year", 1),
598
561
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
599
- scopeResourceIds: ["document-incident-response-plan"],
600
- templateResourceId: "document-incident-response-plan",
562
+ scopeResourceIds: [SECURITY_PLAN_ID],
563
+ templateResourceId: SECURITY_PLAN_ID,
601
564
  controlIds: ["control-incident-exercise", "control-logging-monitoring"],
602
565
  policyIds: [INFORMATION_SECURITY_POLICY_ID]
603
566
  },
@@ -616,8 +579,8 @@ const obligations = [
616
579
  activityType: "exercise",
617
580
  recurrence: calendar("year", 1),
618
581
  ownerIds: [OVERSIGHT_TEAM_ID],
619
- scopeResourceIds: ["document-business-continuity-disaster-recovery"],
620
- templateResourceId: "document-business-continuity-disaster-recovery",
582
+ scopeResourceIds: [SECURITY_PLAN_ID],
583
+ templateResourceId: SECURITY_PLAN_ID,
621
584
  controlIds: ["control-continuity-exercise"],
622
585
  policyIds: [INFORMATION_SECURITY_POLICY_ID]
623
586
  },
@@ -628,7 +591,7 @@ const obligations = [
628
591
  recurrence: calendar("year", 1),
629
592
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
630
593
  controlIds: ["control-vendor-due-diligence", "control-vendor-monitoring"],
631
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
594
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
632
595
  },
633
596
  {
634
597
  id: "obligation-annual-emergency-contact-review",
@@ -636,7 +599,7 @@ const obligations = [
636
599
  activityType: "continuity-review",
637
600
  recurrence: calendar("year", 1),
638
601
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
639
- scopeResourceIds: ["document-business-continuity-disaster-recovery"],
602
+ scopeResourceIds: [SECURITY_PLAN_ID],
640
603
  controlIds: ["control-continuity-exercise"],
641
604
  policyIds: [INFORMATION_SECURITY_POLICY_ID]
642
605
  },
@@ -660,7 +623,7 @@ const obligations = [
660
623
  window: eventWindow(0),
661
624
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
662
625
  controlIds: ["control-access-authorization"],
663
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
626
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
664
627
  },
665
628
  {
666
629
  id: "obligation-worker-start-assets",
@@ -684,19 +647,7 @@ const obligations = [
684
647
  scopeResourceIds: ["training-security-awareness"],
685
648
  templateResourceId: "training-security-awareness",
686
649
  controlIds: ["control-security-training"],
687
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
688
- },
689
- {
690
- id: "obligation-worker-start-role-training",
691
- title: "Complete or document non-applicability of role-based training",
692
- activityType: "role-training",
693
- recurrence: event("person-started"),
694
- triggerPrompt: "New employee or contractor?",
695
- window: eventWindow(30),
696
- ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
697
- scopeResourceIds: ROLE_TRAINING_IDS,
698
- controlIds: ["control-security-training"],
699
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID, "policy-anti-bribery-corruption"]
650
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
700
651
  },
701
652
  {
702
653
  id: "obligation-worker-end-access",
@@ -707,7 +658,7 @@ const obligations = [
707
658
  window: eventWindowHours(24),
708
659
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
709
660
  controlIds: ["control-access-review-offboarding"],
710
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
661
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
711
662
  },
712
663
  {
713
664
  id: "obligation-worker-end-assets",
@@ -730,7 +681,7 @@ const obligations = [
730
681
  window: eventWindowHours(0),
731
682
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
732
683
  controlIds: ["control-access-review-offboarding"],
733
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
684
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
734
685
  },
735
686
  {
736
687
  id: "obligation-worker-role-change-access",
@@ -741,19 +692,7 @@ const obligations = [
741
692
  window: eventWindow(3),
742
693
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
743
694
  controlIds: ["control-access-authorization", "control-access-review-offboarding"],
744
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
745
- },
746
- {
747
- id: "obligation-worker-role-change-training",
748
- title: "Complete or document non-applicability of training for the new role",
749
- activityType: "role-training",
750
- recurrence: event("person-role-changed"),
751
- triggerPrompt: "Worker role changed?",
752
- window: eventWindow(30),
753
- ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
754
- scopeResourceIds: ROLE_TRAINING_IDS,
755
- controlIds: ["control-security-training"],
756
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID, "policy-anti-bribery-corruption"]
695
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
757
696
  },
758
697
  {
759
698
  id: "obligation-personal-device-approval",
@@ -764,7 +703,7 @@ const obligations = [
764
703
  window: eventWindow(0),
765
704
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
766
705
  controlIds: ["control-access-authorization", "control-endpoint-protection"],
767
- policyIds: [INFORMATION_SECURITY_POLICY_ID, "policy-mobile-computing-communications"]
706
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
768
707
  },
769
708
  {
770
709
  id: "obligation-personal-device-registration",
@@ -775,7 +714,7 @@ const obligations = [
775
714
  window: eventWindow(0),
776
715
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
777
716
  controlIds: ["control-inventory-configuration", "control-endpoint-protection"],
778
- policyIds: [INFORMATION_SECURITY_POLICY_ID, "policy-mobile-computing-communications"]
717
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
779
718
  },
780
719
  {
781
720
  id: "obligation-vendor-access-review",
@@ -786,7 +725,7 @@ const obligations = [
786
725
  window: eventWindow(0),
787
726
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
788
727
  controlIds: ["control-vendor-due-diligence"],
789
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
728
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
790
729
  },
791
730
  {
792
731
  id: "obligation-vendor-access-contract",
@@ -797,7 +736,7 @@ const obligations = [
797
736
  window: eventWindow(0),
798
737
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
799
738
  controlIds: ["control-vendor-due-diligence"],
800
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
739
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
801
740
  },
802
741
  {
803
742
  id: "obligation-vendor-material-change-review",
@@ -808,7 +747,7 @@ const obligations = [
808
747
  window: eventWindow(30),
809
748
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
810
749
  controlIds: ["control-vendor-monitoring"],
811
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
750
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
812
751
  },
813
752
  {
814
753
  id: "obligation-vendor-material-change-records",
@@ -819,7 +758,7 @@ const obligations = [
819
758
  window: eventWindow(30),
820
759
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
821
760
  controlIds: ["control-vendor-monitoring", "control-data-classification-inventory"],
822
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
761
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
823
762
  },
824
763
  {
825
764
  id: "obligation-system-change-risk",
@@ -830,7 +769,7 @@ const obligations = [
830
769
  window: eventWindow(30),
831
770
  ownerIds: [OVERSIGHT_TEAM_ID],
832
771
  controlIds: ["control-risk-assessment"],
833
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
772
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
834
773
  },
835
774
  {
836
775
  id: "obligation-system-change-scan",
@@ -852,7 +791,7 @@ const obligations = [
852
791
  window: eventWindow(30),
853
792
  ownerIds: [OVERSIGHT_TEAM_ID],
854
793
  controlIds: ["control-policy-management", "control-security-communication"],
855
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
794
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
856
795
  },
857
796
  {
858
797
  id: "obligation-system-change-retention",
@@ -865,7 +804,7 @@ const obligations = [
865
804
  scopeResourceIds: [RETENTION_SCHEDULE_ID],
866
805
  templateResourceId: RETENTION_SCHEDULE_ID,
867
806
  controlIds: ["control-data-retention-disposal", "control-data-classification-inventory"],
868
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
807
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
869
808
  },
870
809
  {
871
810
  id: "obligation-system-change-alert-path",
@@ -920,7 +859,7 @@ const obligations = [
920
859
  window: eventWindow(7),
921
860
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
922
861
  controlIds: ["control-vendor-monitoring", "control-access-review-offboarding"],
923
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
862
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
924
863
  },
925
864
  {
926
865
  id: "obligation-data-use-change-assessment",
@@ -931,7 +870,7 @@ const obligations = [
931
870
  window: eventWindow(30),
932
871
  ownerIds: [OVERSIGHT_TEAM_ID],
933
872
  controlIds: ["control-risk-assessment", "control-data-classification-inventory"],
934
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
873
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
935
874
  },
936
875
  {
937
876
  id: "obligation-incident-closure-review",
@@ -1030,7 +969,7 @@ const obligations = [
1030
969
  window: eventWindow(7),
1031
970
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
1032
971
  controlIds: ["control-inventory-configuration", "control-data-retention-disposal"],
1033
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
972
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
1034
973
  },
1035
974
  {
1036
975
  id: "obligation-continuity-activation-review",
package/src/index.js CHANGED
@@ -440,7 +440,7 @@ The generated workspace starts with foundational program records:
440
440
 
441
441
  - Workspace and renderer settings
442
442
  - The initial active owner
443
- - The two core Appointment records: an active Policy Owner plus a planned Independent Policy Reviewer assignment. Create another Appointment only when management actually delegates a named responsibility.
443
+ - The two core Appointment records: an active Policy Owner plus a planned Independent Policy Reviewer assignment. Create another Appointment only when the company actually delegates a named responsibility.
444
444
  - A planned security and risk oversight team that still needs an independent chair
445
445
  - The filegrc Git repository as a governance system of record
446
446
  - A default 5x5 risk method and Public, Internal, Confidential, and Restricted data classifications
@@ -469,23 +469,24 @@ The generated workspace starts with the SOC 2 Security category:
469
469
  - Active framework records for the 2017 Trust Services Criteria with revised points of focus (2022) and the 2018 SOC 2 Description Criteria with revised implementation guidance (2022)
470
470
  - The 33 Common Criteria reference IDs from CC1.1 through CC9.2, without the licensed criteria text
471
471
  - The nine Description Criteria reference IDs from DC1 through DC9, without the licensed criteria text
472
- - Planned controls mapped to those references and the included policies
473
- - The two core Appointment records. Policy Owner starts active; Independent Policy Reviewer remains Ready until assigned. Program coordination, incident, recovery, executive, legal, privacy, insurance, communications, and audit-coordination functions stay with the Policy Owner unless management delegates one through a custom Appointment.
472
+ - Planned controls mapped to those references and one required Information Security Policy
473
+ - The two core Appointment records. Policy Owner starts active; Independent Policy Reviewer remains Ready until assigned. The Policy Owner coordinates incident, recovery, executive, communications, audit, insurance, privacy, and legal input unless the company delegates a function through a custom Appointment. FileGRC does not require in-house counsel or a standing legal retainer.
474
474
  - A security and risk oversight team chaired by an independent reviewer who may be internal or external
475
- - Recurring obligations for the reviews, scans, tests, training, and meetings required by the included policies
475
+ - One Security Awareness Training record and proposed recurring obligations for reviews, scans, tests, training, and meetings
476
+ - One combined Security Incident and Recovery Plan plus a focused Data Retention Schedule
476
477
  - A default 5x5 risk method and Public, Internal, Confidential, and Restricted data classifications
477
478
 
478
- Treat every planned control as a proposal until its owner, actual procedure in Record Markdown, system scope, cadence, authoritative evidence sources, implementation date, and mappings match actual practice. For a control linked to filegrc obligations, every non-retired Work Queue schedule must be enabled and its governing policies effective. Marking the control implemented starts eligible schedules. Do not mark a control implemented because a policy describes it. Add Availability, Processing Integrity, Confidentiality, or Privacy criteria only when they are in scope.
479
+ Treat every planned Control as a proposal until its owner, actual procedure in Record Markdown, System scope, cadence, authoritative evidence sources, implementation date, and mappings match actual practice. FileGRC does not infer implementation from Policy prose. Enable the applicable Work Queue schedules during implementation; they remain dormant until the Policy is active and effective. Add Availability, Processing Integrity, Confidentiality, Privacy, employment, anti-bribery, or other broader GRC records only when the company chooses to expand the scope.
479
480
 
480
- The recurring obligations mirror the fixed cadences in the starter policies. They remain proposals until every governing policy is active and effective and, when they name controls, at least one linked control is implemented. Update the policy, control, and obligation together when an approved cadence changes. Create separate completion records, such as meetings, reviews, scans, tests, exercises, and attestations, for each period.`,
481
+ The recurring Obligations contain reviewable starter defaults. They remain proposed until the company confirms their scope, owner, cadence, and proof. Enabling a schedule accepts those operational facts but does not start occurrences until the Information Security Policy is active and effective. Create separate completion records, such as meetings, reviews, scans, tests, exercises, and attestations, for each period.`,
481
482
  audit_preparation_guidance: "Preparation creates a separate system description, management assertion, and management representation document for the engagement from the local starter templates. Type 2 preparation also creates a period completeness statement and one `audit-population` record for each standard population. It is safe to run again and does not approve documents, mark controls implemented, or create evidence. Do not reuse one completed management document across engagements.",
482
483
  starter_setup: `## Finish initial setup
483
484
 
484
- The starter policies, controls, and obligations are proposals. They do not state that ${companyName} operates the described controls.
485
+ The starter Policy, Controls, plan, schedule, training, and Obligations are proposals. They do not state that ${companyName} operates the described Controls.
485
486
 
486
487
  1. Run \`npx filegrc setup\` for guided service and goal setup, or use browser onboarding. Then finish Step 1 by adding the real reviewers and operators, finishing the oversight team, and confirming applicable criteria, commitments, material vendors, and in-scope systems.
487
- 2. Review the starter policies, appoint a reviewer who is separate from the policy owner, and activate only the policies that match current practice. The reviewer will usually be another person in the organization, but may be external.
488
- 3. Review the starter control set and implement each applicable Control with its actual procedure, scope, cadence, and authoritative evidence source Systems. Confirm every source is active, has the required evidence role and current access owners, and includes repeatable retrieval instructions in Record Markdown. Add the implementation date, confirm any linked Work Queue schedules are enabled, then record any complementary customer or subservice controls.
488
+ 2. Tailor the Information Security Policy and have someone other than its owner approve it. Approval accepts the Policy but does not mean the Controls are implemented.
489
+ 3. Review the starter Control set, combined Security Incident and Recovery Plan, Data Retention Schedule, Security Awareness Training, and proposed Obligations. Implement each applicable Control with its actual procedure, scope, cadence, Components, and authoritative evidence sources. Enable the applicable schedules, review the Policy activation assessment, then activate the Policy at the real implementation cutover.
489
490
  4. Run \`npx filegrc program-readiness --require-ready\`, record the management candidate period start when reliable evidence collection begins, maintain risk assessments and risks, update controls when needed, use Work Queue for scheduled work, and trigger Policy Events when changes create required actions.
490
491
  5. Engage a CPA firm, record the separate firm-agreed period in an audit record, review filegrc Evidence and External Evidence, and prepare fieldwork.`
491
492
  };
@@ -522,13 +523,13 @@ async function runCombinedSetup(target, input) {
522
523
  async function writeMinimalLockfile(target, name, versionRange) {
523
524
  const lock = {
524
525
  name,
525
- version: "0.6.4",
526
+ version: "0.7.0",
526
527
  lockfileVersion: 3,
527
528
  requires: true,
528
529
  packages: {
529
530
  "": {
530
531
  name,
531
- version: "0.6.4",
532
+ version: "0.7.0",
532
533
  dependencies: { filegrc: versionRange }
533
534
  }
534
535
  }
@@ -206,9 +206,14 @@ npx filegrc program-readiness --require-ready --summary --json
206
206
  The Evidence Ready gate requires:
207
207
 
208
208
  1. A management goal, selected systems, criteria, and controls.
209
- 2. Active policies with completed text, separate management approval, real approval and effective dates, and linked controls.
210
- 3. Implemented Controls with an owner, actual procedure, scope, operation pattern, mappings, implementation date, and every required linked Work Queue schedule running.
211
- 4. Every selected Control mapped to active authoritative Systems with the required evidence source roles, current access owners, and repeatable extraction instructions in Record Markdown.
209
+ 2. Policy content approved by someone other than its owner in Step 2, followed by active Policies with real effective dates at the Step 3 cutover.
210
+ 3. Implemented Controls with an owner, actual procedure, scope, operation pattern, mappings, implementation date, and every required linked Work Queue schedule enabled.
211
+ 4. Every selected Control mapped to active authoritative Components with the required evidence source roles, current access owners, and repeatable extraction instructions in Record Markdown.
212
+ 5. Required governed plans complete and active, with no unresolved activation blockers.
213
+
214
+ A Policy says what the company commits to do by the date it takes effect. Approval means the company accepts those commitments. It does not prove the work is done. Controls and operating records describe how the company meets them and provide the proof. A Control may be implemented against an approved inactive Policy, and enabled Obligations remain dormant until that Policy is active and effective.
215
+
216
+ Review `policyActivations` in Program Readiness before cutover. It shows planned or partial Controls, missing Components or evidence sources, missing schedules, unresolved Exceptions, and dates that need attention. At the end of Step 3, use the Controls-page review or `npx filegrc activate-policies --scaffold` to choose which approved Policies take effect. You can activate with a documented gap or approved Exception, but Evidence Readiness remains incomplete until every required Policy is active and operating. FileGRC does not infer technical implementation from Policy prose. Put configuration facts in Controls, Components, Systems, governed schedules, and Evidence.
212
217
 
213
218
  Onboarding does not create Evidence Artifacts. Complete authoritative source Components as part of Control implementation. For every incomplete family in Program Readiness, update the Control with its authoritative `evidenceSourceComponentIds`, then give each source Component the required evidence role, current access owners, and repeatable retrieval instructions in Record Markdown. Use `npx filegrc evidence-map --json` when you want only those source checks. During Step 4, create an Evidence Artifact only when a real artifact exists. Select its `sourceComponentId`, attach or reference the result, link the Controls and operating record it supports, record its collector and Classification, then have another person verify it before audit use.
214
219