1.8 KiB
1.8 KiB
Excititor · Consensus Removal Prep (AOC-19-004)
- Date: 2025-11-20
- Working directory:
src/Excititor/__Libraries/StellaOps.Excititor.Core+src/Excititor/StellaOps.Excititor.WebService - Scope: PREP-EXCITITOR-CORE-AOC-19-004-REMOVE-CONSENS
Objective
Define the cutover plan to remove legacy consensus/severity merge logic so Excititor remains aggregation-only and emits raw facts for downstream Policy/Concelier consumers.
Required changes (contract)
- API/Storage:
- Deprecate/disable any fields representing merged severity/status (
mergedSeverity,consensusScore,computedStatus). - Retain raw source fields:
status,justification,impact,affects,references,notes,provenance,reconciledFrom. - Add boolean
consensusDisabled: trueto existing documents during migration for audit.
- Deprecate/disable any fields representing merged severity/status (
- Ingestion pipeline:
- When dual/conflicting statuses arrive, store both observations; no reconciliation beyond stable ordering.
- Maintain deterministic ordering when multiple observations share
(tenant, advisoryId, component)— sort byingestedAt, thensource, thenevidenceHash.
- Feature flag:
excititor:aoc:disableConsensusdefaulttrue; only temporaryfalseallowed for rollback during migration. - Telemetry: counter
excititor.ingest.consensus.disabledtagged bytenant,source,connectorId; increment once per batch after flag applied.
Migration outline
- Backfill step sets
consensusDisabled=truewhere merged fields exist, and clears merged fields without touching raw observations. - Tests must assert merged fields are absent/null after migration and ingestion flows do not write them.
Acceptance for prep completion
- Cutover rules, telemetry, and migration outline frozen here; implementation tasks must follow or update this note and sprint risks.