@mitre/hdf-schema 3.1.0-rc.1 → 3.2.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://mitre.github.io/hdf-libs/schemas/hdf-system/v3.1.0",
3
+ "$id": "https://mitre.github.io/hdf-libs/schemas/hdf-system/v3.2.0",
4
4
  "title": "HDF System",
5
5
  "description": "Describes a system's authorization boundary, components, and interconnections. Maps to OSCAL SSP system-characteristics and FedRAMP system inventory.",
6
6
  "type": "object",
@@ -16,7 +16,7 @@
16
16
  "description": "Stable UUID (RFC 4122) for this system. Enables cross-document correlation independent of file location. Optional in casual use, expected in production documents."
17
17
  },
18
18
  "owner": {
19
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Identity",
19
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Identity",
20
20
  "description": "Team or individual responsible for this system's authorization and compliance. Maps to OSCAL responsible-party with role 'system-owner'."
21
21
  },
22
22
  "name": {
@@ -37,7 +37,7 @@
37
37
  "description": "Description of the system's purpose and mission."
38
38
  },
39
39
  "authorizationStatus": {
40
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.1.0#/$defs/Authorization_Status",
40
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.2.0#/$defs/Authorization_Status",
41
41
  "description": "Current Authorization to Operate (ATO) status."
42
42
  },
43
43
  "authorizationDate": {
@@ -46,7 +46,7 @@
46
46
  "description": "Date the current authorization status was granted. ISO 8601 format."
47
47
  },
48
48
  "categorizationLevel": {
49
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.1.0#/$defs/Categorization_Level",
49
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.2.0#/$defs/Categorization_Level",
50
50
  "description": "FIPS 199 security categorization (impact level)."
51
51
  },
52
52
  "boundaryDescription": {
@@ -57,21 +57,21 @@
57
57
  "type": "array",
58
58
  "minItems": 1,
59
59
  "items": {
60
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.1.0#/$defs/Component"
60
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.2.0#/$defs/Component"
61
61
  },
62
62
  "description": "System components within the authorization boundary. Uses the full polymorphic Component type with stable identity (componentId), external references, and SBOM support."
63
63
  },
64
64
  "controlDesignations": {
65
65
  "type": "array",
66
66
  "items": {
67
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.1.0#/$defs/Control_Designation"
67
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.2.0#/$defs/Control_Designation"
68
68
  },
69
69
  "description": "Declares which controls are common, hybrid, or system-specific, and which component provides them. Maps to NIST SP 800-53 control designations and OSCAL leveraged-authorizations."
70
70
  },
71
71
  "dataFlows": {
72
72
  "type": "array",
73
73
  "items": {
74
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/data-flow/v3.1.0#/$defs/Data_Flow"
74
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/data-flow/v3.2.0#/$defs/Data_Flow"
75
75
  },
76
76
  "description": "Inter-component data flows describing how components communicate. Supports local, cross-system, and external flows. Replaces the interconnections[] field."
77
77
  },
@@ -83,7 +83,7 @@
83
83
  "description": "Optional key-value labels for grouping and querying systems."
84
84
  },
85
85
  "integrity": {
86
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.1.0#/$defs/Integrity",
86
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.2.0#/$defs/Integrity",
87
87
  "description": "Cryptographic integrity information for verifying this system document has not been tampered with."
88
88
  },
89
89
  "version": {
@@ -91,7 +91,7 @@
91
91
  "description": "Version of this system document."
92
92
  },
93
93
  "generator": {
94
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.1.0#/$defs/Generator",
94
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.2.0#/$defs/Generator",
95
95
  "description": "Information about the tool that generated this system document."
96
96
  }
97
97
  },
@@ -139,9 +139,9 @@
139
139
  }
140
140
  ],
141
141
  "$defs": {
142
- "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0": {
142
+ "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0": {
143
143
  "$schema": "https://json-schema.org/draft/2020-12/schema",
144
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0",
144
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0",
145
145
  "title": "HDF Common Primitives",
146
146
  "description": "Shared building blocks used by hdf-results and hdf-baseline schemas.",
147
147
  "$defs": {
@@ -886,15 +886,40 @@
886
886
  },
887
887
  "code": {
888
888
  "type": "string",
889
- "description": "The raw source code of the requirement. Set to null for manual-only requirements or requirements not yet implemented. Note that if this is an overlay, it does not include the underlying source code."
889
+ "description": "The raw source code of the requirement. Set to null for manual-only requirements or requirements not yet implemented; use verificationMethod to disambiguate manual-by-design from manual-pending-automation. Note that if this is an overlay, it does not include the underlying source code."
890
890
  },
891
891
  "sourceLocation": {
892
892
  "$ref": "#/$defs/Source_Location",
893
893
  "description": "The explicit location of the requirement within the source code."
894
+ },
895
+ "controlType": {
896
+ "type": "string",
897
+ "enum": [
898
+ "policy",
899
+ "procedure",
900
+ "technical",
901
+ "management",
902
+ "operational"
903
+ ],
904
+ "description": "Classification of the control's nature, aligning with NIST SP 800-53 / SP 800-53A categories. 'policy' = an authored governance statement; 'procedure' = a documented process; 'technical' = an enforced technical configuration; 'management' = a programmatic/management activity; 'operational' = a recurring operational activity (e.g. AT, IR, MA families). Optional: when omitted, consumers may infer heuristically from family/id but should not assume a default."
905
+ },
906
+ "verificationMethod": {
907
+ "$ref": "#/$defs/Verification_Method_Enum",
908
+ "description": "How this requirement is intended to be verified. Disambiguates the two cases that null 'code' overloads: 'manual-by-design' (the requirement is statement-form and not amenable to automation, e.g. FedRAMP 20x KSIs); 'manual-pending-automation' (automation could exist but does not yet, e.g. a STIG rule lacking a fix). 'automated' = a check exists and runs without operator action; 'hybrid' = part automated, part manual. Optional: when omitted, consumers should not infer a default."
909
+ },
910
+ "applicability": {
911
+ "type": "string",
912
+ "enum": [
913
+ "required",
914
+ "optional",
915
+ "advisory"
916
+ ],
917
+ "description": "Whether the requirement is mandatory within its baseline. Distinct from severity (risk weight) and status (lifecycle state). Maps cleanly onto: FedRAMP rev5 OSCAL 'CORE' prop, FedRAMP 20x inline 'Optional:' markers, CMMC sublevel rows, and CIS Implementation Group memberships (IG1/IG2/IG3 may carry richer semantics; layer those onto props[]/tags{}). Optional: when omitted, consumers should treat the requirement as 'required' by convention."
894
918
  }
895
919
  },
896
920
  "examples": [
897
921
  {
922
+ "$comment": "v3.1.x-style requirement: classification fields omitted. Consumers must continue to handle this shape under v3.2.0 (backward compatibility).",
898
923
  "id": "SV-238196",
899
924
  "title": "The Ubuntu operating system must enforce password complexity",
900
925
  "impact": 0.5,
@@ -922,11 +947,85 @@
922
947
  "data": "Verify the value of 'minlen' in /etc/security/pwquality.conf."
923
948
  }
924
949
  ]
950
+ },
951
+ {
952
+ "$comment": "v3.2 example populating all three classification fields. controlType=technical because AC-3 is enforced via configuration, not policy text. verificationMethod=automated because a check exists. applicability=required because this is a CORE control in the source baseline.",
953
+ "id": "AC-3",
954
+ "title": "Access Enforcement",
955
+ "impact": 0.7,
956
+ "tags": {
957
+ "nist": [
958
+ "AC-3"
959
+ ],
960
+ "severity": "high"
961
+ },
962
+ "descriptions": [
963
+ {
964
+ "label": "default",
965
+ "data": "The information system enforces approved authorizations for logical access to information and system resources."
966
+ }
967
+ ],
968
+ "code": "control 'AC-3' do; impact 0.7; end",
969
+ "controlType": "technical",
970
+ "verificationMethod": "automated",
971
+ "applicability": "required"
972
+ },
973
+ {
974
+ "$comment": "v3.2 example for a manual-by-design requirement. FedRAMP 20x KSIs are statement-form: code is omitted (not null) and verificationMethod=manual-by-design distinguishes this from 'automation could exist but doesn't yet'. controlType=policy because this is an authored governance statement.",
975
+ "id": "KSI-CNA-01",
976
+ "title": "Cyber Security Plan documents the system",
977
+ "impact": 0.5,
978
+ "tags": {
979
+ "ksi": [
980
+ "KSI-CNA"
981
+ ]
982
+ },
983
+ "descriptions": [
984
+ {
985
+ "label": "default",
986
+ "data": "The Cyber Security Plan documents the system, its boundary, and its components."
987
+ }
988
+ ],
989
+ "controlType": "policy",
990
+ "verificationMethod": "manual-by-design",
991
+ "applicability": "required"
992
+ },
993
+ {
994
+ "$comment": "v3.2 example for a STIG rule lacking a <fix>. Differs from manual-by-design: automation should exist, just not yet. applicability=advisory used here because the source format flagged it as recommended-but-not-mandatory; CIS-style IG memberships and FedRAMP 'Optional:' markers map onto applicability=optional or advisory similarly.",
995
+ "id": "SV-999999",
996
+ "title": "Example STIG rule pending automation",
997
+ "impact": 0.3,
998
+ "tags": {
999
+ "stig_id": "SV-999999"
1000
+ },
1001
+ "descriptions": [
1002
+ {
1003
+ "label": "default",
1004
+ "data": "Example requirement that is intended to be automated but currently lacks a fix block."
1005
+ },
1006
+ {
1007
+ "label": "check",
1008
+ "data": "Manual review of system configuration is required."
1009
+ }
1010
+ ],
1011
+ "verificationMethod": "manual-pending-automation",
1012
+ "applicability": "advisory"
925
1013
  }
926
1014
  ],
927
1015
  "description": "Core requirement fields shared between baseline requirements and evaluated requirements. Contains the fundamental requirement definition without assessment results.",
928
1016
  "title": "Requirement Core"
929
1017
  },
1018
+ "Verification_Method_Enum": {
1019
+ "type": "string",
1020
+ "enum": [
1021
+ "automated",
1022
+ "manual-by-design",
1023
+ "manual-pending-automation",
1024
+ "hybrid"
1025
+ ],
1026
+ "description": "How a requirement is intended to be verified. Disambiguates the two cases that null 'code' overloads: 'manual-by-design' (the requirement is statement-form and not amenable to automation, e.g. FedRAMP 20x KSIs); 'manual-pending-automation' (automation could exist but does not yet, e.g. a STIG rule lacking a fix). 'automated' = a check exists and runs without operator action; 'hybrid' = part automated, part manual. Named '_Enum' to disambiguate from the unrelated Verification_Method DID-context struct.",
1027
+ "title": "Verification Method Enum"
1028
+ },
930
1029
  "Severity": {
931
1030
  "type": "string",
932
1031
  "enum": [
@@ -957,9 +1056,9 @@
957
1056
  }
958
1057
  }
959
1058
  },
960
- "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.1.0": {
1059
+ "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.2.0": {
961
1060
  "$schema": "https://json-schema.org/draft/2020-12/schema",
962
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.1.0",
1061
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.2.0",
963
1062
  "title": "HDF System Primitives",
964
1063
  "description": "Types for describing system architecture, authorization boundaries, and components.",
965
1064
  "$defs": {
@@ -1010,7 +1109,7 @@
1010
1109
  "description": "Rationale for why this override is needed."
1011
1110
  },
1012
1111
  "approvedBy": {
1013
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Identity",
1112
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Identity",
1014
1113
  "description": "Identity of the person or system that approved this override."
1015
1114
  }
1016
1115
  },
@@ -1091,9 +1190,9 @@
1091
1190
  }
1092
1191
  }
1093
1192
  },
1094
- "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.1.0": {
1193
+ "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.2.0": {
1095
1194
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1096
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.1.0",
1195
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.2.0",
1097
1196
  "title": "HDF Component Primitives",
1098
1197
  "description": "First-class system component with identity, polymorphic type, SBOM embedding, and system-binding properties. Components are the successor to Targets, adding stable identity (componentId), external system cross-references, and software inventory.",
1099
1198
  "$defs": {
@@ -1123,7 +1222,7 @@
1123
1222
  "description": "Description of this component's role or purpose."
1124
1223
  },
1125
1224
  "owner": {
1126
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Identity",
1225
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Identity",
1127
1226
  "description": "Team or individual responsible for this component. Enables per-component ownership when different teams manage different parts of a system."
1128
1227
  },
1129
1228
  "externalIds": {
@@ -1167,12 +1266,12 @@
1167
1266
  "inputOverrides": {
1168
1267
  "type": "array",
1169
1268
  "items": {
1170
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.1.0#/$defs/Input_Override"
1269
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.2.0#/$defs/Input_Override"
1171
1270
  },
1172
1271
  "description": "System-specific overrides for baseline input values."
1173
1272
  },
1174
1273
  "targetSelector": {
1175
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.1.0#/$defs/Target_Selector",
1274
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.2.0#/$defs/Target_Selector",
1176
1275
  "description": "Label selector to match targets belonging to this component during migration. Targets with matching labels are automatically included."
1177
1276
  }
1178
1277
  },
@@ -1492,7 +1591,7 @@
1492
1591
  "const": "cloudAccount"
1493
1592
  },
1494
1593
  "provider": {
1495
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Cloud_Provider",
1594
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Cloud_Provider",
1496
1595
  "description": "Cloud provider."
1497
1596
  },
1498
1597
  "accountId": {
@@ -1531,7 +1630,7 @@
1531
1630
  "const": "cloudResource"
1532
1631
  },
1533
1632
  "provider": {
1534
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Cloud_Provider",
1633
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Cloud_Provider",
1535
1634
  "description": "Cloud provider."
1536
1635
  },
1537
1636
  "resourceType": {
@@ -1711,9 +1810,9 @@
1711
1810
  }
1712
1811
  }
1713
1812
  },
1714
- "https://mitre.github.io/hdf-libs/schemas/primitives/data-flow/v3.1.0": {
1813
+ "https://mitre.github.io/hdf-libs/schemas/primitives/data-flow/v3.2.0": {
1715
1814
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1716
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/data-flow/v3.1.0",
1815
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/data-flow/v3.2.0",
1717
1816
  "title": "HDF Data Flow Primitives",
1718
1817
  "description": "Types for describing data flows between components within a system and across system boundaries. Data flows model network connections, API calls, database queries, and other inter-component communication.",
1719
1818
  "$defs": {
@@ -1869,9 +1968,9 @@
1869
1968
  }
1870
1969
  }
1871
1970
  },
1872
- "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.1.0": {
1971
+ "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.2.0": {
1873
1972
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1874
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.1.0",
1973
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.2.0",
1875
1974
  "title": "HDF Extension Primitives",
1876
1975
  "description": "Extension types for waivers, attestations, generators, and integrity.",
1877
1976
  "$defs": {
@@ -1899,15 +1998,15 @@
1899
1998
  ],
1900
1999
  "properties": {
1901
2000
  "type": {
1902
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.1.0#/$defs/Override_Type",
2001
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.2.0#/$defs/Override_Type",
1903
2002
  "description": "The type of override applied to this requirement."
1904
2003
  },
1905
2004
  "status": {
1906
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.1.0#/$defs/Result_Status",
2005
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.2.0#/$defs/Result_Status",
1907
2006
  "description": "The new status this override sets for the requirement. Optional when only impact is being overridden."
1908
2007
  },
1909
2008
  "impact": {
1910
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.1.0#/$defs/Impact_Override",
2009
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.2.0#/$defs/Impact_Override",
1911
2010
  "description": "Override to the requirement's impact score. At least one of status or impact must be set."
1912
2011
  },
1913
2012
  "reason": {
@@ -1915,7 +2014,7 @@
1915
2014
  "description": "Explanation for why this override was applied."
1916
2015
  },
1917
2016
  "appliedBy": {
1918
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Identity",
2017
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Identity",
1919
2018
  "description": "Identity of who applied this override. For simple cases, use type 'simple' with just an identifier."
1920
2019
  },
1921
2020
  "appliedAt": {
@@ -1929,18 +2028,18 @@
1929
2028
  "description": "Timestamp when this override expires and must be reviewed/renewed. REQUIRED - no permanent overrides allowed. ISO 8601 format."
1930
2029
  },
1931
2030
  "signature": {
1932
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Signature",
2031
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Signature",
1933
2032
  "description": "Optional digital signature for enhanced trust and non-repudiation. Supports hardware security tokens (PKCS#11/PKCS#12), Yubikeys, GPG keys, passkeys, and other signing methods."
1934
2033
  },
1935
2034
  "evidence": {
1936
2035
  "type": "array",
1937
2036
  "items": {
1938
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Evidence"
2037
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Evidence"
1939
2038
  },
1940
2039
  "description": "Supporting evidence for this override, such as screenshots demonstrating manual verification for attestations."
1941
2040
  },
1942
2041
  "previousChecksum": {
1943
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Checksum",
2042
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Checksum",
1944
2043
  "description": "SHA-256 checksum of the previous amendment in chronological order. Creates a tamper-evident chain of amendments (similar to blockchain). Null for the first amendment on a requirement."
1945
2044
  }
1946
2045
  },
@@ -2046,7 +2145,7 @@
2046
2145
  "description": "Detailed explanation of the plan, including what actions will be taken."
2047
2146
  },
2048
2147
  "appliedBy": {
2049
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Identity",
2148
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Identity",
2050
2149
  "description": "Identity of who created this POA&M. For simple cases, use type 'simple' with just an identifier."
2051
2150
  },
2052
2151
  "appliedAt": {
@@ -2062,23 +2161,23 @@
2062
2161
  "milestones": {
2063
2162
  "type": "array",
2064
2163
  "items": {
2065
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Milestone"
2164
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Milestone"
2066
2165
  },
2067
2166
  "description": "Optional array of milestones tracking progress toward completion."
2068
2167
  },
2069
2168
  "signature": {
2070
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Signature",
2169
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Signature",
2071
2170
  "description": "Optional digital signature for enhanced trust and non-repudiation."
2072
2171
  },
2073
2172
  "evidence": {
2074
2173
  "type": "array",
2075
2174
  "items": {
2076
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Evidence"
2175
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Evidence"
2077
2176
  },
2078
2177
  "description": "Supporting evidence for this POA&M, such as documentation of compensating controls or mitigation implementation."
2079
2178
  },
2080
2179
  "previousChecksum": {
2081
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Checksum",
2180
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Checksum",
2082
2181
  "description": "SHA-256 checksum of the previous amendment in chronological order. Creates a tamper-evident chain of amendments (similar to blockchain). Null for the first amendment on a requirement."
2083
2182
  }
2084
2183
  },
@@ -2229,7 +2328,7 @@
2229
2328
  },
2230
2329
  "properties": {
2231
2330
  "algorithm": {
2232
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Hash_Algorithm",
2331
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Hash_Algorithm",
2233
2332
  "description": "The hash algorithm used for the checksum."
2234
2333
  },
2235
2334
  "checksum": {
@@ -2262,9 +2361,9 @@
2262
2361
  }
2263
2362
  }
2264
2363
  },
2265
- "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.1.0": {
2364
+ "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.2.0": {
2266
2365
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2267
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.1.0",
2366
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.2.0",
2268
2367
  "title": "HDF Amendment Primitives",
2269
2368
  "description": "Types for waivers, attestations, and POA&Ms that modify requirement compliance status.",
2270
2369
  "$defs": {
@@ -2336,7 +2435,7 @@
2336
2435
  "description": "Name of the baseline containing the requirement. Required when the system has multiple baselines with potentially overlapping requirement IDs."
2337
2436
  },
2338
2437
  "status": {
2339
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.1.0#/$defs/Result_Status",
2438
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.2.0#/$defs/Result_Status",
2340
2439
  "description": "The new status this amendment sets. Optional when only impact is being overridden."
2341
2440
  },
2342
2441
  "impact": {
@@ -2348,7 +2447,7 @@
2348
2447
  "description": "Justification for this amendment."
2349
2448
  },
2350
2449
  "appliedBy": {
2351
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Identity",
2450
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Identity",
2352
2451
  "description": "Identity of who applied this amendment."
2353
2452
  },
2354
2453
  "appliedAt": {
@@ -2364,22 +2463,22 @@
2364
2463
  "evidence": {
2365
2464
  "type": "array",
2366
2465
  "items": {
2367
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Evidence"
2466
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Evidence"
2368
2467
  },
2369
2468
  "description": "Supporting evidence (screenshots, logs, URLs, documents)."
2370
2469
  },
2371
2470
  "signature": {
2372
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Signature",
2471
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Signature",
2373
2472
  "description": "Digital signature for non-repudiation."
2374
2473
  },
2375
2474
  "previousChecksum": {
2376
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Checksum",
2475
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Checksum",
2377
2476
  "description": "Checksum of the prior amendment in the chain. Creates a tamper-evident linked list. Null for the first amendment."
2378
2477
  },
2379
2478
  "milestones": {
2380
2479
  "type": "array",
2381
2480
  "items": {
2382
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Milestone"
2481
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Milestone"
2383
2482
  },
2384
2483
  "description": "Remediation milestones (primarily for POA&M type amendments)."
2385
2484
  },
@@ -2500,9 +2599,9 @@
2500
2599
  }
2501
2600
  }
2502
2601
  },
2503
- "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.1.0": {
2602
+ "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.2.0": {
2504
2603
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2505
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.1.0",
2604
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.2.0",
2506
2605
  "title": "HDF Result Primitives",
2507
2606
  "description": "Types for representing assessment results and statuses.",
2508
2607
  "$defs": {
@@ -370,12 +370,31 @@ export interface BaselineRequirement {
370
370
  tags: {
371
371
  [key: string]: any;
372
372
  };
373
+ /**
374
+ * Whether the requirement is mandatory within its baseline. Distinct from severity (risk
375
+ * weight) and status (lifecycle state). Maps cleanly onto: FedRAMP rev5 OSCAL 'CORE' prop,
376
+ * FedRAMP 20x inline 'Optional:' markers, CMMC sublevel rows, and CIS Implementation Group
377
+ * memberships (IG1/IG2/IG3 may carry richer semantics; layer those onto props[]/tags{}).
378
+ * Optional: when omitted, consumers should treat the requirement as 'required' by
379
+ * convention.
380
+ */
381
+ applicability?: Applicability;
373
382
  /**
374
383
  * The raw source code of the requirement. Set to null for manual-only requirements or
375
- * requirements not yet implemented. Note that if this is an overlay, it does not include
376
- * the underlying source code.
384
+ * requirements not yet implemented; use verificationMethod to disambiguate manual-by-design
385
+ * from manual-pending-automation. Note that if this is an overlay, it does not include the
386
+ * underlying source code.
377
387
  */
378
388
  code?: string;
389
+ /**
390
+ * Classification of the control's nature, aligning with NIST SP 800-53 / SP 800-53A
391
+ * categories. 'policy' = an authored governance statement; 'procedure' = a documented
392
+ * process; 'technical' = an enforced technical configuration; 'management' = a
393
+ * programmatic/management activity; 'operational' = a recurring operational activity (e.g.
394
+ * AT, IR, MA families). Optional: when omitted, consumers may infer heuristically from
395
+ * family/id but should not assume a default.
396
+ */
397
+ controlType?: ControlType;
379
398
  /**
380
399
  * The set of references to external documents.
381
400
  */
@@ -388,8 +407,45 @@ export interface BaselineRequirement {
388
407
  * The title - is nullable.
389
408
  */
390
409
  title?: string;
410
+ /**
411
+ * How this requirement is intended to be verified. Disambiguates the two cases that null
412
+ * 'code' overloads: 'manual-by-design' (the requirement is statement-form and not amenable
413
+ * to automation, e.g. FedRAMP 20x KSIs); 'manual-pending-automation' (automation could
414
+ * exist but does not yet, e.g. a STIG rule lacking a fix). 'automated' = a check exists and
415
+ * runs without operator action; 'hybrid' = part automated, part manual. Optional: when
416
+ * omitted, consumers should not infer a default.
417
+ */
418
+ verificationMethod?: VerificationMethodEnum;
391
419
  [property: string]: any;
392
420
  }
421
+ /**
422
+ * Whether the requirement is mandatory within its baseline. Distinct from severity (risk
423
+ * weight) and status (lifecycle state). Maps cleanly onto: FedRAMP rev5 OSCAL 'CORE' prop,
424
+ * FedRAMP 20x inline 'Optional:' markers, CMMC sublevel rows, and CIS Implementation Group
425
+ * memberships (IG1/IG2/IG3 may carry richer semantics; layer those onto props[]/tags{}).
426
+ * Optional: when omitted, consumers should treat the requirement as 'required' by
427
+ * convention.
428
+ */
429
+ export declare enum Applicability {
430
+ Advisory = "advisory",
431
+ Optional = "optional",
432
+ Required = "required"
433
+ }
434
+ /**
435
+ * Classification of the control's nature, aligning with NIST SP 800-53 / SP 800-53A
436
+ * categories. 'policy' = an authored governance statement; 'procedure' = a documented
437
+ * process; 'technical' = an enforced technical configuration; 'management' = a
438
+ * programmatic/management activity; 'operational' = a recurring operational activity (e.g.
439
+ * AT, IR, MA families). Optional: when omitted, consumers may infer heuristically from
440
+ * family/id but should not assume a default.
441
+ */
442
+ export declare enum ControlType {
443
+ Management = "management",
444
+ Operational = "operational",
445
+ Policy = "policy",
446
+ Procedure = "procedure",
447
+ Technical = "technical"
448
+ }
393
449
  export interface Description {
394
450
  /**
395
451
  * The description text content.
@@ -448,6 +504,27 @@ export interface SourceLocation {
448
504
  ref?: string;
449
505
  [property: string]: any;
450
506
  }
507
+ /**
508
+ * How this requirement is intended to be verified. Disambiguates the two cases that null
509
+ * 'code' overloads: 'manual-by-design' (the requirement is statement-form and not amenable
510
+ * to automation, e.g. FedRAMP 20x KSIs); 'manual-pending-automation' (automation could
511
+ * exist but does not yet, e.g. a STIG rule lacking a fix). 'automated' = a check exists and
512
+ * runs without operator action; 'hybrid' = part automated, part manual. Optional: when
513
+ * omitted, consumers should not infer a default.
514
+ *
515
+ * How a requirement is intended to be verified. Disambiguates the two cases that null
516
+ * 'code' overloads: 'manual-by-design' (the requirement is statement-form and not amenable
517
+ * to automation, e.g. FedRAMP 20x KSIs); 'manual-pending-automation' (automation could
518
+ * exist but does not yet, e.g. a STIG rule lacking a fix). 'automated' = a check exists and
519
+ * runs without operator action; 'hybrid' = part automated, part manual. Named '_Enum' to
520
+ * disambiguate from the unrelated Verification_Method DID-context struct.
521
+ */
522
+ export declare enum VerificationMethodEnum {
523
+ Automated = "automated",
524
+ Hybrid = "hybrid",
525
+ ManualByDesign = "manual-by-design",
526
+ ManualPendingAutomation = "manual-pending-automation"
527
+ }
451
528
  /**
452
529
  * A supported platform target. Example: the platform name being 'ubuntu'.
453
530
  */