Hardware-vendor connector simulator contract

This document defines the simulator-versus-production backend contract for the Stella Ops Concelier hardware-vendor connectors. It is intended for connector implementers and operators who need to understand why these connectors fail closed by default and how the deterministic simulator path is used in tests.

Why this pattern exists

Hardware-vendor advisory feeds each have a distinct upstream format:

VendorFeed format
IntelHTML listings (Intel-SA-NNNNN pages)
AMDHTML product-security bulletins
ARMHTML security-center pages
SiemensCSAF 2.0 JSON

SPRINT_20260424_004 shipped deterministic simulators for tests. As of CONC-TRUTH-002-03, those simulators are no longer the default runtime path because canned advisories are not production advisory data.

Contract

Each hardware connector folder under src/Concelier/__Libraries/StellaOps.Concelier.Connector.Vndr.<Name>/ defines:

CI testing contract

Production deployment

With default options, a deployment without a wired production backend will see the connector throw NotImplementedException on its first fetch cycle. This is intentional: the connector fails loudly rather than silently producing empty or simulated advisory catalogs.

Do not set Concelier:Sources:<vendor>:UseProductionBackend=false in production. That switch is reserved for explicit local/test simulator harnesses.

Operators enable a production hardware-vendor backend only after:

  1. The per-vendor production-backend sprint has landed.
  2. Fixture-based tests for the production backend exist in the vendor’s test project.
  3. The deployment environment has approved network or offline mirror access to the upstream vendor endpoint.

Until then, simulator records are deterministic fixture advisories for tests and demos only. They must not satisfy production freshness, coverage, or policy evidence requirements.

Seed migration

The four catalog rows (intel, amd, arm, siemens) are inserted by the consolidated baseline 001_v1_concelier_baseline.sql (e.g. intel at line 1627; folded in from the pre-1.0 014_seed_hardware_connector_sources.sql, which is archived under Migrations/_archived/pre_1.0/mig061/ and not embedded). Note the live forward migration 003_remove_arm_legacy_source.sql subsequently removes the legacy arm source row. Any legacy config.backend=simulator seed metadata is descriptive catalog history, not authority for production runtime binding. Production runtime selection is controlled by the connector options above and defaults to fail-closed production mode.

Follow-up sprints

Per-vendor sprints that replace the NotImplementedException stub with a real fetcher:

Each follow-up sprint replaces one <Vendor>VendorBackend.cs stub, lands fixture-based tests against recorded HTTP responses, and documents the production flip in the relevant operations guide.