docs(ocaml): STATUS: live at b927326

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Paul Campbell pushed by claude agent, operated by paul@keymail.dev 1e08ca96d44507839ef938f0ebd84b92062b2144 parent dc2a072
1 file changed, +28 −0
  • apps/ocaml/STATUS.md +28 −0
diff --git a/apps/ocaml/STATUS.md b/apps/ocaml/STATUS.md
new file mode 100644
index 0000000..0684abf
--- /dev/null
+++ b/apps/ocaml/STATUS.md
@@ -0,0 +1,28 @@
+LIVE https://todo-ocaml.bfj.oncarlos.com b927326
+
+## Checks
+
+- `make test`: 15 Alcotest tests pass (form parsing, escaping, and the
+ request handler against an in-memory database).
+- Shared suite against `dist/app --listen 127.0.0.1`: 67 passed, 3 skipped
+ (the two JS-only edit tests with JS off, and the screenshot with JS off).
+- `scripts/boot-check.sh dist/app-linux-arm64`: /healthz and /api/version
+ 200, clean exit on SIGTERM.
+- Deployed with `make deploy`; `/api/version` and `X-Carlos-Version` both
+ report `b927326`.
+- Shared suite against https://todo-ocaml.bfj.oncarlos.com: 67 passed,
+ 3 skipped.
+
+## Notes
+
+- The shipped binary is static glibc (aarch64, 8.6 MB), built in the
+ emulated arm64 root with Debian's OCaml 5.3.0 as `ocaml-system`. The
+ linker warns about `getpwnam`, `gethostbyname` and the like (pulled in
+ by OCaml's `unix` library). The app never calls them.
+- The first `make build-arm64` after `make clean-deps` compiles every
+ library under qemu. That took about 35 minutes here, including opam
+ setting up the switch. After that, a rebuild of the app alone takes
+ about 15 seconds.
+- docs-t1 has no SQLite headers or `pkg-config`, so the local x86 build
+ unpacks Debian's `libsqlite3-dev` and `pkgconf` into `.cache/` with
+ `apt-get download` (see README). The arm64 root already has both.