diff --git a/README.md b/README.md
index 08be7469..dcc4024d 100755
--- a/README.md
+++ b/README.md
@@ -29,6 +29,6 @@ for integration steps once available.
## Documentation
- `docs/README.md` now consolidates the platform index and points to the updated high-level architecture.
-- Module architecture dossiers live under `docs/ARCHITECTURE_*.md`; the most relevant here are `docs/ARCHITECTURE_FEEDSER.md` (service layout, merge engine, exports) and `docs/ARCHITECTURE_CLI.md` (command surface, AOT packaging, auth flows). Related services such as the Signer, Attestor, Authority, Scanner, UI, Vexer, Zastava, and DevOps pipeline each have their own dossier.
+- Module architecture dossiers live under `docs/ARCHITECTURE_*.md`; the most relevant here are `docs/ARCHITECTURE_FEEDSER.md` (service layout, merge engine, exports) and `docs/ARCHITECTURE_CLI.md` (command surface, AOT packaging, auth flows). Related services such as the Signer, Attestor, Authority, Scanner, UI, Excititor, Zastava, and DevOps pipeline each have their own dossier.
- Offline operation guidance moved to `docs/24_OFFLINE_KIT.md`, which details bundle composition, verification, and delta workflows. Feedser-specific connector operations stay in `docs/ops/feedser-certbund-operations.md` and companion runbooks under `docs/ops/`.
diff --git a/SPRINTS.md b/SPRINTS.md
index 9365279e..976be584 100644
--- a/SPRINTS.md
+++ b/SPRINTS.md
@@ -107,50 +107,50 @@
| Sprint 4 | Schema Parity & Freshness Alignment | src/StellaOps.Feedser.Exporter.TrivyDb/TASKS.md | DONE (2025-10-15) | Team Exporters – Trivy DB | FEEDEXPORT-TRIVY-04-001 | Propagate new advisory fields into Trivy DB package
Extend Bolt builder, metadata, and regression tests for the expanded schema.
2025-10-15: `dotnet test src/StellaOps.Feedser.Exporter.TrivyDb.Tests` confirmed canonical metric/CWE propagation. |
| Sprint 4 | Schema Parity & Freshness Alignment | src/StellaOps.Feedser.Source.Ghsa/TASKS.md | DONE (2025-10-16) | Team Connector Regression Fixtures | FEEDCONN-GHSA-04-004 | Harden CVSS fallback so canonical metric ids persist when GitHub omits vectors; extend fixtures and document severity precedence hand-off to Merge. |
| Sprint 4 | Schema Parity & Freshness Alignment | src/StellaOps.Feedser.Source.Osv/TASKS.md | DONE (2025-10-16) | Team Connector Expansion – GHSA/NVD/OSV | FEEDCONN-OSV-04-005 | Map OSV advisories lacking CVSS vectors to canonical metric ids/notes and document CWE provenance quirks; schedule parity fixture updates. |
-| Sprint 5 | Vexer Core Foundations | src/StellaOps.Vexer.Core/TASKS.md | DONE (2025-10-15) | Team Vexer Core & Policy | VEXER-CORE-01-001 | Stand up canonical VEX claim/consensus records with deterministic serializers so Storage/Exports share a stable contract. |
-| Sprint 5 | Vexer Core Foundations | src/StellaOps.Vexer.Core/TASKS.md | DONE (2025-10-15) | Team Vexer Core & Policy | VEXER-CORE-01-002 | Implement trust-weighted consensus resolver with baseline policy weights, justification gates, telemetry output, and majority/tie handling. |
-| Sprint 5 | Vexer Core Foundations | src/StellaOps.Vexer.Core/TASKS.md | DONE (2025-10-15) | Team Vexer Core & Policy | VEXER-CORE-01-003 | Publish shared connector/exporter/attestation abstractions and deterministic query signature utilities for cache/attestation workflows. |
-| Sprint 5 | Vexer Core Foundations | src/StellaOps.Vexer.Policy/TASKS.md | DONE (2025-10-15) | Team Vexer Policy | VEXER-POLICY-01-001 | Established policy options & snapshot provider covering baseline weights/overrides. |
-| Sprint 5 | Vexer Core Foundations | src/StellaOps.Vexer.Policy/TASKS.md | DONE (2025-10-15) | Team Vexer Policy | VEXER-POLICY-01-002 | Policy evaluator now feeds consensus resolver with immutable snapshots. |
-| Sprint 5 | Vexer Core Foundations | src/StellaOps.Vexer.Policy/TASKS.md | DONE (2025-10-16) | Team Vexer Policy | VEXER-POLICY-01-003 | Author policy diagnostics, CLI/WebService surfacing, and documentation updates. |
-| Sprint 5 | Vexer Core Foundations | src/StellaOps.Vexer.Policy/TASKS.md | DONE (2025-10-16) | Team Vexer Policy | VEXER-POLICY-01-004 | Implement YAML/JSON schema validation and deterministic diagnostics for operator bundles. |
-| Sprint 5 | Vexer Core Foundations | src/StellaOps.Vexer.Policy/TASKS.md | DONE (2025-10-16) | Team Vexer Policy | VEXER-POLICY-01-005 | Add policy change tracking, snapshot digests, and telemetry/logging hooks. |
-| Sprint 5 | Vexer Core Foundations | src/StellaOps.Vexer.Storage.Mongo/TASKS.md | DONE (2025-10-15) | Team Vexer Storage | VEXER-STORAGE-01-001 | Mongo mapping registry plus raw/export entities and DI extensions in place. |
-| Sprint 5 | Vexer Core Foundations | src/StellaOps.Vexer.Storage.Mongo/TASKS.md | DONE (2025-10-16) | Team Vexer Storage | VEXER-STORAGE-01-004 | Build provider/consensus/cache class maps and related collections. |
-| Sprint 5 | Vexer Core Foundations | src/StellaOps.Vexer.Export/TASKS.md | DONE (2025-10-15) | Team Vexer Export | VEXER-EXPORT-01-001 | Export engine delivers cache lookup, manifest creation, and policy integration. |
-| Sprint 5 | Vexer Core Foundations | src/StellaOps.Vexer.Export/TASKS.md | DONE (2025-10-17) | Team Vexer Export | VEXER-EXPORT-01-004 | Connect export engine to attestation client and persist Rekor metadata. |
-| Sprint 5 | Vexer Core Foundations | src/StellaOps.Vexer.Attestation/TASKS.md | DONE (2025-10-16) | Team Vexer Attestation | VEXER-ATTEST-01-001 | Implement in-toto predicate + DSSE builder providing envelopes for export attestation. |
-| Sprint 5 | Vexer Core Foundations | src/StellaOps.Vexer.Connectors.Abstractions/TASKS.md | DONE (2025-10-17) | Team Vexer Connectors | VEXER-CONN-ABS-01-001 | Deliver shared connector context/base classes so provider plug-ins can be activated via WebService/Worker. |
-| Sprint 5 | Vexer Core Foundations | src/StellaOps.Vexer.WebService/TASKS.md | DONE (2025-10-17) | Team Vexer WebService | VEXER-WEB-01-001 | Scaffold minimal API host, DI, and `/vexer/status` endpoint integrating policy, storage, export, and attestation services. |
-| Sprint 6 | Vexer Ingest & Formats | src/StellaOps.Vexer.Worker/TASKS.md | DONE (2025-10-17) | Team Vexer Worker | VEXER-WORKER-01-001 | Create Worker host with provider scheduling and logging to drive recurring pulls/reconciliation. |
-| Sprint 6 | Vexer Ingest & Formats | src/StellaOps.Vexer.Formats.CSAF/TASKS.md | DONE (2025-10-17) | Team Vexer Formats | VEXER-FMT-CSAF-01-001 | Implement CSAF normalizer foundation translating provider documents into `VexClaim` entries. |
-| Sprint 6 | Vexer Ingest & Formats | src/StellaOps.Vexer.Formats.CycloneDX/TASKS.md | DONE (2025-10-17) | Team Vexer Formats | VEXER-FMT-CYCLONE-01-001 | Implement CycloneDX VEX normalizer capturing `analysis` state and component references. |
-| Sprint 6 | Vexer Ingest & Formats | src/StellaOps.Vexer.Formats.OpenVEX/TASKS.md | DONE (2025-10-17) | Team Vexer Formats | VEXER-FMT-OPENVEX-01-001 | Implement OpenVEX normalizer to ingest attestations into canonical claims with provenance. |
-| Sprint 6 | Vexer Ingest & Formats | src/StellaOps.Vexer.Connectors.RedHat.CSAF/TASKS.md | DONE (2025-10-17) | Team Vexer Connectors – Red Hat | VEXER-CONN-RH-01-001 | Ship Red Hat CSAF provider metadata discovery enabling incremental pulls. |
-| Sprint 6 | Vexer Ingest & Formats | src/StellaOps.Vexer.Connectors.RedHat.CSAF/TASKS.md | DONE (2025-10-17) | Team Vexer Connectors – Red Hat | VEXER-CONN-RH-01-002 | Fetch CSAF windows with ETag handling, resume tokens, quarantine on schema errors, and persist raw docs. |
-| Sprint 6 | Vexer Ingest & Formats | src/StellaOps.Vexer.Connectors.RedHat.CSAF/TASKS.md | DONE (2025-10-17) | Team Vexer Connectors – Red Hat | VEXER-CONN-RH-01-003 | Populate provider trust overrides (cosign issuer, identity regex) and provenance hints for policy evaluation/logging. |
-| Sprint 6 | Vexer Ingest & Formats | src/StellaOps.Vexer.Connectors.RedHat.CSAF/TASKS.md | DONE (2025-10-17) | Team Vexer Connectors – Red Hat | VEXER-CONN-RH-01-004 | Persist resume cursors (last updated timestamp/document hashes) in storage and reload during fetch to avoid duplicates. |
-| Sprint 6 | Vexer Ingest & Formats | src/StellaOps.Vexer.Connectors.RedHat.CSAF/TASKS.md | DONE (2025-10-17) | Team Vexer Connectors – Red Hat | VEXER-CONN-RH-01-005 | Register connector in Worker/WebService DI, add scheduled jobs, and document CLI triggers for Red Hat CSAF pulls. |
-| Sprint 6 | Vexer Ingest & Formats | src/StellaOps.Vexer.Connectors.RedHat.CSAF/TASKS.md | DONE (2025-10-17) | Team Vexer Connectors – Red Hat | VEXER-CONN-RH-01-006 | Add CSAF normalization parity fixtures ensuring RHSA-specific metadata is preserved. |
-| Sprint 6 | Vexer Ingest & Formats | src/StellaOps.Vexer.Connectors.Cisco.CSAF/TASKS.md | DONE (2025-10-17) | Team Vexer Connectors – Cisco | VEXER-CONN-CISCO-01-001 | Implement Cisco CSAF endpoint discovery/auth to unlock paginated pulls. |
-| Sprint 6 | Vexer Ingest & Formats | src/StellaOps.Vexer.Connectors.Cisco.CSAF/TASKS.md | DONE (2025-10-17) | Team Vexer Connectors – Cisco | VEXER-CONN-CISCO-01-002 | Implement Cisco CSAF paginated fetch loop with dedupe and raw persistence support. |
-| Sprint 6 | Vexer Ingest & Formats | src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/TASKS.md | DONE (2025-10-17) | Team Vexer Connectors – SUSE | VEXER-CONN-SUSE-01-001 | Build Rancher VEX Hub discovery/subscription path with offline snapshot support. |
-| Sprint 6 | Vexer Ingest & Formats | src/StellaOps.Vexer.Connectors.MSRC.CSAF/TASKS.md | DONE (2025-10-17) | Team Vexer Connectors – MSRC | VEXER-CONN-MS-01-001 | Deliver AAD onboarding/token cache for MSRC CSAF ingestion. |
-| Sprint 6 | Vexer Ingest & Formats | src/StellaOps.Vexer.Connectors.Oracle.CSAF/TASKS.md | DONE (2025-10-17) | Team Vexer Connectors – Oracle | VEXER-CONN-ORACLE-01-001 | Implement Oracle CSAF catalogue discovery with CPU calendar awareness. |
-| Sprint 6 | Vexer Ingest & Formats | src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/TASKS.md | DONE (2025-10-17) | Team Vexer Connectors – Ubuntu | VEXER-CONN-UBUNTU-01-001 | Implement Ubuntu CSAF discovery and channel selection for USN ingestion. |
-| Sprint 6 | Vexer Ingest & Formats | src/StellaOps.Vexer.Connectors.OCI.OpenVEX.Attest/TASKS.md | TODO | Team Vexer Connectors – OCI | VEXER-CONN-OCI-01-001 | Wire OCI discovery/auth to fetch OpenVEX attestations for configured images. |
-| Sprint 6 | Vexer Ingest & Formats | src/StellaOps.Cli/TASKS.md | TODO | DevEx/CLI | VEXER-CLI-01-001 | Add `vexer` CLI verbs bridging to WebService with consistent auth and offline UX. |
-| Sprint 7 | Contextual Truth Foundations | src/StellaOps.Vexer.Core/TASKS.md | TODO | Team Vexer Core & Policy | VEXER-CORE-02-001 | Context signal schema prep – extend consensus models with severity/KEV/EPSS fields and update canonical serializers. |
-| Sprint 7 | Contextual Truth Foundations | src/StellaOps.Vexer.Policy/TASKS.md | TODO | Team Vexer Policy | VEXER-POLICY-02-001 | Scoring coefficients & weight ceilings – add α/β options, weight boosts, and validation guidance. |
-| Sprint 7 | Contextual Truth Foundations | src/StellaOps.Vexer.Storage.Mongo/TASKS.md | TODO | Team Vexer Storage | VEXER-STORAGE-02-001 | Statement events & scoring signals – create immutable VEX statement store plus consensus extensions with indexes/migrations. |
-| Sprint 7 | Contextual Truth Foundations | src/StellaOps.Vexer.WebService/TASKS.md | TODO | Team Vexer WebService | VEXER-WEB-01-004 | Resolve API & signed responses – expose `/vexer/resolve`, return signed consensus/score envelopes, document auth. |
-| Sprint 7 | Contextual Truth Foundations | src/StellaOps.Vexer.Attestation/TASKS.md | DONE (2025-10-16) | Team Vexer Attestation | VEXER-ATTEST-01-002 | Rekor v2 client integration – ship transparency log client with retries and offline queue. |
-| Sprint 7 | Contextual Truth Foundations | src/StellaOps.Vexer.Worker/TASKS.md | TODO | Team Vexer Worker | VEXER-WORKER-01-004 | TTL refresh & stability damper – schedule re-resolve loops and guard against status flapping. |
-| Sprint 7 | Contextual Truth Foundations | src/StellaOps.Vexer.Export/TASKS.md | TODO | Team Vexer Export | VEXER-EXPORT-01-005 | Score & resolve envelope surfaces – include signed consensus/score artifacts in exports. |
+| Sprint 5 | Excititor Core Foundations | src/StellaOps.Excititor.Core/TASKS.md | DONE (2025-10-15) | Team Excititor Core & Policy | EXCITITOR-CORE-01-001 | Stand up canonical VEX claim/consensus records with deterministic serializers so Storage/Exports share a stable contract. |
+| Sprint 5 | Excititor Core Foundations | src/StellaOps.Excititor.Core/TASKS.md | DONE (2025-10-15) | Team Excititor Core & Policy | EXCITITOR-CORE-01-002 | Implement trust-weighted consensus resolver with baseline policy weights, justification gates, telemetry output, and majority/tie handling. |
+| Sprint 5 | Excititor Core Foundations | src/StellaOps.Excititor.Core/TASKS.md | DONE (2025-10-15) | Team Excititor Core & Policy | EXCITITOR-CORE-01-003 | Publish shared connector/exporter/attestation abstractions and deterministic query signature utilities for cache/attestation workflows. |
+| Sprint 5 | Excititor Core Foundations | src/StellaOps.Excititor.Policy/TASKS.md | DONE (2025-10-15) | Team Excititor Policy | EXCITITOR-POLICY-01-001 | Established policy options & snapshot provider covering baseline weights/overrides. |
+| Sprint 5 | Excititor Core Foundations | src/StellaOps.Excititor.Policy/TASKS.md | DONE (2025-10-15) | Team Excititor Policy | EXCITITOR-POLICY-01-002 | Policy evaluator now feeds consensus resolver with immutable snapshots. |
+| Sprint 5 | Excititor Core Foundations | src/StellaOps.Excititor.Policy/TASKS.md | DONE (2025-10-16) | Team Excititor Policy | EXCITITOR-POLICY-01-003 | Author policy diagnostics, CLI/WebService surfacing, and documentation updates. |
+| Sprint 5 | Excititor Core Foundations | src/StellaOps.Excititor.Policy/TASKS.md | DONE (2025-10-16) | Team Excititor Policy | EXCITITOR-POLICY-01-004 | Implement YAML/JSON schema validation and deterministic diagnostics for operator bundles. |
+| Sprint 5 | Excititor Core Foundations | src/StellaOps.Excititor.Policy/TASKS.md | DONE (2025-10-16) | Team Excititor Policy | EXCITITOR-POLICY-01-005 | Add policy change tracking, snapshot digests, and telemetry/logging hooks. |
+| Sprint 5 | Excititor Core Foundations | src/StellaOps.Excititor.Storage.Mongo/TASKS.md | DONE (2025-10-15) | Team Excititor Storage | EXCITITOR-STORAGE-01-001 | Mongo mapping registry plus raw/export entities and DI extensions in place. |
+| Sprint 5 | Excititor Core Foundations | src/StellaOps.Excititor.Storage.Mongo/TASKS.md | DONE (2025-10-16) | Team Excititor Storage | EXCITITOR-STORAGE-01-004 | Build provider/consensus/cache class maps and related collections. |
+| Sprint 5 | Excititor Core Foundations | src/StellaOps.Excititor.Export/TASKS.md | DONE (2025-10-15) | Team Excititor Export | EXCITITOR-EXPORT-01-001 | Export engine delivers cache lookup, manifest creation, and policy integration. |
+| Sprint 5 | Excititor Core Foundations | src/StellaOps.Excititor.Export/TASKS.md | DONE (2025-10-17) | Team Excititor Export | EXCITITOR-EXPORT-01-004 | Connect export engine to attestation client and persist Rekor metadata. |
+| Sprint 5 | Excititor Core Foundations | src/StellaOps.Excititor.Attestation/TASKS.md | DONE (2025-10-16) | Team Excititor Attestation | EXCITITOR-ATTEST-01-001 | Implement in-toto predicate + DSSE builder providing envelopes for export attestation. |
+| Sprint 5 | Excititor Core Foundations | src/StellaOps.Excititor.Connectors.Abstractions/TASKS.md | DONE (2025-10-17) | Team Excititor Connectors | EXCITITOR-CONN-ABS-01-001 | Deliver shared connector context/base classes so provider plug-ins can be activated via WebService/Worker. |
+| Sprint 5 | Excititor Core Foundations | src/StellaOps.Excititor.WebService/TASKS.md | DONE (2025-10-17) | Team Excititor WebService | EXCITITOR-WEB-01-001 | Scaffold minimal API host, DI, and `/excititor/status` endpoint integrating policy, storage, export, and attestation services. |
+| Sprint 6 | Excititor Ingest & Formats | src/StellaOps.Excititor.Worker/TASKS.md | DONE (2025-10-17) | Team Excititor Worker | EXCITITOR-WORKER-01-001 | Create Worker host with provider scheduling and logging to drive recurring pulls/reconciliation. |
+| Sprint 6 | Excititor Ingest & Formats | src/StellaOps.Excititor.Formats.CSAF/TASKS.md | DONE (2025-10-17) | Team Excititor Formats | EXCITITOR-FMT-CSAF-01-001 | Implement CSAF normalizer foundation translating provider documents into `VexClaim` entries. |
+| Sprint 6 | Excititor Ingest & Formats | src/StellaOps.Excititor.Formats.CycloneDX/TASKS.md | DONE (2025-10-17) | Team Excititor Formats | EXCITITOR-FMT-CYCLONE-01-001 | Implement CycloneDX VEX normalizer capturing `analysis` state and component references. |
+| Sprint 6 | Excititor Ingest & Formats | src/StellaOps.Excititor.Formats.OpenVEX/TASKS.md | DONE (2025-10-17) | Team Excititor Formats | EXCITITOR-FMT-OPENVEX-01-001 | Implement OpenVEX normalizer to ingest attestations into canonical claims with provenance. |
+| Sprint 6 | Excititor Ingest & Formats | src/StellaOps.Excititor.Connectors.RedHat.CSAF/TASKS.md | DONE (2025-10-17) | Team Excititor Connectors – Red Hat | EXCITITOR-CONN-RH-01-001 | Ship Red Hat CSAF provider metadata discovery enabling incremental pulls. |
+| Sprint 6 | Excititor Ingest & Formats | src/StellaOps.Excititor.Connectors.RedHat.CSAF/TASKS.md | DONE (2025-10-17) | Team Excititor Connectors – Red Hat | EXCITITOR-CONN-RH-01-002 | Fetch CSAF windows with ETag handling, resume tokens, quarantine on schema errors, and persist raw docs. |
+| Sprint 6 | Excititor Ingest & Formats | src/StellaOps.Excititor.Connectors.RedHat.CSAF/TASKS.md | DONE (2025-10-17) | Team Excititor Connectors – Red Hat | EXCITITOR-CONN-RH-01-003 | Populate provider trust overrides (cosign issuer, identity regex) and provenance hints for policy evaluation/logging. |
+| Sprint 6 | Excititor Ingest & Formats | src/StellaOps.Excititor.Connectors.RedHat.CSAF/TASKS.md | DONE (2025-10-17) | Team Excititor Connectors – Red Hat | EXCITITOR-CONN-RH-01-004 | Persist resume cursors (last updated timestamp/document hashes) in storage and reload during fetch to avoid duplicates. |
+| Sprint 6 | Excititor Ingest & Formats | src/StellaOps.Excititor.Connectors.RedHat.CSAF/TASKS.md | DONE (2025-10-17) | Team Excititor Connectors – Red Hat | EXCITITOR-CONN-RH-01-005 | Register connector in Worker/WebService DI, add scheduled jobs, and document CLI triggers for Red Hat CSAF pulls. |
+| Sprint 6 | Excititor Ingest & Formats | src/StellaOps.Excititor.Connectors.RedHat.CSAF/TASKS.md | DONE (2025-10-17) | Team Excititor Connectors – Red Hat | EXCITITOR-CONN-RH-01-006 | Add CSAF normalization parity fixtures ensuring RHSA-specific metadata is preserved. |
+| Sprint 6 | Excititor Ingest & Formats | src/StellaOps.Excititor.Connectors.Cisco.CSAF/TASKS.md | DONE (2025-10-17) | Team Excititor Connectors – Cisco | EXCITITOR-CONN-CISCO-01-001 | Implement Cisco CSAF endpoint discovery/auth to unlock paginated pulls. |
+| Sprint 6 | Excititor Ingest & Formats | src/StellaOps.Excititor.Connectors.Cisco.CSAF/TASKS.md | DONE (2025-10-17) | Team Excititor Connectors – Cisco | EXCITITOR-CONN-CISCO-01-002 | Implement Cisco CSAF paginated fetch loop with dedupe and raw persistence support. |
+| Sprint 6 | Excititor Ingest & Formats | src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/TASKS.md | DONE (2025-10-17) | Team Excititor Connectors – SUSE | EXCITITOR-CONN-SUSE-01-001 | Build Rancher VEX Hub discovery/subscription path with offline snapshot support. |
+| Sprint 6 | Excititor Ingest & Formats | src/StellaOps.Excititor.Connectors.MSRC.CSAF/TASKS.md | DONE (2025-10-17) | Team Excititor Connectors – MSRC | EXCITITOR-CONN-MS-01-001 | Deliver AAD onboarding/token cache for MSRC CSAF ingestion. |
+| Sprint 6 | Excititor Ingest & Formats | src/StellaOps.Excititor.Connectors.Oracle.CSAF/TASKS.md | DONE (2025-10-17) | Team Excititor Connectors – Oracle | EXCITITOR-CONN-ORACLE-01-001 | Implement Oracle CSAF catalogue discovery with CPU calendar awareness. |
+| Sprint 6 | Excititor Ingest & Formats | src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/TASKS.md | DONE (2025-10-17) | Team Excititor Connectors – Ubuntu | EXCITITOR-CONN-UBUNTU-01-001 | Implement Ubuntu CSAF discovery and channel selection for USN ingestion. |
+| Sprint 6 | Excititor Ingest & Formats | src/StellaOps.Excititor.Connectors.OCI.OpenVEX.Attest/TASKS.md | TODO | Team Excititor Connectors – OCI | EXCITITOR-CONN-OCI-01-001 | Wire OCI discovery/auth to fetch OpenVEX attestations for configured images. |
+| Sprint 6 | Excititor Ingest & Formats | src/StellaOps.Cli/TASKS.md | TODO | DevEx/CLI | EXCITITOR-CLI-01-001 | Add `excititor` CLI verbs bridging to WebService with consistent auth and offline UX. |
+| Sprint 7 | Contextual Truth Foundations | src/StellaOps.Excititor.Core/TASKS.md | TODO | Team Excititor Core & Policy | EXCITITOR-CORE-02-001 | Context signal schema prep – extend consensus models with severity/KEV/EPSS fields and update canonical serializers. |
+| Sprint 7 | Contextual Truth Foundations | src/StellaOps.Excititor.Policy/TASKS.md | TODO | Team Excititor Policy | EXCITITOR-POLICY-02-001 | Scoring coefficients & weight ceilings – add α/β options, weight boosts, and validation guidance. |
+| Sprint 7 | Contextual Truth Foundations | src/StellaOps.Excititor.Storage.Mongo/TASKS.md | TODO | Team Excititor Storage | EXCITITOR-STORAGE-02-001 | Statement events & scoring signals – create immutable VEX statement store plus consensus extensions with indexes/migrations. |
+| Sprint 7 | Contextual Truth Foundations | src/StellaOps.Excititor.WebService/TASKS.md | TODO | Team Excititor WebService | EXCITITOR-WEB-01-004 | Resolve API & signed responses – expose `/excititor/resolve`, return signed consensus/score envelopes, document auth. |
+| Sprint 7 | Contextual Truth Foundations | src/StellaOps.Excititor.Attestation/TASKS.md | DONE (2025-10-16) | Team Excititor Attestation | EXCITITOR-ATTEST-01-002 | Rekor v2 client integration – ship transparency log client with retries and offline queue. |
+| Sprint 7 | Contextual Truth Foundations | src/StellaOps.Excititor.Worker/TASKS.md | TODO | Team Excititor Worker | EXCITITOR-WORKER-01-004 | TTL refresh & stability damper – schedule re-resolve loops and guard against status flapping. |
+| Sprint 7 | Contextual Truth Foundations | src/StellaOps.Excititor.Export/TASKS.md | TODO | Team Excititor Export | EXCITITOR-EXPORT-01-005 | Score & resolve envelope surfaces – include signed consensus/score artifacts in exports. |
| Sprint 7 | Contextual Truth Foundations | src/StellaOps.Feedser.Core/TASKS.md | TODO | Team Core Engine & Storage Analytics | FEEDCORE-ENGINE-07-001 | Advisory event log & asOf queries – surface immutable statements and replay capability. |
| Sprint 7 | Contextual Truth Foundations | src/StellaOps.Feedser.Core/TASKS.md | TODO | Team Core Engine & Data Science | FEEDCORE-ENGINE-07-002 | Noise prior computation service – learn false-positive priors and expose deterministic summaries. |
| Sprint 7 | Contextual Truth Foundations | src/StellaOps.Feedser.Storage.Mongo/TASKS.md | TODO | Team Normalization & Storage Backbone | FEEDSTORAGE-DATA-07-001 | Advisory statement & conflict collections – provision Mongo schema/indexes for event-sourced merge. |
| Sprint 7 | Contextual Truth Foundations | src/StellaOps.Feedser.Merge/TASKS.md | TODO | BE-Merge | FEEDMERGE-ENGINE-07-001 | Conflict sets & explainers – persist conflict materialization and replay hashes for merge decisions. |
| Sprint 8 | Mongo strengthening | src/StellaOps.Feedser.Storage.Mongo/TASKS.md | TODO | Team Normalization & Storage Backbone | FEEDSTORAGE-MONGO-08-001 | Causal-consistent Feedser storage sessions
Ensure `AddMongoStorage` registers a scoped session facilitator (causal consistency + majority concerns), update repositories to accept optional session handles, and add integration coverage proving read-your-write and monotonic reads across a replica set/election scenario. |
| Sprint 8 | Mongo strengthening | src/StellaOps.Authority/TASKS.md | TODO | Authority Core & Storage Guild | AUTHSTORAGE-MONGO-08-001 | Harden Authority Mongo usage
Introduce scoped MongoDB sessions with `writeConcern`/`readConcern` majority defaults, flow the session through stores used in mutations + follow-up reads, and document middleware pattern for web/API & GraphQL layers. |
-| Sprint 8 | Mongo strengthening | src/StellaOps.Vexer.Storage.Mongo/TASKS.md | TODO | Team Vexer Storage | VEXER-STORAGE-MONGO-08-001 | Causal consistency for Vexer repositories
Register Mongo options with majority defaults, push session-aware overloads through raw/export/consensus/cache stores, and extend migration/tests to validate causal reads after writes (including GridFS-backed content) under replica-set failover. |
+| Sprint 8 | Mongo strengthening | src/StellaOps.Excititor.Storage.Mongo/TASKS.md | TODO | Team Excititor Storage | EXCITITOR-STORAGE-MONGO-08-001 | Causal consistency for Excititor repositories
Register Mongo options with majority defaults, push session-aware overloads through raw/export/consensus/cache stores, and extend migration/tests to validate causal reads after writes (including GridFS-backed content) under replica-set failover. |
diff --git a/SPRINTS_VEXER.md b/SPRINTS_EXCITITOR.md
similarity index 100%
rename from SPRINTS_VEXER.md
rename to SPRINTS_EXCITITOR.md
diff --git a/docs/07_HIGH_LEVEL_ARCHITECTURE.md b/docs/07_HIGH_LEVEL_ARCHITECTURE.md
index e27f49ee..32e743e1 100755
--- a/docs/07_HIGH_LEVEL_ARCHITECTURE.md
+++ b/docs/07_HIGH_LEVEL_ARCHITECTURE.md
@@ -37,7 +37,7 @@ It **absorbs** all content from `components.md` so you have a single, authoritat
| **Scanner.Sbomer.BuildXPlugin** | `stellaops/sbom-indexer` | BuildKit **generator** for build‑time SBOMs as OCI **referrers**. | CI‑side; ephemeral. |
| **Scanner.Sbomer.DockerImage** | `stellaops/scanner-cli` | CLI‑orchestrated scanner container for post‑build scans. | Local/CI; ephemeral. |
| **Feedser.WebService** | `stellaops/feedser-web` | Vulnerability ingest/normalize/merge/export (JSON + Trivy DB). | HA via Mongo locks. |
-| **Vexer.WebService** | `stellaops/vexer-web` | VEX ingest/normalize/consensus; conflict retention; exports. | HA via Mongo locks. |
+| **Excititor.WebService** | `stellaops/excititor-web` | VEX ingest/normalize/consensus; conflict retention; exports. | HA via Mongo locks. |
| **Policy Engine** | (in `scanner-web`) | YAML DSL evaluator (waivers, vendor preferences, KEV/EPSS, license, usage‑gating); produces **policy digest**. | In‑process; cache per digest. |
| **Signer** | `stellaops/signer` | **Hard gate:** validates entitlement + release integrity; mints signing cert (Fulcio keyless) or uses KMS; signs DSSE. | Stateless; HPA by QPS. |
| **Attestor** | `stellaops/attestor` | Posts DSSE bundles to **Rekor v2**; verification endpoints. | Stateless; HPA by QPS. |
@@ -72,7 +72,7 @@ flowchart LR
SW[Scanner.WebService]
WK[Scanner.Worker xN]
FEED[Feedser]
- VEX[Vexer]
+ VEX[Excititor]
POL[Policy Engine (in Scanner.Web)]
SGN[Signer\n(entitlement + signing)]
ATT[Attestor\n(Rekor v2 submit/verify)]
@@ -182,7 +182,7 @@ LS --> IA: PoE (mTLS client cert or JWT with cnf=K_inst), CRL/OCSP/introspect
* Ingests vendor, distro, OSS feeds; normalizes & merges; persists canonical advisories in Mongo; exports **deterministic JSON** and **Trivy DB**.
* Offline kit bundles for air‑gapped sites.
-### 4.2 Vexer (VEX)
+### 4.2 Excititor (VEX)
* Ingests **OpenVEX / CSAF VEX / CycloneDX VEX**; normalizes claims; retains conflicts; computes **consensus** with provider trust weights and justification gates.
@@ -195,7 +195,7 @@ LS --> IA: PoE (mTLS client cert or JWT with cnf=K_inst), CRL/OCSP/introspect
### 4.4 PASS/FAIL flow
1. SBOM (Inventory / Usage) → join with **Feedser** advisories.
-2. Apply **Vexer** consensus (statuses & justifications).
+2. Apply **Excititor** consensus (statuses & justifications).
3. Apply **Policy**; compute PASS/FAIL with waiver TTLs.
4. Sign the **final report** (DSSE via **Signer**) and log to **Rekor v2** via **Attestor**.
@@ -350,8 +350,8 @@ services:
deploy: { replicas: 4 }
depends_on: [scanner-web]
feedser: { image: stellaops/feedser-web, depends_on: [mongo] }
- vexer: { image: stellaops/vexer-web, depends_on: [mongo] }
- ui: { image: stellaops/ui, depends_on: [scanner-web, feedser, vexer] }
+ excititor: { image: stellaops/excititor-web, depends_on: [mongo] }
+ ui: { image: stellaops/ui, depends_on: [scanner-web, feedser, excititor] }
```
* **Backups:** Mongo dumps; MinIO versioned buckets & replication; Rekor v2 DB snapshots; JWKS/Fulcio/KMS key rotation.
@@ -373,7 +373,7 @@ services:
* M2: Buildx generator certified flows; cross‑registry trust policies.
* M3: Patch‑Presence plugin (signature‑based backport detection), opt‑in.
* M3: Zastava Admission control GA with policy presets and dry‑run→enforce stages.
-* Continuous: Policy UX (waiver TTLs, vendor rules), Vexer connectors expansion.
+* Continuous: Policy UX (waiver TTLs, vendor rules), Excititor connectors expansion.
---
diff --git a/docs/ARCHITECTURE_ATTESTOR.md b/docs/ARCHITECTURE_ATTESTOR.md
index f2057ede..5d9de7e8 100644
--- a/docs/ARCHITECTURE_ATTESTOR.md
+++ b/docs/ARCHITECTURE_ATTESTOR.md
@@ -1,6 +1,6 @@
# component_architecture_attestor.md — **Stella Ops Attestor** (2025Q4)
-> **Scope.** Implementation‑ready architecture for the **Attestor**: the service that **submits** DSSE envelopes to **Rekor v2**, retrieves/validates inclusion proofs, caches results, and exposes verification APIs. It accepts DSSE **only** from the **Signer** over mTLS, enforces chain‑of‑trust to Stella Ops roots, and returns `{uuid, index, proof, logURL}` to calling services (Scanner.WebService for SBOMs; backend for final reports; Vexer exports when configured).
+> **Scope.** Implementation‑ready architecture for the **Attestor**: the service that **submits** DSSE envelopes to **Rekor v2**, retrieves/validates inclusion proofs, caches results, and exposes verification APIs. It accepts DSSE **only** from the **Signer** over mTLS, enforces chain‑of‑trust to Stella Ops roots, and returns `{uuid, index, proof, logURL}` to calling services (Scanner.WebService for SBOMs; backend for final reports; Excititor exports when configured).
---
diff --git a/docs/ARCHITECTURE_AUTHORITY.md b/docs/ARCHITECTURE_AUTHORITY.md
index 956f52c6..d974d50b 100644
--- a/docs/ARCHITECTURE_AUTHORITY.md
+++ b/docs/ARCHITECTURE_AUTHORITY.md
@@ -6,7 +6,7 @@
## 0) Mission & boundaries
-**Mission.** Provide **fast, local, verifiable** authentication for Stella Ops microservices and tools by minting **very short‑lived** OAuth2/OIDC tokens that are **sender‑constrained** (DPoP or mTLS‑bound). Support RBAC scopes, multi‑tenant claims, and deterministic validation for APIs (Scanner, Signer, Attestor, Vexer, Feedser, UI, CLI, Zastava).
+**Mission.** Provide **fast, local, verifiable** authentication for Stella Ops microservices and tools by minting **very short‑lived** OAuth2/OIDC tokens that are **sender‑constrained** (DPoP or mTLS‑bound). Support RBAC scopes, multi‑tenant claims, and deterministic validation for APIs (Scanner, Signer, Attestor, Excititor, Feedser, UI, CLI, Zastava).
**Boundaries.**
@@ -43,7 +43,7 @@
```
iss = https://authority.
sub =
-aud =
+aud =
exp = (<= 300 s from iat)
iat =
nbf = iat - 30
@@ -140,7 +140,7 @@ plan? = // optional hint for UIs; not used for e
### 4.1 Audiences
* `signer` — only the **Signer** service should accept tokens with `aud=signer`.
-* `attestor`, `scanner`, `feedser`, `vexer`, `ui`, `zastava` similarly.
+* `attestor`, `scanner`, `feedser`, `excititor`, `ui`, `zastava` similarly.
Services **must** verify `aud` and **sender constraint** (DPoP/mTLS) per their policy.
@@ -153,7 +153,7 @@ Services **must** verify `aud` and **sender constraint** (DPoP/mTLS) per their p
| `scanner.scan` | Scanner.WebService | Submit scan jobs |
| `scanner.export` | Scanner.WebService | Export SBOMs |
| `scanner.read` | Scanner.WebService | Read catalog/SBOMs |
-| `vex.read` / `vex.admin` | Vexer | Query/operate |
+| `vex.read` / `vex.admin` | Excititor | Query/operate |
| `feedser.read` / `feedser.export` | Feedser | Query/exports |
| `ui.read` / `ui.admin` | UI | View/admin |
| `zastava.emit` / `zastava.enforce` | Scanner/Zastava | Runtime events / admission |
diff --git a/docs/ARCHITECTURE_CLI.md b/docs/ARCHITECTURE_CLI.md
index e0ac962a..fcd9f5ca 100644
--- a/docs/ARCHITECTURE_CLI.md
+++ b/docs/ARCHITECTURE_CLI.md
@@ -1,6 +1,6 @@
# component_architecture_cli.md — **Stella Ops CLI** (2025Q4)
-> **Scope.** Implementation‑ready architecture for **Stella Ops CLI**: command surface, process model, auth (Authority/DPoP), integration with Scanner/Vexer/Feedser/Signer/Attestor, Buildx plug‑in management, offline kit behavior, packaging, observability, security posture, and CI ergonomics.
+> **Scope.** Implementation‑ready architecture for **Stella Ops CLI**: command surface, process model, auth (Authority/DPoP), integration with Scanner/Excititor/Feedser/Signer/Attestor, Buildx plug‑in management, offline kit behavior, packaging, observability, security posture, and CI ergonomics.
---
@@ -18,7 +18,7 @@
* CLI **never** signs; it only calls **Signer**/**Attestor** via backend APIs when needed (e.g., `report --attest`).
* CLI **does not** store long‑lived credentials beyond OS keychain; tokens are **short** (Authority OpToks).
-* Heavy work (scanning, merging, policy) is executed **server‑side** (Scanner/Vexer/Feedser).
+* Heavy work (scanning, merging, policy) is executed **server‑side** (Scanner/Excititor/Feedser).
---
@@ -77,7 +77,7 @@ src/
* `policy get/set/apply` — fetch active policy, apply staged policy, compute digest.
* `feedser export` — trigger/export canonical JSON or Trivy DB (admin).
-* `vexer export` — trigger/export consensus/raw claims (admin).
+* `excititor export` — trigger/export consensus/raw claims (admin).
### 2.5 Verification
@@ -91,8 +91,8 @@ src/
### 2.7 Offline kit
-* `offline kit pull` — fetch latest **Feedser JSON + Trivy DB + Vexer exports** as a tarball from a mirror.
-* `offline kit import ` — upload the kit to on‑prem services (Feedser/Vexer).
+* `offline kit pull` — fetch latest **Feedser JSON + Trivy DB + Excititor exports** as a tarball from a mirror.
+* `offline kit import ` — upload the kit to on‑prem services (Feedser/Excititor).
* `offline kit status` — list current seed versions.
### 2.8 Utilities
@@ -122,7 +122,7 @@ src/
* `scanner` for scan/export/report/diff
* `signer` (indirect; usually backend calls Signer)
* `attestor` for verify
- * `feedser`/`vexer` for admin verbs
+ * `feedser`/`excititor` for admin verbs
CLI rejects verbs if required scopes are missing.
@@ -168,7 +168,7 @@ cli:
scanner: "https://scanner-web.internal"
attestor: "https://attestor.internal"
feedser: "https://feedser-web.internal"
- vexer: "https://vexer-web.internal"
+ excititor: "https://excititor-web.internal"
auth:
audienceDefault: "scanner"
deviceCode: true
@@ -263,7 +263,7 @@ Exit code: 2
## 13) Admin & advanced flags
-* `--authority`, `--scanner`, `--attestor`, `--feedser`, `--vexer` override config URLs.
+* `--authority`, `--scanner`, `--attestor`, `--feedser`, `--excititor` override config URLs.
* `--no-color`, `--quiet`, `--json`.
* `--timeout`, `--retries`, `--retry-backoff-ms`.
* `--ca-bundle`, `--insecure` (dev only; prints warning).
diff --git a/docs/ARCHITECTURE_DEVOPS.md b/docs/ARCHITECTURE_DEVOPS.md
index 901a6f6c..356abf31 100644
--- a/docs/ARCHITECTURE_DEVOPS.md
+++ b/docs/ARCHITECTURE_DEVOPS.md
@@ -42,7 +42,7 @@ Semantic core + calendar tag:
A release is a **bundle** of image digests + charts + manifests. All services in a bundle are **wire‑compatible**. Mixed minor versions are allowed within a bounded skew:
* **Web UI ↔ backend**: `±1 minor`.
-* **Scanner ↔ Policy/Vexer/Feedser**: `±1 minor`.
+* **Scanner ↔ Policy/Excititor/Feedser**: `±1 minor`.
* **Authority/Signer/Attestor triangle**: **must** be same minor (crypto and DPoP/mTLS binding rules).
At startup, services **self‑advertise** their semver & channel; the UI surfaces **mismatch warnings**.
@@ -90,7 +90,7 @@ At startup, services **self‑advertise** their semver & channel; the UI surface
**Gating policy**:
-* **Core images** (Authority, Scanner, Feedser, Vexer, Attestor, UI): public **read**.
+* **Core images** (Authority, Scanner, Feedser, Excititor, Attestor, UI): public **read**.
* **Enterprise add‑ons** (if any) and **pre‑release**: private repos via OAuth2 token service.
> Monetization lever is **signing** (PoE gate), not image pulls, so the core remains simple to consume.
@@ -115,7 +115,7 @@ At startup, services **self‑advertise** their semver & channel; the UI surface
/attest/ DSSE bundles + Rekor proofs
/charts/ Helm charts + values templates
/compose/ docker-compose.yml + .env template
- /plugins/ Feedser/Vexer connectors (restart-time)
+ /plugins/ Feedser/Excititor connectors (restart-time)
/policy/ example policies
/manifest/ release.yaml (see §6.1)
```
@@ -170,7 +170,7 @@ helm install stella stellaops/platform \
--set scanner.minio.endpoint=http://minio.stella.local:9000 \
--set scanner.mongo.uri=mongodb://mongo/scanner \
--set feedser.mongo.uri=mongodb://mongo/feedser \
- --set vexer.mongo.uri=mongodb://mongo/vexer
+ --set excititor.mongo.uri=mongodb://mongo/excititor
```
* Post‑install job registers **Authority clients** (Scanner, Signer, Attestor, UI) and prints **bootstrap** URLs and client credentials (sealed secrets).
@@ -185,7 +185,7 @@ helm install stella stellaops/platform \
1. Authority (stateless, dual‑key rotation ready)
2. Signer/Attestor (same minor)
3. Scanner WebService & Workers
- 4. Feedser, then Vexer (schema migrations are expand/contract)
+ 4. Feedser, then Excititor (schema migrations are expand/contract)
5. UI last
* **DB migrations** are **expand/contract**:
@@ -266,7 +266,7 @@ s3://stellaops/
feedser/
json//...
trivy//...
- vexer/
+ excititor/
exports//...
attestor/
dsse/.json
@@ -289,14 +289,14 @@ s3://stellaops/
### 7.4 Mongo retention
* **Scanner**: `runtime.events` use TTL (e.g., 30–90 days); **catalog** permanent.
-* **Feedser/Vexer**: raw docs keep **last N windows**; canonical stores permanent.
+* **Feedser/Excititor**: raw docs keep **last N windows**; canonical stores permanent.
* **Attestor**: `entries` permanent; `dedupe` TTL 24–48h.
---
## 8) Observability & SLOs (operations)
-* **Uptime SLO**: 99.9% for Signer/Authority/Attestor; 99.5% for Scanner WebService; Vexer/Feedser 99.0%.
+* **Uptime SLO**: 99.9% for Signer/Authority/Attestor; 99.5% for Scanner WebService; Excititor/Feedser 99.0%.
* **Error budgets**: tracked per month; dashboards show burn rates.
* **Golden signals**:
@@ -410,8 +410,8 @@ services:
deploy: { replicas: 4 }
feedser:
image: registry.stella-ops.org/stellaops/feedser@sha256:...
- vexer:
- image: registry.stella-ops.org/stellaops/vexer@sha256:...
+ excititor:
+ image: registry.stella-ops.org/stellaops/excititor@sha256:...
web-ui:
image: registry.stella-ops.org/stellaops/web-ui@sha256:...
mongo:
@@ -446,7 +446,7 @@ services:
* `signer.requests_total{result="success"}/minute` > 0 (when scans occur).
* `attestor.submit_latency_seconds{quantile=0.95}` < 0.3.
* `scanner.scan_latency_seconds{quantile=0.95}` < target per image size.
-* `feedser.export.duration_seconds` stable; `vexer.consensus.conflicts_total` not exploding after policy changes.
+* `feedser.export.duration_seconds` stable; `excititor.consensus.conflicts_total` not exploding after policy changes.
* MinIO `s3_requests_errors_total` near zero; Mongo `opcounters` hit expected baseline.
### Appendix B — Upgrade safety checklist
diff --git a/docs/ARCHITECTURE_VEXER.md b/docs/ARCHITECTURE_EXCITITOR.md
similarity index 93%
rename from docs/ARCHITECTURE_VEXER.md
rename to docs/ARCHITECTURE_EXCITITOR.md
index 1f6920f9..18888d19 100644
--- a/docs/ARCHITECTURE_VEXER.md
+++ b/docs/ARCHITECTURE_EXCITITOR.md
@@ -1,6 +1,6 @@
-# component_architecture_vexer.md — **Stella Ops Vexer** (2025Q4)
+# component_architecture_excititor.md — **Stella Ops Excititor** (2025Q4)
-> **Scope.** This document specifies the **Vexer** service: its purpose, trust model, data structures, APIs, plug‑in contracts, storage schema, normalization/consensus algorithms, performance budgets, testing matrix, and how it integrates with Scanner, Policy, Feedser, and the attestation chain. It is implementation‑ready.
+> **Scope.** This document specifies the **Excititor** service: its purpose, trust model, data structures, APIs, plug‑in contracts, storage schema, normalization/consensus algorithms, performance budgets, testing matrix, and how it integrates with Scanner, Policy, Feedser, and the attestation chain. It is implementation‑ready.
---
@@ -10,9 +10,9 @@
**Boundaries.**
-* Vexer **does not** decide PASS/FAIL. It supplies **evidence** (statuses + justifications + provenance weights).
-* Vexer preserves **conflicting claims** unchanged; consensus encodes how we would pick, but the raw set is always exportable.
-* VEX consumption is **backend‑only**: Scanner never applies VEX. The backend’s **Policy Engine** asks Vexer for status evidence and then decides what to show.
+* Excititor **does not** decide PASS/FAIL. It supplies **evidence** (statuses + justifications + provenance weights).
+* Excititor preserves **conflicting claims** unchanged; consensus encodes how we would pick, but the raw set is always exportable.
+* VEX consumption is **backend‑only**: Scanner never applies VEX. The backend’s **Policy Engine** asks Excititor for status evidence and then decides what to show.
---
@@ -52,7 +52,7 @@ VexClaim
* `rollupStatus` (after policy weights/justification gates),
* `sources[]` (winning + losing claims with weights & reasons),
- * `policyRevisionId` (identifier of the Vexer policy used),
+ * `policyRevisionId` (identifier of the Excititor policy used),
* `consensusDigest` (stable SHA‑256 over canonical JSON).
* **Raw claims** export for auditing (unchanged, with provenance).
* **Provider snapshots** (per source, last N days) for operator debugging.
@@ -76,13 +76,13 @@ All exports are **deterministic**, and (optionally) **attested** via DSSE and lo
* **Fallback:** `oci:/@` for image‑level VEX.
* **Special cases:** kernel modules, firmware, platforms → provider‑specific mapping helpers (connector captures provider’s product taxonomy → canonical `productKey`).
-> Vexer does not invent identities. If a provider cannot be mapped to purl/CPE/NVRA deterministically, we keep the native **product string** and mark the claim as **non‑joinable**; the backend will ignore it unless a policy explicitly whitelists that provider mapping.
+> Excititor does not invent identities. If a provider cannot be mapped to purl/CPE/NVRA deterministically, we keep the native **product string** and mark the claim as **non‑joinable**; the backend will ignore it unless a policy explicitly whitelists that provider mapping.
---
## 3) Storage schema (MongoDB)
-Database: `vexer`
+Database: `excititor`
### 3.1 Collections
@@ -246,7 +246,7 @@ public interface IVexConnector
### 6.1 Inputs
* Set **S** of `VexClaim` for the key.
-* **Vexer policy snapshot**:
+* **Excititor policy snapshot**:
* **weights** per provider tier and per provider overrides.
* **justification gates** (e.g., require justification for `not_affected` to be acceptable).
@@ -327,8 +327,8 @@ GET /providers/{id}/status → last fetch, doc counts, signature stats
## 9) Configuration (YAML)
```yaml
-vexer:
- mongo: { uri: "mongodb://mongo/vexer" }
+excititor:
+ mongo: { uri: "mongodb://mongo/excititor" }
s3:
endpoint: http://minio:9000
bucket: stellaops
diff --git a/docs/ARCHITECTURE_FEEDSER.md b/docs/ARCHITECTURE_FEEDSER.md
index d394d635..da3ba502 100644
--- a/docs/ARCHITECTURE_FEEDSER.md
+++ b/docs/ARCHITECTURE_FEEDSER.md
@@ -1,6 +1,6 @@
# component_architecture_feedser.md — **Stella Ops Feedser** (2025Q4)
-> **Scope.** Implementation‑ready architecture for **Feedser**: the vulnerability ingest/normalize/merge/export subsystem that produces deterministic advisory data for the Scanner + Policy + Vexer pipeline. Covers domain model, connectors, merge rules, storage schema, exports, APIs, performance, security, and test matrices.
+> **Scope.** Implementation‑ready architecture for **Feedser**: the vulnerability ingest/normalize/merge/export subsystem that produces deterministic advisory data for the Scanner + Policy + Excititor pipeline. Covers domain model, connectors, merge rules, storage schema, exports, APIs, performance, security, and test matrices.
---
diff --git a/docs/ARCHITECTURE_SCANNER.md b/docs/ARCHITECTURE_SCANNER.md
index abee0e0e..555c11d3 100644
--- a/docs/ARCHITECTURE_SCANNER.md
+++ b/docs/ARCHITECTURE_SCANNER.md
@@ -1,6 +1,6 @@
# component_architecture_scanner.md — **Stella Ops Scanner** (2025Q4)
-> **Scope.** Implementation‑ready architecture for the **Scanner** subsystem: WebService, Workers, analyzers, SBOM assembly (inventory & usage), per‑layer caching, three‑way diffs, artifact catalog (MinIO+Mongo), attestation hand‑off, and scale/security posture. This document is the contract between the scanning plane and everything else (Policy, Vexer, Feedser, UI, CLI).
+> **Scope.** Implementation‑ready architecture for the **Scanner** subsystem: WebService, Workers, analyzers, SBOM assembly (inventory & usage), per‑layer caching, three‑way diffs, artifact catalog (MinIO+Mongo), attestation hand‑off, and scale/security posture. This document is the contract between the scanning plane and everything else (Policy, Excititor, Feedser, UI, CLI).
---
@@ -10,7 +10,7 @@
**Boundaries.**
-* Scanner **does not** produce PASS/FAIL. The backend (Policy + Vexer + Feedser) decides presentation and verdicts.
+* Scanner **does not** produce PASS/FAIL. The backend (Policy + Excititor + Feedser) decides presentation and verdicts.
* Scanner **does not** keep third‑party SBOM warehouses. It may **bind** to existing attestations for exact hashes.
* Core analyzers are **deterministic** (no fuzzy identity). Optional heuristic plug‑ins (e.g., patch‑presence) run under explicit flags and never contaminate the core SBOM.
diff --git a/docs/ARCHITECTURE_SIGNER.md b/docs/ARCHITECTURE_SIGNER.md
index fda371ea..b116f879 100644
--- a/docs/ARCHITECTURE_SIGNER.md
+++ b/docs/ARCHITECTURE_SIGNER.md
@@ -223,7 +223,7 @@ Supported **predicate types** (extensible):
* `https://stella-ops.org/attestations/sbom/1` (SBOM emissions)
* `https://stella-ops.org/attestations/report/1` (final PASS/FAIL reports)
-* `https://stella-ops.org/attestations/vex-export/1` (Vexer exports; optional)
+* `https://stella-ops.org/attestations/vex-export/1` (Excititor exports; optional)
**Validation**:
diff --git a/docs/ARCHITECTURE_UI.md b/docs/ARCHITECTURE_UI.md
index 19d5d156..1e00d13b 100644
--- a/docs/ARCHITECTURE_UI.md
+++ b/docs/ARCHITECTURE_UI.md
@@ -1,6 +1,6 @@
# component_architecture_web_ui.md — **Stella Ops Web UI** (2025Q4)
-> **Scope.** Implementation‑ready architecture for the **Angular SPA** that operators and developers use to drive Stella Ops. This document defines UX surfaces, module boundaries, data flows, auth, RBAC, real‑time updates, performance targets, i18n/a11y, security headers, testing and deployment. The UI is a *consumer* of backend APIs (Scanner, Policy, Vexer, Feedser, Attestor, Authority) and never performs scanning, merging, or signing on its own.
+> **Scope.** Implementation‑ready architecture for the **Angular SPA** that operators and developers use to drive Stella Ops. This document defines UX surfaces, module boundaries, data flows, auth, RBAC, real‑time updates, performance targets, i18n/a11y, security headers, testing and deployment. The UI is a *consumer* of backend APIs (Scanner, Policy, Excititor, Feedser, Attestor, Authority) and never performs scanning, merging, or signing on its own.
---
@@ -10,7 +10,7 @@
* Scans (status, SBOMs, diffs, EntryTrace, attestation).
* Policy management (rules, exemptions, VEX consumption view).
-* Vulnerability intel (Feedser status), VEX consensus exploration (Vexer).
+* Vulnerability intel (Feedser status), VEX consensus exploration (Excititor).
* Runtime posture (Zastava observer + admission).
* Admin operations (tenants, tokens, quotas, licensing posture).
@@ -86,7 +86,7 @@ Each feature folder builds as a **standalone route** (lazy loaded). All HTTP sha
* **VEX inclusion controls**: weight sliders (visualization only), provider allow/deny toggles.
* **Preview**: select SBOM (or image digest) → show verdict under staged policy.
-### 3.5 Vexer
+### 3.5 Excititor
* **Claims explorer**: search by vulnId/productKey/provider; show raw claim (status, justification, evidence).
* **Consensus view**: rollup per (vuln, product) with accepted/rejected sources, weights, timestamps.
@@ -136,7 +136,7 @@ Each feature folder builds as a **standalone route** (lazy loaded). All HTTP sha
* **`core/http/api-client.ts`** centralizes:
- * Base URLs (Scanner, Vexer, Feedser, Attestor).
+ * Base URLs (Scanner, Excititor, Feedser, Attestor).
* **Retry** policies on idempotent GETs (backoff + jitter).
* **Problem+JSON** parser → uniform error toasts with correlation ID.
* **SSE** helper (EventSource) with auto‑reconnect & backpressure.
@@ -144,7 +144,7 @@ Each feature folder builds as a **standalone route** (lazy loaded). All HTTP sha
* Typed API clients (DTOs in `core/api/models.ts`):
- * `ScannerApi`, `PolicyApi`, `VexerApi`, `FeedserApi`, `AttestorApi`, `AuthorityApi`.
+ * `ScannerApi`, `PolicyApi`, `ExcititorApi`, `FeedserApi`, `AttestorApi`, `AuthorityApi`.
**DTO examples (abbrev):**
@@ -184,7 +184,7 @@ export interface VexConsensus {
* **Huge tables** rendered with **virtual scrolling** (CDK Virtual Scroll); sort/filter performed client‑side for ≤ 20k rows; beyond that, server‑side queries via BOM‑Index endpoints.
* **Component row** shows purl, version, origin (OS pkg / metadata / linker / attested), licenses, and **used** badge (Usage view).
-* **Diff**: compact heatmap per layer; clicking opens a right‑pane with evidence: introducing paths, file hashes, VEX notes (from Vexer consensus) and links to advisories (Feedser).
+* **Diff**: compact heatmap per layer; clicking opens a right‑pane with evidence: introducing paths, file hashes, VEX notes (from Excititor consensus) and links to advisories (Feedser).
---
diff --git a/docs/VEXER_SCORRING.md b/docs/EXCITITOR_SCORRING.md
similarity index 79%
rename from docs/VEXER_SCORRING.md
rename to docs/EXCITITOR_SCORRING.md
index bf79b85a..a6a53a47 100644
--- a/docs/VEXER_SCORRING.md
+++ b/docs/EXCITITOR_SCORRING.md
@@ -1,6 +1,6 @@
## Status
-This document tracks the future-looking risk scoring model for Vexer. The calculation below is not active yet; Sprint 7 work will add the required schema fields, policy controls, and services. Until that ships, Vexer emits consensus statuses without numeric scores.
+This document tracks the future-looking risk scoring model for Excititor. The calculation below is not active yet; Sprint 7 work will add the required schema fields, policy controls, and services. Until that ships, Excititor emits consensus statuses without numeric scores.
## Scoring model (target state)
@@ -19,8 +19,8 @@ Safeguards: freeze boosts when product identity is unknown, clamp outputs ≥0,
| Phase | Scope | Artifacts |
| --- | --- | --- |
-| **Phase 1 – Schema foundations** | Extend Vexer consensus/claims and Feedser canonical advisories with severity, KEV, EPSS, and expose α/β + weight ceilings in policy. | Sprint 7 tasks `VEXER-CORE-02-001`, `VEXER-POLICY-02-001`, `VEXER-STORAGE-02-001`, `FEEDCORE-ENGINE-07-001`. |
-| **Phase 2 – Deterministic score engine** | Implement a scoring component that executes alongside consensus and persists score envelopes with hashes. | Planned task `VEXER-CORE-02-002` (backlog). |
+| **Phase 1 – Schema foundations** | Extend Excititor consensus/claims and Feedser canonical advisories with severity, KEV, EPSS, and expose α/β + weight ceilings in policy. | Sprint 7 tasks `EXCITITOR-CORE-02-001`, `EXCITITOR-POLICY-02-001`, `EXCITITOR-STORAGE-02-001`, `FEEDCORE-ENGINE-07-001`. |
+| **Phase 2 – Deterministic score engine** | Implement a scoring component that executes alongside consensus and persists score envelopes with hashes. | Planned task `EXCITITOR-CORE-02-002` (backlog). |
| **Phase 3 – Surfacing & enforcement** | Expose scores via WebService/CLI, integrate with Feedser noise priors, and enforce policy-based suppressions. | To be scheduled after Phase 2. |
## Data model (after Phase 1)
@@ -60,7 +60,7 @@ Safeguards: freeze boosts when product identity is unknown, clamp outputs ≥0,
## Operational guidance
-* **Inputs**: Feedser delivers severity/KEV/EPSS via the advisory event log; Vexer connectors load VEX statements. Policy owns trust tiers and coefficients.
+* **Inputs**: Feedser delivers severity/KEV/EPSS via the advisory event log; Excititor connectors load VEX statements. Policy owns trust tiers and coefficients.
* **Processing**: the scoring engine (Phase 2) runs next to consensus, storing results with deterministic hashes so exports and attestations can reference them.
* **Consumption**: WebService/CLI will return consensus plus score; scanners may suppress findings only when policy-authorized VEX gating and signed score envelopes agree.
diff --git a/docs/README.md b/docs/README.md
index 884b0798..d904ec76 100755
--- a/docs/README.md
+++ b/docs/README.md
@@ -37,7 +37,7 @@ Everything here is open‑source and versioned — when you check out a git ta
- **08 – Module Architecture Dossiers**
- [Scanner](ARCHITECTURE_SCANNER.md)
- [Feedser](ARCHITECTURE_FEEDSER.md)
- - [Vexer](ARCHITECTURE_VEXER.md)
+ - [Excititor](ARCHITECTURE_EXCITITOR.md)
- [Signer](ARCHITECTURE_SIGNER.md)
- [Attestor](ARCHITECTURE_ATTESTOR.md)
- [Authority](ARCHITECTURE_AUTHORITY.md)
@@ -48,9 +48,9 @@ Everything here is open‑source and versioned — when you check out a git ta
- **09 – [API & CLI Reference](09_API_CLI_REFERENCE.md)**
- **10 – [Plug‑in SDK Guide](10_PLUGIN_SDK_GUIDE.md)**
- **10 – [Feedser CLI Quickstart](10_FEEDSER_CLI_QUICKSTART.md)**
-- **30 – [Vexer Connector Packaging Guide](dev/30_VEXER_CONNECTOR_GUIDE.md)**
+- **30 – [Excititor Connector Packaging Guide](dev/30_EXCITITOR_CONNECTOR_GUIDE.md)**
- **30 – Developer Templates**
- - [Vexer Connector Skeleton](dev/templates/vexer-connector/)
+ - [Excititor Connector Skeleton](dev/templates/excititor-connector/)
- **11 – [Authority Service](11_AUTHORITY.md)**
- **11 – [Data Schemas](11_DATA_SCHEMAS.md)**
- **12 – [Performance Workbook](12_PERFORMANCE_WORKBOOK.md)**
diff --git a/docs/dev/30_VEXER_CONNECTOR_GUIDE.md b/docs/dev/30_EXCITITOR_CONNECTOR_GUIDE.md
similarity index 78%
rename from docs/dev/30_VEXER_CONNECTOR_GUIDE.md
rename to docs/dev/30_EXCITITOR_CONNECTOR_GUIDE.md
index 4affd54f..2ac21081 100644
--- a/docs/dev/30_VEXER_CONNECTOR_GUIDE.md
+++ b/docs/dev/30_EXCITITOR_CONNECTOR_GUIDE.md
@@ -1,18 +1,18 @@
-# Vexer Connector Packaging Guide
+# Excititor Connector Packaging Guide
-> **Audience:** teams implementing new Vexer provider plug‑ins (CSAF feeds,
+> **Audience:** teams implementing new Excititor provider plug‑ins (CSAF feeds,
> OpenVEX attestations, etc.)
-> **Prerequisites:** read `docs/ARCHITECTURE_VEXER.md` and the module
-> `AGENTS.md` in `src/StellaOps.Vexer.Connectors.Abstractions/`.
+> **Prerequisites:** read `docs/ARCHITECTURE_EXCITITOR.md` and the module
+> `AGENTS.md` in `src/StellaOps.Excititor.Connectors.Abstractions/`.
-The Vexer connector SDK gives you:
+The Excititor connector SDK gives you:
- `VexConnectorBase` – deterministic logging, SHA‑256 helpers, time provider.
- `VexConnectorOptionsBinder` – strongly typed YAML/JSON configuration binding.
- `IVexConnectorOptionsValidator` – custom validation hooks (offline defaults, auth invariants).
- `VexConnectorDescriptor` & metadata helpers for consistent telemetry.
-This guide explains how to package a connector so the Vexer Worker/WebService
+This guide explains how to package a connector so the Excititor Worker/WebService
can load it via the plugin host.
---
@@ -20,12 +20,12 @@ can load it via the plugin host.
## 1. Project layout
Start from the template under
-`docs/dev/templates/vexer-connector/`. It contains:
+`docs/dev/templates/excititor-connector/`. It contains:
```
-Vexer.MyConnector/
+Excititor.MyConnector/
├── src/
-│ ├── Vexer.MyConnector.csproj
+│ ├── Excititor.MyConnector.csproj
│ ├── MyConnectorOptions.cs
│ ├── MyConnector.cs
│ └── MyConnectorPlugin.cs
@@ -36,8 +36,8 @@ Vexer.MyConnector/
Key points:
- Target `net10.0`, enable `TreatWarningsAsErrors`, reference the
- `StellaOps.Vexer.Connectors.Abstractions` project (or NuGet once published).
-- Keep project ID prefix `StellaOps.Vexer.Connectors.` so the
+ `StellaOps.Excititor.Connectors.Abstractions` project (or NuGet once published).
+- Keep project ID prefix `StellaOps.Excititor.Connectors.` so the
plugin loader can discover it with the default search pattern.
### 1.1 csproj snippet
@@ -51,7 +51,7 @@ Key points:
true
-
+
```
@@ -135,7 +135,7 @@ this contract today.
public sealed class MyConnectorPlugin : IConnectorPlugin
{
private static readonly VexConnectorDescriptor Descriptor =
- new("vexer:my-provider", VexProviderKind.Vendor, "My Provider VEX");
+ new("excititor:my-provider", VexProviderKind.Vendor, "My Provider VEX");
public string Name => Descriptor.DisplayName;
@@ -150,8 +150,8 @@ public sealed class MyConnectorPlugin : IConnectorPlugin
}
```
-> **Note:** the Vexer Worker currently instantiates connectors through the
-> shared `IConnectorPlugin` contract. Once a dedicated Vexer plugin interface
+> **Note:** the Excititor Worker currently instantiates connectors through the
+> shared `IConnectorPlugin` contract. Once a dedicated Excititor plugin interface
> lands you simply swap the base interface; the descriptor/connector code
> remains unchanged.
@@ -159,18 +159,18 @@ Provide a manifest describing the assembly for operational tooling:
```yaml
# manifest/connector.manifest.yaml
-id: vexer-my-provider
-assembly: StellaOps.Vexer.Connectors.MyProvider.dll
-entryPoint: StellaOps.Vexer.Connectors.MyProvider.MyConnectorPlugin
+id: excititor-my-provider
+assembly: StellaOps.Excititor.Connectors.MyProvider.dll
+entryPoint: StellaOps.Excititor.Connectors.MyProvider.MyConnectorPlugin
description: >
Official VEX feed for ExampleCorp products (CSAF JSON, daily updates).
tags:
- - vexer
+ - excititor
- csaf
- vendor
```
-Store manifests under `/opt/stella/vexer/plugins//manifest/` in
+Store manifests under `/opt/stella/excititor/plugins//manifest/` in
production so the deployment tooling can inventory and verify plug‑ins.
---
@@ -178,9 +178,9 @@ production so the deployment tooling can inventory and verify plug‑ins.
## 4. Packaging workflow
1. `dotnet publish -c Release` → copy the published DLLs to
- `/opt/stella/vexer/plugins//`.
+ `/opt/stella/excititor/plugins//`.
2. Place `connector.manifest.yaml` next to the binaries.
-3. Restart the Vexer Worker or WebService (hot reload not supported yet).
+3. Restart the Excititor Worker or WebService (hot reload not supported yet).
4. Verify logs: `VEX-ConnectorLoader` should list the connector descriptor.
### 4.1 Offline kits
@@ -195,7 +195,7 @@ production so the deployment tooling can inventory and verify plug‑ins.
## 5. Testing checklist
- Unit tests around options binding & validators.
-- Integration tests (future `StellaOps.Vexer.Connectors.Abstractions.Tests`)
+- Integration tests (future `StellaOps.Excititor.Connectors.Abstractions.Tests`)
verifying deterministic logging scopes:
`logger.BeginScope` should produce `vex.connector.id`, `vex.connector.kind`,
and `vex.connector.operation`.
@@ -206,7 +206,7 @@ production so the deployment tooling can inventory and verify plug‑ins.
## 6. Reference template
-See `docs/dev/templates/vexer-connector/` for the full quick‑start including:
+See `docs/dev/templates/excititor-connector/` for the full quick‑start including:
- Sample options class + validator.
- Connector implementation inheriting from `VexConnectorBase`.
diff --git a/docs/dev/templates/excititor-connector/manifest/connector.manifest.yaml b/docs/dev/templates/excititor-connector/manifest/connector.manifest.yaml
new file mode 100644
index 00000000..20c222c6
--- /dev/null
+++ b/docs/dev/templates/excititor-connector/manifest/connector.manifest.yaml
@@ -0,0 +1,8 @@
+id: excititor-my-provider
+assembly: StellaOps.Excititor.Connectors.MyProvider.dll
+entryPoint: StellaOps.Excititor.Connectors.MyProvider.MyConnectorPlugin
+description: |
+ Example connector template. Replace metadata before shipping.
+tags:
+ - excititor
+ - template
diff --git a/docs/dev/templates/vexer-connector/src/Vexer.MyConnector.csproj b/docs/dev/templates/excititor-connector/src/Excititor.MyConnector.csproj
similarity index 71%
rename from docs/dev/templates/vexer-connector/src/Vexer.MyConnector.csproj
rename to docs/dev/templates/excititor-connector/src/Excititor.MyConnector.csproj
index 3f18fde3..03cd0768 100644
--- a/docs/dev/templates/vexer-connector/src/Vexer.MyConnector.csproj
+++ b/docs/dev/templates/excititor-connector/src/Excititor.MyConnector.csproj
@@ -7,6 +7,6 @@
-
+
diff --git a/docs/dev/templates/vexer-connector/src/MyConnector.cs b/docs/dev/templates/excititor-connector/src/MyConnector.cs
similarity index 95%
rename from docs/dev/templates/vexer-connector/src/MyConnector.cs
rename to docs/dev/templates/excititor-connector/src/MyConnector.cs
index d7a8eccd..edd5456b 100644
--- a/docs/dev/templates/vexer-connector/src/MyConnector.cs
+++ b/docs/dev/templates/excititor-connector/src/MyConnector.cs
@@ -2,10 +2,10 @@ using System.Collections.Generic;
using System.Collections.Immutable;
using System.Runtime.CompilerServices;
using Microsoft.Extensions.Logging;
-using StellaOps.Vexer.Connectors.Abstractions;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Connectors.Abstractions;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Connectors.MyProvider;
+namespace StellaOps.Excititor.Connectors.MyProvider;
public sealed class MyConnector : VexConnectorBase
{
diff --git a/docs/dev/templates/vexer-connector/src/MyConnectorOptions.cs b/docs/dev/templates/excititor-connector/src/MyConnectorOptions.cs
similarity index 85%
rename from docs/dev/templates/vexer-connector/src/MyConnectorOptions.cs
rename to docs/dev/templates/excititor-connector/src/MyConnectorOptions.cs
index c8cd857e..1a7b14a3 100644
--- a/docs/dev/templates/vexer-connector/src/MyConnectorOptions.cs
+++ b/docs/dev/templates/excititor-connector/src/MyConnectorOptions.cs
@@ -1,6 +1,6 @@
using System.ComponentModel.DataAnnotations;
-namespace StellaOps.Vexer.Connectors.MyProvider;
+namespace StellaOps.Excititor.Connectors.MyProvider;
public sealed class MyConnectorOptions
{
diff --git a/docs/dev/templates/vexer-connector/src/MyConnectorOptionsValidator.cs b/docs/dev/templates/excititor-connector/src/MyConnectorOptionsValidator.cs
similarity index 80%
rename from docs/dev/templates/vexer-connector/src/MyConnectorOptionsValidator.cs
rename to docs/dev/templates/excititor-connector/src/MyConnectorOptionsValidator.cs
index 04723e5b..f7f1ab54 100644
--- a/docs/dev/templates/vexer-connector/src/MyConnectorOptionsValidator.cs
+++ b/docs/dev/templates/excititor-connector/src/MyConnectorOptionsValidator.cs
@@ -1,7 +1,7 @@
using System.Collections.Generic;
-using StellaOps.Vexer.Connectors.Abstractions;
+using StellaOps.Excititor.Connectors.Abstractions;
-namespace StellaOps.Vexer.Connectors.MyProvider;
+namespace StellaOps.Excititor.Connectors.MyProvider;
public sealed class MyConnectorOptionsValidator : IVexConnectorOptionsValidator
{
diff --git a/docs/dev/templates/vexer-connector/src/MyConnectorPlugin.cs b/docs/dev/templates/excititor-connector/src/MyConnectorPlugin.cs
similarity index 82%
rename from docs/dev/templates/vexer-connector/src/MyConnectorPlugin.cs
rename to docs/dev/templates/excititor-connector/src/MyConnectorPlugin.cs
index d12b573d..187b8325 100644
--- a/docs/dev/templates/vexer-connector/src/MyConnectorPlugin.cs
+++ b/docs/dev/templates/excititor-connector/src/MyConnectorPlugin.cs
@@ -1,15 +1,15 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using StellaOps.Plugin;
-using StellaOps.Vexer.Connectors.Abstractions;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Connectors.Abstractions;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Connectors.MyProvider;
+namespace StellaOps.Excititor.Connectors.MyProvider;
public sealed class MyConnectorPlugin : IConnectorPlugin
{
private static readonly VexConnectorDescriptor Descriptor = new(
- id: "vexer:my-provider",
+ id: "excititor:my-provider",
kind: VexProviderKind.Vendor,
displayName: "My Provider VEX");
diff --git a/docs/dev/templates/vexer-connector/manifest/connector.manifest.yaml b/docs/dev/templates/vexer-connector/manifest/connector.manifest.yaml
deleted file mode 100644
index 307b4bd5..00000000
--- a/docs/dev/templates/vexer-connector/manifest/connector.manifest.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: vexer-my-provider
-assembly: StellaOps.Vexer.Connectors.MyProvider.dll
-entryPoint: StellaOps.Vexer.Connectors.MyProvider.MyConnectorPlugin
-description: |
- Example connector template. Replace metadata before shipping.
-tags:
- - vexer
- - template
diff --git a/src/StellaOps.Cli/TASKS.md b/src/StellaOps.Cli/TASKS.md
index 1b7fc261..6f2cdc9e 100644
--- a/src/StellaOps.Cli/TASKS.md
+++ b/src/StellaOps.Cli/TASKS.md
@@ -1,4 +1,4 @@
-If you are working on this file you need to read docs/ARCHITECTURE_VEXER.md and ./AGENTS.md).
+If you are working on this file you need to read docs/ARCHITECTURE_EXCITITOR.md and ./AGENTS.md).
# TASKS
| Task | Owner(s) | Depends on | Notes |
|---|---|---|---|
@@ -14,6 +14,6 @@ If you are working on this file you need to read docs/ARCHITECTURE_VEXER.md and
|Expose auth client resilience settings|DevEx/CLI|Auth libraries LIB5|**DONE (2025-10-10)** – CLI options now bind resilience knobs, `AddStellaOpsAuthClient` honours them, and tests cover env overrides.|
|Document advanced Authority tuning|Docs/CLI|Expose auth client resilience settings|**DONE (2025-10-10)** – docs/09 and docs/10 describe retry/offline settings with env examples and point to the integration guide.|
|Surface password policy diagnostics in CLI output|DevEx/CLI, Security Guild|AUTHSEC-CRYPTO-02-004|**DONE (2025-10-15)** – CLI startup runs the Authority plug-in analyzer, logs weakened password policy warnings with manifest paths, added unit tests (`dotnet test src/StellaOps.Cli.Tests`) and updated docs/09 with remediation guidance.|
-|VEXER-CLI-01-001 – Add `vexer` command group|DevEx/CLI|VEXER-WEB-01-001|TODO – Introduce `vexer` verb hierarchy (init/pull/resume/list-providers/export/verify/reconcile) forwarding to WebService with token auth and consistent exit codes.|
-|VEXER-CLI-01-002 – Export download & attestation UX|DevEx/CLI|VEXER-CLI-01-001, VEXER-EXPORT-01-001|TODO – Display export metadata (sha256, size, Rekor link), support optional artifact download path, and handle cache hits gracefully.|
-|VEXER-CLI-01-003 – CLI docs & examples for Vexer|Docs/CLI|VEXER-CLI-01-001|TODO – Update docs/09_API_CLI_REFERENCE.md and quickstart snippets to cover Vexer verbs, offline guidance, and attestation verification workflow.|
+|EXCITITOR-CLI-01-001 – Add `excititor` command group|DevEx/CLI|EXCITITOR-WEB-01-001|TODO – Introduce `excititor` verb hierarchy (init/pull/resume/list-providers/export/verify/reconcile) forwarding to WebService with token auth and consistent exit codes.|
+|EXCITITOR-CLI-01-002 – Export download & attestation UX|DevEx/CLI|EXCITITOR-CLI-01-001, EXCITITOR-EXPORT-01-001|TODO – Display export metadata (sha256, size, Rekor link), support optional artifact download path, and handle cache hits gracefully.|
+|EXCITITOR-CLI-01-003 – CLI docs & examples for Excititor|Docs/CLI|EXCITITOR-CLI-01-001|TODO – Update docs/09_API_CLI_REFERENCE.md and quickstart snippets to cover Excititor verbs, offline guidance, and attestation verification workflow.|
diff --git a/src/StellaOps.Vexer.ArtifactStores.S3.Tests/S3ArtifactClientTests.cs b/src/StellaOps.Excititor.ArtifactStores.S3.Tests/S3ArtifactClientTests.cs
similarity index 91%
rename from src/StellaOps.Vexer.ArtifactStores.S3.Tests/S3ArtifactClientTests.cs
rename to src/StellaOps.Excititor.ArtifactStores.S3.Tests/S3ArtifactClientTests.cs
index 16f9061b..a867f2cd 100644
--- a/src/StellaOps.Vexer.ArtifactStores.S3.Tests/S3ArtifactClientTests.cs
+++ b/src/StellaOps.Excititor.ArtifactStores.S3.Tests/S3ArtifactClientTests.cs
@@ -1,10 +1,10 @@
using Amazon.S3;
using Amazon.S3.Model;
using Moq;
-using StellaOps.Vexer.ArtifactStores.S3;
-using StellaOps.Vexer.Export;
+using StellaOps.Excititor.ArtifactStores.S3;
+using StellaOps.Excititor.Export;
-namespace StellaOps.Vexer.ArtifactStores.S3.Tests;
+namespace StellaOps.Excititor.ArtifactStores.S3.Tests;
public sealed class S3ArtifactClientTests
{
diff --git a/src/StellaOps.Vexer.ArtifactStores.S3.Tests/StellaOps.Vexer.ArtifactStores.S3.Tests.csproj b/src/StellaOps.Excititor.ArtifactStores.S3.Tests/StellaOps.Excititor.ArtifactStores.S3.Tests.csproj
similarity index 77%
rename from src/StellaOps.Vexer.ArtifactStores.S3.Tests/StellaOps.Vexer.ArtifactStores.S3.Tests.csproj
rename to src/StellaOps.Excititor.ArtifactStores.S3.Tests/StellaOps.Excititor.ArtifactStores.S3.Tests.csproj
index 43bbc0f4..d9b0d0c6 100644
--- a/src/StellaOps.Vexer.ArtifactStores.S3.Tests/StellaOps.Vexer.ArtifactStores.S3.Tests.csproj
+++ b/src/StellaOps.Excititor.ArtifactStores.S3.Tests/StellaOps.Excititor.ArtifactStores.S3.Tests.csproj
@@ -10,6 +10,6 @@
-
+
diff --git a/src/StellaOps.Vexer.ArtifactStores.S3/Extensions/ServiceCollectionExtensions.cs b/src/StellaOps.Excititor.ArtifactStores.S3/Extensions/ServiceCollectionExtensions.cs
similarity index 92%
rename from src/StellaOps.Vexer.ArtifactStores.S3/Extensions/ServiceCollectionExtensions.cs
rename to src/StellaOps.Excititor.ArtifactStores.S3/Extensions/ServiceCollectionExtensions.cs
index 483956b4..7717cd41 100644
--- a/src/StellaOps.Vexer.ArtifactStores.S3/Extensions/ServiceCollectionExtensions.cs
+++ b/src/StellaOps.Excititor.ArtifactStores.S3/Extensions/ServiceCollectionExtensions.cs
@@ -3,9 +3,9 @@ using Amazon.Runtime;
using Amazon.S3;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Export;
+using StellaOps.Excititor.Export;
-namespace StellaOps.Vexer.ArtifactStores.S3.Extensions;
+namespace StellaOps.Excititor.ArtifactStores.S3.Extensions;
public static class ServiceCollectionExtensions
{
diff --git a/src/StellaOps.Vexer.ArtifactStores.S3/S3ArtifactClient.cs b/src/StellaOps.Excititor.ArtifactStores.S3/S3ArtifactClient.cs
similarity index 97%
rename from src/StellaOps.Vexer.ArtifactStores.S3/S3ArtifactClient.cs
rename to src/StellaOps.Excititor.ArtifactStores.S3/S3ArtifactClient.cs
index 96494fd2..dc6ea95e 100644
--- a/src/StellaOps.Vexer.ArtifactStores.S3/S3ArtifactClient.cs
+++ b/src/StellaOps.Excititor.ArtifactStores.S3/S3ArtifactClient.cs
@@ -2,9 +2,9 @@ using Amazon.S3;
using Amazon.S3.Model;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Export;
+using StellaOps.Excititor.Export;
-namespace StellaOps.Vexer.ArtifactStores.S3;
+namespace StellaOps.Excititor.ArtifactStores.S3;
public sealed class S3ArtifactClientOptions
{
diff --git a/src/StellaOps.Vexer.ArtifactStores.S3/StellaOps.Vexer.ArtifactStores.S3.csproj b/src/StellaOps.Excititor.ArtifactStores.S3/StellaOps.Excititor.ArtifactStores.S3.csproj
similarity index 85%
rename from src/StellaOps.Vexer.ArtifactStores.S3/StellaOps.Vexer.ArtifactStores.S3.csproj
rename to src/StellaOps.Excititor.ArtifactStores.S3/StellaOps.Excititor.ArtifactStores.S3.csproj
index 507c79e3..d7972603 100644
--- a/src/StellaOps.Vexer.ArtifactStores.S3/StellaOps.Vexer.ArtifactStores.S3.csproj
+++ b/src/StellaOps.Excititor.ArtifactStores.S3/StellaOps.Excititor.ArtifactStores.S3.csproj
@@ -12,6 +12,6 @@
-
+
diff --git a/src/StellaOps.Vexer.Attestation.Tests/StellaOps.Vexer.Attestation.Tests.csproj b/src/StellaOps.Excititor.Attestation.Tests/StellaOps.Excititor.Attestation.Tests.csproj
similarity index 61%
rename from src/StellaOps.Vexer.Attestation.Tests/StellaOps.Vexer.Attestation.Tests.csproj
rename to src/StellaOps.Excititor.Attestation.Tests/StellaOps.Excititor.Attestation.Tests.csproj
index 6f4e0b68..3ea8a9ef 100644
--- a/src/StellaOps.Vexer.Attestation.Tests/StellaOps.Vexer.Attestation.Tests.csproj
+++ b/src/StellaOps.Excititor.Attestation.Tests/StellaOps.Excititor.Attestation.Tests.csproj
@@ -7,7 +7,7 @@
true
-
-
+
+
diff --git a/src/StellaOps.Vexer.Attestation.Tests/VexAttestationClientTests.cs b/src/StellaOps.Excititor.Attestation.Tests/VexAttestationClientTests.cs
similarity index 93%
rename from src/StellaOps.Vexer.Attestation.Tests/VexAttestationClientTests.cs
rename to src/StellaOps.Excititor.Attestation.Tests/VexAttestationClientTests.cs
index 1a27252b..81f13cd0 100644
--- a/src/StellaOps.Vexer.Attestation.Tests/VexAttestationClientTests.cs
+++ b/src/StellaOps.Excititor.Attestation.Tests/VexAttestationClientTests.cs
@@ -1,12 +1,12 @@
using System.Collections.Immutable;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Attestation.Dsse;
-using StellaOps.Vexer.Attestation.Signing;
-using StellaOps.Vexer.Attestation.Transparency;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Attestation.Dsse;
+using StellaOps.Excititor.Attestation.Signing;
+using StellaOps.Excititor.Attestation.Transparency;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Attestation.Tests;
+namespace StellaOps.Excititor.Attestation.Tests;
public sealed class VexAttestationClientTests
{
diff --git a/src/StellaOps.Vexer.Attestation.Tests/VexDsseBuilderTests.cs b/src/StellaOps.Excititor.Attestation.Tests/VexDsseBuilderTests.cs
similarity index 89%
rename from src/StellaOps.Vexer.Attestation.Tests/VexDsseBuilderTests.cs
rename to src/StellaOps.Excititor.Attestation.Tests/VexDsseBuilderTests.cs
index 408d5dfd..d079bd84 100644
--- a/src/StellaOps.Vexer.Attestation.Tests/VexDsseBuilderTests.cs
+++ b/src/StellaOps.Excititor.Attestation.Tests/VexDsseBuilderTests.cs
@@ -1,11 +1,11 @@
using System.Collections.Immutable;
using Microsoft.Extensions.Logging.Abstractions;
-using StellaOps.Vexer.Attestation.Dsse;
-using StellaOps.Vexer.Attestation.Models;
-using StellaOps.Vexer.Attestation.Signing;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Attestation.Dsse;
+using StellaOps.Excititor.Attestation.Models;
+using StellaOps.Excititor.Attestation.Signing;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Attestation.Tests;
+namespace StellaOps.Excititor.Attestation.Tests;
public sealed class VexDsseBuilderTests
{
diff --git a/src/StellaOps.Vexer.Attestation/AGENTS.md b/src/StellaOps.Excititor.Attestation/AGENTS.md
similarity index 83%
rename from src/StellaOps.Vexer.Attestation/AGENTS.md
rename to src/StellaOps.Excititor.Attestation/AGENTS.md
index 43d87380..d3c98c8c 100644
--- a/src/StellaOps.Vexer.Attestation/AGENTS.md
+++ b/src/StellaOps.Excititor.Attestation/AGENTS.md
@@ -1,6 +1,6 @@
# AGENTS
## Role
-Builds and verifies in-toto/DSSE attestations for Vexer exports and integrates with Rekor v2 transparency logs.
+Builds and verifies in-toto/DSSE attestations for Excititor exports and integrates with Rekor v2 transparency logs.
## Scope
- Attestation envelope builders, signing workflows (keyless/keyed), and predicate model definitions.
- Rekor v2 client implementation (submit, verify, poll inclusion) with retry/backoff policies.
@@ -9,7 +9,7 @@ Builds and verifies in-toto/DSSE attestations for Vexer exports and integrates w
## Participants
- Export module calls into this layer to generate attestations after export artifacts are produced.
- WebService and Worker consume verification helpers to ensure stored envelopes remain valid.
-- CLI `vexer verify` leverages verification services through WebService endpoints.
+- CLI `excititor verify` leverages verification services through WebService endpoints.
## Interfaces & contracts
- `IExportAttestor`, `ITransparencyLogClient`, predicate DTOs, and verification result records.
- Extension methods to register attestation services in DI across WebService/Worker.
@@ -20,4 +20,4 @@ Out: export artifact generation, storage persistence, CLI interaction layers.
- Structured logs for signing/verification with envelope digest, Rekor URI, and latency; never log private keys.
- Metrics for attestation successes/failures and Rekor submission durations.
## Tests
-- Unit tests and integration stubs (with fake Rekor) will live in `../StellaOps.Vexer.Attestation.Tests`.
+- Unit tests and integration stubs (with fake Rekor) will live in `../StellaOps.Excititor.Attestation.Tests`.
diff --git a/src/StellaOps.Vexer.Attestation/Dsse/DsseEnvelope.cs b/src/StellaOps.Excititor.Attestation/Dsse/DsseEnvelope.cs
similarity index 90%
rename from src/StellaOps.Vexer.Attestation/Dsse/DsseEnvelope.cs
rename to src/StellaOps.Excititor.Attestation/Dsse/DsseEnvelope.cs
index 65b7f93c..9eb5d8de 100644
--- a/src/StellaOps.Vexer.Attestation/Dsse/DsseEnvelope.cs
+++ b/src/StellaOps.Excititor.Attestation/Dsse/DsseEnvelope.cs
@@ -1,7 +1,7 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
-namespace StellaOps.Vexer.Attestation.Dsse;
+namespace StellaOps.Excititor.Attestation.Dsse;
public sealed record DsseEnvelope(
[property: JsonPropertyName("payload")] string Payload,
diff --git a/src/StellaOps.Vexer.Attestation/Dsse/VexDsseBuilder.cs b/src/StellaOps.Excititor.Attestation/Dsse/VexDsseBuilder.cs
similarity index 94%
rename from src/StellaOps.Vexer.Attestation/Dsse/VexDsseBuilder.cs
rename to src/StellaOps.Excititor.Attestation/Dsse/VexDsseBuilder.cs
index 64e846c0..ea3e12f4 100644
--- a/src/StellaOps.Vexer.Attestation/Dsse/VexDsseBuilder.cs
+++ b/src/StellaOps.Excititor.Attestation/Dsse/VexDsseBuilder.cs
@@ -8,11 +8,11 @@ using System.Text.Json.Serialization;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
-using StellaOps.Vexer.Attestation.Models;
-using StellaOps.Vexer.Attestation.Signing;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Attestation.Models;
+using StellaOps.Excititor.Attestation.Signing;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Attestation.Dsse;
+namespace StellaOps.Excititor.Attestation.Dsse;
public sealed class VexDsseBuilder
{
diff --git a/src/StellaOps.Vexer.Attestation/Extensions/ServiceCollectionExtensions.cs b/src/StellaOps.Excititor.Attestation/Extensions/ServiceCollectionExtensions.cs
similarity index 79%
rename from src/StellaOps.Vexer.Attestation/Extensions/ServiceCollectionExtensions.cs
rename to src/StellaOps.Excititor.Attestation/Extensions/ServiceCollectionExtensions.cs
index ac48256c..d6423b0e 100644
--- a/src/StellaOps.Vexer.Attestation/Extensions/ServiceCollectionExtensions.cs
+++ b/src/StellaOps.Excititor.Attestation/Extensions/ServiceCollectionExtensions.cs
@@ -1,9 +1,9 @@
using Microsoft.Extensions.DependencyInjection;
-using StellaOps.Vexer.Attestation.Dsse;
-using StellaOps.Vexer.Attestation.Transparency;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Attestation.Dsse;
+using StellaOps.Excititor.Attestation.Transparency;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Attestation.Extensions;
+namespace StellaOps.Excititor.Attestation.Extensions;
public static class VexAttestationServiceCollectionExtensions
{
diff --git a/src/StellaOps.Vexer.Attestation/Models/VexAttestationPredicate.cs b/src/StellaOps.Excititor.Attestation/Models/VexAttestationPredicate.cs
similarity index 94%
rename from src/StellaOps.Vexer.Attestation/Models/VexAttestationPredicate.cs
rename to src/StellaOps.Excititor.Attestation/Models/VexAttestationPredicate.cs
index c879b069..bc7a278b 100644
--- a/src/StellaOps.Vexer.Attestation/Models/VexAttestationPredicate.cs
+++ b/src/StellaOps.Excititor.Attestation/Models/VexAttestationPredicate.cs
@@ -2,9 +2,9 @@ using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Text.Json.Serialization;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Attestation.Models;
+namespace StellaOps.Excititor.Attestation.Models;
public sealed record VexAttestationPredicate(
string ExportId,
diff --git a/src/StellaOps.Vexer.Attestation/Signing/IVexSigner.cs b/src/StellaOps.Excititor.Attestation/Signing/IVexSigner.cs
similarity index 84%
rename from src/StellaOps.Vexer.Attestation/Signing/IVexSigner.cs
rename to src/StellaOps.Excititor.Attestation/Signing/IVexSigner.cs
index d2371425..83512603 100644
--- a/src/StellaOps.Vexer.Attestation/Signing/IVexSigner.cs
+++ b/src/StellaOps.Excititor.Attestation/Signing/IVexSigner.cs
@@ -2,7 +2,7 @@ using System;
using System.Threading;
using System.Threading.Tasks;
-namespace StellaOps.Vexer.Attestation.Signing;
+namespace StellaOps.Excititor.Attestation.Signing;
public sealed record VexSignedPayload(string Signature, string? KeyId);
diff --git a/src/StellaOps.Vexer.Attestation/StellaOps.Vexer.Attestation.csproj b/src/StellaOps.Excititor.Attestation/StellaOps.Excititor.Attestation.csproj
similarity index 86%
rename from src/StellaOps.Vexer.Attestation/StellaOps.Vexer.Attestation.csproj
rename to src/StellaOps.Excititor.Attestation/StellaOps.Excititor.Attestation.csproj
index 8874903c..6f83f7b7 100644
--- a/src/StellaOps.Vexer.Attestation/StellaOps.Vexer.Attestation.csproj
+++ b/src/StellaOps.Excititor.Attestation/StellaOps.Excititor.Attestation.csproj
@@ -12,6 +12,6 @@
-
+
diff --git a/src/StellaOps.Excititor.Attestation/TASKS.md b/src/StellaOps.Excititor.Attestation/TASKS.md
new file mode 100644
index 00000000..ff79ef32
--- /dev/null
+++ b/src/StellaOps.Excititor.Attestation/TASKS.md
@@ -0,0 +1,7 @@
+If you are working on this file you need to read docs/ARCHITECTURE_EXCITITOR.md and ./AGENTS.md).
+# TASKS
+| Task | Owner(s) | Depends on | Notes |
+|---|---|---|---|
+|EXCITITOR-ATTEST-01-001 – In-toto predicate & DSSE builder|Team Excititor Attestation|EXCITITOR-CORE-01-001|**DONE (2025-10-16)** – Added deterministic in-toto predicate/statement models, DSSE envelope builder wired to signer abstraction, and attestation client producing metadata + diagnostics.|
+|EXCITITOR-ATTEST-01-002 – Rekor v2 client integration|Team Excititor Attestation|EXCITITOR-ATTEST-01-001|**DONE (2025-10-16)** – Implemented Rekor HTTP client with retry/backoff, transparency log abstraction, DI helpers, and attestation client integration capturing Rekor metadata + diagnostics.|
+|EXCITITOR-ATTEST-01-003 – Verification suite & observability|Team Excititor Attestation|EXCITITOR-ATTEST-01-002|TODO – Add verification helpers for Worker/WebService, metrics/logging hooks, and negative-path regression tests.|
diff --git a/src/StellaOps.Vexer.Attestation/Transparency/ITransparencyLogClient.cs b/src/StellaOps.Excititor.Attestation/Transparency/ITransparencyLogClient.cs
similarity index 80%
rename from src/StellaOps.Vexer.Attestation/Transparency/ITransparencyLogClient.cs
rename to src/StellaOps.Excititor.Attestation/Transparency/ITransparencyLogClient.cs
index de87adc9..ffd6621d 100644
--- a/src/StellaOps.Vexer.Attestation/Transparency/ITransparencyLogClient.cs
+++ b/src/StellaOps.Excititor.Attestation/Transparency/ITransparencyLogClient.cs
@@ -1,8 +1,8 @@
using System.Threading;
using System.Threading.Tasks;
-using StellaOps.Vexer.Attestation.Dsse;
+using StellaOps.Excititor.Attestation.Dsse;
-namespace StellaOps.Vexer.Attestation.Transparency;
+namespace StellaOps.Excititor.Attestation.Transparency;
public sealed record TransparencyLogEntry(string Id, string Location, string? LogIndex, string? InclusionProofUrl);
diff --git a/src/StellaOps.Vexer.Attestation/Transparency/RekorHttpClient.cs b/src/StellaOps.Excititor.Attestation/Transparency/RekorHttpClient.cs
similarity index 97%
rename from src/StellaOps.Vexer.Attestation/Transparency/RekorHttpClient.cs
rename to src/StellaOps.Excititor.Attestation/Transparency/RekorHttpClient.cs
index e851f82a..75b5cd31 100644
--- a/src/StellaOps.Vexer.Attestation/Transparency/RekorHttpClient.cs
+++ b/src/StellaOps.Excititor.Attestation/Transparency/RekorHttpClient.cs
@@ -2,9 +2,9 @@ using System.Net.Http.Json;
using System.Text.Json;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Attestation.Dsse;
+using StellaOps.Excititor.Attestation.Dsse;
-namespace StellaOps.Vexer.Attestation.Transparency;
+namespace StellaOps.Excititor.Attestation.Transparency;
internal sealed class RekorHttpClient : ITransparencyLogClient
{
diff --git a/src/StellaOps.Vexer.Attestation/Transparency/RekorHttpClientOptions.cs b/src/StellaOps.Excititor.Attestation/Transparency/RekorHttpClientOptions.cs
similarity index 84%
rename from src/StellaOps.Vexer.Attestation/Transparency/RekorHttpClientOptions.cs
rename to src/StellaOps.Excititor.Attestation/Transparency/RekorHttpClientOptions.cs
index 1565e260..f828c4e1 100644
--- a/src/StellaOps.Vexer.Attestation/Transparency/RekorHttpClientOptions.cs
+++ b/src/StellaOps.Excititor.Attestation/Transparency/RekorHttpClientOptions.cs
@@ -1,4 +1,4 @@
-namespace StellaOps.Vexer.Attestation.Transparency;
+namespace StellaOps.Excititor.Attestation.Transparency;
public sealed class RekorHttpClientOptions
{
diff --git a/src/StellaOps.Vexer.Attestation/VexAttestationClient.cs b/src/StellaOps.Excititor.Attestation/VexAttestationClient.cs
similarity index 93%
rename from src/StellaOps.Vexer.Attestation/VexAttestationClient.cs
rename to src/StellaOps.Excititor.Attestation/VexAttestationClient.cs
index 94f6f214..125426cd 100644
--- a/src/StellaOps.Vexer.Attestation/VexAttestationClient.cs
+++ b/src/StellaOps.Excititor.Attestation/VexAttestationClient.cs
@@ -6,13 +6,13 @@ using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Attestation.Dsse;
-using StellaOps.Vexer.Attestation.Models;
-using StellaOps.Vexer.Attestation.Signing;
-using StellaOps.Vexer.Attestation.Transparency;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Attestation.Dsse;
+using StellaOps.Excititor.Attestation.Models;
+using StellaOps.Excititor.Attestation.Signing;
+using StellaOps.Excititor.Attestation.Transparency;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Attestation;
+namespace StellaOps.Excititor.Attestation;
public sealed class VexAttestationClientOptions
{
@@ -84,7 +84,7 @@ public sealed class VexAttestationClient : IVexAttestationClient
public ValueTask VerifyAsync(VexAttestationRequest request, CancellationToken cancellationToken)
{
- // Placeholder until verification flow is implemented in VEXER-ATTEST-01-003.
+ // Placeholder until verification flow is implemented in EXCITITOR-ATTEST-01-003.
return ValueTask.FromResult(new VexAttestationVerification(true, ImmutableDictionary.Empty));
}
diff --git a/src/StellaOps.Vexer.Connectors.Abstractions/AGENTS.md b/src/StellaOps.Excititor.Connectors.Abstractions/AGENTS.md
similarity index 69%
rename from src/StellaOps.Vexer.Connectors.Abstractions/AGENTS.md
rename to src/StellaOps.Excititor.Connectors.Abstractions/AGENTS.md
index dadb0d0d..6b2efc79 100644
--- a/src/StellaOps.Vexer.Connectors.Abstractions/AGENTS.md
+++ b/src/StellaOps.Excititor.Connectors.Abstractions/AGENTS.md
@@ -1,13 +1,13 @@
# AGENTS
## Role
-Defines shared connector infrastructure for Vexer, including base contexts, result contracts, configuration binding, and helper utilities reused by all connector plug-ins.
+Defines shared connector infrastructure for Excititor, including base contexts, result contracts, configuration binding, and helper utilities reused by all connector plug-ins.
## Scope
- `IVexConnector` context implementation, raw store helpers, verification hooks, and telemetry utilities.
- Configuration primitives (YAML parsing, secrets handling guidelines) and options validation.
- Connector lifecycle helpers for retries, paging, `.well-known` discovery, and resume markers.
-- Documentation for connector packaging, plugin manifest metadata, and DI registration (see `docs/dev/30_VEXER_CONNECTOR_GUIDE.md` and `docs/dev/templates/vexer-connector/`).
+- Documentation for connector packaging, plugin manifest metadata, and DI registration (see `docs/dev/30_EXCITITOR_CONNECTOR_GUIDE.md` and `docs/dev/templates/excititor-connector/`).
## Participants
-- All Vexer connector projects reference this module to obtain base classes and context services.
+- All Excititor connector projects reference this module to obtain base classes and context services.
- WebService/Worker instantiate connectors via plugin loader leveraging abstractions defined here.
## Interfaces & contracts
- Connector context, result, and telemetry interfaces; `VexConnectorDescriptor`, `VexConnectorBase`, options binder/validators, authentication helpers.
@@ -19,4 +19,4 @@ Out: provider-specific logic (implemented in individual connector modules), stor
- Provide structured logging helpers, correlation IDs, and metrics instrumentation toggles for connectors.
- Enforce redaction of secrets in logs and config dumps.
## Tests
-- Abstraction/unit tests will live in `../StellaOps.Vexer.Connectors.Abstractions.Tests`, covering default behaviors and sample harness.
+- Abstraction/unit tests will live in `../StellaOps.Excititor.Connectors.Abstractions.Tests`, covering default behaviors and sample harness.
diff --git a/src/StellaOps.Vexer.Connectors.Abstractions/IVexConnectorOptionsValidator.cs b/src/StellaOps.Excititor.Connectors.Abstractions/IVexConnectorOptionsValidator.cs
similarity index 87%
rename from src/StellaOps.Vexer.Connectors.Abstractions/IVexConnectorOptionsValidator.cs
rename to src/StellaOps.Excititor.Connectors.Abstractions/IVexConnectorOptionsValidator.cs
index 007004d7..80b7aa1d 100644
--- a/src/StellaOps.Vexer.Connectors.Abstractions/IVexConnectorOptionsValidator.cs
+++ b/src/StellaOps.Excititor.Connectors.Abstractions/IVexConnectorOptionsValidator.cs
@@ -1,6 +1,6 @@
using System.Collections.Generic;
-namespace StellaOps.Vexer.Connectors.Abstractions;
+namespace StellaOps.Excititor.Connectors.Abstractions;
///
/// Custom validator hook executed after connector options are bound.
diff --git a/src/StellaOps.Vexer.Connectors.Abstractions/StellaOps.Vexer.Connectors.Abstractions.csproj b/src/StellaOps.Excititor.Connectors.Abstractions/StellaOps.Excititor.Connectors.Abstractions.csproj
similarity index 86%
rename from src/StellaOps.Vexer.Connectors.Abstractions/StellaOps.Vexer.Connectors.Abstractions.csproj
rename to src/StellaOps.Excititor.Connectors.Abstractions/StellaOps.Excititor.Connectors.Abstractions.csproj
index 63f633c3..a4792f48 100644
--- a/src/StellaOps.Vexer.Connectors.Abstractions/StellaOps.Vexer.Connectors.Abstractions.csproj
+++ b/src/StellaOps.Excititor.Connectors.Abstractions/StellaOps.Excititor.Connectors.Abstractions.csproj
@@ -7,7 +7,7 @@
true
-
+
diff --git a/src/StellaOps.Excititor.Connectors.Abstractions/TASKS.md b/src/StellaOps.Excititor.Connectors.Abstractions/TASKS.md
new file mode 100644
index 00000000..c729c055
--- /dev/null
+++ b/src/StellaOps.Excititor.Connectors.Abstractions/TASKS.md
@@ -0,0 +1,7 @@
+If you are working on this file you need to read docs/ARCHITECTURE_EXCITITOR.md and ./AGENTS.md).
+# TASKS
+| Task | Owner(s) | Depends on | Notes |
+|---|---|---|---|
+|EXCITITOR-CONN-ABS-01-001 – Connector context & base classes|Team Excititor Connectors|EXCITITOR-CORE-01-003|**DONE (2025-10-17)** – Added `StellaOps.Excititor.Connectors.Abstractions` project with `VexConnectorBase`, deterministic logging scopes, metadata builder helpers, and connector descriptors; docs updated to highlight the shared abstractions.|
+|EXCITITOR-CONN-ABS-01-002 – YAML options & validation|Team Excititor Connectors|EXCITITOR-CONN-ABS-01-001|**DONE (2025-10-17)** – Delivered `VexConnectorOptionsBinder` + binder options/validators, environment-variable expansion, data-annotation checks, and custom validation hooks with documentation updates covering the workflow.|
+|EXCITITOR-CONN-ABS-01-003 – Plugin packaging & docs|Team Excititor Connectors|EXCITITOR-CONN-ABS-01-001|**DONE (2025-10-17)** – Authored `docs/dev/30_EXCITITOR_CONNECTOR_GUIDE.md`, added quick-start template under `docs/dev/templates/excititor-connector/`, and updated module docs to reference the packaging workflow.|
diff --git a/src/StellaOps.Vexer.Connectors.Abstractions/VexConnectorBase.cs b/src/StellaOps.Excititor.Connectors.Abstractions/VexConnectorBase.cs
similarity index 97%
rename from src/StellaOps.Vexer.Connectors.Abstractions/VexConnectorBase.cs
rename to src/StellaOps.Excititor.Connectors.Abstractions/VexConnectorBase.cs
index ba312419..91859afe 100644
--- a/src/StellaOps.Vexer.Connectors.Abstractions/VexConnectorBase.cs
+++ b/src/StellaOps.Excititor.Connectors.Abstractions/VexConnectorBase.cs
@@ -1,9 +1,9 @@
using System.Collections.Immutable;
using System.Security.Cryptography;
using Microsoft.Extensions.Logging;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Connectors.Abstractions;
+namespace StellaOps.Excititor.Connectors.Abstractions;
///
/// Convenience base class for implementing .
diff --git a/src/StellaOps.Vexer.Connectors.Abstractions/VexConnectorDescriptor.cs b/src/StellaOps.Excititor.Connectors.Abstractions/VexConnectorDescriptor.cs
similarity index 91%
rename from src/StellaOps.Vexer.Connectors.Abstractions/VexConnectorDescriptor.cs
rename to src/StellaOps.Excititor.Connectors.Abstractions/VexConnectorDescriptor.cs
index 4e7eb211..7076be7e 100644
--- a/src/StellaOps.Vexer.Connectors.Abstractions/VexConnectorDescriptor.cs
+++ b/src/StellaOps.Excititor.Connectors.Abstractions/VexConnectorDescriptor.cs
@@ -1,10 +1,10 @@
using System.Collections.Immutable;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Connectors.Abstractions;
+namespace StellaOps.Excititor.Connectors.Abstractions;
///
-/// Static descriptor for a Vexer connector plug-in.
+/// Static descriptor for a Excititor connector plug-in.
///
public sealed record VexConnectorDescriptor
{
diff --git a/src/StellaOps.Vexer.Connectors.Abstractions/VexConnectorLogScope.cs b/src/StellaOps.Excititor.Connectors.Abstractions/VexConnectorLogScope.cs
similarity index 95%
rename from src/StellaOps.Vexer.Connectors.Abstractions/VexConnectorLogScope.cs
rename to src/StellaOps.Excititor.Connectors.Abstractions/VexConnectorLogScope.cs
index 5cc8da82..66aec480 100644
--- a/src/StellaOps.Vexer.Connectors.Abstractions/VexConnectorLogScope.cs
+++ b/src/StellaOps.Excititor.Connectors.Abstractions/VexConnectorLogScope.cs
@@ -1,8 +1,8 @@
using System.Linq;
using Microsoft.Extensions.Logging;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Connectors.Abstractions;
+namespace StellaOps.Excititor.Connectors.Abstractions;
///
/// Helper to establish deterministic logging scopes for connector operations.
diff --git a/src/StellaOps.Vexer.Connectors.Abstractions/VexConnectorMetadataBuilder.cs b/src/StellaOps.Excititor.Connectors.Abstractions/VexConnectorMetadataBuilder.cs
similarity index 95%
rename from src/StellaOps.Vexer.Connectors.Abstractions/VexConnectorMetadataBuilder.cs
rename to src/StellaOps.Excititor.Connectors.Abstractions/VexConnectorMetadataBuilder.cs
index 8404ab94..958af9dd 100644
--- a/src/StellaOps.Vexer.Connectors.Abstractions/VexConnectorMetadataBuilder.cs
+++ b/src/StellaOps.Excititor.Connectors.Abstractions/VexConnectorMetadataBuilder.cs
@@ -1,6 +1,6 @@
using System.Collections.Immutable;
-namespace StellaOps.Vexer.Connectors.Abstractions;
+namespace StellaOps.Excititor.Connectors.Abstractions;
///
/// Builds deterministic metadata dictionaries for raw documents and logging scopes.
diff --git a/src/StellaOps.Vexer.Connectors.Abstractions/VexConnectorOptionsBinder.cs b/src/StellaOps.Excititor.Connectors.Abstractions/VexConnectorOptionsBinder.cs
similarity index 98%
rename from src/StellaOps.Vexer.Connectors.Abstractions/VexConnectorOptionsBinder.cs
rename to src/StellaOps.Excititor.Connectors.Abstractions/VexConnectorOptionsBinder.cs
index d307fbca..36cbffab 100644
--- a/src/StellaOps.Vexer.Connectors.Abstractions/VexConnectorOptionsBinder.cs
+++ b/src/StellaOps.Excititor.Connectors.Abstractions/VexConnectorOptionsBinder.cs
@@ -2,9 +2,9 @@ using System.Collections.Immutable;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Microsoft.Extensions.Configuration;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Connectors.Abstractions;
+namespace StellaOps.Excititor.Connectors.Abstractions;
///
/// Provides strongly typed binding and validation for connector options.
diff --git a/src/StellaOps.Vexer.Connectors.Abstractions/VexConnectorOptionsBinderOptions.cs b/src/StellaOps.Excititor.Connectors.Abstractions/VexConnectorOptionsBinderOptions.cs
similarity index 96%
rename from src/StellaOps.Vexer.Connectors.Abstractions/VexConnectorOptionsBinderOptions.cs
rename to src/StellaOps.Excititor.Connectors.Abstractions/VexConnectorOptionsBinderOptions.cs
index c4710999..ea1c0b4d 100644
--- a/src/StellaOps.Vexer.Connectors.Abstractions/VexConnectorOptionsBinderOptions.cs
+++ b/src/StellaOps.Excititor.Connectors.Abstractions/VexConnectorOptionsBinderOptions.cs
@@ -1,4 +1,4 @@
-namespace StellaOps.Vexer.Connectors.Abstractions;
+namespace StellaOps.Excititor.Connectors.Abstractions;
///
/// Customisation options for connector options binding.
diff --git a/src/StellaOps.Vexer.Connectors.Abstractions/VexConnectorOptionsValidationException.cs b/src/StellaOps.Excititor.Connectors.Abstractions/VexConnectorOptionsValidationException.cs
similarity index 95%
rename from src/StellaOps.Vexer.Connectors.Abstractions/VexConnectorOptionsValidationException.cs
rename to src/StellaOps.Excititor.Connectors.Abstractions/VexConnectorOptionsValidationException.cs
index 4bd9b48c..a9663841 100644
--- a/src/StellaOps.Vexer.Connectors.Abstractions/VexConnectorOptionsValidationException.cs
+++ b/src/StellaOps.Excititor.Connectors.Abstractions/VexConnectorOptionsValidationException.cs
@@ -1,6 +1,6 @@
using System.Collections.Immutable;
-namespace StellaOps.Vexer.Connectors.Abstractions;
+namespace StellaOps.Excititor.Connectors.Abstractions;
public sealed class VexConnectorOptionsValidationException : Exception
{
diff --git a/src/StellaOps.Vexer.Connectors.Cisco.CSAF.Tests/Connectors/CiscoCsafConnectorTests.cs b/src/StellaOps.Excititor.Connectors.Cisco.CSAF.Tests/Connectors/CiscoCsafConnectorTests.cs
similarity index 94%
rename from src/StellaOps.Vexer.Connectors.Cisco.CSAF.Tests/Connectors/CiscoCsafConnectorTests.cs
rename to src/StellaOps.Excititor.Connectors.Cisco.CSAF.Tests/Connectors/CiscoCsafConnectorTests.cs
index 792f3326..f69b90eb 100644
--- a/src/StellaOps.Vexer.Connectors.Cisco.CSAF.Tests/Connectors/CiscoCsafConnectorTests.cs
+++ b/src/StellaOps.Excititor.Connectors.Cisco.CSAF.Tests/Connectors/CiscoCsafConnectorTests.cs
@@ -7,18 +7,18 @@ using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.DependencyInjection;
-using StellaOps.Vexer.Connectors.Abstractions;
-using StellaOps.Vexer.Connectors.Cisco.CSAF;
-using StellaOps.Vexer.Connectors.Cisco.CSAF.Configuration;
-using StellaOps.Vexer.Connectors.Cisco.CSAF.Metadata;
-using StellaOps.Vexer.Core;
-using StellaOps.Vexer.Storage.Mongo;
+using StellaOps.Excititor.Connectors.Abstractions;
+using StellaOps.Excititor.Connectors.Cisco.CSAF;
+using StellaOps.Excititor.Connectors.Cisco.CSAF.Configuration;
+using StellaOps.Excititor.Connectors.Cisco.CSAF.Metadata;
+using StellaOps.Excititor.Core;
+using StellaOps.Excititor.Storage.Mongo;
using System.Collections.Immutable;
using System.IO.Abstractions.TestingHelpers;
using Xunit;
using System.Threading;
-namespace StellaOps.Vexer.Connectors.Cisco.CSAF.Tests.Connectors;
+namespace StellaOps.Excititor.Connectors.Cisco.CSAF.Tests.Connectors;
public sealed class CiscoCsafConnectorTests
{
@@ -33,7 +33,7 @@ public sealed class CiscoCsafConnectorTests
"publisher": {
"name": "Cisco",
"category": "vendor",
- "contact_details": { "id": "vexer:cisco" }
+ "contact_details": { "id": "excititor:cisco" }
}
},
"distributions": {
diff --git a/src/StellaOps.Vexer.Connectors.Cisco.CSAF.Tests/Metadata/CiscoProviderMetadataLoaderTests.cs b/src/StellaOps.Excititor.Connectors.Cisco.CSAF.Tests/Metadata/CiscoProviderMetadataLoaderTests.cs
similarity index 92%
rename from src/StellaOps.Vexer.Connectors.Cisco.CSAF.Tests/Metadata/CiscoProviderMetadataLoaderTests.cs
rename to src/StellaOps.Excititor.Connectors.Cisco.CSAF.Tests/Metadata/CiscoProviderMetadataLoaderTests.cs
index 59b0031d..9f94c8b5 100644
--- a/src/StellaOps.Vexer.Connectors.Cisco.CSAF.Tests/Metadata/CiscoProviderMetadataLoaderTests.cs
+++ b/src/StellaOps.Excititor.Connectors.Cisco.CSAF.Tests/Metadata/CiscoProviderMetadataLoaderTests.cs
@@ -5,12 +5,12 @@ using FluentAssertions;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Connectors.Cisco.CSAF.Configuration;
-using StellaOps.Vexer.Connectors.Cisco.CSAF.Metadata;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Connectors.Cisco.CSAF.Configuration;
+using StellaOps.Excititor.Connectors.Cisco.CSAF.Metadata;
+using StellaOps.Excititor.Core;
using System.IO.Abstractions.TestingHelpers;
-namespace StellaOps.Vexer.Connectors.Cisco.CSAF.Tests.Metadata;
+namespace StellaOps.Excititor.Connectors.Cisco.CSAF.Tests.Metadata;
public sealed class CiscoProviderMetadataLoaderTests
{
@@ -24,7 +24,7 @@ public sealed class CiscoProviderMetadataLoaderTests
"name": "Cisco CSAF",
"category": "vendor",
"contact_details": {
- "id": "vexer:cisco"
+ "id": "excititor:cisco"
}
}
},
@@ -72,7 +72,7 @@ public sealed class CiscoProviderMetadataLoaderTests
var result = await loader.LoadAsync(CancellationToken.None);
- result.Provider.Id.Should().Be("vexer:cisco");
+ result.Provider.Id.Should().Be("excititor:cisco");
result.Provider.BaseUris.Should().ContainSingle(uri => uri.ToString() == "https://api.security.cisco.com/csaf/v2/advisories/");
result.Provider.Discovery.RolIeService.Should().Be(new Uri("https://api.security.cisco.com/csaf/rolie/feed"));
result.ServedFromCache.Should().BeFalse();
@@ -91,7 +91,7 @@ public sealed class CiscoProviderMetadataLoaderTests
"name": "Cisco CSAF",
"category": "vendor",
"contact_details": {
- "id": "vexer:cisco"
+ "id": "excititor:cisco"
}
}
}
@@ -117,7 +117,7 @@ public sealed class CiscoProviderMetadataLoaderTests
var result = await loader.LoadAsync(CancellationToken.None);
result.FromOfflineSnapshot.Should().BeTrue();
- result.Provider.Id.Should().Be("vexer:cisco");
+ result.Provider.Id.Should().Be("excititor:cisco");
}
private sealed class SingleHttpClientFactory : IHttpClientFactory
diff --git a/src/StellaOps.Vexer.Connectors.Cisco.CSAF.Tests/StellaOps.Vexer.Connectors.Cisco.CSAF.Tests.csproj b/src/StellaOps.Excititor.Connectors.Cisco.CSAF.Tests/StellaOps.Excititor.Connectors.Cisco.CSAF.Tests.csproj
similarity index 80%
rename from src/StellaOps.Vexer.Connectors.Cisco.CSAF.Tests/StellaOps.Vexer.Connectors.Cisco.CSAF.Tests.csproj
rename to src/StellaOps.Excititor.Connectors.Cisco.CSAF.Tests/StellaOps.Excititor.Connectors.Cisco.CSAF.Tests.csproj
index 1e11d778..9b7873d7 100644
--- a/src/StellaOps.Vexer.Connectors.Cisco.CSAF.Tests/StellaOps.Vexer.Connectors.Cisco.CSAF.Tests.csproj
+++ b/src/StellaOps.Excititor.Connectors.Cisco.CSAF.Tests/StellaOps.Excititor.Connectors.Cisco.CSAF.Tests.csproj
@@ -11,6 +11,6 @@
-
+
diff --git a/src/StellaOps.Vexer.Connectors.Cisco.CSAF/AGENTS.md b/src/StellaOps.Excititor.Connectors.Cisco.CSAF/AGENTS.md
similarity index 96%
rename from src/StellaOps.Vexer.Connectors.Cisco.CSAF/AGENTS.md
rename to src/StellaOps.Excititor.Connectors.Cisco.CSAF/AGENTS.md
index fb3df82b..cc2d5675 100644
--- a/src/StellaOps.Vexer.Connectors.Cisco.CSAF/AGENTS.md
+++ b/src/StellaOps.Excititor.Connectors.Cisco.CSAF/AGENTS.md
@@ -20,4 +20,4 @@ Out: normalization/export, attestation, Mongo wiring (handled in other modules).
- Log fetch batches with document counts/durations; mask credentials.
- Emit metrics for rate-limit hits, retries, and quarantine events.
## Tests
-- Unit tests plus HTTP harness fixtures will live in `../StellaOps.Vexer.Connectors.Cisco.CSAF.Tests`.
+- Unit tests plus HTTP harness fixtures will live in `../StellaOps.Excititor.Connectors.Cisco.CSAF.Tests`.
diff --git a/src/StellaOps.Vexer.Connectors.Cisco.CSAF/CiscoCsafConnector.cs b/src/StellaOps.Excititor.Connectors.Cisco.CSAF/CiscoCsafConnector.cs
similarity index 96%
rename from src/StellaOps.Vexer.Connectors.Cisco.CSAF/CiscoCsafConnector.cs
rename to src/StellaOps.Excititor.Connectors.Cisco.CSAF/CiscoCsafConnector.cs
index a9829c3c..11c1d028 100644
--- a/src/StellaOps.Vexer.Connectors.Cisco.CSAF/CiscoCsafConnector.cs
+++ b/src/StellaOps.Excititor.Connectors.Cisco.CSAF/CiscoCsafConnector.cs
@@ -5,18 +5,18 @@ using System.Net.Http;
using System.Runtime.CompilerServices;
using System.Text.Json;
using Microsoft.Extensions.Logging;
-using StellaOps.Vexer.Connectors.Abstractions;
-using StellaOps.Vexer.Connectors.Cisco.CSAF.Configuration;
-using StellaOps.Vexer.Connectors.Cisco.CSAF.Metadata;
-using StellaOps.Vexer.Core;
-using StellaOps.Vexer.Storage.Mongo;
+using StellaOps.Excititor.Connectors.Abstractions;
+using StellaOps.Excititor.Connectors.Cisco.CSAF.Configuration;
+using StellaOps.Excititor.Connectors.Cisco.CSAF.Metadata;
+using StellaOps.Excititor.Core;
+using StellaOps.Excititor.Storage.Mongo;
-namespace StellaOps.Vexer.Connectors.Cisco.CSAF;
+namespace StellaOps.Excititor.Connectors.Cisco.CSAF;
public sealed class CiscoCsafConnector : VexConnectorBase
{
private static readonly VexConnectorDescriptor DescriptorInstance = new(
- id: "vexer:cisco",
+ id: "excititor:cisco",
kind: VexProviderKind.Vendor,
displayName: "Cisco CSAF")
{
diff --git a/src/StellaOps.Vexer.Connectors.Cisco.CSAF/Configuration/CiscoConnectorOptions.cs b/src/StellaOps.Excititor.Connectors.Cisco.CSAF/Configuration/CiscoConnectorOptions.cs
similarity index 96%
rename from src/StellaOps.Vexer.Connectors.Cisco.CSAF/Configuration/CiscoConnectorOptions.cs
rename to src/StellaOps.Excititor.Connectors.Cisco.CSAF/Configuration/CiscoConnectorOptions.cs
index 20ee0ce5..4531ba65 100644
--- a/src/StellaOps.Vexer.Connectors.Cisco.CSAF/Configuration/CiscoConnectorOptions.cs
+++ b/src/StellaOps.Excititor.Connectors.Cisco.CSAF/Configuration/CiscoConnectorOptions.cs
@@ -1,6 +1,6 @@
using System.ComponentModel.DataAnnotations;
-namespace StellaOps.Vexer.Connectors.Cisco.CSAF.Configuration;
+namespace StellaOps.Excititor.Connectors.Cisco.CSAF.Configuration;
public sealed class CiscoConnectorOptions : IValidatableObject
{
diff --git a/src/StellaOps.Vexer.Connectors.Cisco.CSAF/Configuration/CiscoConnectorOptionsValidator.cs b/src/StellaOps.Excititor.Connectors.Cisco.CSAF/Configuration/CiscoConnectorOptionsValidator.cs
similarity index 88%
rename from src/StellaOps.Vexer.Connectors.Cisco.CSAF/Configuration/CiscoConnectorOptionsValidator.cs
rename to src/StellaOps.Excititor.Connectors.Cisco.CSAF/Configuration/CiscoConnectorOptionsValidator.cs
index 6599b60a..4932578c 100644
--- a/src/StellaOps.Vexer.Connectors.Cisco.CSAF/Configuration/CiscoConnectorOptionsValidator.cs
+++ b/src/StellaOps.Excititor.Connectors.Cisco.CSAF/Configuration/CiscoConnectorOptionsValidator.cs
@@ -1,9 +1,9 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
-using StellaOps.Vexer.Connectors.Abstractions;
+using StellaOps.Excititor.Connectors.Abstractions;
-namespace StellaOps.Vexer.Connectors.Cisco.CSAF.Configuration;
+namespace StellaOps.Excititor.Connectors.Cisco.CSAF.Configuration;
public sealed class CiscoConnectorOptionsValidator : IVexConnectorOptionsValidator
{
diff --git a/src/StellaOps.Vexer.Connectors.Cisco.CSAF/DependencyInjection/CiscoConnectorServiceCollectionExtensions.cs b/src/StellaOps.Excititor.Connectors.Cisco.CSAF/DependencyInjection/CiscoConnectorServiceCollectionExtensions.cs
similarity index 87%
rename from src/StellaOps.Vexer.Connectors.Cisco.CSAF/DependencyInjection/CiscoConnectorServiceCollectionExtensions.cs
rename to src/StellaOps.Excititor.Connectors.Cisco.CSAF/DependencyInjection/CiscoConnectorServiceCollectionExtensions.cs
index a8ce354c..f52a10d1 100644
--- a/src/StellaOps.Vexer.Connectors.Cisco.CSAF/DependencyInjection/CiscoConnectorServiceCollectionExtensions.cs
+++ b/src/StellaOps.Excititor.Connectors.Cisco.CSAF/DependencyInjection/CiscoConnectorServiceCollectionExtensions.cs
@@ -4,13 +4,13 @@ using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Connectors.Cisco.CSAF.Configuration;
-using StellaOps.Vexer.Connectors.Cisco.CSAF.Metadata;
-using StellaOps.Vexer.Connectors.Abstractions;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Connectors.Cisco.CSAF.Configuration;
+using StellaOps.Excititor.Connectors.Cisco.CSAF.Metadata;
+using StellaOps.Excititor.Connectors.Abstractions;
+using StellaOps.Excititor.Core;
using System.IO.Abstractions;
-namespace StellaOps.Vexer.Connectors.Cisco.CSAF.DependencyInjection;
+namespace StellaOps.Excititor.Connectors.Cisco.CSAF.DependencyInjection;
public static class CiscoConnectorServiceCollectionExtensions
{
diff --git a/src/StellaOps.Vexer.Connectors.Cisco.CSAF/Metadata/CiscoProviderMetadataLoader.cs b/src/StellaOps.Excititor.Connectors.Cisco.CSAF/Metadata/CiscoProviderMetadataLoader.cs
similarity index 98%
rename from src/StellaOps.Vexer.Connectors.Cisco.CSAF/Metadata/CiscoProviderMetadataLoader.cs
rename to src/StellaOps.Excititor.Connectors.Cisco.CSAF/Metadata/CiscoProviderMetadataLoader.cs
index 5d5d7438..39cd1b20 100644
--- a/src/StellaOps.Vexer.Connectors.Cisco.CSAF/Metadata/CiscoProviderMetadataLoader.cs
+++ b/src/StellaOps.Excititor.Connectors.Cisco.CSAF/Metadata/CiscoProviderMetadataLoader.cs
@@ -5,15 +5,15 @@ using System.Text.Json;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Connectors.Cisco.CSAF.Configuration;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Connectors.Cisco.CSAF.Configuration;
+using StellaOps.Excititor.Core;
using System.IO.Abstractions;
-namespace StellaOps.Vexer.Connectors.Cisco.CSAF.Metadata;
+namespace StellaOps.Excititor.Connectors.Cisco.CSAF.Metadata;
public sealed class CiscoProviderMetadataLoader
{
- public const string CacheKey = "StellaOps.Vexer.Connectors.Cisco.CSAF.Metadata";
+ public const string CacheKey = "StellaOps.Excititor.Connectors.Cisco.CSAF.Metadata";
private readonly IHttpClientFactory _httpClientFactory;
private readonly IMemoryCache _memoryCache;
diff --git a/src/StellaOps.Vexer.Connectors.Cisco.CSAF/StellaOps.Vexer.Connectors.Cisco.CSAF.csproj b/src/StellaOps.Excititor.Connectors.Cisco.CSAF/StellaOps.Excititor.Connectors.Cisco.CSAF.csproj
similarity index 66%
rename from src/StellaOps.Vexer.Connectors.Cisco.CSAF/StellaOps.Vexer.Connectors.Cisco.CSAF.csproj
rename to src/StellaOps.Excititor.Connectors.Cisco.CSAF/StellaOps.Excititor.Connectors.Cisco.CSAF.csproj
index d7480a49..c9ee7659 100644
--- a/src/StellaOps.Vexer.Connectors.Cisco.CSAF/StellaOps.Vexer.Connectors.Cisco.CSAF.csproj
+++ b/src/StellaOps.Excititor.Connectors.Cisco.CSAF/StellaOps.Excititor.Connectors.Cisco.CSAF.csproj
@@ -7,9 +7,9 @@
true
-
-
-
+
+
+
diff --git a/src/StellaOps.Excititor.Connectors.Cisco.CSAF/TASKS.md b/src/StellaOps.Excititor.Connectors.Cisco.CSAF/TASKS.md
new file mode 100644
index 00000000..833d1535
--- /dev/null
+++ b/src/StellaOps.Excititor.Connectors.Cisco.CSAF/TASKS.md
@@ -0,0 +1,7 @@
+If you are working on this file you need to read docs/ARCHITECTURE_EXCITITOR.md and ./AGENTS.md).
+# TASKS
+| Task | Owner(s) | Depends on | Notes |
+|---|---|---|---|
+|EXCITITOR-CONN-CISCO-01-001 – Endpoint discovery & auth plumbing|Team Excititor Connectors – Cisco|EXCITITOR-CONN-ABS-01-001|**DONE (2025-10-17)** – Added `CiscoProviderMetadataLoader` with bearer token support, offline snapshot fallback, DI helpers, and tests covering network/offline discovery to unblock subsequent fetch work.|
+|EXCITITOR-CONN-CISCO-01-002 – CSAF pull loop & pagination|Team Excititor Connectors – Cisco|EXCITITOR-CONN-CISCO-01-001, EXCITITOR-STORAGE-01-003|**DONE (2025-10-17)** – Implemented paginated advisory fetch using provider directories, raw document persistence with dedupe/state tracking, offline resiliency, and unit coverage.|
+|EXCITITOR-CONN-CISCO-01-003 – Provider trust metadata|Team Excititor Connectors – Cisco|EXCITITOR-CONN-CISCO-01-002, EXCITITOR-POLICY-01-001|TODO – Emit cosign/PGP trust metadata and advisory provenance hints for policy weighting.|
diff --git a/src/StellaOps.Vexer.Connectors.MSRC.CSAF.Tests/Authentication/MsrcTokenProviderTests.cs b/src/StellaOps.Excititor.Connectors.MSRC.CSAF.Tests/Authentication/MsrcTokenProviderTests.cs
similarity index 97%
rename from src/StellaOps.Vexer.Connectors.MSRC.CSAF.Tests/Authentication/MsrcTokenProviderTests.cs
rename to src/StellaOps.Excititor.Connectors.MSRC.CSAF.Tests/Authentication/MsrcTokenProviderTests.cs
index cea0cb3c..515991dc 100644
--- a/src/StellaOps.Vexer.Connectors.MSRC.CSAF.Tests/Authentication/MsrcTokenProviderTests.cs
+++ b/src/StellaOps.Excititor.Connectors.MSRC.CSAF.Tests/Authentication/MsrcTokenProviderTests.cs
@@ -6,12 +6,12 @@ using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
using NSubstitute;
-using StellaOps.Vexer.Connectors.MSRC.CSAF.Authentication;
-using StellaOps.Vexer.Connectors.MSRC.CSAF.Configuration;
+using StellaOps.Excititor.Connectors.MSRC.CSAF.Authentication;
+using StellaOps.Excititor.Connectors.MSRC.CSAF.Configuration;
using System.IO.Abstractions.TestingHelpers;
using Xunit;
-namespace StellaOps.Vexer.Connectors.MSRC.CSAF.Tests.Authentication;
+namespace StellaOps.Excititor.Connectors.MSRC.CSAF.Tests.Authentication;
public sealed class MsrcTokenProviderTests
{
diff --git a/src/StellaOps.Vexer.Connectors.MSRC.CSAF.Tests/StellaOps.Vexer.Connectors.MSRC.CSAF.Tests.csproj b/src/StellaOps.Excititor.Connectors.MSRC.CSAF.Tests/StellaOps.Excititor.Connectors.MSRC.CSAF.Tests.csproj
similarity index 84%
rename from src/StellaOps.Vexer.Connectors.MSRC.CSAF.Tests/StellaOps.Vexer.Connectors.MSRC.CSAF.Tests.csproj
rename to src/StellaOps.Excititor.Connectors.MSRC.CSAF.Tests/StellaOps.Excititor.Connectors.MSRC.CSAF.Tests.csproj
index b3eb395f..fb2791b8 100644
--- a/src/StellaOps.Vexer.Connectors.MSRC.CSAF.Tests/StellaOps.Vexer.Connectors.MSRC.CSAF.Tests.csproj
+++ b/src/StellaOps.Excititor.Connectors.MSRC.CSAF.Tests/StellaOps.Excititor.Connectors.MSRC.CSAF.Tests.csproj
@@ -7,7 +7,7 @@
true
-
+
diff --git a/src/StellaOps.Vexer.Connectors.MSRC.CSAF/AGENTS.md b/src/StellaOps.Excititor.Connectors.MSRC.CSAF/AGENTS.md
similarity index 95%
rename from src/StellaOps.Vexer.Connectors.MSRC.CSAF/AGENTS.md
rename to src/StellaOps.Excititor.Connectors.MSRC.CSAF/AGENTS.md
index b96c34a8..4f9f7b88 100644
--- a/src/StellaOps.Vexer.Connectors.MSRC.CSAF/AGENTS.md
+++ b/src/StellaOps.Excititor.Connectors.MSRC.CSAF/AGENTS.md
@@ -20,4 +20,4 @@ Out: normalization/export, attestation, storage implementations (handled elsewhe
- Log request batches, rate-limit responses, and token refresh events without leaking secrets.
- Track metrics for documents fetched, retries, and failure categories.
## Tests
-- Connector tests with mocked MSRC endpoints and AAD token flow will live in `../StellaOps.Vexer.Connectors.MSRC.CSAF.Tests`.
+- Connector tests with mocked MSRC endpoints and AAD token flow will live in `../StellaOps.Excititor.Connectors.MSRC.CSAF.Tests`.
diff --git a/src/StellaOps.Vexer.Connectors.MSRC.CSAF/Authentication/MsrcTokenProvider.cs b/src/StellaOps.Excititor.Connectors.MSRC.CSAF/Authentication/MsrcTokenProvider.cs
similarity index 96%
rename from src/StellaOps.Vexer.Connectors.MSRC.CSAF/Authentication/MsrcTokenProvider.cs
rename to src/StellaOps.Excititor.Connectors.MSRC.CSAF/Authentication/MsrcTokenProvider.cs
index c201e8dd..5244504c 100644
--- a/src/StellaOps.Vexer.Connectors.MSRC.CSAF/Authentication/MsrcTokenProvider.cs
+++ b/src/StellaOps.Excititor.Connectors.MSRC.CSAF/Authentication/MsrcTokenProvider.cs
@@ -9,9 +9,9 @@ using System.Threading.Tasks;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Connectors.MSRC.CSAF.Configuration;
+using StellaOps.Excititor.Connectors.MSRC.CSAF.Configuration;
-namespace StellaOps.Vexer.Connectors.MSRC.CSAF.Authentication;
+namespace StellaOps.Excititor.Connectors.MSRC.CSAF.Authentication;
public interface IMsrcTokenProvider
{
@@ -20,7 +20,7 @@ public interface IMsrcTokenProvider
public sealed class MsrcTokenProvider : IMsrcTokenProvider, IDisposable
{
- private const string CachePrefix = "StellaOps.Vexer.Connectors.MSRC.CSAF.Token";
+ private const string CachePrefix = "StellaOps.Excititor.Connectors.MSRC.CSAF.Token";
private readonly IHttpClientFactory _httpClientFactory;
private readonly IMemoryCache _cache;
diff --git a/src/StellaOps.Vexer.Connectors.MSRC.CSAF/Configuration/MsrcConnectorOptions.cs b/src/StellaOps.Excititor.Connectors.MSRC.CSAF/Configuration/MsrcConnectorOptions.cs
similarity index 95%
rename from src/StellaOps.Vexer.Connectors.MSRC.CSAF/Configuration/MsrcConnectorOptions.cs
rename to src/StellaOps.Excititor.Connectors.MSRC.CSAF/Configuration/MsrcConnectorOptions.cs
index 7139af96..4b65f94a 100644
--- a/src/StellaOps.Vexer.Connectors.MSRC.CSAF/Configuration/MsrcConnectorOptions.cs
+++ b/src/StellaOps.Excititor.Connectors.MSRC.CSAF/Configuration/MsrcConnectorOptions.cs
@@ -2,11 +2,11 @@ using System;
using System.IO;
using System.IO.Abstractions;
-namespace StellaOps.Vexer.Connectors.MSRC.CSAF.Configuration;
+namespace StellaOps.Excititor.Connectors.MSRC.CSAF.Configuration;
public sealed class MsrcConnectorOptions
{
- public const string TokenClientName = "vexer.connector.msrc.token";
+ public const string TokenClientName = "excititor.connector.msrc.token";
public const string DefaultScope = "https://api.msrc.microsoft.com/.default";
///
diff --git a/src/StellaOps.Vexer.Connectors.MSRC.CSAF/DependencyInjection/MsrcConnectorServiceCollectionExtensions.cs b/src/StellaOps.Excititor.Connectors.MSRC.CSAF/DependencyInjection/MsrcConnectorServiceCollectionExtensions.cs
similarity index 84%
rename from src/StellaOps.Vexer.Connectors.MSRC.CSAF/DependencyInjection/MsrcConnectorServiceCollectionExtensions.cs
rename to src/StellaOps.Excititor.Connectors.MSRC.CSAF/DependencyInjection/MsrcConnectorServiceCollectionExtensions.cs
index 633e647c..565718e0 100644
--- a/src/StellaOps.Vexer.Connectors.MSRC.CSAF/DependencyInjection/MsrcConnectorServiceCollectionExtensions.cs
+++ b/src/StellaOps.Excititor.Connectors.MSRC.CSAF/DependencyInjection/MsrcConnectorServiceCollectionExtensions.cs
@@ -4,11 +4,11 @@ using System.Net.Http;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
-using StellaOps.Vexer.Connectors.MSRC.CSAF.Authentication;
-using StellaOps.Vexer.Connectors.MSRC.CSAF.Configuration;
+using StellaOps.Excititor.Connectors.MSRC.CSAF.Authentication;
+using StellaOps.Excititor.Connectors.MSRC.CSAF.Configuration;
using System.IO.Abstractions;
-namespace StellaOps.Vexer.Connectors.MSRC.CSAF.DependencyInjection;
+namespace StellaOps.Excititor.Connectors.MSRC.CSAF.DependencyInjection;
public static class MsrcConnectorServiceCollectionExtensions
{
@@ -25,7 +25,7 @@ public static class MsrcConnectorServiceCollectionExtensions
services.AddHttpClient(MsrcConnectorOptions.TokenClientName, client =>
{
client.Timeout = TimeSpan.FromSeconds(30);
- client.DefaultRequestHeaders.UserAgent.ParseAdd("StellaOps.Vexer.Connectors.MSRC.CSAF/1.0");
+ client.DefaultRequestHeaders.UserAgent.ParseAdd("StellaOps.Excititor.Connectors.MSRC.CSAF/1.0");
client.DefaultRequestHeaders.Accept.ParseAdd("application/json");
})
.ConfigurePrimaryHttpMessageHandler(static () => new HttpClientHandler
diff --git a/src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/StellaOps.Vexer.Connectors.Ubuntu.CSAF.csproj b/src/StellaOps.Excititor.Connectors.MSRC.CSAF/StellaOps.Excititor.Connectors.MSRC.CSAF.csproj
similarity index 83%
rename from src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/StellaOps.Vexer.Connectors.Ubuntu.CSAF.csproj
rename to src/StellaOps.Excititor.Connectors.MSRC.CSAF/StellaOps.Excititor.Connectors.MSRC.CSAF.csproj
index a99a942f..f6b57b36 100644
--- a/src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/StellaOps.Vexer.Connectors.Ubuntu.CSAF.csproj
+++ b/src/StellaOps.Excititor.Connectors.MSRC.CSAF/StellaOps.Excititor.Connectors.MSRC.CSAF.csproj
@@ -7,7 +7,7 @@
true
-
+
diff --git a/src/StellaOps.Excititor.Connectors.MSRC.CSAF/TASKS.md b/src/StellaOps.Excititor.Connectors.MSRC.CSAF/TASKS.md
new file mode 100644
index 00000000..1b74c7e3
--- /dev/null
+++ b/src/StellaOps.Excititor.Connectors.MSRC.CSAF/TASKS.md
@@ -0,0 +1,7 @@
+If you are working on this file you need to read docs/ARCHITECTURE_EXCITITOR.md and ./AGENTS.md).
+# TASKS
+| Task | Owner(s) | Depends on | Notes |
+|---|---|---|---|
+|EXCITITOR-CONN-MS-01-001 – AAD onboarding & token cache|Team Excititor Connectors – MSRC|EXCITITOR-CONN-ABS-01-001|**DONE (2025-10-17)** – Added MSRC connector project with configurable AAD options, token provider (offline/online modes), DI wiring, and unit tests covering caching and fallback scenarios.|
+|EXCITITOR-CONN-MS-01-002 – CSAF download pipeline|Team Excititor Connectors – MSRC|EXCITITOR-CONN-MS-01-001, EXCITITOR-STORAGE-01-003|TODO – Fetch CSAF packages with retry/backoff, checksum verification, and raw document persistence plus quarantine for schema failures.|
+|EXCITITOR-CONN-MS-01-003 – Trust metadata & provenance hints|Team Excititor Connectors – MSRC|EXCITITOR-CONN-MS-01-002, EXCITITOR-POLICY-01-001|TODO – Emit cosign/AAD issuer metadata, attach provenance details, and document policy integration.|
diff --git a/src/StellaOps.Vexer.Connectors.OCI.OpenVEX.Attest/AGENTS.md b/src/StellaOps.Excititor.Connectors.OCI.OpenVEX.Attest/AGENTS.md
similarity index 95%
rename from src/StellaOps.Vexer.Connectors.OCI.OpenVEX.Attest/AGENTS.md
rename to src/StellaOps.Excititor.Connectors.OCI.OpenVEX.Attest/AGENTS.md
index f1e74ebb..b95b946d 100644
--- a/src/StellaOps.Vexer.Connectors.OCI.OpenVEX.Attest/AGENTS.md
+++ b/src/StellaOps.Excititor.Connectors.OCI.OpenVEX.Attest/AGENTS.md
@@ -20,4 +20,4 @@ Out: normalization/export, policy evaluation, storage implementation.
- Log image references, attestation counts, verification outcomes; redact credentials.
- Emit metrics for attestation reuse ratio, verification duration, and failures.
## Tests
-- Connector tests with mock OCI registry/attestation responses will live in `../StellaOps.Vexer.Connectors.OCI.OpenVEX.Attest.Tests`.
+- Connector tests with mock OCI registry/attestation responses will live in `../StellaOps.Excititor.Connectors.OCI.OpenVEX.Attest.Tests`.
diff --git a/src/StellaOps.Excititor.Connectors.OCI.OpenVEX.Attest/TASKS.md b/src/StellaOps.Excititor.Connectors.OCI.OpenVEX.Attest/TASKS.md
new file mode 100644
index 00000000..7ddece4c
--- /dev/null
+++ b/src/StellaOps.Excititor.Connectors.OCI.OpenVEX.Attest/TASKS.md
@@ -0,0 +1,7 @@
+If you are working on this file you need to read docs/ARCHITECTURE_EXCITITOR.md and ./AGENTS.md).
+# TASKS
+| Task | Owner(s) | Depends on | Notes |
+|---|---|---|---|
+|EXCITITOR-CONN-OCI-01-001 – OCI discovery & auth plumbing|Team Excititor Connectors – OCI|EXCITITOR-CONN-ABS-01-001|TODO – Resolve OCI references, configure cosign auth (keyless/keyed), and support offline attestation bundles.|
+|EXCITITOR-CONN-OCI-01-002 – Attestation fetch & verify loop|Team Excititor Connectors – OCI|EXCITITOR-CONN-OCI-01-001, EXCITITOR-ATTEST-01-002|TODO – Download DSSE attestations, trigger verification, handle retries/backoff, and persist raw statements with metadata.|
+|EXCITITOR-CONN-OCI-01-003 – Provenance metadata & policy hooks|Team Excititor Connectors – OCI|EXCITITOR-CONN-OCI-01-002, EXCITITOR-POLICY-01-001|TODO – Emit provenance hints (image, subject digest, issuer) and trust metadata for policy weighting/logging.|
diff --git a/src/StellaOps.Vexer.Connectors.Oracle.CSAF.Tests/Metadata/OracleCatalogLoaderTests.cs b/src/StellaOps.Excititor.Connectors.Oracle.CSAF.Tests/Metadata/OracleCatalogLoaderTests.cs
similarity index 97%
rename from src/StellaOps.Vexer.Connectors.Oracle.CSAF.Tests/Metadata/OracleCatalogLoaderTests.cs
rename to src/StellaOps.Excititor.Connectors.Oracle.CSAF.Tests/Metadata/OracleCatalogLoaderTests.cs
index de05d2d4..d146b552 100644
--- a/src/StellaOps.Vexer.Connectors.Oracle.CSAF.Tests/Metadata/OracleCatalogLoaderTests.cs
+++ b/src/StellaOps.Excititor.Connectors.Oracle.CSAF.Tests/Metadata/OracleCatalogLoaderTests.cs
@@ -5,13 +5,13 @@ using System.Text;
using FluentAssertions;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging.Abstractions;
-using StellaOps.Vexer.Connectors.Oracle.CSAF.Configuration;
-using StellaOps.Vexer.Connectors.Oracle.CSAF.Metadata;
+using StellaOps.Excititor.Connectors.Oracle.CSAF.Configuration;
+using StellaOps.Excititor.Connectors.Oracle.CSAF.Metadata;
using System.IO.Abstractions.TestingHelpers;
using Xunit;
using System.Threading;
-namespace StellaOps.Vexer.Connectors.Oracle.CSAF.Tests.Metadata;
+namespace StellaOps.Excititor.Connectors.Oracle.CSAF.Tests.Metadata;
public sealed class OracleCatalogLoaderTests
{
diff --git a/src/StellaOps.Vexer.Connectors.Oracle.CSAF.Tests/StellaOps.Vexer.Connectors.Oracle.CSAF.Tests.csproj b/src/StellaOps.Excititor.Connectors.Oracle.CSAF.Tests/StellaOps.Excititor.Connectors.Oracle.CSAF.Tests.csproj
similarity index 82%
rename from src/StellaOps.Vexer.Connectors.Oracle.CSAF.Tests/StellaOps.Vexer.Connectors.Oracle.CSAF.Tests.csproj
rename to src/StellaOps.Excititor.Connectors.Oracle.CSAF.Tests/StellaOps.Excititor.Connectors.Oracle.CSAF.Tests.csproj
index 78a8cb0a..a93d8780 100644
--- a/src/StellaOps.Vexer.Connectors.Oracle.CSAF.Tests/StellaOps.Vexer.Connectors.Oracle.CSAF.Tests.csproj
+++ b/src/StellaOps.Excititor.Connectors.Oracle.CSAF.Tests/StellaOps.Excititor.Connectors.Oracle.CSAF.Tests.csproj
@@ -7,7 +7,7 @@
true
-
+
diff --git a/src/StellaOps.Vexer.Connectors.Oracle.CSAF/AGENTS.md b/src/StellaOps.Excititor.Connectors.Oracle.CSAF/AGENTS.md
similarity index 96%
rename from src/StellaOps.Vexer.Connectors.Oracle.CSAF/AGENTS.md
rename to src/StellaOps.Excititor.Connectors.Oracle.CSAF/AGENTS.md
index fab25f9c..2ba1a63c 100644
--- a/src/StellaOps.Vexer.Connectors.Oracle.CSAF/AGENTS.md
+++ b/src/StellaOps.Excititor.Connectors.Oracle.CSAF/AGENTS.md
@@ -20,4 +20,4 @@ Out: normalization, storage internals, export/attestation flows.
- Log CPU release windows, document counts, and fetch durations; redact any secrets.
- Emit metrics for deduped vs new documents and quarantine rates.
## Tests
-- Harness tests with mocked Oracle catalogues will live in `../StellaOps.Vexer.Connectors.Oracle.CSAF.Tests`.
+- Harness tests with mocked Oracle catalogues will live in `../StellaOps.Excititor.Connectors.Oracle.CSAF.Tests`.
diff --git a/src/StellaOps.Vexer.Connectors.Oracle.CSAF/Configuration/OracleConnectorOptions.cs b/src/StellaOps.Excititor.Connectors.Oracle.CSAF/Configuration/OracleConnectorOptions.cs
similarity index 95%
rename from src/StellaOps.Vexer.Connectors.Oracle.CSAF/Configuration/OracleConnectorOptions.cs
rename to src/StellaOps.Excititor.Connectors.Oracle.CSAF/Configuration/OracleConnectorOptions.cs
index aea25b80..a0c0abd5 100644
--- a/src/StellaOps.Vexer.Connectors.Oracle.CSAF/Configuration/OracleConnectorOptions.cs
+++ b/src/StellaOps.Excititor.Connectors.Oracle.CSAF/Configuration/OracleConnectorOptions.cs
@@ -2,11 +2,11 @@ using System;
using System.IO;
using System.IO.Abstractions;
-namespace StellaOps.Vexer.Connectors.Oracle.CSAF.Configuration;
+namespace StellaOps.Excititor.Connectors.Oracle.CSAF.Configuration;
public sealed class OracleConnectorOptions
{
- public const string HttpClientName = "vexer.connector.oracle.catalog";
+ public const string HttpClientName = "excititor.connector.oracle.catalog";
///
/// Oracle CSAF catalog endpoint hosting advisory metadata.
diff --git a/src/StellaOps.Vexer.Connectors.Oracle.CSAF/Configuration/OracleConnectorOptionsValidator.cs b/src/StellaOps.Excititor.Connectors.Oracle.CSAF/Configuration/OracleConnectorOptionsValidator.cs
similarity index 87%
rename from src/StellaOps.Vexer.Connectors.Oracle.CSAF/Configuration/OracleConnectorOptionsValidator.cs
rename to src/StellaOps.Excititor.Connectors.Oracle.CSAF/Configuration/OracleConnectorOptionsValidator.cs
index 13574413..684fa582 100644
--- a/src/StellaOps.Vexer.Connectors.Oracle.CSAF/Configuration/OracleConnectorOptionsValidator.cs
+++ b/src/StellaOps.Excititor.Connectors.Oracle.CSAF/Configuration/OracleConnectorOptionsValidator.cs
@@ -1,9 +1,9 @@
using System;
using System.Collections.Generic;
using System.IO.Abstractions;
-using StellaOps.Vexer.Connectors.Abstractions;
+using StellaOps.Excititor.Connectors.Abstractions;
-namespace StellaOps.Vexer.Connectors.Oracle.CSAF.Configuration;
+namespace StellaOps.Excititor.Connectors.Oracle.CSAF.Configuration;
public sealed class OracleConnectorOptionsValidator : IVexConnectorOptionsValidator
{
diff --git a/src/StellaOps.Vexer.Connectors.Oracle.CSAF/DependencyInjection/OracleConnectorServiceCollectionExtensions.cs b/src/StellaOps.Excititor.Connectors.Oracle.CSAF/DependencyInjection/OracleConnectorServiceCollectionExtensions.cs
similarity index 82%
rename from src/StellaOps.Vexer.Connectors.Oracle.CSAF/DependencyInjection/OracleConnectorServiceCollectionExtensions.cs
rename to src/StellaOps.Excititor.Connectors.Oracle.CSAF/DependencyInjection/OracleConnectorServiceCollectionExtensions.cs
index af8aa641..fd56b2a7 100644
--- a/src/StellaOps.Vexer.Connectors.Oracle.CSAF/DependencyInjection/OracleConnectorServiceCollectionExtensions.cs
+++ b/src/StellaOps.Excititor.Connectors.Oracle.CSAF/DependencyInjection/OracleConnectorServiceCollectionExtensions.cs
@@ -4,13 +4,13 @@ using System.Net.Http;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
-using StellaOps.Vexer.Connectors.Abstractions;
-using StellaOps.Vexer.Connectors.Oracle.CSAF.Configuration;
-using StellaOps.Vexer.Connectors.Oracle.CSAF.Metadata;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Connectors.Abstractions;
+using StellaOps.Excititor.Connectors.Oracle.CSAF.Configuration;
+using StellaOps.Excititor.Connectors.Oracle.CSAF.Metadata;
+using StellaOps.Excititor.Core;
using System.IO.Abstractions;
-namespace StellaOps.Vexer.Connectors.Oracle.CSAF.DependencyInjection;
+namespace StellaOps.Excititor.Connectors.Oracle.CSAF.DependencyInjection;
public static class OracleConnectorServiceCollectionExtensions
{
@@ -29,7 +29,7 @@ public static class OracleConnectorServiceCollectionExtensions
services.AddHttpClient(OracleConnectorOptions.HttpClientName, client =>
{
client.Timeout = TimeSpan.FromSeconds(60);
- client.DefaultRequestHeaders.UserAgent.ParseAdd("StellaOps.Vexer.Connectors.Oracle.CSAF/1.0");
+ client.DefaultRequestHeaders.UserAgent.ParseAdd("StellaOps.Excititor.Connectors.Oracle.CSAF/1.0");
client.DefaultRequestHeaders.Accept.ParseAdd("application/json");
})
.ConfigurePrimaryHttpMessageHandler(static () => new HttpClientHandler
diff --git a/src/StellaOps.Vexer.Connectors.Oracle.CSAF/Metadata/OracleCatalogLoader.cs b/src/StellaOps.Excititor.Connectors.Oracle.CSAF/Metadata/OracleCatalogLoader.cs
similarity index 98%
rename from src/StellaOps.Vexer.Connectors.Oracle.CSAF/Metadata/OracleCatalogLoader.cs
rename to src/StellaOps.Excititor.Connectors.Oracle.CSAF/Metadata/OracleCatalogLoader.cs
index 8268aff2..9df922bc 100644
--- a/src/StellaOps.Vexer.Connectors.Oracle.CSAF/Metadata/OracleCatalogLoader.cs
+++ b/src/StellaOps.Excititor.Connectors.Oracle.CSAF/Metadata/OracleCatalogLoader.cs
@@ -9,13 +9,13 @@ using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging;
-using StellaOps.Vexer.Connectors.Oracle.CSAF.Configuration;
+using StellaOps.Excititor.Connectors.Oracle.CSAF.Configuration;
-namespace StellaOps.Vexer.Connectors.Oracle.CSAF.Metadata;
+namespace StellaOps.Excititor.Connectors.Oracle.CSAF.Metadata;
public sealed class OracleCatalogLoader
{
- public const string CachePrefix = "StellaOps.Vexer.Connectors.Oracle.CSAF.Catalog";
+ public const string CachePrefix = "StellaOps.Excititor.Connectors.Oracle.CSAF.Catalog";
private readonly IHttpClientFactory _httpClientFactory;
private readonly IMemoryCache _memoryCache;
diff --git a/src/StellaOps.Vexer.Connectors.Oracle.CSAF/OracleCsafConnector.cs b/src/StellaOps.Excititor.Connectors.Oracle.CSAF/OracleCsafConnector.cs
similarity index 91%
rename from src/StellaOps.Vexer.Connectors.Oracle.CSAF/OracleCsafConnector.cs
rename to src/StellaOps.Excititor.Connectors.Oracle.CSAF/OracleCsafConnector.cs
index ec4bb0e3..757c5beb 100644
--- a/src/StellaOps.Vexer.Connectors.Oracle.CSAF/OracleCsafConnector.cs
+++ b/src/StellaOps.Excititor.Connectors.Oracle.CSAF/OracleCsafConnector.cs
@@ -2,17 +2,17 @@ using System.Collections.Generic;
using System.Collections.Immutable;
using System.Runtime.CompilerServices;
using Microsoft.Extensions.Logging;
-using StellaOps.Vexer.Connectors.Abstractions;
-using StellaOps.Vexer.Connectors.Oracle.CSAF.Configuration;
-using StellaOps.Vexer.Connectors.Oracle.CSAF.Metadata;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Connectors.Abstractions;
+using StellaOps.Excititor.Connectors.Oracle.CSAF.Configuration;
+using StellaOps.Excititor.Connectors.Oracle.CSAF.Metadata;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Connectors.Oracle.CSAF;
+namespace StellaOps.Excititor.Connectors.Oracle.CSAF;
public sealed class OracleCsafConnector : VexConnectorBase
{
private static readonly VexConnectorDescriptor DescriptorInstance = new(
- id: "vexer:oracle",
+ id: "excititor:oracle",
kind: VexProviderKind.Vendor,
displayName: "Oracle CSAF")
{
diff --git a/src/StellaOps.Vexer.Connectors.MSRC.CSAF/StellaOps.Vexer.Connectors.MSRC.CSAF.csproj b/src/StellaOps.Excititor.Connectors.Oracle.CSAF/StellaOps.Excititor.Connectors.Oracle.CSAF.csproj
similarity index 83%
rename from src/StellaOps.Vexer.Connectors.MSRC.CSAF/StellaOps.Vexer.Connectors.MSRC.CSAF.csproj
rename to src/StellaOps.Excititor.Connectors.Oracle.CSAF/StellaOps.Excititor.Connectors.Oracle.CSAF.csproj
index a99a942f..f6b57b36 100644
--- a/src/StellaOps.Vexer.Connectors.MSRC.CSAF/StellaOps.Vexer.Connectors.MSRC.CSAF.csproj
+++ b/src/StellaOps.Excititor.Connectors.Oracle.CSAF/StellaOps.Excititor.Connectors.Oracle.CSAF.csproj
@@ -7,7 +7,7 @@
true
-
+
diff --git a/src/StellaOps.Excititor.Connectors.Oracle.CSAF/TASKS.md b/src/StellaOps.Excititor.Connectors.Oracle.CSAF/TASKS.md
new file mode 100644
index 00000000..dee7319f
--- /dev/null
+++ b/src/StellaOps.Excititor.Connectors.Oracle.CSAF/TASKS.md
@@ -0,0 +1,7 @@
+If you are working on this file you need to read docs/ARCHITECTURE_EXCITITOR.md and ./AGENTS.md).
+# TASKS
+| Task | Owner(s) | Depends on | Notes |
+|---|---|---|---|
+|EXCITITOR-CONN-ORACLE-01-001 – Oracle CSAF catalogue discovery|Team Excititor Connectors – Oracle|EXCITITOR-CONN-ABS-01-001|DOING (2025-10-17) – Implement catalogue discovery, CPU calendar awareness, and offline snapshot import for Oracle CSAF feeds.|
+|EXCITITOR-CONN-ORACLE-01-002 – CSAF download & dedupe pipeline|Team Excititor Connectors – Oracle|EXCITITOR-CONN-ORACLE-01-001, EXCITITOR-STORAGE-01-003|TODO – Fetch CSAF documents with retry/backoff, checksum validation, revision deduplication, and raw persistence.|
+|EXCITITOR-CONN-ORACLE-01-003 – Trust metadata + provenance|Team Excititor Connectors – Oracle|EXCITITOR-CONN-ORACLE-01-002, EXCITITOR-POLICY-01-001|TODO – Emit Oracle signing metadata (PGP/cosign) and provenance hints for consensus weighting.|
diff --git a/src/StellaOps.Vexer.Connectors.RedHat.CSAF.Tests/Connectors/RedHatCsafConnectorTests.cs b/src/StellaOps.Excititor.Connectors.RedHat.CSAF.Tests/Connectors/RedHatCsafConnectorTests.cs
similarity index 96%
rename from src/StellaOps.Vexer.Connectors.RedHat.CSAF.Tests/Connectors/RedHatCsafConnectorTests.cs
rename to src/StellaOps.Excititor.Connectors.RedHat.CSAF.Tests/Connectors/RedHatCsafConnectorTests.cs
index 22765fd2..9adc6f58 100644
--- a/src/StellaOps.Vexer.Connectors.RedHat.CSAF.Tests/Connectors/RedHatCsafConnectorTests.cs
+++ b/src/StellaOps.Excititor.Connectors.RedHat.CSAF.Tests/Connectors/RedHatCsafConnectorTests.cs
@@ -8,17 +8,17 @@ using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Connectors.Abstractions;
-using StellaOps.Vexer.Connectors.RedHat.CSAF.Configuration;
-using StellaOps.Vexer.Connectors.RedHat.CSAF.Metadata;
-using StellaOps.Vexer.Core;
-using StellaOps.Vexer.Storage.Mongo;
+using StellaOps.Excititor.Connectors.Abstractions;
+using StellaOps.Excititor.Connectors.RedHat.CSAF.Configuration;
+using StellaOps.Excititor.Connectors.RedHat.CSAF.Metadata;
+using StellaOps.Excititor.Core;
+using StellaOps.Excititor.Storage.Mongo;
-namespace StellaOps.Vexer.Connectors.RedHat.CSAF.Tests.Connectors;
+namespace StellaOps.Excititor.Connectors.RedHat.CSAF.Tests.Connectors;
public sealed class RedHatCsafConnectorTests
{
- private static readonly VexConnectorDescriptor Descriptor = new("vexer:redhat", VexProviderKind.Distro, "Red Hat CSAF");
+ private static readonly VexConnectorDescriptor Descriptor = new("excititor:redhat", VexProviderKind.Distro, "Red Hat CSAF");
[Fact]
public async Task FetchAsync_EmitsDocumentsAfterSince()
diff --git a/src/StellaOps.Vexer.Connectors.RedHat.CSAF.Tests/Metadata/RedHatProviderMetadataLoaderTests.cs b/src/StellaOps.Excititor.Connectors.RedHat.CSAF.Tests/Metadata/RedHatProviderMetadataLoaderTests.cs
similarity index 98%
rename from src/StellaOps.Vexer.Connectors.RedHat.CSAF.Tests/Metadata/RedHatProviderMetadataLoaderTests.cs
rename to src/StellaOps.Excititor.Connectors.RedHat.CSAF.Tests/Metadata/RedHatProviderMetadataLoaderTests.cs
index 95d1dec9..98412c0b 100644
--- a/src/StellaOps.Vexer.Connectors.RedHat.CSAF.Tests/Metadata/RedHatProviderMetadataLoaderTests.cs
+++ b/src/StellaOps.Excititor.Connectors.RedHat.CSAF.Tests/Metadata/RedHatProviderMetadataLoaderTests.cs
@@ -6,11 +6,11 @@ using System.Text;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Connectors.RedHat.CSAF.Configuration;
-using StellaOps.Vexer.Connectors.RedHat.CSAF.Metadata;
+using StellaOps.Excititor.Connectors.RedHat.CSAF.Configuration;
+using StellaOps.Excititor.Connectors.RedHat.CSAF.Metadata;
using System.IO.Abstractions.TestingHelpers;
-namespace StellaOps.Vexer.Connectors.RedHat.CSAF.Tests.Metadata;
+namespace StellaOps.Excititor.Connectors.RedHat.CSAF.Tests.Metadata;
public sealed class RedHatProviderMetadataLoaderTests
{
diff --git a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Tests/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Tests.csproj b/src/StellaOps.Excititor.Connectors.RedHat.CSAF.Tests/StellaOps.Excititor.Connectors.RedHat.CSAF.Tests.csproj
similarity index 67%
rename from src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Tests/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Tests.csproj
rename to src/StellaOps.Excititor.Connectors.RedHat.CSAF.Tests/StellaOps.Excititor.Connectors.RedHat.CSAF.Tests.csproj
index 07cb02f5..9bb50cb9 100644
--- a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Tests/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Tests.csproj
+++ b/src/StellaOps.Excititor.Connectors.RedHat.CSAF.Tests/StellaOps.Excititor.Connectors.RedHat.CSAF.Tests.csproj
@@ -7,8 +7,8 @@
true
-
-
+
+
diff --git a/src/StellaOps.Vexer.Connectors.RedHat.CSAF/AGENTS.md b/src/StellaOps.Excititor.Connectors.RedHat.CSAF/AGENTS.md
similarity index 90%
rename from src/StellaOps.Vexer.Connectors.RedHat.CSAF/AGENTS.md
rename to src/StellaOps.Excititor.Connectors.RedHat.CSAF/AGENTS.md
index 5c2528d0..207d75a1 100644
--- a/src/StellaOps.Vexer.Connectors.RedHat.CSAF/AGENTS.md
+++ b/src/StellaOps.Excititor.Connectors.RedHat.CSAF/AGENTS.md
@@ -14,7 +14,7 @@ Connector for Red Hat CSAF VEX feeds, fetching provider metadata, CSAF documents
- Policy/consensus rely on Red Hat trust metadata captured here.
## Interfaces & contracts
- Implements `IVexConnector` with Red Hat-specific options (parallelism, token auth if configured).
-- Uses abstractions from `StellaOps.Vexer.Connectors.Abstractions` for HTTP/resume helpers.
+- Uses abstractions from `StellaOps.Excititor.Connectors.Abstractions` for HTTP/resume helpers.
## In/Out of scope
In: data acquisition, HTTP retries, raw document persistence, provider metadata population.
Out: normalization, storage internals, attestation, general connector abstractions (covered elsewhere).
@@ -22,4 +22,4 @@ Out: normalization, storage internals, attestation, general connector abstractio
- Log provider metadata URL, revision ids, fetch durations; redact tokens.
- Emit counters for documents fetched, skipped (304), quarantined.
## Tests
-- Connector harness tests (mock HTTP) and resume regression cases will live in `../StellaOps.Vexer.Connectors.RedHat.CSAF.Tests`.
+- Connector harness tests (mock HTTP) and resume regression cases will live in `../StellaOps.Excititor.Connectors.RedHat.CSAF.Tests`.
diff --git a/src/StellaOps.Vexer.Connectors.RedHat.CSAF/Configuration/RedHatConnectorOptions.cs b/src/StellaOps.Excititor.Connectors.RedHat.CSAF/Configuration/RedHatConnectorOptions.cs
similarity index 96%
rename from src/StellaOps.Vexer.Connectors.RedHat.CSAF/Configuration/RedHatConnectorOptions.cs
rename to src/StellaOps.Excititor.Connectors.RedHat.CSAF/Configuration/RedHatConnectorOptions.cs
index 9d9bf1ab..9e0e5f7e 100644
--- a/src/StellaOps.Vexer.Connectors.RedHat.CSAF/Configuration/RedHatConnectorOptions.cs
+++ b/src/StellaOps.Excititor.Connectors.RedHat.CSAF/Configuration/RedHatConnectorOptions.cs
@@ -1,7 +1,7 @@
using System.Collections.Generic;
using System.IO.Abstractions;
-namespace StellaOps.Vexer.Connectors.RedHat.CSAF.Configuration;
+namespace StellaOps.Excititor.Connectors.RedHat.CSAF.Configuration;
public sealed class RedHatConnectorOptions
{
@@ -10,7 +10,7 @@ public sealed class RedHatConnectorOptions
///
/// HTTP client name registered for the connector.
///
- public const string HttpClientName = "vexer.connector.redhat";
+ public const string HttpClientName = "excititor.connector.redhat";
///
/// URI of the CSAF provider metadata document.
diff --git a/src/StellaOps.Vexer.Connectors.RedHat.CSAF/DependencyInjection/RedHatConnectorServiceCollectionExtensions.cs b/src/StellaOps.Excititor.Connectors.RedHat.CSAF/DependencyInjection/RedHatConnectorServiceCollectionExtensions.cs
similarity index 82%
rename from src/StellaOps.Vexer.Connectors.RedHat.CSAF/DependencyInjection/RedHatConnectorServiceCollectionExtensions.cs
rename to src/StellaOps.Excititor.Connectors.RedHat.CSAF/DependencyInjection/RedHatConnectorServiceCollectionExtensions.cs
index ed46bc70..60ec9362 100644
--- a/src/StellaOps.Vexer.Connectors.RedHat.CSAF/DependencyInjection/RedHatConnectorServiceCollectionExtensions.cs
+++ b/src/StellaOps.Excititor.Connectors.RedHat.CSAF/DependencyInjection/RedHatConnectorServiceCollectionExtensions.cs
@@ -2,13 +2,13 @@ using System.Net;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
-using StellaOps.Vexer.Connectors.RedHat.CSAF.Configuration;
-using StellaOps.Vexer.Connectors.RedHat.CSAF.Metadata;
-using StellaOps.Vexer.Core;
-using StellaOps.Vexer.Storage.Mongo;
+using StellaOps.Excititor.Connectors.RedHat.CSAF.Configuration;
+using StellaOps.Excititor.Connectors.RedHat.CSAF.Metadata;
+using StellaOps.Excititor.Core;
+using StellaOps.Excititor.Storage.Mongo;
using System.IO.Abstractions;
-namespace StellaOps.Vexer.Connectors.RedHat.CSAF.DependencyInjection;
+namespace StellaOps.Excititor.Connectors.RedHat.CSAF.DependencyInjection;
public static class RedHatConnectorServiceCollectionExtensions
{
@@ -29,7 +29,7 @@ public static class RedHatConnectorServiceCollectionExtensions
services.AddHttpClient(RedHatConnectorOptions.HttpClientName, client =>
{
client.Timeout = TimeSpan.FromSeconds(30);
- client.DefaultRequestHeaders.UserAgent.ParseAdd("StellaOps.Vexer.Connectors.RedHat/1.0");
+ client.DefaultRequestHeaders.UserAgent.ParseAdd("StellaOps.Excititor.Connectors.RedHat/1.0");
client.DefaultRequestHeaders.Accept.ParseAdd("application/json");
})
.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
diff --git a/src/StellaOps.Vexer.Connectors.RedHat.CSAF/Metadata/RedHatProviderMetadataLoader.cs b/src/StellaOps.Excititor.Connectors.RedHat.CSAF/Metadata/RedHatProviderMetadataLoader.cs
similarity index 97%
rename from src/StellaOps.Vexer.Connectors.RedHat.CSAF/Metadata/RedHatProviderMetadataLoader.cs
rename to src/StellaOps.Excititor.Connectors.RedHat.CSAF/Metadata/RedHatProviderMetadataLoader.cs
index 8a38db61..d974e30b 100644
--- a/src/StellaOps.Vexer.Connectors.RedHat.CSAF/Metadata/RedHatProviderMetadataLoader.cs
+++ b/src/StellaOps.Excititor.Connectors.RedHat.CSAF/Metadata/RedHatProviderMetadataLoader.cs
@@ -8,15 +8,15 @@ using System.Text.Json.Serialization;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Connectors.RedHat.CSAF.Configuration;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Connectors.RedHat.CSAF.Configuration;
+using StellaOps.Excititor.Core;
using System.IO.Abstractions;
-namespace StellaOps.Vexer.Connectors.RedHat.CSAF.Metadata;
+namespace StellaOps.Excititor.Connectors.RedHat.CSAF.Metadata;
public sealed class RedHatProviderMetadataLoader
{
- public const string CacheKey = "StellaOps.Vexer.Connectors.RedHat.CSAF.Metadata";
+ public const string CacheKey = "StellaOps.Excititor.Connectors.RedHat.CSAF.Metadata";
private readonly IHttpClientFactory _httpClientFactory;
private readonly IMemoryCache _cache;
@@ -242,7 +242,7 @@ public sealed class RedHatProviderMetadataLoader
var trust = BuildTrust();
return new VexProvider(
- id: "vexer:redhat",
+ id: "excititor:redhat",
displayName: document.Metadata.Provider.Name,
kind: VexProviderKind.Distro,
baseUris: distributions,
diff --git a/src/StellaOps.Vexer.Connectors.RedHat.CSAF/RedHatCsafConnector.cs b/src/StellaOps.Excititor.Connectors.RedHat.CSAF/RedHatCsafConnector.cs
similarity index 96%
rename from src/StellaOps.Vexer.Connectors.RedHat.CSAF/RedHatCsafConnector.cs
rename to src/StellaOps.Excititor.Connectors.RedHat.CSAF/RedHatCsafConnector.cs
index b4cca425..8b7fc08c 100644
--- a/src/StellaOps.Vexer.Connectors.RedHat.CSAF/RedHatCsafConnector.cs
+++ b/src/StellaOps.Excititor.Connectors.RedHat.CSAF/RedHatCsafConnector.cs
@@ -7,13 +7,13 @@ using System.Text.Json;
using System.Xml.Linq;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Connectors.Abstractions;
-using StellaOps.Vexer.Connectors.RedHat.CSAF.Configuration;
-using StellaOps.Vexer.Connectors.RedHat.CSAF.Metadata;
-using StellaOps.Vexer.Core;
-using StellaOps.Vexer.Storage.Mongo;
+using StellaOps.Excititor.Connectors.Abstractions;
+using StellaOps.Excititor.Connectors.RedHat.CSAF.Configuration;
+using StellaOps.Excititor.Connectors.RedHat.CSAF.Metadata;
+using StellaOps.Excititor.Core;
+using StellaOps.Excititor.Storage.Mongo;
-namespace StellaOps.Vexer.Connectors.RedHat.CSAF;
+namespace StellaOps.Excititor.Connectors.RedHat.CSAF;
public sealed class RedHatCsafConnector : VexConnectorBase
{
diff --git a/src/StellaOps.Vexer.Connectors.RedHat.CSAF/StellaOps.Vexer.Connectors.RedHat.CSAF.csproj b/src/StellaOps.Excititor.Connectors.RedHat.CSAF/StellaOps.Excititor.Connectors.RedHat.CSAF.csproj
similarity index 73%
rename from src/StellaOps.Vexer.Connectors.RedHat.CSAF/StellaOps.Vexer.Connectors.RedHat.CSAF.csproj
rename to src/StellaOps.Excititor.Connectors.RedHat.CSAF/StellaOps.Excititor.Connectors.RedHat.CSAF.csproj
index 3c27086b..afd08612 100644
--- a/src/StellaOps.Vexer.Connectors.RedHat.CSAF/StellaOps.Vexer.Connectors.RedHat.CSAF.csproj
+++ b/src/StellaOps.Excititor.Connectors.RedHat.CSAF/StellaOps.Excititor.Connectors.RedHat.CSAF.csproj
@@ -7,8 +7,8 @@
true
-
-
+
+
diff --git a/src/StellaOps.Excititor.Connectors.RedHat.CSAF/TASKS.md b/src/StellaOps.Excititor.Connectors.RedHat.CSAF/TASKS.md
new file mode 100644
index 00000000..11cc1a92
--- /dev/null
+++ b/src/StellaOps.Excititor.Connectors.RedHat.CSAF/TASKS.md
@@ -0,0 +1,10 @@
+If you are working on this file you need to read docs/ARCHITECTURE_EXCITITOR.md and ./AGENTS.md).
+# TASKS
+| Task | Owner(s) | Depends on | Notes |
+|---|---|---|---|
+|EXCITITOR-CONN-RH-01-001 – Provider metadata discovery|Team Excititor Connectors – Red Hat|EXCITITOR-CONN-ABS-01-001|**DONE (2025-10-17)** – Added `RedHatProviderMetadataLoader` with HTTP/ETag caching, offline snapshot handling, and validation; exposed DI helper + tests covering live, cached, and offline scenarios.|
+|EXCITITOR-CONN-RH-01-002 – Incremental CSAF pulls|Team Excititor Connectors – Red Hat|EXCITITOR-CONN-RH-01-001, EXCITITOR-STORAGE-01-003|**DONE (2025-10-17)** – Implemented `RedHatCsafConnector` with ROLIE feed parsing, incremental filtering via `context.Since`, CSAF document download + metadata capture, and persistence through `IVexRawDocumentSink`; tests cover live fetch/cache/offline scenarios with ETag handling.|
+|EXCITITOR-CONN-RH-01-003 – Trust metadata emission|Team Excititor Connectors – Red Hat|EXCITITOR-CONN-RH-01-002, EXCITITOR-POLICY-01-001|**DONE (2025-10-17)** – Provider metadata loader now emits trust overrides (weight, cosign issuer/pattern, PGP fingerprints) and the connector surfaces provenance hints for policy/consensus layers.|
+|EXCITITOR-CONN-RH-01-004 – Resume state persistence|Team Excititor Connectors – Red Hat|EXCITITOR-CONN-RH-01-002, EXCITITOR-STORAGE-01-003|**DONE (2025-10-17)** – Connector now loads/saves resume state via `IVexConnectorStateRepository`, tracking last update timestamp and recent document digests to avoid duplicate CSAF ingestion; regression covers state persistence and duplicate skips.|
+|EXCITITOR-CONN-RH-01-005 – Worker/WebService integration|Team Excititor Connectors – Red Hat|EXCITITOR-CONN-RH-01-002|**DONE (2025-10-17)** – Worker/WebService now call `AddRedHatCsafConnector`, register the connector + state repo, and default worker scheduling adds the `excititor:redhat` provider so background jobs and orchestration can activate the connector without extra wiring.|
+|EXCITITOR-CONN-RH-01-006 – CSAF normalization parity tests|Team Excititor Connectors – Red Hat|EXCITITOR-CONN-RH-01-002, EXCITITOR-FMT-CSAF-01-001|**DONE (2025-10-17)** – Added RHSA fixture-driven regression verifying CSAF normalizer retains Red Hat product metadata, tracking fields, and timestamps (`rhsa-sample.json` + `CsafNormalizerTests.NormalizeAsync_PreservesRedHatSpecificMetadata`).|
diff --git a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Tests/Authentication/RancherHubTokenProviderTests.cs b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Tests/Authentication/RancherHubTokenProviderTests.cs
similarity index 95%
rename from src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Tests/Authentication/RancherHubTokenProviderTests.cs
rename to src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Tests/Authentication/RancherHubTokenProviderTests.cs
index 3ca92c92..39b64040 100644
--- a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Tests/Authentication/RancherHubTokenProviderTests.cs
+++ b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Tests/Authentication/RancherHubTokenProviderTests.cs
@@ -6,11 +6,11 @@ using System.Threading;
using FluentAssertions;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging.Abstractions;
-using StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Authentication;
-using StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Configuration;
+using StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Authentication;
+using StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Configuration;
using Xunit;
-namespace StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Tests.Authentication;
+namespace StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Tests.Authentication;
public sealed class RancherHubTokenProviderTests
{
diff --git a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Tests/Metadata/RancherHubMetadataLoaderTests.cs b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Tests/Metadata/RancherHubMetadataLoaderTests.cs
similarity index 95%
rename from src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Tests/Metadata/RancherHubMetadataLoaderTests.cs
rename to src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Tests/Metadata/RancherHubMetadataLoaderTests.cs
index b47da23c..54b1bba5 100644
--- a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Tests/Metadata/RancherHubMetadataLoaderTests.cs
+++ b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Tests/Metadata/RancherHubMetadataLoaderTests.cs
@@ -7,20 +7,20 @@ using System.Text;
using FluentAssertions;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging.Abstractions;
-using StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Authentication;
-using StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Configuration;
-using StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Metadata;
+using StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Authentication;
+using StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Configuration;
+using StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Metadata;
using System.IO.Abstractions.TestingHelpers;
using System.Threading;
using Xunit;
-namespace StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Tests.Metadata;
+namespace StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Tests.Metadata;
public sealed class RancherHubMetadataLoaderTests
{
private const string SampleDiscovery = """
{
- "hubId": "vexer:suse.rancher",
+ "hubId": "excititor:suse.rancher",
"title": "SUSE Rancher VEX Hub",
"subscription": {
"eventsUri": "https://vexhub.suse.com/api/v1/events",
diff --git a/src/StellaOps.Vexer.Connectors.RedHat.CSAF.Tests/StellaOps.Vexer.Connectors.RedHat.CSAF.Tests.csproj b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Tests/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Tests.csproj
similarity index 66%
rename from src/StellaOps.Vexer.Connectors.RedHat.CSAF.Tests/StellaOps.Vexer.Connectors.RedHat.CSAF.Tests.csproj
rename to src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Tests/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Tests.csproj
index e7a249c3..aefea3e9 100644
--- a/src/StellaOps.Vexer.Connectors.RedHat.CSAF.Tests/StellaOps.Vexer.Connectors.RedHat.CSAF.Tests.csproj
+++ b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Tests/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Tests.csproj
@@ -7,8 +7,8 @@
true
-
-
+
+
diff --git a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/AGENTS.md b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/AGENTS.md
similarity index 95%
rename from src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/AGENTS.md
rename to src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/AGENTS.md
index 3455eba0..0d6c1dfc 100644
--- a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/AGENTS.md
+++ b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/AGENTS.md
@@ -20,4 +20,4 @@ Out: normalization/export tasks, storage layer implementation, attestation.
- Log subscription IDs, batch sizes, and checkpoint updates while redacting secrets.
- Emit metrics for messages processed, lag, and retries.
## Tests
-- Connector harness tests with simulated hub responses will live in `../StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Tests`.
+- Connector harness tests with simulated hub responses will live in `../StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Tests`.
diff --git a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/Authentication/RancherHubTokenProvider.cs b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/Authentication/RancherHubTokenProvider.cs
similarity index 96%
rename from src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/Authentication/RancherHubTokenProvider.cs
rename to src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/Authentication/RancherHubTokenProvider.cs
index 6b5ff948..536a46ff 100644
--- a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/Authentication/RancherHubTokenProvider.cs
+++ b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/Authentication/RancherHubTokenProvider.cs
@@ -8,13 +8,13 @@ using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging;
-using StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Configuration;
+using StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Configuration;
-namespace StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Authentication;
+namespace StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Authentication;
public sealed class RancherHubTokenProvider
{
- private const string CachePrefix = "StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Token";
+ private const string CachePrefix = "StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Token";
private readonly IHttpClientFactory _httpClientFactory;
private readonly IMemoryCache _cache;
diff --git a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/Configuration/RancherHubConnectorOptions.cs b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/Configuration/RancherHubConnectorOptions.cs
similarity index 97%
rename from src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/Configuration/RancherHubConnectorOptions.cs
rename to src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/Configuration/RancherHubConnectorOptions.cs
index 83e0bea1..d9bf7434 100644
--- a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/Configuration/RancherHubConnectorOptions.cs
+++ b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/Configuration/RancherHubConnectorOptions.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.IO;
using System.IO.Abstractions;
-namespace StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Configuration;
+namespace StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Configuration;
public sealed class RancherHubConnectorOptions
{
@@ -12,7 +12,7 @@ public sealed class RancherHubConnectorOptions
///
/// HTTP client name registered for the connector.
///
- public const string HttpClientName = "vexer.connector.suse.rancherhub";
+ public const string HttpClientName = "excititor.connector.suse.rancherhub";
///
/// URI for the Rancher VEX hub discovery document.
diff --git a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/Configuration/RancherHubConnectorOptionsValidator.cs b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/Configuration/RancherHubConnectorOptionsValidator.cs
similarity index 87%
rename from src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/Configuration/RancherHubConnectorOptionsValidator.cs
rename to src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/Configuration/RancherHubConnectorOptionsValidator.cs
index 4c29f5c5..175d2fcd 100644
--- a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/Configuration/RancherHubConnectorOptionsValidator.cs
+++ b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/Configuration/RancherHubConnectorOptionsValidator.cs
@@ -1,9 +1,9 @@
using System;
using System.Collections.Generic;
using System.IO.Abstractions;
-using StellaOps.Vexer.Connectors.Abstractions;
+using StellaOps.Excititor.Connectors.Abstractions;
-namespace StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Configuration;
+namespace StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Configuration;
public sealed class RancherHubConnectorOptionsValidator : IVexConnectorOptionsValidator
{
diff --git a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/DependencyInjection/RancherHubConnectorServiceCollectionExtensions.cs b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/DependencyInjection/RancherHubConnectorServiceCollectionExtensions.cs
similarity index 79%
rename from src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/DependencyInjection/RancherHubConnectorServiceCollectionExtensions.cs
rename to src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/DependencyInjection/RancherHubConnectorServiceCollectionExtensions.cs
index 3e8b23e7..69823a44 100644
--- a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/DependencyInjection/RancherHubConnectorServiceCollectionExtensions.cs
+++ b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/DependencyInjection/RancherHubConnectorServiceCollectionExtensions.cs
@@ -4,14 +4,14 @@ using System.Net.Http;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
-using StellaOps.Vexer.Connectors.Abstractions;
-using StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Authentication;
-using StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Configuration;
-using StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Metadata;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Connectors.Abstractions;
+using StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Authentication;
+using StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Configuration;
+using StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Metadata;
+using StellaOps.Excititor.Core;
using System.IO.Abstractions;
-namespace StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.DependencyInjection;
+namespace StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.DependencyInjection;
public static class RancherHubConnectorServiceCollectionExtensions
{
@@ -36,7 +36,7 @@ public static class RancherHubConnectorServiceCollectionExtensions
services.AddHttpClient(RancherHubConnectorOptions.HttpClientName, client =>
{
client.Timeout = TimeSpan.FromSeconds(30);
- client.DefaultRequestHeaders.UserAgent.ParseAdd("StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/1.0");
+ client.DefaultRequestHeaders.UserAgent.ParseAdd("StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/1.0");
client.DefaultRequestHeaders.Accept.ParseAdd("application/json");
})
.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
diff --git a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/Metadata/RancherHubMetadataLoader.cs b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/Metadata/RancherHubMetadataLoader.cs
similarity index 97%
rename from src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/Metadata/RancherHubMetadataLoader.cs
rename to src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/Metadata/RancherHubMetadataLoader.cs
index 930f8192..850207f8 100644
--- a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/Metadata/RancherHubMetadataLoader.cs
+++ b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/Metadata/RancherHubMetadataLoader.cs
@@ -10,15 +10,15 @@ using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging;
-using StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Authentication;
-using StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Configuration;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Authentication;
+using StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Configuration;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Metadata;
+namespace StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Metadata;
public sealed class RancherHubMetadataLoader
{
- public const string CachePrefix = "StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Metadata";
+ public const string CachePrefix = "StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Metadata";
private readonly IHttpClientFactory _httpClientFactory;
private readonly IMemoryCache _memoryCache;
@@ -226,7 +226,7 @@ public sealed class RancherHubMetadataLoader
using var document = JsonDocument.Parse(payload, _documentOptions);
var root = document.RootElement;
- var hubId = ReadString(root, "hubId") ?? "vexer:suse:rancher";
+ var hubId = ReadString(root, "hubId") ?? "excititor:suse:rancher";
var title = ReadString(root, "title") ?? ReadString(root, "displayName") ?? "SUSE Rancher VEX Hub";
var baseUri = ReadUri(root, "baseUri");
diff --git a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/RancherHubConnector.cs b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/RancherHubConnector.cs
similarity index 89%
rename from src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/RancherHubConnector.cs
rename to src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/RancherHubConnector.cs
index 4b638586..9f8bcb1a 100644
--- a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/RancherHubConnector.cs
+++ b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/RancherHubConnector.cs
@@ -3,17 +3,17 @@ using System.Collections.Generic;
using System.Collections.Immutable;
using System.Runtime.CompilerServices;
using Microsoft.Extensions.Logging;
-using StellaOps.Vexer.Connectors.Abstractions;
-using StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Configuration;
-using StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Metadata;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Connectors.Abstractions;
+using StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Configuration;
+using StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Metadata;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Connectors.SUSE.RancherVEXHub;
+namespace StellaOps.Excititor.Connectors.SUSE.RancherVEXHub;
public sealed class RancherHubConnector : VexConnectorBase
{
private static readonly VexConnectorDescriptor StaticDescriptor = new(
- id: "vexer:suse.rancher",
+ id: "excititor:suse.rancher",
kind: VexProviderKind.Hub,
displayName: "SUSE Rancher VEX Hub")
{
@@ -69,7 +69,7 @@ public sealed class RancherHubConnector : VexConnectorBase
_metadata = await _metadataLoader.LoadAsync(_options, cancellationToken).ConfigureAwait(false);
}
- LogConnectorEvent(LogLevel.Debug, "fetch", "Rancher hub connector discovery ready; event ingestion will be implemented in VEXER-CONN-SUSE-01-002.", new Dictionary
+ LogConnectorEvent(LogLevel.Debug, "fetch", "Rancher hub connector discovery ready; event ingestion will be implemented in EXCITITOR-CONN-SUSE-01-002.", new Dictionary
{
["since"] = context.Since?.ToString("O"),
["subscriptionUri"] = _metadata.Metadata.Subscription.EventsUri.ToString(),
diff --git a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.csproj b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.csproj
similarity index 73%
rename from src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.csproj
rename to src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.csproj
index 3c27086b..afd08612 100644
--- a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.csproj
+++ b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.csproj
@@ -7,8 +7,8 @@
true
-
-
+
+
diff --git a/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/TASKS.md b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/TASKS.md
new file mode 100644
index 00000000..324d9386
--- /dev/null
+++ b/src/StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/TASKS.md
@@ -0,0 +1,7 @@
+If you are working on this file you need to read docs/ARCHITECTURE_EXCITITOR.md and ./AGENTS.md).
+# TASKS
+| Task | Owner(s) | Depends on | Notes |
+|---|---|---|---|
+|EXCITITOR-CONN-SUSE-01-001 – Rancher hub discovery & auth|Team Excititor Connectors – SUSE|EXCITITOR-CONN-ABS-01-001|**DONE (2025-10-17)** – Added Rancher hub options/token provider, discovery metadata loader with offline snapshots + caching, connector shell, DI wiring, and unit tests covering network/offline paths.|
+|EXCITITOR-CONN-SUSE-01-002 – Checkpointed event ingestion|Team Excititor Connectors – SUSE|EXCITITOR-CONN-SUSE-01-001, EXCITITOR-STORAGE-01-003|TODO – Process hub events with resume checkpoints, deduplication, and quarantine path for malformed payloads.|
+|EXCITITOR-CONN-SUSE-01-003 – Trust metadata & policy hints|Team Excititor Connectors – SUSE|EXCITITOR-CONN-SUSE-01-002, EXCITITOR-POLICY-01-001|TODO – Emit provider trust configuration (signers, weight overrides) and attach provenance hints for consensus engine.|
diff --git a/src/StellaOps.Vexer.Connectors.Ubuntu.CSAF.Tests/Metadata/UbuntuCatalogLoaderTests.cs b/src/StellaOps.Excititor.Connectors.Ubuntu.CSAF.Tests/Metadata/UbuntuCatalogLoaderTests.cs
similarity index 97%
rename from src/StellaOps.Vexer.Connectors.Ubuntu.CSAF.Tests/Metadata/UbuntuCatalogLoaderTests.cs
rename to src/StellaOps.Excititor.Connectors.Ubuntu.CSAF.Tests/Metadata/UbuntuCatalogLoaderTests.cs
index 363fb91d..8335ec5e 100644
--- a/src/StellaOps.Vexer.Connectors.Ubuntu.CSAF.Tests/Metadata/UbuntuCatalogLoaderTests.cs
+++ b/src/StellaOps.Excititor.Connectors.Ubuntu.CSAF.Tests/Metadata/UbuntuCatalogLoaderTests.cs
@@ -5,13 +5,13 @@ using System.Text;
using FluentAssertions;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging.Abstractions;
-using StellaOps.Vexer.Connectors.Ubuntu.CSAF.Configuration;
-using StellaOps.Vexer.Connectors.Ubuntu.CSAF.Metadata;
+using StellaOps.Excititor.Connectors.Ubuntu.CSAF.Configuration;
+using StellaOps.Excititor.Connectors.Ubuntu.CSAF.Metadata;
using System.IO.Abstractions.TestingHelpers;
using Xunit;
using System.Threading;
-namespace StellaOps.Vexer.Connectors.Ubuntu.CSAF.Tests.Metadata;
+namespace StellaOps.Excititor.Connectors.Ubuntu.CSAF.Tests.Metadata;
public sealed class UbuntuCatalogLoaderTests
{
diff --git a/src/StellaOps.Vexer.Connectors.Ubuntu.CSAF.Tests/StellaOps.Vexer.Connectors.Ubuntu.CSAF.Tests.csproj b/src/StellaOps.Excititor.Connectors.Ubuntu.CSAF.Tests/StellaOps.Excititor.Connectors.Ubuntu.CSAF.Tests.csproj
similarity index 82%
rename from src/StellaOps.Vexer.Connectors.Ubuntu.CSAF.Tests/StellaOps.Vexer.Connectors.Ubuntu.CSAF.Tests.csproj
rename to src/StellaOps.Excititor.Connectors.Ubuntu.CSAF.Tests/StellaOps.Excititor.Connectors.Ubuntu.CSAF.Tests.csproj
index 68fa2841..57fe463d 100644
--- a/src/StellaOps.Vexer.Connectors.Ubuntu.CSAF.Tests/StellaOps.Vexer.Connectors.Ubuntu.CSAF.Tests.csproj
+++ b/src/StellaOps.Excititor.Connectors.Ubuntu.CSAF.Tests/StellaOps.Excititor.Connectors.Ubuntu.CSAF.Tests.csproj
@@ -7,7 +7,7 @@
true
-
+
diff --git a/src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/AGENTS.md b/src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/AGENTS.md
similarity index 95%
rename from src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/AGENTS.md
rename to src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/AGENTS.md
index 18ec016f..84f8f273 100644
--- a/src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/AGENTS.md
+++ b/src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/AGENTS.md
@@ -20,4 +20,4 @@ Out: normalization/export, storage internals, attestation.
- Log release window fetch metrics, rate limits, and deduplication stats; mask secrets.
- Emit counters for newly ingested vs unchanged USNs and quota usage.
## Tests
-- Connector tests with mocked Ubuntu CSAF endpoints will live in `../StellaOps.Vexer.Connectors.Ubuntu.CSAF.Tests`.
+- Connector tests with mocked Ubuntu CSAF endpoints will live in `../StellaOps.Excititor.Connectors.Ubuntu.CSAF.Tests`.
diff --git a/src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/Configuration/UbuntuConnectorOptions.cs b/src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/Configuration/UbuntuConnectorOptions.cs
similarity index 94%
rename from src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/Configuration/UbuntuConnectorOptions.cs
rename to src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/Configuration/UbuntuConnectorOptions.cs
index d575b61c..6667b276 100644
--- a/src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/Configuration/UbuntuConnectorOptions.cs
+++ b/src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/Configuration/UbuntuConnectorOptions.cs
@@ -3,11 +3,11 @@ using System.Collections.Generic;
using System.IO;
using System.IO.Abstractions;
-namespace StellaOps.Vexer.Connectors.Ubuntu.CSAF.Configuration;
+namespace StellaOps.Excititor.Connectors.Ubuntu.CSAF.Configuration;
public sealed class UbuntuConnectorOptions
{
- public const string HttpClientName = "vexer.connector.ubuntu.catalog";
+ public const string HttpClientName = "excititor.connector.ubuntu.catalog";
///
/// Root index that lists Ubuntu CSAF channels.
diff --git a/src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/Configuration/UbuntuConnectorOptionsValidator.cs b/src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/Configuration/UbuntuConnectorOptionsValidator.cs
similarity index 87%
rename from src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/Configuration/UbuntuConnectorOptionsValidator.cs
rename to src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/Configuration/UbuntuConnectorOptionsValidator.cs
index 1adb98fd..d53665aa 100644
--- a/src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/Configuration/UbuntuConnectorOptionsValidator.cs
+++ b/src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/Configuration/UbuntuConnectorOptionsValidator.cs
@@ -1,9 +1,9 @@
using System;
using System.Collections.Generic;
using System.IO.Abstractions;
-using StellaOps.Vexer.Connectors.Abstractions;
+using StellaOps.Excititor.Connectors.Abstractions;
-namespace StellaOps.Vexer.Connectors.Ubuntu.CSAF.Configuration;
+namespace StellaOps.Excititor.Connectors.Ubuntu.CSAF.Configuration;
public sealed class UbuntuConnectorOptionsValidator : IVexConnectorOptionsValidator
{
diff --git a/src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/DependencyInjection/UbuntuConnectorServiceCollectionExtensions.cs b/src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/DependencyInjection/UbuntuConnectorServiceCollectionExtensions.cs
similarity index 82%
rename from src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/DependencyInjection/UbuntuConnectorServiceCollectionExtensions.cs
rename to src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/DependencyInjection/UbuntuConnectorServiceCollectionExtensions.cs
index 42d759c8..d8505db1 100644
--- a/src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/DependencyInjection/UbuntuConnectorServiceCollectionExtensions.cs
+++ b/src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/DependencyInjection/UbuntuConnectorServiceCollectionExtensions.cs
@@ -4,13 +4,13 @@ using System.Net.Http;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
-using StellaOps.Vexer.Connectors.Abstractions;
-using StellaOps.Vexer.Connectors.Ubuntu.CSAF.Configuration;
-using StellaOps.Vexer.Connectors.Ubuntu.CSAF.Metadata;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Connectors.Abstractions;
+using StellaOps.Excititor.Connectors.Ubuntu.CSAF.Configuration;
+using StellaOps.Excititor.Connectors.Ubuntu.CSAF.Metadata;
+using StellaOps.Excititor.Core;
using System.IO.Abstractions;
-namespace StellaOps.Vexer.Connectors.Ubuntu.CSAF.DependencyInjection;
+namespace StellaOps.Excititor.Connectors.Ubuntu.CSAF.DependencyInjection;
public static class UbuntuConnectorServiceCollectionExtensions
{
@@ -29,7 +29,7 @@ public static class UbuntuConnectorServiceCollectionExtensions
services.AddHttpClient(UbuntuConnectorOptions.HttpClientName, client =>
{
client.Timeout = TimeSpan.FromSeconds(60);
- client.DefaultRequestHeaders.UserAgent.ParseAdd("StellaOps.Vexer.Connectors.Ubuntu.CSAF/1.0");
+ client.DefaultRequestHeaders.UserAgent.ParseAdd("StellaOps.Excititor.Connectors.Ubuntu.CSAF/1.0");
client.DefaultRequestHeaders.Accept.ParseAdd("application/json");
})
.ConfigurePrimaryHttpMessageHandler(static () => new HttpClientHandler
diff --git a/src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/Metadata/UbuntuCatalogLoader.cs b/src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/Metadata/UbuntuCatalogLoader.cs
similarity index 97%
rename from src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/Metadata/UbuntuCatalogLoader.cs
rename to src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/Metadata/UbuntuCatalogLoader.cs
index 890c3420..3238ad6a 100644
--- a/src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/Metadata/UbuntuCatalogLoader.cs
+++ b/src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/Metadata/UbuntuCatalogLoader.cs
@@ -9,13 +9,13 @@ using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging;
-using StellaOps.Vexer.Connectors.Ubuntu.CSAF.Configuration;
+using StellaOps.Excititor.Connectors.Ubuntu.CSAF.Configuration;
-namespace StellaOps.Vexer.Connectors.Ubuntu.CSAF.Metadata;
+namespace StellaOps.Excititor.Connectors.Ubuntu.CSAF.Metadata;
public sealed class UbuntuCatalogLoader
{
- public const string CachePrefix = "StellaOps.Vexer.Connectors.Ubuntu.CSAF.Index";
+ public const string CachePrefix = "StellaOps.Excititor.Connectors.Ubuntu.CSAF.Index";
private readonly IHttpClientFactory _httpClientFactory;
private readonly IMemoryCache _memoryCache;
diff --git a/src/StellaOps.Vexer.Connectors.Oracle.CSAF/StellaOps.Vexer.Connectors.Oracle.CSAF.csproj b/src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/StellaOps.Excititor.Connectors.Ubuntu.CSAF.csproj
similarity index 83%
rename from src/StellaOps.Vexer.Connectors.Oracle.CSAF/StellaOps.Vexer.Connectors.Oracle.CSAF.csproj
rename to src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/StellaOps.Excititor.Connectors.Ubuntu.CSAF.csproj
index a99a942f..f6b57b36 100644
--- a/src/StellaOps.Vexer.Connectors.Oracle.CSAF/StellaOps.Vexer.Connectors.Oracle.CSAF.csproj
+++ b/src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/StellaOps.Excititor.Connectors.Ubuntu.CSAF.csproj
@@ -7,7 +7,7 @@
true
-
+
diff --git a/src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/TASKS.md b/src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/TASKS.md
new file mode 100644
index 00000000..e85b2818
--- /dev/null
+++ b/src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/TASKS.md
@@ -0,0 +1,7 @@
+If you are working on this file you need to read docs/ARCHITECTURE_EXCITITOR.md and ./AGENTS.md).
+# TASKS
+| Task | Owner(s) | Depends on | Notes |
+|---|---|---|---|
+|EXCITITOR-CONN-UBUNTU-01-001 – Ubuntu CSAF discovery & channels|Team Excititor Connectors – Ubuntu|EXCITITOR-CONN-ABS-01-001|**DONE (2025-10-17)** – Added Ubuntu connector project with configurable channel options, catalog loader (network/offline), DI wiring, and discovery unit tests.|
+|EXCITITOR-CONN-UBUNTU-01-002 – Incremental fetch & deduplication|Team Excititor Connectors – Ubuntu|EXCITITOR-CONN-UBUNTU-01-001, EXCITITOR-STORAGE-01-003|TODO – Fetch CSAF bundles with ETag handling, checksum validation, deduplication, and raw persistence.|
+|EXCITITOR-CONN-UBUNTU-01-003 – Trust metadata & provenance|Team Excititor Connectors – Ubuntu|EXCITITOR-CONN-UBUNTU-01-002, EXCITITOR-POLICY-01-001|TODO – Emit Ubuntu signing metadata (GPG fingerprints) plus provenance hints for policy weighting and diagnostics.|
diff --git a/src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/UbuntuCsafConnector.cs b/src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/UbuntuCsafConnector.cs
similarity index 90%
rename from src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/UbuntuCsafConnector.cs
rename to src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/UbuntuCsafConnector.cs
index c47702f8..85645843 100644
--- a/src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/UbuntuCsafConnector.cs
+++ b/src/StellaOps.Excititor.Connectors.Ubuntu.CSAF/UbuntuCsafConnector.cs
@@ -2,17 +2,17 @@ using System.Collections.Generic;
using System.Collections.Immutable;
using System.Runtime.CompilerServices;
using Microsoft.Extensions.Logging;
-using StellaOps.Vexer.Connectors.Abstractions;
-using StellaOps.Vexer.Connectors.Ubuntu.CSAF.Configuration;
-using StellaOps.Vexer.Connectors.Ubuntu.CSAF.Metadata;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Connectors.Abstractions;
+using StellaOps.Excititor.Connectors.Ubuntu.CSAF.Configuration;
+using StellaOps.Excititor.Connectors.Ubuntu.CSAF.Metadata;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Connectors.Ubuntu.CSAF;
+namespace StellaOps.Excititor.Connectors.Ubuntu.CSAF;
public sealed class UbuntuCsafConnector : VexConnectorBase
{
private static readonly VexConnectorDescriptor DescriptorInstance = new(
- id: "vexer:ubuntu",
+ id: "excititor:ubuntu",
kind: VexProviderKind.Distro,
displayName: "Ubuntu CSAF")
{
diff --git a/src/StellaOps.Vexer.Core.Tests/StellaOps.Vexer.Core.Tests.csproj b/src/StellaOps.Excititor.Core.Tests/StellaOps.Excititor.Core.Tests.csproj
similarity index 62%
rename from src/StellaOps.Vexer.Core.Tests/StellaOps.Vexer.Core.Tests.csproj
rename to src/StellaOps.Excititor.Core.Tests/StellaOps.Excititor.Core.Tests.csproj
index 1d4ebbf1..e464615f 100644
--- a/src/StellaOps.Vexer.Core.Tests/StellaOps.Vexer.Core.Tests.csproj
+++ b/src/StellaOps.Excititor.Core.Tests/StellaOps.Excititor.Core.Tests.csproj
@@ -7,7 +7,7 @@
true
-
-
+
+
diff --git a/src/StellaOps.Vexer.Core.Tests/VexCanonicalJsonSerializerTests.cs b/src/StellaOps.Excititor.Core.Tests/VexCanonicalJsonSerializerTests.cs
similarity index 98%
rename from src/StellaOps.Vexer.Core.Tests/VexCanonicalJsonSerializerTests.cs
rename to src/StellaOps.Excititor.Core.Tests/VexCanonicalJsonSerializerTests.cs
index 3212681f..cb98aa66 100644
--- a/src/StellaOps.Vexer.Core.Tests/VexCanonicalJsonSerializerTests.cs
+++ b/src/StellaOps.Excititor.Core.Tests/VexCanonicalJsonSerializerTests.cs
@@ -1,9 +1,9 @@
using System.Collections.Generic;
using System.Collections.Immutable;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
using Xunit;
-namespace StellaOps.Vexer.Core.Tests;
+namespace StellaOps.Excititor.Core.Tests;
public sealed class VexCanonicalJsonSerializerTests
{
diff --git a/src/StellaOps.Vexer.Core.Tests/VexConsensusResolverTests.cs b/src/StellaOps.Excititor.Core.Tests/VexConsensusResolverTests.cs
similarity index 99%
rename from src/StellaOps.Vexer.Core.Tests/VexConsensusResolverTests.cs
rename to src/StellaOps.Excititor.Core.Tests/VexConsensusResolverTests.cs
index 1396d0b9..07e738e3 100644
--- a/src/StellaOps.Vexer.Core.Tests/VexConsensusResolverTests.cs
+++ b/src/StellaOps.Excititor.Core.Tests/VexConsensusResolverTests.cs
@@ -2,10 +2,10 @@ using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
using Xunit;
-namespace StellaOps.Vexer.Core.Tests;
+namespace StellaOps.Excititor.Core.Tests;
public sealed class VexConsensusResolverTests
{
diff --git a/src/StellaOps.Vexer.Core.Tests/VexPolicyBinderTests.cs b/src/StellaOps.Excititor.Core.Tests/VexPolicyBinderTests.cs
similarity index 96%
rename from src/StellaOps.Vexer.Core.Tests/VexPolicyBinderTests.cs
rename to src/StellaOps.Excititor.Core.Tests/VexPolicyBinderTests.cs
index 9f48ffa5..8cfd2571 100644
--- a/src/StellaOps.Vexer.Core.Tests/VexPolicyBinderTests.cs
+++ b/src/StellaOps.Excititor.Core.Tests/VexPolicyBinderTests.cs
@@ -1,9 +1,9 @@
using System;
using System.IO;
using System.Text;
-using StellaOps.Vexer.Policy;
+using StellaOps.Excititor.Policy;
-namespace StellaOps.Vexer.Core.Tests;
+namespace StellaOps.Excititor.Core.Tests;
public sealed class VexPolicyBinderTests
{
diff --git a/src/StellaOps.Vexer.Core.Tests/VexPolicyDiagnosticsTests.cs b/src/StellaOps.Excititor.Core.Tests/VexPolicyDiagnosticsTests.cs
similarity index 95%
rename from src/StellaOps.Vexer.Core.Tests/VexPolicyDiagnosticsTests.cs
rename to src/StellaOps.Excititor.Core.Tests/VexPolicyDiagnosticsTests.cs
index 06971d3d..93f15757 100644
--- a/src/StellaOps.Vexer.Core.Tests/VexPolicyDiagnosticsTests.cs
+++ b/src/StellaOps.Excititor.Core.Tests/VexPolicyDiagnosticsTests.cs
@@ -5,11 +5,11 @@ using System.Linq;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.Time.Testing;
-using StellaOps.Vexer.Core;
-using StellaOps.Vexer.Policy;
+using StellaOps.Excititor.Core;
+using StellaOps.Excititor.Policy;
using System.Diagnostics.Metrics;
-namespace StellaOps.Vexer.Core.Tests;
+namespace StellaOps.Excititor.Core.Tests;
public class VexPolicyDiagnosticsTests
{
@@ -52,7 +52,7 @@ public class VexPolicyDiagnosticsTests
Assert.Equal(new[] { "provider-a", "provider-b" }, report.ActiveOverrides.Keys.OrderBy(static key => key, StringComparer.Ordinal));
Assert.Contains(report.Recommendations, message => message.Contains("Resolve policy errors", StringComparison.OrdinalIgnoreCase));
Assert.Contains(report.Recommendations, message => message.Contains("provider-a", StringComparison.OrdinalIgnoreCase));
- Assert.Contains(report.Recommendations, message => message.Contains("docs/ARCHITECTURE_VEXER.md", StringComparison.OrdinalIgnoreCase));
+ Assert.Contains(report.Recommendations, message => message.Contains("docs/ARCHITECTURE_EXCITITOR.md", StringComparison.OrdinalIgnoreCase));
}
[Fact]
@@ -78,7 +78,7 @@ public class VexPolicyDiagnosticsTests
string? lastRevision = null;
listener.InstrumentPublished += (instrument, _) =>
{
- if (instrument.Meter.Name == "StellaOps.Vexer.Policy" &&
+ if (instrument.Meter.Name == "StellaOps.Excititor.Policy" &&
instrument.Name == "vex.policy.reloads")
{
listener.EnableMeasurementEvents(instrument);
diff --git a/src/StellaOps.Vexer.Core.Tests/VexQuerySignatureTests.cs b/src/StellaOps.Excititor.Core.Tests/VexQuerySignatureTests.cs
similarity index 95%
rename from src/StellaOps.Vexer.Core.Tests/VexQuerySignatureTests.cs
rename to src/StellaOps.Excititor.Core.Tests/VexQuerySignatureTests.cs
index 688a71fc..fba87363 100644
--- a/src/StellaOps.Vexer.Core.Tests/VexQuerySignatureTests.cs
+++ b/src/StellaOps.Excititor.Core.Tests/VexQuerySignatureTests.cs
@@ -1,8 +1,8 @@
using System.Collections.Generic;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
using Xunit;
-namespace StellaOps.Vexer.Core.Tests;
+namespace StellaOps.Excititor.Core.Tests;
public sealed class VexQuerySignatureTests
{
diff --git a/src/StellaOps.Vexer.Core/AGENTS.md b/src/StellaOps.Excititor.Core/AGENTS.md
similarity index 78%
rename from src/StellaOps.Vexer.Core/AGENTS.md
rename to src/StellaOps.Excititor.Core/AGENTS.md
index dbe5b507..5e3cb4e4 100644
--- a/src/StellaOps.Vexer.Core/AGENTS.md
+++ b/src/StellaOps.Excititor.Core/AGENTS.md
@@ -1,14 +1,14 @@
# AGENTS
## Role
-Domain source of truth for VEX statements, consensus rollups, and trust policy orchestration across all Vexer services.
+Domain source of truth for VEX statements, consensus rollups, and trust policy orchestration across all Excititor services.
## Scope
- Records for raw document metadata, normalized claims, consensus projections, and export descriptors.
- Policy + weighting engine that projects provider trust tiers into consensus status outcomes.
- Connector, normalizer, export, and attestation contracts shared by WebService, Worker, and plug-ins.
- Deterministic hashing utilities (query signatures, artifact digests, attestation subjects).
## Participants
-- Vexer WebService uses the models to persist ingress/egress payloads and to perform consensus mutations.
-- Vexer Worker executes reconciliation and verification routines using policy helpers defined here.
+- Excititor WebService uses the models to persist ingress/egress payloads and to perform consensus mutations.
+- Excititor Worker executes reconciliation and verification routines using policy helpers defined here.
- Export/Attestation modules depend on record definitions for envelopes and manifest payloads.
## Interfaces & contracts
- `IVexConnector`, `INormalizer`, `IExportEngine`, `ITransparencyLogClient`, `IArtifactStore`, and policy abstractions for consensus resolution.
@@ -22,5 +22,5 @@ Out: Mongo persistence implementations, HTTP endpoints, background scheduling, c
- Emit correlation identifiers and query signatures without embedding PII.
- Ensure deterministic logging order to keep reproducibility guarantees intact.
## Tests
-- Unit coverage lives in `../StellaOps.Vexer.Core.Tests` (to be scaffolded) focusing on consensus, policy gates, and serialization determinism.
+- Unit coverage lives in `../StellaOps.Excititor.Core.Tests` (to be scaffolded) focusing on consensus, policy gates, and serialization determinism.
- Golden fixtures must rely on canonical JSON snapshots produced via stable serializers.
diff --git a/src/StellaOps.Vexer.Core/BaselineVexConsensusPolicy.cs b/src/StellaOps.Excititor.Core/BaselineVexConsensusPolicy.cs
similarity index 97%
rename from src/StellaOps.Vexer.Core/BaselineVexConsensusPolicy.cs
rename to src/StellaOps.Excititor.Core/BaselineVexConsensusPolicy.cs
index 170fec6e..3f5d1a5d 100644
--- a/src/StellaOps.Vexer.Core/BaselineVexConsensusPolicy.cs
+++ b/src/StellaOps.Excititor.Core/BaselineVexConsensusPolicy.cs
@@ -1,4 +1,4 @@
-namespace StellaOps.Vexer.Core;
+namespace StellaOps.Excititor.Core;
///
/// Baseline consensus policy applying tier-based weights and enforcing justification gates.
diff --git a/src/StellaOps.Vexer.Core/IVexConsensusPolicy.cs b/src/StellaOps.Excititor.Core/IVexConsensusPolicy.cs
similarity index 96%
rename from src/StellaOps.Vexer.Core/IVexConsensusPolicy.cs
rename to src/StellaOps.Excititor.Core/IVexConsensusPolicy.cs
index 26444ebf..47ba82b7 100644
--- a/src/StellaOps.Vexer.Core/IVexConsensusPolicy.cs
+++ b/src/StellaOps.Excititor.Core/IVexConsensusPolicy.cs
@@ -1,4 +1,4 @@
-namespace StellaOps.Vexer.Core;
+namespace StellaOps.Excititor.Core;
///
/// Policy abstraction supplying trust weights and gating logic for consensus decisions.
diff --git a/src/StellaOps.Vexer.Core/StellaOps.Vexer.Core.csproj b/src/StellaOps.Excititor.Core/StellaOps.Excititor.Core.csproj
similarity index 100%
rename from src/StellaOps.Vexer.Core/StellaOps.Vexer.Core.csproj
rename to src/StellaOps.Excititor.Core/StellaOps.Excititor.Core.csproj
diff --git a/src/StellaOps.Excititor.Core/TASKS.md b/src/StellaOps.Excititor.Core/TASKS.md
new file mode 100644
index 00000000..54f4688f
--- /dev/null
+++ b/src/StellaOps.Excititor.Core/TASKS.md
@@ -0,0 +1,9 @@
+If you are working on this file you need to read docs/ARCHITECTURE_EXCITITOR.md and ./AGENTS.md).
+# TASKS
+| Task | Owner(s) | Depends on | Notes |
+|---|---|---|---|
+|EXCITITOR-CORE-01-001 – Canonical VEX domain records|Team Excititor Core & Policy|docs/ARCHITECTURE_EXCITITOR.md|DONE (2025-10-15) – Introduced `VexClaim`, `VexConsensus`, provider metadata, export manifest records, and deterministic JSON serialization with tests covering canonical ordering and query signatures.|
+|EXCITITOR-CORE-01-002 – Trust-weighted consensus resolver|Team Excititor Core & Policy|EXCITITOR-CORE-01-001|DONE (2025-10-15) – Added consensus resolver, baseline policy (tier weights + justification gate), telemetry output, and tests covering acceptance, conflict ties, and determinism.|
+|EXCITITOR-CORE-01-003 – Shared contracts & query signatures|Team Excititor Core & Policy|EXCITITOR-CORE-01-001|DONE (2025-10-15) – Published connector/normalizer/exporter/attestation abstractions and expanded deterministic `VexQuerySignature`/hash utilities with test coverage.|
+|EXCITITOR-CORE-02-001 – Context signal schema prep|Team Excititor Core & Policy|EXCITITOR-POLICY-02-001|TODO – Extend `VexClaim`/`VexConsensus` with optional severity/KEV/EPSS payloads, update canonical serializer/hashes, and coordinate migration notes with Storage.|
+|EXCITITOR-CORE-02-002 – Deterministic risk scoring engine|Team Excititor Core & Policy|EXCITITOR-CORE-02-001, EXCITITOR-POLICY-02-001|BACKLOG – Introduce the scoring calculator invoked by consensus, persist score envelopes with audit trails, and add regression fixtures covering gate/boost behaviour before enabling exports.|
diff --git a/src/StellaOps.Vexer.Core/VexAttestationAbstractions.cs b/src/StellaOps.Excititor.Core/VexAttestationAbstractions.cs
similarity index 96%
rename from src/StellaOps.Vexer.Core/VexAttestationAbstractions.cs
rename to src/StellaOps.Excititor.Core/VexAttestationAbstractions.cs
index 8c8a8fe0..f5235da5 100644
--- a/src/StellaOps.Vexer.Core/VexAttestationAbstractions.cs
+++ b/src/StellaOps.Excititor.Core/VexAttestationAbstractions.cs
@@ -3,7 +3,7 @@ using System.Collections.Immutable;
using System.Threading;
using System.Threading.Tasks;
-namespace StellaOps.Vexer.Core;
+namespace StellaOps.Excititor.Core;
public interface IVexAttestationClient
{
diff --git a/src/StellaOps.Vexer.Core/VexCacheEntry.cs b/src/StellaOps.Excititor.Core/VexCacheEntry.cs
similarity index 97%
rename from src/StellaOps.Vexer.Core/VexCacheEntry.cs
rename to src/StellaOps.Excititor.Core/VexCacheEntry.cs
index 3fec0666..7ff2c31b 100644
--- a/src/StellaOps.Vexer.Core/VexCacheEntry.cs
+++ b/src/StellaOps.Excititor.Core/VexCacheEntry.cs
@@ -1,6 +1,6 @@
using System;
-namespace StellaOps.Vexer.Core;
+namespace StellaOps.Excititor.Core;
///
/// Cached export artifact metadata allowing reuse of previously generated manifests.
diff --git a/src/StellaOps.Vexer.Core/VexCanonicalJsonSerializer.cs b/src/StellaOps.Excititor.Core/VexCanonicalJsonSerializer.cs
similarity index 99%
rename from src/StellaOps.Vexer.Core/VexCanonicalJsonSerializer.cs
rename to src/StellaOps.Excititor.Core/VexCanonicalJsonSerializer.cs
index 4c6dc055..1fa78c1f 100644
--- a/src/StellaOps.Vexer.Core/VexCanonicalJsonSerializer.cs
+++ b/src/StellaOps.Excititor.Core/VexCanonicalJsonSerializer.cs
@@ -6,7 +6,7 @@ using System.Text.Json;
using System.Text.Json.Serialization;
using System.Text.Json.Serialization.Metadata;
-namespace StellaOps.Vexer.Core;
+namespace StellaOps.Excititor.Core;
public static class VexCanonicalJsonSerializer
{
diff --git a/src/StellaOps.Vexer.Core/VexClaim.cs b/src/StellaOps.Excititor.Core/VexClaim.cs
similarity index 99%
rename from src/StellaOps.Vexer.Core/VexClaim.cs
rename to src/StellaOps.Excititor.Core/VexClaim.cs
index 207ba09b..385c9bf0 100644
--- a/src/StellaOps.Vexer.Core/VexClaim.cs
+++ b/src/StellaOps.Excititor.Core/VexClaim.cs
@@ -1,7 +1,7 @@
using System.Collections.Immutable;
using System.Runtime.Serialization;
-namespace StellaOps.Vexer.Core;
+namespace StellaOps.Excititor.Core;
public sealed record VexClaim
{
diff --git a/src/StellaOps.Vexer.Core/VexConnectorAbstractions.cs b/src/StellaOps.Excititor.Core/VexConnectorAbstractions.cs
similarity index 98%
rename from src/StellaOps.Vexer.Core/VexConnectorAbstractions.cs
rename to src/StellaOps.Excititor.Core/VexConnectorAbstractions.cs
index 0f247aff..b9a96978 100644
--- a/src/StellaOps.Vexer.Core/VexConnectorAbstractions.cs
+++ b/src/StellaOps.Excititor.Core/VexConnectorAbstractions.cs
@@ -3,7 +3,7 @@ using System.Collections.Immutable;
using System.Threading;
using System.Threading.Tasks;
-namespace StellaOps.Vexer.Core;
+namespace StellaOps.Excititor.Core;
///
/// Shared connector contract for fetching and normalizing provider-specific VEX data.
diff --git a/src/StellaOps.Vexer.Core/VexConsensus.cs b/src/StellaOps.Excititor.Core/VexConsensus.cs
similarity index 99%
rename from src/StellaOps.Vexer.Core/VexConsensus.cs
rename to src/StellaOps.Excititor.Core/VexConsensus.cs
index a6217ed1..ad9e9fd2 100644
--- a/src/StellaOps.Vexer.Core/VexConsensus.cs
+++ b/src/StellaOps.Excititor.Core/VexConsensus.cs
@@ -1,7 +1,7 @@
using System.Collections.Immutable;
using System.Runtime.Serialization;
-namespace StellaOps.Vexer.Core;
+namespace StellaOps.Excititor.Core;
public sealed record VexConsensus
{
diff --git a/src/StellaOps.Vexer.Core/VexConsensusPolicyOptions.cs b/src/StellaOps.Excititor.Core/VexConsensusPolicyOptions.cs
similarity index 98%
rename from src/StellaOps.Vexer.Core/VexConsensusPolicyOptions.cs
rename to src/StellaOps.Excititor.Core/VexConsensusPolicyOptions.cs
index 385b9603..c953a763 100644
--- a/src/StellaOps.Vexer.Core/VexConsensusPolicyOptions.cs
+++ b/src/StellaOps.Excititor.Core/VexConsensusPolicyOptions.cs
@@ -1,6 +1,6 @@
using System.Collections.Immutable;
-namespace StellaOps.Vexer.Core;
+namespace StellaOps.Excititor.Core;
public sealed record VexConsensusPolicyOptions
{
diff --git a/src/StellaOps.Vexer.Core/VexConsensusResolver.cs b/src/StellaOps.Excititor.Core/VexConsensusResolver.cs
similarity index 99%
rename from src/StellaOps.Vexer.Core/VexConsensusResolver.cs
rename to src/StellaOps.Excititor.Core/VexConsensusResolver.cs
index 71e8f7ca..5ec9268a 100644
--- a/src/StellaOps.Vexer.Core/VexConsensusResolver.cs
+++ b/src/StellaOps.Excititor.Core/VexConsensusResolver.cs
@@ -1,7 +1,7 @@
using System.Collections.Immutable;
using System.Globalization;
-namespace StellaOps.Vexer.Core;
+namespace StellaOps.Excititor.Core;
public sealed class VexConsensusResolver
{
diff --git a/src/StellaOps.Vexer.Core/VexExportManifest.cs b/src/StellaOps.Excititor.Core/VexExportManifest.cs
similarity index 99%
rename from src/StellaOps.Vexer.Core/VexExportManifest.cs
rename to src/StellaOps.Excititor.Core/VexExportManifest.cs
index a75fed80..b0da8fe8 100644
--- a/src/StellaOps.Vexer.Core/VexExportManifest.cs
+++ b/src/StellaOps.Excititor.Core/VexExportManifest.cs
@@ -2,7 +2,7 @@ using System.Collections.Immutable;
using System.Runtime.Serialization;
using System.Text;
-namespace StellaOps.Vexer.Core;
+namespace StellaOps.Excititor.Core;
public sealed record VexExportManifest
{
diff --git a/src/StellaOps.Vexer.Core/VexExporterAbstractions.cs b/src/StellaOps.Excititor.Core/VexExporterAbstractions.cs
similarity index 95%
rename from src/StellaOps.Vexer.Core/VexExporterAbstractions.cs
rename to src/StellaOps.Excititor.Core/VexExporterAbstractions.cs
index d61df0fe..3bdfc4f2 100644
--- a/src/StellaOps.Vexer.Core/VexExporterAbstractions.cs
+++ b/src/StellaOps.Excititor.Core/VexExporterAbstractions.cs
@@ -4,7 +4,7 @@ using System.IO;
using System.Threading;
using System.Threading.Tasks;
-namespace StellaOps.Vexer.Core;
+namespace StellaOps.Excititor.Core;
public interface IVexExporter
{
diff --git a/src/StellaOps.Vexer.Core/VexNormalizerAbstractions.cs b/src/StellaOps.Excititor.Core/VexNormalizerAbstractions.cs
similarity index 95%
rename from src/StellaOps.Vexer.Core/VexNormalizerAbstractions.cs
rename to src/StellaOps.Excititor.Core/VexNormalizerAbstractions.cs
index 5a1b541f..c7fd6c86 100644
--- a/src/StellaOps.Vexer.Core/VexNormalizerAbstractions.cs
+++ b/src/StellaOps.Excititor.Core/VexNormalizerAbstractions.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
-namespace StellaOps.Vexer.Core;
+namespace StellaOps.Excititor.Core;
///
/// Normalizer contract for translating raw connector documents into canonical claims.
diff --git a/src/StellaOps.Vexer.Core/VexProvider.cs b/src/StellaOps.Excititor.Core/VexProvider.cs
similarity index 99%
rename from src/StellaOps.Vexer.Core/VexProvider.cs
rename to src/StellaOps.Excititor.Core/VexProvider.cs
index 4a825bab..35f69c25 100644
--- a/src/StellaOps.Vexer.Core/VexProvider.cs
+++ b/src/StellaOps.Excititor.Core/VexProvider.cs
@@ -1,7 +1,7 @@
using System.Collections.Immutable;
using System.Runtime.Serialization;
-namespace StellaOps.Vexer.Core;
+namespace StellaOps.Excititor.Core;
///
/// Metadata describing a VEX provider (vendor, distro, hub, platform).
diff --git a/src/StellaOps.Vexer.Core/VexQuery.cs b/src/StellaOps.Excititor.Core/VexQuery.cs
similarity index 99%
rename from src/StellaOps.Vexer.Core/VexQuery.cs
rename to src/StellaOps.Excititor.Core/VexQuery.cs
index 2b4c7bfb..39e3d67b 100644
--- a/src/StellaOps.Vexer.Core/VexQuery.cs
+++ b/src/StellaOps.Excititor.Core/VexQuery.cs
@@ -6,7 +6,7 @@ using System.Security.Cryptography;
using System.Text;
using System.Linq;
-namespace StellaOps.Vexer.Core;
+namespace StellaOps.Excititor.Core;
public sealed record VexQuery(
ImmutableArray Filters,
diff --git a/src/StellaOps.Vexer.Export.Tests/ExportEngineTests.cs b/src/StellaOps.Excititor.Export.Tests/ExportEngineTests.cs
similarity index 98%
rename from src/StellaOps.Vexer.Export.Tests/ExportEngineTests.cs
rename to src/StellaOps.Excititor.Export.Tests/ExportEngineTests.cs
index e7ecf44c..982f95a7 100644
--- a/src/StellaOps.Vexer.Export.Tests/ExportEngineTests.cs
+++ b/src/StellaOps.Excititor.Export.Tests/ExportEngineTests.cs
@@ -3,13 +3,13 @@ using System.Collections.Immutable;
using System.IO;
using System.Text;
using Microsoft.Extensions.Logging.Abstractions;
-using StellaOps.Vexer.Core;
-using StellaOps.Vexer.Export;
-using StellaOps.Vexer.Policy;
-using StellaOps.Vexer.Storage.Mongo;
+using StellaOps.Excititor.Core;
+using StellaOps.Excititor.Export;
+using StellaOps.Excititor.Policy;
+using StellaOps.Excititor.Storage.Mongo;
using Xunit;
-namespace StellaOps.Vexer.Export.Tests;
+namespace StellaOps.Excititor.Export.Tests;
public sealed class ExportEngineTests
{
diff --git a/src/StellaOps.Vexer.Export.Tests/FileSystemArtifactStoreTests.cs b/src/StellaOps.Excititor.Export.Tests/FileSystemArtifactStoreTests.cs
similarity index 91%
rename from src/StellaOps.Vexer.Export.Tests/FileSystemArtifactStoreTests.cs
rename to src/StellaOps.Excititor.Export.Tests/FileSystemArtifactStoreTests.cs
index b7cc8522..9a26510f 100644
--- a/src/StellaOps.Vexer.Export.Tests/FileSystemArtifactStoreTests.cs
+++ b/src/StellaOps.Excititor.Export.Tests/FileSystemArtifactStoreTests.cs
@@ -1,11 +1,11 @@
using System.Collections.Immutable;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Core;
-using StellaOps.Vexer.Export;
+using StellaOps.Excititor.Core;
+using StellaOps.Excititor.Export;
using System.IO.Abstractions.TestingHelpers;
-namespace StellaOps.Vexer.Export.Tests;
+namespace StellaOps.Excititor.Export.Tests;
public sealed class FileSystemArtifactStoreTests
{
diff --git a/src/StellaOps.Vexer.Export.Tests/OfflineBundleArtifactStoreTests.cs b/src/StellaOps.Excititor.Export.Tests/OfflineBundleArtifactStoreTests.cs
similarity index 95%
rename from src/StellaOps.Vexer.Export.Tests/OfflineBundleArtifactStoreTests.cs
rename to src/StellaOps.Excititor.Export.Tests/OfflineBundleArtifactStoreTests.cs
index 7d3abf04..ee2af550 100644
--- a/src/StellaOps.Vexer.Export.Tests/OfflineBundleArtifactStoreTests.cs
+++ b/src/StellaOps.Excititor.Export.Tests/OfflineBundleArtifactStoreTests.cs
@@ -4,10 +4,10 @@ using System.Linq;
using System.Text.Json;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Core;
-using StellaOps.Vexer.Export;
+using StellaOps.Excititor.Core;
+using StellaOps.Excititor.Export;
-namespace StellaOps.Vexer.Export.Tests;
+namespace StellaOps.Excititor.Export.Tests;
public sealed class OfflineBundleArtifactStoreTests
{
diff --git a/src/StellaOps.Vexer.Export.Tests/S3ArtifactStoreTests.cs b/src/StellaOps.Excititor.Export.Tests/S3ArtifactStoreTests.cs
similarity index 97%
rename from src/StellaOps.Vexer.Export.Tests/S3ArtifactStoreTests.cs
rename to src/StellaOps.Excititor.Export.Tests/S3ArtifactStoreTests.cs
index 64c3b482..2e155478 100644
--- a/src/StellaOps.Vexer.Export.Tests/S3ArtifactStoreTests.cs
+++ b/src/StellaOps.Excititor.Export.Tests/S3ArtifactStoreTests.cs
@@ -2,10 +2,10 @@ using System.Collections.Concurrent;
using System.Collections.Immutable;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Core;
-using StellaOps.Vexer.Export;
+using StellaOps.Excititor.Core;
+using StellaOps.Excititor.Export;
-namespace StellaOps.Vexer.Export.Tests;
+namespace StellaOps.Excititor.Export.Tests;
public sealed class S3ArtifactStoreTests
{
diff --git a/src/StellaOps.Vexer.Export.Tests/StellaOps.Vexer.Export.Tests.csproj b/src/StellaOps.Excititor.Export.Tests/StellaOps.Excititor.Export.Tests.csproj
similarity index 81%
rename from src/StellaOps.Vexer.Export.Tests/StellaOps.Vexer.Export.Tests.csproj
rename to src/StellaOps.Excititor.Export.Tests/StellaOps.Excititor.Export.Tests.csproj
index 3a38978f..86a03e59 100644
--- a/src/StellaOps.Vexer.Export.Tests/StellaOps.Vexer.Export.Tests.csproj
+++ b/src/StellaOps.Excititor.Export.Tests/StellaOps.Excititor.Export.Tests.csproj
@@ -10,6 +10,6 @@
-
+
diff --git a/src/StellaOps.Vexer.Export.Tests/VexExportCacheServiceTests.cs b/src/StellaOps.Excititor.Export.Tests/VexExportCacheServiceTests.cs
similarity index 95%
rename from src/StellaOps.Vexer.Export.Tests/VexExportCacheServiceTests.cs
rename to src/StellaOps.Excititor.Export.Tests/VexExportCacheServiceTests.cs
index cbaa7efe..855b52b4 100644
--- a/src/StellaOps.Vexer.Export.Tests/VexExportCacheServiceTests.cs
+++ b/src/StellaOps.Excititor.Export.Tests/VexExportCacheServiceTests.cs
@@ -1,9 +1,9 @@
using Microsoft.Extensions.Logging.Abstractions;
-using StellaOps.Vexer.Core;
-using StellaOps.Vexer.Export;
-using StellaOps.Vexer.Storage.Mongo;
+using StellaOps.Excititor.Core;
+using StellaOps.Excititor.Export;
+using StellaOps.Excititor.Storage.Mongo;
-namespace StellaOps.Vexer.Export.Tests;
+namespace StellaOps.Excititor.Export.Tests;
public sealed class VexExportCacheServiceTests
{
diff --git a/src/StellaOps.Vexer.Export/AGENTS.md b/src/StellaOps.Excititor.Export/AGENTS.md
similarity index 90%
rename from src/StellaOps.Vexer.Export/AGENTS.md
rename to src/StellaOps.Excititor.Export/AGENTS.md
index b0166f35..03ac41b2 100644
--- a/src/StellaOps.Vexer.Export/AGENTS.md
+++ b/src/StellaOps.Excititor.Export/AGENTS.md
@@ -7,7 +7,7 @@ Produces deterministic VEX export artifacts, coordinates cache lookups, and brid
- Artifact store abstraction wiring (S3/MinIO/filesystem) with offline-friendly packaging.
- Export metrics/logging and deterministic manifest emission.
## Participants
-- WebService invokes the export engine to service `/vexer/export` requests.
+- WebService invokes the export engine to service `/excititor/export` requests.
- Attestation module receives built artifacts through this layer for signing.
- Worker reuses caching and artifact utilities for scheduled exports and GC routines.
## Interfaces & contracts
@@ -20,4 +20,4 @@ Out: format-specific serialization (lives in Formats.*), policy evaluation (Poli
- Emit cache hit/miss counters, export durations, artifact sizes, and attestation timing logs.
- Ensure no sensitive tokens/URIs are logged.
## Tests
-- Engine orchestration tests, cache behavior, and artifact lifecycle coverage will live in `../StellaOps.Vexer.Export.Tests`.
+- Engine orchestration tests, cache behavior, and artifact lifecycle coverage will live in `../StellaOps.Excititor.Export.Tests`.
diff --git a/src/StellaOps.Vexer.Export/ExportEngine.cs b/src/StellaOps.Excititor.Export/ExportEngine.cs
similarity index 98%
rename from src/StellaOps.Vexer.Export/ExportEngine.cs
rename to src/StellaOps.Excititor.Export/ExportEngine.cs
index a93ee805..25f3d28a 100644
--- a/src/StellaOps.Vexer.Export/ExportEngine.cs
+++ b/src/StellaOps.Excititor.Export/ExportEngine.cs
@@ -3,11 +3,11 @@ using System.IO;
using System.Linq;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
-using StellaOps.Vexer.Core;
-using StellaOps.Vexer.Policy;
-using StellaOps.Vexer.Storage.Mongo;
+using StellaOps.Excititor.Core;
+using StellaOps.Excititor.Policy;
+using StellaOps.Excititor.Storage.Mongo;
-namespace StellaOps.Vexer.Export;
+namespace StellaOps.Excititor.Export;
public interface IExportEngine
{
diff --git a/src/StellaOps.Vexer.Export/FileSystemArtifactStore.cs b/src/StellaOps.Excititor.Export/FileSystemArtifactStore.cs
similarity index 98%
rename from src/StellaOps.Vexer.Export/FileSystemArtifactStore.cs
rename to src/StellaOps.Excititor.Export/FileSystemArtifactStore.cs
index 9aa2f2a8..2427f565 100644
--- a/src/StellaOps.Vexer.Export/FileSystemArtifactStore.cs
+++ b/src/StellaOps.Excititor.Export/FileSystemArtifactStore.cs
@@ -7,9 +7,9 @@ using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Export;
+namespace StellaOps.Excititor.Export;
public sealed class FileSystemArtifactStoreOptions
{
diff --git a/src/StellaOps.Vexer.Export/IVexArtifactStore.cs b/src/StellaOps.Excititor.Export/IVexArtifactStore.cs
similarity index 92%
rename from src/StellaOps.Vexer.Export/IVexArtifactStore.cs
rename to src/StellaOps.Excititor.Export/IVexArtifactStore.cs
index 5de445ac..1614b291 100644
--- a/src/StellaOps.Vexer.Export/IVexArtifactStore.cs
+++ b/src/StellaOps.Excititor.Export/IVexArtifactStore.cs
@@ -2,9 +2,9 @@ using System.Collections.Generic;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Export;
+namespace StellaOps.Excititor.Export;
public sealed record VexExportArtifact(
VexContentAddress ContentAddress,
diff --git a/src/StellaOps.Vexer.Export/OfflineBundleArtifactStore.cs b/src/StellaOps.Excititor.Export/OfflineBundleArtifactStore.cs
similarity index 99%
rename from src/StellaOps.Vexer.Export/OfflineBundleArtifactStore.cs
rename to src/StellaOps.Excititor.Export/OfflineBundleArtifactStore.cs
index ba5e771e..93ae5e7e 100644
--- a/src/StellaOps.Vexer.Export/OfflineBundleArtifactStore.cs
+++ b/src/StellaOps.Excititor.Export/OfflineBundleArtifactStore.cs
@@ -11,9 +11,9 @@ using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Export;
+namespace StellaOps.Excititor.Export;
public sealed class OfflineBundleArtifactStoreOptions
{
diff --git a/src/StellaOps.Excititor.Export/Properties/AssemblyInfo.cs b/src/StellaOps.Excititor.Export/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..e59f31ce
--- /dev/null
+++ b/src/StellaOps.Excititor.Export/Properties/AssemblyInfo.cs
@@ -0,0 +1,3 @@
+using System.Runtime.CompilerServices;
+
+[assembly: InternalsVisibleTo("StellaOps.Excititor.Export.Tests")]
diff --git a/src/StellaOps.Vexer.Export/S3ArtifactStore.cs b/src/StellaOps.Excititor.Export/S3ArtifactStore.cs
similarity index 98%
rename from src/StellaOps.Vexer.Export/S3ArtifactStore.cs
rename to src/StellaOps.Excititor.Export/S3ArtifactStore.cs
index 9cd99f89..47bc14c6 100644
--- a/src/StellaOps.Vexer.Export/S3ArtifactStore.cs
+++ b/src/StellaOps.Excititor.Export/S3ArtifactStore.cs
@@ -6,9 +6,9 @@ using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Export;
+namespace StellaOps.Excititor.Export;
public sealed class S3ArtifactStoreOptions
{
diff --git a/src/StellaOps.Vexer.Export/StellaOps.Vexer.Export.csproj b/src/StellaOps.Excititor.Export/StellaOps.Excititor.Export.csproj
similarity index 66%
rename from src/StellaOps.Vexer.Export/StellaOps.Vexer.Export.csproj
rename to src/StellaOps.Excititor.Export/StellaOps.Excititor.Export.csproj
index dc199446..8c99255e 100644
--- a/src/StellaOps.Vexer.Export/StellaOps.Vexer.Export.csproj
+++ b/src/StellaOps.Excititor.Export/StellaOps.Excititor.Export.csproj
@@ -12,8 +12,8 @@
-
-
-
+
+
+
diff --git a/src/StellaOps.Excititor.Export/TASKS.md b/src/StellaOps.Excititor.Export/TASKS.md
new file mode 100644
index 00000000..570b34f3
--- /dev/null
+++ b/src/StellaOps.Excititor.Export/TASKS.md
@@ -0,0 +1,9 @@
+If you are working on this file you need to read docs/ARCHITECTURE_EXCITITOR.md and ./AGENTS.md).
+# TASKS
+| Task | Owner(s) | Depends on | Notes |
+|---|---|---|---|
+|EXCITITOR-EXPORT-01-001 – Export engine orchestration|Team Excititor Export|EXCITITOR-CORE-01-003|DONE (2025-10-15) – Export engine scaffolding with cache lookup, data source hooks, and deterministic manifest emission.|
+|EXCITITOR-EXPORT-01-002 – Cache index & eviction hooks|Team Excititor Export|EXCITITOR-EXPORT-01-001, EXCITITOR-STORAGE-01-003|**DONE (2025-10-16)** – Export engine now invalidates cache entries on force refresh, cache services expose prune/invalidate APIs, and storage maintenance trims expired/dangling records with Mongo2Go coverage.|
+|EXCITITOR-EXPORT-01-003 – Artifact store adapters|Team Excititor Export|EXCITITOR-EXPORT-01-001|**DONE (2025-10-16)** – Implemented multi-store pipeline with filesystem, S3-compatible, and offline bundle adapters (hash verification + manifest/zip output) plus unit coverage and DI hooks.|
+|EXCITITOR-EXPORT-01-004 – Attestation handoff integration|Team Excititor Export|EXCITITOR-EXPORT-01-001, EXCITITOR-ATTEST-01-001|**DONE (2025-10-17)** – Export engine now invokes attestation client, logs diagnostics, and persists Rekor/envelope metadata on manifests; regression coverage added in `ExportEngineTests.ExportAsync_AttachesAttestationMetadata`.|
+|EXCITITOR-EXPORT-01-005 – Score & resolve envelope surfaces|Team Excititor Export|EXCITITOR-EXPORT-01-004, EXCITITOR-CORE-02-001|TODO – Emit consensus+score envelopes in export manifests, include policy/scoring digests, and update offline bundle/ORAS layouts to carry signed VEX responses.|
diff --git a/src/StellaOps.Vexer.Export/VexExportCacheService.cs b/src/StellaOps.Excititor.Export/VexExportCacheService.cs
similarity index 95%
rename from src/StellaOps.Vexer.Export/VexExportCacheService.cs
rename to src/StellaOps.Excititor.Export/VexExportCacheService.cs
index 6cdda3f9..7601ba46 100644
--- a/src/StellaOps.Vexer.Export/VexExportCacheService.cs
+++ b/src/StellaOps.Excititor.Export/VexExportCacheService.cs
@@ -1,9 +1,9 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
-using StellaOps.Vexer.Core;
-using StellaOps.Vexer.Storage.Mongo;
+using StellaOps.Excititor.Core;
+using StellaOps.Excititor.Storage.Mongo;
-namespace StellaOps.Vexer.Export;
+namespace StellaOps.Excititor.Export;
public interface IVexExportCacheService
{
diff --git a/src/StellaOps.Vexer.Formats.CSAF.Tests/CsafNormalizerTests.cs b/src/StellaOps.Excititor.Formats.CSAF.Tests/CsafNormalizerTests.cs
similarity index 92%
rename from src/StellaOps.Vexer.Formats.CSAF.Tests/CsafNormalizerTests.cs
rename to src/StellaOps.Excititor.Formats.CSAF.Tests/CsafNormalizerTests.cs
index f14a9d61..cb8f5d42 100644
--- a/src/StellaOps.Vexer.Formats.CSAF.Tests/CsafNormalizerTests.cs
+++ b/src/StellaOps.Excititor.Formats.CSAF.Tests/CsafNormalizerTests.cs
@@ -4,10 +4,10 @@ using System.Text;
using System.IO;
using FluentAssertions;
using Microsoft.Extensions.Logging.Abstractions;
-using StellaOps.Vexer.Core;
-using StellaOps.Vexer.Formats.CSAF;
+using StellaOps.Excititor.Core;
+using StellaOps.Excititor.Formats.CSAF;
-namespace StellaOps.Vexer.Formats.CSAF.Tests;
+namespace StellaOps.Excititor.Formats.CSAF.Tests;
public sealed class CsafNormalizerTests
{
@@ -62,7 +62,7 @@ public sealed class CsafNormalizerTests
""";
var rawDocument = new VexRawDocument(
- ProviderId: "vexer:redhat",
+ ProviderId: "excititor:redhat",
VexDocumentFormat.Csaf,
new Uri("https://example.com/csaf/rhsa-2025-0001.json"),
new DateTimeOffset(2025, 10, 11, 0, 0, 0, TimeSpan.Zero),
@@ -70,7 +70,7 @@ public sealed class CsafNormalizerTests
Encoding.UTF8.GetBytes(json),
ImmutableDictionary.Empty);
- var provider = new VexProvider("vexer:redhat", "Red Hat CSAF", VexProviderKind.Distro);
+ var provider = new VexProvider("excititor:redhat", "Red Hat CSAF", VexProviderKind.Distro);
var normalizer = new CsafNormalizer(NullLogger.Instance);
var batch = await normalizer.NormalizeAsync(rawDocument, provider, CancellationToken.None);
@@ -99,7 +99,7 @@ public sealed class CsafNormalizerTests
var json = await File.ReadAllTextAsync(path);
var rawDocument = new VexRawDocument(
- ProviderId: "vexer:redhat",
+ ProviderId: "excititor:redhat",
VexDocumentFormat.Csaf,
new Uri("https://security.example.com/rhsa-2025-1001.json"),
new DateTimeOffset(2025, 10, 6, 0, 0, 0, TimeSpan.Zero),
@@ -107,7 +107,7 @@ public sealed class CsafNormalizerTests
Encoding.UTF8.GetBytes(json),
ImmutableDictionary.Empty);
- var provider = new VexProvider("vexer:redhat", "Red Hat CSAF", VexProviderKind.Distro);
+ var provider = new VexProvider("excititor:redhat", "Red Hat CSAF", VexProviderKind.Distro);
var normalizer = new CsafNormalizer(NullLogger.Instance);
var batch = await normalizer.NormalizeAsync(rawDocument, provider, CancellationToken.None);
diff --git a/src/StellaOps.Vexer.Formats.CSAF.Tests/Fixtures/rhsa-sample.json b/src/StellaOps.Excititor.Formats.CSAF.Tests/Fixtures/rhsa-sample.json
similarity index 100%
rename from src/StellaOps.Vexer.Formats.CSAF.Tests/Fixtures/rhsa-sample.json
rename to src/StellaOps.Excititor.Formats.CSAF.Tests/Fixtures/rhsa-sample.json
diff --git a/src/StellaOps.Vexer.Formats.CSAF.Tests/StellaOps.Vexer.Formats.CSAF.Tests.csproj b/src/StellaOps.Excititor.Formats.CSAF.Tests/StellaOps.Excititor.Formats.CSAF.Tests.csproj
similarity index 70%
rename from src/StellaOps.Vexer.Formats.CSAF.Tests/StellaOps.Vexer.Formats.CSAF.Tests.csproj
rename to src/StellaOps.Excititor.Formats.CSAF.Tests/StellaOps.Excititor.Formats.CSAF.Tests.csproj
index 013f6a75..70ac332e 100644
--- a/src/StellaOps.Vexer.Formats.CSAF.Tests/StellaOps.Vexer.Formats.CSAF.Tests.csproj
+++ b/src/StellaOps.Excititor.Formats.CSAF.Tests/StellaOps.Excititor.Formats.CSAF.Tests.csproj
@@ -11,8 +11,8 @@
-
-
+
+
diff --git a/src/StellaOps.Vexer.Formats.CSAF/AGENTS.md b/src/StellaOps.Excititor.Formats.CSAF/AGENTS.md
similarity index 89%
rename from src/StellaOps.Vexer.Formats.CSAF/AGENTS.md
rename to src/StellaOps.Excititor.Formats.CSAF/AGENTS.md
index 67a3913c..bdca8bef 100644
--- a/src/StellaOps.Vexer.Formats.CSAF/AGENTS.md
+++ b/src/StellaOps.Excititor.Formats.CSAF/AGENTS.md
@@ -1,6 +1,6 @@
# AGENTS
## Role
-Normalize CSAF VEX profile documents into Vexer claims and provide CSAF export adapters.
+Normalize CSAF VEX profile documents into Excititor claims and provide CSAF export adapters.
## Scope
- CSAF ingestion helpers: provider metadata parsing, document revision handling, vulnerability/action mappings.
- Normalizer implementation fulfilling `INormalizer` for CSAF sources (Red Hat, Cisco, SUSE, MSRC, Oracle, Ubuntu).
@@ -20,4 +20,4 @@ Out: HTTP fetching (connectors), storage persistence, attestation logic.
- Emit structured diagnostics when CSAF documents fail schema validation, including source URI and revision.
- Provide counters for normalization outcomes (status distribution, justification coverage).
## Tests
-- Fixture-driven parsing/export tests will live in `../StellaOps.Vexer.Formats.CSAF.Tests` using real CSAF samples.
+- Fixture-driven parsing/export tests will live in `../StellaOps.Excititor.Formats.CSAF.Tests` using real CSAF samples.
diff --git a/src/StellaOps.Vexer.Formats.CSAF/CsafNormalizer.cs b/src/StellaOps.Excititor.Formats.CSAF/CsafNormalizer.cs
similarity index 99%
rename from src/StellaOps.Vexer.Formats.CSAF/CsafNormalizer.cs
rename to src/StellaOps.Excititor.Formats.CSAF/CsafNormalizer.cs
index 342ed295..29f9d0a0 100644
--- a/src/StellaOps.Vexer.Formats.CSAF/CsafNormalizer.cs
+++ b/src/StellaOps.Excititor.Formats.CSAF/CsafNormalizer.cs
@@ -6,9 +6,9 @@ using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Formats.CSAF;
+namespace StellaOps.Excititor.Formats.CSAF;
public sealed class CsafNormalizer : IVexNormalizer
{
diff --git a/src/StellaOps.Vexer.Formats.CSAF/ServiceCollectionExtensions.cs b/src/StellaOps.Excititor.Formats.CSAF/ServiceCollectionExtensions.cs
similarity index 82%
rename from src/StellaOps.Vexer.Formats.CSAF/ServiceCollectionExtensions.cs
rename to src/StellaOps.Excititor.Formats.CSAF/ServiceCollectionExtensions.cs
index 8e282c08..8f6dcffe 100644
--- a/src/StellaOps.Vexer.Formats.CSAF/ServiceCollectionExtensions.cs
+++ b/src/StellaOps.Excititor.Formats.CSAF/ServiceCollectionExtensions.cs
@@ -1,7 +1,7 @@
using Microsoft.Extensions.DependencyInjection;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Formats.CSAF;
+namespace StellaOps.Excititor.Formats.CSAF;
public static class CsafFormatsServiceCollectionExtensions
{
diff --git a/src/StellaOps.Vexer.Formats.OpenVEX/StellaOps.Vexer.Formats.OpenVEX.csproj b/src/StellaOps.Excititor.Formats.CSAF/StellaOps.Excititor.Formats.CSAF.csproj
similarity index 85%
rename from src/StellaOps.Vexer.Formats.OpenVEX/StellaOps.Vexer.Formats.OpenVEX.csproj
rename to src/StellaOps.Excititor.Formats.CSAF/StellaOps.Excititor.Formats.CSAF.csproj
index 54abf95e..ef6c36df 100644
--- a/src/StellaOps.Vexer.Formats.OpenVEX/StellaOps.Vexer.Formats.OpenVEX.csproj
+++ b/src/StellaOps.Excititor.Formats.CSAF/StellaOps.Excititor.Formats.CSAF.csproj
@@ -11,6 +11,6 @@
-
+
diff --git a/src/StellaOps.Excititor.Formats.CSAF/TASKS.md b/src/StellaOps.Excititor.Formats.CSAF/TASKS.md
new file mode 100644
index 00000000..cf869d50
--- /dev/null
+++ b/src/StellaOps.Excititor.Formats.CSAF/TASKS.md
@@ -0,0 +1,7 @@
+If you are working on this file you need to read docs/ARCHITECTURE_EXCITITOR.md and ./AGENTS.md).
+# TASKS
+| Task | Owner(s) | Depends on | Notes |
+|---|---|---|---|
+|EXCITITOR-FMT-CSAF-01-001 – CSAF normalizer foundation|Team Excititor Formats|EXCITITOR-CORE-01-001|**DONE (2025-10-17)** – Implemented CSAF normalizer + DI hook, parsing tracking metadata, product tree branches/full names, and mapping product statuses into canonical `VexClaim`s with baseline precedence. Regression added in `CsafNormalizerTests`.|
+|EXCITITOR-FMT-CSAF-01-002 – Status/justification mapping|Team Excititor Formats|EXCITITOR-FMT-CSAF-01-001, EXCITITOR-POLICY-01-001|TODO – Normalize CSAF `product_status` + `justification` values into policy-aware enums with audit diagnostics for unsupported codes.|
+|EXCITITOR-FMT-CSAF-01-003 – CSAF export adapter|Team Excititor Formats|EXCITITOR-EXPORT-01-001, EXCITITOR-FMT-CSAF-01-001|TODO – Provide CSAF export writer producing deterministic documents (per vuln/product) and manifest metadata for attestation.|
diff --git a/src/StellaOps.Vexer.Formats.CycloneDX.Tests/CycloneDxNormalizerTests.cs b/src/StellaOps.Excititor.Formats.CycloneDX.Tests/CycloneDxNormalizerTests.cs
similarity index 92%
rename from src/StellaOps.Vexer.Formats.CycloneDX.Tests/CycloneDxNormalizerTests.cs
rename to src/StellaOps.Excititor.Formats.CycloneDX.Tests/CycloneDxNormalizerTests.cs
index 5145b830..867d6d65 100644
--- a/src/StellaOps.Vexer.Formats.CycloneDX.Tests/CycloneDxNormalizerTests.cs
+++ b/src/StellaOps.Excititor.Formats.CycloneDX.Tests/CycloneDxNormalizerTests.cs
@@ -3,10 +3,10 @@ using System.Linq;
using System.Text;
using FluentAssertions;
using Microsoft.Extensions.Logging.Abstractions;
-using StellaOps.Vexer.Core;
-using StellaOps.Vexer.Formats.CycloneDX;
+using StellaOps.Excititor.Core;
+using StellaOps.Excititor.Formats.CycloneDX;
-namespace StellaOps.Vexer.Formats.CycloneDX.Tests;
+namespace StellaOps.Excititor.Formats.CycloneDX.Tests;
public sealed class CycloneDxNormalizerTests
{
@@ -58,7 +58,7 @@ public sealed class CycloneDxNormalizerTests
""";
var rawDocument = new VexRawDocument(
- "vexer:cyclonedx",
+ "excititor:cyclonedx",
VexDocumentFormat.CycloneDx,
new Uri("https://example.org/vex.json"),
new DateTimeOffset(2025, 10, 16, 0, 0, 0, TimeSpan.Zero),
@@ -66,7 +66,7 @@ public sealed class CycloneDxNormalizerTests
Encoding.UTF8.GetBytes(json),
ImmutableDictionary.Empty);
- var provider = new VexProvider("vexer:cyclonedx", "CycloneDX Provider", VexProviderKind.Vendor);
+ var provider = new VexProvider("excititor:cyclonedx", "CycloneDX Provider", VexProviderKind.Vendor);
var normalizer = new CycloneDxNormalizer(NullLogger.Instance);
var batch = await normalizer.NormalizeAsync(rawDocument, provider, CancellationToken.None);
diff --git a/src/StellaOps.Vexer.Formats.OpenVEX.Tests/StellaOps.Vexer.Formats.OpenVEX.Tests.csproj b/src/StellaOps.Excititor.Formats.CycloneDX.Tests/StellaOps.Excititor.Formats.CycloneDX.Tests.csproj
similarity index 64%
rename from src/StellaOps.Vexer.Formats.OpenVEX.Tests/StellaOps.Vexer.Formats.OpenVEX.Tests.csproj
rename to src/StellaOps.Excititor.Formats.CycloneDX.Tests/StellaOps.Excititor.Formats.CycloneDX.Tests.csproj
index bdd68e59..ffc9e4b6 100644
--- a/src/StellaOps.Vexer.Formats.OpenVEX.Tests/StellaOps.Vexer.Formats.OpenVEX.Tests.csproj
+++ b/src/StellaOps.Excititor.Formats.CycloneDX.Tests/StellaOps.Excititor.Formats.CycloneDX.Tests.csproj
@@ -11,7 +11,7 @@
-
-
+
+
diff --git a/src/StellaOps.Vexer.Formats.CycloneDX/AGENTS.md b/src/StellaOps.Excititor.Formats.CycloneDX/AGENTS.md
similarity index 90%
rename from src/StellaOps.Vexer.Formats.CycloneDX/AGENTS.md
rename to src/StellaOps.Excititor.Formats.CycloneDX/AGENTS.md
index 4357e8b8..964b56dc 100644
--- a/src/StellaOps.Vexer.Formats.CycloneDX/AGENTS.md
+++ b/src/StellaOps.Excititor.Formats.CycloneDX/AGENTS.md
@@ -19,4 +19,4 @@ Out: Connector transport, storage, attestation; these rely on other modules.
## Observability & security expectations
- Log schema mismatches with document digest and component references; avoid logging proprietary component details where possible.
## Tests
-- Unit and fixture tests will live in `../StellaOps.Vexer.Formats.CycloneDX.Tests`, covering normalization and serialization determinism.
+- Unit and fixture tests will live in `../StellaOps.Excititor.Formats.CycloneDX.Tests`, covering normalization and serialization determinism.
diff --git a/src/StellaOps.Vexer.Formats.CycloneDX/CycloneDxNormalizer.cs b/src/StellaOps.Excititor.Formats.CycloneDX/CycloneDxNormalizer.cs
similarity index 99%
rename from src/StellaOps.Vexer.Formats.CycloneDX/CycloneDxNormalizer.cs
rename to src/StellaOps.Excititor.Formats.CycloneDX/CycloneDxNormalizer.cs
index c12c0d94..a21449cf 100644
--- a/src/StellaOps.Vexer.Formats.CycloneDX/CycloneDxNormalizer.cs
+++ b/src/StellaOps.Excititor.Formats.CycloneDX/CycloneDxNormalizer.cs
@@ -6,9 +6,9 @@ using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Formats.CycloneDX;
+namespace StellaOps.Excititor.Formats.CycloneDX;
public sealed class CycloneDxNormalizer : IVexNormalizer
{
diff --git a/src/StellaOps.Vexer.Formats.CycloneDX/ServiceCollectionExtensions.cs b/src/StellaOps.Excititor.Formats.CycloneDX/ServiceCollectionExtensions.cs
similarity index 82%
rename from src/StellaOps.Vexer.Formats.CycloneDX/ServiceCollectionExtensions.cs
rename to src/StellaOps.Excititor.Formats.CycloneDX/ServiceCollectionExtensions.cs
index d39c3c78..99393cca 100644
--- a/src/StellaOps.Vexer.Formats.CycloneDX/ServiceCollectionExtensions.cs
+++ b/src/StellaOps.Excititor.Formats.CycloneDX/ServiceCollectionExtensions.cs
@@ -1,7 +1,7 @@
using Microsoft.Extensions.DependencyInjection;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Formats.CycloneDX;
+namespace StellaOps.Excititor.Formats.CycloneDX;
public static class CycloneDxFormatsServiceCollectionExtensions
{
diff --git a/src/StellaOps.Vexer.Formats.CSAF/StellaOps.Vexer.Formats.CSAF.csproj b/src/StellaOps.Excititor.Formats.CycloneDX/StellaOps.Excititor.Formats.CycloneDX.csproj
similarity index 85%
rename from src/StellaOps.Vexer.Formats.CSAF/StellaOps.Vexer.Formats.CSAF.csproj
rename to src/StellaOps.Excititor.Formats.CycloneDX/StellaOps.Excititor.Formats.CycloneDX.csproj
index 54abf95e..ef6c36df 100644
--- a/src/StellaOps.Vexer.Formats.CSAF/StellaOps.Vexer.Formats.CSAF.csproj
+++ b/src/StellaOps.Excititor.Formats.CycloneDX/StellaOps.Excititor.Formats.CycloneDX.csproj
@@ -11,6 +11,6 @@
-
+
diff --git a/src/StellaOps.Excititor.Formats.CycloneDX/TASKS.md b/src/StellaOps.Excititor.Formats.CycloneDX/TASKS.md
new file mode 100644
index 00000000..0df3ecac
--- /dev/null
+++ b/src/StellaOps.Excititor.Formats.CycloneDX/TASKS.md
@@ -0,0 +1,7 @@
+If you are working on this file you need to read docs/ARCHITECTURE_EXCITITOR.md and ./AGENTS.md).
+# TASKS
+| Task | Owner(s) | Depends on | Notes |
+|---|---|---|---|
+|EXCITITOR-FMT-CYCLONE-01-001 – CycloneDX VEX normalizer|Team Excititor Formats|EXCITITOR-CORE-01-001|**DONE (2025-10-17)** – CycloneDX normalizer parses `analysis` data, resolves component references, and emits canonical `VexClaim`s; regression lives in `CycloneDxNormalizerTests`.|
+|EXCITITOR-FMT-CYCLONE-01-002 – Component reference reconciliation|Team Excititor Formats|EXCITITOR-FMT-CYCLONE-01-001|TODO – Implement helpers to reconcile component/service references against policy expectations and emit diagnostics for missing SBOM links.|
+|EXCITITOR-FMT-CYCLONE-01-003 – CycloneDX export serializer|Team Excititor Formats|EXCITITOR-EXPORT-01-001, EXCITITOR-FMT-CYCLONE-01-001|TODO – Provide exporters producing CycloneDX VEX output with canonical ordering and hash-stable manifests.|
diff --git a/src/StellaOps.Vexer.Formats.OpenVEX.Tests/OpenVexNormalizerTests.cs b/src/StellaOps.Excititor.Formats.OpenVEX.Tests/OpenVexNormalizerTests.cs
similarity index 92%
rename from src/StellaOps.Vexer.Formats.OpenVEX.Tests/OpenVexNormalizerTests.cs
rename to src/StellaOps.Excititor.Formats.OpenVEX.Tests/OpenVexNormalizerTests.cs
index 37989d9d..c490ddad 100644
--- a/src/StellaOps.Vexer.Formats.OpenVEX.Tests/OpenVexNormalizerTests.cs
+++ b/src/StellaOps.Excititor.Formats.OpenVEX.Tests/OpenVexNormalizerTests.cs
@@ -3,10 +3,10 @@ using System.Linq;
using System.Text;
using FluentAssertions;
using Microsoft.Extensions.Logging.Abstractions;
-using StellaOps.Vexer.Core;
-using StellaOps.Vexer.Formats.OpenVEX;
+using StellaOps.Excititor.Core;
+using StellaOps.Excititor.Formats.OpenVEX;
-namespace StellaOps.Vexer.Formats.OpenVEX.Tests;
+namespace StellaOps.Excititor.Formats.OpenVEX.Tests;
public sealed class OpenVexNormalizerTests
{
@@ -52,7 +52,7 @@ public sealed class OpenVexNormalizerTests
""";
var rawDocument = new VexRawDocument(
- "vexer:openvex",
+ "excititor:openvex",
VexDocumentFormat.OpenVex,
new Uri("https://example.com/openvex.json"),
new DateTimeOffset(2025, 10, 6, 0, 0, 0, TimeSpan.Zero),
@@ -60,7 +60,7 @@ public sealed class OpenVexNormalizerTests
Encoding.UTF8.GetBytes(json),
ImmutableDictionary.Empty);
- var provider = new VexProvider("vexer:openvex", "OpenVEX Provider", VexProviderKind.Vendor);
+ var provider = new VexProvider("excititor:openvex", "OpenVEX Provider", VexProviderKind.Vendor);
var normalizer = new OpenVexNormalizer(NullLogger.Instance);
var batch = await normalizer.NormalizeAsync(rawDocument, provider, CancellationToken.None);
diff --git a/src/StellaOps.Vexer.Formats.CycloneDX.Tests/StellaOps.Vexer.Formats.CycloneDX.Tests.csproj b/src/StellaOps.Excititor.Formats.OpenVEX.Tests/StellaOps.Excititor.Formats.OpenVEX.Tests.csproj
similarity index 64%
rename from src/StellaOps.Vexer.Formats.CycloneDX.Tests/StellaOps.Vexer.Formats.CycloneDX.Tests.csproj
rename to src/StellaOps.Excititor.Formats.OpenVEX.Tests/StellaOps.Excititor.Formats.OpenVEX.Tests.csproj
index 4a6b0f69..37e48806 100644
--- a/src/StellaOps.Vexer.Formats.CycloneDX.Tests/StellaOps.Vexer.Formats.CycloneDX.Tests.csproj
+++ b/src/StellaOps.Excititor.Formats.OpenVEX.Tests/StellaOps.Excititor.Formats.OpenVEX.Tests.csproj
@@ -11,7 +11,7 @@
-
-
+
+
diff --git a/src/StellaOps.Vexer.Formats.OpenVEX/AGENTS.md b/src/StellaOps.Excititor.Formats.OpenVEX/AGENTS.md
similarity index 96%
rename from src/StellaOps.Vexer.Formats.OpenVEX/AGENTS.md
rename to src/StellaOps.Excititor.Formats.OpenVEX/AGENTS.md
index d6040f70..65e1d1a2 100644
--- a/src/StellaOps.Vexer.Formats.OpenVEX/AGENTS.md
+++ b/src/StellaOps.Excititor.Formats.OpenVEX/AGENTS.md
@@ -18,4 +18,4 @@ Out: OCI registry access, policy evaluation, attestation signing (handled by oth
## Observability & security expectations
- Log normalization anomalies with subject digest and justification mapping while respecting offline constraints.
## Tests
-- Snapshot-driven normalization/export tests will be placed in `../StellaOps.Vexer.Formats.OpenVEX.Tests`.
+- Snapshot-driven normalization/export tests will be placed in `../StellaOps.Excititor.Formats.OpenVEX.Tests`.
diff --git a/src/StellaOps.Vexer.Formats.OpenVEX/OpenVexNormalizer.cs b/src/StellaOps.Excititor.Formats.OpenVEX/OpenVexNormalizer.cs
similarity index 99%
rename from src/StellaOps.Vexer.Formats.OpenVEX/OpenVexNormalizer.cs
rename to src/StellaOps.Excititor.Formats.OpenVEX/OpenVexNormalizer.cs
index ac748af9..590d5df4 100644
--- a/src/StellaOps.Vexer.Formats.OpenVEX/OpenVexNormalizer.cs
+++ b/src/StellaOps.Excititor.Formats.OpenVEX/OpenVexNormalizer.cs
@@ -6,9 +6,9 @@ using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Formats.OpenVEX;
+namespace StellaOps.Excititor.Formats.OpenVEX;
public sealed class OpenVexNormalizer : IVexNormalizer
{
diff --git a/src/StellaOps.Vexer.Formats.OpenVEX/ServiceCollectionExtensions.cs b/src/StellaOps.Excititor.Formats.OpenVEX/ServiceCollectionExtensions.cs
similarity index 82%
rename from src/StellaOps.Vexer.Formats.OpenVEX/ServiceCollectionExtensions.cs
rename to src/StellaOps.Excititor.Formats.OpenVEX/ServiceCollectionExtensions.cs
index 5866009e..5f9acdde 100644
--- a/src/StellaOps.Vexer.Formats.OpenVEX/ServiceCollectionExtensions.cs
+++ b/src/StellaOps.Excititor.Formats.OpenVEX/ServiceCollectionExtensions.cs
@@ -1,7 +1,7 @@
using Microsoft.Extensions.DependencyInjection;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Formats.OpenVEX;
+namespace StellaOps.Excititor.Formats.OpenVEX;
public static class OpenVexFormatsServiceCollectionExtensions
{
diff --git a/src/StellaOps.Vexer.Formats.CycloneDX/StellaOps.Vexer.Formats.CycloneDX.csproj b/src/StellaOps.Excititor.Formats.OpenVEX/StellaOps.Excititor.Formats.OpenVEX.csproj
similarity index 85%
rename from src/StellaOps.Vexer.Formats.CycloneDX/StellaOps.Vexer.Formats.CycloneDX.csproj
rename to src/StellaOps.Excititor.Formats.OpenVEX/StellaOps.Excititor.Formats.OpenVEX.csproj
index 54abf95e..ef6c36df 100644
--- a/src/StellaOps.Vexer.Formats.CycloneDX/StellaOps.Vexer.Formats.CycloneDX.csproj
+++ b/src/StellaOps.Excititor.Formats.OpenVEX/StellaOps.Excititor.Formats.OpenVEX.csproj
@@ -11,6 +11,6 @@
-
+
diff --git a/src/StellaOps.Excititor.Formats.OpenVEX/TASKS.md b/src/StellaOps.Excititor.Formats.OpenVEX/TASKS.md
new file mode 100644
index 00000000..22c363e7
--- /dev/null
+++ b/src/StellaOps.Excititor.Formats.OpenVEX/TASKS.md
@@ -0,0 +1,7 @@
+If you are working on this file you need to read docs/ARCHITECTURE_EXCITITOR.md and ./AGENTS.md).
+# TASKS
+| Task | Owner(s) | Depends on | Notes |
+|---|---|---|---|
+|EXCITITOR-FMT-OPENVEX-01-001 – OpenVEX normalizer|Team Excititor Formats|EXCITITOR-CORE-01-001|**DONE (2025-10-17)** – OpenVEX normalizer parses statements/products, maps status/justification, and surfaces provenance metadata; coverage in `OpenVexNormalizerTests`.|
+|EXCITITOR-FMT-OPENVEX-01-002 – Statement merge utilities|Team Excititor Formats|EXCITITOR-FMT-OPENVEX-01-001|TODO – Add reducers merging multiple OpenVEX statements, resolving conflicts deterministically, and emitting policy diagnostics.|
+|EXCITITOR-FMT-OPENVEX-01-003 – OpenVEX export writer|Team Excititor Formats|EXCITITOR-EXPORT-01-001, EXCITITOR-FMT-OPENVEX-01-001|TODO – Provide export serializer generating canonical OpenVEX documents with optional SBOM references and hash-stable ordering.|
diff --git a/src/StellaOps.Vexer.Policy.Tests/StellaOps.Vexer.Policy.Tests.csproj b/src/StellaOps.Excititor.Policy.Tests/StellaOps.Excititor.Policy.Tests.csproj
similarity index 76%
rename from src/StellaOps.Vexer.Policy.Tests/StellaOps.Vexer.Policy.Tests.csproj
rename to src/StellaOps.Excititor.Policy.Tests/StellaOps.Excititor.Policy.Tests.csproj
index a4bbbfe9..d8aef287 100644
--- a/src/StellaOps.Vexer.Policy.Tests/StellaOps.Vexer.Policy.Tests.csproj
+++ b/src/StellaOps.Excititor.Policy.Tests/StellaOps.Excititor.Policy.Tests.csproj
@@ -7,6 +7,6 @@
true
-
+
diff --git a/src/StellaOps.Vexer.Policy.Tests/VexPolicyProviderTests.cs b/src/StellaOps.Excititor.Policy.Tests/VexPolicyProviderTests.cs
similarity index 96%
rename from src/StellaOps.Vexer.Policy.Tests/VexPolicyProviderTests.cs
rename to src/StellaOps.Excititor.Policy.Tests/VexPolicyProviderTests.cs
index 8015332e..fce555fd 100644
--- a/src/StellaOps.Vexer.Policy.Tests/VexPolicyProviderTests.cs
+++ b/src/StellaOps.Excititor.Policy.Tests/VexPolicyProviderTests.cs
@@ -2,11 +2,11 @@ using System;
using System.Collections.Generic;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Core;
-using StellaOps.Vexer.Policy;
+using StellaOps.Excititor.Core;
+using StellaOps.Excititor.Policy;
using Xunit;
-namespace StellaOps.Vexer.Policy.Tests;
+namespace StellaOps.Excititor.Policy.Tests;
public sealed class VexPolicyProviderTests
{
diff --git a/src/StellaOps.Vexer.Policy/AGENTS.md b/src/StellaOps.Excititor.Policy/AGENTS.md
similarity index 90%
rename from src/StellaOps.Vexer.Policy/AGENTS.md
rename to src/StellaOps.Excititor.Policy/AGENTS.md
index 87c91367..69ea60d7 100644
--- a/src/StellaOps.Vexer.Policy/AGENTS.md
+++ b/src/StellaOps.Excititor.Policy/AGENTS.md
@@ -1,6 +1,6 @@
# AGENTS
## Role
-Centralizes policy configuration, provider trust weights, and justification guardrails applied to Vexer consensus decisions.
+Centralizes policy configuration, provider trust weights, and justification guardrails applied to Excititor consensus decisions.
## Scope
- Policy models for tier weighting, provider overrides, justification allowlists, and conflict escalation.
- Configuration binding helpers (YAML/JSON) and validation of operator-supplied policy bundles.
@@ -20,4 +20,4 @@ Out: persistence/migrations, HTTP exposure, connector-specific trust logic (live
- Emit structured events on policy load/update with revision IDs, but do not log full sensitive policy documents.
- Maintain deterministic error ordering for reproducible diagnostics.
## Tests
-- Policy fixtures and regression coverage will live in `../StellaOps.Vexer.Policy.Tests` once scaffolded; leverage snapshot comparisons for YAML bindings.
+- Policy fixtures and regression coverage will live in `../StellaOps.Excititor.Policy.Tests` once scaffolded; leverage snapshot comparisons for YAML bindings.
diff --git a/src/StellaOps.Vexer.Policy/IVexPolicyProvider.cs b/src/StellaOps.Excititor.Policy/IVexPolicyProvider.cs
similarity index 98%
rename from src/StellaOps.Vexer.Policy/IVexPolicyProvider.cs
rename to src/StellaOps.Excititor.Policy/IVexPolicyProvider.cs
index b0a675f8..324fd64c 100644
--- a/src/StellaOps.Vexer.Policy/IVexPolicyProvider.cs
+++ b/src/StellaOps.Excititor.Policy/IVexPolicyProvider.cs
@@ -4,9 +4,9 @@ using System.Globalization;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Policy;
+namespace StellaOps.Excititor.Policy;
public interface IVexPolicyProvider
{
diff --git a/src/StellaOps.Vexer.Policy/StellaOps.Vexer.Policy.csproj b/src/StellaOps.Excititor.Policy/StellaOps.Excititor.Policy.csproj
similarity index 86%
rename from src/StellaOps.Vexer.Policy/StellaOps.Vexer.Policy.csproj
rename to src/StellaOps.Excititor.Policy/StellaOps.Excititor.Policy.csproj
index 95980268..76da4d64 100644
--- a/src/StellaOps.Vexer.Policy/StellaOps.Vexer.Policy.csproj
+++ b/src/StellaOps.Excititor.Policy/StellaOps.Excititor.Policy.csproj
@@ -12,6 +12,6 @@
-
+
diff --git a/src/StellaOps.Excititor.Policy/TASKS.md b/src/StellaOps.Excititor.Policy/TASKS.md
new file mode 100644
index 00000000..0fc8c033
--- /dev/null
+++ b/src/StellaOps.Excititor.Policy/TASKS.md
@@ -0,0 +1,11 @@
+If you are working on this file you need to read docs/ARCHITECTURE_EXCITITOR.md and ./AGENTS.md).
+# TASKS
+| Task | Owner(s) | Depends on | Notes |
+|---|---|---|---|
+|EXCITITOR-POLICY-01-001 – Policy schema & binding|Team Excititor Policy|EXCITITOR-CORE-01-001|DONE (2025-10-15) – Established `VexPolicyOptions`, options binding, and snapshot provider covering baseline weights/overrides.|
+|EXCITITOR-POLICY-01-002 – Policy evaluator service|Team Excititor Policy|EXCITITOR-POLICY-01-001|DONE (2025-10-15) – `VexPolicyEvaluator` exposes immutable snapshots to consensus and normalizes rejection reasons.|
+|EXCITITOR-POLICY-01-003 – Operator diagnostics & docs|Team Excititor Policy|EXCITITOR-POLICY-01-001|**DONE (2025-10-16)** – Surface structured diagnostics (CLI/WebService) and author policy upgrade guidance in docs/ARCHITECTURE_EXCITITOR.md appendix.
2025-10-16: Added `IVexPolicyDiagnostics`/`VexPolicyDiagnosticsReport`, sorted issue ordering, recommendations, and appendix guidance. Tests: `dotnet test src/StellaOps.Excititor.Core.Tests/StellaOps.Excititor.Core.Tests.csproj`.|
+|EXCITITOR-POLICY-01-004 – Policy schema validation & YAML binding|Team Excititor Policy|EXCITITOR-POLICY-01-001|**DONE (2025-10-16)** – Added strongly-typed YAML/JSON binding, schema validation, and deterministic diagnostics for operator-supplied policy bundles.|
+|EXCITITOR-POLICY-01-005 – Policy change tracking & telemetry|Team Excititor Policy|EXCITITOR-POLICY-01-002|**DONE (2025-10-16)** – Emit revision history, expose snapshot digests via CLI/WebService, and add structured logging/metrics for policy reloads.
2025-10-16: `VexPolicySnapshot` now carries revision/digest, provider logs reloads, `vex.policy.reloads` metric emitted, binder/diagnostics expose digest metadata. Tests: `dotnet test src/StellaOps.Excititor.Core.Tests/StellaOps.Excititor.Core.Tests.csproj`.|
+|EXCITITOR-POLICY-02-001 – Scoring coefficients & weight ceilings|Team Excititor Policy|EXCITITOR-POLICY-01-004|TODO – Extend `VexPolicyOptions` with α/β boosters and optional >1.0 weight ceilings, validate ranges, and document operator guidance in `docs/ARCHITECTURE_EXCITITOR.md`/`docs/EXCITITOR_SCORRING.md`.|
+|EXCITITOR-POLICY-02-002 – Diagnostics for scoring signals|Team Excititor Policy|EXCITITOR-POLICY-02-001|BACKLOG – Update diagnostics reports to surface missing severity/KEV/EPSS mappings, coefficient overrides, and provide actionable recommendations for policy tuning.|
diff --git a/src/StellaOps.Vexer.Policy/VexPolicyBinder.cs b/src/StellaOps.Excititor.Policy/VexPolicyBinder.cs
similarity index 97%
rename from src/StellaOps.Vexer.Policy/VexPolicyBinder.cs
rename to src/StellaOps.Excititor.Policy/VexPolicyBinder.cs
index 5e09de5b..63ab4697 100644
--- a/src/StellaOps.Vexer.Policy/VexPolicyBinder.cs
+++ b/src/StellaOps.Excititor.Policy/VexPolicyBinder.cs
@@ -3,11 +3,11 @@ using System.IO;
using System.Linq;
using System.Text;
using System.Text.Json;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
using YamlDotNet.Serialization;
using YamlDotNet.Serialization.NamingConventions;
-namespace StellaOps.Vexer.Policy;
+namespace StellaOps.Excititor.Policy;
public enum VexPolicyDocumentFormat
{
diff --git a/src/StellaOps.Vexer.Policy/VexPolicyDiagnostics.cs b/src/StellaOps.Excititor.Policy/VexPolicyDiagnostics.cs
similarity index 94%
rename from src/StellaOps.Vexer.Policy/VexPolicyDiagnostics.cs
rename to src/StellaOps.Excititor.Policy/VexPolicyDiagnostics.cs
index da4ce4b8..c8baaadb 100644
--- a/src/StellaOps.Vexer.Policy/VexPolicyDiagnostics.cs
+++ b/src/StellaOps.Excititor.Policy/VexPolicyDiagnostics.cs
@@ -2,7 +2,7 @@ using System;
using System.Collections.Immutable;
using System.Linq;
-namespace StellaOps.Vexer.Policy;
+namespace StellaOps.Excititor.Policy;
public interface IVexPolicyDiagnostics
{
@@ -80,7 +80,7 @@ public sealed class VexPolicyDiagnostics : IVexPolicyDiagnostics
messages.Add($"Provider overrides active for: {string.Join(", ", overrides.Keys)}.");
}
- messages.Add("Refer to docs/ARCHITECTURE_VEXER.md for policy upgrade and diagnostics guidance.");
+ messages.Add("Refer to docs/ARCHITECTURE_EXCITITOR.md for policy upgrade and diagnostics guidance.");
return messages.ToImmutable();
}
diff --git a/src/StellaOps.Vexer.Policy/VexPolicyDigest.cs b/src/StellaOps.Excititor.Policy/VexPolicyDigest.cs
similarity index 94%
rename from src/StellaOps.Vexer.Policy/VexPolicyDigest.cs
rename to src/StellaOps.Excititor.Policy/VexPolicyDigest.cs
index fa1e0480..9d633b6e 100644
--- a/src/StellaOps.Vexer.Policy/VexPolicyDigest.cs
+++ b/src/StellaOps.Excititor.Policy/VexPolicyDigest.cs
@@ -1,9 +1,9 @@
using System.Globalization;
using System.Security.Cryptography;
using System.Text;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Policy;
+namespace StellaOps.Excititor.Policy;
internal static class VexPolicyDigest
{
diff --git a/src/StellaOps.Vexer.Policy/VexPolicyOptions.cs b/src/StellaOps.Excititor.Policy/VexPolicyOptions.cs
similarity index 93%
rename from src/StellaOps.Vexer.Policy/VexPolicyOptions.cs
rename to src/StellaOps.Excititor.Policy/VexPolicyOptions.cs
index 527661da..e2a91d0c 100644
--- a/src/StellaOps.Vexer.Policy/VexPolicyOptions.cs
+++ b/src/StellaOps.Excititor.Policy/VexPolicyOptions.cs
@@ -1,6 +1,6 @@
using System.Collections.Generic;
-namespace StellaOps.Vexer.Policy;
+namespace StellaOps.Excititor.Policy;
public sealed class VexPolicyOptions
{
diff --git a/src/StellaOps.Vexer.Policy/VexPolicyProcessing.cs b/src/StellaOps.Excititor.Policy/VexPolicyProcessing.cs
similarity index 98%
rename from src/StellaOps.Vexer.Policy/VexPolicyProcessing.cs
rename to src/StellaOps.Excititor.Policy/VexPolicyProcessing.cs
index 9b1455d3..3939ecf3 100644
--- a/src/StellaOps.Vexer.Policy/VexPolicyProcessing.cs
+++ b/src/StellaOps.Excititor.Policy/VexPolicyProcessing.cs
@@ -1,8 +1,8 @@
using System.Collections.Immutable;
using System.Globalization;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Policy;
+namespace StellaOps.Excititor.Policy;
internal static class VexPolicyProcessing
{
diff --git a/src/StellaOps.Vexer.Policy/VexPolicyTelemetry.cs b/src/StellaOps.Excititor.Policy/VexPolicyTelemetry.cs
similarity index 86%
rename from src/StellaOps.Vexer.Policy/VexPolicyTelemetry.cs
rename to src/StellaOps.Excititor.Policy/VexPolicyTelemetry.cs
index 4acb48d2..01faf87f 100644
--- a/src/StellaOps.Vexer.Policy/VexPolicyTelemetry.cs
+++ b/src/StellaOps.Excititor.Policy/VexPolicyTelemetry.cs
@@ -1,11 +1,11 @@
using System.Collections.Generic;
using System.Diagnostics.Metrics;
-namespace StellaOps.Vexer.Policy;
+namespace StellaOps.Excititor.Policy;
internal static class VexPolicyTelemetry
{
- private const string MeterName = "StellaOps.Vexer.Policy";
+ private const string MeterName = "StellaOps.Excititor.Policy";
private const string MeterVersion = "1.0.0";
private static readonly Meter Meter = new(MeterName, MeterVersion);
diff --git a/src/StellaOps.Vexer.Storage.Mongo.Tests/MongoVexCacheMaintenanceTests.cs b/src/StellaOps.Excititor.Storage.Mongo.Tests/MongoVexCacheMaintenanceTests.cs
similarity index 98%
rename from src/StellaOps.Vexer.Storage.Mongo.Tests/MongoVexCacheMaintenanceTests.cs
rename to src/StellaOps.Excititor.Storage.Mongo.Tests/MongoVexCacheMaintenanceTests.cs
index 2fcde859..38cb0b5c 100644
--- a/src/StellaOps.Vexer.Storage.Mongo.Tests/MongoVexCacheMaintenanceTests.cs
+++ b/src/StellaOps.Excititor.Storage.Mongo.Tests/MongoVexCacheMaintenanceTests.cs
@@ -4,7 +4,7 @@ using Mongo2Go;
using MongoDB.Bson;
using MongoDB.Driver;
-namespace StellaOps.Vexer.Storage.Mongo.Tests;
+namespace StellaOps.Excititor.Storage.Mongo.Tests;
public sealed class MongoVexCacheMaintenanceTests : IAsyncLifetime
{
diff --git a/src/StellaOps.Vexer.Storage.Mongo.Tests/MongoVexRepositoryTests.cs b/src/StellaOps.Excititor.Storage.Mongo.Tests/MongoVexRepositoryTests.cs
similarity index 98%
rename from src/StellaOps.Vexer.Storage.Mongo.Tests/MongoVexRepositoryTests.cs
rename to src/StellaOps.Excititor.Storage.Mongo.Tests/MongoVexRepositoryTests.cs
index fd773f01..522b0623 100644
--- a/src/StellaOps.Vexer.Storage.Mongo.Tests/MongoVexRepositoryTests.cs
+++ b/src/StellaOps.Excititor.Storage.Mongo.Tests/MongoVexRepositoryTests.cs
@@ -5,9 +5,9 @@ using Microsoft.Extensions.Options;
using Mongo2Go;
using MongoDB.Bson;
using MongoDB.Driver;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Storage.Mongo.Tests;
+namespace StellaOps.Excititor.Storage.Mongo.Tests;
public sealed class MongoVexRepositoryTests : IAsyncLifetime
{
diff --git a/src/StellaOps.Vexer.Storage.Mongo.Tests/MongoVexStoreMappingTests.cs b/src/StellaOps.Excititor.Storage.Mongo.Tests/MongoVexStoreMappingTests.cs
similarity index 98%
rename from src/StellaOps.Vexer.Storage.Mongo.Tests/MongoVexStoreMappingTests.cs
rename to src/StellaOps.Excititor.Storage.Mongo.Tests/MongoVexStoreMappingTests.cs
index ee085bd4..7277becc 100644
--- a/src/StellaOps.Vexer.Storage.Mongo.Tests/MongoVexStoreMappingTests.cs
+++ b/src/StellaOps.Excititor.Storage.Mongo.Tests/MongoVexStoreMappingTests.cs
@@ -2,9 +2,9 @@ using System.Globalization;
using Mongo2Go;
using MongoDB.Bson;
using MongoDB.Driver;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Storage.Mongo.Tests;
+namespace StellaOps.Excititor.Storage.Mongo.Tests;
public sealed class MongoVexStoreMappingTests : IAsyncLifetime
{
@@ -15,7 +15,7 @@ public sealed class MongoVexStoreMappingTests : IAsyncLifetime
{
_runner = MongoDbRunner.Start();
var client = new MongoClient(_runner.ConnectionString);
- _database = client.GetDatabase("vexer-storage-mapping-tests");
+ _database = client.GetDatabase("excititor-storage-mapping-tests");
VexMongoMappingRegistry.Register();
}
diff --git a/src/StellaOps.Vexer.Storage.Mongo.Tests/StellaOps.Vexer.Storage.Mongo.Tests.csproj b/src/StellaOps.Excititor.Storage.Mongo.Tests/StellaOps.Excititor.Storage.Mongo.Tests.csproj
similarity index 58%
rename from src/StellaOps.Vexer.Storage.Mongo.Tests/StellaOps.Vexer.Storage.Mongo.Tests.csproj
rename to src/StellaOps.Excititor.Storage.Mongo.Tests/StellaOps.Excititor.Storage.Mongo.Tests.csproj
index e7bf25c6..e8bd0e17 100644
--- a/src/StellaOps.Vexer.Storage.Mongo.Tests/StellaOps.Vexer.Storage.Mongo.Tests.csproj
+++ b/src/StellaOps.Excititor.Storage.Mongo.Tests/StellaOps.Excititor.Storage.Mongo.Tests.csproj
@@ -7,9 +7,9 @@
true
-
-
-
+
+
+
diff --git a/src/StellaOps.Vexer.Storage.Mongo.Tests/VexMongoMigrationRunnerTests.cs b/src/StellaOps.Excititor.Storage.Mongo.Tests/VexMongoMigrationRunnerTests.cs
similarity index 93%
rename from src/StellaOps.Vexer.Storage.Mongo.Tests/VexMongoMigrationRunnerTests.cs
rename to src/StellaOps.Excititor.Storage.Mongo.Tests/VexMongoMigrationRunnerTests.cs
index cb6ca681..08e98dec 100644
--- a/src/StellaOps.Vexer.Storage.Mongo.Tests/VexMongoMigrationRunnerTests.cs
+++ b/src/StellaOps.Excititor.Storage.Mongo.Tests/VexMongoMigrationRunnerTests.cs
@@ -4,9 +4,9 @@ using System.Threading.Tasks;
using Microsoft.Extensions.Logging.Abstractions;
using Mongo2Go;
using MongoDB.Driver;
-using StellaOps.Vexer.Storage.Mongo.Migrations;
+using StellaOps.Excititor.Storage.Mongo.Migrations;
-namespace StellaOps.Vexer.Storage.Mongo.Tests;
+namespace StellaOps.Excititor.Storage.Mongo.Tests;
public sealed class VexMongoMigrationRunnerTests : IAsyncLifetime
{
@@ -17,7 +17,7 @@ public sealed class VexMongoMigrationRunnerTests : IAsyncLifetime
{
_runner = MongoDbRunner.Start();
var client = new MongoClient(_runner.ConnectionString);
- _database = client.GetDatabase("vexer-migrations-tests");
+ _database = client.GetDatabase("excititor-migrations-tests");
}
[Fact]
diff --git a/src/StellaOps.Vexer.Storage.Mongo/AGENTS.md b/src/StellaOps.Excititor.Storage.Mongo/AGENTS.md
similarity index 89%
rename from src/StellaOps.Vexer.Storage.Mongo/AGENTS.md
rename to src/StellaOps.Excititor.Storage.Mongo/AGENTS.md
index 45b4988b..e5f3b51c 100644
--- a/src/StellaOps.Vexer.Storage.Mongo/AGENTS.md
+++ b/src/StellaOps.Excititor.Storage.Mongo/AGENTS.md
@@ -1,6 +1,6 @@
# AGENTS
## Role
-MongoDB persistence layer for Vexer raw documents, claims, consensus snapshots, exports, and cache metadata.
+MongoDB persistence layer for Excititor raw documents, claims, consensus snapshots, exports, and cache metadata.
## Scope
- Collection schemas, Bson class maps, repositories, and transactional write patterns for ingest/export flows.
- GridFS integration for raw source documents and artifact metadata persistence.
@@ -21,4 +21,4 @@ Out: domain modeling (Core), policy evaluation (Policy), HTTP surfaces (WebServi
- Expose health metrics (counts, queue backlog) and publish to OpenTelemetry when enabled.
- Ensure no raw secret material is logged; mask tokens/URLs in diagnostics.
## Tests
-- Integration fixtures (Mongo runner) and schema regression tests will reside in `../StellaOps.Vexer.Storage.Mongo.Tests`.
+- Integration fixtures (Mongo runner) and schema regression tests will reside in `../StellaOps.Excititor.Storage.Mongo.Tests`.
diff --git a/src/StellaOps.Vexer.Storage.Mongo/IVexRawStore.cs b/src/StellaOps.Excititor.Storage.Mongo/IVexRawStore.cs
similarity index 86%
rename from src/StellaOps.Vexer.Storage.Mongo/IVexRawStore.cs
rename to src/StellaOps.Excititor.Storage.Mongo/IVexRawStore.cs
index ecf3da8e..b3258aef 100644
--- a/src/StellaOps.Vexer.Storage.Mongo/IVexRawStore.cs
+++ b/src/StellaOps.Excititor.Storage.Mongo/IVexRawStore.cs
@@ -1,8 +1,8 @@
using System.Threading;
using System.Threading.Tasks;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Storage.Mongo;
+namespace StellaOps.Excititor.Storage.Mongo;
public interface IVexRawStore : IVexRawDocumentSink
{
diff --git a/src/StellaOps.Vexer.Storage.Mongo/IVexStorageContracts.cs b/src/StellaOps.Excititor.Storage.Mongo/IVexStorageContracts.cs
similarity index 95%
rename from src/StellaOps.Vexer.Storage.Mongo/IVexStorageContracts.cs
rename to src/StellaOps.Excititor.Storage.Mongo/IVexStorageContracts.cs
index 7009f034..58a61257 100644
--- a/src/StellaOps.Vexer.Storage.Mongo/IVexStorageContracts.cs
+++ b/src/StellaOps.Excititor.Storage.Mongo/IVexStorageContracts.cs
@@ -3,9 +3,9 @@ using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading;
using System.Threading.Tasks;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Storage.Mongo;
+namespace StellaOps.Excititor.Storage.Mongo;
public interface IVexProviderStore
{
diff --git a/src/StellaOps.Vexer.Storage.Mongo/Migrations/IVexMongoMigration.cs b/src/StellaOps.Excititor.Storage.Mongo/Migrations/IVexMongoMigration.cs
similarity index 80%
rename from src/StellaOps.Vexer.Storage.Mongo/Migrations/IVexMongoMigration.cs
rename to src/StellaOps.Excititor.Storage.Mongo/Migrations/IVexMongoMigration.cs
index 612442f6..7d642a9f 100644
--- a/src/StellaOps.Vexer.Storage.Mongo/Migrations/IVexMongoMigration.cs
+++ b/src/StellaOps.Excititor.Storage.Mongo/Migrations/IVexMongoMigration.cs
@@ -2,7 +2,7 @@ using System.Threading;
using System.Threading.Tasks;
using MongoDB.Driver;
-namespace StellaOps.Vexer.Storage.Mongo.Migrations;
+namespace StellaOps.Excititor.Storage.Mongo.Migrations;
internal interface IVexMongoMigration
{
diff --git a/src/StellaOps.Vexer.Storage.Mongo/Migrations/VexInitialIndexMigration.cs b/src/StellaOps.Excititor.Storage.Mongo/Migrations/VexInitialIndexMigration.cs
similarity index 98%
rename from src/StellaOps.Vexer.Storage.Mongo/Migrations/VexInitialIndexMigration.cs
rename to src/StellaOps.Excititor.Storage.Mongo/Migrations/VexInitialIndexMigration.cs
index 34c916cf..06e4a425 100644
--- a/src/StellaOps.Vexer.Storage.Mongo/Migrations/VexInitialIndexMigration.cs
+++ b/src/StellaOps.Excititor.Storage.Mongo/Migrations/VexInitialIndexMigration.cs
@@ -2,7 +2,7 @@ using System.Threading;
using System.Threading.Tasks;
using MongoDB.Driver;
-namespace StellaOps.Vexer.Storage.Mongo.Migrations;
+namespace StellaOps.Excititor.Storage.Mongo.Migrations;
internal sealed class VexInitialIndexMigration : IVexMongoMigration
{
diff --git a/src/StellaOps.Vexer.Storage.Mongo/Migrations/VexMigrationRecord.cs b/src/StellaOps.Excititor.Storage.Mongo/Migrations/VexMigrationRecord.cs
similarity index 88%
rename from src/StellaOps.Vexer.Storage.Mongo/Migrations/VexMigrationRecord.cs
rename to src/StellaOps.Excititor.Storage.Mongo/Migrations/VexMigrationRecord.cs
index 9c392bdb..4e31f6cf 100644
--- a/src/StellaOps.Vexer.Storage.Mongo/Migrations/VexMigrationRecord.cs
+++ b/src/StellaOps.Excititor.Storage.Mongo/Migrations/VexMigrationRecord.cs
@@ -1,7 +1,7 @@
using System;
using MongoDB.Bson.Serialization.Attributes;
-namespace StellaOps.Vexer.Storage.Mongo.Migrations;
+namespace StellaOps.Excititor.Storage.Mongo.Migrations;
internal sealed class VexMigrationRecord
{
diff --git a/src/StellaOps.Vexer.Storage.Mongo/Migrations/VexMongoMigrationHostedService.cs b/src/StellaOps.Excititor.Storage.Mongo/Migrations/VexMongoMigrationHostedService.cs
similarity index 91%
rename from src/StellaOps.Vexer.Storage.Mongo/Migrations/VexMongoMigrationHostedService.cs
rename to src/StellaOps.Excititor.Storage.Mongo/Migrations/VexMongoMigrationHostedService.cs
index 1274bb80..0920e1cd 100644
--- a/src/StellaOps.Vexer.Storage.Mongo/Migrations/VexMongoMigrationHostedService.cs
+++ b/src/StellaOps.Excititor.Storage.Mongo/Migrations/VexMongoMigrationHostedService.cs
@@ -2,7 +2,7 @@ using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
-namespace StellaOps.Vexer.Storage.Mongo.Migrations;
+namespace StellaOps.Excititor.Storage.Mongo.Migrations;
internal sealed class VexMongoMigrationHostedService : IHostedService
{
diff --git a/src/StellaOps.Vexer.Storage.Mongo/Migrations/VexMongoMigrationRunner.cs b/src/StellaOps.Excititor.Storage.Mongo/Migrations/VexMongoMigrationRunner.cs
similarity index 90%
rename from src/StellaOps.Vexer.Storage.Mongo/Migrations/VexMongoMigrationRunner.cs
rename to src/StellaOps.Excititor.Storage.Mongo/Migrations/VexMongoMigrationRunner.cs
index 2cff832d..beca9c68 100644
--- a/src/StellaOps.Vexer.Storage.Mongo/Migrations/VexMongoMigrationRunner.cs
+++ b/src/StellaOps.Excititor.Storage.Mongo/Migrations/VexMongoMigrationRunner.cs
@@ -4,7 +4,7 @@ using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using MongoDB.Driver;
-namespace StellaOps.Vexer.Storage.Mongo.Migrations;
+namespace StellaOps.Excititor.Storage.Mongo.Migrations;
internal sealed class VexMongoMigrationRunner
{
@@ -43,12 +43,12 @@ internal sealed class VexMongoMigrationRunner
continue;
}
- _logger.LogInformation("Applying Vexer Mongo migration {MigrationId}", migration.Id);
+ _logger.LogInformation("Applying Excititor Mongo migration {MigrationId}", migration.Id);
await migration.ExecuteAsync(_database, cancellationToken).ConfigureAwait(false);
var record = new VexMigrationRecord(migration.Id, DateTimeOffset.UtcNow);
await migrationsCollection.InsertOneAsync(record, cancellationToken: cancellationToken).ConfigureAwait(false);
- _logger.LogInformation("Completed Vexer Mongo migration {MigrationId}", migration.Id);
+ _logger.LogInformation("Completed Excititor Mongo migration {MigrationId}", migration.Id);
}
}
diff --git a/src/StellaOps.Vexer.Storage.Mongo/MongoVexCacheIndex.cs b/src/StellaOps.Excititor.Storage.Mongo/MongoVexCacheIndex.cs
similarity index 95%
rename from src/StellaOps.Vexer.Storage.Mongo/MongoVexCacheIndex.cs
rename to src/StellaOps.Excititor.Storage.Mongo/MongoVexCacheIndex.cs
index 8ea4fa96..2a937fea 100644
--- a/src/StellaOps.Vexer.Storage.Mongo/MongoVexCacheIndex.cs
+++ b/src/StellaOps.Excititor.Storage.Mongo/MongoVexCacheIndex.cs
@@ -3,9 +3,9 @@ using System.Threading;
using System.Threading.Tasks;
using MongoDB.Bson;
using MongoDB.Driver;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Storage.Mongo;
+namespace StellaOps.Excititor.Storage.Mongo;
public sealed class MongoVexCacheIndex : IVexCacheIndex
{
diff --git a/src/StellaOps.Vexer.Storage.Mongo/MongoVexCacheMaintenance.cs b/src/StellaOps.Excititor.Storage.Mongo/MongoVexCacheMaintenance.cs
similarity index 98%
rename from src/StellaOps.Vexer.Storage.Mongo/MongoVexCacheMaintenance.cs
rename to src/StellaOps.Excititor.Storage.Mongo/MongoVexCacheMaintenance.cs
index 77545f37..1ff69f8d 100644
--- a/src/StellaOps.Vexer.Storage.Mongo/MongoVexCacheMaintenance.cs
+++ b/src/StellaOps.Excititor.Storage.Mongo/MongoVexCacheMaintenance.cs
@@ -2,7 +2,7 @@ using System.Collections.Generic;
using Microsoft.Extensions.Logging;
using MongoDB.Driver;
-namespace StellaOps.Vexer.Storage.Mongo;
+namespace StellaOps.Excititor.Storage.Mongo;
internal sealed class MongoVexCacheMaintenance : IVexCacheMaintenance
{
diff --git a/src/StellaOps.Vexer.Storage.Mongo/MongoVexConnectorStateRepository.cs b/src/StellaOps.Excititor.Storage.Mongo/MongoVexConnectorStateRepository.cs
similarity index 97%
rename from src/StellaOps.Vexer.Storage.Mongo/MongoVexConnectorStateRepository.cs
rename to src/StellaOps.Excititor.Storage.Mongo/MongoVexConnectorStateRepository.cs
index b3dda181..c45aa897 100644
--- a/src/StellaOps.Vexer.Storage.Mongo/MongoVexConnectorStateRepository.cs
+++ b/src/StellaOps.Excititor.Storage.Mongo/MongoVexConnectorStateRepository.cs
@@ -5,7 +5,7 @@ using System.Threading;
using System.Threading.Tasks;
using MongoDB.Driver;
-namespace StellaOps.Vexer.Storage.Mongo;
+namespace StellaOps.Excititor.Storage.Mongo;
public sealed class MongoVexConnectorStateRepository : IVexConnectorStateRepository
{
diff --git a/src/StellaOps.Vexer.Storage.Mongo/MongoVexConsensusStore.cs b/src/StellaOps.Excititor.Storage.Mongo/MongoVexConsensusStore.cs
similarity index 96%
rename from src/StellaOps.Vexer.Storage.Mongo/MongoVexConsensusStore.cs
rename to src/StellaOps.Excititor.Storage.Mongo/MongoVexConsensusStore.cs
index 684de965..5a866c3c 100644
--- a/src/StellaOps.Vexer.Storage.Mongo/MongoVexConsensusStore.cs
+++ b/src/StellaOps.Excititor.Storage.Mongo/MongoVexConsensusStore.cs
@@ -2,9 +2,9 @@ using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using MongoDB.Driver;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Storage.Mongo;
+namespace StellaOps.Excititor.Storage.Mongo;
public sealed class MongoVexConsensusStore : IVexConsensusStore
{
diff --git a/src/StellaOps.Vexer.Storage.Mongo/MongoVexExportStore.cs b/src/StellaOps.Excititor.Storage.Mongo/MongoVexExportStore.cs
similarity index 98%
rename from src/StellaOps.Vexer.Storage.Mongo/MongoVexExportStore.cs
rename to src/StellaOps.Excititor.Storage.Mongo/MongoVexExportStore.cs
index 1be1b47c..0ac1f210 100644
--- a/src/StellaOps.Vexer.Storage.Mongo/MongoVexExportStore.cs
+++ b/src/StellaOps.Excititor.Storage.Mongo/MongoVexExportStore.cs
@@ -5,9 +5,9 @@ using System.Threading.Tasks;
using Microsoft.Extensions.Options;
using MongoDB.Driver;
using MongoDB.Driver.Core.Clusters;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Storage.Mongo;
+namespace StellaOps.Excititor.Storage.Mongo;
public sealed class MongoVexExportStore : IVexExportStore
{
diff --git a/src/StellaOps.Vexer.Storage.Mongo/MongoVexProviderStore.cs b/src/StellaOps.Excititor.Storage.Mongo/MongoVexProviderStore.cs
similarity index 95%
rename from src/StellaOps.Vexer.Storage.Mongo/MongoVexProviderStore.cs
rename to src/StellaOps.Excititor.Storage.Mongo/MongoVexProviderStore.cs
index b551b820..ceb42488 100644
--- a/src/StellaOps.Vexer.Storage.Mongo/MongoVexProviderStore.cs
+++ b/src/StellaOps.Excititor.Storage.Mongo/MongoVexProviderStore.cs
@@ -2,9 +2,9 @@ using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using MongoDB.Driver;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Storage.Mongo;
+namespace StellaOps.Excititor.Storage.Mongo;
public sealed class MongoVexProviderStore : IVexProviderStore
{
diff --git a/src/StellaOps.Vexer.Storage.Mongo/MongoVexRawStore.cs b/src/StellaOps.Excititor.Storage.Mongo/MongoVexRawStore.cs
similarity index 98%
rename from src/StellaOps.Vexer.Storage.Mongo/MongoVexRawStore.cs
rename to src/StellaOps.Excititor.Storage.Mongo/MongoVexRawStore.cs
index 92a3de3f..57dbc197 100644
--- a/src/StellaOps.Vexer.Storage.Mongo/MongoVexRawStore.cs
+++ b/src/StellaOps.Excititor.Storage.Mongo/MongoVexRawStore.cs
@@ -8,9 +8,9 @@ using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.Core.Clusters;
using MongoDB.Driver.GridFS;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Storage.Mongo;
+namespace StellaOps.Excititor.Storage.Mongo;
public sealed class MongoVexRawStore : IVexRawStore
{
diff --git a/src/StellaOps.Excititor.Storage.Mongo/Properties/AssemblyInfo.cs b/src/StellaOps.Excititor.Storage.Mongo/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..efa6e779
--- /dev/null
+++ b/src/StellaOps.Excititor.Storage.Mongo/Properties/AssemblyInfo.cs
@@ -0,0 +1,3 @@
+using System.Runtime.CompilerServices;
+
+[assembly: InternalsVisibleTo("StellaOps.Excititor.Storage.Mongo.Tests")]
diff --git a/src/StellaOps.Vexer.Storage.Mongo/ServiceCollectionExtensions.cs b/src/StellaOps.Excititor.Storage.Mongo/ServiceCollectionExtensions.cs
similarity index 83%
rename from src/StellaOps.Vexer.Storage.Mongo/ServiceCollectionExtensions.cs
rename to src/StellaOps.Excititor.Storage.Mongo/ServiceCollectionExtensions.cs
index 984bcdc3..687cac2b 100644
--- a/src/StellaOps.Vexer.Storage.Mongo/ServiceCollectionExtensions.cs
+++ b/src/StellaOps.Excititor.Storage.Mongo/ServiceCollectionExtensions.cs
@@ -1,12 +1,12 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Storage.Mongo.Migrations;
+using StellaOps.Excititor.Storage.Mongo.Migrations;
-namespace StellaOps.Vexer.Storage.Mongo;
+namespace StellaOps.Excititor.Storage.Mongo;
public static class VexMongoServiceCollectionExtensions
{
- public static IServiceCollection AddVexerMongoStorage(this IServiceCollection services)
+ public static IServiceCollection AddExcititorMongoStorage(this IServiceCollection services)
{
services.AddOptions();
diff --git a/src/StellaOps.Vexer.Storage.Mongo/StellaOps.Vexer.Storage.Mongo.csproj b/src/StellaOps.Excititor.Storage.Mongo/StellaOps.Excititor.Storage.Mongo.csproj
similarity index 88%
rename from src/StellaOps.Vexer.Storage.Mongo/StellaOps.Vexer.Storage.Mongo.csproj
rename to src/StellaOps.Excititor.Storage.Mongo/StellaOps.Excititor.Storage.Mongo.csproj
index 3a50e0d9..9008505a 100644
--- a/src/StellaOps.Vexer.Storage.Mongo/StellaOps.Vexer.Storage.Mongo.csproj
+++ b/src/StellaOps.Excititor.Storage.Mongo/StellaOps.Excititor.Storage.Mongo.csproj
@@ -14,6 +14,6 @@
-
+
diff --git a/src/StellaOps.Excititor.Storage.Mongo/TASKS.md b/src/StellaOps.Excititor.Storage.Mongo/TASKS.md
new file mode 100644
index 00000000..96311557
--- /dev/null
+++ b/src/StellaOps.Excititor.Storage.Mongo/TASKS.md
@@ -0,0 +1,10 @@
+If you are working on this file you need to read docs/ARCHITECTURE_EXCITITOR.md and ./AGENTS.md).
+# TASKS
+| Task | Owner(s) | Depends on | Notes |
+|---|---|---|---|
+|EXCITITOR-STORAGE-01-001 – Collection schemas & class maps|Team Excititor Storage|EXCITITOR-CORE-01-001|DONE (2025-10-15) – Added Mongo mapping registry with raw/export entities and service registration groundwork.|
+|EXCITITOR-STORAGE-01-002 – Migrations & indices bootstrap|Team Excititor Storage|EXCITITOR-STORAGE-01-001|**DONE (2025-10-16)** – Add bootstrapper creating indices (claims by vulnId/product, exports by querySignature, etc.) and migrations for existing deployments.
2025-10-16: Introduced migration runner + hosted service, initial index migration covers raw/providers/consensus/exports/cache, and tests use Mongo2Go to verify execution.|
+|EXCITITOR-STORAGE-01-003 – Repository layer & transactional flows|Team Excititor Storage|EXCITITOR-STORAGE-01-001|**DONE (2025-10-16)** – Added GridFS-backed raw store with transactional upserts (including fallback for non-replicaset Mongo), export/cache repository coordination, and coverage verifying cache TTL + GridFS round-trips.|
+|EXCITITOR-STORAGE-01-004 – Provider/consensus/cache mappings|Team Excititor Storage|EXCITITOR-STORAGE-01-001|**DONE (2025-10-16)** – Registered MongoDB class maps for provider/consensus/cache records with forward-compatible field handling and added coverage ensuring GridFS-linked cache entries round-trip cleanly.|
+|EXCITITOR-STORAGE-02-001 – Statement events & scoring signals|Team Excititor Storage|EXCITITOR-CORE-02-001|TODO – Add immutable `vex.statements` collection, extend consensus documents with severity/KEV/EPSS fields, build indices for `policyRevisionId`/`generatedAt`, and script migrations/backfill guidance for Phase 1 rollout.|
+|EXCITITOR-STORAGE-MONGO-08-001 – Session + causal consistency hardening|Team Excititor Storage|EXCITITOR-STORAGE-01-003|TODO – Register Mongo client/database with majority read/write concerns, expose scoped session helper enabling causal consistency, thread session handles through raw/export/consensus/cache stores (including GridFS reads), and extend integration tests to verify read-your-write semantics during replica-set failover.|
diff --git a/src/StellaOps.Vexer.Storage.Mongo/VexMongoMappingRegistry.cs b/src/StellaOps.Excititor.Storage.Mongo/VexMongoMappingRegistry.cs
similarity index 97%
rename from src/StellaOps.Vexer.Storage.Mongo/VexMongoMappingRegistry.cs
rename to src/StellaOps.Excititor.Storage.Mongo/VexMongoMappingRegistry.cs
index a36abdc5..1f92595a 100644
--- a/src/StellaOps.Vexer.Storage.Mongo/VexMongoMappingRegistry.cs
+++ b/src/StellaOps.Excititor.Storage.Mongo/VexMongoMappingRegistry.cs
@@ -2,7 +2,7 @@ using System.Threading;
using MongoDB.Bson.Serialization;
using MongoDB.Bson.Serialization.Serializers;
-namespace StellaOps.Vexer.Storage.Mongo;
+namespace StellaOps.Excititor.Storage.Mongo;
public static class VexMongoMappingRegistry
{
diff --git a/src/StellaOps.Vexer.Storage.Mongo/VexMongoModels.cs b/src/StellaOps.Excititor.Storage.Mongo/VexMongoModels.cs
similarity index 99%
rename from src/StellaOps.Vexer.Storage.Mongo/VexMongoModels.cs
rename to src/StellaOps.Excititor.Storage.Mongo/VexMongoModels.cs
index c9f61f48..f6ac4ec7 100644
--- a/src/StellaOps.Vexer.Storage.Mongo/VexMongoModels.cs
+++ b/src/StellaOps.Excititor.Storage.Mongo/VexMongoModels.cs
@@ -5,9 +5,9 @@ using System.Globalization;
using System.Linq;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
-using StellaOps.Vexer.Core;
+using StellaOps.Excititor.Core;
-namespace StellaOps.Vexer.Storage.Mongo;
+namespace StellaOps.Excititor.Storage.Mongo;
[BsonIgnoreExtraElements]
internal sealed class VexRawDocumentRecord
diff --git a/src/StellaOps.Vexer.Storage.Mongo/VexMongoStorageOptions.cs b/src/StellaOps.Excititor.Storage.Mongo/VexMongoStorageOptions.cs
similarity index 92%
rename from src/StellaOps.Vexer.Storage.Mongo/VexMongoStorageOptions.cs
rename to src/StellaOps.Excititor.Storage.Mongo/VexMongoStorageOptions.cs
index ae0c7aae..4f13affe 100644
--- a/src/StellaOps.Vexer.Storage.Mongo/VexMongoStorageOptions.cs
+++ b/src/StellaOps.Excititor.Storage.Mongo/VexMongoStorageOptions.cs
@@ -2,10 +2,10 @@ using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
-namespace StellaOps.Vexer.Storage.Mongo;
+namespace StellaOps.Excititor.Storage.Mongo;
///
-/// Configuration controlling Mongo-backed storage for Vexer repositories.
+/// Configuration controlling Mongo-backed storage for Excititor repositories.
///
public sealed class VexMongoStorageOptions : IValidatableObject
{
diff --git a/src/StellaOps.Vexer.WebService.Tests/StatusEndpointTests.cs b/src/StellaOps.Excititor.WebService.Tests/StatusEndpointTests.cs
similarity index 83%
rename from src/StellaOps.Vexer.WebService.Tests/StatusEndpointTests.cs
rename to src/StellaOps.Excititor.WebService.Tests/StatusEndpointTests.cs
index 2463dfe6..977204a3 100644
--- a/src/StellaOps.Vexer.WebService.Tests/StatusEndpointTests.cs
+++ b/src/StellaOps.Excititor.WebService.Tests/StatusEndpointTests.cs
@@ -8,13 +8,13 @@ using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Mongo2Go;
using MongoDB.Driver;
-using StellaOps.Vexer.Attestation.Signing;
-using StellaOps.Vexer.Policy;
-using StellaOps.Vexer.Core;
-using StellaOps.Vexer.Export;
-using StellaOps.Vexer.WebService;
+using StellaOps.Excititor.Attestation.Signing;
+using StellaOps.Excititor.Policy;
+using StellaOps.Excititor.Core;
+using StellaOps.Excititor.Export;
+using StellaOps.Excititor.WebService;
-namespace StellaOps.Vexer.WebService.Tests;
+namespace StellaOps.Excititor.WebService.Tests;
public sealed class StatusEndpointTests : IClassFixture>, IDisposable
{
@@ -28,13 +28,13 @@ public sealed class StatusEndpointTests : IClassFixture
{
- var rootPath = Path.Combine(Path.GetTempPath(), "vexer-offline-tests");
+ var rootPath = Path.Combine(Path.GetTempPath(), "excititor-offline-tests");
Directory.CreateDirectory(rootPath);
var settings = new Dictionary
{
- ["Vexer:Storage:Mongo:RawBucketName"] = "vex.raw",
- ["Vexer:Storage:Mongo:GridFsInlineThresholdBytes"] = "256",
- ["Vexer:Artifacts:FileSystem:RootPath"] = rootPath,
+ ["Excititor:Storage:Mongo:RawBucketName"] = "vex.raw",
+ ["Excititor:Storage:Mongo:GridFsInlineThresholdBytes"] = "256",
+ ["Excititor:Artifacts:FileSystem:RootPath"] = rootPath,
};
config.AddInMemoryCollection(settings!);
});
@@ -42,7 +42,7 @@ public sealed class StatusEndpointTests : IClassFixture
{
services.AddSingleton(_ => new MongoClient(_runner.ConnectionString));
- services.AddSingleton(provider => provider.GetRequiredService().GetDatabase("vexer-web-tests"));
+ services.AddSingleton(provider => provider.GetRequiredService().GetDatabase("excititor-web-tests"));
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
@@ -54,7 +54,7 @@ public sealed class StatusEndpointTests : IClassFixture
-
+
diff --git a/src/StellaOps.Vexer.WebService/AGENTS.md b/src/StellaOps.Excititor.WebService/AGENTS.md
similarity index 77%
rename from src/StellaOps.Vexer.WebService/AGENTS.md
rename to src/StellaOps.Excititor.WebService/AGENTS.md
index d5f12802..04d883aa 100644
--- a/src/StellaOps.Vexer.WebService/AGENTS.md
+++ b/src/StellaOps.Excititor.WebService/AGENTS.md
@@ -1,13 +1,13 @@
# AGENTS
## Role
-ASP.NET Minimal API surface for Vexer ingest, provider administration, reconciliation, export, and verification flows.
+ASP.NET Minimal API surface for Excititor ingest, provider administration, reconciliation, export, and verification flows.
## Scope
- Program bootstrap, DI wiring for connectors/normalizers/export/attestation/policy/storage.
-- HTTP endpoints `/vexer/*` with authentication, authorization scopes, request validation, and deterministic responses.
+- HTTP endpoints `/excititor/*` with authentication, authorization scopes, request validation, and deterministic responses.
- Job orchestration bridges for Worker hand-off (when co-hosted) and offline-friendly configuration.
- Observability (structured logs, metrics, tracing) aligned with StellaOps conventions.
## Participants
-- StellaOps.Cli sends `vexer` verbs to this service via token-authenticated HTTPS.
+- StellaOps.Cli sends `excititor` verbs to this service via token-authenticated HTTPS.
- Worker receives scheduled jobs and uses shared infrastructure via common DI extensions.
- Authority service provides tokens; WebService enforces scopes before executing operations.
## Interfaces & contracts
@@ -22,4 +22,4 @@ Out: long-running ingestion loops (Worker), export rendering (Export module), co
- Emit structured events for ingest runs, export invocations, attestation references.
- Provide built-in counters/histograms for latency and throughput.
## Tests
-- Minimal API contract/unit tests and integration harness will live in `../StellaOps.Vexer.WebService.Tests`.
+- Minimal API contract/unit tests and integration harness will live in `../StellaOps.Excititor.WebService.Tests`.
diff --git a/src/StellaOps.Vexer.WebService/Program.cs b/src/StellaOps.Excititor.WebService/Program.cs
similarity index 71%
rename from src/StellaOps.Vexer.WebService/Program.cs
rename to src/StellaOps.Excititor.WebService/Program.cs
index cef66a25..a4990bd5 100644
--- a/src/StellaOps.Vexer.WebService/Program.cs
+++ b/src/StellaOps.Excititor.WebService/Program.cs
@@ -1,36 +1,36 @@
using System.Collections.Generic;
using System.Linq;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Attestation.Extensions;
-using StellaOps.Vexer.Attestation;
-using StellaOps.Vexer.Attestation.Transparency;
-using StellaOps.Vexer.ArtifactStores.S3.Extensions;
-using StellaOps.Vexer.Export;
-using StellaOps.Vexer.Storage.Mongo;
-using StellaOps.Vexer.Connectors.RedHat.CSAF.DependencyInjection;
+using StellaOps.Excititor.Attestation.Extensions;
+using StellaOps.Excititor.Attestation;
+using StellaOps.Excititor.Attestation.Transparency;
+using StellaOps.Excititor.ArtifactStores.S3.Extensions;
+using StellaOps.Excititor.Export;
+using StellaOps.Excititor.Storage.Mongo;
+using StellaOps.Excititor.Connectors.RedHat.CSAF.DependencyInjection;
var builder = WebApplication.CreateBuilder(args);
var configuration = builder.Configuration;
var services = builder.Services;
services.AddOptions()
- .Bind(configuration.GetSection("Vexer:Storage:Mongo"))
+ .Bind(configuration.GetSection("Excititor:Storage:Mongo"))
.ValidateOnStart();
-services.AddVexerMongoStorage();
+services.AddExcititorMongoStorage();
services.AddVexExportEngine();
services.AddVexExportCacheServices();
services.AddVexAttestation();
-services.Configure(configuration.GetSection("Vexer:Attestation:Client"));
+services.Configure(configuration.GetSection("Excititor:Attestation:Client"));
services.AddRedHatCsafConnector();
-var rekorSection = configuration.GetSection("Vexer:Attestation:Rekor");
+var rekorSection = configuration.GetSection("Excititor:Attestation:Rekor");
if (rekorSection.Exists())
{
services.AddVexRekorClient(opts => rekorSection.Bind(opts));
}
-var fileSystemSection = configuration.GetSection("Vexer:Artifacts:FileSystem");
+var fileSystemSection = configuration.GetSection("Excititor:Artifacts:FileSystem");
if (fileSystemSection.Exists())
{
services.AddVexFileSystemArtifactStore(opts => fileSystemSection.Bind(opts));
@@ -40,7 +40,7 @@ else
services.AddVexFileSystemArtifactStore(_ => { });
}
-var s3Section = configuration.GetSection("Vexer:Artifacts:S3");
+var s3Section = configuration.GetSection("Excititor:Artifacts:S3");
if (s3Section.Exists())
{
services.AddVexS3ArtifactClient(opts => s3Section.GetSection("Client").Bind(opts));
@@ -55,7 +55,7 @@ if (s3Section.Exists())
});
}
-var offlineSection = configuration.GetSection("Vexer:Artifacts:OfflineBundle");
+var offlineSection = configuration.GetSection("Excititor:Artifacts:OfflineBundle");
if (offlineSection.Exists())
{
services.AddVexOfflineBundleArtifactStore(opts => offlineSection.Bind(opts));
@@ -67,7 +67,7 @@ services.AddSingleton(TimeProvider.System);
var app = builder.Build();
-app.MapGet("/vexer/status", async (HttpContext context,
+app.MapGet("/excititor/status", async (HttpContext context,
IEnumerable artifactStores,
IOptions mongoOptions,
TimeProvider timeProvider) =>
@@ -82,7 +82,7 @@ app.MapGet("/vexer/status", async (HttpContext context,
await System.Text.Json.JsonSerializer.SerializeAsync(context.Response.Body, payload);
});
-app.MapHealthChecks("/vexer/health");
+app.MapHealthChecks("/excititor/health");
app.Run();
diff --git a/src/StellaOps.Excititor.WebService/StellaOps.Excititor.WebService.csproj b/src/StellaOps.Excititor.WebService/StellaOps.Excititor.WebService.csproj
new file mode 100644
index 00000000..3c64af7d
--- /dev/null
+++ b/src/StellaOps.Excititor.WebService/StellaOps.Excititor.WebService.csproj
@@ -0,0 +1,16 @@
+
+
+ net10.0
+ preview
+ enable
+ enable
+ true
+
+
+
+
+
+
+
+
+
diff --git a/src/StellaOps.Excititor.WebService/TASKS.md b/src/StellaOps.Excititor.WebService/TASKS.md
new file mode 100644
index 00000000..2b5d3486
--- /dev/null
+++ b/src/StellaOps.Excititor.WebService/TASKS.md
@@ -0,0 +1,8 @@
+If you are working on this file you need to read docs/ARCHITECTURE_EXCITITOR.md and ./AGENTS.md).
+# TASKS
+| Task | Owner(s) | Depends on | Notes |
+|---|---|---|---|
+|EXCITITOR-WEB-01-001 – Minimal API bootstrap & DI|Team Excititor WebService|EXCITITOR-CORE-01-003, EXCITITOR-STORAGE-01-003|**DONE (2025-10-17)** – Minimal API host composes storage/export/attestation/artifact stores, binds Mongo/attestation options, and exposes `/excititor/status` + health endpoints with regression coverage in `StatusEndpointTests`.|
+|EXCITITOR-WEB-01-002 – Ingest & reconcile endpoints|Team Excititor WebService|EXCITITOR-WEB-01-001|TODO – Implement `/excititor/init`, `/excititor/ingest/run`, `/excititor/ingest/resume`, `/excititor/reconcile` with token scope enforcement and structured run telemetry.|
+|EXCITITOR-WEB-01-003 – Export & verify endpoints|Team Excititor WebService|EXCITITOR-WEB-01-001, EXCITITOR-EXPORT-01-001, EXCITITOR-ATTEST-01-001|TODO – Add `/excititor/export`, `/excititor/export/{id}`, `/excititor/export/{id}/download`, `/excititor/verify`, returning artifact + attestation metadata with cache awareness.|
+|EXCITITOR-WEB-01-004 – Resolve API & signed responses|Team Excititor WebService|EXCITITOR-WEB-01-001, EXCITITOR-ATTEST-01-002|TODO – Deliver `/excititor/resolve` (subject/context), return consensus + score envelopes, attach cosign/Rekor metadata, and document auth + rate guardrails.|
diff --git a/src/StellaOps.Vexer.Worker.Tests/StellaOps.Vexer.Worker.Tests.csproj b/src/StellaOps.Excititor.Worker.Tests/StellaOps.Excititor.Worker.Tests.csproj
similarity index 79%
rename from src/StellaOps.Vexer.Worker.Tests/StellaOps.Vexer.Worker.Tests.csproj
rename to src/StellaOps.Excititor.Worker.Tests/StellaOps.Excititor.Worker.Tests.csproj
index 9e3c17ca..a6382dce 100644
--- a/src/StellaOps.Vexer.Worker.Tests/StellaOps.Vexer.Worker.Tests.csproj
+++ b/src/StellaOps.Excititor.Worker.Tests/StellaOps.Excititor.Worker.Tests.csproj
@@ -11,6 +11,6 @@
-
+
diff --git a/src/StellaOps.Vexer.Worker.Tests/VexWorkerOptionsTests.cs b/src/StellaOps.Excititor.Worker.Tests/VexWorkerOptionsTests.cs
similarity index 84%
rename from src/StellaOps.Vexer.Worker.Tests/VexWorkerOptionsTests.cs
rename to src/StellaOps.Excititor.Worker.Tests/VexWorkerOptionsTests.cs
index 8860638c..6698ef32 100644
--- a/src/StellaOps.Vexer.Worker.Tests/VexWorkerOptionsTests.cs
+++ b/src/StellaOps.Excititor.Worker.Tests/VexWorkerOptionsTests.cs
@@ -1,9 +1,9 @@
using FluentAssertions;
-using StellaOps.Vexer.Worker.Options;
-using StellaOps.Vexer.Worker.Scheduling;
+using StellaOps.Excititor.Worker.Options;
+using StellaOps.Excititor.Worker.Scheduling;
using Xunit;
-namespace StellaOps.Vexer.Worker.Tests;
+namespace StellaOps.Excititor.Worker.Tests;
public sealed class VexWorkerOptionsTests
{
@@ -16,7 +16,7 @@ public sealed class VexWorkerOptionsTests
OfflineInterval = TimeSpan.FromHours(6),
OfflineMode = false,
};
- options.Providers.Add(new VexWorkerProviderOptions { ProviderId = "vexer:redhat" });
+ options.Providers.Add(new VexWorkerProviderOptions { ProviderId = "excititor:redhat" });
var schedules = options.ResolveSchedules();
@@ -33,7 +33,7 @@ public sealed class VexWorkerOptionsTests
OfflineInterval = TimeSpan.FromHours(8),
OfflineMode = true,
};
- options.Providers.Add(new VexWorkerProviderOptions { ProviderId = "vexer:offline" });
+ options.Providers.Add(new VexWorkerProviderOptions { ProviderId = "excititor:offline" });
var schedules = options.ResolveSchedules();
@@ -45,13 +45,13 @@ public sealed class VexWorkerOptionsTests
public void ResolveSchedules_SkipsDisabledProviders()
{
var options = new VexWorkerOptions();
- options.Providers.Add(new VexWorkerProviderOptions { ProviderId = "vexer:enabled" });
- options.Providers.Add(new VexWorkerProviderOptions { ProviderId = "vexer:disabled", Enabled = false });
+ options.Providers.Add(new VexWorkerProviderOptions { ProviderId = "excititor:enabled" });
+ options.Providers.Add(new VexWorkerProviderOptions { ProviderId = "excititor:disabled", Enabled = false });
var schedules = options.ResolveSchedules();
schedules.Should().HaveCount(1);
- schedules[0].ProviderId.Should().Be("vexer:enabled");
+ schedules[0].ProviderId.Should().Be("excititor:enabled");
}
[Fact]
@@ -63,7 +63,7 @@ public sealed class VexWorkerOptionsTests
};
options.Providers.Add(new VexWorkerProviderOptions
{
- ProviderId = "vexer:custom",
+ ProviderId = "excititor:custom",
Interval = TimeSpan.FromMinutes(5),
InitialDelay = TimeSpan.FromSeconds(10),
});
diff --git a/src/StellaOps.Vexer.Worker/AGENTS.md b/src/StellaOps.Excititor.Worker/AGENTS.md
similarity index 91%
rename from src/StellaOps.Vexer.Worker/AGENTS.md
rename to src/StellaOps.Excititor.Worker/AGENTS.md
index d49907cc..a9ea3d57 100644
--- a/src/StellaOps.Vexer.Worker/AGENTS.md
+++ b/src/StellaOps.Excititor.Worker/AGENTS.md
@@ -1,6 +1,6 @@
# AGENTS
## Role
-Background processing host coordinating scheduled pulls, retries, reconciliation, verification, and cache maintenance for Vexer.
+Background processing host coordinating scheduled pulls, retries, reconciliation, verification, and cache maintenance for Excititor.
## Scope
- Hosted service (Worker Service) wiring timers/queues for provider pulls and reconciliation cycles.
- Resume token management, retry policies, and failure quarantines for connectors.
@@ -20,4 +20,4 @@ Out: HTTP endpoint definitions, domain modeling, connector-specific parsing logi
- Publish metrics for pull latency, failure counts, retry depth, cache size, and verification outcomes.
- Log correlation IDs & provider IDs; avoid leaking secret config values.
## Tests
-- Worker orchestration tests, timer controls, and retry behavior will live in `../StellaOps.Vexer.Worker.Tests`.
+- Worker orchestration tests, timer controls, and retry behavior will live in `../StellaOps.Excititor.Worker.Tests`.
diff --git a/src/StellaOps.Vexer.Worker/Options/VexWorkerOptions.cs b/src/StellaOps.Excititor.Worker/Options/VexWorkerOptions.cs
similarity index 94%
rename from src/StellaOps.Vexer.Worker/Options/VexWorkerOptions.cs
rename to src/StellaOps.Excititor.Worker/Options/VexWorkerOptions.cs
index e8a79079..1f18d43a 100644
--- a/src/StellaOps.Vexer.Worker/Options/VexWorkerOptions.cs
+++ b/src/StellaOps.Excititor.Worker/Options/VexWorkerOptions.cs
@@ -1,7 +1,7 @@
using System.Collections.Generic;
-using StellaOps.Vexer.Worker.Scheduling;
+using StellaOps.Excititor.Worker.Scheduling;
-namespace StellaOps.Vexer.Worker.Options;
+namespace StellaOps.Excititor.Worker.Options;
public sealed class VexWorkerOptions
{
diff --git a/src/StellaOps.Vexer.Worker/Options/VexWorkerOptionsValidator.cs b/src/StellaOps.Excititor.Worker/Options/VexWorkerOptionsValidator.cs
similarity index 63%
rename from src/StellaOps.Vexer.Worker/Options/VexWorkerOptionsValidator.cs
rename to src/StellaOps.Excititor.Worker/Options/VexWorkerOptionsValidator.cs
index bf53b771..6b4f96b8 100644
--- a/src/StellaOps.Vexer.Worker/Options/VexWorkerOptionsValidator.cs
+++ b/src/StellaOps.Excititor.Worker/Options/VexWorkerOptionsValidator.cs
@@ -1,7 +1,7 @@
using System.Collections.Generic;
using Microsoft.Extensions.Options;
-namespace StellaOps.Vexer.Worker.Options;
+namespace StellaOps.Excititor.Worker.Options;
internal sealed class VexWorkerOptionsValidator : IValidateOptions
{
@@ -11,17 +11,17 @@ internal sealed class VexWorkerOptionsValidator : IValidateOptions string.IsNullOrWhiteSpace(SearchPattern)
- ? "StellaOps.Vexer.Connectors.*.dll"
+ ? "StellaOps.Excititor.Connectors.*.dll"
: SearchPattern!;
}
diff --git a/src/StellaOps.Vexer.Worker/Program.cs b/src/StellaOps.Excititor.Worker/Program.cs
similarity index 75%
rename from src/StellaOps.Vexer.Worker/Program.cs
rename to src/StellaOps.Excititor.Worker/Program.cs
index 247c4f39..062de8c7 100644
--- a/src/StellaOps.Vexer.Worker/Program.cs
+++ b/src/StellaOps.Excititor.Worker/Program.cs
@@ -5,29 +5,29 @@ using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using StellaOps.Plugin;
-using StellaOps.Vexer.Connectors.RedHat.CSAF.DependencyInjection;
-using StellaOps.Vexer.Worker.Options;
-using StellaOps.Vexer.Worker.Scheduling;
+using StellaOps.Excititor.Connectors.RedHat.CSAF.DependencyInjection;
+using StellaOps.Excititor.Worker.Options;
+using StellaOps.Excititor.Worker.Scheduling;
var builder = Host.CreateApplicationBuilder(args);
var services = builder.Services;
var configuration = builder.Configuration;
services.AddOptions()
- .Bind(configuration.GetSection("Vexer:Worker"))
+ .Bind(configuration.GetSection("Excititor:Worker"))
.ValidateOnStart();
-services.Configure(configuration.GetSection("Vexer:Worker:Plugins"));
+services.Configure(configuration.GetSection("Excititor:Worker:Plugins"));
services.AddRedHatCsafConnector();
services.AddSingleton, VexWorkerOptionsValidator>();
services.AddSingleton(TimeProvider.System);
services.PostConfigure(options =>
{
- if (!options.Providers.Any(provider => string.Equals(provider.ProviderId, "vexer:redhat", StringComparison.OrdinalIgnoreCase)))
+ if (!options.Providers.Any(provider => string.Equals(provider.ProviderId, "excititor:redhat", StringComparison.OrdinalIgnoreCase)))
{
options.Providers.Add(new VexWorkerProviderOptions
{
- ProviderId = "vexer:redhat",
+ ProviderId = "excititor:redhat",
});
}
});
@@ -44,7 +44,7 @@ services.AddSingleton(provider =>
else
{
var logger = provider.GetRequiredService>();
- logger.LogWarning("Vexer worker plugin directory '{Directory}' does not exist; proceeding without external connectors.", directory);
+ logger.LogWarning("Excititor worker plugin directory '{Directory}' does not exist; proceeding without external connectors.", directory);
}
return catalog;
diff --git a/src/StellaOps.Excititor.Worker/Properties/AssemblyInfo.cs b/src/StellaOps.Excititor.Worker/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..8d1917cd
--- /dev/null
+++ b/src/StellaOps.Excititor.Worker/Properties/AssemblyInfo.cs
@@ -0,0 +1,3 @@
+using System.Runtime.CompilerServices;
+
+[assembly: InternalsVisibleTo("StellaOps.Excititor.Worker.Tests")]
diff --git a/src/StellaOps.Vexer.Worker/Scheduling/DefaultVexProviderRunner.cs b/src/StellaOps.Excititor.Worker/Scheduling/DefaultVexProviderRunner.cs
similarity index 97%
rename from src/StellaOps.Vexer.Worker/Scheduling/DefaultVexProviderRunner.cs
rename to src/StellaOps.Excititor.Worker/Scheduling/DefaultVexProviderRunner.cs
index 113d1f7c..0d09f945 100644
--- a/src/StellaOps.Vexer.Worker/Scheduling/DefaultVexProviderRunner.cs
+++ b/src/StellaOps.Excititor.Worker/Scheduling/DefaultVexProviderRunner.cs
@@ -4,7 +4,7 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using StellaOps.Plugin;
-namespace StellaOps.Vexer.Worker.Scheduling;
+namespace StellaOps.Excititor.Worker.Scheduling;
internal sealed class DefaultVexProviderRunner : IVexProviderRunner
{
diff --git a/src/StellaOps.Vexer.Worker/Scheduling/IVexProviderRunner.cs b/src/StellaOps.Excititor.Worker/Scheduling/IVexProviderRunner.cs
similarity index 71%
rename from src/StellaOps.Vexer.Worker/Scheduling/IVexProviderRunner.cs
rename to src/StellaOps.Excititor.Worker/Scheduling/IVexProviderRunner.cs
index 8d20f39d..78e2021b 100644
--- a/src/StellaOps.Vexer.Worker/Scheduling/IVexProviderRunner.cs
+++ b/src/StellaOps.Excititor.Worker/Scheduling/IVexProviderRunner.cs
@@ -1,4 +1,4 @@
-namespace StellaOps.Vexer.Worker.Scheduling;
+namespace StellaOps.Excititor.Worker.Scheduling;
internal interface IVexProviderRunner
{
diff --git a/src/StellaOps.Vexer.Worker/Scheduling/VexWorkerHostedService.cs b/src/StellaOps.Excititor.Worker/Scheduling/VexWorkerHostedService.cs
similarity index 92%
rename from src/StellaOps.Vexer.Worker/Scheduling/VexWorkerHostedService.cs
rename to src/StellaOps.Excititor.Worker/Scheduling/VexWorkerHostedService.cs
index b37bbe38..8baf67ea 100644
--- a/src/StellaOps.Vexer.Worker/Scheduling/VexWorkerHostedService.cs
+++ b/src/StellaOps.Excititor.Worker/Scheduling/VexWorkerHostedService.cs
@@ -5,9 +5,9 @@ using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
-using StellaOps.Vexer.Worker.Options;
+using StellaOps.Excititor.Worker.Options;
-namespace StellaOps.Vexer.Worker.Scheduling;
+namespace StellaOps.Excititor.Worker.Scheduling;
internal sealed class VexWorkerHostedService : BackgroundService
{
@@ -33,12 +33,12 @@ internal sealed class VexWorkerHostedService : BackgroundService
var schedules = _options.Value.ResolveSchedules();
if (schedules.Count == 0)
{
- _logger.LogWarning("Vexer worker has no configured provider schedules; the service will remain idle.");
+ _logger.LogWarning("Excititor worker has no configured provider schedules; the service will remain idle.");
await Task.CompletedTask;
return;
}
- _logger.LogInformation("Vexer worker starting with {ProviderCount} provider schedule(s).", schedules.Count);
+ _logger.LogInformation("Excititor worker starting with {ProviderCount} provider schedule(s).", schedules.Count);
var tasks = new List(schedules.Count);
foreach (var schedule in schedules)
diff --git a/src/StellaOps.Vexer.Worker/Scheduling/VexWorkerSchedule.cs b/src/StellaOps.Excititor.Worker/Scheduling/VexWorkerSchedule.cs
similarity index 67%
rename from src/StellaOps.Vexer.Worker/Scheduling/VexWorkerSchedule.cs
rename to src/StellaOps.Excititor.Worker/Scheduling/VexWorkerSchedule.cs
index 81b2c68a..bd582646 100644
--- a/src/StellaOps.Vexer.Worker/Scheduling/VexWorkerSchedule.cs
+++ b/src/StellaOps.Excititor.Worker/Scheduling/VexWorkerSchedule.cs
@@ -1,3 +1,3 @@
-namespace StellaOps.Vexer.Worker.Scheduling;
+namespace StellaOps.Excititor.Worker.Scheduling;
internal sealed record VexWorkerSchedule(string ProviderId, TimeSpan Interval, TimeSpan InitialDelay);
diff --git a/src/StellaOps.Vexer.Worker/StellaOps.Vexer.Worker.csproj b/src/StellaOps.Excititor.Worker/StellaOps.Excititor.Worker.csproj
similarity index 52%
rename from src/StellaOps.Vexer.Worker/StellaOps.Vexer.Worker.csproj
rename to src/StellaOps.Excititor.Worker/StellaOps.Excititor.Worker.csproj
index 93a50200..e1f41fef 100644
--- a/src/StellaOps.Vexer.Worker/StellaOps.Vexer.Worker.csproj
+++ b/src/StellaOps.Excititor.Worker/StellaOps.Excititor.Worker.csproj
@@ -11,9 +11,9 @@
-
-
-
-
+
+
+
+
diff --git a/src/StellaOps.Excititor.Worker/TASKS.md b/src/StellaOps.Excititor.Worker/TASKS.md
new file mode 100644
index 00000000..e7186be3
--- /dev/null
+++ b/src/StellaOps.Excititor.Worker/TASKS.md
@@ -0,0 +1,8 @@
+If you are working on this file you need to read docs/ARCHITECTURE_EXCITITOR.md and ./AGENTS.md).
+# TASKS
+| Task | Owner(s) | Depends on | Notes |
+|---|---|---|---|
+|EXCITITOR-WORKER-01-001 – Worker host & scheduling|Team Excititor Worker|EXCITITOR-STORAGE-01-003, EXCITITOR-WEB-01-001|**DONE (2025-10-17)** – Worker project bootstraps provider schedules from configuration, integrates plugin catalog discovery, and emits structured logs/metrics-ready events via `VexWorkerHostedService`; scheduling logic covered by `VexWorkerOptionsTests`.|
+|EXCITITOR-WORKER-01-002 – Resume tokens & retry policy|Team Excititor Worker|EXCITITOR-WORKER-01-001|TODO – Implement durable resume markers, exponential backoff with jitter, and quarantine for failing connectors per architecture spec.|
+|EXCITITOR-WORKER-01-003 – Verification & cache GC loops|Team Excititor Worker|EXCITITOR-WORKER-01-001, EXCITITOR-ATTEST-01-003, EXCITITOR-EXPORT-01-002|TODO – Add scheduled attestation re-verification and cache pruning routines, surfacing metrics for export reuse ratios.|
+|EXCITITOR-WORKER-01-004 – TTL refresh & stability damper|Team Excititor Worker|EXCITITOR-WORKER-01-001, EXCITITOR-CORE-02-001|TODO – Monitor consensus/VEX TTLs, apply 24–48h dampers before flipping published status/score, and trigger re-resolve when base image or kernel fingerprints change.|
diff --git a/src/StellaOps.Feedser.Core/TASKS.md b/src/StellaOps.Feedser.Core/TASKS.md
index 76724b04..66843401 100644
--- a/src/StellaOps.Feedser.Core/TASKS.md
+++ b/src/StellaOps.Feedser.Core/TASKS.md
@@ -17,4 +17,4 @@
|Canonical merger parity for description/CWE/canonical metric|BE-Core|Models|DONE (2025-10-15) – merger now populates description/CWEs/canonical metric id with provenance and regression tests cover the new decisions.|
|Reference normalization & freshness instrumentation cleanup|BE-Core, QA|Models|DONE (2025-10-15) – reference keys normalized, freshness overrides applied to union fields, and new tests assert decision logging.|
|FEEDCORE-ENGINE-07-001 – Advisory event log & asOf queries|Team Core Engine & Storage Analytics|FEEDSTORAGE-DATA-07-001|TODO – Introduce immutable advisory statement events, expose `asOf` query surface for merge/export pipelines, and document determinism guarantees for replay.|
-|FEEDCORE-ENGINE-07-002 – Noise prior computation service|Team Core Engine & Data Science|FEEDCORE-ENGINE-07-001|TODO – Build rule-based learner capturing false-positive priors per package/env, persist summaries, and expose APIs for Vexer/scan suppressors with reproducible statistics.|
+|FEEDCORE-ENGINE-07-002 – Noise prior computation service|Team Core Engine & Data Science|FEEDCORE-ENGINE-07-001|TODO – Build rule-based learner capturing false-positive priors per package/env, persist summaries, and expose APIs for Excititor/scan suppressors with reproducible statistics.|
diff --git a/src/StellaOps.Vexer.Attestation/TASKS.md b/src/StellaOps.Vexer.Attestation/TASKS.md
deleted file mode 100644
index 7f318efd..00000000
--- a/src/StellaOps.Vexer.Attestation/TASKS.md
+++ /dev/null
@@ -1,7 +0,0 @@
-If you are working on this file you need to read docs/ARCHITECTURE_VEXER.md and ./AGENTS.md).
-# TASKS
-| Task | Owner(s) | Depends on | Notes |
-|---|---|---|---|
-|VEXER-ATTEST-01-001 – In-toto predicate & DSSE builder|Team Vexer Attestation|VEXER-CORE-01-001|**DONE (2025-10-16)** – Added deterministic in-toto predicate/statement models, DSSE envelope builder wired to signer abstraction, and attestation client producing metadata + diagnostics.|
-|VEXER-ATTEST-01-002 – Rekor v2 client integration|Team Vexer Attestation|VEXER-ATTEST-01-001|**DONE (2025-10-16)** – Implemented Rekor HTTP client with retry/backoff, transparency log abstraction, DI helpers, and attestation client integration capturing Rekor metadata + diagnostics.|
-|VEXER-ATTEST-01-003 – Verification suite & observability|Team Vexer Attestation|VEXER-ATTEST-01-002|TODO – Add verification helpers for Worker/WebService, metrics/logging hooks, and negative-path regression tests.|
diff --git a/src/StellaOps.Vexer.Connectors.Abstractions/TASKS.md b/src/StellaOps.Vexer.Connectors.Abstractions/TASKS.md
deleted file mode 100644
index 696fe975..00000000
--- a/src/StellaOps.Vexer.Connectors.Abstractions/TASKS.md
+++ /dev/null
@@ -1,7 +0,0 @@
-If you are working on this file you need to read docs/ARCHITECTURE_VEXER.md and ./AGENTS.md).
-# TASKS
-| Task | Owner(s) | Depends on | Notes |
-|---|---|---|---|
-|VEXER-CONN-ABS-01-001 – Connector context & base classes|Team Vexer Connectors|VEXER-CORE-01-003|**DONE (2025-10-17)** – Added `StellaOps.Vexer.Connectors.Abstractions` project with `VexConnectorBase`, deterministic logging scopes, metadata builder helpers, and connector descriptors; docs updated to highlight the shared abstractions.|
-|VEXER-CONN-ABS-01-002 – YAML options & validation|Team Vexer Connectors|VEXER-CONN-ABS-01-001|**DONE (2025-10-17)** – Delivered `VexConnectorOptionsBinder` + binder options/validators, environment-variable expansion, data-annotation checks, and custom validation hooks with documentation updates covering the workflow.|
-|VEXER-CONN-ABS-01-003 – Plugin packaging & docs|Team Vexer Connectors|VEXER-CONN-ABS-01-001|**DONE (2025-10-17)** – Authored `docs/dev/30_VEXER_CONNECTOR_GUIDE.md`, added quick-start template under `docs/dev/templates/vexer-connector/`, and updated module docs to reference the packaging workflow.|
diff --git a/src/StellaOps.Vexer.Connectors.Cisco.CSAF/TASKS.md b/src/StellaOps.Vexer.Connectors.Cisco.CSAF/TASKS.md
deleted file mode 100644
index 64bc0381..00000000
--- a/src/StellaOps.Vexer.Connectors.Cisco.CSAF/TASKS.md
+++ /dev/null
@@ -1,7 +0,0 @@
-If you are working on this file you need to read docs/ARCHITECTURE_VEXER.md and ./AGENTS.md).
-# TASKS
-| Task | Owner(s) | Depends on | Notes |
-|---|---|---|---|
-|VEXER-CONN-CISCO-01-001 – Endpoint discovery & auth plumbing|Team Vexer Connectors – Cisco|VEXER-CONN-ABS-01-001|**DONE (2025-10-17)** – Added `CiscoProviderMetadataLoader` with bearer token support, offline snapshot fallback, DI helpers, and tests covering network/offline discovery to unblock subsequent fetch work.|
-|VEXER-CONN-CISCO-01-002 – CSAF pull loop & pagination|Team Vexer Connectors – Cisco|VEXER-CONN-CISCO-01-001, VEXER-STORAGE-01-003|**DONE (2025-10-17)** – Implemented paginated advisory fetch using provider directories, raw document persistence with dedupe/state tracking, offline resiliency, and unit coverage.|
-|VEXER-CONN-CISCO-01-003 – Provider trust metadata|Team Vexer Connectors – Cisco|VEXER-CONN-CISCO-01-002, VEXER-POLICY-01-001|TODO – Emit cosign/PGP trust metadata and advisory provenance hints for policy weighting.|
diff --git a/src/StellaOps.Vexer.Connectors.MSRC.CSAF/TASKS.md b/src/StellaOps.Vexer.Connectors.MSRC.CSAF/TASKS.md
deleted file mode 100644
index 97b7328a..00000000
--- a/src/StellaOps.Vexer.Connectors.MSRC.CSAF/TASKS.md
+++ /dev/null
@@ -1,7 +0,0 @@
-If you are working on this file you need to read docs/ARCHITECTURE_VEXER.md and ./AGENTS.md).
-# TASKS
-| Task | Owner(s) | Depends on | Notes |
-|---|---|---|---|
-|VEXER-CONN-MS-01-001 – AAD onboarding & token cache|Team Vexer Connectors – MSRC|VEXER-CONN-ABS-01-001|**DONE (2025-10-17)** – Added MSRC connector project with configurable AAD options, token provider (offline/online modes), DI wiring, and unit tests covering caching and fallback scenarios.|
-|VEXER-CONN-MS-01-002 – CSAF download pipeline|Team Vexer Connectors – MSRC|VEXER-CONN-MS-01-001, VEXER-STORAGE-01-003|TODO – Fetch CSAF packages with retry/backoff, checksum verification, and raw document persistence plus quarantine for schema failures.|
-|VEXER-CONN-MS-01-003 – Trust metadata & provenance hints|Team Vexer Connectors – MSRC|VEXER-CONN-MS-01-002, VEXER-POLICY-01-001|TODO – Emit cosign/AAD issuer metadata, attach provenance details, and document policy integration.|
diff --git a/src/StellaOps.Vexer.Connectors.OCI.OpenVEX.Attest/TASKS.md b/src/StellaOps.Vexer.Connectors.OCI.OpenVEX.Attest/TASKS.md
deleted file mode 100644
index a151c406..00000000
--- a/src/StellaOps.Vexer.Connectors.OCI.OpenVEX.Attest/TASKS.md
+++ /dev/null
@@ -1,7 +0,0 @@
-If you are working on this file you need to read docs/ARCHITECTURE_VEXER.md and ./AGENTS.md).
-# TASKS
-| Task | Owner(s) | Depends on | Notes |
-|---|---|---|---|
-|VEXER-CONN-OCI-01-001 – OCI discovery & auth plumbing|Team Vexer Connectors – OCI|VEXER-CONN-ABS-01-001|TODO – Resolve OCI references, configure cosign auth (keyless/keyed), and support offline attestation bundles.|
-|VEXER-CONN-OCI-01-002 – Attestation fetch & verify loop|Team Vexer Connectors – OCI|VEXER-CONN-OCI-01-001, VEXER-ATTEST-01-002|TODO – Download DSSE attestations, trigger verification, handle retries/backoff, and persist raw statements with metadata.|
-|VEXER-CONN-OCI-01-003 – Provenance metadata & policy hooks|Team Vexer Connectors – OCI|VEXER-CONN-OCI-01-002, VEXER-POLICY-01-001|TODO – Emit provenance hints (image, subject digest, issuer) and trust metadata for policy weighting/logging.|
diff --git a/src/StellaOps.Vexer.Connectors.Oracle.CSAF/TASKS.md b/src/StellaOps.Vexer.Connectors.Oracle.CSAF/TASKS.md
deleted file mode 100644
index 69452a71..00000000
--- a/src/StellaOps.Vexer.Connectors.Oracle.CSAF/TASKS.md
+++ /dev/null
@@ -1,7 +0,0 @@
-If you are working on this file you need to read docs/ARCHITECTURE_VEXER.md and ./AGENTS.md).
-# TASKS
-| Task | Owner(s) | Depends on | Notes |
-|---|---|---|---|
-|VEXER-CONN-ORACLE-01-001 – Oracle CSAF catalogue discovery|Team Vexer Connectors – Oracle|VEXER-CONN-ABS-01-001|DOING (2025-10-17) – Implement catalogue discovery, CPU calendar awareness, and offline snapshot import for Oracle CSAF feeds.|
-|VEXER-CONN-ORACLE-01-002 – CSAF download & dedupe pipeline|Team Vexer Connectors – Oracle|VEXER-CONN-ORACLE-01-001, VEXER-STORAGE-01-003|TODO – Fetch CSAF documents with retry/backoff, checksum validation, revision deduplication, and raw persistence.|
-|VEXER-CONN-ORACLE-01-003 – Trust metadata + provenance|Team Vexer Connectors – Oracle|VEXER-CONN-ORACLE-01-002, VEXER-POLICY-01-001|TODO – Emit Oracle signing metadata (PGP/cosign) and provenance hints for consensus weighting.|
diff --git a/src/StellaOps.Vexer.Connectors.RedHat.CSAF/TASKS.md b/src/StellaOps.Vexer.Connectors.RedHat.CSAF/TASKS.md
deleted file mode 100644
index 04f43ae1..00000000
--- a/src/StellaOps.Vexer.Connectors.RedHat.CSAF/TASKS.md
+++ /dev/null
@@ -1,10 +0,0 @@
-If you are working on this file you need to read docs/ARCHITECTURE_VEXER.md and ./AGENTS.md).
-# TASKS
-| Task | Owner(s) | Depends on | Notes |
-|---|---|---|---|
-|VEXER-CONN-RH-01-001 – Provider metadata discovery|Team Vexer Connectors – Red Hat|VEXER-CONN-ABS-01-001|**DONE (2025-10-17)** – Added `RedHatProviderMetadataLoader` with HTTP/ETag caching, offline snapshot handling, and validation; exposed DI helper + tests covering live, cached, and offline scenarios.|
-|VEXER-CONN-RH-01-002 – Incremental CSAF pulls|Team Vexer Connectors – Red Hat|VEXER-CONN-RH-01-001, VEXER-STORAGE-01-003|**DONE (2025-10-17)** – Implemented `RedHatCsafConnector` with ROLIE feed parsing, incremental filtering via `context.Since`, CSAF document download + metadata capture, and persistence through `IVexRawDocumentSink`; tests cover live fetch/cache/offline scenarios with ETag handling.|
-|VEXER-CONN-RH-01-003 – Trust metadata emission|Team Vexer Connectors – Red Hat|VEXER-CONN-RH-01-002, VEXER-POLICY-01-001|**DONE (2025-10-17)** – Provider metadata loader now emits trust overrides (weight, cosign issuer/pattern, PGP fingerprints) and the connector surfaces provenance hints for policy/consensus layers.|
-|VEXER-CONN-RH-01-004 – Resume state persistence|Team Vexer Connectors – Red Hat|VEXER-CONN-RH-01-002, VEXER-STORAGE-01-003|**DONE (2025-10-17)** – Connector now loads/saves resume state via `IVexConnectorStateRepository`, tracking last update timestamp and recent document digests to avoid duplicate CSAF ingestion; regression covers state persistence and duplicate skips.|
-|VEXER-CONN-RH-01-005 – Worker/WebService integration|Team Vexer Connectors – Red Hat|VEXER-CONN-RH-01-002|**DONE (2025-10-17)** – Worker/WebService now call `AddRedHatCsafConnector`, register the connector + state repo, and default worker scheduling adds the `vexer:redhat` provider so background jobs and orchestration can activate the connector without extra wiring.|
-|VEXER-CONN-RH-01-006 – CSAF normalization parity tests|Team Vexer Connectors – Red Hat|VEXER-CONN-RH-01-002, VEXER-FMT-CSAF-01-001|**DONE (2025-10-17)** – Added RHSA fixture-driven regression verifying CSAF normalizer retains Red Hat product metadata, tracking fields, and timestamps (`rhsa-sample.json` + `CsafNormalizerTests.NormalizeAsync_PreservesRedHatSpecificMetadata`).|
diff --git a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/TASKS.md b/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/TASKS.md
deleted file mode 100644
index 9ce451c6..00000000
--- a/src/StellaOps.Vexer.Connectors.SUSE.RancherVEXHub/TASKS.md
+++ /dev/null
@@ -1,7 +0,0 @@
-If you are working on this file you need to read docs/ARCHITECTURE_VEXER.md and ./AGENTS.md).
-# TASKS
-| Task | Owner(s) | Depends on | Notes |
-|---|---|---|---|
-|VEXER-CONN-SUSE-01-001 – Rancher hub discovery & auth|Team Vexer Connectors – SUSE|VEXER-CONN-ABS-01-001|**DONE (2025-10-17)** – Added Rancher hub options/token provider, discovery metadata loader with offline snapshots + caching, connector shell, DI wiring, and unit tests covering network/offline paths.|
-|VEXER-CONN-SUSE-01-002 – Checkpointed event ingestion|Team Vexer Connectors – SUSE|VEXER-CONN-SUSE-01-001, VEXER-STORAGE-01-003|TODO – Process hub events with resume checkpoints, deduplication, and quarantine path for malformed payloads.|
-|VEXER-CONN-SUSE-01-003 – Trust metadata & policy hints|Team Vexer Connectors – SUSE|VEXER-CONN-SUSE-01-002, VEXER-POLICY-01-001|TODO – Emit provider trust configuration (signers, weight overrides) and attach provenance hints for consensus engine.|
diff --git a/src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/TASKS.md b/src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/TASKS.md
deleted file mode 100644
index 049b0920..00000000
--- a/src/StellaOps.Vexer.Connectors.Ubuntu.CSAF/TASKS.md
+++ /dev/null
@@ -1,7 +0,0 @@
-If you are working on this file you need to read docs/ARCHITECTURE_VEXER.md and ./AGENTS.md).
-# TASKS
-| Task | Owner(s) | Depends on | Notes |
-|---|---|---|---|
-|VEXER-CONN-UBUNTU-01-001 – Ubuntu CSAF discovery & channels|Team Vexer Connectors – Ubuntu|VEXER-CONN-ABS-01-001|**DONE (2025-10-17)** – Added Ubuntu connector project with configurable channel options, catalog loader (network/offline), DI wiring, and discovery unit tests.|
-|VEXER-CONN-UBUNTU-01-002 – Incremental fetch & deduplication|Team Vexer Connectors – Ubuntu|VEXER-CONN-UBUNTU-01-001, VEXER-STORAGE-01-003|TODO – Fetch CSAF bundles with ETag handling, checksum validation, deduplication, and raw persistence.|
-|VEXER-CONN-UBUNTU-01-003 – Trust metadata & provenance|Team Vexer Connectors – Ubuntu|VEXER-CONN-UBUNTU-01-002, VEXER-POLICY-01-001|TODO – Emit Ubuntu signing metadata (GPG fingerprints) plus provenance hints for policy weighting and diagnostics.|
diff --git a/src/StellaOps.Vexer.Core/TASKS.md b/src/StellaOps.Vexer.Core/TASKS.md
deleted file mode 100644
index 4ed131d7..00000000
--- a/src/StellaOps.Vexer.Core/TASKS.md
+++ /dev/null
@@ -1,9 +0,0 @@
-If you are working on this file you need to read docs/ARCHITECTURE_VEXER.md and ./AGENTS.md).
-# TASKS
-| Task | Owner(s) | Depends on | Notes |
-|---|---|---|---|
-|VEXER-CORE-01-001 – Canonical VEX domain records|Team Vexer Core & Policy|docs/ARCHITECTURE_VEXER.md|DONE (2025-10-15) – Introduced `VexClaim`, `VexConsensus`, provider metadata, export manifest records, and deterministic JSON serialization with tests covering canonical ordering and query signatures.|
-|VEXER-CORE-01-002 – Trust-weighted consensus resolver|Team Vexer Core & Policy|VEXER-CORE-01-001|DONE (2025-10-15) – Added consensus resolver, baseline policy (tier weights + justification gate), telemetry output, and tests covering acceptance, conflict ties, and determinism.|
-|VEXER-CORE-01-003 – Shared contracts & query signatures|Team Vexer Core & Policy|VEXER-CORE-01-001|DONE (2025-10-15) – Published connector/normalizer/exporter/attestation abstractions and expanded deterministic `VexQuerySignature`/hash utilities with test coverage.|
-|VEXER-CORE-02-001 – Context signal schema prep|Team Vexer Core & Policy|VEXER-POLICY-02-001|TODO – Extend `VexClaim`/`VexConsensus` with optional severity/KEV/EPSS payloads, update canonical serializer/hashes, and coordinate migration notes with Storage.|
-|VEXER-CORE-02-002 – Deterministic risk scoring engine|Team Vexer Core & Policy|VEXER-CORE-02-001, VEXER-POLICY-02-001|BACKLOG – Introduce the scoring calculator invoked by consensus, persist score envelopes with audit trails, and add regression fixtures covering gate/boost behaviour before enabling exports.|
diff --git a/src/StellaOps.Vexer.Export/Properties/AssemblyInfo.cs b/src/StellaOps.Vexer.Export/Properties/AssemblyInfo.cs
deleted file mode 100644
index d7a3cbff..00000000
--- a/src/StellaOps.Vexer.Export/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,3 +0,0 @@
-using System.Runtime.CompilerServices;
-
-[assembly: InternalsVisibleTo("StellaOps.Vexer.Export.Tests")]
diff --git a/src/StellaOps.Vexer.Export/TASKS.md b/src/StellaOps.Vexer.Export/TASKS.md
deleted file mode 100644
index 0e737d33..00000000
--- a/src/StellaOps.Vexer.Export/TASKS.md
+++ /dev/null
@@ -1,9 +0,0 @@
-If you are working on this file you need to read docs/ARCHITECTURE_VEXER.md and ./AGENTS.md).
-# TASKS
-| Task | Owner(s) | Depends on | Notes |
-|---|---|---|---|
-|VEXER-EXPORT-01-001 – Export engine orchestration|Team Vexer Export|VEXER-CORE-01-003|DONE (2025-10-15) – Export engine scaffolding with cache lookup, data source hooks, and deterministic manifest emission.|
-|VEXER-EXPORT-01-002 – Cache index & eviction hooks|Team Vexer Export|VEXER-EXPORT-01-001, VEXER-STORAGE-01-003|**DONE (2025-10-16)** – Export engine now invalidates cache entries on force refresh, cache services expose prune/invalidate APIs, and storage maintenance trims expired/dangling records with Mongo2Go coverage.|
-|VEXER-EXPORT-01-003 – Artifact store adapters|Team Vexer Export|VEXER-EXPORT-01-001|**DONE (2025-10-16)** – Implemented multi-store pipeline with filesystem, S3-compatible, and offline bundle adapters (hash verification + manifest/zip output) plus unit coverage and DI hooks.|
-|VEXER-EXPORT-01-004 – Attestation handoff integration|Team Vexer Export|VEXER-EXPORT-01-001, VEXER-ATTEST-01-001|**DONE (2025-10-17)** – Export engine now invokes attestation client, logs diagnostics, and persists Rekor/envelope metadata on manifests; regression coverage added in `ExportEngineTests.ExportAsync_AttachesAttestationMetadata`.|
-|VEXER-EXPORT-01-005 – Score & resolve envelope surfaces|Team Vexer Export|VEXER-EXPORT-01-004, VEXER-CORE-02-001|TODO – Emit consensus+score envelopes in export manifests, include policy/scoring digests, and update offline bundle/ORAS layouts to carry signed VEX responses.|
diff --git a/src/StellaOps.Vexer.Formats.CSAF/TASKS.md b/src/StellaOps.Vexer.Formats.CSAF/TASKS.md
deleted file mode 100644
index 7b9f41dd..00000000
--- a/src/StellaOps.Vexer.Formats.CSAF/TASKS.md
+++ /dev/null
@@ -1,7 +0,0 @@
-If you are working on this file you need to read docs/ARCHITECTURE_VEXER.md and ./AGENTS.md).
-# TASKS
-| Task | Owner(s) | Depends on | Notes |
-|---|---|---|---|
-|VEXER-FMT-CSAF-01-001 – CSAF normalizer foundation|Team Vexer Formats|VEXER-CORE-01-001|**DONE (2025-10-17)** – Implemented CSAF normalizer + DI hook, parsing tracking metadata, product tree branches/full names, and mapping product statuses into canonical `VexClaim`s with baseline precedence. Regression added in `CsafNormalizerTests`.|
-|VEXER-FMT-CSAF-01-002 – Status/justification mapping|Team Vexer Formats|VEXER-FMT-CSAF-01-001, VEXER-POLICY-01-001|TODO – Normalize CSAF `product_status` + `justification` values into policy-aware enums with audit diagnostics for unsupported codes.|
-|VEXER-FMT-CSAF-01-003 – CSAF export adapter|Team Vexer Formats|VEXER-EXPORT-01-001, VEXER-FMT-CSAF-01-001|TODO – Provide CSAF export writer producing deterministic documents (per vuln/product) and manifest metadata for attestation.|
diff --git a/src/StellaOps.Vexer.Formats.CycloneDX/TASKS.md b/src/StellaOps.Vexer.Formats.CycloneDX/TASKS.md
deleted file mode 100644
index cf34f392..00000000
--- a/src/StellaOps.Vexer.Formats.CycloneDX/TASKS.md
+++ /dev/null
@@ -1,7 +0,0 @@
-If you are working on this file you need to read docs/ARCHITECTURE_VEXER.md and ./AGENTS.md).
-# TASKS
-| Task | Owner(s) | Depends on | Notes |
-|---|---|---|---|
-|VEXER-FMT-CYCLONE-01-001 – CycloneDX VEX normalizer|Team Vexer Formats|VEXER-CORE-01-001|**DONE (2025-10-17)** – CycloneDX normalizer parses `analysis` data, resolves component references, and emits canonical `VexClaim`s; regression lives in `CycloneDxNormalizerTests`.|
-|VEXER-FMT-CYCLONE-01-002 – Component reference reconciliation|Team Vexer Formats|VEXER-FMT-CYCLONE-01-001|TODO – Implement helpers to reconcile component/service references against policy expectations and emit diagnostics for missing SBOM links.|
-|VEXER-FMT-CYCLONE-01-003 – CycloneDX export serializer|Team Vexer Formats|VEXER-EXPORT-01-001, VEXER-FMT-CYCLONE-01-001|TODO – Provide exporters producing CycloneDX VEX output with canonical ordering and hash-stable manifests.|
diff --git a/src/StellaOps.Vexer.Formats.OpenVEX/TASKS.md b/src/StellaOps.Vexer.Formats.OpenVEX/TASKS.md
deleted file mode 100644
index 75210974..00000000
--- a/src/StellaOps.Vexer.Formats.OpenVEX/TASKS.md
+++ /dev/null
@@ -1,7 +0,0 @@
-If you are working on this file you need to read docs/ARCHITECTURE_VEXER.md and ./AGENTS.md).
-# TASKS
-| Task | Owner(s) | Depends on | Notes |
-|---|---|---|---|
-|VEXER-FMT-OPENVEX-01-001 – OpenVEX normalizer|Team Vexer Formats|VEXER-CORE-01-001|**DONE (2025-10-17)** – OpenVEX normalizer parses statements/products, maps status/justification, and surfaces provenance metadata; coverage in `OpenVexNormalizerTests`.|
-|VEXER-FMT-OPENVEX-01-002 – Statement merge utilities|Team Vexer Formats|VEXER-FMT-OPENVEX-01-001|TODO – Add reducers merging multiple OpenVEX statements, resolving conflicts deterministically, and emitting policy diagnostics.|
-|VEXER-FMT-OPENVEX-01-003 – OpenVEX export writer|Team Vexer Formats|VEXER-EXPORT-01-001, VEXER-FMT-OPENVEX-01-001|TODO – Provide export serializer generating canonical OpenVEX documents with optional SBOM references and hash-stable ordering.|
diff --git a/src/StellaOps.Vexer.Policy/TASKS.md b/src/StellaOps.Vexer.Policy/TASKS.md
deleted file mode 100644
index 6fd59797..00000000
--- a/src/StellaOps.Vexer.Policy/TASKS.md
+++ /dev/null
@@ -1,11 +0,0 @@
-If you are working on this file you need to read docs/ARCHITECTURE_VEXER.md and ./AGENTS.md).
-# TASKS
-| Task | Owner(s) | Depends on | Notes |
-|---|---|---|---|
-|VEXER-POLICY-01-001 – Policy schema & binding|Team Vexer Policy|VEXER-CORE-01-001|DONE (2025-10-15) – Established `VexPolicyOptions`, options binding, and snapshot provider covering baseline weights/overrides.|
-|VEXER-POLICY-01-002 – Policy evaluator service|Team Vexer Policy|VEXER-POLICY-01-001|DONE (2025-10-15) – `VexPolicyEvaluator` exposes immutable snapshots to consensus and normalizes rejection reasons.|
-|VEXER-POLICY-01-003 – Operator diagnostics & docs|Team Vexer Policy|VEXER-POLICY-01-001|**DONE (2025-10-16)** – Surface structured diagnostics (CLI/WebService) and author policy upgrade guidance in docs/ARCHITECTURE_VEXER.md appendix.
2025-10-16: Added `IVexPolicyDiagnostics`/`VexPolicyDiagnosticsReport`, sorted issue ordering, recommendations, and appendix guidance. Tests: `dotnet test src/StellaOps.Vexer.Core.Tests/StellaOps.Vexer.Core.Tests.csproj`.|
-|VEXER-POLICY-01-004 – Policy schema validation & YAML binding|Team Vexer Policy|VEXER-POLICY-01-001|**DONE (2025-10-16)** – Added strongly-typed YAML/JSON binding, schema validation, and deterministic diagnostics for operator-supplied policy bundles.|
-|VEXER-POLICY-01-005 – Policy change tracking & telemetry|Team Vexer Policy|VEXER-POLICY-01-002|**DONE (2025-10-16)** – Emit revision history, expose snapshot digests via CLI/WebService, and add structured logging/metrics for policy reloads.
2025-10-16: `VexPolicySnapshot` now carries revision/digest, provider logs reloads, `vex.policy.reloads` metric emitted, binder/diagnostics expose digest metadata. Tests: `dotnet test src/StellaOps.Vexer.Core.Tests/StellaOps.Vexer.Core.Tests.csproj`.|
-|VEXER-POLICY-02-001 – Scoring coefficients & weight ceilings|Team Vexer Policy|VEXER-POLICY-01-004|TODO – Extend `VexPolicyOptions` with α/β boosters and optional >1.0 weight ceilings, validate ranges, and document operator guidance in `docs/ARCHITECTURE_VEXER.md`/`docs/VEXER_SCORRING.md`.|
-|VEXER-POLICY-02-002 – Diagnostics for scoring signals|Team Vexer Policy|VEXER-POLICY-02-001|BACKLOG – Update diagnostics reports to surface missing severity/KEV/EPSS mappings, coefficient overrides, and provide actionable recommendations for policy tuning.|
diff --git a/src/StellaOps.Vexer.Storage.Mongo/Properties/AssemblyInfo.cs b/src/StellaOps.Vexer.Storage.Mongo/Properties/AssemblyInfo.cs
deleted file mode 100644
index 8f1a1312..00000000
--- a/src/StellaOps.Vexer.Storage.Mongo/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,3 +0,0 @@
-using System.Runtime.CompilerServices;
-
-[assembly: InternalsVisibleTo("StellaOps.Vexer.Storage.Mongo.Tests")]
diff --git a/src/StellaOps.Vexer.Storage.Mongo/TASKS.md b/src/StellaOps.Vexer.Storage.Mongo/TASKS.md
deleted file mode 100644
index d74b3dc3..00000000
--- a/src/StellaOps.Vexer.Storage.Mongo/TASKS.md
+++ /dev/null
@@ -1,10 +0,0 @@
-If you are working on this file you need to read docs/ARCHITECTURE_VEXER.md and ./AGENTS.md).
-# TASKS
-| Task | Owner(s) | Depends on | Notes |
-|---|---|---|---|
-|VEXER-STORAGE-01-001 – Collection schemas & class maps|Team Vexer Storage|VEXER-CORE-01-001|DONE (2025-10-15) – Added Mongo mapping registry with raw/export entities and service registration groundwork.|
-|VEXER-STORAGE-01-002 – Migrations & indices bootstrap|Team Vexer Storage|VEXER-STORAGE-01-001|**DONE (2025-10-16)** – Add bootstrapper creating indices (claims by vulnId/product, exports by querySignature, etc.) and migrations for existing deployments.
2025-10-16: Introduced migration runner + hosted service, initial index migration covers raw/providers/consensus/exports/cache, and tests use Mongo2Go to verify execution.|
-|VEXER-STORAGE-01-003 – Repository layer & transactional flows|Team Vexer Storage|VEXER-STORAGE-01-001|**DONE (2025-10-16)** – Added GridFS-backed raw store with transactional upserts (including fallback for non-replicaset Mongo), export/cache repository coordination, and coverage verifying cache TTL + GridFS round-trips.|
-|VEXER-STORAGE-01-004 – Provider/consensus/cache mappings|Team Vexer Storage|VEXER-STORAGE-01-001|**DONE (2025-10-16)** – Registered MongoDB class maps for provider/consensus/cache records with forward-compatible field handling and added coverage ensuring GridFS-linked cache entries round-trip cleanly.|
-|VEXER-STORAGE-02-001 – Statement events & scoring signals|Team Vexer Storage|VEXER-CORE-02-001|TODO – Add immutable `vex.statements` collection, extend consensus documents with severity/KEV/EPSS fields, build indices for `policyRevisionId`/`generatedAt`, and script migrations/backfill guidance for Phase 1 rollout.|
-|VEXER-STORAGE-MONGO-08-001 – Session + causal consistency hardening|Team Vexer Storage|VEXER-STORAGE-01-003|TODO – Register Mongo client/database with majority read/write concerns, expose scoped session helper enabling causal consistency, thread session handles through raw/export/consensus/cache stores (including GridFS reads), and extend integration tests to verify read-your-write semantics during replica-set failover.|
diff --git a/src/StellaOps.Vexer.WebService/StellaOps.Vexer.WebService.csproj b/src/StellaOps.Vexer.WebService/StellaOps.Vexer.WebService.csproj
deleted file mode 100644
index 0e85d526..00000000
--- a/src/StellaOps.Vexer.WebService/StellaOps.Vexer.WebService.csproj
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
- net10.0
- preview
- enable
- enable
- true
-
-
-
-
-
-
-
-
-
diff --git a/src/StellaOps.Vexer.WebService/TASKS.md b/src/StellaOps.Vexer.WebService/TASKS.md
deleted file mode 100644
index f29650c5..00000000
--- a/src/StellaOps.Vexer.WebService/TASKS.md
+++ /dev/null
@@ -1,8 +0,0 @@
-If you are working on this file you need to read docs/ARCHITECTURE_VEXER.md and ./AGENTS.md).
-# TASKS
-| Task | Owner(s) | Depends on | Notes |
-|---|---|---|---|
-|VEXER-WEB-01-001 – Minimal API bootstrap & DI|Team Vexer WebService|VEXER-CORE-01-003, VEXER-STORAGE-01-003|**DONE (2025-10-17)** – Minimal API host composes storage/export/attestation/artifact stores, binds Mongo/attestation options, and exposes `/vexer/status` + health endpoints with regression coverage in `StatusEndpointTests`.|
-|VEXER-WEB-01-002 – Ingest & reconcile endpoints|Team Vexer WebService|VEXER-WEB-01-001|TODO – Implement `/vexer/init`, `/vexer/ingest/run`, `/vexer/ingest/resume`, `/vexer/reconcile` with token scope enforcement and structured run telemetry.|
-|VEXER-WEB-01-003 – Export & verify endpoints|Team Vexer WebService|VEXER-WEB-01-001, VEXER-EXPORT-01-001, VEXER-ATTEST-01-001|TODO – Add `/vexer/export`, `/vexer/export/{id}`, `/vexer/export/{id}/download`, `/vexer/verify`, returning artifact + attestation metadata with cache awareness.|
-|VEXER-WEB-01-004 – Resolve API & signed responses|Team Vexer WebService|VEXER-WEB-01-001, VEXER-ATTEST-01-002|TODO – Deliver `/vexer/resolve` (subject/context), return consensus + score envelopes, attach cosign/Rekor metadata, and document auth + rate guardrails.|
diff --git a/src/StellaOps.Vexer.Worker/Properties/AssemblyInfo.cs b/src/StellaOps.Vexer.Worker/Properties/AssemblyInfo.cs
deleted file mode 100644
index bbbd22fd..00000000
--- a/src/StellaOps.Vexer.Worker/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,3 +0,0 @@
-using System.Runtime.CompilerServices;
-
-[assembly: InternalsVisibleTo("StellaOps.Vexer.Worker.Tests")]
diff --git a/src/StellaOps.Vexer.Worker/TASKS.md b/src/StellaOps.Vexer.Worker/TASKS.md
deleted file mode 100644
index 863ebf09..00000000
--- a/src/StellaOps.Vexer.Worker/TASKS.md
+++ /dev/null
@@ -1,8 +0,0 @@
-If you are working on this file you need to read docs/ARCHITECTURE_VEXER.md and ./AGENTS.md).
-# TASKS
-| Task | Owner(s) | Depends on | Notes |
-|---|---|---|---|
-|VEXER-WORKER-01-001 – Worker host & scheduling|Team Vexer Worker|VEXER-STORAGE-01-003, VEXER-WEB-01-001|**DONE (2025-10-17)** – Worker project bootstraps provider schedules from configuration, integrates plugin catalog discovery, and emits structured logs/metrics-ready events via `VexWorkerHostedService`; scheduling logic covered by `VexWorkerOptionsTests`.|
-|VEXER-WORKER-01-002 – Resume tokens & retry policy|Team Vexer Worker|VEXER-WORKER-01-001|TODO – Implement durable resume markers, exponential backoff with jitter, and quarantine for failing connectors per architecture spec.|
-|VEXER-WORKER-01-003 – Verification & cache GC loops|Team Vexer Worker|VEXER-WORKER-01-001, VEXER-ATTEST-01-003, VEXER-EXPORT-01-002|TODO – Add scheduled attestation re-verification and cache pruning routines, surfacing metrics for export reuse ratios.|
-|VEXER-WORKER-01-004 – TTL refresh & stability damper|Team Vexer Worker|VEXER-WORKER-01-001, VEXER-CORE-02-001|TODO – Monitor consensus/VEX TTLs, apply 24–48h dampers before flipping published status/score, and trigger re-resolve when base image or kernel fingerprints change.|
diff --git a/src/StellaOps.sln b/src/StellaOps.sln
index 2bdce374..ccf8698b 100644
--- a/src/StellaOps.sln
+++ b/src/StellaOps.sln
@@ -181,61 +181,61 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Cryptography.Test
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Cryptography.DependencyInjection", "StellaOps.Cryptography.DependencyInjection\StellaOps.Cryptography.DependencyInjection.csproj", "{B84FE2DD-A1AD-437C-95CF-89C1DCCFDF6F}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Core", "StellaOps.Vexer.Core\StellaOps.Vexer.Core.csproj", "{3288F0F8-FF86-4DB3-A1FD-8EB51893E8C2}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Core", "StellaOps.Excititor.Core\StellaOps.Excititor.Core.csproj", "{3288F0F8-FF86-4DB3-A1FD-8EB51893E8C2}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Core.Tests", "StellaOps.Vexer.Core.Tests\StellaOps.Vexer.Core.Tests.csproj", "{680CA103-DCE8-4D02-8979-72DEA5BE8C00}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Core.Tests", "StellaOps.Excititor.Core.Tests\StellaOps.Excititor.Core.Tests.csproj", "{680CA103-DCE8-4D02-8979-72DEA5BE8C00}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Policy", "StellaOps.Vexer.Policy\StellaOps.Vexer.Policy.csproj", "{7F4B19D4-569A-4CCF-B481-EBE04860451A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Policy", "StellaOps.Excititor.Policy\StellaOps.Excititor.Policy.csproj", "{7F4B19D4-569A-4CCF-B481-EBE04860451A}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Policy.Tests", "StellaOps.Vexer.Policy.Tests\StellaOps.Vexer.Policy.Tests.csproj", "{DE9863B5-E6D6-4C5F-B52A-ED9E964008A3}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Policy.Tests", "StellaOps.Excititor.Policy.Tests\StellaOps.Excititor.Policy.Tests.csproj", "{DE9863B5-E6D6-4C5F-B52A-ED9E964008A3}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Storage.Mongo", "StellaOps.Vexer.Storage.Mongo\StellaOps.Vexer.Storage.Mongo.csproj", "{E380F242-031E-483E-8570-0EF7EA525C4F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Storage.Mongo", "StellaOps.Excititor.Storage.Mongo\StellaOps.Excititor.Storage.Mongo.csproj", "{E380F242-031E-483E-8570-0EF7EA525C4F}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Export", "StellaOps.Vexer.Export\StellaOps.Vexer.Export.csproj", "{42582C16-F5A9-417F-9D33-BC489925324F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Export", "StellaOps.Excititor.Export\StellaOps.Excititor.Export.csproj", "{42582C16-F5A9-417F-9D33-BC489925324F}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Export.Tests", "StellaOps.Vexer.Export.Tests\StellaOps.Vexer.Export.Tests.csproj", "{06F40DA8-FEFA-4C2B-907B-155BD92BB859}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Export.Tests", "StellaOps.Excititor.Export.Tests\StellaOps.Excititor.Export.Tests.csproj", "{06F40DA8-FEFA-4C2B-907B-155BD92BB859}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Connectors.RedHat.CSAF", "StellaOps.Vexer.Connectors.RedHat.CSAF\StellaOps.Vexer.Connectors.RedHat.CSAF.csproj", "{A2E3F03A-0CAD-4E2A-8C71-DDEBB1B7E4F7}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Connectors.RedHat.CSAF", "StellaOps.Excititor.Connectors.RedHat.CSAF\StellaOps.Excititor.Connectors.RedHat.CSAF.csproj", "{A2E3F03A-0CAD-4E2A-8C71-DDEBB1B7E4F7}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Connectors.RedHat.CSAF.Tests", "StellaOps.Vexer.Connectors.RedHat.CSAF.Tests\StellaOps.Vexer.Connectors.RedHat.CSAF.Tests.csproj", "{3A1AF0AD-4DAE-4D82-9CCF-2DCB83CC3679}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Connectors.RedHat.CSAF.Tests", "StellaOps.Excititor.Connectors.RedHat.CSAF.Tests\StellaOps.Excititor.Connectors.RedHat.CSAF.Tests.csproj", "{3A1AF0AD-4DAE-4D82-9CCF-2DCB83CC3679}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Connectors.Abstractions", "StellaOps.Vexer.Connectors.Abstractions\StellaOps.Vexer.Connectors.Abstractions.csproj", "{F1DF0F07-1BCB-4B55-8353-07BF8A4B2A67}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Connectors.Abstractions", "StellaOps.Excititor.Connectors.Abstractions\StellaOps.Excititor.Connectors.Abstractions.csproj", "{F1DF0F07-1BCB-4B55-8353-07BF8A4B2A67}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Worker", "StellaOps.Vexer.Worker\StellaOps.Vexer.Worker.csproj", "{781EC793-1DB0-4E31-95BC-12A2B373045F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Worker", "StellaOps.Excititor.Worker\StellaOps.Excititor.Worker.csproj", "{781EC793-1DB0-4E31-95BC-12A2B373045F}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Worker.Tests", "StellaOps.Vexer.Worker.Tests\StellaOps.Vexer.Worker.Tests.csproj", "{BB863E0C-50FF-41AE-9C13-4E8A1BABC62C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Worker.Tests", "StellaOps.Excititor.Worker.Tests\StellaOps.Excititor.Worker.Tests.csproj", "{BB863E0C-50FF-41AE-9C13-4E8A1BABC62C}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Formats.CSAF", "StellaOps.Vexer.Formats.CSAF\StellaOps.Vexer.Formats.CSAF.csproj", "{14E9D043-F0EF-4F68-AE83-D6F579119D9A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Formats.CSAF", "StellaOps.Excititor.Formats.CSAF\StellaOps.Excititor.Formats.CSAF.csproj", "{14E9D043-F0EF-4F68-AE83-D6F579119D9A}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Formats.CSAF.Tests", "StellaOps.Vexer.Formats.CSAF.Tests\StellaOps.Vexer.Formats.CSAF.Tests.csproj", "{27E94B6E-DEF8-4B89-97CB-424703790ECE}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Formats.CSAF.Tests", "StellaOps.Excititor.Formats.CSAF.Tests\StellaOps.Excititor.Formats.CSAF.Tests.csproj", "{27E94B6E-DEF8-4B89-97CB-424703790ECE}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Formats.CycloneDX", "StellaOps.Vexer.Formats.CycloneDX\StellaOps.Vexer.Formats.CycloneDX.csproj", "{361E3E23-B215-423D-9906-A84171E20AD3}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Formats.CycloneDX", "StellaOps.Excititor.Formats.CycloneDX\StellaOps.Excititor.Formats.CycloneDX.csproj", "{361E3E23-B215-423D-9906-A84171E20AD3}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Formats.CycloneDX.Tests", "StellaOps.Vexer.Formats.CycloneDX.Tests\StellaOps.Vexer.Formats.CycloneDX.Tests.csproj", "{7A7A3480-C6C3-4A9F-AF46-1889424B9AC2}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Formats.CycloneDX.Tests", "StellaOps.Excititor.Formats.CycloneDX.Tests\StellaOps.Excititor.Formats.CycloneDX.Tests.csproj", "{7A7A3480-C6C3-4A9F-AF46-1889424B9AC2}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Formats.OpenVEX", "StellaOps.Vexer.Formats.OpenVEX\StellaOps.Vexer.Formats.OpenVEX.csproj", "{C3EAFCB8-0394-4B74-B9A6-3DBA4509201F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Formats.OpenVEX", "StellaOps.Excititor.Formats.OpenVEX\StellaOps.Excititor.Formats.OpenVEX.csproj", "{C3EAFCB8-0394-4B74-B9A6-3DBA4509201F}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Formats.OpenVEX.Tests", "StellaOps.Vexer.Formats.OpenVEX.Tests\StellaOps.Vexer.Formats.OpenVEX.Tests.csproj", "{E86CF4A6-2463-4589-A9D8-9DF557C48367}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Formats.OpenVEX.Tests", "StellaOps.Excititor.Formats.OpenVEX.Tests\StellaOps.Excititor.Formats.OpenVEX.Tests.csproj", "{E86CF4A6-2463-4589-A9D8-9DF557C48367}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Connectors.Cisco.CSAF", "StellaOps.Vexer.Connectors.Cisco.CSAF\StellaOps.Vexer.Connectors.Cisco.CSAF.csproj", "{B308B94C-E01F-4449-A5A6-CD7A48E52D15}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Connectors.Cisco.CSAF", "StellaOps.Excititor.Connectors.Cisco.CSAF\StellaOps.Excititor.Connectors.Cisco.CSAF.csproj", "{B308B94C-E01F-4449-A5A6-CD7A48E52D15}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Connectors.Cisco.CSAF.Tests", "StellaOps.Vexer.Connectors.Cisco.CSAF.Tests\StellaOps.Vexer.Connectors.Cisco.CSAF.Tests.csproj", "{9FBA3EC4-D794-48BD-82FA-0289E5A2A5FF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Connectors.Cisco.CSAF.Tests", "StellaOps.Excititor.Connectors.Cisco.CSAF.Tests\StellaOps.Excititor.Connectors.Cisco.CSAF.Tests.csproj", "{9FBA3EC4-D794-48BD-82FA-0289E5A2A5FF}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Connectors.SUSE.RancherVEXHub", "StellaOps.Vexer.Connectors.SUSE.RancherVEXHub\StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.csproj", "{E076DC9C-B436-44BF-B02E-FA565086F805}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Connectors.SUSE.RancherVEXHub", "StellaOps.Excititor.Connectors.SUSE.RancherVEXHub\StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.csproj", "{E076DC9C-B436-44BF-B02E-FA565086F805}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Tests", "StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Tests\StellaOps.Vexer.Connectors.SUSE.RancherVEXHub.Tests.csproj", "{55500025-FE82-4F97-A261-9BAEA4B10845}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Tests", "StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Tests\StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Tests.csproj", "{55500025-FE82-4F97-A261-9BAEA4B10845}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Connectors.MSRC.CSAF", "StellaOps.Vexer.Connectors.MSRC.CSAF\StellaOps.Vexer.Connectors.MSRC.CSAF.csproj", "{CD12875F-9367-41BD-810C-7FBE76314F17}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Connectors.MSRC.CSAF", "StellaOps.Excititor.Connectors.MSRC.CSAF\StellaOps.Excititor.Connectors.MSRC.CSAF.csproj", "{CD12875F-9367-41BD-810C-7FBE76314F17}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Connectors.MSRC.CSAF.Tests", "StellaOps.Vexer.Connectors.MSRC.CSAF.Tests\StellaOps.Vexer.Connectors.MSRC.CSAF.Tests.csproj", "{063D3280-9918-465A-AF2D-3650A2A50D03}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Connectors.MSRC.CSAF.Tests", "StellaOps.Excititor.Connectors.MSRC.CSAF.Tests\StellaOps.Excititor.Connectors.MSRC.CSAF.Tests.csproj", "{063D3280-9918-465A-AF2D-3650A2A50D03}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Connectors.Oracle.CSAF", "StellaOps.Vexer.Connectors.Oracle.CSAF\StellaOps.Vexer.Connectors.Oracle.CSAF.csproj", "{A3EEE400-3655-4B34-915A-598E60CD55FB}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Connectors.Oracle.CSAF", "StellaOps.Excititor.Connectors.Oracle.CSAF\StellaOps.Excititor.Connectors.Oracle.CSAF.csproj", "{A3EEE400-3655-4B34-915A-598E60CD55FB}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Connectors.Oracle.CSAF.Tests", "StellaOps.Vexer.Connectors.Oracle.CSAF.Tests\StellaOps.Vexer.Connectors.Oracle.CSAF.Tests.csproj", "{577025AD-2FDD-42DF-BFA2-3FC095B50539}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Connectors.Oracle.CSAF.Tests", "StellaOps.Excititor.Connectors.Oracle.CSAF.Tests\StellaOps.Excititor.Connectors.Oracle.CSAF.Tests.csproj", "{577025AD-2FDD-42DF-BFA2-3FC095B50539}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Connectors.Ubuntu.CSAF", "StellaOps.Vexer.Connectors.Ubuntu.CSAF\StellaOps.Vexer.Connectors.Ubuntu.CSAF.csproj", "{DD3B2076-E5E0-4533-8D27-7724225D7758}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Connectors.Ubuntu.CSAF", "StellaOps.Excititor.Connectors.Ubuntu.CSAF\StellaOps.Excititor.Connectors.Ubuntu.CSAF.csproj", "{DD3B2076-E5E0-4533-8D27-7724225D7758}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Vexer.Connectors.Ubuntu.CSAF.Tests", "StellaOps.Vexer.Connectors.Ubuntu.CSAF.Tests\StellaOps.Vexer.Connectors.Ubuntu.CSAF.Tests.csproj", "{CADA1364-8EB1-479E-AB6F-4105C26335C8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StellaOps.Excititor.Connectors.Ubuntu.CSAF.Tests", "StellaOps.Excititor.Connectors.Ubuntu.CSAF.Tests\StellaOps.Excititor.Connectors.Ubuntu.CSAF.Tests.csproj", "{CADA1364-8EB1-479E-AB6F-4105C26335C8}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution