@mitre/hdf-schema 3.0.1 → 3.1.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.
Files changed (47) hide show
  1. package/LICENSE.md +55 -0
  2. package/README.md +83 -40
  3. package/dist/go/hdf.go +148 -104
  4. package/dist/index.d.ts +26 -1
  5. package/dist/index.js +26 -1
  6. package/dist/schemas/hdf-amendments.schema.json +178 -53
  7. package/dist/schemas/hdf-baseline.schema.json +181 -56
  8. package/dist/schemas/hdf-comparison.schema.json +523 -108
  9. package/dist/schemas/hdf-evidence-package.schema.json +175 -50
  10. package/dist/schemas/hdf-plan.schema.json +181 -56
  11. package/dist/schemas/hdf-results.schema.json +502 -87
  12. package/dist/schemas/hdf-system.schema.json +190 -65
  13. package/dist/ts/hdf-amendments.d.ts +43 -15
  14. package/dist/ts/hdf-amendments.js +18 -7
  15. package/dist/ts/hdf-amendments.ts +44 -15
  16. package/dist/ts/hdf-results.d.ts +91 -37
  17. package/dist/ts/hdf-results.js +40 -20
  18. package/dist/ts/hdf-results.ts +91 -36
  19. package/package.json +44 -45
  20. package/dist/python/hdf_amendments.py +0 -695
  21. package/dist/python/hdf_baseline.py +0 -782
  22. package/dist/python/hdf_comparison.py +0 -1771
  23. package/dist/python/hdf_evidence_package.py +0 -593
  24. package/dist/python/hdf_plan.py +0 -363
  25. package/dist/python/hdf_results.py +0 -2163
  26. package/dist/python/hdf_system.py +0 -904
  27. package/src/schemas/hdf-amendments.schema.json +0 -97
  28. package/src/schemas/hdf-baseline.schema.json +0 -190
  29. package/src/schemas/hdf-comparison.schema.json +0 -107
  30. package/src/schemas/hdf-evidence-package.schema.json +0 -227
  31. package/src/schemas/hdf-plan.schema.json +0 -92
  32. package/src/schemas/hdf-results.schema.json +0 -304
  33. package/src/schemas/hdf-system.schema.json +0 -136
  34. package/src/schemas/primitives/amendments.schema.json +0 -155
  35. package/src/schemas/primitives/common.schema.json +0 -814
  36. package/src/schemas/primitives/comparison.schema.json +0 -809
  37. package/src/schemas/primitives/component.schema.json +0 -518
  38. package/src/schemas/primitives/data-flow.schema.json +0 -158
  39. package/src/schemas/primitives/extensions.schema.json +0 -342
  40. package/src/schemas/primitives/parameter.schema.json +0 -128
  41. package/src/schemas/primitives/plan.schema.json +0 -128
  42. package/src/schemas/primitives/platform.schema.json +0 -32
  43. package/src/schemas/primitives/result.schema.json +0 -133
  44. package/src/schemas/primitives/runner.schema.json +0 -83
  45. package/src/schemas/primitives/statistics.schema.json +0 -71
  46. package/src/schemas/primitives/system.schema.json +0 -132
  47. package/src/schemas/primitives/target.schema.json +0 -523
@@ -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-results/v3.0.0",
3
+ "$id": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.1.0",
4
4
  "type": "object",
5
5
  "unevaluatedProperties": false,
6
6
  "required": [
@@ -20,7 +20,7 @@
20
20
  "components": {
21
21
  "type": "array",
22
22
  "items": {
23
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.0.0#/$defs/Component"
23
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.1.0#/$defs/Component"
24
24
  },
25
25
  "description": "The components that were assessed. Each component describes a system element (host, container, cloud resource, application, etc.) with optional identity, SBOM, and external references."
26
26
  },
@@ -32,27 +32,27 @@
32
32
  "description": "Information on the baselines that were evaluated, including findings."
33
33
  },
34
34
  "statistics": {
35
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.0.0#/$defs/Statistics",
35
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.1.0#/$defs/Statistics",
36
36
  "description": "Statistics for the assessment run, including duration and result counts."
37
37
  },
38
38
  "generator": {
39
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.0.0#/$defs/Generator",
39
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.1.0#/$defs/Generator",
40
40
  "description": "Information about the tool that generated this file."
41
41
  },
42
42
  "tool": {
43
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.0.0#/$defs/Tool",
43
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.1.0#/$defs/Tool",
44
44
  "description": "The security tool that produced the assessment data in this file."
45
45
  },
46
46
  "integrity": {
47
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.0.0#/$defs/Integrity",
47
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.1.0#/$defs/Integrity",
48
48
  "description": "Cryptographic integrity information for verifying this file."
49
49
  },
50
50
  "runner": {
51
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.0.0#/$defs/Runner",
51
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.1.0#/$defs/Runner",
52
52
  "description": "Information about the test execution environment where the security tool was run. Distinct from targets (what is being tested)."
53
53
  },
54
54
  "remediation": {
55
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Remediation",
55
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Remediation",
56
56
  "description": "Optional reference to automated remediation resources (Ansible playbooks, Terraform scripts, etc.) for fixing failing requirements found in this assessment."
57
57
  },
58
58
  "systemRef": {
@@ -160,14 +160,14 @@
160
160
  ],
161
161
  "allOf": [
162
162
  {
163
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Baseline_Metadata"
163
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Baseline_Metadata"
164
164
  }
165
165
  ],
166
166
  "properties": {
167
167
  "depends": {
168
168
  "type": "array",
169
169
  "items": {
170
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Dependency"
170
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Dependency"
171
171
  },
172
172
  "description": "The set of dependencies this baseline depends on."
173
173
  },
@@ -180,15 +180,15 @@
180
180
  "description": "The description - should be more detailed than the summary."
181
181
  },
182
182
  "integrity": {
183
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.0.0#/$defs/Integrity",
183
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.1.0#/$defs/Integrity",
184
184
  "description": "Cryptographic integrity information for verifying this baseline has not been tampered with."
185
185
  },
186
186
  "originalChecksum": {
187
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Checksum",
187
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Checksum",
188
188
  "description": "SHA-256 checksum of the original baseline definition file (before execution). This is an immutable reference to the baseline as defined, used to detect tampering with baseline requirements or metadata."
189
189
  },
190
190
  "resultsChecksum": {
191
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Checksum",
191
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Checksum",
192
192
  "description": "SHA-256 checksum of the raw results before any amendments (statusOverrides or POAMs). Used to detect tampering with test results. Compare with currentChecksum to verify amendment integrity."
193
193
  },
194
194
  "statusMessage": {
@@ -206,14 +206,14 @@
206
206
  "groups": {
207
207
  "type": "array",
208
208
  "items": {
209
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Requirement_Group"
209
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Requirement_Group"
210
210
  },
211
211
  "description": "A set of descriptions for the requirement groups."
212
212
  },
213
213
  "inputs": {
214
214
  "type": "array",
215
215
  "items": {
216
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.0.0#/$defs/Input"
216
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.1.0#/$defs/Input"
217
217
  },
218
218
  "description": "Typed inputs used to parameterize this baseline at execution time. See the Input primitive for the full schema."
219
219
  },
@@ -238,7 +238,7 @@
238
238
  ],
239
239
  "allOf": [
240
240
  {
241
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Requirement_Core"
241
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Requirement_Core"
242
242
  }
243
243
  ],
244
244
  "properties": {
@@ -246,7 +246,7 @@
246
246
  "type": "array",
247
247
  "minItems": 1,
248
248
  "items": {
249
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.0.0#/$defs/Requirement_Description"
249
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.1.0#/$defs/Requirement_Description"
250
250
  },
251
251
  "contains": {
252
252
  "type": "object",
@@ -262,53 +262,343 @@
262
262
  "description": "Array of labeled descriptions. At least one description with label 'default' must be present. Convention: place default description first. Common labels: 'default', 'check', 'fix', 'rationale'."
263
263
  },
264
264
  "severity": {
265
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Severity",
265
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Severity",
266
266
  "description": "Explicit severity rating. Typically derived from impact score but provided explicitly for clarity."
267
267
  },
268
268
  "sourceLocation": {
269
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Source_Location",
269
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Source_Location",
270
270
  "description": "The explicit location of the requirement within the source code."
271
271
  },
272
272
  "results": {
273
273
  "type": "array",
274
274
  "minItems": 1,
275
275
  "items": {
276
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.0.0#/$defs/Requirement_Result"
276
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.1.0#/$defs/Requirement_Result"
277
277
  },
278
278
  "description": "The set of all tests within the requirement and their results."
279
279
  },
280
280
  "statusOverrides": {
281
281
  "type": "array",
282
282
  "items": {
283
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.0.0#/$defs/Status_Override"
283
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.1.0#/$defs/Status_Override"
284
284
  },
285
- "description": "Chronological history of all status overrides applied to this requirement. Status overrides are intentional changes to the compliance status (waivers, attestations). Most recent override should be first in array. Preserves full audit trail."
285
+ "description": "Chronological history of all overrides applied to this requirement. Overrides are intentional changes to the compliance status and/or impact score (waivers, attestations, false positives, risk adjustments). Most recent override should be first in array. Preserves full audit trail."
286
286
  },
287
287
  "poams": {
288
288
  "type": "array",
289
289
  "items": {
290
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.0.0#/$defs/POAM"
290
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.1.0#/$defs/POAM"
291
291
  },
292
292
  "description": "Plan of Action and Milestones for tracking remediation, mitigation, or risk acceptance. POAMs do NOT change effectiveStatus - they track the work being done to address a failure. Separate from statusOverrides which DO change status."
293
293
  },
294
294
  "effectiveStatus": {
295
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.0.0#/$defs/Result_Status",
296
- "description": "The current effective status of this requirement after applying the most recent non-expired override, or computed from results if no overrides exist."
295
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.1.0#/$defs/Result_Status",
296
+ "description": "The current effective compliance status of this requirement after applying the most recent non-expired override with a status field, or computed from results (worst-wins) if no status-bearing overrides exist."
297
+ },
298
+ "effectiveImpact": {
299
+ "type": "number",
300
+ "minimum": 0,
301
+ "maximum": 1,
302
+ "description": "The current effective impact score (0.0–1.0) after applying the most recent non-expired override with an impact field. Absent when no impact overrides apply; consumers should use the requirement's impact field in that case."
303
+ },
304
+ "disposition": {
305
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.1.0#/$defs/Override_Type",
306
+ "description": "The type of the most recent non-expired override or POAM governing this requirement. Indicates why the requirement is in its current state (e.g., waiver, falsePositive, riskAdjustment) or what remediation is being tracked (poam). Absent when no overrides or POAMs apply."
297
307
  },
298
308
  "evidence": {
299
309
  "type": "array",
300
310
  "items": {
301
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Evidence"
311
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Evidence"
302
312
  },
303
313
  "description": "Supporting evidence for this requirement's findings, such as screenshots, code samples, or log excerpts."
304
314
  }
305
315
  },
316
+ "examples": [
317
+ {
318
+ "$comment": "Passing requirement — no overrides, no disposition",
319
+ "id": "SV-230222",
320
+ "title": "RHEL 9 must use SSH protocol version 2",
321
+ "impact": 0.7,
322
+ "tags": {
323
+ "nist": [
324
+ "SC-8"
325
+ ]
326
+ },
327
+ "descriptions": [
328
+ {
329
+ "label": "default",
330
+ "data": "SSH must use protocol version 2."
331
+ }
332
+ ],
333
+ "results": [
334
+ {
335
+ "status": "passed",
336
+ "codeDesc": "sshd_config Protocol is expected to eq 2",
337
+ "startTime": "2026-01-15T10:00:00Z"
338
+ }
339
+ ],
340
+ "effectiveStatus": "passed"
341
+ },
342
+ {
343
+ "$comment": "Waiver — AO accepted risk, status overridden to passed",
344
+ "id": "SV-230300",
345
+ "title": "RHEL 9 must enforce password complexity",
346
+ "impact": 0.5,
347
+ "tags": {
348
+ "nist": [
349
+ "IA-5 (1)"
350
+ ]
351
+ },
352
+ "descriptions": [
353
+ {
354
+ "label": "default",
355
+ "data": "Passwords must meet complexity requirements."
356
+ }
357
+ ],
358
+ "results": [
359
+ {
360
+ "status": "failed",
361
+ "codeDesc": "pwquality.conf minlen is expected to be >= 15",
362
+ "startTime": "2026-01-15T10:00:00Z",
363
+ "message": "expected 8 to be >= 15"
364
+ }
365
+ ],
366
+ "statusOverrides": [
367
+ {
368
+ "type": "waiver",
369
+ "status": "passed",
370
+ "reason": "Compensating control: PIV/CAC smart card authentication enforced for all users, password login disabled",
371
+ "appliedBy": {
372
+ "type": "email",
373
+ "identifier": "ao@agency.gov"
374
+ },
375
+ "appliedAt": "2026-01-20T10:00:00Z",
376
+ "expiresAt": "2026-07-20T00:00:00Z"
377
+ }
378
+ ],
379
+ "effectiveStatus": "passed",
380
+ "disposition": "waiver"
381
+ },
382
+ {
383
+ "$comment": "False positive (compliance scan) — STIG check was wrong, requirement actually passes",
384
+ "id": "SV-230410",
385
+ "title": "RHEL 9 must have sshd PermitRootLogin disabled",
386
+ "impact": 0.7,
387
+ "tags": {
388
+ "nist": [
389
+ "AC-6"
390
+ ]
391
+ },
392
+ "descriptions": [
393
+ {
394
+ "label": "default",
395
+ "data": "Direct root login via SSH must be disabled."
396
+ }
397
+ ],
398
+ "results": [
399
+ {
400
+ "status": "failed",
401
+ "codeDesc": "sshd_config PermitRootLogin is expected to eq 'no'",
402
+ "startTime": "2026-01-15T10:00:00Z",
403
+ "message": "expected 'prohibit-password' to eq 'no'"
404
+ }
405
+ ],
406
+ "statusOverrides": [
407
+ {
408
+ "type": "falsePositive",
409
+ "status": "passed",
410
+ "reason": "Scanner requires literal 'no' but 'prohibit-password' is equally restrictive (disables password-based root login). Manual review confirms root cannot authenticate via SSH.",
411
+ "appliedBy": {
412
+ "type": "email",
413
+ "identifier": "assessor@agency.gov"
414
+ },
415
+ "appliedAt": "2026-01-16T14:00:00Z",
416
+ "expiresAt": "2026-07-16T00:00:00Z"
417
+ }
418
+ ],
419
+ "effectiveStatus": "passed",
420
+ "disposition": "falsePositive"
421
+ },
422
+ {
423
+ "$comment": "False positive (CVE scan) — vulnerability does not apply to this build",
424
+ "id": "CVE-2026-12345",
425
+ "title": "libxml2 buffer overflow in xmlParseEntityDecl",
426
+ "impact": 0.9,
427
+ "tags": {
428
+ "nist": [
429
+ "SI-2",
430
+ "RA-5"
431
+ ]
432
+ },
433
+ "descriptions": [
434
+ {
435
+ "label": "default",
436
+ "data": "Buffer overflow in libxml2 entity parsing allows remote code execution."
437
+ }
438
+ ],
439
+ "results": [
440
+ {
441
+ "status": "failed",
442
+ "codeDesc": "libxml2 >= 2.9.0 is expected to be patched for CVE-2026-12345",
443
+ "startTime": "2026-01-15T10:00:00Z"
444
+ }
445
+ ],
446
+ "statusOverrides": [
447
+ {
448
+ "type": "falsePositive",
449
+ "status": "notApplicable",
450
+ "reason": "CVE scanner matched libxml2 version signature, but the vulnerable entity parsing module is compiled out of our build (--without-legacy flag). The affected code path does not exist in the binary.",
451
+ "appliedBy": {
452
+ "type": "email",
453
+ "identifier": "dev@org.gov"
454
+ },
455
+ "appliedAt": "2026-01-16T09:00:00Z",
456
+ "expiresAt": "2026-07-16T00:00:00Z"
457
+ }
458
+ ],
459
+ "effectiveStatus": "notApplicable",
460
+ "disposition": "falsePositive"
461
+ },
462
+ {
463
+ "$comment": "Risk adjustment — impact lowered, pass/fail unchanged",
464
+ "id": "CVE-2026-67890",
465
+ "title": "OpenSSL timing side-channel in RSA decryption",
466
+ "impact": 0.7,
467
+ "tags": {
468
+ "nist": [
469
+ "SI-2",
470
+ "RA-5"
471
+ ]
472
+ },
473
+ "descriptions": [
474
+ {
475
+ "label": "default",
476
+ "data": "Timing side-channel may allow RSA private key recovery."
477
+ }
478
+ ],
479
+ "results": [
480
+ {
481
+ "status": "failed",
482
+ "codeDesc": "openssl >= 3.1.0 is expected to be patched for CVE-2026-67890",
483
+ "startTime": "2026-01-15T10:00:00Z"
484
+ }
485
+ ],
486
+ "statusOverrides": [
487
+ {
488
+ "type": "riskAdjustment",
489
+ "impact": {
490
+ "value": 0.3
491
+ },
492
+ "reason": "The RSA key exchange path is unreachable in our deployment — all TLS connections use ECDHE. Attack requires local network access to the TLS terminator, which is in an isolated VLAN.",
493
+ "appliedBy": {
494
+ "type": "email",
495
+ "identifier": "security-architect@org.gov"
496
+ },
497
+ "appliedAt": "2026-01-17T10:00:00Z",
498
+ "expiresAt": "2026-07-17T00:00:00Z"
499
+ }
500
+ ],
501
+ "effectiveStatus": "failed",
502
+ "effectiveImpact": 0.3,
503
+ "disposition": "riskAdjustment"
504
+ },
505
+ {
506
+ "$comment": "Operational requirement — cannot remediate, remains open risk",
507
+ "id": "SV-230500",
508
+ "title": "RHEL 9 must disable USB mass storage",
509
+ "impact": 0.5,
510
+ "tags": {
511
+ "nist": [
512
+ "MP-7"
513
+ ]
514
+ },
515
+ "descriptions": [
516
+ {
517
+ "label": "default",
518
+ "data": "USB mass storage kernel module must be disabled."
519
+ }
520
+ ],
521
+ "results": [
522
+ {
523
+ "status": "failed",
524
+ "codeDesc": "Kernel module 'usb-storage' is expected to be disabled",
525
+ "startTime": "2026-01-15T10:00:00Z",
526
+ "message": "usb-storage module is loaded"
527
+ }
528
+ ],
529
+ "statusOverrides": [
530
+ {
531
+ "type": "operationalRequirement",
532
+ "status": "failed",
533
+ "reason": "Air-gapped system requires USB transfer for classified data ingestion per operational procedure OP-2026-003. Compensating controls: USB ports are physically secured, all transfers are logged and require two-person integrity.",
534
+ "appliedBy": {
535
+ "type": "email",
536
+ "identifier": "system-owner@agency.gov"
537
+ },
538
+ "appliedAt": "2026-01-20T10:00:00Z",
539
+ "expiresAt": "2026-07-20T00:00:00Z"
540
+ }
541
+ ],
542
+ "effectiveStatus": "failed",
543
+ "disposition": "operationalRequirement"
544
+ },
545
+ {
546
+ "$comment": "POAM — remediation tracked, status unchanged",
547
+ "id": "SV-230350",
548
+ "title": "RHEL 9 must be patched within 30 days of release",
549
+ "impact": 0.7,
550
+ "tags": {
551
+ "nist": [
552
+ "SI-2"
553
+ ]
554
+ },
555
+ "descriptions": [
556
+ {
557
+ "label": "default",
558
+ "data": "Security patches must be applied within 30 days."
559
+ }
560
+ ],
561
+ "results": [
562
+ {
563
+ "status": "failed",
564
+ "codeDesc": "Package updates are expected to be current within 30 days",
565
+ "startTime": "2026-01-15T10:00:00Z",
566
+ "message": "15 packages have patches older than 30 days"
567
+ }
568
+ ],
569
+ "poams": [
570
+ {
571
+ "type": "remediation",
572
+ "explanation": "Patch deployment blocked by vendor compatibility testing. Vendor confirmed fix for Q2 2026.",
573
+ "appliedBy": {
574
+ "type": "email",
575
+ "identifier": "ops@agency.gov"
576
+ },
577
+ "appliedAt": "2026-01-20T10:00:00Z",
578
+ "milestones": [
579
+ {
580
+ "description": "Vendor releases compatible patch",
581
+ "estimatedCompletion": "2026-04-01T00:00:00Z",
582
+ "status": "pending"
583
+ },
584
+ {
585
+ "description": "Deploy to production",
586
+ "estimatedCompletion": "2026-04-15T00:00:00Z",
587
+ "status": "pending"
588
+ }
589
+ ]
590
+ }
591
+ ],
592
+ "effectiveStatus": "failed",
593
+ "disposition": "poam"
594
+ }
595
+ ],
306
596
  "description": "A requirement that has been evaluated, including any findings.",
307
597
  "title": "Evaluated Requirement"
308
598
  },
309
- "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.0.0": {
599
+ "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.1.0": {
310
600
  "$schema": "https://json-schema.org/draft/2020-12/schema",
311
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.0.0",
601
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.1.0",
312
602
  "title": "HDF Component Primitives",
313
603
  "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.",
314
604
  "$defs": {
@@ -338,7 +628,7 @@
338
628
  "description": "Description of this component's role or purpose."
339
629
  },
340
630
  "owner": {
341
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Identity",
631
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Identity",
342
632
  "description": "Team or individual responsible for this component. Enables per-component ownership when different teams manage different parts of a system."
343
633
  },
344
634
  "externalIds": {
@@ -382,12 +672,12 @@
382
672
  "inputOverrides": {
383
673
  "type": "array",
384
674
  "items": {
385
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.0.0#/$defs/Input_Override"
675
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.1.0#/$defs/Input_Override"
386
676
  },
387
677
  "description": "System-specific overrides for baseline input values."
388
678
  },
389
679
  "targetSelector": {
390
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.0.0#/$defs/Target_Selector",
680
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.1.0#/$defs/Target_Selector",
391
681
  "description": "Label selector to match targets belonging to this component during migration. Targets with matching labels are automatically included."
392
682
  }
393
683
  },
@@ -707,7 +997,7 @@
707
997
  "const": "cloudAccount"
708
998
  },
709
999
  "provider": {
710
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Cloud_Provider",
1000
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Cloud_Provider",
711
1001
  "description": "Cloud provider."
712
1002
  },
713
1003
  "accountId": {
@@ -746,7 +1036,7 @@
746
1036
  "const": "cloudResource"
747
1037
  },
748
1038
  "provider": {
749
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Cloud_Provider",
1039
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Cloud_Provider",
750
1040
  "description": "Cloud provider."
751
1041
  },
752
1042
  "resourceType": {
@@ -926,9 +1216,9 @@
926
1216
  }
927
1217
  }
928
1218
  },
929
- "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0": {
1219
+ "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0": {
930
1220
  "$schema": "https://json-schema.org/draft/2020-12/schema",
931
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0",
1221
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0",
932
1222
  "title": "HDF Common Primitives",
933
1223
  "description": "Shared building blocks used by hdf-results and hdf-baseline schemas.",
934
1224
  "$defs": {
@@ -1744,9 +2034,9 @@
1744
2034
  }
1745
2035
  }
1746
2036
  },
1747
- "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.0.0": {
2037
+ "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.1.0": {
1748
2038
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1749
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.0.0",
2039
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.1.0",
1750
2040
  "title": "HDF System Primitives",
1751
2041
  "description": "Types for describing system architecture, authorization boundaries, and components.",
1752
2042
  "$defs": {
@@ -1797,7 +2087,7 @@
1797
2087
  "description": "Rationale for why this override is needed."
1798
2088
  },
1799
2089
  "approvedBy": {
1800
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Identity",
2090
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Identity",
1801
2091
  "description": "Identity of the person or system that approved this override."
1802
2092
  }
1803
2093
  },
@@ -1878,9 +2168,9 @@
1878
2168
  }
1879
2169
  }
1880
2170
  },
1881
- "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.0.0": {
2171
+ "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.1.0": {
1882
2172
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1883
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.0.0",
2173
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.1.0",
1884
2174
  "title": "HDF Statistics Primitives",
1885
2175
  "description": "Statistics types for tracking assessment run metrics.",
1886
2176
  "$defs": {
@@ -1949,9 +2239,9 @@
1949
2239
  }
1950
2240
  }
1951
2241
  },
1952
- "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.0.0": {
2242
+ "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.1.0": {
1953
2243
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1954
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.0.0",
2244
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.1.0",
1955
2245
  "title": "HDF Extension Primitives",
1956
2246
  "description": "Extension types for waivers, attestations, generators, and integrity.",
1957
2247
  "$defs": {
@@ -1960,52 +2250,67 @@
1960
2250
  "unevaluatedProperties": false,
1961
2251
  "required": [
1962
2252
  "type",
1963
- "status",
1964
2253
  "reason",
1965
2254
  "appliedBy",
1966
2255
  "appliedAt",
1967
2256
  "expiresAt"
1968
2257
  ],
2258
+ "anyOf": [
2259
+ {
2260
+ "required": [
2261
+ "status"
2262
+ ]
2263
+ },
2264
+ {
2265
+ "required": [
2266
+ "impact"
2267
+ ]
2268
+ }
2269
+ ],
1969
2270
  "properties": {
1970
2271
  "type": {
1971
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.0.0#/$defs/Override_Type",
1972
- "description": "The type of status override applied to this requirement."
2272
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.1.0#/$defs/Override_Type",
2273
+ "description": "The type of override applied to this requirement."
1973
2274
  },
1974
2275
  "status": {
1975
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.0.0#/$defs/Result_Status",
1976
- "description": "The new status this override sets for the requirement. This intentionally changes the compliance status."
2276
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.1.0#/$defs/Result_Status",
2277
+ "description": "The new status this override sets for the requirement. Optional when only impact is being overridden."
2278
+ },
2279
+ "impact": {
2280
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.1.0#/$defs/Impact_Override",
2281
+ "description": "Override to the requirement's impact score. At least one of status or impact must be set."
1977
2282
  },
1978
2283
  "reason": {
1979
2284
  "type": "string",
1980
- "description": "Explanation for why this status override was applied."
2285
+ "description": "Explanation for why this override was applied."
1981
2286
  },
1982
2287
  "appliedBy": {
1983
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Identity",
1984
- "description": "Identity of who applied this status override. For simple cases, use type 'simple' with just an identifier."
2288
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Identity",
2289
+ "description": "Identity of who applied this override. For simple cases, use type 'simple' with just an identifier."
1985
2290
  },
1986
2291
  "appliedAt": {
1987
2292
  "type": "string",
1988
2293
  "format": "date-time",
1989
- "description": "Timestamp when this status override was applied. ISO 8601 format."
2294
+ "description": "Timestamp when this override was applied. ISO 8601 format."
1990
2295
  },
1991
2296
  "expiresAt": {
1992
2297
  "type": "string",
1993
2298
  "format": "date-time",
1994
- "description": "Timestamp when this status override expires and must be reviewed/renewed. REQUIRED - no permanent status overrides allowed. ISO 8601 format."
2299
+ "description": "Timestamp when this override expires and must be reviewed/renewed. REQUIRED - no permanent overrides allowed. ISO 8601 format."
1995
2300
  },
1996
2301
  "signature": {
1997
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Signature",
2302
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Signature",
1998
2303
  "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."
1999
2304
  },
2000
2305
  "evidence": {
2001
2306
  "type": "array",
2002
2307
  "items": {
2003
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Evidence"
2308
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Evidence"
2004
2309
  },
2005
- "description": "Supporting evidence for this status override, such as screenshots demonstrating manual verification for attestations."
2310
+ "description": "Supporting evidence for this override, such as screenshots demonstrating manual verification for attestations."
2006
2311
  },
2007
2312
  "previousChecksum": {
2008
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Checksum",
2313
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Checksum",
2009
2314
  "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."
2010
2315
  }
2011
2316
  },
@@ -2021,6 +2326,41 @@
2021
2326
  "appliedAt": "2025-12-01T10:00:00Z",
2022
2327
  "expiresAt": "2026-12-01T00:00:00Z"
2023
2328
  },
2329
+ {
2330
+ "type": "riskAdjustment",
2331
+ "impact": {
2332
+ "value": 0.3
2333
+ },
2334
+ "reason": "CVE-123 is in a dead code path, unreachable from any entry point",
2335
+ "appliedBy": {
2336
+ "identifier": "dev@org.gov",
2337
+ "type": "email"
2338
+ },
2339
+ "appliedAt": "2026-04-14T10:00:00Z",
2340
+ "expiresAt": "2026-10-14T00:00:00Z"
2341
+ },
2342
+ {
2343
+ "type": "falsePositive",
2344
+ "status": "passed",
2345
+ "reason": "STIG check misidentified sshd_config syntax; manual review confirms compliant configuration",
2346
+ "appliedBy": {
2347
+ "identifier": "assessor@agency.gov",
2348
+ "type": "email"
2349
+ },
2350
+ "appliedAt": "2026-04-14T10:00:00Z",
2351
+ "expiresAt": "2026-10-14T00:00:00Z"
2352
+ },
2353
+ {
2354
+ "type": "falsePositive",
2355
+ "status": "notApplicable",
2356
+ "reason": "CVE scanner matched library signature but the vulnerable code path is not present — dependency compiled with affected module disabled",
2357
+ "appliedBy": {
2358
+ "identifier": "dev@org.gov",
2359
+ "type": "email"
2360
+ },
2361
+ "appliedAt": "2026-04-14T10:00:00Z",
2362
+ "expiresAt": "2026-10-14T00:00:00Z"
2363
+ },
2024
2364
  {
2025
2365
  "type": "attestation",
2026
2366
  "status": "passed",
@@ -2048,7 +2388,7 @@
2048
2388
  ]
2049
2389
  }
2050
2390
  ],
2051
- "description": "An intentional change to a requirement's compliance status (waiver or attestation). Status overrides change the effectiveStatus of the requirement. All status overrides must have an expiration date to enforce periodic review.",
2391
+ "description": "An intentional change to a requirement's compliance status and/or impact score. At least one of status or impact must be set. Overrides change the effectiveStatus or impact of the requirement. All overrides must have an expiration date to enforce periodic review.",
2052
2392
  "title": "Status Override"
2053
2393
  },
2054
2394
  "POAM": {
@@ -2066,16 +2406,17 @@
2066
2406
  "enum": [
2067
2407
  "remediation",
2068
2408
  "mitigation",
2069
- "riskAcceptance"
2409
+ "riskAcceptance",
2410
+ "vendorDependency"
2070
2411
  ],
2071
- "description": "The type of POA&M. 'remediation' fixes root cause. 'mitigation' reduces risk via compensating controls. 'riskAcceptance' documents decision to accept risk."
2412
+ "description": "The type of POA&M. 'remediation' fixes root cause. 'mitigation' reduces risk via compensating controls. 'riskAcceptance' documents decision to accept risk. 'vendorDependency' tracks a fix that depends on a vendor releasing a patch or update."
2072
2413
  },
2073
2414
  "explanation": {
2074
2415
  "type": "string",
2075
2416
  "description": "Detailed explanation of the plan, including what actions will be taken."
2076
2417
  },
2077
2418
  "appliedBy": {
2078
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Identity",
2419
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Identity",
2079
2420
  "description": "Identity of who created this POA&M. For simple cases, use type 'simple' with just an identifier."
2080
2421
  },
2081
2422
  "appliedAt": {
@@ -2091,23 +2432,23 @@
2091
2432
  "milestones": {
2092
2433
  "type": "array",
2093
2434
  "items": {
2094
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Milestone"
2435
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Milestone"
2095
2436
  },
2096
2437
  "description": "Optional array of milestones tracking progress toward completion."
2097
2438
  },
2098
2439
  "signature": {
2099
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Signature",
2440
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Signature",
2100
2441
  "description": "Optional digital signature for enhanced trust and non-repudiation."
2101
2442
  },
2102
2443
  "evidence": {
2103
2444
  "type": "array",
2104
2445
  "items": {
2105
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Evidence"
2446
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Evidence"
2106
2447
  },
2107
2448
  "description": "Supporting evidence for this POA&M, such as documentation of compensating controls or mitigation implementation."
2108
2449
  },
2109
2450
  "previousChecksum": {
2110
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Checksum",
2451
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Checksum",
2111
2452
  "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."
2112
2453
  }
2113
2454
  },
@@ -2258,7 +2599,7 @@
2258
2599
  },
2259
2600
  "properties": {
2260
2601
  "algorithm": {
2261
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Hash_Algorithm",
2602
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Hash_Algorithm",
2262
2603
  "description": "The hash algorithm used for the checksum."
2263
2604
  },
2264
2605
  "checksum": {
@@ -2291,36 +2632,66 @@
2291
2632
  }
2292
2633
  }
2293
2634
  },
2294
- "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.0.0": {
2635
+ "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.1.0": {
2295
2636
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2296
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.0.0",
2637
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.1.0",
2297
2638
  "title": "HDF Amendment Primitives",
2298
- "description": "Types for waivers, attestations, exceptions, and POA&Ms that modify requirement compliance status.",
2639
+ "description": "Types for waivers, attestations, and POA&Ms that modify requirement compliance status.",
2299
2640
  "$defs": {
2300
2641
  "Override_Type": {
2301
2642
  "type": "string",
2302
2643
  "enum": [
2303
2644
  "waiver",
2304
2645
  "attestation",
2305
- "exception",
2306
2646
  "poam",
2307
- "inherited"
2647
+ "inherited",
2648
+ "falsePositive",
2649
+ "riskAdjustment",
2650
+ "operationalRequirement"
2308
2651
  ],
2309
- "description": "The type of amendment. 'waiver': risk accepted (AO). 'attestation': manually verified (assessor). 'exception': not applicable (system owner + AO). 'poam': remediation tracked (no status change). 'inherited': control provided by another component or system (overrides to notApplicable/passed).",
2652
+ "description": "The type of amendment, aligned with FedRAMP deviation request categories. 'waiver': risk accepted by Authorizing Official. 'attestation': manually verified by assessor. 'poam': remediation tracked (no status change). 'inherited': control provided by another component or system. 'falsePositive': scanner incorrectly identified a finding — for compliance scans (STIG, CIS), the check actually passes, so status is typically set to 'passed'; for vulnerability scans (CVE, SCA), the flagged vulnerability does not apply to this system, so status is typically set to 'notApplicable'. The disposition field on the requirement distinguishes false positives from genuinely not-applicable findings. 'riskAdjustment': impact score adjusted based on environmental context (FedRAMP Risk Adjustment); does not change pass/fail status, only impact via the impact field. 'operationalRequirement': deviation required by operational constraints (FedRAMP Operational Requirement); the finding cannot be remediated because the system requires the affected functionality. Remains an open risk. Migration note: 'exception' was removed in v3.1.0 — use 'waiver' with status 'notApplicable' instead.",
2310
2653
  "title": "Override Type"
2311
2654
  },
2655
+ "Impact_Override": {
2656
+ "type": "object",
2657
+ "required": [
2658
+ "value"
2659
+ ],
2660
+ "unevaluatedProperties": false,
2661
+ "properties": {
2662
+ "value": {
2663
+ "type": "number",
2664
+ "minimum": 0,
2665
+ "maximum": 1,
2666
+ "description": "The overridden impact score (0.0–1.0)."
2667
+ }
2668
+ },
2669
+ "description": "An override to the requirement's impact score. The prior impact is the original result value or the preceding override in the chain.",
2670
+ "title": "Impact Override"
2671
+ },
2312
2672
  "Standalone_Override": {
2313
2673
  "type": "object",
2314
2674
  "unevaluatedProperties": false,
2315
2675
  "required": [
2316
2676
  "type",
2317
2677
  "requirementId",
2318
- "status",
2319
2678
  "reason",
2320
2679
  "appliedBy",
2321
2680
  "appliedAt",
2322
2681
  "expiresAt"
2323
2682
  ],
2683
+ "anyOf": [
2684
+ {
2685
+ "required": [
2686
+ "status"
2687
+ ]
2688
+ },
2689
+ {
2690
+ "required": [
2691
+ "impact"
2692
+ ]
2693
+ }
2694
+ ],
2324
2695
  "properties": {
2325
2696
  "type": {
2326
2697
  "$ref": "#/$defs/Override_Type",
@@ -2335,15 +2706,19 @@
2335
2706
  "description": "Name of the baseline containing the requirement. Required when the system has multiple baselines with potentially overlapping requirement IDs."
2336
2707
  },
2337
2708
  "status": {
2338
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.0.0#/$defs/Result_Status",
2339
- "description": "The new status this amendment sets. For POA&Ms, this is the current status (POA&Ms track work, they don't change status)."
2709
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.1.0#/$defs/Result_Status",
2710
+ "description": "The new status this amendment sets. Optional when only impact is being overridden."
2711
+ },
2712
+ "impact": {
2713
+ "$ref": "#/$defs/Impact_Override",
2714
+ "description": "Override to the requirement's impact score. At least one of status or impact must be set."
2340
2715
  },
2341
2716
  "reason": {
2342
2717
  "type": "string",
2343
2718
  "description": "Justification for this amendment."
2344
2719
  },
2345
2720
  "appliedBy": {
2346
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Identity",
2721
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Identity",
2347
2722
  "description": "Identity of who applied this amendment."
2348
2723
  },
2349
2724
  "appliedAt": {
@@ -2359,22 +2734,22 @@
2359
2734
  "evidence": {
2360
2735
  "type": "array",
2361
2736
  "items": {
2362
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Evidence"
2737
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Evidence"
2363
2738
  },
2364
2739
  "description": "Supporting evidence (screenshots, logs, URLs, documents)."
2365
2740
  },
2366
2741
  "signature": {
2367
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Signature",
2742
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Signature",
2368
2743
  "description": "Digital signature for non-repudiation."
2369
2744
  },
2370
2745
  "previousChecksum": {
2371
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Checksum",
2746
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Checksum",
2372
2747
  "description": "Checksum of the prior amendment in the chain. Creates a tamper-evident linked list. Null for the first amendment."
2373
2748
  },
2374
2749
  "milestones": {
2375
2750
  "type": "array",
2376
2751
  "items": {
2377
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Milestone"
2752
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Milestone"
2378
2753
  },
2379
2754
  "description": "Remediation milestones (primarily for POA&M type amendments)."
2380
2755
  },
@@ -2410,6 +2785,46 @@
2410
2785
  }
2411
2786
  ]
2412
2787
  },
2788
+ {
2789
+ "type": "falsePositive",
2790
+ "requirementId": "SV-258010",
2791
+ "baselineRef": "RHEL9-STIG",
2792
+ "status": "passed",
2793
+ "reason": "STIG check misidentified sshd_config syntax; manual review confirms compliant configuration",
2794
+ "appliedBy": {
2795
+ "type": "email",
2796
+ "identifier": "assessor@agency.gov"
2797
+ },
2798
+ "appliedAt": "2026-04-14T10:00:00Z",
2799
+ "expiresAt": "2026-10-14T00:00:00Z"
2800
+ },
2801
+ {
2802
+ "type": "falsePositive",
2803
+ "requirementId": "CVE-2026-12345",
2804
+ "status": "notApplicable",
2805
+ "reason": "CVE scanner matched library signature but the vulnerable code path is not present in our build — dependency is compiled with the affected module disabled",
2806
+ "appliedBy": {
2807
+ "type": "email",
2808
+ "identifier": "dev@org.gov"
2809
+ },
2810
+ "appliedAt": "2026-04-14T10:00:00Z",
2811
+ "expiresAt": "2026-10-14T00:00:00Z"
2812
+ },
2813
+ {
2814
+ "type": "riskAdjustment",
2815
+ "requirementId": "SV-258020",
2816
+ "baselineRef": "RHEL9-STIG",
2817
+ "impact": {
2818
+ "value": 0.3
2819
+ },
2820
+ "reason": "CVE-123 is in a dead code path, unreachable from any entry point",
2821
+ "appliedBy": {
2822
+ "type": "email",
2823
+ "identifier": "dev@org.gov"
2824
+ },
2825
+ "appliedAt": "2026-04-14T10:00:00Z",
2826
+ "expiresAt": "2026-10-14T00:00:00Z"
2827
+ },
2413
2828
  {
2414
2829
  "type": "poam",
2415
2830
  "requirementId": "SV-258001",
@@ -2450,14 +2865,14 @@
2450
2865
  "expiresAt": "2026-09-26T00:00:00Z"
2451
2866
  }
2452
2867
  ],
2453
- "description": "A standalone amendment that modifies a requirement's compliance status. Extends the inline Status_Override concept with requirementId and baselineRef for use outside of results documents.",
2868
+ "description": "A standalone amendment that modifies a requirement's compliance status and/or impact score. At least one of status or impact must be set. Extends the inline Override concept with requirementId and baselineRef for use outside of results documents.",
2454
2869
  "title": "Standalone Override"
2455
2870
  }
2456
2871
  }
2457
2872
  },
2458
- "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.0.0": {
2873
+ "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.1.0": {
2459
2874
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2460
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.0.0",
2875
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.1.0",
2461
2876
  "title": "HDF Result Primitives",
2462
2877
  "description": "Types for representing assessment results and statuses.",
2463
2878
  "$defs": {
@@ -2588,9 +3003,9 @@
2588
3003
  }
2589
3004
  }
2590
3005
  },
2591
- "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.0.0": {
3006
+ "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.1.0": {
2592
3007
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2593
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.0.0",
3008
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.1.0",
2594
3009
  "title": "HDF Runner Primitive",
2595
3010
  "description": "Information about the test execution environment where the security tool/scanner was executed.",
2596
3011
  "$defs": {
@@ -2626,7 +3041,7 @@
2626
3041
  "description": "The container instance identifier. Example: 'a1b2c3d4e5f6', 'security-scan-job-xyz123'. Can be a Docker container ID, Kubernetes pod name, or other container runtime identifier."
2627
3042
  },
2628
3043
  "operator": {
2629
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.0.0#/$defs/Identity",
3044
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Identity",
2630
3045
  "description": "The identity of the person or system responsible for executing the test. This could be a human auditor manually completing a checklist, an automated CI/CD system, or a security tool. Optional field to support both automated and manual HDF generation."
2631
3046
  }
2632
3047
  },
@@ -2673,9 +3088,9 @@
2673
3088
  }
2674
3089
  }
2675
3090
  },
2676
- "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.0.0": {
3091
+ "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.1.0": {
2677
3092
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2678
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.0.0",
3093
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.1.0",
2679
3094
  "title": "HDF Parameter Primitives",
2680
3095
  "description": "Input/parameter type definitions for typed, traceable configuration values that bridge governance prose and scanner automation.",
2681
3096
  "$defs": {