create-filegrc 0.1.0 → 0.3.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/LICENSE +1 -1
- package/README.md +5 -3
- package/package.json +3 -3
- package/src/cli.js +30 -12
- package/src/defaults.js +6 -7
- package/src/index.js +88 -22
- package/template/AGENTS.md +63 -23
- package/template/README.md +49 -24
- package/template/WORKSPACE.md +41 -0
- package/template/data/AGENTS.md +12 -10
- package/template/data/action-items/AGENTS.md +2 -2
- package/template/data/audits/AGENTS.md +13 -2
- package/template/data/documents/document-business-continuity-disaster-recovery.json +0 -1
- package/template/data/documents/document-contractor-policy-acknowledgement.json +0 -1
- package/template/data/documents/document-contractor-training-acknowledgement.json +0 -1
- package/template/data/documents/document-data-retention-schedule.json +0 -1
- package/template/data/documents/document-employee-handbook-acknowledgement.json +0 -1
- package/template/data/documents/document-employee-policy-acknowledgement.json +0 -1
- package/template/data/documents/document-employee-training-acknowledgement.json +0 -1
- package/template/data/documents/document-incident-response-plan.json +0 -1
- package/template/data/documents/document-soc2-management-assertion.json +0 -3
- package/template/data/documents/document-soc2-management-representation.json +0 -3
- package/template/data/documents/document-soc2-period-completeness.json +0 -3
- package/template/data/documents/document-soc2-period-completeness.md +2 -2
- package/template/data/documents/document-soc2-system-description.json +0 -3
- package/template/data/documents/document-soc2-system-description.md +3 -3
- package/template/data/evidence/AGENTS.md +5 -3
- package/template/data/obligation-events/AGENTS.md +3 -3
- package/template/data/obligations/AGENTS.md +2 -1
- package/template/data/people/person-policy-owner.json +1 -1
- package/template/data/policies/AGENTS.md +3 -1
- package/template/data/policies/policy-anti-bribery-corruption.json +0 -1
- package/template/data/policies/policy-clear-desk-screen.json +0 -1
- package/template/data/policies/policy-data-protection-handling.json +0 -1
- package/template/data/policies/policy-employee-handbook.json +0 -1
- package/template/data/policies/policy-information-security.json +0 -1
- package/template/data/policies/policy-information-security.md +3 -3
- package/template/data/policies/policy-mobile-computing-communications.json +0 -1
- package/template/data/renderer.json +2 -1
- package/template/data/risk-assessments/AGENTS.md +1 -1
- package/template/data/systems/system-filegrc-program-repository.md +3 -3
- package/template/data/workspace.json +1 -1
- package/template/docs/filegrc-audit.png +0 -0
- package/template/docs/filegrc-home.png +0 -0
- package/template/docs/filegrc-social-preview.png +0 -0
- package/template/package.json +2 -2
- package/template-parameters.json +18 -2
- package/template/data/people/person-independent-approver.json +0 -10
package/template/README.md
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
|
-
#
|
|
1
|
+
# filegrc
|
|
2
|
+
|
|
3
|
+

|
|
2
4
|
|
|
3
5
|
Run a SOC 2 program as files in Git.
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
filegrc gives a founder-led engineering team one place to adopt policies, implement controls, test External Evidence collection, run recurring compliance work, and prepare an audit. JSON holds structured records, Markdown holds long-form work, and Git supplies the change history.
|
|
6
8
|
|
|
7
9
|
There is no separate application database. The repository is the program, so engineers and agents can use the same data through the web app, a text editor, or the CLI.
|
|
8
10
|
|
|
9
|
-

|
|
10
|
-
|
|
11
11
|
## Why it exists
|
|
12
12
|
|
|
13
13
|
SOC 2 work tends to scatter across documents, calendars, tickets, screenshots, and the auditor’s request list. That makes it hard to answer basic questions: What is due? Which policy requires it? What changed during the audit period? Is the evidence complete?
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
filegrc keeps that work connected:
|
|
16
16
|
|
|
17
17
|
- A starter Security program links criteria references, policies, planned controls, owners, and schedules.
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
18
|
+
- Work Queue turns policy timing into upcoming, due, and overdue work.
|
|
19
|
+
- Policy Events add the required hiring, departure, vendor, incident, and change tasks to the Work Queue.
|
|
20
|
+
- Program Readiness says whether management can begin a candidate Type 2 evidence period without an audit record.
|
|
21
|
+
- Audit Readiness starts later with the CPA engagement, formal period, fieldwork documents, populations, and evidence delivery.
|
|
21
22
|
- The packet builder produces a scoped, indexed delivery with source files, attachments, history, and checksums.
|
|
22
23
|
|
|
23
24
|
The starter content is a proposal, not a claim of compliance. Review every policy and planned control against how your company actually operates before approving it.
|
|
@@ -33,35 +34,44 @@ npm run validate
|
|
|
33
34
|
npm run serve
|
|
34
35
|
```
|
|
35
36
|
|
|
36
|
-
Setup asks for the
|
|
37
|
+
Setup asks for the legal organization name, the initial policy owner and their email, a security reporting address, and the program timezone. It initializes Git when needed. The first local run then defines the initial service boundary and an optional program goal. A Type 2 choice records management intent, not an audit engagement. Completing onboarding opens Step 1 so you can add the real reviewers and operators, finish the oversight team, and confirm the criteria, commitments, vendors, and systems before moving on.
|
|
37
38
|
|
|
38
39
|
Open the printed local URL. You can commit locally from Repository without configuring a remote. Add a remote when the team is ready to share the workspace, then the browser can pull with rebase and push reviewed commits.
|
|
39
40
|
|
|
41
|
+
The creation summary reports the resolved engine version, program timezone, starter record counts, install result, and whether the target joined an existing Git worktree. Generated workspaces receive an organization-specific README with their engine version, validation commands, and remaining setup work.
|
|
42
|
+
|
|
40
43
|
## How it works
|
|
41
44
|
|
|
42
|
-
1.
|
|
43
|
-
2.
|
|
44
|
-
3.
|
|
45
|
-
4.
|
|
46
|
-
5.
|
|
45
|
+
1. Confirm the program’s people and oversight team, applicable criteria, commitments, material vendors, and in-scope systems.
|
|
46
|
+
2. Review and activate the policies with a separate management reviewer, who is usually internal and may be external.
|
|
47
|
+
3. Tailor the starter controls, add each owner, actual procedure, scope, cadence, evidence source, and implementation date, and confirm any linked Work Queue schedules are enabled. Marking a control implemented starts eligible schedules. Then record any complementary customer or subservice controls.
|
|
48
|
+
4. Open each generated External Evidence draft, choose its authoritative source System, collect the named artifact, and have another person verify it.
|
|
49
|
+
5. Start the management candidate period, maintain risk assessments and risks, update controls when needed, work the filegrc queue, and preserve dated evidence.
|
|
50
|
+
6. Engage a CPA firm, record the separate firm-agreed period, review filegrc Evidence and External Evidence, prepare fieldwork, and generate the evidence packet.
|
|
47
51
|
|
|
48
52
|
Long-form policies, procedures, plans, minutes, training, assertions, and audit responses are Markdown companions beside their JSON records. Screenshots, signed acknowledgements, reports, and fixed exports are attachments linked through evidence records.
|
|
49
53
|
|
|
54
|
+
Third-party software is usually both a System and a Vendor. The application is the System because it operates controls and produces evidence. The provider is the Vendor because contracts, due diligence, and supplier risk belong to that relationship. Link the System to the Vendor with `vendorId`, and link exported evidence to the System.
|
|
55
|
+
|
|
50
56
|
## Run the program
|
|
51
57
|
|
|
52
|
-
Use Overview to follow
|
|
58
|
+
Use Overview to follow one six-step path: define scope, approve policies, implement controls, test External Evidence, operate the program, then complete the audit. Steps 1 through 4 and Step 6 open an overview with instructions, record links, progress, and completion status. Step 5 opens Policy Events and the Work Queue because operation is ongoing rather than a one-time checklist. The progress tracker opens the first incomplete step.
|
|
53
59
|
|
|
54
|
-
|
|
60
|
+

|
|
55
61
|
|
|
56
|
-
Use
|
|
62
|
+
Use Work Queue for recurring work, Policy Event tasks, and other assigned follow-up. Trigger a Policy Event when the underlying change occurs, and filegrc adds its required actions to the queue with their owners and deadlines. Create a separate Action Item only when follow-up needs its own assignee, deadline, and completion proof. Each queue item shows its due window or deadline. Link dated proof to close the work.
|
|
63
|
+
|
|
64
|
+
Use the resource pages to maintain systems, people, vendors, risks, controls, tests, incidents, training, meetings, and External Evidence. The question-mark guide on each list explains what the record type is for, which policies call for it, and when to update it.
|
|
57
65
|
|
|
58
66
|
Agents use the same logic headlessly:
|
|
59
67
|
|
|
60
68
|
```sh
|
|
61
69
|
npx filegrc guide risk-assessment --json
|
|
70
|
+
npx filegrc program-path --json
|
|
62
71
|
npx filegrc scaffold risk-assessment --title "2026 Annual Risk Assessment"
|
|
63
72
|
npx filegrc list risk --json
|
|
64
73
|
npx filegrc obligations --json
|
|
74
|
+
npx filegrc program-readiness --summary --json
|
|
65
75
|
npx filegrc complete obligation-id completion-record.json
|
|
66
76
|
npx filegrc trigger person-started --occurred-on 2026-07-25 --subject person-id
|
|
67
77
|
npx filegrc complete-action action-item-id completion-record.json --completed-on 2026-07-25
|
|
@@ -69,15 +79,28 @@ npx filegrc complete-event obligation-event-id --completed-on 2026-07-25
|
|
|
69
79
|
npx filegrc search "access review"
|
|
70
80
|
```
|
|
71
81
|
|
|
72
|
-
`
|
|
82
|
+
`program-path` reports the same six steps, current status, page order, exact Instructions, Use, Policy Basis, and next actions shown in the renderer. `program-readiness --summary --json` reports compact stage counts and next actions; omit `--summary` when you need every readiness item. `guide` reports that same page guidance for one resource, plus timing, required fields, valid values, relationship candidates, and Markdown locations. `scaffold` produces the same JSON and Markdown mutation shape used by the browser. Read `AGENTS.md` and `data/AGENTS.md` for the full headless workflow.
|
|
83
|
+
|
|
84
|
+
## Start the evidence period
|
|
85
|
+
|
|
86
|
+
Program Readiness works without an audit ID or CPA firm:
|
|
87
|
+
|
|
88
|
+
```sh
|
|
89
|
+
npx filegrc program-readiness --json
|
|
90
|
+
npx filegrc program-readiness --require-ready
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
The Evidence Ready gate requires defined scope, effective policies, implemented controls, configured authoritative systems, and verified collection for external evidence that does not already have a dedicated Step 5 record. Put scan reports, backup output, and other fixed artifacts in External Evidence records, then link them from the applicable Step 5 operating records. Starter obligations remain enabled proposals until their governing policies are effective and at least one linked control is implemented. A filegrc-managed control cannot be implemented while one of its linked Work Queue schedules is paused or waiting for policy approval.
|
|
94
|
+
|
|
95
|
+
When the gate passes, record `candidatePeriodStart` on the workspace on the date reliable collection begins. This is management’s candidate Type 2 period. Do not backdate it. The later audit record keeps the separate period agreed with the CPA firm.
|
|
73
96
|
|
|
74
97
|
## Prepare the audit
|
|
75
98
|
|
|
76
|
-
|
|
99
|
+
After engaging a CPA firm, create the audit record with the firm, scope, and exact agreed date or period. Audit Readiness checks the program foundation, engagement, formal scope and dates, management documents, filegrc Evidence, External Evidence, and Type 2 populations.
|
|
77
100
|
|
|
78
|
-

|
|
79
102
|
|
|
80
|
-
For a Type 2 audit, reconcile each complete period population to its authoritative system after the period closes. A zero-item population still needs its source export and query.
|
|
103
|
+
For a Type 2 audit, reconcile each complete period population to its authoritative system after the period closes. A zero-item population still needs its source export and query. filegrc Evidence consists of dated operating records and their Markdown and Git history. External Evidence consists of verified exports, reports, screenshots, signed files, and approved external references. The packet compiles both paths with the selected records, attachments, indexes, historical versions, and SHA-256 checksums.
|
|
81
104
|
|
|
82
105
|
```sh
|
|
83
106
|
npx filegrc prepare-audit audit-id
|
|
@@ -85,13 +108,15 @@ npx filegrc audit-readiness audit-id --json
|
|
|
85
108
|
npx filegrc evidence-packet --audit audit-id
|
|
86
109
|
```
|
|
87
110
|
|
|
88
|
-
|
|
111
|
+
filegrc checks management preparation and packet integrity. The independent CPA firm still selects samples, tests controls, evaluates exceptions, decides whether evidence is sufficient, and issues the SOC 2 report.
|
|
112
|
+
|
|
113
|
+
Early CPA engagement remains available when a customer deadline, unusual scope, or other timing risk needs input before the program reaches Evidence Ready. It is optional, not the default first action.
|
|
89
114
|
|
|
90
115
|
## What belongs elsewhere
|
|
91
116
|
|
|
92
|
-
|
|
117
|
+
filegrc does not replace workforce, identity, source-control, deployment, infrastructure, monitoring, endpoint, backup, vulnerability, training, signature, procurement, contract, or vendor-risk systems.
|
|
93
118
|
|
|
94
|
-
Catalog each authoritative system in
|
|
119
|
+
Catalog each authoritative system in filegrc, record how to export from it, and attach or reference the fixed evidence when Audit Readiness asks for it. The generated external-delivery index identifies files that still need to be supplied through an auditor portal or another approved channel.
|
|
95
120
|
|
|
96
121
|
The starter uses the SOC 2 Security category and does not include licensed criteria text. Add Availability, Processing Integrity, Confidentiality, or Privacy only when they are in scope.
|
|
97
122
|
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# {{company_name}} SOC 2 Program
|
|
2
|
+
|
|
3
|
+
This private workspace holds {{company_name}}'s SOC 2 program records and audit evidence. JSON under `data/` stores structured records, Markdown stores long-form work, and Git records reviewed changes.
|
|
4
|
+
|
|
5
|
+
The workspace uses filegrc {{filegrc_version}} through the dependency range `{{filegrc_version_range}}`.
|
|
6
|
+
|
|
7
|
+
## Work locally
|
|
8
|
+
|
|
9
|
+
You need Node.js 20 or newer and Git.
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
npm install
|
|
13
|
+
npm run validate
|
|
14
|
+
npm run serve
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
The editable server binds to loopback by default and has no authentication. Do not expose it to an untrusted network.
|
|
18
|
+
|
|
19
|
+
Agents and terminal users can inspect the workspace without the browser:
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
npx filegrc guide --json
|
|
23
|
+
npx filegrc program-path --json
|
|
24
|
+
npx filegrc obligations --json
|
|
25
|
+
npx filegrc validate --json
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Read `AGENTS.md` and `data/AGENTS.md` before broad changes.
|
|
29
|
+
|
|
30
|
+
## Finish initial setup
|
|
31
|
+
|
|
32
|
+
The starter policies, controls, and obligations are proposals. They do not state that {{company_name}} operates the described controls.
|
|
33
|
+
|
|
34
|
+
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.
|
|
35
|
+
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.
|
|
36
|
+
3. Review the starter control set, implement each applicable control with its actual procedure, scope, cadence, evidence sources, and implementation date, and confirm any linked Work Queue schedules are enabled. Marking a control implemented starts eligible schedules. Then record any complementary customer or subservice controls.
|
|
37
|
+
4. Open each generated External Evidence draft, choose its authoritative source System, collect the named artifact, and have another person verify it.
|
|
38
|
+
5. 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. `npx filegrc obligations` previews every event task, owner, deadline, and requested proof before the trigger creates anything.
|
|
39
|
+
6. Engage a CPA firm, record the separate firm-agreed period in an audit record, review filegrc Evidence and External Evidence, and prepare fieldwork.
|
|
40
|
+
|
|
41
|
+
filegrc manages GRC records and audit evidence. It does not replace infrastructure logging, monitoring, identity, backup, endpoint, or incident-detection systems.
|
package/template/data/AGENTS.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# filegrc Data Instructions
|
|
2
2
|
|
|
3
3
|
These instructions apply to every file under `data/`. The root `AGENTS.md` explains the program and Git workflow. A collection-level `AGENTS.md`, when present, adds rules for that resource.
|
|
4
4
|
|
|
@@ -8,13 +8,14 @@ Treat the installed model as the authority. Do not infer a schema from a nearby
|
|
|
8
8
|
|
|
9
9
|
```sh
|
|
10
10
|
npx filegrc guide --json
|
|
11
|
+
npx filegrc program-path --json
|
|
11
12
|
npx filegrc types --json
|
|
12
13
|
npx filegrc guide RESOURCE_TYPE --json
|
|
13
14
|
npx filegrc list RESOURCE_TYPE --json
|
|
14
15
|
npx filegrc search "TERM" --json
|
|
15
16
|
```
|
|
16
17
|
|
|
17
|
-
Use `guide` before any unfamiliar create or status transition. It reports required fields, fields required by a status, enum values, relationship types and candidates, Markdown slots,
|
|
18
|
+
Use `program-path` to find the current lifecycle step and see the renderer’s exact page Instructions, Use, Policy Basis, commands, and next actions. Use `guide` before any unfamiliar create or status transition. It repeats the page guidance and reports required fields, fields required by a status, enum values, relationship types and candidates, Markdown slots, timing, and exact paths. Use `describe` only when you need the raw model definition.
|
|
18
19
|
|
|
19
20
|
## Choose the right record
|
|
20
21
|
|
|
@@ -23,7 +24,7 @@ Use `guide` before any unfamiliar create or status transition. It reports requir
|
|
|
23
24
|
- Work required on a schedule or event belongs in `obligation`.
|
|
24
25
|
- A dated instance of work belongs in its activity type, such as `meeting`, `risk-assessment`, `access-review`, `vulnerability-scan`, `backup-test`, or `exercise`.
|
|
25
26
|
- A fact that may change over time belongs in an inventory record, such as `person`, `system`, `asset`, `vendor`, or `access-grant`.
|
|
26
|
-
-
|
|
27
|
+
- A dated Step 5 operating record proves that filegrc-managed work occurred. Put each fixed external artifact in an `evidence` record and link it from the operating record; never add an unexplained attachment.
|
|
27
28
|
- Follow-up work belongs in `action-item`. A gap belongs in `finding`, a known threat belongs in `risk`, and an approved temporary departure belongs in `exception`.
|
|
28
29
|
- An auditor request belongs in `audit-request`; the engagement itself belongs in `audit`.
|
|
29
30
|
|
|
@@ -60,7 +61,7 @@ npx filegrc create /tmp/filegrc-mutation.json
|
|
|
60
61
|
npx filegrc validate --json
|
|
61
62
|
```
|
|
62
63
|
|
|
63
|
-
Creation is atomic. If JSON, Markdown, relationships, or validation fail,
|
|
64
|
+
Creation is atomic. If JSON, Markdown, relationships, or validation fail, filegrc rolls back the write. IDs are globally unique and immutable after commit.
|
|
64
65
|
|
|
65
66
|
## Read and update
|
|
66
67
|
|
|
@@ -76,7 +77,7 @@ Edit the exported mutation, then run:
|
|
|
76
77
|
npx filegrc update RESOURCE_TYPE RESOURCE_ID /tmp/filegrc-mutation.json
|
|
77
78
|
```
|
|
78
79
|
|
|
79
|
-
The mutation includes the complete record, current Markdown, and revision hashes.
|
|
80
|
+
The mutation includes the complete record, current Markdown, and revision hashes. filegrc rejects the update if another person or agent changed either source after export. Reload and reapply the intended change instead of overwriting it.
|
|
80
81
|
|
|
81
82
|
To update JSON and Markdown together, pass `{ "record": {...}, "content": {...}, "revision": "...", "contentRevisions": {...} }`. To change one Markdown slot:
|
|
82
83
|
|
|
@@ -90,7 +91,7 @@ Never replace a complete record with a partial JSON object. Never change `id` or
|
|
|
90
91
|
|
|
91
92
|
JSON is for stable metadata used by validation, relationships, filters, schedules, and audit checks. Markdown is for the actual work: inputs, method, observations, results, rationale, decisions, exceptions, and follow-up.
|
|
92
93
|
|
|
93
|
-
If `guide` marks a Markdown slot recommended, fill it before treating the deliverable as complete.
|
|
94
|
+
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.
|
|
94
95
|
|
|
95
96
|
Use explicit business dates. Git records when a file changed, but it does not replace `occurredOn`, `assessmentDate`, `reviewedOn`, `completedOn`, or similar fields.
|
|
96
97
|
|
|
@@ -120,7 +121,7 @@ Delete only an uncommitted draft or a mistake:
|
|
|
120
121
|
npx filegrc delete RESOURCE_TYPE RESOURCE_ID --yes
|
|
121
122
|
```
|
|
122
123
|
|
|
123
|
-
|
|
124
|
+
filegrc rejects deletion that breaks references and removes owned Markdown with the JSON. Retire, close, cancel, supersede, or replace committed records that explain historical operation.
|
|
124
125
|
|
|
125
126
|
## Evidence and attachments
|
|
126
127
|
|
|
@@ -147,7 +148,7 @@ Remove a local attachment explicitly before deleting its evidence record:
|
|
|
147
148
|
npx filegrc detach EVIDENCE_ID source-export.csv --yes
|
|
148
149
|
```
|
|
149
150
|
|
|
150
|
-
|
|
151
|
+
filegrc will not delete an evidence record that still has local attachments.
|
|
151
152
|
|
|
152
153
|
Never invent evidence, dates, approvals, results, people, or source-system details. If a required fact is unavailable, leave the record in a non-final state and report the missing input.
|
|
153
154
|
|
|
@@ -161,17 +162,18 @@ npx filegrc complete-action ACTION_ITEM_ID completion-mutation.json --completed-
|
|
|
161
162
|
npx filegrc complete-event OBLIGATION_EVENT_ID --completed-on YYYY-MM-DD
|
|
162
163
|
```
|
|
163
164
|
|
|
164
|
-
`complete` and `complete-action` validate the expected completion type and link the new record atomically. `complete-event` refuses to close the workflow until every action has its requested proof. For hour-based deadlines use `--occurred-at` with an RFC 3339 timestamp and timezone.
|
|
165
|
+
Run `obligations` before `trigger` to preview every Policy Event task, owner, deadline, and requested proof. Triggering creates the event and adds all linked Action Items to the Work Queue atomically. `complete` and `complete-action` validate the expected completion type and link the new record atomically. `complete-event` refuses to close the workflow until every action has its requested proof. For hour-based deadlines use `--occurred-at` with an RFC 3339 timestamp and timezone.
|
|
165
166
|
|
|
166
167
|
## Audit work
|
|
167
168
|
|
|
168
169
|
```sh
|
|
170
|
+
npx filegrc program-readiness --summary --json
|
|
169
171
|
npx filegrc prepare-audit AUDIT_ID
|
|
170
172
|
npx filegrc audit-readiness AUDIT_ID --json
|
|
171
173
|
npx filegrc evidence-packet --audit AUDIT_ID --preview --json
|
|
172
174
|
```
|
|
173
175
|
|
|
174
|
-
Fix readiness errors in source records. Do not edit packet output under `.filegrc/`. A delivery-ready
|
|
176
|
+
Run Program Readiness before creating the normal audit engagement. It checks scope, effective policies, implemented controls, evidence sources, and test captures without an audit ID. Fix readiness errors in source records. Do not edit packet output under `.filegrc/`. A delivery-ready filegrc packet means the management checks passed; the engagement team still judges evidence and performs the examination.
|
|
175
177
|
|
|
176
178
|
## Finish every change
|
|
177
179
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Action Item Instructions
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Create an Action Item only when follow-up needs its own assignee, deadline, and completion proof. Keep simpler remediation on the Finding or other source record. Set `sourceResourceId` to the record that created the work; filegrc derives the backlink and adds every open Action Item to Work Queue. Keep the assignee, due date or policy window, blockers, completion records, and evidence explicit.
|
|
4
4
|
|
|
5
5
|
For an event-generated action, do not weaken or extend its policy deadline by hand. Create the requested completion resource and close the action atomically:
|
|
6
6
|
|
|
@@ -8,4 +8,4 @@ For an event-generated action, do not weaken or extend its policy deadline by ha
|
|
|
8
8
|
npx filegrc complete-action ACTION_ITEM_ID completion-mutation.json --completed-on YYYY-MM-DD
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
filegrc rejects the wrong completion type. Mark ordinary Action Items `done` only after the work occurred, set `completedOn`, and link the completion record or evidence. Use `blocked` while a named dependency prevents work, and link that dependency with `blockingResourceIds`.
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
# Audit Instructions
|
|
2
2
|
|
|
3
|
-
Create one `audit` record for one engagement. Define the audit kind, framework, exact Type 1 date or Type 2 period, scope, owners, auditor, and report status from facts supplied by management or the engagement team.
|
|
3
|
+
Create one `audit` record for one real CPA engagement. Define the audit kind, framework, exact firm-agreed Type 1 date or Type 2 period, scope, owners, auditor, and report status from facts supplied by management or the engagement team.
|
|
4
|
+
|
|
5
|
+
Keep management’s candidate Type 2 dates on `workspace`. Do not copy them into the audit record until the CPA firm agrees to those dates. Preserve both sets when the formal period differs.
|
|
6
|
+
|
|
7
|
+
The normal path is to pass `npx filegrc program-readiness --require-ready` and start reliable evidence collection before engaging the firm. Early engagement is allowed when a customer deadline or unusual scope needs CPA input.
|
|
4
8
|
|
|
5
9
|
After the audit record has its dates:
|
|
6
10
|
|
|
@@ -11,6 +15,13 @@ npx filegrc audit-readiness AUDIT_ID --json
|
|
|
11
15
|
|
|
12
16
|
Preparation creates engagement-specific management documents and, for Type 2, population records. It does not approve documents, implement controls, reconcile populations, or create evidence.
|
|
13
17
|
|
|
18
|
+
Review both evidence paths for the exact formal date or period:
|
|
19
|
+
|
|
20
|
+
1. filegrc Evidence consists of dated Step 5 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. External Evidence consists of verified `evidence` records from other Systems. Confirm the source System, date or period, Control links, collector, verifier, and fixed attachment or approved external reference.
|
|
22
|
+
|
|
23
|
+
The packet compiles both paths. It includes filegrc records and Markdown with Git history, plus External Evidence records, retained attachments, delivery indexes, and checksums.
|
|
24
|
+
|
|
14
25
|
Run readiness repeatedly and fix source records. Preview the packet before writing it:
|
|
15
26
|
|
|
16
27
|
```sh
|
|
@@ -18,4 +29,4 @@ npx filegrc evidence-packet --audit AUDIT_ID --preview --json
|
|
|
18
29
|
npx filegrc evidence-packet --audit AUDIT_ID
|
|
19
30
|
```
|
|
20
31
|
|
|
21
|
-
Do not state that an auditor accepted evidence, selected a sample, cleared an exception, or issued a report unless that fact came from the engagement team.
|
|
32
|
+
Do not state that an auditor accepted evidence, selected a sample, cleared an exception, or issued a report unless that fact came from the engagement team. filegrc tracks management preparation; the CPA firm owns examination judgments and the report.
|
|
@@ -6,7 +6,7 @@ Reporting period: [start date] through [end date]
|
|
|
6
6
|
|
|
7
7
|
Management reconciled every audit-population record linked to this engagement to its authoritative source and included every item relevant to the in-scope system and controls. The generated `population-index.csv` is incorporated into this statement by reference and records each population ID, source system, query, timezone, count, validation, reviewer, conclusion, and fixed export.
|
|
8
8
|
|
|
9
|
-
| Population |
|
|
9
|
+
| Population | filegrc population ID | Result or exception |
|
|
10
10
|
| --- | --- | --- |
|
|
11
11
|
| Workforce starts, role changes, and departures | [Population ID] | [Result] |
|
|
12
12
|
| Access grants, changes, reviews, and removals | [Population ID] | [Result] |
|
|
@@ -27,6 +27,6 @@ For a population with zero items, retain the source-system export or report that
|
|
|
27
27
|
|
|
28
28
|
## Management Confirmation
|
|
29
29
|
|
|
30
|
-
To the best of management's knowledge after the reconciliations above,
|
|
30
|
+
To the best of management's knowledge after the reconciliations above, filegrc and the linked evidence contain the complete populations and reportable events relevant to the engagement period.
|
|
31
31
|
|
|
32
32
|
[Identify the responsible signer, title, signature or approval method, and date.]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# {{company_name}} SOC 2 System Description
|
|
2
2
|
|
|
3
|
-
> Draft preparation document. Complete every bracketed item, reconcile it to the
|
|
3
|
+
> Draft preparation document. Complete every bracketed item, reconcile it to the filegrc records, and have the service auditor review the final presentation.
|
|
4
4
|
|
|
5
5
|
## Reporting Period and Scope
|
|
6
6
|
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
## DC2: Service Commitments and System Requirements
|
|
18
18
|
|
|
19
|
-
[Summarize customer commitments, contractual security promises, internal objectives, and the system requirements needed to meet them. Link the
|
|
19
|
+
[Summarize customer commitments, contractual security promises, internal objectives, and the system requirements needed to meet them. Link the filegrc commitment records.]
|
|
20
20
|
|
|
21
21
|
## DC3: System Components
|
|
22
22
|
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
|
|
47
47
|
## DC5: Applicable Criteria and Controls
|
|
48
48
|
|
|
49
|
-
[Reference the selected criteria and control matrix generated by
|
|
49
|
+
[Reference the selected criteria and control matrix generated by filegrc.]
|
|
50
50
|
|
|
51
51
|
## DC6: Complementary User Entity Controls
|
|
52
52
|
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
# Evidence Instructions
|
|
1
|
+
# External Evidence 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
|
+
Completing onboarding creates draft collection tests only for evidence that must come from systems outside filegrc and does not already have a dedicated Step 5 record. Risk assessments, meetings, vendor reviews, attestations, vulnerability scans, penetration tests, backup tests, exercises, exceptions, and findings do not need a separate test. When one of those operating records needs a fixed external artifact, create or update an External Evidence record for the artifact and link its ID from the operating record. Keep a generated collection test as `draft` until the artifact has actually been captured. Set it to `collected` only after selecting the source System, 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
|
+
|
|
5
7
|
## Create evidence
|
|
6
8
|
|
|
7
9
|
1. Run `npx filegrc guide evidence --json`.
|
|
8
10
|
2. Use one evidence record for one coherent proof item or fixed export.
|
|
9
11
|
3. Put local attachments under `data/evidence/EVIDENCE_ID/` and list their data-relative paths in `filePaths`.
|
|
10
|
-
4. Use `externalReference` only when the file must remain in an approved external system.
|
|
12
|
+
4. Use `externalReference` only when the file must remain in an approved external system. filegrc never fetches it.
|
|
11
13
|
5. Link `sourceResourceIds`, `controlIds`, and `auditIds` as applicable. Use `sourceCommit` when the evidence represents repository state.
|
|
12
14
|
6. Name the actual collector. A `verified` record also needs the actual verifier and verification date.
|
|
13
15
|
|
|
@@ -19,7 +21,7 @@ npx filegrc attach EVIDENCE_ID /path/to/source-file --name auditor-facing-name.c
|
|
|
19
21
|
|
|
20
22
|
The command never overwrites an existing attachment.
|
|
21
23
|
|
|
22
|
-
Use `npx filegrc detach EVIDENCE_ID FILE_NAME --yes` when removing a mistaken attachment.
|
|
24
|
+
Use `npx filegrc detach EVIDENCE_ID FILE_NAME --yes` when removing a mistaken attachment. filegrc will not delete an evidence record while local attachments remain.
|
|
23
25
|
|
|
24
26
|
For a rendered page capture, record the route, filters, audit period, exact Git commit, capture time and method, source resource IDs, and screenshot. A current screenshot cannot prove an earlier state unless it is rendered from or bound to that revision.
|
|
25
27
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# Policy Event Instructions
|
|
2
2
|
|
|
3
|
-
Do not create an `obligation-event` or its
|
|
3
|
+
Do not create an `obligation-event` or its Action Items by hand. Preview the configured Policy Event, then trigger its work:
|
|
4
4
|
|
|
5
5
|
```sh
|
|
6
6
|
npx filegrc obligations --json
|
|
7
7
|
npx filegrc trigger EVENT_TYPE --occurred-on YYYY-MM-DD --subject RESOURCE_ID --json
|
|
8
8
|
```
|
|
9
9
|
|
|
10
|
-
Use `--occurred-at` with an RFC 3339 timestamp when any action has an hour-based deadline. The
|
|
10
|
+
The obligations output lists every task the trigger will add, with its owner, deadline, and requested proof. Use `--occurred-at` with an RFC 3339 timestamp when any action has an hour-based deadline. The trigger creates the event and adds all Action Items to the Work Queue atomically, then reports the event, task count, task IDs, and deadlines.
|
|
11
11
|
|
|
12
12
|
Complete each action with the requested resource type and proof. Then close the workflow:
|
|
13
13
|
|
|
@@ -15,4 +15,4 @@ Complete each action with the requested resource type and proof. Then close the
|
|
|
15
15
|
npx filegrc complete-event OBLIGATION_EVENT_ID --completed-on YYYY-MM-DD
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
filegrc refuses to close an event with unfinished or unproved actions. Cancel an event only when the triggering event itself was entered in error or did not occur; explain the reason in related records or the commit message.
|
|
@@ -5,7 +5,8 @@ An obligation is a reusable policy schedule or event template. It is not the rec
|
|
|
5
5
|
- Calendar obligations need a valid recurrence anchor, owners, expected completion types, and policy or control links.
|
|
6
6
|
- Event obligations need a stable lowercase `eventType`, a prompt, owners, expected completion types, and an explicit deadline window.
|
|
7
7
|
- Keep completed occurrences in `completionResourceIds`. Do not replace prior links when a new period starts.
|
|
8
|
+
- Keep starter obligations as proposals until every governing policy is active and effective and, when the obligation names controls, at least one linked control is implemented.
|
|
8
9
|
- When an approved cadence changes, update the policy, control, and obligation together.
|
|
9
10
|
- Pause or retire a template only when the underlying policy work no longer applies. Do not delete historical templates that explain prior periods.
|
|
10
11
|
|
|
11
|
-
Use `npx filegrc obligations --json` to inspect calculated work. Use `npx filegrc complete OBLIGATION_ID completion-mutation.json` to create and link a dated occurrence in one validated write.
|
|
12
|
+
Use `npx filegrc obligations --json` to inspect calculated recurring work and preview every Policy Event task, owner, deadline, and requested proof. Use `npx filegrc complete OBLIGATION_ID completion-mutation.json` to create and link a dated occurrence in one validated write. Use `npx filegrc trigger EVENT_TYPE ...` only after the matching event occurs; it adds all configured Action Items to the Work Queue atomically.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Policies state required behavior. Controls, obligations, training, attestations, and evidence show how the organization applies that behavior.
|
|
4
4
|
|
|
5
|
-
Use the `content` Markdown slot for the policy text. Keep ownership and approval metadata in JSON. The approver must be separate from the owner, including through team membership
|
|
5
|
+
Use the `content` Markdown slot for the policy text. Keep ownership and approval metadata in JSON. The approver must be separate from the owner, including through team membership. The reviewer will usually be another leader or manager in the organization, but may be external.
|
|
6
6
|
|
|
7
7
|
Keep a policy `draft` until its text, owner, scope, related requirements and controls, approval, effective date, review cadence, and acknowledgement requirement match actual practice. When activating it:
|
|
8
8
|
|
|
@@ -12,4 +12,6 @@ Keep a policy `draft` until its text, owner, scope, related requirements and con
|
|
|
12
12
|
4. Update or create its recurring and event obligations.
|
|
13
13
|
5. Assign training or attestations when the policy requires them.
|
|
14
14
|
|
|
15
|
+
The independent policy approver is a management reviewer, not the CPA auditor. Appoint the reviewer during policy adoption. Recurring and event obligations linked to the policy remain proposals until the policy is active and effective and, when they name controls, at least one linked control is implemented.
|
|
16
|
+
|
|
15
17
|
For a material revision, preserve Git history, obtain a new approval, and require a new acknowledgement when the audience’s responsibilities changed. Do not reuse the audit firm as a management approver without confirming independence.
|