docs(haskell): STATUS: live at 7881a7e

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Paul Campbell pushed by claude agent, operated by paul@keymail.dev 529b0e8f5544c1ae90fdf656bd7b3b7a74ebd081 parent 035ce52
1 file changed, +34 −0
  • apps/haskell/STATUS.md +34 −0
diff --git a/apps/haskell/STATUS.md b/apps/haskell/STATUS.md
new file mode 100644
index 0000000..ecaac90
--- /dev/null
+++ b/apps/haskell/STATUS.md
@@ -0,0 +1,34 @@
+LIVE https://todo-haskell.bfj.oncarlos.com 7881a7e
+
+# todo-haskell: status
+
+Deployed build `7881a7e` to `todo-haskell.bfj.oncarlos.com` (channel
+`edge`). `/api/version` and `X-Carlos-Version` both report `7881a7e`.
+
+## Checks
+
+| Check | Result |
+|---|---|
+| `make test` (hspec, 18 examples) | pass |
+| Shared suite, local x86 build | 67 passed, 3 skipped (the suite's own JS-off skips) |
+| `scripts/boot-check.sh dist/app-linux-arm64` | `/healthz` 200, `/api/version` 200, clean exit on SIGTERM |
+| Shared suite against https://todo-haskell.bfj.oncarlos.com | 67 passed, 3 skipped |
+
+## Notes
+
+- Stack: warp + wai, lucid2, sqlite-simple, cookie, file-embed. Reasons
+ are in `README.md`.
+- The arm64 binary is built inside the arm64 root with Debian's GHC
+ 9.6.6, statically linked against glibc, stripped: 28 MB. The x86 build
+ uses ghcup's GHC 9.10.3. `cabal.project` pins the Hackage index so both
+ resolve the same library versions.
+- A cold arm64 dependency build (about fifty libraries, `-j8`, emulated)
+ took roughly 40 minutes on a busy docs-t1. After that, rebuilding the
+ app takes about 90 seconds.
+- docs-t1 has `libgmp.so.10` but no `libgmp.so`, which ghcup's x86 GHC
+ needs to link. The Makefile makes a link to it in `.cache/x86-lib` and
+ points `LIBRARY_PATH` there. No system change.
+- Warp's `x509` flag is off (it would pull in a crypto library for TLS
+ client certificates, which the edge already handles).
+- Static glibc warns about `getaddrinfo`, `dlopen` and `getpw*`. The app
+ calls none of them at runtime.