# Concelier connector credentials matrix
Sprint:
SPRINT_20260505_026_Connectors_vendor_credentials_backlog.mdtask B-CRED-001. Source of truth: each connector’s*Options.csand*DependencyInjectionRoutine.csundersrc/Concelier/__Libraries/StellaOps.Concelier.Connector.<Vendor>/. Operator decisions (per-row enable / defer / decline) are captured in B-CRED-002 using this matrix as input.
Reference-based credentials — kill plaintext at rest (SPRINT_20260703_003)
Custody review P0 #2. Connector secret-bearing config fields (apiToken / subscriptionToken — GitHub PAT, Red Hat subscription token) now accept a secret reference (builtin://… / vault://… / openbao://…) instead of a plaintext token. The reference is resolved in-host through the unified ISecretProvider (ADR-031/032) by SecretProviderRemoteCredentialResolver — the chosen alternative to the Platform HTTP bridge (AddPlatformRemoteCredentialResolver), so a feed pull needs no runtime dependency on the Platform WebService (air-gap posture). It plugs into the SAME IRemoteCredentialResolver seam the overlays already consume (TryGetCached step 1); a plain literal value is left inline (back-compat).
- Scope: single-value connectors
ghsa,redhat,redhat-csafAND — since the 2026-07-04 composed-credential follow-up — composed-credential connectors (cisco/microsoftOAuth pair,cvetriple). EACH composed field can independently hold a reference (e.g.clientSecret = vault://…whileclientIdstays plain); the resolver resolves the reference-bearing fields and composes the"{a}:{b}[:{c}]"plaintext the overlays already parse. - Fail-closed: a recognised-but-unresolvable reference throws
RemoteCredentialResolutionException. The fetch-job warm-up propagates it before the connector runs, while the overlay also refuses to copy a reference-shaped value verbatim (ConnectorSecretReference) on direct/non-job option reads. - Seal-at-rest:
ConnectorCredentialSealMigration(forward-only, idempotent) seals existing plaintext single-value secrets AND the SECRET half of composed credentials (Cisco/MSRCclientSecret, CVEapiKey) into the builtin store and rewrites the config field to abuiltin://reference; the non-secret identifiers (clientId/tenantId/apiOrg/apiUser) stay plain. A post-pass sweep proves no plaintext secret remains. - Code:
src/Concelier/__Libraries/StellaOps.Concelier.Connector.Common/Credentials/—SecretProviderRemoteCredentialResolver.cs,ConnectorCredentialSealMigration.cs,ConnectorSecretReference.cs,RemoteCredentialResolverServiceCollectionExtensions.AddSecretProviderRemoteCredentialResolver. - Operations:
docs/runbooks/concelier-connector-operations.md→ “Reference-based connector credentials”.
Platform credential store wiring (RFC-0001 §8.2)
The five credentialed connectors below resolve through the Platform store via IRemoteCredentialResolver (precedence step 1) ahead of env-var / source-config (step 2) and the connector’s natural fallback (step 3). All wiring landed under SPRINT_20260512_021 TASK-021-03/07 and the per-vendor verification sprints 052/053/054/055.
| connector_id | overlay class | plaintext schema | step-3 fallback | sprint |
|---|---|---|---|---|
concelier:ghsa | GhsaRuntimeOverlay | single PAT (UTF-8 string) | anonymous GitHub REST | 052 |
concelier:msrc | MsrcRuntimeOverlay | "{aadTenantId}:{clientId}:{clientSecret}" | skip-with-WARN (Sprint 037) | 053 |
concelier:cisco | CiscoRuntimeOverlay | "{clientId}:{clientSecret}" | skip-with-WARN (Sprint 037) | 054 |
concelier:cve | CveRuntimeOverlay | "{apiOrg}:{apiUser}:{apiKey}" | public cvelistV5 mirror | 055 |
concelier:redhat | RedHatRuntimeOverlay | single subscription token (UTF-8 string) | anonymous Hydra | 021 |
excititor:redhat-csaf | RedHatCsafCredentialOverlay | single subscription token (UTF-8 string) | anonymous CSAF index | 021 |
Resolver invariants:
- Synchronous
TryGetCached(connectorId, tenantId, out cached)path insideIPostConfigureOptions<T>.PostConfigure— never blocks on HTTP. - Each GHSA/CVE/Cisco/MSRC/Red Hat fetch job warms the resolver before reading options or creating its HTTP client, using the envelope tenant or the background storage
DefaultTenant; after resolution it invalidates the connector’s typed/HTTP option caches so the first pull consumes the resolved value. - Valkey
connector-credentials-changedchannel invalidates the in-process cache on rotation (best-effort; degrades gracefully to 30 s TTL on single-node installs without Valkey). - Untenanted ticks skip step 1 (RFC §4) and fall straight to step 2.
concelier:credentials:dry-runscope governs the vendor-API probe (Sprint 512_032 — GHSA + Cisco only today; others return 501).
Reading the env-var column
Concelier services bind configuration through AddStellaOpsDefaults with EnvironmentPrefix = "CONCELIER_" (src/Concelier/StellaOps.Concelier.WebService/Program.cs:142). Standard .NET IConfiguration rules apply, so a config key concelier:sources:cisco:ClientId resolves from environment variable:
CONCELIER_concelier__sources__cisco__ClientId
(env prefix CONCELIER_, then the section path with : replaced by __). Equivalently you can set it under etc/concelier.yaml as concelier.sources.cisco.clientId. The matrix lists the config key (left of =) — operators wire the matching env var.
Geo / export-control note
Rows tagged geo: classified (e.g. fstec-bdu, nkcki) ingest from feeds operated by sanctioned or restricted entities. Enabling them requires legal/export-control review (EAR/OFAC, EU dual-use, local equivalents) before a credential or a route reaches production. The B-CRED-002 operator decision step must not override classified rows without sign-off captured in the sprint Decisions & Risks log.
How to read “auth mechanism”
- none-public — no credential; the connector scrapes a public HTML/RSS/Atom/JSON feed. The “AUTH-SKIPPED” label from CYCLE-007 for these rows means the feed itself is unreachable from the deployment network, not that an API key is missing. Operator decision is a network/policy call, not a credential acquisition.
- OSV-alias — the connector is an attribution alias only. Real ingestion is performed by the OSV connector (source key
osv) which routes by ecosystem tag. No credential is needed; rows withenabled=falseexist so operators can suppress that ecosystem from policy/UI. - GHSA-filter - the row is an operator-visible package ecosystem filter over GitHub Security Advisory data. Real ingestion is performed by
ghsa. - canonical-alias - the row is kept for filtering and attribution, but coverage is served by a canonical source key such as
redhatormicrosoft. - PAT-optional — public API access works anonymously, while an optional personal/application token can raise rate limits or support enterprise routing.
- PAT — long-lived personal/application token, sent in
Authorization: token …or similar. - OAuth2 client_credentials — confidential-client flow exchanging a
clientId/clientSecretfor short-lived bearer tokens. - API key — opaque shared secret bound to a registered organisation/user.
Vendor advisories
| source_key | connector path | auth mechanism | how to obtain | env var / config key | rate limits | cost | geo |
|---|---|---|---|---|---|---|---|
ghsa | Connector.Ghsa | PAT-optional (anonymous GitHub REST global advisories by default; token raises rate limits) | Optional: github.com → Settings → Developer settings → Personal access tokens; https://github.com/settings/tokens | Optional concelier:sources:ghsa:ApiToken (also :BaseEndpoint, :PageSize, :MaxPagesPerFetch) | code-tracked: RateLimitWarningThreshold=500 (warn under 500 remaining), SecondaryRateLimitBackoff=2 min | free | none |
microsoft (MSRC) | Connector.Vndr.Msrc | OAuth2 client_credentials (Azure AD app) against api://api.msrc.microsoft.com/.default | Register an Azure AD app in your tenant; consent the MSRC Security Update Guide API. See https://api.msrc.microsoft.com/sug/v2.0/swagger and Microsoft’s MSRC SUG onboarding docs. | concelier:sources:microsoft:TenantId, :ClientId, :ClientSecret, :Scope (default api://api.msrc.microsoft.com/.default) | RequestDelay=250 ms, PageSize<=500, FailureBackoff=5 min | free | none |
cisco | Connector.Vndr.Cisco | OAuth2 client_credentials against https://id.cisco.com/oauth2/default/v1/token | Cisco API Console: https://apiconsole.cisco.com/ → register an app → enable “OpenVuln API” entitlement. | concelier:sources:cisco:ClientId, :ClientSecret, :TokenEndpoint, :BaseUri | PageSize<=100, RequestDelay=250 ms, RequestTimeout=30 s, retry attempts=5 | free (entitlement gated) | none |
oracle | Connector.Vndr.Oracle | none-public (HTML calendar + advisory pages) | n/a — public scrape of https://www.oracle.com/security-alerts/ | concelier:sources:oracle:CalendarUris[], :AdvisoryUris[], :RequestDelay (default 1 s) | self-throttled at RequestDelay=1 s | free | none |
adobe | Connector.Vndr.Adobe | none-public (HTML index scrape) | n/a — public scrape of https://helpx.adobe.com/security/security-bulletin.html | concelier:sources:adobe:IndexUri, :AdditionalIndexUris[], :InitialBackfill, :WindowOverlap | self-throttled; MaxEntriesPerFetch=100 | free | none |
chromium | Connector.Vndr.Chromium | none-public (Atom feed) | n/a — public Atom at https://chromereleases.googleblog.com/atom.xml | concelier:sources:chromium:FeedUri, :MaxFeedPages, :MaxEntriesPerPage (1–100) | self-throttled; MaxEntriesPerPage<=100 | free | none |
apple | Connector.Vndr.Apple | none-public (Apple Support security releases + detail pages) | n/a — public endpoints https://support.apple.com/en-us/100100 + https://support.apple.com/en-us/<article> | concelier:sources:apple:SoftwareLookupUri, :AdvisoryBaseUri, :LocaleSegment, :MaxAdvisoriesPerFetch=50 | self-throttled; allowlist/blocklist support | free | none |
vmware | Connector.Vndr.Vmware | none-public (Broadcom Security Advisory portal HTML) | n/a — public scrape of https://support.broadcom.com/web/ecx/security-advisory?segment=VC | concelier:sources:vmware:IndexUri, :MaxAdvisoriesPerFetch=50, :RequestDelay=250 ms, :HttpTimeout=2 min | self-throttled | free | none |
siemens | Connector.Vndr.Siemens | none-public (CSAF documents over HTTPS) | n/a — public CSAF feed at https://cert-portal.siemens.com/productcert/csaf/ | concelier:sources:siemens:BaseEndpoint, :UseProductionBackend, :SourceDb | not documented in code | free | none |
intel | Connector.Vndr.Intel | none-public (official CSAF JSON over GitHub) | n/a - public GitHub Contents API at https://api.github.com/repos/intel/security-center/contents/advisories; advisory JSON downloaded from https://raw.githubusercontent.com/intel/security-center/... | concelier:sources:intel:BaseEndpoint, :MaxAdvisoriesPerFetch, :UseProductionBackend, :SourceDb | self-throttled by per-fetch cap; no credential required | free | none |
amd | Connector.Vndr.Amd | none-public (HTML PSIRT page) — production backend stub: fails closed until per-vendor fetcher lands | n/a — public scrape target https://www.amd.com/en/resources/product-security.html | concelier:sources:amd:BaseEndpoint, :UseProductionBackend, :SourceDb | n/a (fetcher not implemented) | free | none |
Cloud-platform coverage
AWS and GCP have no-credential public fetchers. The standalone azure connector was removed (2026-06-25) — it was an intentional no-op that produced 0 advisories; Azure CVEs are ingested by microsoft/MSRC. The seeded azure catalog row (enabled=false) remains for attribution/policy filtering only. See ../connector-disposition.md.
| source_key | connector path | auth mechanism | how to obtain | env var / config key | rate limits | cost | geo |
|---|---|---|---|---|---|---|---|
aws | Connector.Cloud.Aws | none-public (RSS fetcher, Sprint 046) | n/a | concelier:sources:aws:UseProductionBackend, :FeedUrl, :SourceDb, :MaxAdvisoriesPerFetch | none documented | free | none |
azure | connector removed 2026-06-25 (catalog row only, enabled=false) | n/a (no connector; Azure CVEs ingested via microsoft/MSRC) | n/a - Azure CVEs ingested via microsoft/MSRC connector | n/a | n/a | free | none |
gcp | Connector.Cloud.Gcp | none-public (Atom fetcher, Sprint 046) | n/a | concelier:sources:gcp:UseProductionBackend, :FeedUrl, :SourceDb, :MaxAdvisoriesPerFetch | none documented | free | none |
CERTs
| source_key | connector path | auth mechanism | how to obtain | env var / config key | rate limits | cost | geo |
|---|---|---|---|---|---|---|---|
cccs | Connector.Cccs | none-public (Drupal-style JSON API at cyber.gc.ca) | n/a — public endpoints, `?lang=en | fr` | concelier:sources:cccs:Feeds[] (language+URI pairs), :MaxEntriesPerFetch=80, :RequestTimeout=30 s, :RequestDelay=250 ms, :FailureBackoff=1 min | self-throttled | free |
jpcert (JVN) | Connector.Jvn | none-public (MyJVN public API) | n/a — public API at https://jvndb.jvn.jp/myjvn | concelier:sources:jpcert:BaseEndpoint, :WindowSize=7d, :WindowOverlap=1d, :PageSize<=50, :RequestDelay=500 ms, :MaxOverviewPagesPerFetch=20 | code-tracked: MyJVN max page size = 50 | free | none |
krcert (KISA) | Connector.Kisa | none-public (RSS + RSS-detail JSON-ish at knvd.krcert.or.kr) | n/a — public RSS at https://knvd.krcert.or.kr/rss/securityInfo.do | concelier:sources:krcert:FeedUri, :DetailApiUri, :DetailPageUri, :RequestTimeout=30 s, :RequestDelay=250 ms, :MaxAdvisoriesPerFetch=20 | self-throttled | free | none from the connector — but feed host frequently unreachable from non-KR egress (deployment-network call) |
cert-de (CERT-Bund / WID) | Connector.CertBund | none-public (RSS + portal JSON, requires session-cookie bootstrap from wid.cert-bund.de/portal/) | n/a — public RSS + SPA JSON | concelier:sources:cert-de:FeedUri, :PortalBootstrapUri, :DetailApiUri, :RequestTimeout=30 s, :RequestDelay=250 ms, :MaxAdvisoriesPerFetch=50 | self-throttled | free | none |
cert-fr | Connector.CertFr | none-public (RSS at cert.ssi.gouv.fr) | n/a — public RSS at https://www.cert.ssi.gouv.fr/alerte/feed/ | concelier:sources:cert-fr:FeedUri, :InitialBackfill=30d, :WindowOverlap=2d, :MaxItemsPerFetch=100, :RequestDelay=0 | self-throttled (zero default delay) | free | none |
cert-in | Connector.CertIn | none-public (paginated alerts JSON at cert-in.org.in) | n/a — public API at https://www.cert-in.org.in/api/alerts | concelier:sources:cert-in:AlertsEndpoint, :WindowSize=30d, :WindowOverlap=2d, :MaxPagesPerFetch=5, :RequestDelay=500 ms | self-throttled | free | none from the connector — host occasionally geo-blocks non-IN egress (deployment-network call) |
cert-at | Connector.NationalCert | none-public (RSS at cert.at) | n/a - public RSS | concelier:sources:cert-at:FeedUri, :AdditionalFeedUris, :InitialBackfill=365d, :WindowOverlap=2d, :MaxItemsPerFetch=100, :RequestDelay=0 | self-throttled | free | none |
cert-be | Connector.NationalCert | none-public (CCB advisories RSS) | n/a - public RSS | concelier:sources:cert-be:FeedUri, :AdditionalFeedUris, :InitialBackfill=365d, :WindowOverlap=2d, :MaxItemsPerFetch=100, :RequestDelay=0 | self-throttled | free | none |
cert-eu | Connector.NationalCert | none-public (CERT-EU security advisory RSS) | n/a - public RSS | concelier:sources:cert-eu:FeedUri, :AdditionalFeedUris, :InitialBackfill=365d, :WindowOverlap=2d, :MaxItemsPerFetch=100, :RequestDelay=0 | self-throttled | free | none |
cert-ua | Connector.NationalCert | none-public (CERT-UA article RSS) | n/a - public RSS | concelier:sources:cert-ua:FeedUri, :AdditionalFeedUris, :InitialBackfill=365d, :WindowOverlap=2d, :MaxItemsPerFetch=100, :RequestDelay=0; disabled by default | self-throttled | free | none |
cert-pl | Connector.NationalCert | none-public (CERT Polska RSS) | n/a - public RSS | concelier:sources:cert-pl:FeedUri, :AdditionalFeedUris, :InitialBackfill=365d, :WindowOverlap=2d, :MaxItemsPerFetch=100, :RequestDelay=0; disabled by default | self-throttled | free | none |
ICS / national CIS sources
| source_key | connector path | auth mechanism | how to obtain | env var / config key | rate limits | cost | geo |
|---|---|---|---|---|---|---|---|
kaspersky-ics | Connector.Ics.Kaspersky | none-public (RSS at ics-cert.kaspersky.com) | n/a — public RSS at https://ics-cert.kaspersky.com/feed-advisories/ | concelier:sources:kaspersky-ics:FeedUri, :WindowSize=30d, :WindowOverlap=2d, :MaxPagesPerFetch=3, :RequestDelay=500 ms | self-throttled | free | classified — Kaspersky is on multiple sanctions/advisory lists in the US/UK; export-control review required before enabling in those jurisdictions |
fstec-bdu (Russia) | Connector.Ru.Bdu | none-public (downloads vulxml.zip archive over HTTPS) | n/a — public archive at https://bdu.fstec.ru/files/documents/vulxml.zip | concelier:sources:fstec-bdu:BaseAddress, :DataArchivePath, :RequestTimeout=2 min, :FailureBackoff=30 min, :UserAgent, :AcceptLanguage, :MaxVulnerabilitiesPerFetch=500, :CacheDirectory | self-throttled (one archive download per cycle) | free | classified — FSTEC is a Russian Federal Service; OFAC/EU dual-use review required before enabling |
nkcki (Russia) | Connector.Ru.Nkcki | none-public (HTML listing at cert.gov.ru/materialy/uyazvimosti/ + bulletin attachments) | n/a — public scrape | concelier:sources:nkcki:BaseAddress, :ListingPath, :RequestTimeout=90 s, :FailureBackoff=20 min, :MaxBulletinsPerFetch=5, :MaxListingPagesPerFetch=3, :MaxVulnerabilitiesPerFetch=250, :KnownBulletinCapacity=512, :RequestDelay=250 ms, :ListingCacheDuration=10 min, :UserAgent, :AcceptLanguage, :CacheDirectory | self-throttled | classified — NKTsKI (HKЦКИ) is the Russian national CERT; OFAC/EU dual-use review required before enabling |
Primary databases (mixed — included for completeness because CYCLE-007 surfaced cve as AUTH-SKIPPED)
| source_key | connector path | auth mechanism | how to obtain | env var / config key | rate limits | cost | geo |
|---|---|---|---|---|---|---|---|
cve | Connector.Cve | No credential for public cvelistV5; optional API key for CVE Services; operator-supplied baseline zip / seed directory fallback | Default no-credential mode drains a configured cvelistV5 baseline zip, then reads official public https://raw.githubusercontent.com/CVEProject/cvelistV5/main/cves/. Apply for CVE Services credentials only when using the authenticated API path. | concelier:sources:cve:CveListV5Endpoint, optional :ApiOrg, :ApiUser, :ApiKey, :CveListV5BaselineZipPath, :CveListV5BaselineZipSha256, :SeedDirectory, :BaseEndpoint, :PageSize<=500, :MaxPagesPerFetch=5, :InitialBackfill=30d, :RequestDelay=250 ms, :FailureBackoff=10 min | self-throttled; local baseline zip avoids public fetch for the corpus; public GitHub/raw path has anonymous HTTP limits; CVE Services advertises throttling but no hard numbers in code | free | none |
debian | Connector.Distro.Debian | none-public (DSA list/details; optional full security-tracker JSON corpus) | n/a - public Debian Security Tracker endpoints. For parity with Debian CVE corpus coverage, enable the JSON tracker path or point it at an internal mirror. | concelier:sources:debian:ListEndpoint, :DetailBaseUri, :SecurityPageBaseUri, :MaxAdvisoriesPerFetch=40, :FetchTimeout=45 s, :RequestDelay=0, :EnableJsonTracker=false, :JsonTrackerEndpoint, :JsonMaxAdvisoriesPerMapCycle=5000, :JsonTrackerReleases[] | self-throttled by DSA per-fetch cap and JSON map-cycle cap; no credential required | free | none |
Ecosystem aliases (OSV-routed — no credential needed)
These connectors are alias-only. Data ingestion is performed by Connector.Osv (source key osv), and the alias rows exist so operators can enable/disable per ecosystem from policy/UI and so attribution maps records to the correct source key. No credential is required, and “AUTH-SKIPPED” in CYCLE-007 reflects that they intentionally produce zero direct rows; counts come through the OSV connector.
| source_key | connector path | auth mechanism | how to obtain | env var / config key | rate limits | cost | geo |
|---|---|---|---|---|---|---|---|
hex | Connector.Hex | OSV-alias | n/a | concelier:sources:hex:Ecosystem (default Hex) | inherits OSV connector’s throttling | free | none |
npm | Connector.Npm | OSV-alias | n/a | concelier:sources:npm:Ecosystem (default npm) | inherits OSV | free | none |
pypi | Connector.PyPi | OSV-alias | n/a | concelier:sources:pypi:Ecosystem (default PyPI) | inherits OSV | free | none |
go | Connector.Go | OSV-alias | n/a | concelier:sources:go:Ecosystem (default Go) | inherits OSV | free | none |
govuln | Connector.GoVuln | OSV-alias | n/a | concelier:sources:govuln:Ecosystem (default Go) | inherits OSV | free | none |
maven | Connector.Maven | OSV-alias | n/a | concelier:sources:maven:Ecosystem (default Maven) | inherits OSV | free | none |
crates | Connector.Crates | OSV-alias | n/a | concelier:sources:crates:Ecosystem (default crates.io) | inherits OSV | free | none |
packagist | Connector.Packagist | OSV-alias | n/a | concelier:sources:packagist:Ecosystem (default Packagist) | inherits OSV | free | none |
pypa | Connector.PyPa | OSV-alias | n/a | concelier:sources:pypa:Ecosystem (default PyPI), :SourceDb | inherits OSV | free | none |
rubygems | Connector.RubyGems | OSV-alias | n/a | concelier:sources:rubygems:Ecosystem (default RubyGems) | inherits OSV | free | none |
rustsec | Connector.RustSec | OSV-alias | n/a | concelier:sources:rustsec:Ecosystem (default crates.io), :SourceDb | inherits OSV | free | none |
bundler-audit | Connector.BundlerAudit | OSV-alias | n/a | concelier:sources:bundler-audit:Ecosystem (default RubyGems), :SourceDb | inherits OSV | free | none |
chainguard | Connector.Chainguard | OSV-alias | n/a | concelier:sources:chainguard:Ecosystem (default Chainguard) | inherits OSV | free | none |
wolfi | Connector.Wolfi | OSV-alias | n/a | concelier:sources:wolfi:Ecosystem (default Wolfi) | inherits OSV | free | none |
Removed legacy advisory sources
armwas removed in Sprint 20260601_001 because the former production backend failed closed and no approved machine-readable Arm advisory feed has been identified. Fresh startup migrations remove existingvuln.sources, mirror-domain, and project references.
MITRE knowledge bases
Removed under PM Path 2 decision (Sprint 20260513_008, CON-MITRE-004). The Connector.MitreAttack and Connector.MitreD3fend libraries, tests, plugin manifests, and vuln.sources seed rows have all been deleted. The SourceDefinition static fields for mitre-attack / mitre-d3fend have been removed from src/Concelier/__Libraries/StellaOps.Concelier.Core/Sources/SourceDefinitions.cs. The consolidated baseline 001_v1_concelier_baseline.sql purges any rows left behind by the old MITRE seed and by the stella-public-cache mirror domain (the purge blocks at lines 2503-2550, folded in from the pre-1.0 028_remove_mitre_seed_sources.sql and 029_remove_mitre_from_mirror_domain.sql, which are archived and no longer embedded). Design proposal: docs/architecture/proposal-mitre-d3fend-scope.md.
| status | ||
|---|---|---|
mitre-attack | Connector.MitreAttack | Removed (Sprint 20260513_008, Path 2) |
mitre-d3fend | Connector.MitreD3fend | Removed (Sprint 20260513_008, Path 2) |
Summary by mechanism
- PAT-optional (1):
ghsa. - OAuth2 client_credentials (2):
microsoft,cisco. - API key (0 required):
cvekeeps optional CVE Services credentials, but public mirror bootstrap uses cvelistV5 without credentials and can consume an operator-supplied baseline zip before the rolling delta feed; it still accepts an offlineSeedDirectoryfallback. - none-public (19):
cve,oracle,adobe,chromium,apple,vmware,siemens,intel,amd,aws,azure,gcp,cccs,jpcert,krcert,cert-de,cert-fr,cert-in, plus the three classified-geo Russian/ICS feeds (kaspersky-ics,fstec-bdu,nkcki). - OSV-alias (6):
hex,packagist,pypa,rubygems,rustsec,bundler-audit. - classified geo (3):
kaspersky-ics,fstec-bdu,nkcki— block on B-CRED-002 export-control review. - parent/canonical coverage: OSV-alias ecosystems are covered by
osv;nugetis covered byghsa;rhelis covered byredhat;azureis covered bymicrosoft/MSRC. - direct implementation gaps:
amdandsiemensremain tracked separately from parent-covered aliases until their production fetcher status is fully closed out.awsandgcpnow have real fetchers. - connector source not found (0):
mitre-attackandmitre-d3fendpreviously listed here, then implemented by Sprint 046, then removed in Sprint 20260513_008 under PM Path 2 decision (zero downstream consumers; seedocs/architecture/proposal-mitre-d3fend-scope.md).
The CYCLE-007 “AUTH-SKIPPED” label therefore actually splits three ways for B-CRED-002:
- True credential gap (2 rows):
microsoft,cisco. - Network/geo policy gap (no credential needed) (10 rows):
oracle,adobe,chromium,apple,vmware,cccs,jpcert,krcert,cert-de,cert-fr,cert-in, plus classifiedkaspersky-ics,fstec-bdu,nkcki. - Implementation gap vs parent coverage:
amdandsiemensare direct implementation gaps;azure,rhel,nuget, and OSV ecosystem rows are parent/canonical coverage rows whose counts properly belong tomicrosoft,redhat,ghsa, orosv.
B-CRED-002 should split its operator decisions accordingly: only category (1) is unblocked by acquiring a credential. Categories (2) and (3) need network-policy and implementation-sprint decisions respectively.
