StellaOps BOM Index (bom-index@1)
The BOM index is a deterministic, offline-friendly sidecar that accelerates queries for layer-to-component membership and entrypoint usage. It is emitted alongside CycloneDX SBOMs and consumed by Scheduler/Notify services.
File Layout
Binary little-endian encoding, organised as the following sections:
- 
Header
magic(byte[7]): ASCII"BOMIDX1"identifier.version(uint16): current value1.flags(uint16): bit0set when entrypoint usage bitmaps are present.imageDigestLength(uint16) + UTF-8 digest string (e.g.sha256:...).generatedAt(int64): microseconds since Unix epoch.layerCount(uint32),componentCount(uint32),entrypointCount(uint32).
 - 
Layer Table
- For each layer: 
length(uint16) + UTF-8 layer digest (canonical order, base image → top layer). 
 - For each layer: 
 - 
Component Table
- For each component: 
length(uint16) + UTF-8 identity (CycloneDX purl when available, otherwise canonical key). 
 - For each component: 
 - 
Component ↦ Layer Bitmaps
- For each component (matching table order):
bitmapLength(uint32).- Roaring bitmap payload (
Collections.Special.RoaringBitmap.Serialize) encoding layer indexes that introduce or retain the component. 
 
 - For each component (matching table order):
 - 
Entrypoint Table (optional; present when
flags & 0x1 == 1)- For each unique entrypoint/launcher string: 
length(uint16) + UTF-8 value (sorted ordinally). 
 - For each unique entrypoint/launcher string: 
 - 
Component ↦ Entrypoint Bitmaps (optional)
- For each component: roaring bitmap whose set bits reference entrypoint indexes used by EntryTrace. Empty bitmap (
length == 0) indicates the component is not part of any resolved entrypoint closure. 
 - For each component: roaring bitmap whose set bits reference entrypoint indexes used by EntryTrace. Empty bitmap (
 
Determinism Guarantees
- Layer, component, and entrypoint tables are strictly ordered (base → top layer, lexicographically for components and entrypoints).
 - Roaring bitmaps are optimised prior to serialisation and always produced from sorted indexes.
 - Header timestamp is normalised to microsecond precision using UTC.
 
Sample
sample-index.bin is generated from the integration fixture used in unit tests. It contains:
- 2 layers: 
sha256:layer1,sha256:layer2. - 3 components: 
pkg:npm/a,pkg:npm/b,pkg:npm/c. - Entrypoint bitmaps for 
/app/start.shand/app/init.sh. 
The sample can be decoded with the BomIndexBuilder unit tests or any RoaringBitmap implementation compatible with Collections.Special.RoaringBitmap.