Binary analysis (BinaryIndex)
Verified against commit
942a18727c(2026-09-26). Re-verify with:pwsh tools/scripts/test-targeted-xunit.ps1 -Project src/__Tests/architecture/StellaOps.Architecture.Contracts.Tests/StellaOps.Architecture.Contracts.Tests.csproj -Class '*BinaryPlaneRetirementConformanceTests'
BinaryIndex is not a service. The predecessor BinaryIndex.WebService, BinaryIndex.Worker and Symbols.Server hosts are frozen under src/__Obsoleted/BinaryIndex/ (BIN-10). Binary and symbol workflow, metadata and persistence belong to the Vulnerabilities service (src/Vulnerabilities/), which serves them under /api/vulnerabilities/v1/binaries and /api/vulnerabilities/v1/symbols. src/BinaryIndex/ keeps only shared analysis libraries, backend plugins, a closed artifact contract and their tests.
Start with architecture.md: ownership boundaries, supported consumer paths, persistence and the retirement acceptance record.
Source map
| Path | Content |
|---|---|
src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Disassembly.Abstractions/, .Disassembly/ | Plugin contracts, format detection, plugin registry, hybrid disassembly with quality scoring |
src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Disassembly.B2R2/, .Disassembly.Iced/ | Disassembly backend plugins |
src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Semantic/ | B2R2 IR lifting (IIrLiftingService), semantic graph extraction, Weisfeiler-Lehman graph hashing, semantic fingerprints and matching |
src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Decompiler/ | Decompiled-code parser, normalizer and AST comparison engine; Ghidra decompiler adapter |
src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Ghidra/ | Ghidra headless, BSim and ghidriff integration library; see ghidra-deployment.md for its wiring status |
src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Contracts/ | Analyzer bundle and plugin-probe contracts |
src/BinaryIndex/__Libraries/StellaOps.Symbols.Contracts/ | Closed SymbolManifest artifact shape used by DeltaSig consumers |
src/Vulnerabilities/__Libraries/StellaOps.Vulnerabilities.BinaryArtifacts/ | Closed offline SDK: instruction normalization, DeltaSig generation and matching, predicate formats, hybrid diff artifacts |
src/Vulnerabilities/__Libraries/StellaOps.Vulnerabilities.DeltaSig/, .Fingerprints/, .Binaries/, .BinaryAnalysis/, .Symbols/ | Hub-owned DeltaSig policy, fingerprint generation, binary facts, reference generation and symbol management |
Documents
| Document | Scope |
|---|---|
| architecture.md | Ownership, consumer paths, persistence, retirement acceptance |
| deltasig-v2-schema.md | DeltaSig v2 predicate format as implemented in the BinaryArtifacts SDK |
| hybrid-diff-stack.md | Semantic edit script, symbol map, symbol patch plan and patch manifest artifacts |
| ghidra-deployment.md | Ghidra, BSim and ghidriff library configuration and current wiring status |
Operator diagnostics
The Doctor BinaryAnalysis plugin (src/Doctor/__Plugins/StellaOps.Doctor.Plugin.BinaryAnalysis/) provides the checks check.binaryanalysis.debuginfod.available, check.binaryanalysis.ddeb.enabled, check.binaryanalysis.buildinfo.cache and check.binaryanalysis.symbol.recovery.fallback. The corpus checks check.binaryanalysis.corpus.mirror.freshness and check.binaryanalysis.corpus.kpi.baseline were withdrawn on 2026-09-27: they inspected mirrors and a KPI baseline that only the withdrawn ground-truth command group produced, and their remediation told operators to run those commands. The BinaryAnalysis:Corpus:* keys are no longer read.
Archived documents
The following documents described the withdrawn hosts, the withdrawn GoldenSet and GroundTruth libraries, or surfaces that no current project implements. They are kept unchanged under docs-archive/modules/binary-index/: corpus-management.md, corpus-ingestion-operations.md, ground-truth-corpus.md, golden-corpus-layout.md, golden-corpus-maintenance.md, golden-set-schema.md, semantic-diffing.md, bsim-setup.md, sbom-extensions.md, the original ghidra-deployment.md and ml-model-training.md, and the BIN-1 fold design consolidation-design.md. The predecessor service dossier and its HTTP specification are under docs-archive/modules/binary-index/bin10/. The function-embedding page withdrawn under PCD-50 (2026-09-28) is under docs-archive/modules/binary-index/pcd-50/.
Samples
samples/products-10k.ndjson is a synthetic product-key dataset for the ImpactIndex benchmark (src/Tools/StellaOps.Bench/ImpactIndex/). It is not a BinaryIndex artifact.
Verify it from the directory that holds it:
cd docs/modules/binary-index/samples && sha256sum -c products-10k.ndjson.sha256
The recorded digest is over the committed bytes, which use LF line endings (.gitattributes * text=auto eol=lf). No generator for the dataset is committed; the file has been byte-identical since it was added in efaf3cb789 (2025-12-12). Until 2026-09-27 the .sha256 file held the digest of the same content with CRLF line endings, taken from a Windows working copy before the repository enforced eol=lf, so the check failed against every LF checkout.
