towerops/lib/towerops/workers
Graham McIntire 0350ced8e1 dialyzer: fix remaining 88 warnings — clean dialyzer run
Categories addressed:
- pattern_match / pattern_match_cov (32): remove dead case/with clauses
  that dialyzer proved unreachable from the caller types.
- contract_supertype / extra_range / invalid_contract /
  contract_with_opaque (25): narrow @spec declarations to match actual
  success typings.
- call / call_without_opaque (18): fix bad calls, narrow User.t to
  allow nil for in-memory changeset structs, suppress Ecto.Multi
  opaque-type false positives with targeted @dialyzer directives.
- guard_fail / no_return / unused_fun / unknown_function (13): remove
  dead || fallbacks, simplify always-true params, cascade-resolve
  no_returns via the underlying pattern_match and call fixes.

Real production bug fixed: StormDetector.handle_cast/2 had swapped
`:queue.in` args (`queue |> :queue.in(ts)` which desugars to
`:queue.in(queue, ts)` — wrong argument order). Alert timestamps
were never being enqueued, so storm detection would fail at runtime.
Corrected to `ts |> :queue.in(queue)`.

.dialyzer_ignore.exs: suppress two genuine dep-PLT gaps
(:ranch.get_addr/1 false positive from Bandit's transitive ranch,
and the Cloak.Vault GenServer callback_info on the CI build path).

`mix dialyzer` now: Total errors: 114, Skipped: 114 — passes clean.
Warnings: 88 → 0.
2026-04-21 10:32:42 -05:00
..
agent_latency_evaluator.ex fix: cloud poller automatic rebalancing 2026-02-12 15:32:33 -06:00
alert_digest_worker.ex reliability-audit-fixes (#181) 2026-03-26 14:10:36 -05:00
alert_notification_worker.ex dialyzer: fix remaining 88 warnings — clean dialyzer run 2026-04-21 10:32:42 -05:00
backup_summary_worker.ex Add strict typespecs to all Oban worker perform/1 functions 2026-02-06 09:50:51 -06:00
backup_timeout_worker.ex Add strict typespecs to all Oban worker perform/1 functions 2026-02-06 09:50:51 -06:00
billing_sync_worker.ex stripe and email after signup 2026-03-06 10:07:27 -06:00
capacity_insight_worker.ex reliability-audit-fixes (#181) 2026-03-26 14:10:36 -05:00
check_executor_worker.ex dialyzer: fix all unmatched_return warnings (154 → 0) 2026-04-21 10:03:55 -05:00
check_worker.ex refactor: convert 6 Gleam modules to idiomatic Elixir with TDD (#196) 2026-03-28 09:52:07 -05:00
cloud_latency_probe_worker.ex dialyzer: fix all unmatched_return warnings (154 → 0) 2026-04-21 10:03:55 -05:00
cloudflare_ban_worker.ex Add 404-based brute force protection system 2026-02-10 16:31:48 -06:00
cn_maestro_sync_worker.ex refactor: convert 6 Gleam modules to idiomatic Elixir with TDD (#196) 2026-03-28 09:52:07 -05:00
data_retention_worker.ex feat: add per-organization data retention with 1-year default (#144) 2026-03-24 15:30:43 -05:00
device_health_insight_worker.ex feat: command center dashboard with unified insights and contextual enrichment 2026-02-13 14:52:49 -06:00
device_monitor_worker.ex dialyzer: fix all unmatched_return warnings (154 → 0) 2026-04-21 10:03:55 -05:00
device_poller_worker.ex dialyzer: fix remaining 88 warnings — clean dialyzer run 2026-04-21 10:32:42 -05:00
discovery_worker.ex dialyzer: fix all unmatched_return warnings (154 → 0) 2026-04-21 10:03:55 -05:00
escalation_check_worker.ex dialyzer: fix all unmatched_return warnings (154 → 0) 2026-04-21 10:03:55 -05:00
expired_ban_cleanup_worker.ex Add 404-based brute force protection system 2026-02-10 16:31:48 -06:00
firmware_version_fetcher_worker.ex Add GeoIP import HTTP tests 2026-03-10 16:02:49 -05:00
gaiia_insight_worker.ex dialyzer: fix all unmatched_return warnings (154 → 0) 2026-04-21 10:03:55 -05:00
gaiia_sync_worker.ex add gaiia integration stages 1-2: sync engine and entity mapping UI 2026-02-13 10:31:32 -06:00
job_cleanup_task.ex Skip Phoenix poller/monitor scheduling when SNMP disabled 2026-02-17 07:12:15 -06:00
job_health_check_worker.ex fix: dns and ping checks not executing in production (#71) 2026-03-18 08:43:37 -05:00
login_history_cleanup_worker.ex Add strict typespecs to all Oban worker perform/1 functions 2026-02-06 09:50:51 -06:00
mikrotik_backup_worker.ex dialyzer: fix all unmatched_return warnings (154 → 0) 2026-04-21 10:03:55 -05:00
netbox_sync_worker.ex Add NetBox sync worker + improve Gaiia error messages 2026-02-14 17:11:38 -06:00
polling_offset.ex refactor: convert 6 Gleam modules to idiomatic Elixir with TDD (#196) 2026-03-28 09:52:07 -05:00
preseem_baseline_worker.ex add preseem insights schema, generation, and queries 2026-02-13 08:53:01 -06:00
preseem_sync_worker.ex refactor: convert 6 Gleam modules to idiomatic Elixir with TDD (#196) 2026-03-28 09:52:07 -05:00
report_worker.ex reliability-audit-fixes (#181) 2026-03-26 14:10:36 -05:00
session_cleanup_worker.ex Add strict typespecs to all Oban worker perform/1 functions 2026-02-06 09:50:51 -06:00
sonar_sync_worker.ex ui: major redesign - NOC dashboard, consolidated nav, dense tables, flat alerts 2026-02-14 20:15:07 -06:00
splynx_sync_worker.ex ui: major redesign - NOC dashboard, consolidated nav, dense tables, flat alerts 2026-02-14 20:15:07 -06:00
stale_agent_worker.ex Add comprehensive typespecs to agent-related modules 2026-02-06 09:33:44 -06:00
stale_violation_cleanup_worker.ex Add 404-based brute force protection system 2026-02-10 16:31:48 -06:00
system_insight_worker.ex fix/findings-medium-priority (#188) 2026-03-27 12:31:53 -05:00
uisp_sync_worker.ex refactor: convert 6 Gleam modules to idiomatic Elixir with TDD (#196) 2026-03-28 09:52:07 -05:00
visp_sync_worker.ex ui: major redesign - NOC dashboard, consolidated nav, dense tables, flat alerts 2026-02-14 20:15:07 -06:00
weather_sync_worker.ex dialyzer: fix all unmatched_return warnings (154 → 0) 2026-04-21 10:03:55 -05:00
welcome_email_worker.ex dialyzer: fix all unmatched_return warnings (154 → 0) 2026-04-21 10:03:55 -05:00
wireless_insight_worker.ex reliability-audit-fixes (#181) 2026-03-26 14:10:36 -05:00