Skip to content

feat: add 6.3.8 required fields - #662

Merged
peinjoh merged 12 commits into
mainfrom
feat/add-6-3-8-required-fields
Aug 14, 2026
Merged

peinjoh merged 12 commits into
mainfrom
feat/add-6-3-8-required-fields

Conversation

@peinjoh

@peinjoh peinjoh commented May 21, 2026

Copy link
Copy Markdown
Contributor

Relates to #144 #276

Adds the fields required to be evaluated during spell checking to the trait.

@peinjoh
peinjoh requested a review from a team as a code owner May 21, 2026 21:41
@peinjoh
peinjoh marked this pull request as draft May 21, 2026 21:41
@peinjoh
peinjoh requested a review from Copilot May 21, 2026 21:41

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR extends the CSAF trait facade to expose additional text-bearing fields needed for implementing CSAF 6.3.8 spell-check validations across CSAF 2.0 and 2.1 documents.

Changes:

  • Renames the document reference abstraction from DocumentReferenceTrait to the more general ReferenceTrait and updates relevant validations to use it.
  • Adds new trait accessors for spell-check-relevant fields (e.g., acknowledgments, aggregate severity, aliases, remediation details/entitlements/restart-required, involvement summary, threat details, note audience/text).
  • Introduces new traits/modules (AcknowledgmentTrait, AggregateSeverityTrait, RestartRequiredTrait) and wires them into the trait/module structure.

Reviewed changes

Copilot reviewed 21 out of 21 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
csaf-rs/src/validations/test_6_2_11.rs Updates validation imports to use ReferenceTrait for canonical URL checks.
csaf-rs/src/validations/test_6_1_27_19.rs Updates validation imports to use ReferenceTrait for superseding-document reference checks.
csaf-rs/src/validations/test_6_1_27_02.rs Updates validation imports to use ReferenceTrait for external reference presence checks.
csaf-rs/src/csaf/traits/vulnerabilities/threat_trait.rs Adds get_details() accessor for threat details text.
csaf-rs/src/csaf/traits/vulnerabilities/restart_required_trait.rs Adds a trait to normalize access to restart-required info across CSAF versions.
csaf-rs/src/csaf/traits/vulnerabilities/remediation_trait.rs Adds accessors for remediation details/entitlements/restart-required and associated type for restart-required.
csaf-rs/src/csaf/traits/vulnerabilities/mod.rs Exposes the new restart_required_trait module.
csaf-rs/src/csaf/traits/vulnerabilities/involvement_trait.rs Adds get_summary() accessor for involvement summary text.
csaf-rs/src/csaf/traits/vulnerabilities_trait.rs Adds reference/acknowledgment/title accessors to vulnerabilities for spell-check traversal.
csaf-rs/src/csaf/traits/shared/references_trait.rs Renames DocumentReferenceTrait to ReferenceTrait and keeps CSAF 2.0→2.1 category normalization.
csaf-rs/src/csaf/traits/shared/note_trait.rs Adds accessors for audience and text fields on notes.
csaf-rs/src/csaf/traits/shared/mod.rs Adds shared modules for acknowledgments and references.
csaf-rs/src/csaf/traits/shared/acknowledgment_trait.rs Introduces a trait for extracting acknowledgment fields (names/org/summary/urls).
csaf-rs/src/csaf/traits/document/tracking_trait.rs Adds get_aliases() accessor for tracking aliases.
csaf-rs/src/csaf/traits/document/publisher_trait.rs Adds accessors for publisher name/namespace/contact/issuing authority.
csaf-rs/src/csaf/traits/document/mod.rs Adds aggregate severity trait module; removes document references module.
csaf-rs/src/csaf/traits/document/generator_trait.rs Expands generator trait with engine name/version accessors.
csaf-rs/src/csaf/traits/document/distribution_trait.rs Adds get_text() accessor for distribution free-text.
csaf-rs/src/csaf/traits/document/aggregate_severity_trait.rs Introduces accessors for aggregate severity namespace/text.
csaf-rs/src/csaf/traits/document_trait.rs Adds document-level acknowledgments and aggregate severity accessors; switches to ReferenceTrait.
csaf-rs/src/csaf_traits.rs Updates the public trait re-export facade for new/renamed traits.
Comments suppressed due to low confidence (1)

csaf-rs/src/csaf/traits/shared/references_trait.rs:6

  • The doc comment says "Trait representing document references", but ReferenceTrait is now used for references beyond just /document/references (e.g., vulnerability references). Consider updating the wording to avoid misleading API documentation.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread csaf-rs/src/csaf/traits/shared/acknowledgment_trait.rs
Comment thread csaf-rs/src/csaf/traits/document/tracking_trait.rs
Comment thread csaf-rs/src/csaf/traits/vulnerabilities/remediation_trait.rs
Comment thread csaf-rs/src/csaf_traits.rs

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CSAF Validation Benchmark

Details
Benchmark suite Current: 504b655 Previous: 90ba368 Ratio
csaf_2_0_tests/6.1.1 103721 ns/iter (± 892) 125287 ns/iter (± 190) 0.83
csaf_2_0_tests/6.1.2 41598 ns/iter (± 398) 50468 ns/iter (± 89) 0.82
csaf_2_0_tests/6.1.3 9865 ns/iter (± 83) 13029 ns/iter (± 21) 0.76
csaf_2_0_tests/6.1.4 22150 ns/iter (± 260) 28066 ns/iter (± 94) 0.79
csaf_2_0_tests/6.1.5 10828 ns/iter (± 72) 13654 ns/iter (± 11) 0.79
csaf_2_0_tests/6.1.6 29079 ns/iter (± 584) 39010 ns/iter (± 49) 0.75
csaf_2_0_tests/6.1.7 26213 ns/iter (± 292) 33309 ns/iter (± 32) 0.79
csaf_2_0_tests/6.1.8 69261 ns/iter (± 1846) 88449 ns/iter (± 313) 0.78
csaf_2_0_tests/6.1.9 55598 ns/iter (± 809) 66310 ns/iter (± 1602) 0.84
csaf_2_0_tests/6.1.10 114106 ns/iter (± 711) 128344 ns/iter (± 2142) 0.89
csaf_2_0_tests/6.1.11 11311 ns/iter (± 274) 13758 ns/iter (± 48) 0.82
csaf_2_0_tests/6.1.12 27791 ns/iter (± 165) 30213 ns/iter (± 24) 0.92
csaf_2_0_tests/6.1.13 27087 ns/iter (± 253) 32313 ns/iter (± 104) 0.84
csaf_2_0_tests/6.1.15 9661 ns/iter (± 94) 12376 ns/iter (± 853) 0.78
csaf_2_0_tests/6.1.16 38242 ns/iter (± 336) 48775 ns/iter (± 463) 0.78
csaf_2_0_tests/6.1.17 11325 ns/iter (± 361) 13483 ns/iter (± 37) 0.84
csaf_2_0_tests/6.1.18 13426 ns/iter (± 183) 16046 ns/iter (± 48) 0.84
csaf_2_0_tests/6.1.19 13203 ns/iter (± 117) 15763 ns/iter (± 27) 0.84
csaf_2_0_tests/6.1.20 10971 ns/iter (± 128) 13485 ns/iter (± 62) 0.81
csaf_2_0_tests/6.1.21 40852 ns/iter (± 412) 53517 ns/iter (± 71) 0.76
csaf_2_0_tests/6.1.22 47447 ns/iter (± 371) 65653 ns/iter (± 367) 0.72
csaf_2_0_tests/6.1.23 12459 ns/iter (± 158) 15737 ns/iter (± 21) 0.79
csaf_2_0_tests/6.1.24 12828 ns/iter (± 71) 15308 ns/iter (± 36) 0.84
csaf_2_0_tests/6.1.25 29723 ns/iter (± 178) 35743 ns/iter (± 108) 0.83
csaf_2_0_tests/6.1.26 16427 ns/iter (± 201) 20087 ns/iter (± 33) 0.82
csaf_2_0_tests/6.1.27.1 10484 ns/iter (± 158) 13515 ns/iter (± 83) 0.78
csaf_2_0_tests/6.1.27.2 10344 ns/iter (± 87) 13483 ns/iter (± 8) 0.77
csaf_2_0_tests/6.1.27.3 9815 ns/iter (± 115) 13184 ns/iter (± 55) 0.74
csaf_2_0_tests/6.1.27.4 9477 ns/iter (± 51) 13368 ns/iter (± 19) 0.71
csaf_2_0_tests/6.1.27.5 10025 ns/iter (± 73) 13812 ns/iter (± 33) 0.73
csaf_2_0_tests/6.1.27.6 9663 ns/iter (± 546) 13386 ns/iter (± 50) 0.72
csaf_2_0_tests/6.1.27.7 9808 ns/iter (± 107) 12402 ns/iter (± 39) 0.79
csaf_2_0_tests/6.1.27.8 9959 ns/iter (± 184) 12660 ns/iter (± 16) 0.79
csaf_2_0_tests/6.1.27.9 20812 ns/iter (± 64) 25435 ns/iter (± 32) 0.82
csaf_2_0_tests/6.1.27.10 10886 ns/iter (± 98) 13970 ns/iter (± 68) 0.78
csaf_2_0_tests/6.1.27.11 10344 ns/iter (± 170) 13110 ns/iter (± 13) 0.79
csaf_2_0_tests/6.1.28 20671 ns/iter (± 566) 24597 ns/iter (± 23) 0.84
csaf_2_0_tests/6.1.29 9954 ns/iter (± 209) 12488 ns/iter (± 26) 0.80
csaf_2_0_tests/6.1.30 34413 ns/iter (± 304) 45131 ns/iter (± 88) 0.76
csaf_2_0_tests/6.1.31 29120 ns/iter (± 195) 34119 ns/iter (± 44) 0.85
csaf_2_0_tests/6.1.32 10003 ns/iter (± 37) 12678 ns/iter (± 36) 0.79
csaf_2_0_tests/6.1.33 15697 ns/iter (± 121) 19541 ns/iter (± 38) 0.80
csaf_2_0_tests/6.2.1 129389 ns/iter (± 1289) 149650 ns/iter (± 1175) 0.86
csaf_2_0_tests/6.2.2 17643 ns/iter (± 74) 20758 ns/iter (± 33) 0.85
csaf_2_0_tests/6.2.3 16838 ns/iter (± 144) 20063 ns/iter (± 39) 0.84
csaf_2_0_tests/6.2.4 16928 ns/iter (± 191) 19998 ns/iter (± 32) 0.85
csaf_2_0_tests/6.2.5 46780 ns/iter (± 814) 60416 ns/iter (± 51) 0.77
csaf_2_0_tests/6.2.6 46831 ns/iter (± 669) 60991 ns/iter (± 119) 0.77
csaf_2_0_tests/6.2.7 14074 ns/iter (± 65) 17020 ns/iter (± 19) 0.83
csaf_2_0_tests/6.2.8 31724 ns/iter (± 145) 38054 ns/iter (± 3123) 0.83
csaf_2_0_tests/6.2.9 31948 ns/iter (± 232) 37715 ns/iter (± 207) 0.85
csaf_2_0_tests/6.2.10 23058 ns/iter (± 356) 29195 ns/iter (± 111) 0.79
csaf_2_0_tests/6.2.11 115412 ns/iter (± 1422) 160812 ns/iter (± 757) 0.72
csaf_2_0_tests/6.2.12 30275 ns/iter (± 966) 35407 ns/iter (± 193) 0.86
csaf_2_0_tests/6.2.13 637624 ns/iter (± 12047) 785786 ns/iter (± 3265) 0.81
csaf_2_0_tests/6.2.14 41921 ns/iter (± 509) 44763 ns/iter (± 39) 0.94
csaf_2_0_tests/6.2.15 32173 ns/iter (± 230) 36283 ns/iter (± 53) 0.89
csaf_2_0_tests/6.2.16 38158 ns/iter (± 336) 45202 ns/iter (± 1534) 0.84
csaf_2_0_tests/6.2.17 14234 ns/iter (± 103) 17634 ns/iter (± 97) 0.81
csaf_2_0_tests/6.2.18 23787 ns/iter (± 169) 28690 ns/iter (± 38) 0.83
csaf_2_0_tests/6.2.19 17440 ns/iter (± 111) 21106 ns/iter (± 443) 0.83
csaf_2_0_tests/6.2.20 1235838 ns/iter (± 4987) 1665827 ns/iter (± 3472) 0.74
csaf_2_0_tests/6.3.1 36306 ns/iter (± 269) 43753 ns/iter (± 123) 0.83
csaf_2_0_tests/6.3.2 23880 ns/iter (± 431) 27830 ns/iter (± 31) 0.86
csaf_2_0_tests/6.3.3 23681 ns/iter (± 203) 28191 ns/iter (± 48) 0.84
csaf_2_0_tests/6.3.4 29279 ns/iter (± 312) 34753 ns/iter (± 608) 0.84
csaf_2_0_tests/6.3.5 37393 ns/iter (± 220) 44543 ns/iter (± 226) 0.84
csaf_2_0_tests/6.3.6 16966 ns/iter (± 127) 20532 ns/iter (± 51) 0.83
csaf_2_0_tests/6.3.7 17158 ns/iter (± 112) 21066 ns/iter (± 607) 0.81
csaf_2_0_tests/6.3.8 17223 ns/iter (± 855) 20363 ns/iter (± 174) 0.85
csaf_2_0_tests/6.3.9 32373 ns/iter (± 186) 35942 ns/iter (± 732) 0.90
csaf_2_0_tests/6.3.10 28511 ns/iter (± 394) 32491 ns/iter (± 181) 0.88
csaf_2_0_tests/6.3.11 29543 ns/iter (± 117) 34146 ns/iter (± 114) 0.87
csaf_2_1_tests/6.1.1 510659 ns/iter (± 2218) 641521 ns/iter (± 1732) 0.80
csaf_2_1_tests/6.1.2 197462 ns/iter (± 1140) 247420 ns/iter (± 584) 0.80
csaf_2_1_tests/6.1.3 57754 ns/iter (± 2232) 74072 ns/iter (± 102) 0.78
csaf_2_1_tests/6.1.4 99425 ns/iter (± 2087) 132242 ns/iter (± 769) 0.75
csaf_2_1_tests/6.1.5 39144 ns/iter (± 176) 49549 ns/iter (± 223) 0.79
csaf_2_1_tests/6.1.6 90913 ns/iter (± 1062) 122231 ns/iter (± 242) 0.74
csaf_2_1_tests/6.1.7 62339 ns/iter (± 789) 73524 ns/iter (± 326) 0.85
csaf_2_1_tests/6.1.8 61775 ns/iter (± 356) 74915 ns/iter (± 119) 0.82
csaf_2_1_tests/6.1.9 414859 ns/iter (± 2465) 495776 ns/iter (± 1404) 0.84
csaf_2_1_tests/6.1.10 558351 ns/iter (± 3049) 625959 ns/iter (± 18525) 0.89
csaf_2_1_tests/6.1.11 67198 ns/iter (± 907) 81631 ns/iter (± 456) 0.82
csaf_2_1_tests/6.1.12 76251 ns/iter (± 1289) 87097 ns/iter (± 333) 0.88
csaf_2_1_tests/6.1.13 163871 ns/iter (± 1033) 196855 ns/iter (± 1735) 0.83
csaf_2_1_tests/6.1.15 35125 ns/iter (± 285) 44260 ns/iter (± 2366) 0.79
csaf_2_1_tests/6.1.16 115249 ns/iter (± 924) 161164 ns/iter (± 862) 0.72
csaf_2_1_tests/6.1.17 39209 ns/iter (± 387) 49171 ns/iter (± 252) 0.80
csaf_2_1_tests/6.1.18 45306 ns/iter (± 423) 55636 ns/iter (± 470) 0.81
csaf_2_1_tests/6.1.19 42923 ns/iter (± 393) 54165 ns/iter (± 125) 0.79
csaf_2_1_tests/6.1.20 38393 ns/iter (± 418) 48891 ns/iter (± 47) 0.79
csaf_2_1_tests/6.1.21 125238 ns/iter (± 1235) 171285 ns/iter (± 607) 0.73
csaf_2_1_tests/6.1.22 142850 ns/iter (± 675) 200746 ns/iter (± 210) 0.71
csaf_2_1_tests/6.1.23 43492 ns/iter (± 438) 54679 ns/iter (± 63) 0.80
csaf_2_1_tests/6.1.24 41858 ns/iter (± 306) 51609 ns/iter (± 137) 0.81
csaf_2_1_tests/6.1.25 145406 ns/iter (± 1552) 173553 ns/iter (± 258) 0.84
csaf_2_1_tests/6.1.26 59152 ns/iter (± 527) 74841 ns/iter (± 90) 0.79
csaf_2_1_tests/6.1.27.1 38917 ns/iter (± 451) 49747 ns/iter (± 41) 0.78
csaf_2_1_tests/6.1.27.2 38674 ns/iter (± 353) 50022 ns/iter (± 69) 0.77
csaf_2_1_tests/6.1.27.3 39663 ns/iter (± 216) 50579 ns/iter (± 26) 0.78
csaf_2_1_tests/6.1.27.4 35661 ns/iter (± 314) 50657 ns/iter (± 155) 0.70
csaf_2_1_tests/6.1.27.5 37153 ns/iter (± 380) 51637 ns/iter (± 59) 0.72
csaf_2_1_tests/6.1.27.6 36170 ns/iter (± 975) 51391 ns/iter (± 249) 0.70
csaf_2_1_tests/6.1.27.7 37293 ns/iter (± 378) 47579 ns/iter (± 1862) 0.78
csaf_2_1_tests/6.1.27.8 37394 ns/iter (± 170) 46245 ns/iter (± 60) 0.81
csaf_2_1_tests/6.1.27.9 55519 ns/iter (± 289) 68879 ns/iter (± 115) 0.81
csaf_2_1_tests/6.1.27.10 37028 ns/iter (± 330) 47841 ns/iter (± 351) 0.77
csaf_2_1_tests/6.1.27.11 39914 ns/iter (± 458) 49737 ns/iter (± 140) 0.80
csaf_2_1_tests/6.1.27.12 38712 ns/iter (± 211) 49216 ns/iter (± 271) 0.79
csaf_2_1_tests/6.1.27.13 59445 ns/iter (± 1154) 74314 ns/iter (± 81) 0.80
csaf_2_1_tests/6.1.27.14 40462 ns/iter (± 480) 51110 ns/iter (± 108) 0.79
csaf_2_1_tests/6.1.27.15 39619 ns/iter (± 416) 51266 ns/iter (± 38) 0.77
csaf_2_1_tests/6.1.27.16 39897 ns/iter (± 242) 50271 ns/iter (± 105) 0.79
csaf_2_1_tests/6.1.27.17 40662 ns/iter (± 413) 53388 ns/iter (± 554) 0.76
csaf_2_1_tests/6.1.27.18 43111 ns/iter (± 393) 55612 ns/iter (± 117) 0.78
csaf_2_1_tests/6.1.27.19 43907 ns/iter (± 279) 54326 ns/iter (± 68) 0.81
csaf_2_1_tests/6.1.28 59699 ns/iter (± 441) 74153 ns/iter (± 86) 0.81
csaf_2_1_tests/6.1.29 38048 ns/iter (± 380) 47200 ns/iter (± 1696) 0.81
csaf_2_1_tests/6.1.30 112024 ns/iter (± 1470) 151333 ns/iter (± 958) 0.74
csaf_2_1_tests/6.1.31 141601 ns/iter (± 1357) 167406 ns/iter (± 354) 0.85
csaf_2_1_tests/6.1.32 38634 ns/iter (± 432) 47929 ns/iter (± 141) 0.81
csaf_2_1_tests/6.1.33 68006 ns/iter (± 277) 86505 ns/iter (± 92) 0.79
csaf_2_1_tests/6.1.34 46264 ns/iter (± 470) 57922 ns/iter (± 134) 0.80
csaf_2_1_tests/6.1.35 63265 ns/iter (± 531) 84881 ns/iter (± 529) 0.75
csaf_2_1_tests/6.1.36 68658 ns/iter (± 412) 87421 ns/iter (± 122) 0.79
csaf_2_1_tests/6.1.37 68759 ns/iter (± 379) 87775 ns/iter (± 457) 0.78
csaf_2_1_tests/6.1.38 36767 ns/iter (± 267) 48298 ns/iter (± 339) 0.76
csaf_2_1_tests/6.1.39 36951 ns/iter (± 562) 48863 ns/iter (± 219) 0.76
csaf_2_1_tests/6.1.40 37390 ns/iter (± 479) 48515 ns/iter (± 145) 0.77
csaf_2_1_tests/6.1.41 36808 ns/iter (± 370) 48995 ns/iter (± 417) 0.75
csaf_2_1_tests/6.1.42 174944 ns/iter (± 1645) 206448 ns/iter (± 7076) 0.85
csaf_2_1_tests/6.1.43 140604 ns/iter (± 1821) 169685 ns/iter (± 1144) 0.83
csaf_2_1_tests/6.1.44 144685 ns/iter (± 723) 170364 ns/iter (± 1630) 0.85
csaf_2_1_tests/6.1.45 115888 ns/iter (± 1946) 172191 ns/iter (± 315) 0.67
csaf_2_1_tests/6.1.46 219747 ns/iter (± 4402) 278984 ns/iter (± 473) 0.79
csaf_2_1_tests/6.1.47 336466 ns/iter (± 2762) 424974 ns/iter (± 685) 0.79
csaf_2_1_tests/6.1.48 74262 ns/iter (± 1481) 91459 ns/iter (± 150) 0.81
csaf_2_1_tests/6.1.49 74483 ns/iter (± 681) 91763 ns/iter (± 3892) 0.81
csaf_2_1_tests/6.1.50 74129 ns/iter (± 792) 92483 ns/iter (± 349) 0.80
csaf_2_1_tests/6.1.51 120614 ns/iter (± 8463) 178412 ns/iter (± 674) 0.68
csaf_2_1_tests/6.1.52 125812 ns/iter (± 2071) 183300 ns/iter (± 1261) 0.69
csaf_2_1_tests/6.1.53 45482 ns/iter (± 424) 57627 ns/iter (± 169) 0.79
csaf_2_1_tests/6.1.54 54582 ns/iter (± 471) 66445 ns/iter (± 215) 0.82
csaf_2_1_tests/6.1.55 53349 ns/iter (± 746) 68409 ns/iter (± 1642) 0.78
csaf_2_1_tests/6.1.56 75433 ns/iter (± 768) 102301 ns/iter (± 613) 0.74
csaf_2_1_tests/6.1.57 108720 ns/iter (± 3875) 143123 ns/iter (± 341) 0.76
csaf_2_1_tests/6.1.58 76561 ns/iter (± 1551) 90117 ns/iter (± 153) 0.85
csaf_2_1_tests/6.1.59 77266 ns/iter (± 827) 95196 ns/iter (± 133) 0.81
csaf_2_1_tests/6.1.60.1 60348 ns/iter (± 619) 73018 ns/iter (± 45) 0.83
csaf_2_1_tests/6.1.60.2 60587 ns/iter (± 507) 72855 ns/iter (± 188) 0.83
csaf_2_1_tests/6.1.60.3 60610 ns/iter (± 433) 72716 ns/iter (± 60) 0.83
csaf_2_1_tests/6.1.61 143561 ns/iter (± 2335) 176910 ns/iter (± 604) 0.81
csaf_2_1_tests/6.2.1 589025 ns/iter (± 4927) 724381 ns/iter (± 2171) 0.81
csaf_2_1_tests/6.2.2 66919 ns/iter (± 521) 79479 ns/iter (± 153) 0.84
csaf_2_1_tests/6.2.3 63855 ns/iter (± 1041) 76974 ns/iter (± 297) 0.83
csaf_2_1_tests/6.2.4 57365 ns/iter (± 322) 69793 ns/iter (± 110) 0.82
csaf_2_1_tests/6.2.5 150176 ns/iter (± 1424) 205496 ns/iter (± 473) 0.73
csaf_2_1_tests/6.2.6 149033 ns/iter (± 1540) 206454 ns/iter (± 1380) 0.72
csaf_2_1_tests/6.2.7 53634 ns/iter (± 1052) 62332 ns/iter (± 495) 0.86
csaf_2_1_tests/6.2.8 153122 ns/iter (± 1508) 183043 ns/iter (± 18824) 0.84
csaf_2_1_tests/6.2.9 154810 ns/iter (± 2488) 184463 ns/iter (± 1445) 0.84
csaf_2_1_tests/6.2.11 391781 ns/iter (± 3160) 592249 ns/iter (± 856) 0.66
csaf_2_1_tests/6.2.12 108003 ns/iter (± 1191) 127391 ns/iter (± 5429) 0.85
csaf_2_1_tests/6.2.13 3299084 ns/iter (± 27293) 3820553 ns/iter (± 37973) 0.86
csaf_2_1_tests/6.2.14 116535 ns/iter (± 720) 131791 ns/iter (± 199) 0.88
csaf_2_1_tests/6.2.15 98681 ns/iter (± 3567) 113292 ns/iter (± 96) 0.87
csaf_2_1_tests/6.2.16 188527 ns/iter (± 1341) 225715 ns/iter (± 447) 0.84
csaf_2_1_tests/6.2.17 58418 ns/iter (± 2196) 72572 ns/iter (± 104) 0.80
csaf_2_1_tests/6.2.18 126509 ns/iter (± 1011) 154059 ns/iter (± 256) 0.82
csaf_2_1_tests/6.2.19 68030 ns/iter (± 545) 85358 ns/iter (± 100) 0.80
csaf_2_1_tests/6.2.20 6860723 ns/iter (± 112994) 10401937 ns/iter (± 88926) 0.66
csaf_2_1_tests/6.2.21 274906 ns/iter (± 3617) 372276 ns/iter (± 968) 0.74
csaf_2_1_tests/6.2.22 132520 ns/iter (± 6867) 170209 ns/iter (± 218) 0.78
csaf_2_1_tests/6.2.23 71965 ns/iter (± 1641) 87087 ns/iter (± 75) 0.83
csaf_2_1_tests/6.2.24 191962 ns/iter (± 3351) 256864 ns/iter (± 226) 0.75
csaf_2_1_tests/6.2.25 70816 ns/iter (± 853) 88449 ns/iter (± 94) 0.80
csaf_2_1_tests/6.2.26 71175 ns/iter (± 782) 89637 ns/iter (± 8356) 0.79
csaf_2_1_tests/6.2.27 69089 ns/iter (± 774) 87565 ns/iter (± 783) 0.79
csaf_2_1_tests/6.2.28 57393 ns/iter (± 224) 74128 ns/iter (± 105) 0.77
csaf_2_1_tests/6.2.29 57525 ns/iter (± 600) 74030 ns/iter (± 150) 0.78
csaf_2_1_tests/6.2.30 58547 ns/iter (± 498) 74923 ns/iter (± 97) 0.78
csaf_2_1_tests/6.2.31 178435 ns/iter (± 1267) 217372 ns/iter (± 348) 0.82
csaf_2_1_tests/6.2.32 271432 ns/iter (± 2525) 325563 ns/iter (± 378) 0.83
csaf_2_1_tests/6.2.33 182454 ns/iter (± 1331) 238916 ns/iter (± 433) 0.76
csaf_2_1_tests/6.2.34 70707 ns/iter (± 681) 89816 ns/iter (± 787) 0.79
csaf_2_1_tests/6.2.35 72567 ns/iter (± 568) 89913 ns/iter (± 428) 0.81
csaf_2_1_tests/6.2.36 72082 ns/iter (± 936) 90316 ns/iter (± 112) 0.80
csaf_2_1_tests/6.2.37 72218 ns/iter (± 420) 90624 ns/iter (± 324) 0.80
csaf_2_1_tests/6.2.38 80201 ns/iter (± 1010) 103671 ns/iter (± 545) 0.77
csaf_2_1_tests/6.2.39.1 59964 ns/iter (± 491) 74013 ns/iter (± 123) 0.81
csaf_2_1_tests/6.2.39.2 60152 ns/iter (± 226) 74050 ns/iter (± 269) 0.81
csaf_2_1_tests/6.2.39.3 60800 ns/iter (± 355) 74305 ns/iter (± 325) 0.82
csaf_2_1_tests/6.2.39.4 60393 ns/iter (± 505) 74622 ns/iter (± 110) 0.81
csaf_2_1_tests/6.2.39.5 60147 ns/iter (± 668) 73006 ns/iter (± 34) 0.82
csaf_2_1_tests/6.2.40 74789 ns/iter (± 1059) 91387 ns/iter (± 105) 0.82
csaf_2_1_tests/6.2.41 142456 ns/iter (± 1655) 203760 ns/iter (± 185) 0.70
csaf_2_1_tests/6.2.42 74729 ns/iter (± 973) 91989 ns/iter (± 122) 0.81
csaf_2_1_tests/6.2.43 75103 ns/iter (± 4040) 92283 ns/iter (± 273) 0.81
csaf_2_1_tests/6.2.44 75412 ns/iter (± 2029) 92610 ns/iter (± 110) 0.81
csaf_2_1_tests/6.2.45 75882 ns/iter (± 1074) 93237 ns/iter (± 566) 0.81
csaf_2_1_tests/6.2.46 76768 ns/iter (± 1218) 93656 ns/iter (± 210) 0.82
csaf_2_1_tests/6.2.47 221033 ns/iter (± 3070) 322366 ns/iter (± 419) 0.69
csaf_2_1_tests/6.2.48 143855 ns/iter (± 1408) 171174 ns/iter (± 249) 0.84
csaf_2_1_tests/6.2.49 78092 ns/iter (± 609) 94618 ns/iter (± 141) 0.83
csaf_2_1_tests/6.2.50.1 60981 ns/iter (± 911) 72771 ns/iter (± 655) 0.84
csaf_2_1_tests/6.2.50.2 62465 ns/iter (± 706) 74675 ns/iter (± 1882) 0.84
csaf_2_1_tests/6.2.50.3 61493 ns/iter (± 1316) 74033 ns/iter (± 74) 0.83
csaf_2_1_tests/6.2.51 80254 ns/iter (± 2370) 94926 ns/iter (± 257) 0.85
csaf_2_1_tests/6.2.52 168689 ns/iter (± 2514) 203817 ns/iter (± 468) 0.83
csaf_2_1_tests/6.2.53 69809 ns/iter (± 669) 85391 ns/iter (± 8288) 0.82
csaf_2_1_tests/6.2.54.1 62211 ns/iter (± 590) 72468 ns/iter (± 79) 0.86
csaf_2_1_tests/6.2.54.2 59778 ns/iter (± 428) 73144 ns/iter (± 122) 0.82
csaf_2_1_tests/6.2.54.3 60633 ns/iter (± 737) 74002 ns/iter (± 147) 0.82
csaf_2_1_tests/6.2.54.4 60966 ns/iter (± 741) 72763 ns/iter (± 94) 0.84
csaf_2_1_tests/6.3.1 62266 ns/iter (± 1852) 74593 ns/iter (± 127) 0.83
csaf_2_1_tests/6.3.2 84645 ns/iter (± 1737) 97625 ns/iter (± 228) 0.87
csaf_2_1_tests/6.3.3 63251 ns/iter (± 999) 74067 ns/iter (± 395) 0.85
csaf_2_1_tests/6.3.4 62539 ns/iter (± 734) 74881 ns/iter (± 125) 0.84
csaf_2_1_tests/6.3.5 62778 ns/iter (± 3107) 73677 ns/iter (± 84) 0.85
csaf_2_1_tests/6.3.6 63598 ns/iter (± 1375) 74623 ns/iter (± 513) 0.85
csaf_2_1_tests/6.3.7 62761 ns/iter (± 905) 76405 ns/iter (± 29) 0.82
csaf_2_1_tests/6.3.8 62247 ns/iter (± 2150) 75541 ns/iter (± 83) 0.82
csaf_2_1_tests/6.3.9 166594 ns/iter (± 2145) 190604 ns/iter (± 314) 0.87
csaf_2_1_tests/6.3.10 75784 ns/iter (± 496) 93050 ns/iter (± 139) 0.81
csaf_2_1_tests/6.3.11 76548 ns/iter (± 802) 93344 ns/iter (± 130) 0.82
csaf_2_1_tests/6.3.12 197149 ns/iter (± 2906) 244718 ns/iter (± 950) 0.81
csaf_2_1_tests/6.3.13 76632 ns/iter (± 639) 93773 ns/iter (± 155) 0.82
csaf_2_1_tests/6.3.14 76136 ns/iter (± 358) 94295 ns/iter (± 437) 0.81
csaf_2_1_tests/6.3.15 76950 ns/iter (± 2333) 94490 ns/iter (± 252) 0.81
csaf_2_1_tests/6.3.16 77068 ns/iter (± 1292) 94645 ns/iter (± 762) 0.81
csaf_2_1_tests/6.3.17 89394 ns/iter (± 935) 94959 ns/iter (± 177) 0.94
csaf_2_1_tests/6.3.18 87183 ns/iter (± 770) 104716 ns/iter (± 278) 0.83
csaf_2_1_tests/6.3.19.1 60731 ns/iter (± 1246) 74289 ns/iter (± 2728) 0.82
csaf_2_1_tests/6.3.19.2 60420 ns/iter (± 642) 73097 ns/iter (± 577) 0.83
csaf_2_1_tests/6.3.19.3 60379 ns/iter (± 767) 73045 ns/iter (± 70) 0.83
csaf_2_1_tests/6.3.19.4 61664 ns/iter (± 1430) 72737 ns/iter (± 95) 0.85
csaf_2_1_tests/6.3.19.5 61000 ns/iter (± 1678) 73065 ns/iter (± 48) 0.83
csaf_2_1_tests/6.3.20 87271 ns/iter (± 1365) 106131 ns/iter (± 513) 0.82
csaf_2_1_tests/6.3.21.1 60969 ns/iter (± 701) 72733 ns/iter (± 65) 0.84
csaf_2_1_tests/6.3.21.2 61018 ns/iter (± 691) 72795 ns/iter (± 379) 0.84
csaf_2_1_tests/6.3.21.3 61158 ns/iter (± 722) 73070 ns/iter (± 198) 0.84
csaf_2_1_tests/6.3.21.4 60146 ns/iter (± 475) 72756 ns/iter (± 97) 0.83
csaf_2_1_tests/6.3.21.5 59787 ns/iter (± 408) 75815 ns/iter (± 294) 0.79
csaf_2_1_tests/6.3.21.6 60461 ns/iter (± 588) 72746 ns/iter (± 297) 0.83
csaf_2_1_tests/6.3.21.7 61528 ns/iter (± 1087) 73359 ns/iter (± 64) 0.84
csaf_2_1_tests/6.3.21.8 60791 ns/iter (± 732) 73039 ns/iter (± 83) 0.83
csaf_2_1_tests/6.3.21.9 60849 ns/iter (± 725) 73852 ns/iter (± 5943) 0.82
csaf_2_1_tests/6.3.22 77616 ns/iter (± 909) 110636 ns/iter (± 436) 0.70
full_validation/csaf_2_0_full_preset 6413619 ns/iter (± 115633) 7287407 ns/iter (± 33947) 0.88
full_validation/csaf_2_1_full_preset 46349858 ns/iter (± 544046) 52705951 ns/iter (± 194488) 0.88
parse_only/csaf_2_0 1006858 ns/iter (± 15851) 1190544 ns/iter (± 12834) 0.85
parse_only/csaf_2_1 5079093 ns/iter (± 106577) 5938640 ns/iter (± 18818) 0.86
typed_parse/csaf_2_0 1772866 ns/iter (± 18136) 2029309 ns/iter (± 6395) 0.87
typed_parse/csaf_2_1 8459533 ns/iter (± 64701) 9604711 ns/iter (± 9197) 0.88

This comment was automatically generated by workflow using github-action-benchmark.

peinjoh added 4 commits May 22, 2026 00:58
# Conflicts:
#	csaf-rs/src/csaf/traits/product_tree_trait.rs
#	csaf-rs/src/csaf/traits/shared/note_trait.rs
#	csaf-rs/src/csaf/traits/vulnerabilities/remediation_trait.rs
@peinjoh

peinjoh commented Aug 6, 2026

Copy link
Copy Markdown
Contributor Author

We will also partly need this for 6.3.6 after 6.3.7 (#789) is done. Some of the traits added here contain urls that need to be added and validated there.

peinjoh added 3 commits August 6, 2026 09:35
# Conflicts:
#	csaf-rs/src/csaf/traits/document/mod.rs
#	csaf-rs/src/csaf/traits/document_trait.rs
#	csaf-rs/src/csaf/traits/shared/references_trait.rs
#	csaf-rs/src/csaf/traits/vulnerabilities/remediation_trait.rs
#	csaf-rs/src/csaf/traits/vulnerabilities_trait.rs
#	csaf-rs/src/csaf_traits.rs
#	csaf-rs/src/validations/test_6_2_11.rs
@peinjoh
peinjoh requested a lite review from Copilot August 6, 2026 07:46
@peinjoh
peinjoh marked this pull request as ready for review August 6, 2026 07:46

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 18 out of 18 changed files in this pull request and generated no new comments.

Suppressed comments (1)

csaf-rs/src/csaf/traits/document/generator_trait.rs:17

  • GeneratorTrait is publicly re-exported (via csaf_traits.rs), so adding an associated type and a required method is a semver-breaking change for any downstream crates that implement this trait (and it also makes the trait non-object-safe). If this is intentional, please ensure the next release bumps the appropriate version and/or documents the breaking change; if it’s not intentional, consider introducing a new extension trait (e.g., GeneratorEngineTrait) instead of changing the existing public trait.
pub trait GeneratorTrait: WithOptionalDate {
    /// Type representing the generation engine
    type EngineType: EngineTrait;

    /// Returns the engine that generated this document
    fn get_engine(&self) -> &Self::EngineType;
}

@peinjoh

peinjoh commented Aug 6, 2026

Copy link
Copy Markdown
Contributor Author

@tziemek @aschierl-xitaso pinging for review

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 18 out of 18 changed files in this pull request and generated no new comments.

Suppressed comments (3)

csaf-rs/src/csaf/traits/document/aggregate_severity_trait.rs:1

  • impl_optional_str_field_getter/impl_str_field_getter are re-exported from crate::csaf::traits::util, and that is the import style used by most other trait modules. Importing them via util::impl_macros is inconsistent and couples this file to an internal module.
use crate::csaf::traits::util::impl_macros::{impl_optional_str_field_getter, impl_str_field_getter};

csaf-rs/src/csaf/traits/document/tracking_trait.rs:106

  • TrackingTrait::get_aliases adds new behavior (mapping optional alias strings into &strs), but this file’s test module only covers canonical_filename_from_id. Adding a small unit test for get_aliases (both None and Some cases, for CSAF 2.0 and 2.1) would help prevent regressions as the schema types evolve.
    fn get_version(&self) -> CsafVersionNumber;

    fn get_aliases(&self) -> Option<Vec<&str>>;
}

csaf-rs/src/csaf/traits/document/distribution_trait.rs:1

  • This file imports impl_optional_str_field_getter from traits::util::impl_macros, but the util module already re-exports this macro and other trait files import it directly from traits::util. Importing from the re-export keeps the pattern consistent and avoids reaching into the internal impl_macros module.
use crate::csaf::traits::util::impl_macros::impl_optional_str_field_getter;

@peinjoh
peinjoh merged commit 70a4265 into main Aug 14, 2026
17 checks passed
@peinjoh
peinjoh deleted the feat/add-6-3-8-required-fields branch August 14, 2026 10:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants