Unknowns Registry

Status: Implemented (Grey Queue API partially wired — see Implementation Status) Source: src/Unknowns/ Container / Router service: stellaops-unknowns-web (router service name unknowns, port 8080) Owner: Signals Guild, Policy Guild

Purpose

The Unknowns Registry tracks ambiguities discovered during vulnerability scanning that cannot be definitively resolved — packages without known provenance, binaries without build-IDs/debug symbols, dependencies not covered by any advisory feed, unbounded version ranges, unsupported formats, and gaps in transitive dependency chains. It models “what we don’t know” as first-class, queryable risk signals using bitemporal semantics, then prioritizes them with a composite triage score and surfaces provenance hints to help operators resolve each unknown.

It is a standalone HTTP microservice (not a Policy Engine sub-library): the Unknowns WebService exposes the registry over the Stella Router, persists to its own PostgreSQL schema, and auto-migrates on startup.

Components

Service:

Libraries:

Key Features

API Surface

All endpoints are exposed via the Stella Router under the unknowns service. The tenant is supplied via the X-Tenant-Id header. Two named authorization policies gate access: Unknowns.Read (scope unknowns:read) and Unknowns.Write (scope unknowns:write).

Unknowns (/api/unknowns, requires unknowns:read)

Grey Queue (/api/grey-queue)

Read endpoints require unknowns:read; mutating endpoints require unknowns:write and emit audit events (AuditModules.Unknowns).

Health

Domain Model & Enums

Unknown(StellaOps.Unknowns.Core/Models/Unknown.cs) — bitemporal record with subject (SubjectHash, SubjectType, SubjectRef), Kind, optional Severity, source references (SourceScanId/SourceGraphId/SourceSbomDigest), bitemporal columns, resolution tracking, the full scoring breakdown, rescan scheduling, evidence hashes (EvidenceSetHash/GraphSliceHash), audit fields, and provenance hints.

Enums (Unknown.cs):

GreyQueueEntry(StellaOps.Unknowns.Core/Models/GreyQueueEntry.cs) — references an Unknown, carries the DSSE-style evidence bundle (with per-artifact SHA-256 hashes), trigger conditions, processing metadata (attempts / MaxAttempts = 10), and a status workflow.

Enums (GreyQueueEntry.cs):

Configuration

Persistence is configured from the Postgres configuration section (bound to PostgresOptions); the schema name defaults to unknowns (UnknownsDataSource.DefaultSchemaName). Authentication/authorization, CORS, localization, audit emission, and the Stella Router (Router section, service name unknowns) are configured in Program.cs.

The StellaOps.Unknowns.Services library defines options records (GreyQueueWatchdogOptions, UnknownsSlaOptions) for the SLA/watchdog/lifecycle background services. These are not bound or hosted by the WebService today (see Implementation Status), so their config keys are not part of the deployed service surface.

Authorization Scopes

Defined in the canonical catalog StellaOps.Auth.Abstractions/StellaOpsScopes.cs:

Storage

There is no grey_queue table in the current migrations, and no concrete IGreyQueueRepository implementation is registered. The Grey Queue domain model, endpoints, and background services exist, but their persistence is not yet wired (see Implementation Status).

Integration Points

Stella Router / Authority: Registered as the unknowns router microservice; authentication via the Stella resource-server integration with scope-based policies and tenant middleware.

Audit: Grey Queue mutations emit audit events under AuditModules.Unknowns (enqueue, start_processing, record_result, resolve, dismiss, expire, assign, escalate, reject, reopen).

Notifications: Escalations publish an EscalationNotification through an optional INotificationPublisher; no production implementation is registered today (test stubs only).

Dependencies

Implementation Status

Implemented and wired into the WebService:

Partially implemented (present in source but NOT wired into the deployed WebService):

Key differentiator: Unlike scanners that hide uncertainty, Stella Ops makes “what we don’t know” an explicit, queryable, bitemporal signal with deterministic scoring and provenance hints — important for air-gapped deployments and zero-day scenarios where external validation is unavailable.

Documentation note: Earlier revisions of this page described a StellaOps.Policy.Unknowns library with an “unknowns budget” gate, “decay heuristics”, “Unknown-Reachable / Unknown-Unreachable” states, a policy-schema location, and UnknownBudgetOptions/UnknownsDecayOptions/UnknownsRescanOptions config classes. None of those exist in src/. If an unknowns-budget Policy gate is intended, it should be tracked as a separate forward design item, not described here as implemented.