Documentation Index
Fetch the complete documentation index at: https://docs.roboticks.io/llms.txt
Use this file to discover all available pages before exploring further.
SBOM (SPDX & CycloneDX)
A Software Bill of Materials lists every component (and its version) that goes into a released binary. Auditors increasingly require one — EU MR Annex IV.6, the EU Cyber Resilience Act, US Executive Order 14028. Roboticks ingests SBOMs and embeds them in the per-release evidence pack so the auditor finds the answer without asking. Roboticks accepts both major SBOM formats:| Format | Spec | Producer examples |
|---|---|---|
| SPDX 2.3 (and 3.0 when finalised) | ISO/IEC 5962:2021 | syft, scancode, Mend, FOSSA |
| CycloneDX 1.4–1.6 | OWASP | syft, trivy, anchore, snyk |
Why an SBOM lands in the evidence pack
Regulators ask “what’s in the binary you shipped to my factory?” and they want a machine-readable answer pinned to the release tag. The Roboticks evidence pack already contains:- Source state (git SHA, commit signature)
- Test results (JUnit, MCAP)
- Requirement coverage snapshot (ReqIF)
- Findings (SARIF + vendor reports)
- What was tested? — JUnit + traceability matrix
- What were the requirements? — ReqIF snapshot
- What runtime behaviours did we capture? — MCAP attachments
- What components went into the binary? — SBOM
Upload an SBOM
--tool label is free-form for grouping in the dashboard.
Wire it into CI
- syft (CycloneDX)
- syft (SPDX)
- trivy
- Container image
CI recipe — SBOM on every release
--release flag pins the SBOM to the release tag — it ends up in that release’s evidence pack, even if you re-run the workflow later.
Where SBOMs appear
- Release detail view — a Supply chain panel shows component counts, license breakdown, and a CVE summary (via the vulnerability scan if
trivywas used). - Release evidence pack — the SBOM ships in:
- The PDF, as a Supply-Chain Appendix with component-list, license-table, and the CVE summary
- The ZIP, as raw
sbom.cdx.jsonandsbom.spdx.jsonfiles for downstream tooling
- Comparison — diff one release’s SBOM against the previous to spot newly introduced components.
Diffing SBOMs
--output json returns the structured diff including PURLs and license deltas.
License surfacing
Roboticks extracts SPDX license identifiers from both SBOM formats and surfaces:- Per-release license summary — total components per license
- Copyleft check — flags GPL/AGPL/LGPL components for review
- Unknown licenses — components syft/trivy couldn’t classify
release.license_policy.yaml lets you fail an evidence-pack generation if a forbidden license appears:
Provenance and signatures
If your SBOM is signed (in-toto, Cosign, or DSSE-wrapped), upload the signature alongside:Quotas
| Aspect | Limit |
|---|---|
| Components per SBOM | 100,000 |
| Upload size | 500 MB per file; gzip helpful at scale |
| SBOMs per release | unlimited; multiple uploads merge (latest-per---tool wins) |
Standards references
- SPDX: spdx.dev, spec ISO/IEC 5962:2021
- CycloneDX: cyclonedx.org, OWASP project
- NTIA minimum elements: ntia.gov/SBOM — what regulators expect
- CISA SBOM page: cisa.gov/sbom — US Executive Order context
- OpenSSF: openssf.org — supply-chain best practices
Troubleshooting
`SBOM schema validation failed`
`SBOM schema validation failed`
Confirm the format with
cyclonedx-cli validate or spdx-tools verify. Most validation failures stem from custom fields outside the spec.SBOM uploaded but not in the release evidence pack
SBOM uploaded but not in the release evidence pack
Use
--release <tag> on upload. Without it, the SBOM attaches to the current state, not the release-tagged state. You can re-attach:syft / trivy emit duplicate components
syft / trivy emit duplicate components
Both tools’ default modes can produce dupes when scanning a tree with multiple package managers (e.g., npm + pip). Pass
--exclude to narrow scope or merge SBOMs with cyclonedx-cli merge before upload.Next
OSS scanners
syft and trivy ship bundled.
Evidence packs
Where SBOMs end up.