VoidAccess v1.9.0 — Architectural Remediation & Extraction Quality
Catches up releases from v1.6.2 through v1.9.0 — no GitHub release was published for the intermediate versions, though all were tagged and shipped to PyPI.
v1.9.0 — Entity Identity Architectural Remediation
Full 7-phase remediation of the entity-identity-drift bug class that caused the v1.8.0/v1.8.2 STIX export regressions. A single canonical identity module (extractor/identity.py) is now the sole source of truth for entity identity across the entire codebase — graph builder, STIX/MISP/IOC/Snort/YARA exporters, and the CLI browser/show/investigate commands. Confirmed via repo-wide sweep: zero remaining independent identity-derivation sites.
- Fixed: NormalizedEntity.canonical_value returned raw value instead of canonical (root cause of casing inconsistencies across exports)
- Fixed: confidence scoring had two disagreeing contracts (additive vs max); now one rule
- Fixed: relationship type vocabulary was independently maintained in 4 places; now single-sourced from graph/model.py
- Fixed: corroborating_sources field never populated — a known issue carried across 3 release cycles (1.6.4, 1.7.0, 1.7.1) — finally resolved
- Fixed: EIP-55 checksummed Ethereum addresses were silently lowercased in CLI lookups, causing wrong-case matches
- Added: query length upper bound (500 chars)
- Added: live graph-build progress display
- Added: honest zero-relationships messaging (distinguishes --no-llm skip from genuine zero)
- Added: expanded completion summary (relationship type breakdown, actor/community counts, per-source status)
- Regression coverage: previously-skipped STIX integration test now runs against a real shared DB fixture and asserts source_ref/target_ref correctness on mixed-case entities — the exact scenario that caused the original regression
v1.8.2 — Relationship Extraction Fixes
- Fixed: source_page_id NULL on all typed relationship rows (CLI serialization dropped page_id)
- Fixed: entity-type compatibility validation for typed relationships (LLM was pairing incompatible types, e.g. CVE 'exploiting' a MITRE technique)
v1.8.1 — Post-Audit Blocker Fixes
- Fixed: --no-tor did not prevent Torch/Haystack side-sources from generating real Tor traffic
- Fixed: typed relationship extraction failed against the live LLM (LangChain callback collision)
- Fixed: USED/USES relationship vocabulary mismatch
- Fixed: step-cost metrics instrumentation never started, producing all-zero data
- Fixed: empty/near-empty queries accepted and produced misleading full reports
- Fixed: non-actionable IPs (8.8.8.8, 0.0.0.0) exported as IOCs
- Fixed: ransomlook.io matching too strict for multi-word queries
v1.8.0 — Comprehensive Audit Remediation
8 categories closed from two independent audits (functional + static architecture review): data-loss-disguised-as-success fixes, extraction quality overhaul (NER noise elimination, checksum validation, LLM provenance), typed relationship extraction, 5 new intelligence sources (XposedOrNot, LeakCheck, Hudson Rock Cavalier, NVD 2.0, ransomlook.io), security hardening (error leakage, unauthenticated debug endpoint, JWT fail-open behavior), and performance/hygiene fixes (Tor connector reuse, enrichment parallelization, dependency consolidation).
v1.7.0 / v1.7.1 / v1.7.2
Extraction quality fixes, STIX export scaling/crash fixes, confidence calibration, entity persistence readback bug.
Full details in CHANGELOG.md.