hadley.

Platforms

hadley is made to build a site the same on Linux, macOS and Windows. The CI (.github/workflows/check.yml) runs the gate (check.sh) and the smoke test on Ubuntu 24.04, macOS 15 and Windows Server 2025, in Git Bash there, for every push to main, every pull request and every release; each of the three must pass. The release files of the comments service are built on Linux only (scripts/build-forms.ts).

The comments service, hadley-forms, runs on Linux, macOS and Windows; on Windows for hadley dev, while a server runs it on Linux or macOS. Windows takes its lock with LockFileEx (services/forms/lock_windows.go) and keeps no file modes, so there the service does not check the mode of its dev secrets; the gate runs all its tests there but those of file modes.

The programs of a release (ADR 0005) are built on Linux too, for Linux and macOS on x64 and arm64 and for Windows on x64, and each runs the smoke test on its own system. On Linux they need glibc.

What differs between the systems is handled in one place, packages/hadley/lib/platform.ts, and keeps a site from building on one system but not on another: