- Status: accepted (owner directive 2026-09-20; supersedes the per-push Windows CI lane element of ADR 0031)
- Date: 2026-09-20
- Track: T2
Context
ADR 0031's tri-platform build bar added a per-push windows-2025 CI lane proving the
clone → deps.get → compile → test contract on Windows, next to the Linux lanes (macOS was
never a CI lane in this repository). The owner clarified the standing directive on
2026-09-20: the goal was always developer portability — a contributor on Windows, macOS,
or Linux can clone this repository and work on it — not continuous CI proof that the protocol
builds and tests on three operating systems. The per-push Windows lane bills paid runner
minutes against a contract the owner did not intend to prove on every push.
Decision
- The per-push Windows CI lane is removed. CI runs on Linux only: the three Elixir/OTP compatibility lanes, the complete-quality lane, and the informative lanes. No macOS lane is added.
- The developer-portability contract stays and remains enforced in-repo, at zero runner
cost: portable test support with Windows-aware branches, the LF-forcing
.gitattributesdiscipline (a default-autocrlf checkout must not CRLF-mangle the certified corpora), no POSIX shell inside declared gates, andcmd /crouting where a process must spawn on Windows. ADR 0031's toolchain and pinning elements are unaffected by this ADR. - A Windows or macOS lane may be run ad hoc —
workflow_dispatch, a throwaway branch, or a developer machine — when a platform-specific defect is actually suspected. Documentation claims exactly what CI proves: Linux lanes only.
Consequences
- Per-push runner spend drops to Linux-only; the repo's single non-Linux runner lane is gone.
- README's development section states the developer-portability contract and the Linux-only CI scope; the hygiene and architecture tests keep their Windows-aware branches (dormant on Linux CI, correct for local Windows development).
- ADR 0031's header records the partial supersession.
Alternatives considered
- Keep the lane on a schedule instead of every push. Rejected: still spends paid runner minutes continuously proving a contract the owner did not ask to prove; ad hoc on suspicion covers the diagnostic need.
- Drop the in-repo portability machinery as well. Rejected: that machinery IS the owner's directive — any-OS contributors — and it costs no runner minutes.