3.4 KiB
3.4 KiB
Provenance Cache (Provcache) with VeriKey Composite Hash
Module
__Libraries
Status
IMPLEMENTED
Description
Provenance Cache (Provcache) backend with VeriKey composite hash (source + SBOM + VEX + policy + signer + time window), DecisionDigest canonicalized evaluation output, Valkey read-through with Postgres write-behind, and Policy Engine integration for cache-accelerated decisions.
Implementation Details
- VeriKeyBuilder:
src/__Libraries/StellaOps.Provcache/VeriKeyBuilder.cs-- fluent builder for composite provenance identity key:VeriKey = SHA256(source_hash || sbom_hash || vex_hash_set_hash || merge_policy_hash || signer_set_hash || time_window); multi-partial:.Source.cs,.Sbom.cs,.Vex.cs,.Policy.cs,.Signer.cs,.TimeWindow.cs,.Hashing.cs,.Build.cs; each component ensures cache invalidation when relevant inputs change - DecisionDigestBuilder:
src/__Libraries/StellaOps.Provcache/DecisionDigestBuilder.cs-- builder for canonicalized evaluation output digest; multi-partial:.VeriKey.cs,.Verdict.cs,.Proof.cs,.ReplaySeed.cs,.Timestamps.cs,.TrustScore.cs,.Hashing.cs,.Build.cs; usesProvcacheOptionsandTimeProviderfor deterministic computation - ProvcacheService:
src/__Libraries/StellaOps.Provcache/ProvcacheService.cs-- multi-partial service:.Get.cs(lookup by VeriKey),.GetOrCompute.cs(read-through pattern),.Set.cs(store with TTL),.Invalidate.cs/.InvalidateBy.cs(targeted invalidation),.Prune.cs(expired entry cleanup),.Metrics.cs(telemetry),.Tracking.cs(usage tracking) - WriteBehindQueue:
src/__Libraries/StellaOps.Provcache/WriteBehindQueue.cs-- multi-partial:.Enqueue.cs,.Drain.cs,.Batch.cs,.Run.cs,.Metrics.cs;WriteBehindQueueHostedServicefor background processing - ValkeyProvcacheStore:
src/__Libraries/StellaOps.Provcache.Valkey/ValkeyProvcacheStore.cs-- Valkey-backed cache:.Get.cs,.GetMany.cs,.GetOrSet.cs,.Set.cs,.SetMany.cs,.Invalidate.cs,.InvalidateByPattern.cs - PostgresProvcacheRepository:
src/__Libraries/StellaOps.Provcache.Postgres/PostgresProvcacheRepository.cs-- write-behind persistence:.Read.cs,.Upsert.cs,.Delete.cs,.DeleteFeedExpired.cs,.DeletePolicySigner.cs,.Revocations.cs,.Metrics.cs,.Mapping.cs - ProvcacheOptions:
src/__Libraries/StellaOps.Provcache/ProvcacheOptions.cs-- multi-partial:.Cache.cs,.Chunking.cs,.TimeWindow.cs,.Ttl.cs,.WriteBehind.cs - ProvcacheTelemetry:
src/__Libraries/StellaOps.Provcache/ProvcacheTelemetry.cs-- OpenTelemetry metrics:.Counters.cs,.Gauges.cs,.Histograms.cs,.Metrics.Hits.cs,.Metrics.Invalidation.cs,.Metrics.Latency.cs - Source: SPRINT_8200_0001_0001_provcache_core_backend.md
E2E Test Plan
- Verify VeriKey computation is deterministic for same inputs (source, SBOM, VEX, policy, signer, time window)
- Test VeriKey changes when any component hash changes (cache invalidation)
- Verify DecisionDigest captures canonicalized evaluation output
- Test read-through pattern: cache miss triggers computation and stores result
- Verify Valkey store handles get/set/invalidate operations correctly
- Test write-behind queue batches writes to Postgres
- Verify time window bucketing enables controlled cache expiry
- Test ProvcacheService.Prune removes expired entries