This document annotates the panic-attack codebase at an architectural level so maintainers can trace data flow, intent, and operational boundaries across modules.
src/main.rs- Owns CLI contract and command dispatch.
- Converts
claparguments into stable internal configs. - Persists reports and decides user-facing output behavior.
src/lib.rs- Public module surface used by tests and external consumers.
- Keeps module-level integration boundaries explicit.
src/assail/- Static source analysis over multiple language families.
- Produces
AssailReportwith weak points, recommendations, dependency graph, and taint matrix. src/assail/analyzer.rs: decode + language-dispatch pipeline, framework detection, dependency/taint overlays.src/assail/patterns.rs: language/framework attack pattern catalog used by dynamic execution.
src/attack/- Dynamic axis execution (
cpu,memory,disk,network,concurrency,time). - Handles probe mode and fallback behavior for unsupported target flags.
src/attack/executor.rs: strategy selection, timeout handling, crash/signature extraction, probe-aware skip logic.src/attack/profile.rs: user profile ingestion (json/yaml) for common and per-axis args.
- Dynamic axis execution (
src/ambush/- Timeline-driven ambient stress orchestration.
- Coordinates concurrent stressors with optional DAW-like event scheduling.
src/amuck/mod.rs- Controlled mutation-combination runner.
- Writes per-combo artifacts and optional command outcomes.
- Never mutates target in place.
src/abduct/mod.rs- Isolated copy workspace and readonly lock-down.
- Optional dependency-neighborhood inclusion.
- mtime shifting and time metadata export for delayed-trigger experiments.
src/adjudicate/mod.rs- Aggregates
assault,amuck,abductartifacts. - Asserts normalized facts then applies compact inference rules.
- Emits explainable campaign verdict (
pass/warn/fail) plus priorities.
- Aggregates
src/audience/mod.rs- Observes target reactions from execution output and stored report artifacts.
- Supports head/tail excerpts, exact/fuzzy pattern matches (
grep/agrep), aspell, i18n. - Exports JSON + Markdown and optional Pandoc conversion.
src/kanren/- miniKanren-inspired term/fact/rule engine.
- Bridges static findings to derived facts via forward chaining.
src/kanren/core.rs: unification, substitution, fact DB, fixpoint forward-chaining.src/kanren/taint.rs: source/sink extraction and taint-propagation rule loading.src/kanren/crosslang.rs: cross-language interaction facts and boundary-risk inference.src/kanren/strategy.rs: risk-weighted file ordering heuristics for verbose assail output.src/kanren/rules.rs: external rule-catalog loading and Nickel export.
src/signatures/- Crash-signature detection and rule sets for known vulnerability classes.
src/report/- Structured formatters, diff tools, TUI/GUI views, and serializers.
- Main conversion point for report presentation concerns.
src/report/generator.rs: assault report synthesis and robustness scoring heuristics.src/report/formatter.rs: summary/accordion/dashboard/matrix terminal renderers.src/report/diff.rs: human-readable report delta generation for regression review.src/report/output.rs: JSON/YAML/Nickel serialization contracts.
src/storage/mod.rs- Multi-target persistence logic (filesystem and VerisimDB-style cache paths).
src/a2ml/mod.rs- Minimal A2ML parser for AI manifest ingestion.
- Nickel exporter for config interoperability.
- Includes schema-versioned A2ML report bundle import/export for assail/attack/assault/ambush/amuck/abduct/adjudicate/audience.
src/panll/mod.rs- PanLL event-chain export adapter.
- Error strategy:
anyhowwith contextualized errors at IO/process boundaries.
- Serialization strategy:
serdeand JSON-first interchange, with YAML/Nickel where relevant.
- Safety strategy:
- Copy-first workflows for destructive experimentation (
amuck,abduct). - Timeouts on process execution paths to avoid hanging campaigns.
- Copy-first workflows for destructive experimentation (
- Add new inference rules:
src/adjudicate/mod.rsfor campaign-level verdict logic.src/kanren/for deeper relational inference.
- Add new observation signals:
src/audience/mod.rs::detect_signals.
- Add new mutation primitives:
src/amuck/mod.rs::MutationOperation.
- Add new isolation semantics:
src/abduct/mod.rsdependency scope and workspace policies.
- Module docs describe responsibility boundaries.
- Function comments explain non-obvious decisions and invariants.
- Export docs highlight contract shape for downstream tooling.