Call-Paths And Build-Stage SBOM Inputs

This contract defines the Scanner inputs used when a runtime image is too slim to produce useful SBOM or call-path evidence by itself.

Metadata Contract

Scanner Worker reads these metadata keys before dependency reachability runs:

KeyPurpose
scanner.source.pathExplicit source checkout/root for call-graph extraction.
scanner.build_stage.rootfs.pathMaterialized build-stage filesystem root that still has manifests, lockfiles, project files, or installed dependency trees.
scanner.attached_sbom.pathCI-attached SBOM file to copy into the scan workspace instead of generating a build-stage SBOM.
scanner.attached_sbom.formatAttached SBOM format. Values containing spdx map to SPDX; all other values map to CycloneDX.
scanner.rootfs.pathRuntime filesystem root. Used to detect the empty static-runtime case.

The stage publishes these downstream metadata keys:

KeyPurpose
sbom.path / sbom.formatCanonical SBOM location consumed by dependency reachability.
reachability.callgraph.pathrichgraph-v1 call graph materialized from the source/build-stage call graph snapshot.
reachability.witness.pathDeterministic entrypoint-to-sink witness JSON.
reachability.witness.digestSHA-256 digest of the witness JSON artifact.
reachability.input.sourceattached-sbom or build-stage.
scanner.runtime.sbom.statusempty-runtime-image when the runtime root lacks supported manifests/installed npm tree and build-stage SBOM was used.
scanner.runtime.sbom.empty_reasonHuman-readable reason for the empty runtime SBOM fallback.

Supported Inputs

Witness Shape

reachability.witness.path points to a deterministic JSON document with:

This shape is policy-gate-consumable Scanner evidence. Sprint 019 (SPRINT_20260526_019_Scanner_reachability_live_forcing_function) wires the cross-module path live: the Scanner Worker’s ReachabilityPublishStageExecutor now (opt-in) posts the union graph to the ReachGraph WebService and uploads a canonical DependencyReachabilityReport JSON as a release-evidence packet, which the Release Orchestrator’s ReachabilityGateEvaluator reads back at promotion time. See:

Coverage Limits