Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
- Introduced `SbomService` tasks documentation. - Updated `StellaOps.sln` to include new projects: `StellaOps.AirGap.Time` and `StellaOps.AirGap.Importer`. - Added unit tests for `BundleImportPlanner`, `DsseVerifier`, `ImportValidator`, and other components in the `StellaOps.AirGap.Importer.Tests` namespace. - Implemented `InMemoryBundleRepositories` for testing bundle catalog and item repositories. - Created `MerkleRootCalculator`, `RootRotationPolicy`, and `TufMetadataValidator` tests. - Developed `StalenessCalculator` and `TimeAnchorLoader` tests in the `StellaOps.AirGap.Time.Tests` namespace. - Added `fetch-sbomservice-deps.sh` script for offline dependency fetching.
1.9 KiB
1.9 KiB
Concelier LNM Cache Plan (Sprint 110)
Purpose: finalize structured caching fields now that Link-Not-Merge (LNM) schema is frozen (2025-11-17) and Evidence Locker contract is published.
Cache payload shape
- Source:
advisory_linksetscollection (seedocs/modules/concelier/link-not-merge-schema.md). - Cache entry key:
{tenant}:{advisoryId}:{source}. - Cached fields (deterministic order):
observations(ObjectId list, already sorted by source, advisoryId, fetchedAt)normalized.purls,normalized.versions,normalized.ranges,normalized.severitiesconflictsarray (field, reason, values)provenance.observationHashesbuiltByJobId,createdAt
- Exclude mutable/derived fields; cache is rebuilt on ingestion replay, not updated in place.
Storage & eviction
- Collection:
advisory_linkset_cache(per-tenant index{tenantId:1, advisoryId:1, source:1}unique). - Eviction: TTL on
createdAtdisabled by default; cache is replaced when a newerprovenance.observationHashesdiffers. - Determinism: cache documents written via canonical JSON writer (sorted keys); timestamps UTC.
API exposure
- WebService: surface cached linksets via existing
/v1/lnm/linksets/{advisoryId}?source=...(read-through); if cache miss, rebuild synchronously and store. - Console: may rely on this cache for Advisory AI surfaces; no new payload fields required.
Telemetry
- Meter
StellaOps.Concelier.Linksets(existing) to add counters:lnm.cache.write_total{result},lnm.cache.hit_total{source}; histogramlnm.cache.rebuild_msfor synchronous rebuilds. (To be wired in subsequent sprint.)
Alignment
- Schema source of truth:
docs/modules/concelier/link-not-merge-schema.md(frozen v1). - Evidence Locker contract:
docs/modules/evidence-locker/attestation-contract.mdinforms provenance fields; no shape changes required.
Ownership
- Concelier Core + WebService guilds.