Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@
# CLAUDE.md's "Devcontainer" section says what it covers and what still needs
# the host (the Factorio oracle capture).
#
# Plain Ubuntu 24.04 (noble), pinned by digest so every rebuild starts from
# the same bytes. It was the .NET SDK image until the C# was removed; that
# image is itself noble, so the apt packages below did not change.
# Plain Ubuntu 26.04 (resolute), pinned by digest so every rebuild starts from
# the same bytes. It was the .NET SDK image (itself noble, 24.04) until the C#
# was removed, then plain 24.04; the apt packages below installed unchanged on
# both moves.
# Re-pin with:
# docker buildx imagetools inspect ubuntu:24.04
FROM ubuntu:24.04@sha256:68ee22004a9109b44973313b02ff7b1de250f1de0f5ecb628d73f579aaff33ac
# docker buildx imagetools inspect ubuntu:26.04
FROM ubuntu:26.04@sha256:c098726dd9b9733f3e885f8de0ef375206a311b0a317eadc40d347b1115fb944

# The base image already has a `ubuntu` user at uid 1000, so there is no user
# to create - only sudo to add, for the postCreate chown of the named volumes.
Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ CI (`.github/workflows/ci.yml`) runs the five Rust check and build commands abov

### Devcontainer

`.devcontainer/` builds a Linux container carrying every toolchain this repo needs: **Rust 1.99.1 through rustup (with rustfmt, clippy, rust-src and the wasm32 target), Node 24.21.0, python3, git and gcc** (cargo's linker), on plain `ubuntu:24.04` pinned by digest. Node is pinned exactly and checksummed. The base already has user `ubuntu` at uid 1000, which is the container's `remoteUser`. Before stage 13b the image was built on the .NET SDK and also carried dotnet, PowerShell and Lua 5.2; those are gone with the C#.
`.devcontainer/` builds a Linux container carrying every toolchain this repo needs: **Rust 1.99.1 through rustup (with rustfmt, clippy, rust-src and the wasm32 target), Node 24.21.0, python3, git and gcc** (cargo's linker), on plain `ubuntu:26.04` pinned by digest. Node is pinned exactly and checksummed. The base already has user `ubuntu` at uid 1000, which is the container's `remoteUser`. Before stage 13b the image was built on the .NET SDK and also carried dotnet, PowerShell and Lua 5.2; those are gone with the C#.

**Rust is pre-installed, and `rust/rust-toolchain.toml` still decides.** The image installs the toolchain named by `RUST_VERSION` in the Dockerfile, so creating the container downloads no compiler. Inside `rust/`, rustup reads the toolchain file as it does anywhere else. A stale `RUST_VERSION` therefore breaks nothing - rustup just installs the new pin on first use (about 10 s, measured) - which is exactly why nobody would notice. So the Devcontainer CI job compares `RUST_VERSION` with the toolchain file, checks that `rustc` and `cargo` in `rust/` report that version, and checks that the wasm32 target is installed. **When `rust/rust-toolchain.toml` moves, move `RUST_VERSION` with it.** The toolchain file is in that job's paths filter for this reason.

Expand Down
Loading