mirror of
https://github.com/usestrix/strix.git
synced 2026-08-21 10:48:59 +02:00
The 150-line ``Tracer.save_run_data`` mashed three concerns together: opening file handles, formatting Markdown for vulnerabilities, and writing the executive penetration-test report. None of that is telemetry — it's pure on-disk artifact emission. Extract to :class:`ScanArtifactWriter` in ``strix/io/scan_artifacts.py``: - One writer per ``run_dir``, owns its own ``_saved_vuln_ids`` dedupe set so re-saves only emit new files. - ``writer.save(vulnerability_reports=, final_scan_result=)`` is the only public entry point. - ``_render_vulnerability_md`` is module-private and unit-testable in isolation. ``Tracer`` now lazily creates a single ``ScanArtifactWriter`` per ``run_dir`` and delegates ``save_run_data`` to it (~150 LoC body collapses to ~10). Net: tracer.py 422 → 327 LoC; new scan_artifacts.py 196 LoC. About −95 LoC of mixed concerns, plus telemetry no longer carries file-I/O responsibilities. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
7 lines
243 B
Python
7 lines
243 B
Python
"""Strix I/O — disk artifact writers.
|
|
|
|
- :class:`ScanArtifactWriter` — writes vulnerability MD/CSV plus the
|
|
final penetration-test report under ``strix_runs/<run>/``. Used by
|
|
the tracer; could be used directly by post-run tooling.
|
|
"""
|