v11.2.0 | Python 3.11+ | Ember
Artifacts

Silinosic-X treats reporting as a first-class runtime, not an afterthought

Reporter is the v11.2.0 case-view layer for Silinosic-X. It groups identity, surface, vulnerability, extension, media, and scoring signals into one readable HTML report while keeping JSON, CSV, SQL, DOCX, PDF, and logs available for operators and machines.

Output formats

Human view, machine view, and audit trail

CLI

Immediate operator-friendly output for prompt mode and direct command runs.

JSON

Structured data for later processing, history listing, and machine pipelines.

CSV

Convenient tabular export for spreadsheets and analyst triage workflows.

HTML

The Reporter case view: categorized HTML output with graphs, severity context, raw payload drill-downs, and the closing Reporter Brief.

Logs

Run logs and framework-level logging for debugging or audit context.

SQL

SQLite case storage for runs, findings, attachments, and OCR-item persistence.

DOCX / PDF

Portable case documents with overview tables, visuals, attachables, vulnerabilities, and Reporter Brief handoff sections.

Capability-pack intel

Generated runtime snapshots under intel/, plugins/_intel/, and related folders help the project inspect itself.

Storage layout

The artifact tree is configurable, but these directories are the default mental model

output/json/
JSON result files, typically named with sanitized target plus a timestamp suffix.
output/html/
HTML reports for browser review.
output/cli/
Saved CLI text reports.
output/csv/
CSV exports when requested.
output/sql/
SQLite case stores when sql output is enabled.
output/docx/
Reporter DOCX case documents for sharing or archival.
output/pdf/
Reporter PDF case documents for portable review.
output/logs/
Per-run logs and framework log output.
Reporter is presentation, not the source of truth
The HTML layer reads from the same structured payloads written to JSON, CSV, SQL, DOCX, and PDF generators. Change output roots or formats with out-type, out-print, and default-out-print.
History and inventory

The project exposes commands for looking backward, not only scanning forward

History commands

  • historyLists scanned targets discovered from saved output artifacts.
  • targets / scansAlias surfaces for artifact-oriented listing behavior.
  • liveOpens a browser-based view on top of stored results.

Inventory artifacts

  • runtime-inventoryThe repo ships intel/runtime-inventory.json with plugin, filter, platform, and module counts.
  • capability-packThe capability-pack / intel command generates structured project self-intel artifacts.
  • plugin/filter intelGenerated views live under plugins/_intel/ and filters/_intel/.
  • attachablesReporter now carries selected plugins, selected filters, attached modules, and OCR tooling availability into the saved payload.
Verification

The repo leans on tests and static checks to keep the runtime sustainable

pytest
ruff
mypy
compileall smoke
package build + twine check
entrypoint smoke
shell
python -m pytest -q
python -m ruff check .
python -m mypy
python -m compileall -q core filters modules plugins platforms wordlists silinosic_x tests silinosic-x.py
python scripts/smoke_suite.py
silinosic-x doctor
silinosic-x --about
python -m silinosic_x --about
python -c "import silinosic_x"
Current quality snapshot
The v11.2.0 refresh aligns reporting, docs, and website behavior around the current runtime. Verification still centers on pytest, Ruff, mypy, compile smoke, and package-entrypoint checks.
OCR diagnostics

Reporter can now tell you which OCR/image backend was actually available

What gets recorded

  • Preferred engineThe runtime reports whether it preferred easyocr, pytesseract, or no usable OCR engine.
  • Image toolingReporter records whether Pillow, easyocr, and pytesseract were importable.
  • Binary reachabilityFor the Tesseract lane, the payload also records whether a tesseract binary was actually found.
json
{
  "ocr_tooling": {
    "preferred_engine": "none",
    "pillow": {"available": true},
    "easyocr": {"available": false},
    "pytesseract": {
      "available": true,
      "tesseract_binary_found": false
    }
  }
}
Troubleshooting mental model
If OCR results are unexpectedly empty, first check whether Reporter recorded preferred_engine: none. If it did, the issue is usually missing Python-side OCR packages or a missing tesseract binary rather than a report-rendering failure. If pytesseract is available but tesseract_binary_found is false, install or expose the system binary before expecting usable OCR output. The quickest local check is silinosic-x doctor.