2.5 KiB
2.5 KiB
Canonical Node-Hash and Path-Hash Recipes for Reachability
Module
Scanner
Status
IMPLEMENTED
Description
Canonical node-hash (PURL/symbol normalization + SHA-256) and path-hash (top-K selection + PathFingerprint) recipes for deterministic static/runtime evidence joins. Extended PathWitness, RichGraph, SARIF export with hash fields.
Implementation Details
- Path Witness with Hash Fields:
src/Scanner/__Libraries/StellaOps.Scanner.Reachability/Witnesses/PathWitness.cs-PathWitnessmodel with node-hash and path-hash fieldssrc/Scanner/__Libraries/StellaOps.Scanner.Reachability/Witnesses/PathWitnessBuilder.cs-PathWitnessBuildercomputes canonical hashes during witness constructionsrc/Scanner/__Libraries/StellaOps.Scanner.Reachability/Witnesses/IPathWitnessBuilder.cs- Interface
- Rich Graph Integration:
src/Scanner/__Libraries/StellaOps.Scanner.Reachability/RichGraph.cs- RichGraph model extended with hash fields on nodessrc/Scanner/__Libraries/StellaOps.Scanner.Reachability/Ordering/DeterministicGraphOrderer.cs- Deterministic ordering for canonical hash computation
- Witness Matching & Verification:
src/Scanner/__Libraries/StellaOps.Scanner.Reachability/Witnesses/WitnessMatcher.cs- Matches witnesses using canonical hashes for deterministic joinssrc/Scanner/__Libraries/StellaOps.Scanner.Reachability/Witnesses/WitnessSchema.cs- Schema validation for witness hash fields
- Slice Integration:
src/Scanner/__Libraries/StellaOps.Scanner.Reachability/Slices/SliceExtractor.cs- Slice extraction with path-hash for top-K selectionsrc/Scanner/__Libraries/StellaOps.Scanner.Reachability/Slices/SliceModels.cs- Slice models with hash fields
- Subgraph Extraction:
src/Scanner/__Libraries/StellaOps.Scanner.Reachability/Subgraph/ReachabilitySubgraphModels.cs- Subgraph models with hash fields
E2E Test Plan
- Scan an image and verify PathWitness results include canonical node-hash fields (SHA-256 of normalized PURL/symbol)
- Verify path-hash is computed using top-K selection and PathFingerprint algorithm
- Run the same scan twice and verify node-hash and path-hash values are deterministically identical
- Verify RichGraph response includes hash fields on nodes via
GET /api/v1/scans/{scanId}/reachability - Verify static/runtime evidence join works correctly using canonical hashes as join keys
- Verify SARIF export includes hash fields in reachability-related results