create-filegrc 0.10.0 → 0.11.1
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.
- package/package.json +1 -1
- package/src/defaults.js +29 -1
- package/src/index.js +2 -2
- package/template/AGENTS.md +12 -3
- package/template/README.md +1 -1
- package/template/data/AGENTS.md +2 -0
- package/template/data/collection-reviews/collection-review-information-type.json +10 -0
- package/template/data/collection-reviews/collection-review-retention-schedule-item.json +10 -0
- package/template/data/documents/document-data-retention-schedule.json +3 -1
- package/template/data/documents/document-data-retention-schedule.md +3 -9
- package/template/data/workspace.json +1 -1
- package/template/package.json +1 -1
package/package.json
CHANGED
package/src/defaults.js
CHANGED
|
@@ -9,6 +9,7 @@ const OVERSIGHT_TEAM_ID = "team-security-risk-oversight";
|
|
|
9
9
|
const INFORMATION_SECURITY_POLICY_ID = "policy-information-security";
|
|
10
10
|
const RETENTION_SCHEDULE_ID = "document-data-retention-schedule";
|
|
11
11
|
const SECURITY_PLAN_ID = "document-security-incident-recovery-plan";
|
|
12
|
+
const FILEGRC_INFORMATION_TYPE_ID = "information-type-grc-records";
|
|
12
13
|
const FILEGRC_SOURCE_FAMILIES = [
|
|
13
14
|
"training-acknowledgement",
|
|
14
15
|
"exception-finding",
|
|
@@ -1117,6 +1118,10 @@ export function baselineRecordFiles(effectiveDate, starter = "security") {
|
|
|
1117
1118
|
classificationId: "confidential",
|
|
1118
1119
|
internetExposed: false,
|
|
1119
1120
|
systemUses: [],
|
|
1121
|
+
informationUses: [{
|
|
1122
|
+
informationTypeId: FILEGRC_INFORMATION_TYPE_ID,
|
|
1123
|
+
processingOperations: ["collect", "store", "use", "share", "delete"]
|
|
1124
|
+
}],
|
|
1120
1125
|
evidenceSourceKinds: FILEGRC_SOURCE_FAMILIES,
|
|
1121
1126
|
evidenceOwnerIds: [POLICY_OWNER_APPOINTMENT_ID]
|
|
1122
1127
|
};
|
|
@@ -1152,14 +1157,36 @@ export function baselineRecordFiles(effectiveDate, starter = "security") {
|
|
|
1152
1157
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
1153
1158
|
...(filegrcManaged ? {
|
|
1154
1159
|
collectionCadence: "Record work when it occurs and export the complete population for the audit period.",
|
|
1155
|
-
|
|
1160
|
+
retentionScheduleItemIds: [`retention-schedule-item-source-${sourceFamilyId}`],
|
|
1156
1161
|
reconciliationMethod: "Export the complete filegrc source-family population, compare it with related in-scope records and Work Queue activity, and investigate omissions or duplicates.",
|
|
1157
1162
|
validFrom: effectiveDate
|
|
1158
1163
|
} : {})
|
|
1159
1164
|
};
|
|
1160
1165
|
});
|
|
1161
1166
|
|
|
1167
|
+
const informationType = {
|
|
1168
|
+
id: FILEGRC_INFORMATION_TYPE_ID,
|
|
1169
|
+
type: "information-type",
|
|
1170
|
+
title: "Governance, risk, compliance, and audit records",
|
|
1171
|
+
status: "active",
|
|
1172
|
+
classificationId: "confidential",
|
|
1173
|
+
description: "Structured program records, approvals, work history, and evidence indexes stored in the FileGRC repository."
|
|
1174
|
+
};
|
|
1175
|
+
const retentionScheduleItems = SOURCE_FAMILIES.map(([sourceFamilyId, title]) => ({
|
|
1176
|
+
id: `retention-schedule-item-source-${sourceFamilyId}`,
|
|
1177
|
+
type: "retention-schedule-item",
|
|
1178
|
+
title: `${title} retention review`,
|
|
1179
|
+
status: "planned",
|
|
1180
|
+
description: "Management must select the covered Information Types, cutoff, retention period, and disposition behavior before activation.",
|
|
1181
|
+
informationTypeIds: FILEGRC_SOURCE_FAMILIES.includes(sourceFamilyId) ? [FILEGRC_INFORMATION_TYPE_ID] : [],
|
|
1182
|
+
scopeResourceIds: [`source-coverage-${sourceFamilyId}`],
|
|
1183
|
+
scheduleDocumentId: RETENTION_SCHEDULE_ID,
|
|
1184
|
+
sourceResourceIds: [INFORMATION_SECURITY_POLICY_ID, RETENTION_SCHEDULE_ID],
|
|
1185
|
+
ownerIds: [POLICY_OWNER_APPOINTMENT_ID]
|
|
1186
|
+
}));
|
|
1187
|
+
|
|
1162
1188
|
const foundation = [
|
|
1189
|
+
recordFile("information-types", informationType),
|
|
1163
1190
|
recordFile("components", programRepository),
|
|
1164
1191
|
recordFile("teams", team)
|
|
1165
1192
|
];
|
|
@@ -1173,6 +1200,7 @@ export function baselineRecordFiles(effectiveDate, starter = "security") {
|
|
|
1173
1200
|
...controlRecords.map((record) => recordFile("controls", record)),
|
|
1174
1201
|
...foundation,
|
|
1175
1202
|
...sourceCoverageRecords.map((record) => recordFile("source-coverage", record)),
|
|
1203
|
+
...retentionScheduleItems.map((record) => recordFile("retention-schedule-items", record)),
|
|
1176
1204
|
...obligationRecords.map((record) => recordFile("obligations", record))
|
|
1177
1205
|
];
|
|
1178
1206
|
}
|
package/src/index.js
CHANGED
|
@@ -523,13 +523,13 @@ async function runCombinedSetup(target, input) {
|
|
|
523
523
|
async function writeMinimalLockfile(target, name, versionRange) {
|
|
524
524
|
const lock = {
|
|
525
525
|
name,
|
|
526
|
-
version: "0.
|
|
526
|
+
version: "0.11.1",
|
|
527
527
|
lockfileVersion: 3,
|
|
528
528
|
requires: true,
|
|
529
529
|
packages: {
|
|
530
530
|
"": {
|
|
531
531
|
name,
|
|
532
|
-
version: "0.
|
|
532
|
+
version: "0.11.1",
|
|
533
533
|
dependencies: { filegrc: versionRange }
|
|
534
534
|
}
|
|
535
535
|
}
|
package/template/AGENTS.md
CHANGED
|
@@ -16,6 +16,7 @@ npx filegrc program-path --next --json
|
|
|
16
16
|
npx filegrc guide risk-assessment --json
|
|
17
17
|
npx filegrc list person --json
|
|
18
18
|
npx filegrc program-readiness --summary --json
|
|
19
|
+
npx filegrc program-amendment SOURCE_RESOURCE_ID --json
|
|
19
20
|
```
|
|
20
21
|
|
|
21
22
|
`program-path --next --json` gives agents the current step and first action. Use `--summary` for all five step statuses or `--current` for the current step’s page summaries, detailed guidance fields, commands, and next actions. The general guide lists every supported action and record type. A type guide adds the checks needed for that resource, including timing, required and conditional fields, current relationship candidates, JSON location, and Markdown slots.
|
|
@@ -98,15 +99,23 @@ Do not rewrite or remove committed records that explain prior audit periods. Clo
|
|
|
98
99
|
|
|
99
100
|
`data/workspace.json` selects the model through `dataModelVersion`. The installed `filegrc` package owns the authoritative model. Do not copy or invent a local schema.
|
|
100
101
|
|
|
102
|
+
### Standards alignment
|
|
103
|
+
|
|
104
|
+
FileGRC uses AICPA SOC 2 terms for the assurance subject matter and borrows useful structure from NIST OSCAL. A FileGRC System is the bounded system being governed or examined. Components are the logical capabilities that implement or support it, Assets are specific inventory items, Controls describe management's implementation, and Control Tests and Findings hold assessment work. Frameworks and Requirements act like catalog content, while the Program's reviewed applicability decisions perform the control-selection role associated with an OSCAL Profile.
|
|
105
|
+
|
|
106
|
+
This repository is not a native OSCAL document. Keep using the installed FileGRC model, its flat JSON records, human-readable IDs, companion Markdown, and typed relationships. Do not introduce OSCAL document nesting, UUIDs, back matter, or fields that `filegrc guide` does not support. Store an OSCAL identifier in `externalIds` when a real external mapping exists. Do not claim that this workspace or an audit packet is OSCAL-compatible unless an explicit FileGRC exporter validates that output against the supported official OSCAL schema.
|
|
107
|
+
|
|
108
|
+
Use standards terms only when their meanings match. Do not call a general program change a Profile or tailoring operation unless it selects or modifies control requirements. Do not put every adjustable policy value into a generic parameter object. Keep retention periods in the approved retention schedule, recurring cadences in Obligations, recovery objectives on Systems or Components, and other decisions in their model-defined records. Organization-specific decisions remain authoritative when starter or policy-library content changes.
|
|
109
|
+
|
|
101
110
|
If the installed CLI reports that this workspace uses an unsupported model, start with:
|
|
102
111
|
|
|
103
112
|
```sh
|
|
104
|
-
npx filegrc migrate --to-model
|
|
113
|
+
npx filegrc migrate --to-model 8 --preview --json
|
|
105
114
|
```
|
|
106
115
|
|
|
107
|
-
Older workspaces migrate one version at a time. Review every preview’s automatic, review-required, and unsupported classifications before applying it with the same options and `--yes`. The
|
|
116
|
+
Older workspaces migrate one version at a time. Review every preview’s automatic, review-required, and unsupported classifications before applying it with the same options and `--yes`. The v8 migration preserves legacy retention prose as notes, renames Component processing operations, and creates no retention periods or disposition behavior.
|
|
108
117
|
|
|
109
|
-
The [model
|
|
118
|
+
The [model v8 upgrade guide](https://github.com/Alignbase/filegrc/blob/main/docs/upgrading-to-model-v8.md) explains the structured retention and mapping changes.
|
|
110
119
|
|
|
111
120
|
Run these commands when working with records:
|
|
112
121
|
|
package/template/README.md
CHANGED
|
@@ -19,7 +19,7 @@ npm run serve
|
|
|
19
19
|
|
|
20
20
|
Requires Node.js 20 or newer and Git.
|
|
21
21
|
|
|
22
|
-
Existing model
|
|
22
|
+
Existing model v7 workspaces must run `npx filegrc migrate --to-model 8 --preview --json` after installing a model v8 package. The migration preserves legacy retention prose as notes and creates no retention periods or disposition behavior. Older workspaces migrate one model version at a time. See the [model v8 upgrade guide](https://github.com/Alignbase/filegrc/blob/main/docs/upgrading-to-model-v8.md).
|
|
23
23
|
|
|
24
24
|
## How it works
|
|
25
25
|
|
package/template/data/AGENTS.md
CHANGED
|
@@ -99,6 +99,8 @@ If `guide` marks a Markdown slot recommended, fill it before treating the delive
|
|
|
99
99
|
|
|
100
100
|
When `guide` returns a collection review requirement, review the listed type-specific criteria and use `npx filegrc review-collection RESOURCE_TYPE --scaffold`. Fill the management conclusion, rationale, reviewer, and date, then preview and apply the payload. Do not invent `collectionRevision`; FileGRC calculates it from the current records and material Program scope. Any later change makes the confirmation stale and requires another review.
|
|
101
101
|
|
|
102
|
+
Use Retention Schedule Items as the structured rows of the Data Retention Schedule. Keep a row `planned` until management has approved its Information Types, scope, cutoff, period, disposition action, instructions, sources, approver, date, and reviewed source revisions. Run `npx filegrc program-readiness --json` after changing an information use, source-coverage record, Commitment, Policy, or other source. FileGRC may identify missing or stale decisions, but it must never infer an organization-specific period or deletion behavior.
|
|
103
|
+
|
|
102
104
|
Store a relationship only on its authoritative record. Control Tests store `auditId`; Evidence Artifacts store `auditIds`; Commitments store `systemIds` and `controlIds`; Controls store `policyIds`, `requirementIds`, `systemIds`, `componentIds`, and `evidenceSourceComponentIds`; Risks store `controlIds`; Components store their `vendorId` and `systemUses`. Use `references` to inspect derived inbound links.
|
|
103
105
|
|
|
104
106
|
Use explicit business dates. Git records when a file changed, but it does not replace `occurredOn`, `scheduledFor`, `completedOn`, `approvedOn`, or similar fields.
|
|
@@ -16,7 +16,9 @@
|
|
|
16
16
|
"acknowledgementRequired": false,
|
|
17
17
|
"controlIds": [
|
|
18
18
|
"control-data-classification-inventory",
|
|
19
|
-
"control-data-retention-disposal"
|
|
19
|
+
"control-data-retention-disposal",
|
|
20
|
+
"control-logging-monitoring",
|
|
21
|
+
"control-backup-restoration"
|
|
20
22
|
],
|
|
21
23
|
"classificationId": "internal",
|
|
22
24
|
"proposedEffectiveOn": "{{effective_date}}",
|
|
@@ -8,15 +8,9 @@ Retention periods may come from law, contract, tax, audit, security, or a docume
|
|
|
8
8
|
|
|
9
9
|
## Schedule
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
| Production backups or alternate recovery copies | [Complete before approval: Systems or Components] | [Complete before approval: owner] | Backup or recovery-copy creation | [Confirm or replace proposed default before approval: 30 days, adjusted to approved System recovery needs] | [Complete before approval: expiration or disposal action] | [Complete before approval: recovery need, commitment, or risk decision] |
|
|
15
|
-
| SOC 2 Policies, Control records, and audit Evidence | Git repository and approved Evidence locations | Policy owner | End of the relevant audit period | [Complete before approval based on audit, contract, and legal needs] | Archive or securely delete | Audit and business requirements |
|
|
16
|
-
| Customer and service records | [Complete before approval: Systems or Components] | [Complete before approval: owner] | [Complete before approval: trigger] | [Complete before approval: retention] | Delete or anonymize | Contract, law, and business need |
|
|
17
|
-
| Incident and investigation records | Approved incident and Evidence Systems | Incident owner | Incident closure | [Complete before approval: retention] | Archive or securely delete | Legal, insurance, contract, and security needs |
|
|
18
|
-
|
|
19
|
-
Add rows for each important data class in the System and Vendor inventories. A row is incomplete until it names the source System or Component, owner, trigger, period, disposal action, and authority. Remove each bracketed prompt only after replacing it with a reviewed fact.
|
|
11
|
+
The structured Retention Schedule Items linked to this document are its schedule rows. Each approved item must name the covered Information Types and operational scope, owner, cutoff, period, disposition action, instructions, and authority. Planned items are review prompts and are not approved retention behavior.
|
|
12
|
+
|
|
13
|
+
Management must cover important information used by Systems, Components, and Vendors, including security logs, backups or alternate recovery copies, governance records, audit evidence, customer and service records, and incident records when those classes exist. No starter period or disposition action is an approved organization value.
|
|
20
14
|
|
|
21
15
|
## Holds and exceptions
|
|
22
16
|
|