filegrc 0.13.4 → 0.14.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 +4 -4
- package/model/index.js +6 -5
- package/model/v10.json +14 -14
- package/model/v11.json +12200 -0
- package/package.json +1 -1
- package/src/cli.js +1 -1
- package/src/collection-review.js +59 -0
- package/src/collection-scope.js +106 -3
- package/src/document-activation.js +28 -4
- package/src/model-migration.js +70 -2
- package/src/policy-activation.js +16 -2
- package/src/program-path.js +6 -1
- package/src/program-readiness.js +22 -10
- package/src/validate.js +24 -1
- package/src/web.js +92 -12
- package/src/workflow.js +10 -12
package/README.md
CHANGED
|
@@ -44,13 +44,13 @@ npx filegrc policy-library
|
|
|
44
44
|
|
|
45
45
|
The command shows an exact diff only when the current text still matches the prior starter default. It skips customized, approved, active, superseded, and retired Policy content. Accept one named proposal revision only with the command printed by the review, which includes `--accept`, `--proposal-revision`, and `--yes`. Acceptance fails if the proposal changed after review. It changes only the listed defaults and does not approve a Policy, activate it, or mark a Control implemented.
|
|
46
46
|
|
|
47
|
-
The normal runtime uses data model
|
|
47
|
+
The normal runtime uses data model v11. Existing model v10 workspaces start with a read-only preview:
|
|
48
48
|
|
|
49
49
|
```sh
|
|
50
|
-
npx filegrc migrate --to-model
|
|
50
|
+
npx filegrc migrate --to-model 11 --preview --json
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
Review every automatic, review-required, and unsupported item. Model
|
|
53
|
+
Review every automatic, review-required, and unsupported item. Model v11 removes the old per-Control implementation approval fields. Owners can record implementation directly, while periodic Control oversight uses one Collection Review at the end of Step 3. Policy, Document, and Training approvals stay independent. Resolve unsupported items before applying the same migration with `--yes`. The [model v11 upgrade guide](https://github.com/Alignbase/filegrc/blob/main/docs/upgrading-to-model-v11.md) documents the review.
|
|
54
54
|
|
|
55
55
|
A model v2 workspace must migrate to v3 first:
|
|
56
56
|
|
|
@@ -66,7 +66,7 @@ A model v1 workspace must migrate to v2 first:
|
|
|
66
66
|
npx filegrc migrate --to-model 2 --preview --json
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
Follow the [model v2 upgrade guide](https://github.com/Alignbase/filegrc/blob/main/docs/upgrading-to-model-v2.md), then
|
|
69
|
+
Follow the [model v2 upgrade guide](https://github.com/Alignbase/filegrc/blob/main/docs/upgrading-to-model-v2.md), then migrate one model version at a time through model v11.
|
|
70
70
|
|
|
71
71
|
`filegrc serve --help` prints bind, port, environment, and safety options without starting the server. The editable server prefers `127.0.0.1:8787` and chooses another available port when that port is occupied. Set `FILEGRC_HOST`, `FILEGRC_PORT`, or the matching flags when needed. In trunk mode, browser saves synchronize, commit, and push from the authoritative branch. Use `--allow-non-authoritative-writes` for local development in a task checkout; the override never commits or pushes.
|
|
72
72
|
|
package/model/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
2
|
|
|
3
|
-
export const ACTIVE_MODEL_VERSION = "
|
|
4
|
-
export const SUPPORTED_MODEL_VERSIONS = Object.freeze(["2", "3", "4", "5", "6", "7", "8", "9", ACTIVE_MODEL_VERSION]);
|
|
3
|
+
export const ACTIVE_MODEL_VERSION = "11";
|
|
4
|
+
export const SUPPORTED_MODEL_VERSIONS = Object.freeze(["2", "3", "4", "5", "6", "7", "8", "9", "10", ACTIVE_MODEL_VERSION]);
|
|
5
5
|
export const MODEL_CAPABILITY_VERSIONS = Object.freeze({
|
|
6
6
|
"guided-workflow": 3,
|
|
7
7
|
"program-scope": 4,
|
|
@@ -16,7 +16,8 @@ export const MODEL_CAPABILITY_VERSIONS = Object.freeze({
|
|
|
16
16
|
"rolled-up-obligations": 9,
|
|
17
17
|
"temporal-collection-reviews": 9,
|
|
18
18
|
"reporting-routes": 9,
|
|
19
|
-
"reporting-route-sets": 10
|
|
19
|
+
"reporting-route-sets": 10,
|
|
20
|
+
"control-collection-oversight": 11
|
|
20
21
|
});
|
|
21
22
|
|
|
22
23
|
export function modelSupports(modelOrVersion, capability) {
|
|
@@ -31,9 +32,9 @@ export function modelSupports(modelOrVersion, capability) {
|
|
|
31
32
|
export function loadModel(version = ACTIVE_MODEL_VERSION) {
|
|
32
33
|
const requested = String(version);
|
|
33
34
|
if (!SUPPORTED_MODEL_VERSIONS.includes(requested)) {
|
|
34
|
-
const migrationTarget = requested === "1" ? "2" : requested === "2" ? "3" : requested === "3" ? "4" : requested === "4" ? "5" : requested === "5" ? "6" : requested === "6" ? "7" : requested === "7" ? "8" : requested === "8" ? "9" : "10";
|
|
35
|
+
const migrationTarget = requested === "1" ? "2" : requested === "2" ? "3" : requested === "3" ? "4" : requested === "4" ? "5" : requested === "5" ? "6" : requested === "6" ? "7" : requested === "7" ? "8" : requested === "8" ? "9" : requested === "9" ? "10" : "11";
|
|
35
36
|
throw new Error(
|
|
36
|
-
`Unsupported data model version "${requested}". This filegrc release supports models v2 through
|
|
37
|
+
`Unsupported data model version "${requested}". This filegrc release supports models v2 through v11. `
|
|
37
38
|
+ `Run \`npx filegrc migrate --to-model ${migrationTarget} --preview --json\` from the workspace root.`
|
|
38
39
|
);
|
|
39
40
|
}
|
package/model/v10.json
CHANGED
|
@@ -1436,9 +1436,9 @@
|
|
|
1436
1436
|
"policyBasis": "Policies rely on governed documents for detailed plans, schedules, procedures, charters, and reports. Approval accepts the intended values and exact content. Activation records that the linked requirements were implemented and the approved Document was put into use.",
|
|
1437
1437
|
"cadence": "Complete required program Documents in Step 2, obtain approval from a reviewer who is separate from the owner, implement their linked requirements in Step 3, then activate the unchanged approved revision. Follow the linked review Obligation after activation. Prepare Audit Documents in Step 5, then approve and activate each one there as separate revision-bound updates.",
|
|
1438
1438
|
"reviewPoints": [
|
|
1439
|
-
"
|
|
1439
|
+
"Make the companion Markdown read as a finished policy, procedure, evidence record, or narrative.",
|
|
1440
1440
|
"Replace every bracketed prompt with a reviewed fact before approval, activation, signing, or delivery.",
|
|
1441
|
-
"
|
|
1441
|
+
"Write in ordinary business language. Add resource relationships to this record, not its Markdown."
|
|
1442
1442
|
],
|
|
1443
1443
|
"sourceResourceIds": [
|
|
1444
1444
|
"policy-information-security",
|
|
@@ -1771,9 +1771,9 @@
|
|
|
1771
1771
|
"cadence": "Create an Evidence Artifact only for a real retained artifact or approved reference. Identify its source Component or source records, Controls, collection and verification facts, coverage, revision, and classification.",
|
|
1772
1772
|
"emptyState": "No Evidence Artifacts have been collected. Add one only when a real retained artifact or approved external reference exists.",
|
|
1773
1773
|
"reviewPoints": [
|
|
1774
|
-
"For a signed management representation,
|
|
1775
|
-
"
|
|
1776
|
-
"For a final CPA report,
|
|
1774
|
+
"For a signed management representation, choose \"Signed Record\" for \"Artifact Kind\" and enter \"signed-management-representation\" for \"Artifact Subtype\".",
|
|
1775
|
+
"Enter when the representation was signed in \"Business event time\". Use \"Collected On\" for the date you received it.",
|
|
1776
|
+
"For a final CPA report, choose \"Third Party Report\" for \"Artifact Kind\", enter \"soc2-report\" for \"Artifact Subtype\", and enter when the CPA firm issued it in \"Source generation time\"."
|
|
1777
1777
|
],
|
|
1778
1778
|
"sourceResourceIds": [
|
|
1779
1779
|
"policy-information-security"
|
|
@@ -2545,7 +2545,7 @@
|
|
|
2545
2545
|
"reviewPoints": [
|
|
2546
2546
|
"Decide whether this criterion applies to the selected service, Trust Services Categories, customer commitments, and planned audit.",
|
|
2547
2547
|
"Explain the decision using current service and system scope facts, not a generic statement.",
|
|
2548
|
-
"Before
|
|
2548
|
+
"Before choosing \"Not Applicable\", confirm that no in-scope promise or Control objective depends on it."
|
|
2549
2549
|
]
|
|
2550
2550
|
},
|
|
2551
2551
|
"required": [
|
|
@@ -2592,7 +2592,7 @@
|
|
|
2592
2592
|
"reviewPoints": [
|
|
2593
2593
|
"Confirm the statement reflects a real customer promise, service requirement, or approved business objective that applies to the current scope.",
|
|
2594
2594
|
"Confirm which parts of the service the promise or objective affects.",
|
|
2595
|
-
"Use
|
|
2595
|
+
"Use \"External\", \"Zero Population\", or \"Not Applicable\" only when it is true for the current scope."
|
|
2596
2596
|
],
|
|
2597
2597
|
"sourceResourceIds": [
|
|
2598
2598
|
"policy-information-security"
|
|
@@ -2737,7 +2737,7 @@
|
|
|
2737
2737
|
"reviewPoints": [
|
|
2738
2738
|
"Confirm that the linked Control actually depends on a customer or carved-out provider action.",
|
|
2739
2739
|
"Make the statement specific enough for the responsible party to perform and for the system description to explain.",
|
|
2740
|
-
"Before
|
|
2740
|
+
"Before choosing \"Not Applicable\", confirm that management is not responsible for the action."
|
|
2741
2741
|
],
|
|
2742
2742
|
"sourceResourceIds": [
|
|
2743
2743
|
"policy-information-security"
|
|
@@ -2866,8 +2866,8 @@
|
|
|
2866
2866
|
"cadence": "A Control may be implemented while its governing Policy, required program Document, or Training is approved but inactive. Before marking it implemented, record its owner, actual procedure in Record Markdown, bounded System scope, operation pattern, authoritative evidence-source Components, implementation date, and enabled calendar or event Obligations. Confirm each source Component is active, has the evidence role required by the Control family and current access owners, and includes repeatable retrieval instructions in Record Markdown. Enabled Obligations remain dormant until all of their governing content is active and effective.",
|
|
2867
2867
|
"reviewPoints": [
|
|
2868
2868
|
"Confirm the Control is needed for the applicable Requirements, Commitments, and service boundary.",
|
|
2869
|
-
"Describe
|
|
2870
|
-
"Use
|
|
2869
|
+
"Describe what people actually do to operate the Control.",
|
|
2870
|
+
"Use \"Not Applicable\", \"External\", or \"Zero Population\" only when it is true for the current scope."
|
|
2871
2871
|
],
|
|
2872
2872
|
"sourceResourceIds": [
|
|
2873
2873
|
"policy-information-security"
|
|
@@ -4389,9 +4389,9 @@
|
|
|
4389
4389
|
"policyBasis": "The information security policy requires security training and added role-specific instruction when a person’s responsibilities or data access warrant it.",
|
|
4390
4390
|
"cadence": "Approve the exact training content in Step 2. During Step 3, finish the linked Controls and Obligations, then activate the unchanged approved revision. Assign training through Obligations at onboarding, annually, and after relevant material changes or incidents.",
|
|
4391
4391
|
"reviewPoints": [
|
|
4392
|
-
"
|
|
4393
|
-
"
|
|
4394
|
-
"
|
|
4392
|
+
"Write the training for the people who must follow it and state the behavior you expect.",
|
|
4393
|
+
"Include product-license or customer MFA requirements only when an approved requirement calls for them.",
|
|
4394
|
+
"Link each completion to the exact Training revision the person completed."
|
|
4395
4395
|
],
|
|
4396
4396
|
"sourceResourceIds": [
|
|
4397
4397
|
"policy-information-security"
|
|
@@ -8065,7 +8065,7 @@
|
|
|
8065
8065
|
"reviewPoints": [
|
|
8066
8066
|
"Decide whether this source family applies to the current scope and audit period.",
|
|
8067
8067
|
"Confirm the chosen source can produce the complete population or evidence needed.",
|
|
8068
|
-
"Use
|
|
8068
|
+
"Use \"Not Applicable\" or \"Zero Population\" only when it is true."
|
|
8069
8069
|
]
|
|
8070
8070
|
},
|
|
8071
8071
|
"required": [
|