@mitre/hdf-schema 3.6.0 → 3.7.0-rc.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.
@@ -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-evidence-package/v3.6.0",
3
+ "$id": "https://mitre.github.io/hdf-libs/schemas/hdf-evidence-package/v3.7.0",
4
4
  "title": "HDF Evidence Package",
5
5
  "description": "Bundles references to all HDF documents for audit, authorization, and compliance review. Each content entry references a document by type, URI, and checksum for integrity verification.",
6
6
  "type": "object",
@@ -13,7 +13,7 @@
13
13
  "externalReferences": {
14
14
  "type": "array",
15
15
  "items": {
16
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/External_Reference"
16
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/External_Reference"
17
17
  },
18
18
  "description": "Optional references to external artifacts relevant to this evidence package (CTI/STIX, BOMs, advisories, or any URI-addressable artifact) beyond the document references it already carries. Inert context; see External_Reference."
19
19
  },
@@ -41,7 +41,7 @@
41
41
  "description": "URI to the hdf-plan document that drove this assessment. Used for completeness verification — every baseline in the plan should have a corresponding results document in this package."
42
42
  },
43
43
  "preparedBy": {
44
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Identity",
44
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Identity",
45
45
  "description": "Identity of who prepared this evidence package."
46
46
  },
47
47
  "preparedAt": {
@@ -69,7 +69,7 @@
69
69
  "description": "Summary of assessment completeness and compliance status."
70
70
  },
71
71
  "signature": {
72
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Signature",
72
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Signature",
73
73
  "description": "Digital signature covering the entire evidence package."
74
74
  },
75
75
  "labels": {
@@ -80,7 +80,7 @@
80
80
  "description": "Optional key-value labels for grouping and querying evidence packages."
81
81
  },
82
82
  "integrity": {
83
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.6.0#/$defs/Integrity",
83
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.7.0#/$defs/Integrity",
84
84
  "description": "Cryptographic integrity information for verifying this evidence package has not been tampered with."
85
85
  },
86
86
  "version": {
@@ -88,7 +88,7 @@
88
88
  "description": "Version of this evidence package."
89
89
  },
90
90
  "generator": {
91
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.6.0#/$defs/Generator",
91
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.7.0#/$defs/Generator",
92
92
  "description": "Information about the tool that generated this document."
93
93
  }
94
94
  },
@@ -125,7 +125,7 @@
125
125
  "description": "URI to the document. Can be a relative path or absolute URL."
126
126
  },
127
127
  "checksum": {
128
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Checksum",
128
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Checksum",
129
129
  "description": "Cryptographic checksum for verifying the referenced document's integrity."
130
130
  },
131
131
  "description": {
@@ -242,7 +242,7 @@
242
242
  "description": "The native format discriminator of the referenced artifact."
243
243
  },
244
244
  "checksum": {
245
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Checksum",
245
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Checksum",
246
246
  "description": "Cryptographic checksum of the referenced artifact for integrity verification.",
247
247
  "$comment": "Strongly recommended for external evidence — a point-in-time reference without an integrity hash is weakly auditable. Kept out of `description` so this usage-specific note does not aggregate into the shared Checksum type's generated Go doc comment (quicktype concatenates $ref-sibling descriptions onto the referenced type)."
248
248
  },
@@ -357,9 +357,9 @@
357
357
  "description": "Informational summary of assessment completeness. Not authoritative — tools should compute these from the referenced documents.",
358
358
  "title": "Completeness Check"
359
359
  },
360
- "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0": {
360
+ "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0": {
361
361
  "$schema": "https://json-schema.org/draft/2020-12/schema",
362
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0",
362
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0",
363
363
  "title": "HDF Common Primitives",
364
364
  "description": "Shared building blocks used by hdf-results and hdf-baseline schemas.",
365
365
  "$defs": {
@@ -799,6 +799,24 @@
799
799
  "type",
800
800
  "data"
801
801
  ],
802
+ "if": {
803
+ "properties": {
804
+ "encoding": {
805
+ "const": "base64"
806
+ }
807
+ },
808
+ "required": [
809
+ "encoding"
810
+ ]
811
+ },
812
+ "then": {
813
+ "properties": {
814
+ "data": {
815
+ "pattern": "^[0-9A-Za-z+/]+={0,2}$",
816
+ "contentEncoding": "base64"
817
+ }
818
+ }
819
+ },
802
820
  "properties": {
803
821
  "type": {
804
822
  "type": "string",
@@ -815,7 +833,8 @@
815
833
  },
816
834
  "data": {
817
835
  "type": "string",
818
- "description": "The evidence content. For screenshots/files: base64-encoded data or URL. For code/logs: the raw text. For URLs: the URL string."
836
+ "minLength": 1,
837
+ "description": "The evidence content. For screenshots/files: base64-encoded data or URL. For code/logs: the raw text. For URLs: the URL string. Must not be empty. When encoding is 'base64', data must be bare base64 matching ^[0-9A-Za-z+/]+={0,2}$ (OSCAL's Base64Datatype): no data: URI prefix, URL, or line breaks."
819
838
  },
820
839
  "description": {
821
840
  "type": "string",
@@ -827,7 +846,7 @@
827
846
  },
828
847
  "encoding": {
829
848
  "type": "string",
830
- "description": "Encoding used for the data. Example: 'base64', 'utf-8'."
849
+ "description": "Encoding used for the data. Example: 'base64', 'utf-8'. The value 'base64' (exactly, lowercase) requires data to be bare base64."
831
850
  },
832
851
  "size": {
833
852
  "type": "number",
@@ -891,6 +910,7 @@
891
910
  }
892
911
  }
893
912
  ],
913
+ "$comment": "Examples, in order: 1) base64-encoded PNG screenshot with full capture provenance; 2) raw configuration text; 3) log excerpt; 4) URL to an external ticket; 5) base64-encoded file captured by an automated system.",
894
914
  "description": "Supporting evidence for a finding or override, such as screenshots, code samples, log excerpts, or URLs.",
895
915
  "title": "Evidence"
896
916
  },
@@ -968,6 +988,13 @@
968
988
  "status"
969
989
  ],
970
990
  "properties": {
991
+ "title": {
992
+ "type": "string",
993
+ "minLength": 1,
994
+ "pattern": "^[^ \\t\\n\\r]([^\\n\\r]*[^ \\t\\n\\r])?$",
995
+ "$comment": "The pattern is OSCAL's StringDatatype (\\S(.*\\S)?) as its XSD defines \\S and '.', spelled with explicit classes so ECMA-262 and Go regexp engines agree: \\S and '.' differ between them on CR and non-ASCII whitespace.",
996
+ "description": "Short single-line label for this milestone, suitable where a consumer needs a title (for example an OSCAL POA&M remediation or task). No line breaks, and no leading or trailing whitespace. The description remains the full text of the milestone; the title does not replace it."
997
+ },
971
998
  "description": {
972
999
  "type": "string",
973
1000
  "description": "Description of this milestone or task."
@@ -997,6 +1024,25 @@
997
1024
  "description": "Identity of who completed this milestone."
998
1025
  }
999
1026
  },
1027
+ "examples": [
1028
+ {
1029
+ "title": "Deploy OpenSSH 9.8p1",
1030
+ "description": "Upgrade OpenSSH to 9.8p1 on every RHEL 9 host in the web tier to remediate CVE-2024-6387, then restart sshd during the Saturday maintenance window.",
1031
+ "estimatedCompletion": "2026-10-31T00:00:00Z",
1032
+ "status": "inProgress"
1033
+ },
1034
+ {
1035
+ "description": "Isolate the affected host on a restricted VLAN until the vendor patch is available.",
1036
+ "estimatedCompletion": "2026-09-05T00:00:00Z",
1037
+ "status": "completed",
1038
+ "completedAt": "2026-09-04T14:30:00Z",
1039
+ "completedBy": {
1040
+ "identifier": "network-admin@example.com",
1041
+ "type": "email"
1042
+ }
1043
+ }
1044
+ ],
1045
+ "$comment": "Examples, in order: 1) titled milestone in progress — the title is the short label, the description the full remediation text; 2) untitled completed milestone with completion provenance — title is optional, and a consumer needing one derives it.",
1000
1046
  "description": "A milestone or task within a POA&M remediation plan.",
1001
1047
  "title": "Milestone"
1002
1048
  },
@@ -1286,7 +1332,7 @@
1286
1332
  "description": "Whether the requirement is mandatory within its baseline.\n\nDistinct from severity (risk weight) and status (lifecycle state).\n\nMaps 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{}).\n\nOptional: when omitted, consumers should treat the requirement as 'required' by convention."
1287
1333
  }
1288
1334
  },
1289
- "$comment": "Examples, in order: 1) v3.1.x-style requirement: classification fields omitted. Consumers must continue to handle this shape under v3.6.0 (backward compatibility); 2) 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; 3) 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; 4) 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.",
1335
+ "$comment": "Examples, in order: 1) v3.1.x-style requirement: classification fields omitted. Consumers must continue to handle this shape for backward compatibility; 2) 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; 3) 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; 4) 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.",
1290
1336
  "examples": [
1291
1337
  {
1292
1338
  "id": "SV-238196",
@@ -1422,9 +1468,9 @@
1422
1468
  }
1423
1469
  }
1424
1470
  },
1425
- "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.6.0": {
1471
+ "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.7.0": {
1426
1472
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1427
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.6.0",
1473
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.7.0",
1428
1474
  "title": "HDF Extension Primitives",
1429
1475
  "description": "Extension types for waivers, attestations, generators, and integrity.",
1430
1476
  "$defs": {
@@ -1454,20 +1500,20 @@
1454
1500
  "externalReferences": {
1455
1501
  "type": "array",
1456
1502
  "items": {
1457
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/External_Reference"
1503
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/External_Reference"
1458
1504
  },
1459
1505
  "description": "Optional references to the external artifacts behind this override (e.g. the STIX bundle/object or CTI feed motivating an E:A riskAdjustment). Inert context distinct from `evidence`; see External_Reference. Symmetric with Standalone_Override.externalReferences for the inline (results-embedded) override carrier."
1460
1506
  },
1461
1507
  "type": {
1462
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.6.0#/$defs/Override_Type",
1508
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.7.0#/$defs/Override_Type",
1463
1509
  "description": "The type of override applied to this requirement."
1464
1510
  },
1465
1511
  "status": {
1466
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.6.0#/$defs/Result_Status",
1512
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.7.0#/$defs/Result_Status",
1467
1513
  "description": "The new status this override sets for the requirement. Optional when only impact is being overridden."
1468
1514
  },
1469
1515
  "impact": {
1470
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.6.0#/$defs/Impact_Override",
1516
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.7.0#/$defs/Impact_Override",
1471
1517
  "description": "Override to the requirement's impact score. At least one of status or impact must be set."
1472
1518
  },
1473
1519
  "reason": {
@@ -1475,7 +1521,7 @@
1475
1521
  "description": "Explanation for why this override was applied."
1476
1522
  },
1477
1523
  "appliedBy": {
1478
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Identity",
1524
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Identity",
1479
1525
  "description": "Identity of who applied this override. For simple cases, use type 'simple' with just an identifier."
1480
1526
  },
1481
1527
  "appliedAt": {
@@ -1489,27 +1535,27 @@
1489
1535
  "description": "Timestamp when this override expires and must be reviewed/renewed. REQUIRED - no permanent overrides allowed. ISO 8601 format."
1490
1536
  },
1491
1537
  "signature": {
1492
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Signature",
1538
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Signature",
1493
1539
  "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."
1494
1540
  },
1495
1541
  "evidence": {
1496
1542
  "type": "array",
1497
1543
  "items": {
1498
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Evidence"
1544
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Evidence"
1499
1545
  },
1500
1546
  "description": "Supporting evidence for this override, such as screenshots demonstrating manual verification for attestations."
1501
1547
  },
1502
1548
  "previousChecksum": {
1503
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Checksum",
1549
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Checksum",
1504
1550
  "description": "SHA-256 checksum of the previous amendment in chronological order. Each amendment's checksum is recorded by the NEXT one, so editing an amendment in place is detectable — provided a later amendment is chained to it. It is NOT tamper-proof: the final amendment, the document envelope, deleted trailing amendments, and a chain that has been stripped or recomputed wholesale are all outside what it can detect. Use signature for non-repudiation. Omitted on the first amendment on a requirement."
1505
1551
  },
1506
1552
  "cvss": {
1507
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.6.0#/$defs/Cvss",
1553
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.7.0#/$defs/Cvss",
1508
1554
  "$comment": "When present alongside impact.value on a riskAdjustment override, impact.value should be approximately cvss.computedScore / 10.0. Soft consistency rule — validators may warn but should not error. The cvss block makes Environmental/Threat enrichment auditable.",
1509
1555
  "description": "Structured CVSS scoring data backing this override. Captures the rubric (which Environmental/Threat metrics the consumer modified, the recomputed score) used to justify a riskAdjustment. For other override types this is optional context."
1510
1556
  },
1511
1557
  "justification": {
1512
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.6.0#/$defs/Justification",
1558
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.7.0#/$defs/Justification",
1513
1559
  "description": "Structured controlled-vocabulary classification for why this override applies. Complements (does not replace) the free-text 'reason' field. Most useful on falsePositive and attestation overrides where the structured category enables filtering and lossless round-trip with VEX / OSCAL / FedRAMP DR. See the Justification primitive for the precedent vocabulary and rationale."
1514
1560
  }
1515
1561
  },
@@ -1602,7 +1648,7 @@
1602
1648
  "evidence": [
1603
1649
  {
1604
1650
  "type": "screenshot",
1605
- "data": "base64-encoded-screenshot-data-here",
1651
+ "data": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
1606
1652
  "description": "Screenshot showing firewall configuration",
1607
1653
  "mimeType": "image/png",
1608
1654
  "encoding": "base64",
@@ -1645,7 +1691,7 @@
1645
1691
  "description": "Detailed explanation of the plan, including what actions will be taken."
1646
1692
  },
1647
1693
  "appliedBy": {
1648
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Identity",
1694
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Identity",
1649
1695
  "description": "Identity of who created this POA&M. For simple cases, use type 'simple' with just an identifier."
1650
1696
  },
1651
1697
  "appliedAt": {
@@ -1661,23 +1707,23 @@
1661
1707
  "milestones": {
1662
1708
  "type": "array",
1663
1709
  "items": {
1664
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Milestone"
1710
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Milestone"
1665
1711
  },
1666
1712
  "description": "Optional array of milestones tracking progress toward completion."
1667
1713
  },
1668
1714
  "signature": {
1669
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Signature",
1715
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Signature",
1670
1716
  "description": "Optional digital signature for enhanced trust and non-repudiation."
1671
1717
  },
1672
1718
  "evidence": {
1673
1719
  "type": "array",
1674
1720
  "items": {
1675
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Evidence"
1721
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Evidence"
1676
1722
  },
1677
1723
  "description": "Supporting evidence for this POA&M, such as documentation of compensating controls or mitigation implementation."
1678
1724
  },
1679
1725
  "previousChecksum": {
1680
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Checksum",
1726
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Checksum",
1681
1727
  "description": "SHA-256 checksum of the previous amendment in chronological order. Each amendment's checksum is recorded by the NEXT one, so editing an amendment in place is detectable — provided a later amendment is chained to it. It is NOT tamper-proof: the final amendment, the document envelope, deleted trailing amendments, and a chain that has been stripped or recomputed wholesale are all outside what it can detect. Use signature for non-repudiation. Omitted on the first amendment on a requirement."
1682
1728
  }
1683
1729
  },
@@ -1830,7 +1876,7 @@
1830
1876
  },
1831
1877
  "properties": {
1832
1878
  "algorithm": {
1833
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Hash_Algorithm",
1879
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Hash_Algorithm",
1834
1880
  "description": "The hash algorithm used for the checksum."
1835
1881
  },
1836
1882
  "checksum": {
@@ -1863,9 +1909,9 @@
1863
1909
  }
1864
1910
  }
1865
1911
  },
1866
- "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.6.0": {
1912
+ "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.7.0": {
1867
1913
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1868
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.6.0",
1914
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.7.0",
1869
1915
  "title": "HDF Amendment Primitives",
1870
1916
  "description": "Types for waivers, attestations, and POA&Ms that modify requirement compliance status.",
1871
1917
  "$defs": {
@@ -1976,7 +2022,7 @@
1976
2022
  "externalReferences": {
1977
2023
  "type": "array",
1978
2024
  "items": {
1979
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/External_Reference"
2025
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/External_Reference"
1980
2026
  },
1981
2027
  "description": "Optional references to the external artifacts behind this override (e.g. the STIX bundle/object, advisory, or CTI feed that motivated it). Inert context distinct from `evidence`; see External_Reference."
1982
2028
  },
@@ -1986,6 +2032,7 @@
1986
2032
  },
1987
2033
  "requirementId": {
1988
2034
  "type": "string",
2035
+ "minLength": 1,
1989
2036
  "description": "The ID of the requirement being amended. Must match a requirement ID in the referenced baseline."
1990
2037
  },
1991
2038
  "baselineRef": {
@@ -1993,7 +2040,7 @@
1993
2040
  "description": "Name of the baseline containing the requirement. Required when the system has multiple baselines with potentially overlapping requirement IDs."
1994
2041
  },
1995
2042
  "status": {
1996
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.6.0#/$defs/Result_Status",
2043
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.7.0#/$defs/Result_Status",
1997
2044
  "description": "The new status this amendment sets. Optional when only impact is being overridden."
1998
2045
  },
1999
2046
  "impact": {
@@ -2005,7 +2052,7 @@
2005
2052
  "description": "Justification for this amendment."
2006
2053
  },
2007
2054
  "appliedBy": {
2008
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Identity",
2055
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Identity",
2009
2056
  "description": "Identity of who applied this amendment."
2010
2057
  },
2011
2058
  "appliedAt": {
@@ -2021,20 +2068,20 @@
2021
2068
  "evidence": {
2022
2069
  "type": "array",
2023
2070
  "items": {
2024
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Evidence"
2071
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Evidence"
2025
2072
  },
2026
2073
  "description": "Supporting evidence (screenshots, logs, URLs, documents)."
2027
2074
  },
2028
2075
  "signature": {
2029
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Signature",
2076
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Signature",
2030
2077
  "description": "Digital signature for non-repudiation."
2031
2078
  },
2032
2079
  "previousChecksum": {
2033
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Checksum",
2080
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Checksum",
2034
2081
  "description": "SHA-256 checksum of the prior amendment in chronological order. Each amendment's checksum is recorded by the NEXT one, so editing an amendment in place is detectable — provided a later amendment is chained to it. It is NOT tamper-proof: the final amendment, the document envelope, deleted trailing amendments, and a chain that has been stripped or recomputed wholesale are all outside what it can detect. Use signature for non-repudiation. Omitted on the first amendment."
2035
2082
  },
2036
2083
  "cvss": {
2037
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.6.0#/$defs/Cvss",
2084
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.7.0#/$defs/Cvss",
2038
2085
  "$comment": "When present alongside impact.value on a riskAdjustment override, impact.value should be approximately cvss.computedScore / 10.0. Soft consistency rule — validators may warn but should not error. The cvss block makes Environmental/Threat enrichment auditable.",
2039
2086
  "description": "Structured CVSS scoring data backing this override. Captures the rubric (which Environmental/Threat metrics the consumer modified, the recomputed score) used to justify a riskAdjustment. For other override types this is optional context."
2040
2087
  },
@@ -2045,7 +2092,7 @@
2045
2092
  "milestones": {
2046
2093
  "type": "array",
2047
2094
  "items": {
2048
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Milestone"
2095
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Milestone"
2049
2096
  },
2050
2097
  "description": "Remediation milestones (primarily for POA&M type amendments)."
2051
2098
  },
@@ -2062,7 +2109,7 @@
2062
2109
  "affectedPackages": {
2063
2110
  "type": "array",
2064
2111
  "items": {
2065
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.6.0#/$defs/Affected_Package"
2112
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.7.0#/$defs/Affected_Package"
2066
2113
  },
2067
2114
  "description": "Software packages this amendment is scoped to, distinct from componentRef (which scopes to an HDF-internal Component by UUID).\n\nUse when the source amendment format references packages by purl/cpe/name+version — e.g., VEX `affects[]` / `products[]`, OSCAL POA&M `subjects[]`, FedRAMP component-aware amendments.\n\nSymmetric with Evaluated_Requirement.affectedPackages, which scopes findings to the same package vocabulary.\n\nWhen omitted, the amendment applies system-wide (or only to componentRef when that is set)."
2068
2115
  }
@@ -2195,9 +2242,9 @@
2195
2242
  }
2196
2243
  }
2197
2244
  },
2198
- "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.6.0": {
2245
+ "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.7.0": {
2199
2246
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2200
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.6.0",
2247
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.7.0",
2201
2248
  "title": "HDF Result Primitives",
2202
2249
  "description": "Types for representing assessment results and statuses.",
2203
2250
  "$defs": {
@@ -2328,9 +2375,9 @@
2328
2375
  }
2329
2376
  }
2330
2377
  },
2331
- "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.6.0": {
2378
+ "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.7.0": {
2332
2379
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2333
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.6.0",
2380
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.7.0",
2334
2381
  "title": "HDF CVSS Primitives",
2335
2382
  "description": "Types for representing CVSS (Common Vulnerability Scoring System) data attached to assessment findings. Supports CVSS v2.0, v3.0, v3.1, and v4.0 metric groups (Base, Threat, Environmental, Supplemental).",
2336
2383
  "$defs": {
@@ -2527,9 +2574,9 @@
2527
2574
  }
2528
2575
  }
2529
2576
  },
2530
- "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.6.0": {
2577
+ "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.7.0": {
2531
2578
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2532
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.6.0",
2579
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.7.0",
2533
2580
  "title": "HDF Affected Package Primitives",
2534
2581
  "description": "Types for representing the software package(s) affected by a vulnerability finding.",
2535
2582
  "$defs": {