Login
View Ticket
Login
Ticket Hash: 241be0bed65e9715adccd02c806b3e3d627116f5
Title: The container node's image installs Alpine's Crystal 1.18.2, so trunk, pinned at 1.19.1, no longer builds there
Status: Closed Type: Code_Defect
Severity: Normal Priority: High
Subsystem: node Resolution: Fixed
Last Modified: 2026-11-09 21:37:51
33.4 hours ago
Created: 2026-11-02 20:52:50
8.4 days ago
Version Found In:
Description:
Found 2026-11-02 at 3:48 pm Eastern by the first CI run on aarch64-1 (run bcf5bfc37f, on ollama, of trunk c92c191591): exit 1, "Error: undefined method 'instant' for Time.class", tools/ocx2.cr does not build. ocx-node/Dockerfile installs crystal from Alpine 3.23's packages, which is 1.18.2; trunk pins 1.19.1 (9c32130f12) and has used Time.instant since 2fef62aca6. The container runs today only because its image built the older release b3386f3589; the next release accepted would fail to build in the image, and every CI run there fails on the compiler alone.

Fix: the image installs the pinned compiler, the one shard.yml names, not the distribution's: Crystal's own release for linux-aarch64 at that version, or a build of it, checked by hash like the client root's inputs (ocx-rootfs/build-rootfs.cr).

Passes when: a CI run on aarch64-1 of trunk prints "Crystal 1.19.1" in its dependency ledger and builds tools/ocx2.cr.

Also found the same afternoon: the image's named volume for /root, created on Oct 31 by an earlier image, kept that image's empty, root-owned /root and hid the current image's Claude install and sign-in files; recreating the volume fixes it. Making the container's home /home/ocx with hosts.json mapping it into sandboxes as /root, as x86-1 does, would avoid that; it needs the maintainer's word on scripts/hosts.json.

User Comments:
added on 2026-11-09 21:37:51:

Closed in OCX's ticket sort, batch 1 (ollama post 8f6c9afbb7): done in 9528b053d2: ocx-node/Dockerfile installs the official Crystal 1.19.1 tarball, checked by sha256 (lines 19-23). Not checked: CI on aarch64-1 since.