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

PathContent
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

DocumentScope
architecture.mdOwnership, consumer paths, persistence, retirement acceptance
deltasig-v2-schema.mdDeltaSig v2 predicate format as implemented in the BinaryArtifacts SDK
hybrid-diff-stack.mdSemantic edit script, symbol map, symbol patch plan and patch manifest artifacts
ghidra-deployment.mdGhidra, 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.