From 3882af388622506e956f45cf12801ace72981e6d Mon Sep 17 00:00:00 2001 From: NotBigGhost Date: Thu, 1 Oct 2026 20:11:35 +0300 Subject: [PATCH] =?UTF-8?q?CLAUDE.md:=20Deployment=20=E2=80=94=20=D0=BE?= =?UTF-8?q?=D0=B1=D1=80=D0=B0=D0=B7=201.3.0,=20=D0=BA=D0=B0=D0=BC=D0=BF?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BD=D0=B0=20=D0=BF=D1=8F=D1=82?= =?UTF-8?q?=D1=8C=20=D0=B4=D0=BE=D0=BB=D0=B5=D0=B9=20(shard,=20entrypoint.?= =?UTF-8?q?sh,=20docker-compose.shards.yml)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CLAUDE.md | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 184e293..7a0ebc6 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -637,15 +637,28 @@ Note the campaign has barely started: `out/` currently holds four finished runs ## Deployment -Published image **`notbigghost/kbc2d:1.2.0`**; the server needs only +Published image **`notbigghost/kbc2d:1.3.0`** (also `latest`); the server needs only `docker-compose.server.yml` (the only compose file with no `build:` section), not -the sources. `ENTRYPOINT` is the campaign driver and `CMD` defaults to `--dry-run`, -so a stray `docker run` prints an estimate instead of starting a 100-hour job. Check +the sources. `ENTRYPOINT` is `bench/entrypoint.sh` and `CMD` defaults to `--dry-run`: +without `KBC2D_SHARD` it just forwards to `run_campaign.sh`, so a stray `docker run` +prints an estimate instead of starting a 100-hour job. + +**Five shards** (since 1.3.0): every run in `scenarios.json` carries `"shard": 1..5`, +assigned by LPT in `gen_scenarios.py` (`--shards N`) on a dzn-shaped time model +(`DZN_MLUPS`), ≈24 h each. `docker-compose.shards.yml` + `shard.bat N` target someone +else's Windows/WSL2 PC: with `KBC2D_SHARD` set, the entrypoint picks the GPU path +(`/dev/dxg` → dzn, else NVIDIA toolkit), requires a non-CPU adapter in `vulkaninfo`, +runs `parity.py` once (marker `out/parity_shardN.ok`), then +`run_campaign.sh --resume --shard N`. A sharded driver writes `summary_shardN.csv` / +`campaign_shardN.log` instead of the shared names. The compose sets +`command: ["--resume"]` only to avoid inheriting `--dry-run`. Regenerating +`scenarios.json` must keep the diff to the shard fields — the generator reproduces the +rest exactly. Check the card first (`--profile check run --rm vulkan`) — a missing GPU is better discovered in a minute than in an hour. The `check` profile also carries `preflight`, `calibrate` and `plan` services (plus `parity` in the WSL file). -Two version caveats: the `1.2.0` tag lives only in the compose files and prose — +Two version caveats: the `1.3.0` tag lives only in the compose files and prose — `Cargo.toml` still says `version = "0.1.0"` and the Dockerfile defaults `ARG VERSION=dev`. And `linux/amd64` is asserted in `README.md` only; no compose file sets `platform:` and the Dockerfile sets no `--platform`.