OS Analyzer Evidence Semantics (Non-Language Scanners)

This document defines the evidence contract produced by OS/non-language analyzers (apk/dpkg/rpm/pacman + Windows/macOS OS analyzers) so downstream SBOM/attestation logic can rely on stable, deterministic semantics.

Evidence Paths

Examples:

Layer Attribution

Digest & Hashing Strategy

Default posture is avoid unbounded hashing:

Analyzer Warnings

OS analyzers may emit AnalyzerWarning entries (Code, Message) for partial/edge conditions (missing db, parse errors, unexpected layout).

Normalization rules (in OsPackageAnalyzerBase):

OS Analyzer Caching (Surface Cache)

Linux OS analyzers (apk/dpkg/rpm/pacman) support safe, deterministic reuse via ISurfaceCache:

Worker wiring:

RPM sqlite Reader Notes

When rpmdb.sqlite is present, the reader avoids SELECT * and column scanning:

Pacman (ALPM) Analyzer Notes

Pacman packages are emitted by StellaOps.Scanner.Analyzers.OS.Pacman.PacmanPackageAnalyzer.

Database layout

Parsed keys

%KEY%Surfaced as
%NAME%OSPackageRecord.Name
%VERSION%OSPackageRecord.Version (raw <pkgver>-<pkgrel>)
%ARCH%OSPackageRecord.Architecture (falls back to any when blank, matching ALPM’s noarch convention)
%LICENSE%OSPackageRecord.License joined with AND after ordinal sort
%PROVIDES%OSPackageRecord.Provides (deduplicated, ordinal-sorted)
%DEPENDS%OSPackageRecord.Depends (deduplicated, ordinal-sorted)
%REPLACES%vendorMetadata.replaces (comma-joined, ordinal-sorted)
%CONFLICTS%vendorMetadata.conflicts
%OPTDEPENDS%vendorMetadata.optDepends
%GROUPS%vendorMetadata.groups
%BASE%OSPackageRecord.SourcePackage and vendorMetadata.base
%DESC%/%URL%/%PACKAGER%/%BUILDDATE%/%INSTALLDATE%/%SIZE%/%REASON%/%VALIDATION%vendorMetadata.{description,homepage,packager,buildDate,installDate,installedSize,reason,validation}
Unknown %KEY%vendorMetadata.pacman:<lowercase-key>

PURL

File evidence

Determinism