- Expanded the core error hierarchy with scan- and DNS-specific failures.
- Hardened the encrypted key store contract with machine-derived passphrases, PBKDF2, and dedicated CLI key management commands.
- Added deterministic spec coverage for the key store and per-source rate limiter.
- Added a richer ASRFacet-Rb scanner core with bundled service catalogs, probe parsing, passive OS fingerprinting, red-team hint mapping, and terminal-first operator output.
- Added
enumandintelCLI surfaces with terminal-aware active/passive recon framing. - Added dedicated scanner specs for the new hint engine and terminal output renderer.
- Reworked the rate limiter to use thread-safe concurrent maps, per-source mutexes, and monotonic-clock throttling.
- Updated runtime dependency constraints for
caracalandhexapdfto the requested support window. - Refined passive-source and CLI error handling around the new
ASRFacet::Errorsubclasses.
- Key-store decrypt failures now raise
ASRFacet::KeyStoreError. - CLI key management now reports keystore failures cleanly instead of surfacing raw exceptions.
- Event-driven engine with EventBus, Dispatcher, PluginRegistry
- Drop-in plugin architecture (plugins/ directory)
- Per-source rate limiter (RateLimiter)
- Encrypted API key store (KeyStore) with CLI subcommands
- New passive sources: VirusTotal, URLScan.io, CommonCrawl, SecurityTrails
- Wordlist permutation engine (PermutationEngine)
- Live multi-stage progress dashboard (ProgressDashboard)
--dry-runflag for scan command--profileflag (cautious/balanced/deep)- SARIF 2.1.0 output
- Graph export: DOT, JSON, Mermaid (
graphsubcommand) - Structured JSON logger (StructuredLogger)
- Proper error class hierarchy (
ASRFacet::Errorand subclasses) concurrent-rubyfor thread-safe result storage and data structures- Runtime dependency version constraints in the gemspec
- GitHub Actions CI pipeline updates for matrix verification and linting
- ResultStore refactored to use concurrent collections while keeping the legacy category APIs
colorizereplaced withpastel- Passive runner now supports key-backed and rate-limited v2 sources
- All new Ruby source files include
# frozen_string_literal: true
- build:gem task now raises on silent failure
- ferrum added to Gemfile development group
- CLEAN glob anchored to
__dir__in Rakefile - ruby_exec uses
systeminstead of the Rake DSLsh - Web-session run/start and session persistence flow regressions
- Initial release