create-filegrc 0.5.1 → 0.6.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.
- package/README.md +1 -1
- package/package.json +1 -1
- package/src/defaults.js +15 -18
- package/src/index.js +12 -6
- package/template/AGENTS.md +9 -9
- package/template/README.md +2 -2
- package/template/data/AGENTS.md +7 -7
- package/template/data/audit-populations/AGENTS.md +2 -2
- package/template/data/audits/AGENTS.md +2 -2
- package/template/data/classifications/confidential.json +8 -0
- package/template/data/classifications/internal.json +8 -0
- package/template/data/classifications/public.json +8 -0
- package/template/data/classifications/restricted.json +8 -0
- package/template/data/collection-reviews/collection-review-complementary-control.json +1 -1
- package/template/data/collection-reviews/collection-review-component.json +10 -0
- package/template/data/collection-reviews/collection-review-framework.json +1 -1
- package/template/data/collection-reviews/collection-review-person.json +1 -1
- package/template/data/collection-reviews/collection-review-system.json +2 -2
- package/template/data/collection-reviews/collection-review-vendor.json +2 -2
- package/template/data/components/component-filegrc-program-repository.md +9 -0
- package/template/data/documents/document-soc2-period-completeness.md +1 -1
- package/template/data/evidence/AGENTS.md +3 -3
- package/template/data/programs/program-soc-2.json +37 -0
- package/template/data/workspace.json +2 -31
- package/template/package.json +1 -1
- package/template/data/systems/system-filegrc-program-repository.md +0 -9
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@ npm run serve
|
|
|
11
11
|
|
|
12
12
|
Setup asks for the legal organization name, the initial program lead and their organization job title and email, a security reporting address, and the program timezone. The generated Person records the lead’s actual position, while a separate dated Policy Owner Appointment owns the starter work. The generated private project includes a starter Security program, Program Readiness, a policy-driven Work Queue, Policy Events that add linked tasks, later audit preparation, evidence packets, and one dependency: `filegrc`.
|
|
13
13
|
|
|
14
|
-
Creation has two layers. The
|
|
14
|
+
Creation has two layers. The twelve-record foundation contains Workspace and Program settings, the initial program lead, two starter Appointments, the oversight Team, renderer settings, four Classifications, and the FileGRC repository Component. The default `security` starter adds Framework references, proposed Policies, Controls, Obligations, Documents, and Training records. Pass `--starter foundation` when you want to stop before selecting a Framework.
|
|
15
15
|
|
|
16
16
|
For one noninteractive run, pass company and service fields together or use `--config setup.json`. The optional `setup` object defines the service boundary and management goal after installation. Use `--filegrc-package <directory>` to exercise unpublished local engine changes instead of installing the registry release. This writes a machine-local `file:` dependency, so replace it with a released version before sharing the generated workspace.
|
|
17
17
|
|
package/package.json
CHANGED
package/src/defaults.js
CHANGED
|
@@ -34,18 +34,18 @@ const FILEGRC_SOURCE_CONTROL_CODES = new Set([
|
|
|
34
34
|
"VEN-02"
|
|
35
35
|
]);
|
|
36
36
|
const SOURCE_FAMILIES = [
|
|
37
|
-
["workforce", "Workforce
|
|
37
|
+
["workforce", "Workforce"],
|
|
38
38
|
["training-acknowledgement", "Training and Acknowledgements"],
|
|
39
|
-
["identity-access", "Identity and Access
|
|
40
|
-
["production-change", "Production Change
|
|
41
|
-
["security-monitoring", "Security Monitoring
|
|
39
|
+
["identity-access", "Identity and Access"],
|
|
40
|
+
["production-change", "Production Change"],
|
|
41
|
+
["security-monitoring", "Security Monitoring"],
|
|
42
42
|
["vulnerability-management", "Vulnerability Management"],
|
|
43
|
-
["endpoint-asset", "Endpoint Management
|
|
43
|
+
["endpoint-asset", "Endpoint Management"],
|
|
44
44
|
["backup-recovery", "Backup and Recovery"],
|
|
45
45
|
["vendor-management", "Vendors"],
|
|
46
46
|
["exception-finding", "Exceptions and Findings"],
|
|
47
47
|
["data-handling", "Data Protection Configuration"],
|
|
48
|
-
["network-security", "Network Security
|
|
48
|
+
["network-security", "Network Security"],
|
|
49
49
|
["governance", "Governance"],
|
|
50
50
|
["risk-management", "Risk Management"]
|
|
51
51
|
];
|
|
@@ -1082,9 +1082,7 @@ export function baselineRecordFiles(effectiveDate, starter = "security") {
|
|
|
1082
1082
|
title: `${reference}: ${name}`,
|
|
1083
1083
|
frameworkId: FRAMEWORK_ID,
|
|
1084
1084
|
reference,
|
|
1085
|
-
applicability: "undetermined",
|
|
1086
1085
|
description,
|
|
1087
|
-
applicabilityRationale: "Confirm applicability against the selected service, scope, and auditor guidance before accepting this starter criterion.",
|
|
1088
1086
|
tags: ["security", "common-criteria"]
|
|
1089
1087
|
}));
|
|
1090
1088
|
const descriptionRequirements = descriptionCriteria.map(([reference, name, description]) => ({
|
|
@@ -1093,9 +1091,7 @@ export function baselineRecordFiles(effectiveDate, starter = "security") {
|
|
|
1093
1091
|
title: `${reference}: ${name}`,
|
|
1094
1092
|
frameworkId: DESCRIPTION_FRAMEWORK_ID,
|
|
1095
1093
|
reference,
|
|
1096
|
-
applicability: "undetermined",
|
|
1097
1094
|
description,
|
|
1098
|
-
applicabilityRationale: "Confirm applicability against the selected service and auditor guidance before accepting this starter description criterion.",
|
|
1099
1095
|
tags: ["description-criteria"]
|
|
1100
1096
|
}));
|
|
1101
1097
|
const controlRecords = controls.map((control) => ({
|
|
@@ -1113,7 +1109,7 @@ export function baselineRecordFiles(effectiveDate, starter = "security") {
|
|
|
1113
1109
|
operationPattern: control.operationPattern,
|
|
1114
1110
|
policyIds: control.policies,
|
|
1115
1111
|
...(FILEGRC_SOURCE_CONTROL_CODES.has(control.code)
|
|
1116
|
-
? {
|
|
1112
|
+
? { evidenceSourceComponentIds: ["component-filegrc-program-repository"] }
|
|
1117
1113
|
: {})
|
|
1118
1114
|
}));
|
|
1119
1115
|
const team = {
|
|
@@ -1126,17 +1122,18 @@ export function baselineRecordFiles(effectiveDate, starter = "security") {
|
|
|
1126
1122
|
chairIds: []
|
|
1127
1123
|
};
|
|
1128
1124
|
const programRepository = {
|
|
1129
|
-
id: "
|
|
1130
|
-
type: "
|
|
1125
|
+
id: "component-filegrc-program-repository",
|
|
1126
|
+
type: "component",
|
|
1131
1127
|
title: "filegrc Program Repository",
|
|
1132
|
-
status: "
|
|
1128
|
+
status: "planned",
|
|
1129
|
+
componentKind: "software",
|
|
1133
1130
|
criticality: "high",
|
|
1134
1131
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
1135
1132
|
description: "The Git repository that is authoritative for filegrc governance records, approvals, exceptions, findings, acknowledgements, evidence indexes, and their revision history.",
|
|
1136
|
-
systemKind: "governance-system-of-record",
|
|
1137
1133
|
environment: "Git repository",
|
|
1138
1134
|
classificationId: "confidential",
|
|
1139
1135
|
internetExposed: false,
|
|
1136
|
+
systemUses: [],
|
|
1140
1137
|
evidenceSourceKinds: FILEGRC_SOURCE_FAMILIES,
|
|
1141
1138
|
evidenceOwnerIds: [POLICY_OWNER_APPOINTMENT_ID]
|
|
1142
1139
|
};
|
|
@@ -1167,8 +1164,8 @@ export function baselineRecordFiles(effectiveDate, starter = "security") {
|
|
|
1167
1164
|
title: `${title} coverage`,
|
|
1168
1165
|
status: filegrcManaged ? "active" : "planned",
|
|
1169
1166
|
sourceFamilyId,
|
|
1170
|
-
coverageKind: filegrcManaged ? "filegrc" : "external-
|
|
1171
|
-
scopeResourceIds: ["
|
|
1167
|
+
coverageKind: filegrcManaged ? "filegrc" : "external-component",
|
|
1168
|
+
scopeResourceIds: ["program-soc-2"],
|
|
1172
1169
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
1173
1170
|
...(filegrcManaged ? {
|
|
1174
1171
|
collectionCadence: "Record work when it occurs and export the complete population for the audit period.",
|
|
@@ -1180,7 +1177,7 @@ export function baselineRecordFiles(effectiveDate, starter = "security") {
|
|
|
1180
1177
|
});
|
|
1181
1178
|
|
|
1182
1179
|
const foundation = [
|
|
1183
|
-
recordFile("
|
|
1180
|
+
recordFile("components", programRepository),
|
|
1184
1181
|
recordFile("teams", team)
|
|
1185
1182
|
];
|
|
1186
1183
|
if (starter === "foundation") return foundation;
|
package/src/index.js
CHANGED
|
@@ -397,16 +397,22 @@ async function applyStarterScope(target, starter, effectiveDate) {
|
|
|
397
397
|
const workspacePath = join(target, "data", "workspace.json");
|
|
398
398
|
const workspace = JSON.parse(await readFile(workspacePath, "utf8"));
|
|
399
399
|
const ids = (type) => records.filter((record) => record.type === type).map((record) => record.id);
|
|
400
|
-
await writeFile(workspacePath, `${JSON.stringify(
|
|
401
|
-
|
|
400
|
+
await writeFile(workspacePath, `${JSON.stringify(workspace, null, 2)}\n`, "utf8");
|
|
401
|
+
const programPath = join(target, "data", "programs", "program-soc-2.json");
|
|
402
|
+
const program = JSON.parse(await readFile(programPath, "utf8"));
|
|
403
|
+
await writeFile(programPath, `${JSON.stringify({
|
|
404
|
+
...program,
|
|
402
405
|
frameworkIds: ids("framework"),
|
|
403
|
-
|
|
406
|
+
requirementApplicability: ids("requirement").map((requirementId) => ({
|
|
407
|
+
requirementId,
|
|
408
|
+
decision: "undetermined"
|
|
409
|
+
})),
|
|
404
410
|
controlIds: ids("control")
|
|
405
411
|
}, null, 2)}\n`, "utf8");
|
|
406
412
|
}
|
|
407
413
|
|
|
408
414
|
function starterStages(starter, counts) {
|
|
409
|
-
const foundationTypes = new Set(["workspace", "renderer-settings", "person", "appointment", "team", "system"]);
|
|
415
|
+
const foundationTypes = new Set(["workspace", "program", "renderer-settings", "person", "appointment", "team", "system", "component", "classification", "information-type"]);
|
|
410
416
|
const foundation = Object.entries(counts.byType)
|
|
411
417
|
.filter(([type]) => foundationTypes.has(type))
|
|
412
418
|
.reduce((total, [, count]) => total + count, 0);
|
|
@@ -516,13 +522,13 @@ async function runCombinedSetup(target, input) {
|
|
|
516
522
|
async function writeMinimalLockfile(target, name, versionRange) {
|
|
517
523
|
const lock = {
|
|
518
524
|
name,
|
|
519
|
-
version: "0.
|
|
525
|
+
version: "0.6.0",
|
|
520
526
|
lockfileVersion: 3,
|
|
521
527
|
requires: true,
|
|
522
528
|
packages: {
|
|
523
529
|
"": {
|
|
524
530
|
name,
|
|
525
|
-
version: "0.
|
|
531
|
+
version: "0.6.0",
|
|
526
532
|
dependencies: { filegrc: versionRange }
|
|
527
533
|
}
|
|
528
534
|
}
|
package/template/AGENTS.md
CHANGED
|
@@ -81,7 +81,7 @@ Use a dedicated private repository for your FileGRC workspace. The browser commi
|
|
|
81
81
|
- In a monorepo, never include application changes in FileGRC-generated commits.
|
|
82
82
|
- Treat detached and feature-branch copies as read-only unless an explicit development override is active.
|
|
83
83
|
|
|
84
|
-
New workspaces use trunk repository mode with `main` as the authoritative branch and `origin` as the remote. Each browser mutation checks the whole Git worktree, fetches the remote, fast-forwards only, rechecks the edited revision, writes through the normal domain function, validates the workspace, stages only this FileGRC workspace, creates a focused commit, and pushes it. Browser onboarding commits its related
|
|
84
|
+
New workspaces use trunk repository mode with `main` as the authoritative branch and `origin` as the remote. Each browser mutation checks the whole Git worktree, fetches the remote, fast-forwards only, rechecks the edited revision, writes through the normal domain function, validates the workspace, stages only this FileGRC workspace, creates a focused commit, and pushes it. Browser onboarding commits its related Workspace, Program, System, Component, and renderer changes together.
|
|
85
85
|
|
|
86
86
|
The Repository page reports `Synced`, `Syncing`, `Not synced`, `Read-only checkout`, or `Git setup required`. Browser saves return after the validated local commit, then push in the background. Treat `Syncing` as locally durable but not yet durable on the remote, and wait for `Synced` before starting another write. A failed push keeps the local FileGRC commit and offers Retry sync when every ahead commit changes only this workspace. FileGRC never pushes an ahead commit that includes files outside this workspace, and it never merges, rebases, switches branches, resolves conflicts, or changes files outside the workspace.
|
|
87
87
|
|
|
@@ -103,9 +103,9 @@ If the installed CLI reports that this workspace uses an unsupported model, star
|
|
|
103
103
|
npx filegrc migrate --to-model 3 --preview --json
|
|
104
104
|
```
|
|
105
105
|
|
|
106
|
-
|
|
106
|
+
Older workspaces migrate one version at a time. Review the v4 preview’s automatic, review-required, and unsupported classifications before applying it with the same options and `--yes`. The migration creates no approvals, holders, Evidence Artifacts, or historical dates.
|
|
107
107
|
|
|
108
|
-
The [model
|
|
108
|
+
The [model v4 upgrade guide](https://github.com/Alignbase/filegrc/blob/main/docs/upgrading-to-model-v4.md) explains System classification decisions, relationship changes, and required post-migration review.
|
|
109
109
|
|
|
110
110
|
Run these commands when working with records:
|
|
111
111
|
|
|
@@ -210,7 +210,7 @@ The Evidence Ready gate requires:
|
|
|
210
210
|
3. Implemented Controls with an owner, actual procedure, scope, operation pattern, mappings, implementation date, and every required linked Work Queue schedule running.
|
|
211
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.
|
|
212
212
|
|
|
213
|
-
Onboarding does not create
|
|
213
|
+
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
214
|
|
|
215
215
|
When the gate passes, set `workspace.candidatePeriodStart` to the date reliable evidence collection begins. Do not backdate it. `candidatePeriodStart` and `candidatePeriodEnd` express management’s target. They do not establish the final report period.
|
|
216
216
|
|
|
@@ -235,15 +235,15 @@ The audit record’s `typeOneAsOf`, `periodStart`, and `periodEnd` are the dates
|
|
|
235
235
|
Review both evidence paths against the exact firm-agreed date or period:
|
|
236
236
|
|
|
237
237
|
1. filegrc Evidence consists of dated Step 4 operating records. Complete each applicable record, link it to the Controls it supports, record the result in structured fields or Markdown, and link any external artifact needed to support that result.
|
|
238
|
-
2.
|
|
238
|
+
2. Evidence Artifacts are verified `evidence` records from authoritative Components. Confirm the source Component, audit date or period, Control links, collector, verifier, and fixed attachment or approved external reference.
|
|
239
239
|
|
|
240
|
-
Audit Readiness reports coverage for both paths. The packet includes the matching filegrc records and Markdown with Git history, plus
|
|
240
|
+
Audit Readiness reports coverage for both paths. The packet includes the matching filegrc records and Markdown with Git history, plus Evidence Artifacts, retained attachments, delivery indexes, and checksums.
|
|
241
241
|
|
|
242
242
|
Near the end of fieldwork, link a verified fixed-format copy of the signed management representation letter to its engagement-specific document. Date it on or after the Type 1 date or Type 2 period end. A representation that is still marked for later blocks packet delivery.
|
|
243
243
|
|
|
244
|
-
Catalog each authoritative source
|
|
244
|
+
Catalog each authoritative source as a Component and assign its `evidenceSourceKinds`. A third-party application is a Component when it supports a bounded System, a Control, Evidence, or relevant operations. Create a separate Vendor for its provider and connect the Component through `vendorId`; keep contracts, due diligence, and supplier risk on the Vendor. Name the people who can access reports and keep extraction instructions in the Component's Record Markdown. For each Type 2 population, select one source Component and export the exact audit period. Split a population when different Components or queries produce its items. Link a verified `population-export` Evidence Artifact that names the same source Component and stores the query or report parameters, generation time, timezone, count, completeness check, and accuracy check. A zero count still requires the source export and query. A population linked to an in-scope Control cannot be marked not applicable.
|
|
245
245
|
|
|
246
|
-
Every
|
|
246
|
+
Every Evidence Artifact names its collector. Verified Evidence Artifacts also name their verifier and verification date. Use `sourceComponentId` for source exports, `sourceResourceIds` for FileGRC records, and `sourceCommit` to bind the Evidence Artifact to repository state.
|
|
247
247
|
|
|
248
248
|
Preview coverage before writing output:
|
|
249
249
|
|
|
@@ -253,7 +253,7 @@ npx filegrc evidence-packet --audit audit-2026-type-2
|
|
|
253
253
|
npx filegrc evidence-packet --audit audit-2026-type-2 --preview --require-ready
|
|
254
254
|
```
|
|
255
255
|
|
|
256
|
-
The packet includes records explicitly related to the selected engagement, its
|
|
256
|
+
The packet includes records explicitly related to the selected engagement, its bounded Systems, Controls, criteria, policies, Evidence, and dependencies. It does not include unrelated dated records from the workspace. A Type 2 packet adds filegrc Evidence, recurring obligation occurrences, event workflows, and management population reconciliations. Output includes a control matrix with separate filegrc Evidence and Evidence Artifact columns, source-Component index, Evidence Artifact delivery index, population index, evidence index, committed historical source versions, and SHA-256 checksums. Output under `.filegrc/evidence-packets/` is derived and must not be hand-edited or committed.
|
|
257
257
|
|
|
258
258
|
Treat a packet as ready for management delivery only when its status is `delivery-ready`, its review list is clear, and its manifest names a clean Git revision. This means filegrc's management checks passed. It does not mean the engagement team found the evidence sufficient or appropriate. The generator copies raw records, Markdown, and local fixed attachments. It never fetches external references. Reconcile `external-evidence-index.csv` to the auditor portal or other approved delivery system before telling the engagement team that submission is complete.
|
|
259
259
|
|
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 v3 workspaces must run `npx filegrc migrate --to-model 4 --preview --json` after installing a model v4 package. Review each automatic, review-required, and unsupported item, supply explicit System classification decisions where needed, then apply the same migration with `--yes`. Older workspaces migrate one model version at a time. See the [model v4 upgrade guide](https://github.com/Alignbase/filegrc/blob/main/docs/upgrading-to-model-v4.md).
|
|
23
23
|
|
|
24
24
|
## How it works
|
|
25
25
|
|
|
@@ -45,7 +45,7 @@ Detached and feature-branch checkouts are read-only in the browser by default. D
|
|
|
45
45
|
4. **Operate the program.** Run scheduled and event-driven work, maintain risk, and retain dated evidence.
|
|
46
46
|
5. **Audit.** Set up the CPA engagement, support fieldwork, and prepare the evidence packet.
|
|
47
47
|
|
|
48
|
-
Control implementation includes evidence-source readiness. Use `npx filegrc program-readiness --json` to find incomplete Control or
|
|
48
|
+
Control implementation includes evidence-source readiness. Use `npx filegrc program-readiness --json` to find incomplete Control or Component records. `npx filegrc evidence-map --json` remains available as a focused diagnostic. Create an Evidence Artifact during Step 4 only when a real export, report, screenshot, signed file, or approved external reference exists.
|
|
49
49
|
|
|
50
50
|
The Program Overview shows what is done, what is blocked, and what to do next.
|
|
51
51
|
|
package/template/data/AGENTS.md
CHANGED
|
@@ -98,9 +98,9 @@ JSON is for stable metadata used by validation, relationships, filters, schedule
|
|
|
98
98
|
|
|
99
99
|
If `guide` marks a Markdown slot recommended, fill it before treating the deliverable as complete. Keep observations and report details in the source record’s Markdown. Create a Finding only for a confirmed gap that needs its own remediation lifecycle. Create an Action Item only when follow-up needs a separate assignee, deadline, and completion proof. Set each child record’s `sourceResourceId` to the record that produced it; do not maintain reverse Finding or Action Item arrays on the source. Do not put a report’s entire variable structure into new JSON fields.
|
|
100
100
|
|
|
101
|
-
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
|
|
101
|
+
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.
|
|
102
102
|
|
|
103
|
-
Store a relationship only on its authoritative record. Control Tests store `auditId`;
|
|
103
|
+
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.
|
|
104
104
|
|
|
105
105
|
Use explicit business dates. Git records when a file changed, but it does not replace `occurredOn`, `scheduledFor`, `completedOn`, `approvedOn`, or similar fields.
|
|
106
106
|
|
|
@@ -110,7 +110,7 @@ Status is an assertion. Before moving a record to a completed, approved, impleme
|
|
|
110
110
|
|
|
111
111
|
1. Run `guide RESOURCE_TYPE --json` and satisfy every conditional field.
|
|
112
112
|
2. Write the actual work and conclusion in Markdown when recommended.
|
|
113
|
-
3. Link source
|
|
113
|
+
3. Link source Components, Evidence Artifacts, risks, findings, exceptions, and actions that support the result.
|
|
114
114
|
4. Use the real completion or approval date.
|
|
115
115
|
5. Confirm the named people performed and reviewed the work.
|
|
116
116
|
|
|
@@ -159,11 +159,11 @@ npx filegrc detach EVIDENCE_ID source-export.csv --yes --expected-revision REVIS
|
|
|
159
159
|
|
|
160
160
|
filegrc will not delete an evidence record that still has local attachments.
|
|
161
161
|
|
|
162
|
-
Never invent
|
|
162
|
+
Never invent Evidence, dates, approvals, results, people, or source-Component details. If a required fact is unavailable, leave the record in a non-final state and report the missing input.
|
|
163
163
|
|
|
164
164
|
## Implement Controls and Their Evidence Sources
|
|
165
165
|
|
|
166
|
-
Finish each applicable Control and its authoritative source
|
|
166
|
+
Finish each applicable Control and its authoritative source Components together. Use Program Readiness as the completion check:
|
|
167
167
|
|
|
168
168
|
```sh
|
|
169
169
|
npx filegrc program-readiness --json
|
|
@@ -174,11 +174,11 @@ The Control stage reports both Control implementation items and evidence-family
|
|
|
174
174
|
1. Choose an existing System or scaffold the System that is authoritative for the family.
|
|
175
175
|
2. Set the System to `active`, add the matching `evidenceSourceKinds`, and name current `evidenceOwnerIds`.
|
|
176
176
|
3. Put the exact report, filters, date range, timezone, export format, and reconciliation steps in the System’s Record Markdown.
|
|
177
|
-
4. Add the
|
|
177
|
+
4. Add the Component ID to `evidenceSourceComponentIds` on every Control in the family that it supports.
|
|
178
178
|
5. Finish the Control’s owner, procedure, scope, operation pattern, mappings, and implementation date. Put every calendar or event schedule in an Obligation.
|
|
179
179
|
6. Run `program-readiness --json` again and resolve every failed Control or source check before marking the Controls implemented or starting the candidate period.
|
|
180
180
|
|
|
181
|
-
Use `get RESOURCE_ID --mutation` and `update` so JSON and Markdown change together. `evidence-map --json` remains available when you want only the evidence-family checks. Do not create an Evidence
|
|
181
|
+
Use `get RESOURCE_ID --mutation` and `update` so JSON and Markdown change together. `evidence-map --json` remains available when you want only the evidence-family checks. Do not create an Evidence Artifact while designing or implementing a Control. Create one during Step 4 only when the real export, report, screenshot, signed file, or approved external reference exists.
|
|
182
182
|
|
|
183
183
|
## Scheduled and event work
|
|
184
184
|
|
|
@@ -5,9 +5,9 @@ Use one `audit-population` for one complete Type 2 population produced by one au
|
|
|
5
5
|
Reconcile after the period closes:
|
|
6
6
|
|
|
7
7
|
1. Confirm the exact audit period and related controls.
|
|
8
|
-
2. Select the cataloged source
|
|
8
|
+
2. Select the cataloged source Component whose `evidenceSourceKinds` covers the population.
|
|
9
9
|
3. Export the complete population with fixed parameters and timezone.
|
|
10
|
-
4. Create verified `population-export`
|
|
10
|
+
4. Create a verified `population-export` Evidence Artifact with the same source Component, period, query, generation time, count, completeness check, and accuracy check.
|
|
11
11
|
5. Link the export with `sourceEvidenceId`, name the reconciler, record the date and conclusion, and write the method and exceptions in Record Markdown.
|
|
12
12
|
|
|
13
13
|
A zero count still needs its query, fixed export, and reconciliation. A population linked to an in-scope control cannot be marked not applicable.
|
|
@@ -18,9 +18,9 @@ Preparation creates engagement-specific management documents and, for Type 2, po
|
|
|
18
18
|
Review both evidence paths for the exact formal date or period:
|
|
19
19
|
|
|
20
20
|
1. filegrc Evidence consists of dated Step 4 operating records. Complete the record, link it to the applicable Controls, record the result in its fields or Markdown, and link any external artifact needed to support that result.
|
|
21
|
-
2.
|
|
21
|
+
2. Evidence Artifacts are verified `evidence` records from source Components. Confirm the source Component, date or period, Control links, collector, verifier, and fixed attachment or approved external reference.
|
|
22
22
|
|
|
23
|
-
The packet compiles both paths. It includes
|
|
23
|
+
The packet compiles both paths. It includes FileGRC records and Markdown with Git history, plus Evidence Artifacts, retained attachments, delivery indexes, and checksums.
|
|
24
24
|
|
|
25
25
|
Run readiness repeatedly and fix source records. Preview the packet before writing it:
|
|
26
26
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "collection-review-system",
|
|
3
3
|
"type": "collection-review",
|
|
4
|
-
"title": "
|
|
4
|
+
"title": "Bounded System scope review",
|
|
5
5
|
"status": "planned",
|
|
6
6
|
"resourceType": "system",
|
|
7
7
|
"scopeResourceIds": [
|
|
8
|
-
"
|
|
8
|
+
"program-soc-2"
|
|
9
9
|
]
|
|
10
10
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "collection-review-vendor",
|
|
3
3
|
"type": "collection-review",
|
|
4
|
-
"title": "Vendor
|
|
4
|
+
"title": "Vendor inventory review",
|
|
5
5
|
"status": "planned",
|
|
6
6
|
"resourceType": "vendor",
|
|
7
7
|
"scopeResourceIds": [
|
|
8
|
-
"
|
|
8
|
+
"program-soc-2"
|
|
9
9
|
]
|
|
10
10
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# filegrc Program Repository
|
|
2
|
+
|
|
3
|
+
This Git repository is the authoritative Component for FileGRC governance records and their revision history. It can supply the training and acknowledgement catalog, exception and finding populations, policy and document approvals, risk register and assessments, Vendor inventory and reviews, oversight records, obligation history, Policy Event workflows, and management evidence indexes.
|
|
4
|
+
|
|
5
|
+
## Evidence extraction
|
|
6
|
+
|
|
7
|
+
Run FileGRC from a clean commit. Use resource dates and Audit links to select the exact engagement date or period, save the query or agent instructions with the export, and retain the fixed result behind an Evidence Artifact. Record a zero count when the committed source query returns no relevant items.
|
|
8
|
+
|
|
9
|
+
The repository is authoritative only for records stored here. Identity, workforce, source control, deployment, monitoring, endpoint, backup, vulnerability, and external Vendor systems remain authoritative for the activity they perform.
|
|
@@ -19,7 +19,7 @@ Management reconciled every audit-population record linked to this engagement to
|
|
|
19
19
|
| Backup failures and restoration tests | [Population ID] | [Result] |
|
|
20
20
|
| Security exceptions and control findings | [Population ID] | [Result] |
|
|
21
21
|
|
|
22
|
-
For a population with zero items, retain the source-
|
|
22
|
+
For a population with zero items, retain the source-Component export or report that produced the zero count. Describe any source limitation, omitted item, or reconciliation difference below.
|
|
23
23
|
|
|
24
24
|
## Exceptions and Source Limitations
|
|
25
25
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Evidence Artifact Instructions
|
|
2
2
|
|
|
3
3
|
An evidence record explains what a proof item is, where it came from, what period it supports, who collected it, and which records or controls it supports. The attachment alone is not enough.
|
|
4
4
|
|
|
5
|
-
Do not create placeholder or collection-test Evidence. Control implementation maps Controls to complete authoritative
|
|
5
|
+
Do not create placeholder or collection-test Evidence. Control implementation maps Controls to complete authoritative source Components; `npx filegrc evidence-map --json` remains available as a focused diagnostic. Create an Evidence Artifact during Step 4 only when a real export, report, screenshot, signed file, or approved external reference exists. When an operating record needs fixed supporting proof, create or update an Evidence Artifact and link its ID from that record. Keep it as `draft` until the artifact exists. Set it to `collected` only after selecting the source Component, attaching or referencing the result, and recording the source, date, Classification, and collector. Set it to `verified` only after another named person checks it.
|
|
6
6
|
|
|
7
7
|
## Create evidence
|
|
8
8
|
|
|
@@ -27,6 +27,6 @@ For a rendered page capture, record the route, filters, audit period, exact Git
|
|
|
27
27
|
|
|
28
28
|
For a signed acknowledgement, bind the attestation to the exact content Git revision and store the signed file as evidence.
|
|
29
29
|
|
|
30
|
-
For a `population-export`, also record the authoritative `
|
|
30
|
+
For a `population-export`, also record the authoritative `sourceComponentId`, exact period, generation timestamp, timezone, query or report parameters, item count, completeness check, and accuracy check. A zero-item population still needs its source export and query.
|
|
31
31
|
|
|
32
32
|
Do not commit secrets, session data, regulated data, or personal data that may need erasure. Use an approved external reference when Git is not an appropriate store.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "program-soc-2",
|
|
3
|
+
"type": "program",
|
|
4
|
+
"title": "{{program_title}}",
|
|
5
|
+
"status": "planned",
|
|
6
|
+
"assuranceGoal": "none",
|
|
7
|
+
"systemIds": [],
|
|
8
|
+
"frameworkIds": [],
|
|
9
|
+
"requirementApplicability": [],
|
|
10
|
+
"controlIds": [],
|
|
11
|
+
"ownerIds": [
|
|
12
|
+
"appointment-policy-owner"
|
|
13
|
+
],
|
|
14
|
+
"riskMethodology": {
|
|
15
|
+
"method": "5x5 likelihood and impact",
|
|
16
|
+
"likelihoodScale": [
|
|
17
|
+
"Rare",
|
|
18
|
+
"Unlikely",
|
|
19
|
+
"Possible",
|
|
20
|
+
"Likely",
|
|
21
|
+
"Almost certain"
|
|
22
|
+
],
|
|
23
|
+
"impactScale": [
|
|
24
|
+
"Negligible",
|
|
25
|
+
"Minor",
|
|
26
|
+
"Moderate",
|
|
27
|
+
"Major",
|
|
28
|
+
"Severe"
|
|
29
|
+
],
|
|
30
|
+
"ratingBands": {
|
|
31
|
+
"low": "1-4",
|
|
32
|
+
"medium": "5-9",
|
|
33
|
+
"high": "10-16",
|
|
34
|
+
"critical": "17-25"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -1,38 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"dataModelVersion": "
|
|
2
|
+
"dataModelVersion": "4",
|
|
3
3
|
"id": "workspace",
|
|
4
4
|
"type": "workspace",
|
|
5
5
|
"title": "{{program_title}}",
|
|
6
6
|
"organizationName": "{{company_name}}",
|
|
7
7
|
"timezone": "{{timezone}}",
|
|
8
|
-
"description": "{{program_description}}"
|
|
9
|
-
"riskMethodology": {
|
|
10
|
-
"method": "5x5 likelihood and impact",
|
|
11
|
-
"likelihoodScale": [
|
|
12
|
-
"Rare",
|
|
13
|
-
"Unlikely",
|
|
14
|
-
"Possible",
|
|
15
|
-
"Likely",
|
|
16
|
-
"Almost certain"
|
|
17
|
-
],
|
|
18
|
-
"impactScale": [
|
|
19
|
-
"Negligible",
|
|
20
|
-
"Minor",
|
|
21
|
-
"Moderate",
|
|
22
|
-
"Major",
|
|
23
|
-
"Severe"
|
|
24
|
-
],
|
|
25
|
-
"ratingBands": {
|
|
26
|
-
"low": "1-4",
|
|
27
|
-
"medium": "5-9",
|
|
28
|
-
"high": "10-16",
|
|
29
|
-
"critical": "17-25"
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
"classificationDefinitions": {
|
|
33
|
-
"public": "Approved for public release.",
|
|
34
|
-
"internal": "Intended for the workforce and approved partners.",
|
|
35
|
-
"confidential": "Disclosure could harm the organization, a customer, or another person.",
|
|
36
|
-
"restricted": "Disclosure or alteration could cause severe harm or trigger legal duties."
|
|
37
|
-
}
|
|
8
|
+
"description": "{{program_description}}"
|
|
38
9
|
}
|
package/template/package.json
CHANGED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
# filegrc Program Repository
|
|
2
|
-
|
|
3
|
-
This Git repository is the system of record for filegrc governance records and their revision history. It can supply the training and acknowledgement catalog, exception and finding populations, policy and document approvals, risk register and assessments, vendor inventory and reviews, oversight records, obligation history, Policy Event workflows, and management evidence indexes.
|
|
4
|
-
|
|
5
|
-
## Evidence Extraction
|
|
6
|
-
|
|
7
|
-
Run filegrc from a clean commit. Use resource dates and audit links to select the exact engagement date or period, save the query or agent instructions with the export, and retain the fixed result behind an evidence record. Record a zero count when the committed source query returns no relevant items.
|
|
8
|
-
|
|
9
|
-
The repository is authoritative only for records stored here. Identity, workforce, source-control, deployment, monitoring, endpoint, backup, vulnerability, and external vendor-management systems remain authoritative for the activity they perform.
|