towerops/lib/towerops/devices
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
..
mikrotik_backups dialyzer: fix remaining 88 warnings — clean dialyzer run 2026-04-21 10:32:42 -05:00
backup_request.ex handle mikrotik ssh 2026-02-02 16:42:18 -06:00
backup_requests.ex handle mikrotik ssh 2026-02-02 16:42:18 -06:00
credential_resolver.ex Replace conditionals with functional pattern matching 2026-02-10 17:11:37 -06:00
device.ex feat: simplify device type to manual-only with 6 options (#109) 2026-03-22 11:24:53 -05:00
device_firmware_history.ex Add firmware tracking database schema 2026-02-01 10:13:16 -06:00
event.ex add sensor value change events for all sensor types 2026-02-11 15:06:55 -06:00
event_logger.ex perf: LiveView event batching & PubSub optimization (TOW-26) 2026-03-15 14:08:27 -05:00
firmware.ex dialyzer: fix all unmatched_return warnings (154 → 0) 2026-04-21 10:03:55 -05:00
firmware_release.ex Add firmware tracking database schema 2026-02-01 10:13:16 -06:00
mikrotik_backup.ex Mikrotik backup and gettext start 2026-02-02 09:11:22 -06:00
mikrotik_backups.ex handle mikrotik ssh 2026-02-02 16:42:18 -06:00
version_comparator.ex refactor: convert 6 Gleam modules to idiomatic Elixir with TDD (#196) 2026-03-28 09:52:07 -05:00