- Introduced a comprehensive CI job structure for VEX Lens, including build, test, linting, and load testing. - Defined load test parameters and SLOs for VEX Lens API and Issuer Directory. - Created Grafana dashboards and alerting mechanisms for monitoring API performance and error rates. - Established offline posture guidelines for CI jobs and load testing. feat: Implement deterministic projection verification script - Added `verify_projection.sh` script for verifying the integrity of projection exports against expected hashes. - Ensured robust error handling for missing files and hash mismatches. feat: Develop Vuln Explorer CI and Ops Plan - Created CI jobs for Vuln Explorer, including build, test, and replay verification. - Implemented backup and disaster recovery strategies for MongoDB and Redis. - Established Merkle anchoring verification and automation for ledger projector. feat: Introduce EventEnvelopeHasher for hashing event envelopes - Implemented `EventEnvelopeHasher` to compute SHA256 hashes for event envelopes. feat: Add Risk Store and Dashboard components - Developed `RiskStore` for managing risk data and state. - Created `RiskDashboardComponent` for displaying risk profiles with filtering capabilities. - Implemented unit tests for `RiskStore` and `RiskDashboardComponent`. feat: Enhance Vulnerability Detail Component - Developed `VulnerabilityDetailComponent` for displaying detailed information about vulnerabilities. - Implemented error handling for missing vulnerability IDs and loading failures.
26 lines
814 B
Bash
26 lines
814 B
Bash
#!/usr/bin/env bash
|
|
# Deterministic projection verification for DEVOPS-VULN-29-001/002
|
|
# Usage: ./verify_projection.sh [projection-export.json] [expected-hash-file]
|
|
set -euo pipefail
|
|
PROJECTION=${1:-samples/vuln/events/projection.json}
|
|
EXPECTED_HASH_FILE=${2:-ops/devops/vuln/expected_projection.sha256}
|
|
|
|
if [[ ! -f "$PROJECTION" ]]; then
|
|
echo "projection file not found: $PROJECTION" >&2
|
|
exit 1
|
|
fi
|
|
if [[ ! -f "$EXPECTED_HASH_FILE" ]]; then
|
|
echo "expected hash file not found: $EXPECTED_HASH_FILE" >&2
|
|
exit 1
|
|
fi
|
|
|
|
calc_hash=$(sha256sum "$PROJECTION" | awk '{print $1}')
|
|
expected_hash=$(cut -d' ' -f1 "$EXPECTED_HASH_FILE")
|
|
|
|
if [[ "$calc_hash" != "$expected_hash" ]]; then
|
|
echo "mismatch: projection hash $calc_hash expected $expected_hash" >&2
|
|
exit 2
|
|
fi
|
|
|
|
echo "projection hash matches ($calc_hash)" >&2
|