Stella Ops Signer Architecture (Relocated)

This module dossier is a stable redirect for older links, plus a source-grounded summary of the Signer runtime for readers who land here. The canonical architecture material lives in the Attestor dossier.

Signer source now lives under src/Attestor/StellaOps.Signer/ (the WebService, Core, Infrastructure, and Tests projects), with key-rotation and trust-anchor logic in src/Attestor/__Libraries/StellaOps.Signer.KeyManagement/. The canonical architecture material is maintained in the Attestor dossier:

Do not add new standalone Signer architecture content here. Update the Attestor architecture dossier (and the relocation README) and keep this redirect current. The summary below is a source-grounded pointer for the many docs that still link here — it is not the authoritative dossier.

Runtime at a glance (source-grounded)

Verified against src/Attestor/StellaOps.Signer/ on this checkout.

HTTP endpoints

Routes and policies as registered in Program.cs / the *Endpoints.cs files.

Method & pathPolicy (scope)Source
GET /none (readiness banner)Program.cs
GET /healthz, GET /readyzanonymousProgram.cs (SIGNER_HEALTH-01)
GET /internal/plugins/statusanonymousProgram.cs:269 — crypto-provider pack readiness (provider names, pack status)
POST /internal/plugins/probeanonymousProgram.cs:297 — crypto-provider pack probe
build-info endpoint (MapBuildInfoEndpoint)anonymousProgram.cs:329 — version/build banner
GET /openapi/* (MapOpenApi)anonymousProgram.cs:255 — OpenAPI document
POST /api/v1/signer/sign/dsseSigner.Signsigner:signSignerEndpoints
POST /api/v1/signer/verify/dsseSigner.Verifysigner:readSignerEndpoints
GET /api/v1/signer/verify/referrers?digest=Signer.Verifysigner:readSignerEndpoints
POST /api/v1/anchors/{anchorId}/keysKeyManagementsigner:rotateKeyRotationEndpoints
POST /api/v1/anchors/{anchorId}/keys/{keyId}/revokeKeyManagementsigner:rotateKeyRotationEndpoints
GET /api/v1/anchors/{anchorId}/keys/{keyId}/validityKeyManagementsigner:rotateKeyRotationEndpoints
GET /api/v1/anchors/{anchorId}/keys/historyKeyManagementsigner:rotateKeyRotationEndpoints
GET /api/v1/anchors/{anchorId}/keys/warningsKeyManagementsigner:rotateKeyRotationEndpoints
POST /api/v1/ceremoniesceremony:createsigner:signCeremonyEndpoints
GET /api/v1/ceremoniesceremony:readsigner:readCeremonyEndpoints
GET /api/v1/ceremonies/{ceremonyId}ceremony:readsigner:readCeremonyEndpoints
POST /api/v1/ceremonies/{ceremonyId}/approveceremony:approvesigner:signCeremonyEndpoints
POST /api/v1/ceremonies/{ceremonyId}/executeceremony:executesigner:adminCeremonyEndpoints
DELETE /api/v1/ceremonies/{ceremonyId}ceremony:cancelsigner:adminCeremonyEndpoints

Notes:

Scopes

The Signer scope constants live in StellaOps.Auth.Abstractions/StellaOpsScopes.cs:

Configuration keys

Bound in Program.cs:

DSSE signing notes

Why the move

Signer, Attestor, and Provenance form the trust domain — the services responsible for cryptographic evidence production, transparency logging, and verification. Consolidating source ownership under src/Attestor/ makes trust-boundary responsibilities explicit while preserving runtime isolation between Signer key/state material and Attestor evidence state. See the no-merge decision ADR.