StellaOps Release Notes — Findings Ledger Runtime Instrumentation

Module: Findings Ledger Sprint set: SPRINT_20260429_011..015_FindingsLedger_runtime_* Date: 2026-04-28


Overview

Findings Ledger now exposes runtime instrumentation endpoints. Operators can ingest eBPF / syscall / APM trace observations correlated to findings, read a per-finding runtime trustworthiness score (0…100), list per-function aggregates, and walk a chronological event timeline.

Runtime instrumentation is disabled by default on new and upgraded deployments. Operators opt in by toggling findings:ledger:runtime:enabled = true. While disabled, ingest endpoints return 202 Accepted (no-op), and reads return 404 NotFound — mirroring the “no data yet” wire shape so client logic is uniform.


What’s new

EndpointDescription
POST /api/v1/findings/{id}/runtime/tracesIngest a runtime trace observation
GET /api/v1/findings/{id}/runtime/tracesList per-function aggregates
GET /api/v1/findings/{id}/runtime/scoreRead the current runtime score (with breakdown)
GET /api/v1/findings/{id}/runtime-timelineRead chronological events in [from, to]

CLI bindings ship under stellaops findings runtime:

stellaops findings runtime traces ingest --finding-id <guid> --trace-file <path>
stellaops findings runtime traces list   --finding-id <guid> [--limit] [--sort-by]
stellaops findings runtime score get     --finding-id <guid>
stellaops findings runtime timeline range --finding-id <guid> [--from] [--to]

A C# SDK sample lives at docs/samples/findings-runtime-sdk/.


Configuration

KeyDefaultDescription
findings:ledger:runtime:enabledfalseMaster toggle for runtime instrumentation

When the toggle is false, the WebService binds null-pattern repository implementations — no rows are written to findings.runtime_* tables and all read endpoints return 404 NotFound. See ADR-013 Findings Runtime Disabled Mode.


Migration

No operator action is required for upgrade. Schema changes apply automatically on first startup via AddStartupMigrations per CODE_OF_CONDUCT §2.7. Specifically, two SQL migrations land:

Existing deployments that upgrade to this build will get the empty tables created on first restart, but no data will be ingested or surfaced until findings:ledger:runtime:enabled is flipped to true.


Privacy posture

Runtime symbols carry per-process address tokens (@0x[hex]+) that we strip before any persistence path executes. The aggregator’s bucket key is the redacted symbol, so traces from differently-ASLR’d processes collapse into a single aggregate. Per-process address tokens are never written to disk.

Full per-field redaction rules and rationale: ADR-015 Findings Runtime Privacy Filter.


Documentation

DocumentTopic
Architecture overviewHigh-level pipeline, data model, components
API referencePer-endpoint reference with curl samples
AlgorithmsPrivacy filter, aggregator, score formula
Enable guide1-page operator how-to
CLI referencestellaops findings runtime subcommands
UI requirementsWeb console integration spec (draft)
ADR-014 Findings Runtime Persistence3-table schema rationale
ADR-015 Findings Runtime Privacy FilterRedaction contract
ADR-016 Findings Runtime Score FormulaFour-component weighted score formula
ADR-013 Findings Runtime Disabled ModeNull-pattern + 202/404 contract

Known limitations


Compatibility