@@ -1032,13 +1032,25 @@ jobs:
10321032 # rather than only running here against a real bomsh trace.
10331033 run : python3 scripts/bomsh_verify.py
10341034
1035- # The full provenance bundle - the high-value artefact of the whole
1036- # PR, the one a CRA reviewer or downstream packager wants to download.
1037- # MUST be uploaded BEFORE the `make clean` step below, which deletes
1038- # everything by design. `if: always()` so even when the assertion
1039- # above fails (which is when triage matters most), the bundle ships.
1035+ # Split into two artefacts deliberately:
10401036 #
1041- # Contents:
1037+ # bomsh-omnibor-${{ github.sha }} (90-day retention)
1038+ # The provenance bundle a CRA reviewer or downstream packager
1039+ # actually wants. Small, signed-meaningful, kept long.
1040+ #
1041+ # bomsh-trace-diag-${{ github.sha }} (14-day retention)
1042+ # The raw bomtrace3 syscall trace + bomsh config. ~3 MB,
1043+ # useful only for diagnosing trace gaps (e.g. a build step
1044+ # that escaped ptrace) -- not part of the provenance proof.
1045+ # Short retention because it stops being useful as soon as
1046+ # you've finished triaging the run that produced it.
1047+ #
1048+ # Both MUST upload BEFORE the `make clean` step below, which
1049+ # deletes everything by design. `if: always()` so even when an
1050+ # assertion above fails (which is when triage matters most),
1051+ # the bundles ship.
1052+ #
1053+ # Provenance bundle contents:
10421054 # omnibor/ - OmniBOR Artifact Dependency Graph
10431055 # (objects/ + metadata/bomsh/*),
10441056 # content-addressed by gitoid; the
@@ -1049,11 +1061,6 @@ jobs:
10491061 # against omnibor.* to confirm only
10501062 # the externalRef was added).
10511063 # wolfssl-*.cdx.json - CycloneDX equivalent.
1052- # bomsh_raw_logfile.sha1 - raw bomtrace3 syscall trace, for
1053- # debugging trace gaps (e.g. a build
1054- # step that escaped ptrace).
1055- # _bomsh.conf - 1-line config passed to bomtrace3
1056- # -c at trace time.
10571064 - name : Upload OmniBOR graph + bomsh-enriched SBOMs
10581065 if : always()
10591066 uses : actions/upload-artifact@v4
@@ -1064,10 +1071,25 @@ jobs:
10641071 omnibor.wolfssl-*.spdx.json
10651072 wolfssl-*.spdx.json
10661073 wolfssl-*.cdx.json
1074+ if-no-files-found : warn
1075+ retention-days : 90
1076+
1077+ - name : Upload bomsh trace diagnostics
1078+ # Diagnostic-only, short retention. Kept separate so the
1079+ # provenance bundle above stays slim for downstream consumers
1080+ # who don't need to debug ptrace gaps. `_bomsh.artefact` is
1081+ # included here (not in the provenance bundle) because it is
1082+ # a CI-internal pointer file, not part of the SBOM contract.
1083+ if : always()
1084+ uses : actions/upload-artifact@v4
1085+ with :
1086+ name : bomsh-trace-diag-${{ github.sha }}
1087+ path : |
10671088 bomsh_raw_logfile.sha1
10681089 _bomsh.conf
1090+ _bomsh.artefact
10691091 if-no-files-found : warn
1070- retention-days : 90
1092+ retention-days : 14
10711093
10721094 - name : make clean removes all bomsh + sbom artefacts
10731095 # Regression guard: if a future change adds an output to either
0 commit comments