Some checks failed
Concelier Attestation Tests / attestation-tests (push) Has been cancelled
Policy Simulation / policy-simulate (push) Has been cancelled
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
Signals CI & Image / signals-ci (push) Has been cancelled
Signals Reachability Scoring & Events / reachability-smoke (push) Has been cancelled
Signals Reachability Scoring & Events / sign-and-upload (push) Has been cancelled
Docs CI / lint-and-preview (push) Has been cancelled
Policy Lint & Smoke / policy-lint (push) Has been cancelled
Scanner Analyzers / Discover Analyzers (push) Has been cancelled
Scanner Analyzers / Build Analyzers (push) Has been cancelled
Scanner Analyzers / Test Language Analyzers (push) Has been cancelled
Scanner Analyzers / Validate Test Fixtures (push) Has been cancelled
Scanner Analyzers / Verify Deterministic Output (push) Has been cancelled
3.4 KiB
3.4 KiB
Reachability Corpus Plan (QA-CORPUS-401-031)
Objective
- Maintain deterministic, offline reachability fixtures that validate callgraph ingestion, reachability truth-path handling, and VEX proof workflows.
- Keep the corpus small but multi-runtime (Go/.NET/Python/Rust), and keep a public-friendly mini dataset (PHP/JavaScript/C#) for docs/demos without external repos.
Corpus Map
1) Multi-runtime corpus (internal MVP)
Path: tests/reachability/corpus/
Per-case layout: tests/reachability/corpus/<language>/<case>/
callgraph.static.json— static call graph sample (stub for MVP).ground-truth.json— expected reachability outcome and example path(s) (Reachbench truth schema v1;schema_version=reachbench.reachgraph.truth/v1).vex.openvex.json— expected VEX slice for the case.- Optional (future):
runtime/*.ndjson,sbom.*.json
tests/reachability/corpus/manifest.json records deterministic SHA-256 hashes for required files in each case directory.
2) Public mini dataset (PHP/JS/C#)
Path: tests/reachability/samples-public/
Layout:
schema/ground-truth.schema.json— JSON schema forground-truth.json(Reachbench truth schema v1).manifest.json— deterministic SHA-256 hashes for required files in each sample directory.samples/<lang>/<case-id>/— per-sample artifacts:callgraph.static.json,ground-truth.json,sbom.cdx.json,vex.openvex.json,repro.sh.runners/run_all.{sh,ps1}— deterministic manifest regeneration.
3) Reachbench fixture pack (expanded, dual variants)
Path: tests/reachability/fixtures/reachbench-2025-expanded/
Each case has two variants (reachable/unreachable) with per-variant manifest.json and reachgraph.truth.json. Fixture integrity is validated by tests/reachability/StellaOps.Reachability.FixtureTests.
Ground Truth Conventions
- Corpus and public samples use the same truth schema (
reachbench.reachgraph.truth/v1) but differ in file naming (ground-truth.jsonvs reachbench packreachgraph.truth.json). - Legacy corpus
expect.yamlhas been retired; priorstate/scorevalues are preserved underlegacy_expectinground-truth.json. - Legacy
conditionalstates are represented asvariant=unreachablepluslegacy_expect.state=conditionaluntil the truth schema grows a dedicated conditional/contested variant.
Determinism & Runners
Regenerate all reachability manifests (corpus + public samples + reachbench pack):
tests/reachability/runners/run_all.shtests/reachability/runners/run_all.ps1
Individual scripts:
python tests/reachability/scripts/update_corpus_manifest.pypython tests/reachability/samples-public/scripts/update_manifest.pypython tests/reachability/fixtures/reachbench-2025-expanded/harness/update_variant_manifests.py
CI Gates
tests/reachability/StellaOps.Reachability.FixtureTests- validates presence + hashes from manifests for corpus/public samples/reachbench fixtures
- enforces minimum language-bucket coverage (Go/.NET/Python/Rust + PHP/JS/C#)
MVP Slice (stub cases)
- Go:
go-ssh-CVE-2020-9283-keyexchange - .NET:
dotnet-kestrel-CVE-2023-44487-http2-rapid-reset - Python:
python-django-CVE-2019-19844-sqli-like - Rust:
rust-axum-header-parsing-TBD
Next Work (post-MVP)
- Wire a CI job to run
tests/reachability/StellaOps.Reachability.FixtureTests. - Replace stubs with real callgraphs/traces and expand the corpus once CI is stable.