Files
git.stella-ops.org/docs/implplan/SPRINT_121_excititor_iii.md
StellaOps Bot 35c8f9216f Add tests and implement timeline ingestion options with NATS and Redis subscribers
- Introduced `BinaryReachabilityLifterTests` to validate binary lifting functionality.
- Created `PackRunWorkerOptions` for configuring worker paths and execution persistence.
- Added `TimelineIngestionOptions` for configuring NATS and Redis ingestion transports.
- Implemented `NatsTimelineEventSubscriber` for subscribing to NATS events.
- Developed `RedisTimelineEventSubscriber` for reading from Redis Streams.
- Added `TimelineEnvelopeParser` to normalize incoming event envelopes.
- Created unit tests for `TimelineEnvelopeParser` to ensure correct field mapping.
- Implemented `TimelineAuthorizationAuditSink` for logging authorization outcomes.
2025-12-03 09:46:48 +02:00

3.4 KiB

Sprint 0121 · Excititor Ingestion & Evidence (Phase III)

Topic & Scope

  • Deliver Link-Not-Merge foundations in Excititor: storage, conflict annotations, event emission, and read APIs.
  • Expose observation/linkset endpoints with deterministic pagination and no derived verdicts; document contracts and SDK examples.
  • Publish ingest observability (latency, conflict rate, signature verification) and SLO alerts for AOC evidence freshness.
  • Working directory: src/Excititor (Storage.Mongo, Core, WebService) and related docs.

Dependencies & Concurrency

  • Depends on Sprint 110.C (Excititor II) groundwork.
  • Concurrency: storage → conflict annotations → events → APIs → docs; observability can proceed in parallel after storage is stable.

Documentation Prerequisites

  • docs/modules/excititor/architecture.md
  • docs/modules/excititor/implementation_plan.md
  • Component AGENTS.md under src/Excititor/**

Delivery Tracker

# Task ID Status Key dependency / next step Owners Task Definition
1 EXCITITOR-LNM-21-001 DONE None (prereq storage) Excititor Storage Guild (src/Excititor/__Libraries/StellaOps.Excititor.Storage.Mongo) Stand up vex_observations and vex_linksets collections with shard keys, tenant guards, migrations that retire merge-era data without mutating raw content.
2 EXCITITOR-LNM-21-002 DONE Depends on 21-001 Excititor Core Guild (src/Excititor/__Libraries/StellaOps.Excititor.Core) Capture disagreement metadata (status + justification deltas) inside linksets with confidence scores; Excititor stays aggregation-only.
3 EXCITITOR-LNM-21-003 DONE Depends on 21-002 Excititor Core Guild · Platform Events Guild Emit vex.linkset.updated events describing payload (observation ids, confidence, conflict summary) for Policy/Lens/UI subscription.
4 EXCITITOR-LNM-21-201 DONE Depends on 21-003 Excititor WebService Guild (src/Excititor/StellaOps.Excititor.WebService) /vex/observations read endpoints with advisory/product/issuer filters, strict RBAC, deterministic pagination, no derived verdict fields.
5 EXCITITOR-LNM-21-202 DONE Depends on 21-201 Excititor WebService Guild /vex/linksets + export endpoints surfacing alias mappings, conflict markers, provenance proofs; errors map to ERR_AGG_*.
6 EXCITITOR-LNM-21-203 DONE Depends on 21-202 Excititor WebService Guild · Docs Guild Update OpenAPI, SDK smoke tests, and docs with realistic examples for observation/linkset endpoints.
7 EXCITITOR-OBS-51-001 DONE Parallel after storage ready Excititor Core Guild · DevOps Guild Publish ingest latency, scope-resolution success, conflict rate, signature verification metrics + SLO burn alerts.

Execution Log

Date (UTC) Update Owner
2025-12-03 Normalised sprint to standard template; preserved task statuses; working directory set. Planning

Decisions & Risks

  • Excititor remains aggregation-only; conflict data recorded but no verdict selection.
  • Pagination deterministic: enforce stable ordering on observation/linkset reads to avoid replay drift.
  • Event payloads must not leak tenant data across scopes; ensure RBAC on /vex/* endpoints and event topics.

Next Checkpoints

  • Confirm metrics dashboards remain in sync with OBS-51 signal names after later phases.
  • Re-run SDK/example coverage when downstream services add new advisory/product fields.