Concelier OSV Connector - Operations Runbook

Last updated: 2025-10-16

This runbook is for operators who run the OSV connector in a Stella Ops Concelier instance. The OSV connector ingests advisories from OSV.dev across open-source ecosystems. This note highlights the merge/export expectations introduced with the canonical metric fallback behaviour, plus the dashboards, alerts, and fixtures that keep that behaviour observable.

1. Canonical metric fallbacks

2. CWE provenance

3. Dashboards & alerts

4. Runbook updates

5. Bulk backfill tuning (parse/map checkpointing)

OSV is a bulk, multi-ecosystem source. Pointing the connector at the real per-ecosystem all.zip feeds (rather than the conservative incremental window) queues on the order of 100k advisories per crawl, whose parse and map stages take well over an hour to drain. Two behaviours keep that crawl from being orphaned or timed out:

Connector knobs (OsvOptions, all runtime-overridable via the OSV runtime overlay, defaults preserve single-pass behaviour for small incremental fetches):

OptionDefaultPurpose
ParseRunTimeBudget60 minMax wall-clock a single parse run drains before checkpointing and deferring the remainder to the next run.
ParseCheckpointBatchSize100Parsed documents accumulated before a cursor checkpoint flush (turns per-run writes from O(n) into O(n/K)).
ParseCheckpointInterval5 sForces a checkpoint flush after this wall-clock even if fewer than the batch size completed.
MapRunTimeBudget15 minMap-stage equivalent of ParseRunTimeBudget.
MapCheckpointBatchSize100Map-stage equivalent of ParseCheckpointBatchSize.
MapCheckpointInterval5 sMap-stage equivalent of ParseCheckpointInterval.

For a manual full crawl against the real feeds, the live override (devops/compose/docker-compose.osv-real.override.yml) points the connector at the real all.zip endpoints and disables the resume-window ratchet (ModifiedTolerance=36500.00:00:00, MaxAdvisoriesPerFetch=100000, RequestDelay=0) so the full corpus passes. Operationally, disabling the source’s scheduler during the crawl avoids any same-kind re-trigger contention; the raised timeouts + checkpointing make the crawl resumable even across restarts.