Findings
Verified against commit
942a18727con 2026-09-26 (UTC). Re-verify:ls src/Findings src/Findings/__Libraries src/__Obsoleted/Findingsandgit grep -n "findings" -- devops/release/bundle/docker-compose.yml.Service rows (host project, image, database and role, compose file, bundle presence, Doctor registration) are generated in
docs/architecture/service-inventory.md; where this page and the inventory differ, the inventory is authoritative.
Purpose
src/Findings/ is the consolidated findings domain (ADR-039 D14): the append-only Findings Ledger, the security exposure read-model, vulnerability correlation, VulnExplorer read/write endpoints, runtime instrumentation, alerts and decisions, and the kept risk-scoring store. It is one deployable family with two roles and one database. The dossier is architecture.md.
Deployables
| Role | Host project | Compose | Release bundle |
|---|---|---|---|
findings-web | src/Findings/StellaOps.Findings.WebService/ | devops/compose/docker-compose.findings.yml | not present |
findings-worker | src/Findings/StellaOps.Findings.Worker/ | devops/compose/docker-compose.findings.yml | not present |
The release bundle (devops/release/bundle/docker-compose.yml) does not deploy either role, while three bundle services carry findings.stella-ops.local base addresses. See architecture.md §0.
Database
stellaops_findings, resolved only from STELLAOPS_POSTGRES_FINDINGS_CONNECTION (src/Findings/__Libraries/StellaOps.Findings.Persistence/Extensions/ConsolidatedFindingsPersistenceExtensions.cs), fail-closed. Schemas findings, findings_security, riskengine, analytics, plus the structural findings_ledger_app and findings_archive. Migrations: src/Findings/__Libraries/StellaOps.Findings.Persistence/Migrations/, converged on startup. Retention: retention-classification.md.
Source map
| Capability | Source | Schema |
|---|---|---|
HTTP host, /api/findings/v1/* aliases, recovery and disposition-feed endpoints | src/Findings/StellaOps.Findings.WebService/ | — |
| Worker (advisory-corpus, advisory/SBOM and scanner projections; scoring placeholder) | src/Findings/StellaOps.Findings.Worker/ | — |
| Findings Ledger (event spine, hashing, Merkle; no migrations, its legacy chain is withdrawn) | src/Findings/StellaOps.Findings.Ledger/ | findings |
| Ledger endpoints (ledger, alerts, VEX decisions, VulnExplorer, runtime, scoring, evidence graph) | src/Findings/__Libraries/StellaOps.Findings.Ledger.Application/ | findings |
| Runtime instrumentation algorithms | src/Findings/__Libraries/StellaOps.Findings.Ledger.Runtime/ | — |
| Security read-model | src/Findings/__Libraries/StellaOps.Findings.Security.Application/, .Security.Persistence/ | findings_security |
| Advisory matching (pure matcher) | src/Findings/__Libraries/StellaOps.Findings.AdvisoryMatching/ | — |
| Vulnerability correlation (library, unscheduled) | src/Findings/__Libraries/StellaOps.Findings.VulnCorrelation.* | analytics |
| Risk-scoring store (capability kept, HTTP surface retired) | src/Findings/StellaOps.RiskEngine.Core/, __Libraries/StellaOps.RiskEngine.Infrastructure/ | riskengine |
| Doctor checks, operations | src/Findings/__Libraries/StellaOps.Findings.Operations/ | — |
| Disposition feed contract | src/Findings/__Libraries/StellaOps.Findings.Disposition.Contracts/ | — |
Retired predecessors
findings-ledger-web,findings-security-web: withdrawn tosrc/__Obsoleted/Findings/on 2026-08-28 (FND-20). Replaced byfindings-web. Archived dossier:docs-archive/modules/findings-ledger/.riskengine-web,riskengine-worker,findings-vulncorrelation: deleted at FND-10 (2026-08-27). The risk-scoring capability folds into this family.- VulnExplorer standalone host: decommissioned; endpoints mapped by
findings-web. The historical dossier isdocs-archive/modules/vuln-explorer/. - The withdrawn host’s specification, formerly held at
docs/modules/findings-ledger/openapi/findings-ledger.v1.yaml, is archived atdocs-archive/modules/findings-ledger/openapi/findings-ledger.v1.yaml(2026-09-27). The ledger library’s OpenAPI metadata helper that resolved it had no live caller and is withdrawn tosrc/__Obsoleted/Findings/StellaOps.Findings.Ledger/OpenApi/. The served contract isopenapi/v1.json. - The ledger snapshot and time-travel services (
SnapshotService, its snapshot and time-travel repositories, models and request contracts), whose only callers were the withdrawn host’s/v1/ledger/snapshotsand time-travel routes, are withdrawn tosrc/__Obsoleted/Findings/StellaOps.Findings.Ledger/PCD-242/(2026-10-01). Every time-travel query failed on the consolidated schema. No Findings host serves snapshots or time-travel queries; thefindings.ledger_snapshotstable stays in the migration chain with no reader or writer. - The ledger library’s vulnerability-detail endpoint (
MapSecurityVulnerabilityEndpoints(),GET /api/findings/v1/security/vulnerabilities/{identifier}), whose only caller was the withdrawn host, is withdrawn tosrc/__Obsoleted/Findings/__Libraries/StellaOps.Findings.Ledger.Application/PCD-230/(2026-10-01).findings-webnever mapped it: its template is ambiguous with the security read model’sGET /api/findings/v1/security/vulnerabilities/{vulnerabilityId}, which serves that path. The ledger detail service it called stays and answersGET /v1/vulns/{id}.
Subordinate documents
| Document | Status |
|---|---|
architecture.md | current |
retention-classification.mdand its verification JSON | current (dated receipt 2026-09-21) |
api-reference.md, openapi/v1.json | generated from the findings-web host; do not hand-edit |
consolidation-design.md | design record, not re-verified 2026-09-26 |
runtime-plugin-boundary.md | design record, not re-verified 2026-09-26 |
ledger/runtime-instrumentation-api.md, ledger/enabling-runtime-instrumentation.md | current for routes, scopes and the findings:ledger:runtime:enabled switch; remaining text is a design record |
ledger/runtime-instrumentation.md, ledger/runtime-instrumentation-operations.md, ledger/runtime-instrumentation-ui-requirements.md | design record, not re-verified 2026-09-26 |
ledger/security-read-model.md | source-reverified 2026-10-06; consolidated owner, OCI/document identity and refusal contract; dated runtime observation is separate from product acceptance |
ledger/vuln-correlation.md | design record, not re-verified 2026-09-26; carries its own currency banner |
ledger/schema.md, ledger/schema-catalog.md, ledger/workflow-inference.md | design record, not re-verified 2026-09-26; schema authority is the persistence migration chain |
ledger/merkle-anchor-policy.md, ledger/dsse-policy-linkage.md, ledger/airgap-provenance.md, ledger/contracts/staleness-time-anchor-contract.md | design record, not re-verified 2026-09-26 |
ledger/tenant-isolation-redaction.md, ledger/redaction-manifest.{yaml,json}, ledger/golden-checksums.json, ledger/replay-checksums.sample.json | design record, not re-verified 2026-09-26; the /ledger/export/* family they describe was withdrawn with findings-ledger-web |
ledger/observability.md, ledger/replay-harness.md, ledger/operations/rls-migration.md, ledger/advanced-assurance-golden-write-through.md | design record, not re-verified 2026-09-26 |
findings-ledger dossier pages: README, architecture, deployment, export HTTP surface, OAS baseline, implementation plan, FL1-FL10 gaps | archived at docs-archive/modules/findings-ledger/ |
