Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
- Added NullAdvisoryObservationEventTransport for handling advisory observation events. - Created IOrchestratorRegistryStore interface for orchestrator registry operations. - Implemented MongoOrchestratorRegistryStore for MongoDB interactions with orchestrator data. - Defined OrchestratorCommandDocument and OrchestratorCommandRecord for command handling. - Added OrchestratorHeartbeatDocument and OrchestratorHeartbeatRecord for heartbeat tracking. - Created OrchestratorRegistryDocument and OrchestratorRegistryRecord for registry management. - Developed tests for orchestrator collections migration and MongoOrchestratorRegistryStore functionality. - Introduced AirgapImportRequest and AirgapImportValidator for air-gapped VEX bundle imports. - Added incident mode rules sample JSON for notifier configuration.
2.2 KiB
2.2 KiB
Findings Ledger Prep — 29-008, 34-101, AIRGAP-56-001
Status: Ready for implementation (2025-11-22) Owners: Findings Ledger Guild · Observability Guild · AirGap Time Guild · Orchestrator Guild Scope: Provide the missing contracts needed to unblock LEDGER-29-008 load/replay, LEDGER-34-101 orchestrator export linkage, and LEDGER-AIRGAP-56-001 bundle provenance recording.
Observability (LEDGER-29-008)
- Metrics schema locked:
ledger_projection_lag_seconds{tenant}(gauge)ledger_write_duration_seconds_bucket(histogram)ledger_events_total{tenant,kind}(counter)- Alert: burn-rate 4xx/5xx on ingestion path >2% over 5m/1h.
- Log fields:
tenantId,requestId,projectionCheckpoint,bundleId?,attestationId?,operation. - Trace spans:
ledger.write,ledger.replay,ledger.restorewith baggagetenant-id,bundle-id.
Orchestrator export linkage (LEDGER-34-101)
- Export payload shape (from Orchestrator Sprint 150.A):
runId(uuid),jobType,artifactHash,policyHash,startedAt,completedAt,status,manifestPath,logsPath.
- Ledger integration rule: store export rows under collection
orchestrator_exportswith index(artifactHash, runId); anchor Merkle root into ledger timeline entryledger_exportreferencing above fields.
AirGap provenance (LEDGER-AIRGAP-56-001)
- Mirror bundle contract alignment:
- fields recorded per import:
bundleId,mirrorGeneration,merkleRoot,timeAnchor,publisher,hashAlgorithm,contents[](sha256 of NDJSON segments). - determinism: imports sorted by
bundleId; all timestamps UTC.
- fields recorded per import:
- API for recording import:
POST /internal/ledger/airgap-importwith payload above; respond 202 +ledgerEntryId.
Acceptance Criteria
- Metrics/log/logging names frozen as above and added to
docs/modules/findings-ledger/observability.mdin next implementation step. - Orchestrator export payload shape referenced by both Ledger and Orchestrator tasks; no missing fields for audit.
- AirGap import payload is deterministic and replays without external network requirements.
Notes
- Satisfies PREP-LEDGER-29-008-AWAIT-OBSERVABILITY-SCHEMA, PREP-LEDGER-34-101-ORCHESTRATOR-LEDGER-EXPORT, and PREP-LEDGER-AIRGAP-56-001-MIRROR-BUNDLE-SCHEM.