format and dialyzer are red on a clean main #131
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Measured on clean
origin/main@420edddon a Linux machine running the flake's pinned toolchain (Elixir 1.18.4, OTP 27.3.4.15), with every working change stashed and re-run to prove the failures are not a branch's. Three gates thatmix revenant.citreats as blocking are red before anybody touches anything.mix format --check-formattedfails on one fileThe file is untouched since
3ae3fc7and is byte-identical to whatmaincarries. So either the formatter's answer for this binary pattern moved between the version that last wrote the file and the pinned one, or the two machines this repo is developed on do not agree. The forge workflow runs the same gate at line 46 of.forgejo/workflows/ci.ymland it is blocking, so this should be visible upstream too — worth checking whether it is, because if the forge is green on this commit then the two environments genuinely differ and that is the more interesting bug.Fix is one
mix formaton the file. Filed rather than fixed inside an unrelated branch.mix dialyzerreports two errorsBoth are the guard Elixir compiles an
ifinto, on a condition Dialyzer has narrowed totrue:repository.ex:78isif sqlite?(), andsqlite?/0is@adapter == Ecto.Adapters.SQLite3— a module attribute fixed at compile time. Under the SQLite adapter it is the literaltrueand theelsebranch is dead. This one is adapter-dependent by construction, so it should reproduce on any SQLite build and vanish on a Postgres one.file_system.ex:231isif state.read_only, where the field's inferred type istrue.Neither is a real defect and both are trivially silenced — invert to a
case, or widen the type that narrowed. What matters is that the repo's stated standard is zero Dialyzer warnings, so anyone running the gate today has to know these two are the baseline before they can tell their own work is clean.Why this is worth an issue rather than a note
The three tests already documented as expected-red have the same property, and the cost is the same: a contributor who runs
mix revenant.cion a fresh checkout cannot distinguish the baseline from their own regression without stashing and re-running. Every red gate that is expected should either be fixed or be recorded where the gate itself points at it.