create-filegrc 0.5.1 → 0.6.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/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 six-record foundation contains workspace settings, the initial program lead, the Policy Owner Appointment, the oversight team, renderer settings, and the filegrc system of record. The default `security` starter adds the framework references, proposed policies, controls, obligations, documents, and training records. Pass `--starter foundation` when you want to stop before selecting a framework.
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-filegrc",
3
- "version": "0.5.1",
3
+ "version": "0.6.1",
4
4
  "description": "Create a filegrc workspace for a SOC 2 program",
5
5
  "license": "MIT",
6
6
  "repository": {
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 System"],
37
+ ["workforce", "Workforce"],
38
38
  ["training-acknowledgement", "Training and Acknowledgements"],
39
- ["identity-access", "Identity and Access Systems"],
40
- ["production-change", "Production Change Systems"],
41
- ["security-monitoring", "Security Monitoring Systems"],
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 Systems"],
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 Systems"],
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
- ? { evidenceSourceIds: ["system-filegrc-program-repository"] }
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: "system-filegrc-program-repository",
1130
- type: "system",
1125
+ id: "component-filegrc-program-repository",
1126
+ type: "component",
1131
1127
  title: "filegrc Program Repository",
1132
- status: "active",
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-system",
1171
- scopeResourceIds: ["workspace"],
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("systems", programRepository),
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
- ...workspace,
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
- requirementIds: ids("requirement"),
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.5.1",
525
+ version: "0.6.1",
520
526
  lockfileVersion: 3,
521
527
  requires: true,
522
528
  packages: {
523
529
  "": {
524
530
  name,
525
- version: "0.5.1",
531
+ version: "0.6.1",
526
532
  dependencies: { filegrc: versionRange }
527
533
  }
528
534
  }
@@ -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 workspace, system, and renderer changes together.
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
- Model v1 workspaces migrate to v2 first. Review the v3 preview’s automatic, review-required, and unsupported classifications before applying it with the same options and `--yes`. The migration creates no approvals, holders, evidence, or historical dates.
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 v3 upgrade guide](https://github.com/Alignbase/filegrc/blob/main/docs/upgrading-to-model-v3.md) explains the classifications, automatic changes, and required post-migration review.
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 External Evidence records. Complete authoritative source Systems as part of Control implementation. For every incomplete family in Program Readiness, update the Control with its authoritative evidence source Systems, then give each source 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 External Evidence only when a real artifact exists. Select its source System, 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.
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. External Evidence consists of verified `evidence` records from authoritative Systems. Confirm the source System, audit date or period, Control links, collector, verifier, and fixed attachment or approved external reference.
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 External Evidence records, retained attachments, delivery indexes, and checksums.
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 under Systems and assign its `evidenceSourceKinds`. A third-party application is still a System because it operates controls or produces evidence. Create a separate Vendor for its provider and connect the System through `vendorId`; keep contracts, due diligence, and supplier risk on the Vendor. Name the people who can access system reports and keep extraction instructions in the System's Record Markdown. For each Type 2 population, select one source system and export the exact audit period. Split a population when different systems or queries produce its items. Link a verified `population-export` evidence record that names the same source system 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.
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 evidence record names its collector. Verified evidence also names its verifier and verification date. Use `sourceSystemId` for system exports, `sourceResourceIds` for filegrc records, and `sourceCommit` to bind the evidence to repository state.
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 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 External Evidence columns, source-system index, external-evidence 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.
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
 
@@ -19,7 +19,7 @@ npm run serve
19
19
 
20
20
  Requires Node.js 20 or newer and Git.
21
21
 
22
- Existing model v2 workspaces must run `npx filegrc migrate --to-model 3 --preview --json` after installing a model v3 package. Review each automatic, review-required, and unsupported item before applying the same migration with `--yes`. Model v1 workspaces migrate to v2 first. See the [model v3 upgrade guide](https://github.com/Alignbase/filegrc/blob/main/docs/upgrading-to-model-v3.md).
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 System records. `npx filegrc evidence-map --json` remains available as a focused diagnostic. Create External Evidence during Step 4 only when a real export, report, screenshot, signed file, or approved external reference exists.
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
 
@@ -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 Workspace scope. Any later change makes the confirmation stale and requires another review.
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`; External Evidence stores `auditIds`; Commitments store `systemIds` and `controlIds`; Controls store `policyIds` and `requirementIds`; Risks store `controlIds`; Systems store their direct `vendorId`. Use `references` to inspect derived inbound links.
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 systems, evidence, risks, findings, exceptions, and actions that support the result.
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 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.
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 Systems together. Use Program Readiness as the completion check:
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 System ID to `evidenceSourceIds` on every Control in the family that it supports.
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 record while designing or implementing a Control. Create External Evidence during Step 4 only when the real export, report, screenshot, signed file, or approved external reference exists.
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 system whose `evidenceSourceKinds` covers the population.
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` evidence with the same source system, period, query, generation time, count, completeness check, and accuracy check.
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. 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.
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 filegrc records and Markdown with Git history, plus External Evidence records, retained attachments, delivery indexes, and checksums.
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
 
@@ -0,0 +1,8 @@
1
+ {
2
+ "id": "confidential",
3
+ "type": "classification",
4
+ "title": "Confidential",
5
+ "status": "active",
6
+ "rank": 2,
7
+ "description": "Disclosure could harm the organization, a customer, or another person."
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "id": "internal",
3
+ "type": "classification",
4
+ "title": "Internal",
5
+ "status": "active",
6
+ "rank": 1,
7
+ "description": "Intended for the workforce and approved partners."
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "id": "public",
3
+ "type": "classification",
4
+ "title": "Public",
5
+ "status": "active",
6
+ "rank": 0,
7
+ "description": "Approved for public release."
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "id": "restricted",
3
+ "type": "classification",
4
+ "title": "Restricted",
5
+ "status": "active",
6
+ "rank": 3,
7
+ "description": "Disclosure or alteration could cause severe harm or trigger legal duties."
8
+ }
@@ -5,6 +5,6 @@
5
5
  "status": "planned",
6
6
  "resourceType": "complementary-control",
7
7
  "scopeResourceIds": [
8
- "workspace"
8
+ "program-soc-2"
9
9
  ]
10
10
  }
@@ -0,0 +1,10 @@
1
+ {
2
+ "id": "collection-review-component",
3
+ "type": "collection-review",
4
+ "title": "Scoped Components review",
5
+ "status": "planned",
6
+ "resourceType": "component",
7
+ "scopeResourceIds": [
8
+ "program-soc-2"
9
+ ]
10
+ }
@@ -5,6 +5,6 @@
5
5
  "status": "planned",
6
6
  "resourceType": "framework",
7
7
  "scopeResourceIds": [
8
- "workspace"
8
+ "program-soc-2"
9
9
  ]
10
10
  }
@@ -5,6 +5,6 @@
5
5
  "status": "planned",
6
6
  "resourceType": "person",
7
7
  "scopeResourceIds": [
8
- "workspace"
8
+ "program-soc-2"
9
9
  ]
10
10
  }
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "id": "collection-review-system",
3
3
  "type": "collection-review",
4
- "title": "Service and system boundary review",
4
+ "title": "Bounded System scope review",
5
5
  "status": "planned",
6
6
  "resourceType": "system",
7
7
  "scopeResourceIds": [
8
- "workspace"
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 and subservice scope review",
4
+ "title": "Vendor inventory review",
5
5
  "status": "planned",
6
6
  "resourceType": "vendor",
7
7
  "scopeResourceIds": [
8
- "workspace"
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-system export or report that produced the zero count. Describe any source limitation, omitted item, or reconciliation difference below.
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
- # External Evidence Instructions
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 Systems; `npx filegrc evidence-map --json` remains available as a focused diagnostic. Create External Evidence 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 External Evidence record and link its ID from that record. Keep new evidence as `draft` until the artifact exists. 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.
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 `sourceSystemId`, 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.
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": "3",
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
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "{{project_name}}",
3
- "version": "0.5.1",
3
+ "version": "0.6.1",
4
4
  "private": true,
5
5
  "description": "filegrc workspace for a SOC 2 program",
6
6
  "type": "module",
@@ -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.