# Sobelow per-finding skips. Enabled by `--skip` in `app/Makefile`.
#
# Rule: every entry is preceded by a rationale comment saying what the check
# cannot see and why the protection is real (or why the finding is a false
# positive). An unexplained skip is a defect; `scripts/check-lens-sensors.sh`
# enforces this. Fingerprints are sobelow's own; a code change that moves a
# skip's line invalidates it and the sensor fails loudly rather than staying
# quiet.
#
# Baseline 2026-10-28, sobelow 0.17.0: 3 findings (2 High, 1 Low), all skipped.

# Config.CSP - High - lib/firehose_web/router.ex:13 (pipeline :browser)
# No CSP exists. put_secure_browser_headers does not set one and the root
# layout has an inline theme script with no nonce, so choosing a policy is a
# design decision rather than a mechanical fix.
# Follow-up yak: app: add a Content-Security-Policy (sobelow Config.CSP)
Config.CSP: Missing Content-Security-Policy,lib/firehose_web/router.ex:13,486EC13

# Config.HTTPS - High - config/prod.exs
# No force_ssl: production TLS is terminated by the Dokku proxy. Whether the
# endpoint should also force SSL/HSTS (and trust X-Forwarded-Proto) is a
# deployment decision, not a mechanical fix.
# Follow-up yak: app: enforce HTTPS in production (sobelow Config.HTTPS)
Config.HTTPS: HTTPS Not Enabled,config/prod.exs:0,2B5C077

# Traversal.FileModule - Low - lib/firehose_web/live/microprints_live.ex:331
# False positive: the client path is only read after Enum.find matches it
# against the server-scanned microprint list, and source_dir comes from
# @source_dirs. Both Path.join inputs are server-computed, never client text.
Traversal.FileModule: Directory Traversal in `File.read`,lib/firehose_web/live/microprints_live.ex:331,7ED2FE5
