From 628451ffabc2d1f33f304115697c8c978637afe1 Mon Sep 17 00:00:00 2001 From: Chris Purcell <168346341+chrisdpurcell@users.noreply.github.com> Date: Sun, 9 Aug 2026 19:42:53 -0400 Subject: [PATCH 1/2] chore(rexec): declare remote build/test requirements Adds .rexec.toml so `rexec setup` converges CT 117 for this repository: toolchain probes that name a missing tool up front instead of failing as "command not found" mid-run, plus any native system packages this repo needs beyond the shared host baseline. Caches are deliberately left at their remote defaults: uv, Go and pnpm already cache outside the synchronized worktree and share one content-addressed store across every workspace on the host, so pinning them to {remote_cache} would fragment that store rather than protect it. --- .rexec.toml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .rexec.toml diff --git a/.rexec.toml b/.rexec.toml new file mode 100644 index 0000000..2e72297 --- /dev/null +++ b/.rexec.toml @@ -0,0 +1,21 @@ +# rexec repository configuration. See `rexec help config`. +# +# Caches are intentionally left at their remote defaults: uv, Go and pnpm all +# cache outside the synchronized worktree and share one content-addressed store +# across every workspace on the host. Pinning them to {remote_cache} would +# fragment that store per repository, not protect anything. + +[env] +# Keep the interpreter environment out of the disposable worktree, so +# `rexec clean` rebuilds the mirror without discarding a full `uv sync`. +UV_PROJECT_ENVIRONMENT = "{remote_cache}/python-env" + +[provision.tools] +# Probed, never installed: `rexec setup` names a missing toolchain up front +# instead of letting the run fail as "command not found" mid-suite. + +[provision.tools.uv] +probe = "uv --version" + +[provision.tools.go] +probe = "go version" From e9b0d7e4db1a0a9effaa0ff73050cc8fc6279a5c Mon Sep 17 00:00:00 2001 From: Chris Purcell <168346341+chrisdpurcell@users.noreply.github.com> Date: Mon, 10 Aug 2026 09:25:43 -0400 Subject: [PATCH 2/2] chore: migrate rexec configuration to v0.2.0 schema 1 Reproduces this repository's full effective v0.1.3 configuration under the one-root-file schema; deliberate changes are recorded in the remote-execution release evidence (docs/evidence/rexec-v0.2/). --- .rexec.toml | 87 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 72 insertions(+), 15 deletions(-) diff --git a/.rexec.toml b/.rexec.toml index 2e72297..838f89d 100644 --- a/.rexec.toml +++ b/.rexec.toml @@ -1,21 +1,78 @@ -# rexec repository configuration. See `rexec help config`. +# rexec repository configuration (.rexec.toml), committed with the repository. # -# Caches are intentionally left at their remote defaults: uv, Go and pnpm all -# cache outside the synchronized worktree and share one content-addressed store -# across every workspace on the host. Pinning them to {remote_cache} would -# fragment that store per repository, not protect anything. +# Schema-1 migration of this repository's full effective v0.1.3 configuration +# (rexec v0.2.0 cutover, 2026-08-10). Deliberate changes from v0.1.3 are +# recorded in the release evidence under remote-execution +# docs/evidence/rexec-v0.2/. + +schema = 1 + +[remote] + +# Effective v0.1.3 host: "rexec", set explicitly by the user-level [default] table +# and identical to the v0.1.3 compiled default. schema 1 has no default for it, so +# it must be declared here. +host = "rexec" + +[tools] + +# Migrates the v0.1.3 [provision.tools.go] probe ("go version"), which declared +# no version. The exact version is derived from this repository's own source of +# truth, the go.mod toolchain directive, and is declared unqualified because go +# is one of the pinned mise release's core names. +go = "1.26.5" [env] -# Keep the interpreter environment out of the disposable worktree, so -# `rexec clean` rebuilds the mirror without discarding a full `uv sync`. -UV_PROJECT_ENVIRONMENT = "{remote_cache}/python-env" -[provision.tools] -# Probed, never installed: `rexec setup` names a missing toolchain up front -# instead of letting the run fail as "command not found" mid-suite. +# Carried over verbatim from the effective v0.1.3 [env] table. The +# "{remote_cache}" placeholder is still a schema-1 surface and is still expanded +# at activation time against the worker-reported cache root, so the value keeps +# the interpreter environment outside the disposable worktree exactly as before. +UV_PROJECT_ENVIRONMENT = "{remote_cache}/python-env" -[provision.tools.uv] -probe = "uv --version" +[provision.debian] -[provision.tools.go] -probe = "go version" +# The full effective v0.1.3 Debian package list, in effective order: the +# user-level baseline followed by this repository's own additions, unioned exactly +# as the released Load did. schema 1 has no user layer, so the whole list is +# restated here to keep `rexec setup` converging exactly what it converged before. +packages = [ + "rsync", + "git", + "git-lfs", + "make", + "build-essential", + "pkg-config", + "cmake", + "ninja-build", + "curl", + "ca-certificates", + "jq", + "sqlite3", + "unzip", + "zip", + "xz-utils", + "shellcheck", + "shfmt", + "ripgrep", + "python3-dev", + "python3-venv", + "libffi-dev", + "libssl-dev", + "zlib1g-dev", + "libbz2-dev", + "liblzma-dev", + "libsqlite3-dev", + "libreadline-dev", + "libyaml-dev", + "libjpeg-dev", + "libfreetype-dev", + "libpng-dev", + "libxml2-dev", + "libxslt1-dev", + "libpq-dev", + "default-libmysqlclient-dev", + "libopenblas-dev", + "liblapack-dev", + "gfortran", +]