Răsfoiți Sursa

refactor: rename base image family to jovian-judgement (dir + images + profiles); tag = pin cut + model, :local retired

Alexander Korolev 1 lună în urmă
părinte
comite
c11e975b4e
58 a modificat fișierele cu 130 adăugiri și 123 ștergeri
  1. 9 7
      .agents/skills/jovian-images/SKILL.md
  2. 3 3
      AGENTS.md
  3. 1 1
      docker-images/jovian-judgement/Dockerfile
  4. 0 0
      docker-images/jovian-judgement/apt-sources.list
  5. 0 0
      docker-images/jovian-judgement/build.sh
  6. 0 0
      docker-images/jovian-judgement/checksums/tiktoken.sha256
  7. 0 0
      docker-images/jovian-judgement/fetch-deps.sh
  8. 0 0
      docker-images/jovian-judgement/lmcache-runtime-requirements.txt
  9. 0 0
      docker-images/jovian-judgement/locks/apt-packages.txt
  10. 0 0
      docker-images/jovian-judgement/locks/apt-sources.list
  11. 0 0
      docker-images/jovian-judgement/locks/deps.lock
  12. 0 0
      docker-images/jovian-judgement/locks/python-bootstrap.txt
  13. 0 0
      docker-images/jovian-judgement/locks/python-build.txt
  14. 0 0
      docker-images/jovian-judgement/locks/python-runtime.txt
  15. 0 0
      docker-images/jovian-judgement/patch_cuda_sm12x.py
  16. 0 0
      docker-images/jovian-judgement/patches-eugr/patch_vllm_autogptq_symmetric_moe_qzeros.py
  17. 0 0
      docker-images/jovian-judgement/patches-eugr/patch_vllm_b12x_c128a_topk_alignment.py
  18. 0 0
      docker-images/jovian-judgement/patches-eugr/patch_vllm_diffusion_tensor_causal.py
  19. 0 0
      docker-images/jovian-judgement/patches-eugr/patch_vllm_disable_minimax_qk_rmsnorm_ipc.py
  20. 0 0
      docker-images/jovian-judgement/patches-eugr/patch_vllm_flashinfer_b12x_swigluoai.py
  21. 0 0
      docker-images/jovian-judgement/patches-eugr/patch_vllm_gemma4_mtp_embedding_share.py
  22. 0 0
      docker-images/jovian-judgement/patches-eugr/patch_vllm_mrv2_speculator_cudagraph_pool.py
  23. 0 0
      docker-images/jovian-judgement/patches-eugr/patch_vllm_preserve_sm12x_target.py
  24. 0 0
      docker-images/jovian-judgement/patches-eugr/patch_vllm_routed_experts_weight_shape.py
  25. 0 0
      docker-images/jovian-judgement/patches-eugr/patch_vllm_sm120_cooperative_topk.py
  26. 0 0
      docker-images/jovian-judgement/patches-eugr/patch_vllm_spark_kv_cache_cleanup.py
  27. 0 0
      docker-images/jovian-judgement/patches-eugr/patch_vllm_topk_softplus_sqrt_control_flow.py
  28. 1 1
      docker-images/jovian-judgement/profiles/r28.env
  29. 1 1
      docker-images/jovian-judgement/profiles/r31.env
  30. 1 1
      docker-images/jovian-judgement/profiles/r35.env
  31. 1 1
      docker-images/jovian-judgement/profiles/r36-ds41.env
  32. 1 1
      docker-images/jovian-judgement/profiles/r37-ds41.env
  33. 2 2
      docker-images/jovian-judgement/profiles/r38.env
  34. 0 0
      docker-images/jovian-judgement/versions.env
  35. 4 4
      recipes/dsv41-flash-jovian-r36-4x/recipe.toml
  36. 5 5
      recipes/dsv41-flash-jovian-r37-4x/recipe.toml
  37. 4 4
      recipes/glm53-flash-nvfp4-lab-4x/recipe.toml
  38. 4 4
      recipes/glm53-flash-nvfp4-lab/recipe.toml
  39. 4 4
      recipes/glm53-flash-nvfp4-spark/recipe.toml
  40. 2 2
      recipes/glm53-flash-r27-4x-dcp4/recipe.toml
  41. 2 2
      recipes/glm53-flash-r27-spark/recipe.toml
  42. 6 6
      recipes/glm53-flash-r28-4x-dcp4-b12xload/recipe.toml
  43. 6 6
      recipes/glm53-flash-r28-4x-dcp4-split2048/recipe.toml
  44. 6 6
      recipes/glm53-flash-r28-4x-dcp4/recipe.toml
  45. 3 3
      recipes/glm53-flash-r28-dflash2-2x/recipe.toml
  46. 3 3
      recipes/glm53-flash-r28-spark/recipe.toml
  47. 3 3
      recipes/glm53-flash-r31-2x/recipe.toml
  48. 6 6
      recipes/glm53-flash-r31-4x-dcp4/recipe.toml
  49. 4 4
      recipes/glm53-flash-r35-2x-dflash2/recipe.toml
  50. 6 6
      recipes/glm53-flash-r35-4x-dcp4/recipe.toml
  51. 6 6
      recipes/glm53-flash-r35-4x-dflash2/recipe.toml
  52. 4 4
      recipes/glm53-flash-spark-4x/recipe.toml
  53. 5 5
      recipes/glm53-full-mxfp4-4x-dspark8/recipe.toml
  54. 5 5
      recipes/glm53-full-mxfp4-4x-probe/recipe.toml
  55. 5 5
      recipes/glm53-full-mxfp4-4x/recipe.toml
  56. 3 3
      recipes/glm53-full-mxfp4-8x/recipe.toml
  57. 6 6
      specs/tech-architecture/glm53-recipe-state.md
  58. 8 3
      src/docker/build_tests.rs

+ 9 - 7
.agents/skills/jovian-images/SKILL.md

@@ -14,14 +14,14 @@ source locks, GB10-adapted runtime.
 
 ## Layout
 
-- `docker-images/glm53-jovian-r27/` — the v2 contract build (**reproducible
+- `docker-images/jovian-judgement/` — the v2 contract build (**reproducible
   from a fresh repo clone**; no context tarballs):
   - `versions.env` — every pin: source SHAs + tree hashes + pretend
     package versions + runtime versions. Single source of truth.
   - `profiles/<name>.env` — named pin sets for recipe adoption (same
     `KEY=VAL` format; only the keys that differ from `versions.env`). A
     recipe references one via `build_profile = "<name>"`; merge order:
-    versions.env < profile < recipe `[build.versions]`. `glm53-r28.env`
+    versions.env < profile < recipe `[build.versions]`. `r28.env`
     is the r28 lock (vLLM 62f6385c + b12x 7216f6b9 + LMCache 934c287a).
     The profile file lives in the build dir → it ships with the context
     and moves the dir checksum.
@@ -33,15 +33,17 @@ source locks, GB10-adapted runtime.
     vllm-clone (gated) → deps-fetched → vllm-builder → b12x-clone/builder →
     lmcache-builder → runner (installs wheels + gates).
   - `build.sh` — generic driver; forwards every versions.env KEY=VAL as a
-    build-arg. `TAG=glm53-jovian-r27:local bash build.sh`.
+    build-arg. `TAG=jovian-judgement:r35-glm53 bash build.sh`.
 - Legacy r12/r18 staging-era build dirs were REMOVED from the repo
   (2026-09-07): their tarball contexts were not rebuildable anyway. The
   r18 image (`glm53-jovian-r18:local`) lives on the nodes and the recipes
   keep referencing it; `docker_image_dir` for those recipes is now
-  informational only (no build dir). The r27 dir is the current build
+  informational only (no build dir). The jovian-judgement dir is the current build
   lineage.
-- Production recipes reference `docker_image = "glm53-jovian-r<N>:local"`
-  and `docker_image_dir = "glm53-jovian-r<N>"` (r27 = the live build dir).
+- Production recipes reference `docker_image = "jovian-judgement:<tag>"`
+  where the tag names the pin cut + target model (e.g. `r35-glm53`,
+  `r37-ds41`; built from the matching `profiles/<profile>.env`) and
+  `docker_image_dir = "jovian-judgement"` (the live build dir).
 
 ## Pin discipline (r27 contract, verified 2026-09-06)
 
@@ -50,7 +52,7 @@ source locks, GB10-adapted runtime.
 | vLLM | `voipmonitor/vllm` @ `63a82f8d…` (branch `integration/glm53-r27-release-20260906`) | `f54cd9ca…` |
 | B12X | `voipmonitor/b12x` @ `e8ad299b…` (same branch name) | `f3cd8a9e…` |
 | LMCache | `local-inference-lab/LMCache` @ `822330db…` | `008ac3e0…` |
-| r28 profile | `profiles/glm53-r28.env`: vLLM `62f6385c…` / b12x `7216f6b9…` / LMCache `934c287a…` (one 09-06 cut) | `6361a741…` / `be0572c5…` / `a860684a…` |
+| r28 profile | `profiles/r28.env`: vLLM `62f6385c…` / b12x `7216f6b9…` / LMCache `934c287a…` (one 09-06 cut) | `6361a741…` / `be0572c5…` / `a860684a…` |
 | FlashKDA | `vllm-project/FlashKDA` @ `3b225bf2…` | (gitlink in dep) |
 | cutlass (top) | `nvidia/cutlass` @ `v4.4.2` | — |
 | FlashMLA | `a8f794d1…` (→ vendored cutlass `147f5673…`) | — |

+ 3 - 3
AGENTS.md

@@ -209,7 +209,7 @@ PORT = { from = "port" }            # or: value resolves from a recipe field at
                                      # serve time (supported target: port) —
                                      # the value is declared once, can't drift
 
-build_profile = "glm53-r28"        # optional; named pin set from docker-images/<dir>/profiles/<name>.env
+build_profile = "r28"             # optional; named pin set from docker-images/<dir>/profiles/<name>.env
 
 [build.versions]                    # optional; overrides pins in docker-images/<dir>/versions.env
 VLLM_COMMIT = "00907fc..."          # recipe wins over profile > image pin; folded into build checksum
@@ -390,7 +390,7 @@ may override any pin without editing the image dir. A `build_profile =
 "<name>"` references `docker-images/<dir>/profiles/<name>.env` (same `KEY=VAL`
 format) — the way to ship a full pin set by name (an engine generation cut
 across all forks: vLLM + b12x + LMCache together; see
-`docker-images/glm53-jovian-r27/profiles/glm53-r28.env`). Precedence:
+`docker-images/jovian-judgement/profiles/r28.env`). Precedence:
 image `versions.env` < profile < recipe `[build.versions]` (one-off
 experiments). The merged file is written to the node and folded into the
 checksum, so any pin change triggers a rebuild. Keys must match `versions.env`
@@ -401,7 +401,7 @@ source lock is cut as one set — see the profile header comment); a half-cut
 (vLLM advanced, b12x/LMCache left behind) silently skips loader/perf fixes.
 
 ```toml
-build_profile = "glm53-r28"        # full r28 lock: vLLM + b12x + LMCache
+build_profile = "r28"             # full r28 lock: vLLM + b12x + LMCache
 # or, for a one-off experiment on top of a profile:
 [build.versions]
 TORCH_VERSION = "2.11.0"

+ 1 - 1
docker-images/glm53-jovian-r27/Dockerfile → docker-images/jovian-judgement/Dockerfile

@@ -19,7 +19,7 @@
 # in-container (engine-driven cache transfers sidecar for vram/native/lmcache
 # cache modes).
 #
-# Build: cd docker-images/glm53-jovian-r27 && TAG=... bash build.sh
+# Build: cd docker-images/jovian-judgement && TAG=... bash build.sh
 
 ARG CUDA_BASE_IMAGE
 ARG CUDA_BASE_DIGEST

+ 0 - 0
docker-images/glm53-jovian-r27/apt-sources.list → docker-images/jovian-judgement/apt-sources.list


+ 0 - 0
docker-images/glm53-jovian-r27/build.sh → docker-images/jovian-judgement/build.sh


+ 0 - 0
docker-images/glm53-jovian-r27/checksums/tiktoken.sha256 → docker-images/jovian-judgement/checksums/tiktoken.sha256


+ 0 - 0
docker-images/glm53-jovian-r27/fetch-deps.sh → docker-images/jovian-judgement/fetch-deps.sh


+ 0 - 0
docker-images/glm53-jovian-r27/lmcache-runtime-requirements.txt → docker-images/jovian-judgement/lmcache-runtime-requirements.txt


+ 0 - 0
docker-images/glm53-jovian-r27/locks/apt-packages.txt → docker-images/jovian-judgement/locks/apt-packages.txt


+ 0 - 0
docker-images/glm53-jovian-r27/locks/apt-sources.list → docker-images/jovian-judgement/locks/apt-sources.list


+ 0 - 0
docker-images/glm53-jovian-r27/locks/deps.lock → docker-images/jovian-judgement/locks/deps.lock


+ 0 - 0
docker-images/glm53-jovian-r27/locks/python-bootstrap.txt → docker-images/jovian-judgement/locks/python-bootstrap.txt


+ 0 - 0
docker-images/glm53-jovian-r27/locks/python-build.txt → docker-images/jovian-judgement/locks/python-build.txt


+ 0 - 0
docker-images/glm53-jovian-r27/locks/python-runtime.txt → docker-images/jovian-judgement/locks/python-runtime.txt


+ 0 - 0
docker-images/glm53-jovian-r27/patch_cuda_sm12x.py → docker-images/jovian-judgement/patch_cuda_sm12x.py


+ 0 - 0
docker-images/glm53-jovian-r27/patches-eugr/patch_vllm_autogptq_symmetric_moe_qzeros.py → docker-images/jovian-judgement/patches-eugr/patch_vllm_autogptq_symmetric_moe_qzeros.py


+ 0 - 0
docker-images/glm53-jovian-r27/patches-eugr/patch_vllm_b12x_c128a_topk_alignment.py → docker-images/jovian-judgement/patches-eugr/patch_vllm_b12x_c128a_topk_alignment.py


+ 0 - 0
docker-images/glm53-jovian-r27/patches-eugr/patch_vllm_diffusion_tensor_causal.py → docker-images/jovian-judgement/patches-eugr/patch_vllm_diffusion_tensor_causal.py


+ 0 - 0
docker-images/glm53-jovian-r27/patches-eugr/patch_vllm_disable_minimax_qk_rmsnorm_ipc.py → docker-images/jovian-judgement/patches-eugr/patch_vllm_disable_minimax_qk_rmsnorm_ipc.py


+ 0 - 0
docker-images/glm53-jovian-r27/patches-eugr/patch_vllm_flashinfer_b12x_swigluoai.py → docker-images/jovian-judgement/patches-eugr/patch_vllm_flashinfer_b12x_swigluoai.py


+ 0 - 0
docker-images/glm53-jovian-r27/patches-eugr/patch_vllm_gemma4_mtp_embedding_share.py → docker-images/jovian-judgement/patches-eugr/patch_vllm_gemma4_mtp_embedding_share.py


+ 0 - 0
docker-images/glm53-jovian-r27/patches-eugr/patch_vllm_mrv2_speculator_cudagraph_pool.py → docker-images/jovian-judgement/patches-eugr/patch_vllm_mrv2_speculator_cudagraph_pool.py


+ 0 - 0
docker-images/glm53-jovian-r27/patches-eugr/patch_vllm_preserve_sm12x_target.py → docker-images/jovian-judgement/patches-eugr/patch_vllm_preserve_sm12x_target.py


+ 0 - 0
docker-images/glm53-jovian-r27/patches-eugr/patch_vllm_routed_experts_weight_shape.py → docker-images/jovian-judgement/patches-eugr/patch_vllm_routed_experts_weight_shape.py


+ 0 - 0
docker-images/glm53-jovian-r27/patches-eugr/patch_vllm_sm120_cooperative_topk.py → docker-images/jovian-judgement/patches-eugr/patch_vllm_sm120_cooperative_topk.py


+ 0 - 0
docker-images/glm53-jovian-r27/patches-eugr/patch_vllm_spark_kv_cache_cleanup.py → docker-images/jovian-judgement/patches-eugr/patch_vllm_spark_kv_cache_cleanup.py


+ 0 - 0
docker-images/glm53-jovian-r27/patches-eugr/patch_vllm_topk_softplus_sqrt_control_flow.py → docker-images/jovian-judgement/patches-eugr/patch_vllm_topk_softplus_sqrt_control_flow.py


+ 1 - 1
docker-images/glm53-jovian-r27/profiles/glm53-r28.env → docker-images/jovian-judgement/profiles/r28.env

@@ -1,6 +1,6 @@
 # Version profile: GLM-5.3-Flash r28 source lock (2026-09-06 cut, all forks).
 #
-# Referenced from recipes via `build_profile = "glm53-r28"`; merged over this
+# Referenced from recipes via `build_profile = "r28"`; merged over this
 # image dir's versions.env (profile wins, then recipe [build.versions] wins
 # last). Only the keys that differ from versions.env are listed — the rest
 # (CUDA base, torch/flashinfer, apt) stay at the image dir's pins.

+ 1 - 1
docker-images/glm53-jovian-r27/profiles/glm53-r31.env → docker-images/jovian-judgement/profiles/r31.env

@@ -1,6 +1,6 @@
 # Version profile: GLM-5.3-Flash r31 source lock (2026-09-09 cut, all forks).
 #
-# Referenced from recipes via `build_profile = "glm53-r31"`; merged over this
+# Referenced from recipes via `build_profile = "r31"`; merged over this
 # image dir's versions.env (profile wins, then recipe [build.versions] wins
 # last). Only the keys that differ from versions.env are listed — the rest
 # (CUDA base, torch/flashinfer, apt) stay at the image dir's pins.

+ 1 - 1
docker-images/glm53-jovian-r27/profiles/glm53-r35.env → docker-images/jovian-judgement/profiles/r35.env

@@ -1,6 +1,6 @@
 # Version profile: GLM-5.3-Flash r35 source lock (2026-09-11 cut, all forks).
 #
-# Referenced from recipes via `build_profile = "glm53-r35"`; merged over this
+# Referenced from recipes via `build_profile = "r35"`; merged over this
 # image dir's versions.env (profile wins, then recipe [build.versions] wins
 # last). Only the keys that differ from versions.env are listed — the rest
 # (CUDA base, torch/flashinfer, apt) stay at the image dir's pins.

+ 1 - 1
docker-images/glm53-jovian-r27/profiles/jovian-r36-ds41.env → docker-images/jovian-judgement/profiles/r36-ds41.env

@@ -14,7 +14,7 @@
 # image's native extension is compiled for sm_120 / CUDA 13.3 x86).
 #
 # Pinned by commit + tree hash (gated per repo in the Dockerfile). What moved
-# over the r35 profile (glm53-r35.env):
+# over the r35 profile (r35.env):
 #   vLLM  de982a50 -> 202a11a98eb (JJ b40673cd + #740 startup correction;
 #         0.26.1rc0+glm53.r36.vllm202a11a9; adds the DS4.1 DSpark/Engram
 #         serving path, greedy-Markov sampler fusion #738)

+ 1 - 1
docker-images/glm53-jovian-r27/profiles/jovian-r37-ds41.env → docker-images/jovian-judgement/profiles/r37-ds41.env

@@ -24,7 +24,7 @@
 # (TP3 not serving-qualified).
 #
 # Pinned by commit + tree hash (gated per repo in the Dockerfile). Delta vs
-# the r36 profile (jovian-r36-ds41.env):
+# the r36 profile (r36-ds41.env):
 #   vLLM  202a11a98eb -> c687594b8a8 (composed "release/ds41-optimized-r37":
 #         JJ b40673cd + #740/#743/#742/#744)
 #   B12X  323107ff    -> f1c4e9dd5b1 (clean master 05d2c43b + #364/#367/#366/#365)

+ 2 - 2
docker-images/glm53-jovian-r27/profiles/jovian-r38-glm53.env → docker-images/jovian-judgement/profiles/r38.env

@@ -19,7 +19,7 @@
 #         carry — the fused in_proj_qkvbfg naming is the Aiden fork only.
 #   B12X  0f3a8cbfd1c = local-inference-lab/b12x `master` tip.
 #
-# Delta vs the r37 profile (jovian-r37-ds41.env):
+# Delta vs the r37 profile (r37-ds41.env):
 #   vLLM  c687594b8a8 (release/ds41-optimized-r37) -> 8e1f1e587f8 (JJ tip)
 #   B12X  f1c4e9dd5b1 -> 0f3a8cbfd1c
 #   LMCache 29bc5a2e — UNCHANGED
@@ -32,7 +32,7 @@
 #     deepgemm 8b1392b9) verified identical to the r37 tree's — fetch-deps.sh
 #     needs no resync.
 #
-# Build: clone-at-pin (docker-images/glm53-jovian-r27 Dockerfile), in-build
+# Build: clone-at-pin (docker-images/jovian-judgement Dockerfile), in-build
 # git only (no pre-staged tarballs — operator direction 2026-09-19).
 VLLM_PIN=8e1f1e587f8d24faf606f334a1c4bdaaa6bd4368
 VLLM_TREE=d9f35de1ed5e47dd006f6d420dd25707fb284eae

+ 0 - 0
docker-images/glm53-jovian-r27/versions.env → docker-images/jovian-judgement/versions.env


+ 4 - 4
recipes/dsv41-flash-jovian-r36-4x/recipe.toml

@@ -4,7 +4,7 @@
 # localinferencelab/vllm:jovian-judgement-community-20260912-r36 serves GLM
 # (r35 lane) + DS4.1 (this recipe) in one two-layer image. We build the same
 # source composition for GB10 sm_121a from our own build dir
-# (docker-images/glm53-jovian-r27, profile jovian-r36-ds41 — the r36 delta
+# (docker-images/jovian-judgement, profile r36-ds41 — the r36 delta
 # over our r35 pins is only vLLM 202a11a98eb + b12x 323107ff + liburing 2.5;
 # LMCache/FlashKDA/DeepGEMM/FI/torch are the SAME pins as the r35 build).
 #
@@ -53,9 +53,9 @@
 
 engine = "vllm"
 name = "DeepSeek-V4.1-Flash (jovian r36 img, 4x DCP1, DSpark K7 greedy + Engram disk)"
-docker_image = "jovian-r36-ds41:local"
-docker_image_dir = "glm53-jovian-r27"
-build_profile = "jovian-r36-ds41"
+docker_image = "jovian-judgement:r36-ds41"
+docker_image_dir = "jovian-judgement"
+build_profile = "r36-ds41"
 model = "deepseek-ai/DeepSeek-V4.1-Flash"
 parent_model = "deepseek-ai/DeepSeek-V4.1-Flash"
 required_nodes = 4

+ 5 - 5
recipes/dsv41-flash-jovian-r37-4x/recipe.toml

@@ -15,8 +15,8 @@
 # reasoning_effort explicitly). Carries the B12X small-tile barrier fix (#363)
 # and TP3 prefill-head support (TP3 is not serving-qualified here).
 #
-# Image: our own build for GB10 sm_121a from docker-images/glm53-jovian-r27
-# with profile jovian-r37-ds41 (vLLM c687594b8a8 + b12x f1c4e9dd5b1; LMCache
+# Image: our own build for GB10 sm_121a from docker-images/jovian-judgement
+# with profile r37-ds41 (vLLM c687594b8a8 + b12x f1c4e9dd5b1; LMCache
 # 29bc5a2e / FlashKDA 3b225bf2 / DeepGEMM 8b1392b9 unchanged; torch 2.13.0 +
 # flashinfer 0.6.17 = the same GB10 pins as r35/r36, dep gates re-checked
 # against the r37 tree; liburing 2.5 + dev headers already in the apt lock).
@@ -45,9 +45,9 @@
 # sparse copies under /var/tmp/engram-local/DeepSeek-V4.1-Flash.
 engine = "vllm"
 name = "DeepSeek-V4.1-Flash (jovian r37 img, 4x DCP1, DSpark K7 greedy + Engram disk)"
-docker_image = "jovian-r37-ds41:local"
-docker_image_dir = "glm53-jovian-r27"
-build_profile = "jovian-r37-ds41"
+docker_image = "jovian-judgement:r37-ds41"
+docker_image_dir = "jovian-judgement"
+build_profile = "r37-ds41"
 model = "deepseek-ai/DeepSeek-V4.1-Flash"
 parent_model = "deepseek-ai/DeepSeek-V4.1-Flash"
 required_nodes = 4

+ 4 - 4
recipes/glm53-flash-nvfp4-lab-4x/recipe.toml

@@ -12,7 +12,7 @@
 # tower (skipped via --language-model-only), and the MTP head embedded at
 # layer 45 (eh_proj/enorm/hnorm) — no separate drafter download.
 #
-# Image: glm53-jovian-r35:local + VLLM_DISABLED_KERNELS (the small GDN
+# Image: jovian-judgement:r35-glm53 + VLLM_DISABLED_KERNELS (the small GDN
 # mxfp8 GEMMs reject flashinfer cutlass' min n/k=128 — routed to the b12x
 # Mxfp8 backend; proven on the Spark 4x lane, 161/176).
 #
@@ -22,9 +22,9 @@
 
 engine = "vllm"
 name = "GLM-5.3-Flash NVFP4-lab re-cut (vLLM, 4x Spark, MTP-3, r35)"
-docker_image = "glm53-jovian-r35:local"  # r35 loads the lab quants (r38 pool-deadlock on 2x, see bug report)
-docker_image_dir = "glm53-jovian-r27"
-build_profile = "glm53-r35"
+docker_image = "jovian-judgement:r35-glm53"  # r35 loads the lab quants (r38 pool-deadlock on 2x, see bug report)
+docker_image_dir = "jovian-judgement"
+build_profile = "r35"
 entrypoint = ["vllm", "serve"]
 model = "local-inference-lab/GLM-5.3-Flash-NVFP4"
 parent_model = "zai-org/GLM-5.3-Flash"

+ 4 - 4
recipes/glm53-flash-nvfp4-lab/recipe.toml

@@ -15,7 +15,7 @@
 # loader path as the Spark lane: the JJ fork lineage (r35) maps it natively
 # (no KeyError); r38 is out — b12x preparation-pool deadlock on 2x GB10.
 #
-# Image: glm53-jovian-r35:local + VLLM_DISABLED_KERNELS (the small GDN
+# Image: jovian-judgement:r35-glm53 + VLLM_DISABLED_KERNELS (the small GDN
 # mxfp8 GEMMs reject flashinfer cutlass' min n/k=128 — routed to the b12x
 # Mxfp8 backend; proven on the Spark lanes 162/176 + 161/176).
 #
@@ -30,9 +30,9 @@
 
 engine = "vllm"
 name = "GLM-5.3-Flash NVFP4-lab re-cut (vLLM, 2x Spark, MTP-3, r35)"
-docker_image = "glm53-jovian-r35:local"  # r35 loads the lab quants (r38 pool-deadlock on 2x, see bug report)
-docker_image_dir = "glm53-jovian-r27"
-build_profile = "glm53-r35"
+docker_image = "jovian-judgement:r35-glm53"  # r35 loads the lab quants (r38 pool-deadlock on 2x, see bug report)
+docker_image_dir = "jovian-judgement"
+build_profile = "r35"
 entrypoint = ["vllm", "serve"]
 model = "local-inference-lab/GLM-5.3-Flash-NVFP4"
 parent_model = "zai-org/GLM-5.3-Flash"

+ 4 - 4
recipes/glm53-flash-nvfp4-spark/recipe.toml

@@ -4,7 +4,7 @@
 # Operator direction (2026-09-19): after the NAS disk death the interim
 # serving mode is 2x + 4x on local NVMe with the current lab quants. This
 # lane uses the latest lab engine (r38 = dev/jovian-judgement tip 8e1f1e5,
-# see profiles/jovian-r38-glm53.env) instead of the legacy r12 rebuild
+# see profiles/r38.env) instead of the legacy r12 rebuild
 # (the r12 image is gone from the nodes; the r12 composition is a "phantom"
 # — the lab mainline keeps the split GDN naming the current quants carry,
 # and the r38 tip adds the B12X MXFP8 linear kernel that the r35-era
@@ -39,9 +39,9 @@
 
 engine = "vllm"
 name = "GLM-5.3-Flash NVFP4-Spark (vLLM, 2x Spark, MTP-3, r38 tip)"
-docker_image = "glm53-jovian-r35:local"  # r35 loads the Spark checkpoint; r38 (JJ tip + b12x master) deadlocks in the b12x preparation pool on 2x GB10
-docker_image_dir = "glm53-jovian-r27"
-build_profile = "glm53-r35"
+docker_image = "jovian-judgement:r35-glm53"  # r35 loads the Spark checkpoint; r38 (JJ tip + b12x master) deadlocks in the b12x preparation pool on 2x GB10
+docker_image_dir = "jovian-judgement"
+build_profile = "r35"
 entrypoint = ["vllm", "serve"]
 model = "local-inference-lab/GLM-5.3-Flash-NVFP4-Spark"
 parent_model = "zai-org/GLM-5.3-Flash"

+ 2 - 2
recipes/glm53-flash-r27-4x-dcp4/recipe.toml

@@ -77,8 +77,8 @@
 
 engine = "vllm"
 name = "GLM-5.3-Flash NVFP4 (r27 img, lab ckpt, 4x DCP4)"
-docker_image = "glm53-jovian-r27:local"  # r27 clone-at-pin build (docker-images/glm53-jovian-r27)
-docker_image_dir = "glm53-jovian-r27"
+docker_image = "jovian-judgement:r27-glm53"  # r27 clone-at-pin build (docker-images/jovian-judgement)
+docker_image_dir = "jovian-judgement"
 # Required: the clean r12 image follows the solar contract (ENTRYPOINT []
 # + CMD bash), so the recipe carries the entrypoint (the old day-0-based
 # r12 image had ["vllm","serve"] baked in, which is why this was absent

+ 2 - 2
recipes/glm53-flash-r27-spark/recipe.toml

@@ -73,8 +73,8 @@
 
 engine = "vllm"
 name = "GLM-5.3-Flash NVFP4-Spark (r27 img, nvfp4 KV, 2x)"
-docker_image = "glm53-jovian-r27:local"  # r27 clone-at-pin build (docker-images/glm53-jovian-r27)
-docker_image_dir = "glm53-jovian-r27"
+docker_image = "jovian-judgement:r27-glm53"  # r27 clone-at-pin build (docker-images/jovian-judgement)
+docker_image_dir = "jovian-judgement"
 # Required: the clean r12 image follows the solar contract (ENTRYPOINT []
 # + CMD bash), so the recipe carries the entrypoint (the old day-0-based
 # r12 image had ["vllm","serve"] baked in, which is why this was absent

+ 6 - 6
recipes/glm53-flash-r28-4x-dcp4-b12xload/recipe.toml

@@ -6,7 +6,7 @@
 # b12x 7216f6b9 (21 commits over r27: GLM/DeepSeek loader fixes, W4A4 FC1
 # fusion, M8 route prep, M1 FC2 overlap, GDN/MHC perf), LMCache 934c287a
 # (3 MP-transfer robustness fixes). Same model/flags/KV pin; the image is
-# the r27 build dir with the named version profile profiles/glm53-r28.env
+# the r27 build dir with the named version profile profiles/r28.env
 # (clone-at-pin fetches each commit directly, the tree gates verify them).
 
 # GLM-5.3-Flash NVFP4 — local-inference-lab quant (vLLM) — 2× DGX Spark, TP=2.
@@ -84,23 +84,23 @@
 
 engine = "vllm"
 name = "GLM-5.3-Flash NVFP4 (r28, b12x O_DIRECT loader test)"
-docker_image = "glm53-jovian-r28:local"  # full r28 lock (build_profile) over the r27 image tree
-docker_image_dir = "glm53-jovian-r27"
+docker_image = "jovian-judgement:r28-glm53"  # full r28 lock (build_profile) over the jovian-judgement image tree
+docker_image_dir = "jovian-judgement"
 # NOTE: build_profile must stay a TOP-LEVEL key — a bare key after
 # [[extra_mounts]] would parse into the last mount table and be silently
 # ignored (2026-09-08).
 # FULL r28 source lock (2026-09-06 cut, all three forks): the named version
-# profile docker-images/glm53-jovian-r27/profiles/glm53-r28.env — vLLM
+# profile docker-images/jovian-judgement/profiles/r28.env — vLLM
 # 62f6385c + b12x 7216f6b9 (21 commits over r27: GLM/DeepSeek loader fixes,
 # MoE perf) + LMCache 934c287a (3 MP-transfer fixes). Merged over the image
 # dir's versions.env and folded into the build checksum, so this is a
-# distinct image (tag glm53-jovian-r28:local) sharing the r27 build tree.
+# distinct image (tag jovian-judgement:r28-glm53) sharing the r27 build tree.
 # Clone-at-pin fetches each commit directly; the Dockerfile gates HEAD + tree
 # hash per repo. Both r28 branches are strictly ahead of their r27/r26 pins
 # (0 behind) — a clean superset. The r28 vLLM tree has NO requirements/cmake
 # changes vs r27 (verified via the GitHub compare API, 13 commits / 29 files),
 # so the fetch-deps.sh dep gates still hold.
-build_profile = "glm53-r28"
+build_profile = "r28"
 # Required: the clean r12 image follows the solar contract (ENTRYPOINT []
 # + CMD bash), so the recipe carries the entrypoint (the old day-0-based
 # r12 image had ["vllm","serve"] baked in, which is why this was absent

+ 6 - 6
recipes/glm53-flash-r28-4x-dcp4-split2048/recipe.toml

@@ -6,7 +6,7 @@
 # b12x 7216f6b9 (21 commits over r27: GLM/DeepSeek loader fixes, W4A4 FC1
 # fusion, M8 route prep, M1 FC2 overlap, GDN/MHC perf), LMCache 934c287a
 # (3 MP-transfer robustness fixes). Same model/flags/KV pin; the image is
-# the r27 build dir with the named version profile profiles/glm53-r28.env
+# the r27 build dir with the named version profile profiles/r28.env
 # (clone-at-pin fetches each commit directly, the tree gates verify them).
 
 # GLM-5.3-Flash NVFP4 — local-inference-lab quant (vLLM) — 2× DGX Spark, TP=2.
@@ -84,23 +84,23 @@
 
 engine = "vllm"
 name = "GLM-5.3-Flash NVFP4 (r28, split-KV 2048/256 test)"
-docker_image = "glm53-jovian-r28:local"  # full r28 lock (build_profile) over the r27 image tree
-docker_image_dir = "glm53-jovian-r27"
+docker_image = "jovian-judgement:r28-glm53"  # full r28 lock (build_profile) over the jovian-judgement image tree
+docker_image_dir = "jovian-judgement"
 # NOTE: build_profile must stay a TOP-LEVEL key — a bare key after
 # [[extra_mounts]] would parse into the last mount table and be silently
 # ignored (2026-09-08).
 # FULL r28 source lock (2026-09-06 cut, all three forks): the named version
-# profile docker-images/glm53-jovian-r27/profiles/glm53-r28.env — vLLM
+# profile docker-images/jovian-judgement/profiles/r28.env — vLLM
 # 62f6385c + b12x 7216f6b9 (21 commits over r27: GLM/DeepSeek loader fixes,
 # MoE perf) + LMCache 934c287a (3 MP-transfer fixes). Merged over the image
 # dir's versions.env and folded into the build checksum, so this is a
-# distinct image (tag glm53-jovian-r28:local) sharing the r27 build tree.
+# distinct image (tag jovian-judgement:r28-glm53) sharing the r27 build tree.
 # Clone-at-pin fetches each commit directly; the Dockerfile gates HEAD + tree
 # hash per repo. Both r28 branches are strictly ahead of their r27/r26 pins
 # (0 behind) — a clean superset. The r28 vLLM tree has NO requirements/cmake
 # changes vs r27 (verified via the GitHub compare API, 13 commits / 29 files),
 # so the fetch-deps.sh dep gates still hold.
-build_profile = "glm53-r28"
+build_profile = "r28"
 # Required: the clean r12 image follows the solar contract (ENTRYPOINT []
 # + CMD bash), so the recipe carries the entrypoint (the old day-0-based
 # r12 image had ["vllm","serve"] baked in, which is why this was absent

+ 6 - 6
recipes/glm53-flash-r28-4x-dcp4/recipe.toml

@@ -6,7 +6,7 @@
 # b12x 7216f6b9 (21 commits over r27: GLM/DeepSeek loader fixes, W4A4 FC1
 # fusion, M8 route prep, M1 FC2 overlap, GDN/MHC perf), LMCache 934c287a
 # (3 MP-transfer robustness fixes). Same model/flags/KV pin; the image is
-# the r27 build dir with the named version profile profiles/glm53-r28.env
+# the r27 build dir with the named version profile profiles/r28.env
 # (clone-at-pin fetches each commit directly, the tree gates verify them).
 
 # GLM-5.3-Flash NVFP4 — local-inference-lab quant (vLLM) — 2× DGX Spark, TP=2.
@@ -84,23 +84,23 @@
 
 engine = "vllm"
 name = "GLM-5.3-Flash NVFP4 (r28 img, lab ckpt, 4x DCP4)"
-docker_image = "glm53-jovian-r28:local"  # full r28 lock (build_profile) over the r27 image tree
-docker_image_dir = "glm53-jovian-r27"
+docker_image = "jovian-judgement:r28-glm53"  # full r28 lock (build_profile) over the jovian-judgement image tree
+docker_image_dir = "jovian-judgement"
 # NOTE: build_profile must stay a TOP-LEVEL key — a bare key after
 # [[extra_mounts]] would parse into the last mount table and be silently
 # ignored (2026-09-08).
 # FULL r28 source lock (2026-09-06 cut, all three forks): the named version
-# profile docker-images/glm53-jovian-r27/profiles/glm53-r28.env — vLLM
+# profile docker-images/jovian-judgement/profiles/r28.env — vLLM
 # 62f6385c + b12x 7216f6b9 (21 commits over r27: GLM/DeepSeek loader fixes,
 # MoE perf) + LMCache 934c287a (3 MP-transfer fixes). Merged over the image
 # dir's versions.env and folded into the build checksum, so this is a
-# distinct image (tag glm53-jovian-r28:local) sharing the r27 build tree.
+# distinct image (tag jovian-judgement:r28-glm53) sharing the r27 build tree.
 # Clone-at-pin fetches each commit directly; the Dockerfile gates HEAD + tree
 # hash per repo. Both r28 branches are strictly ahead of their r27/r26 pins
 # (0 behind) — a clean superset. The r28 vLLM tree has NO requirements/cmake
 # changes vs r27 (verified via the GitHub compare API, 13 commits / 29 files),
 # so the fetch-deps.sh dep gates still hold.
-build_profile = "glm53-r28"
+build_profile = "r28"
 # Required: the clean r12 image follows the solar contract (ENTRYPOINT []
 # + CMD bash), so the recipe carries the entrypoint (the old day-0-based
 # r12 image had ["vllm","serve"] baked in, which is why this was absent

+ 3 - 3
recipes/glm53-flash-r28-dflash2-2x/recipe.toml

@@ -18,9 +18,9 @@
 #
 engine = "vllm"
 name = "GLM-5.3-Flash NVFP4 (r28 img, DFlash2 k=7, 2x re-test)"
-docker_image = "glm53-jovian-r28:local"  # full r28 lock via build_profile
-build_profile = "glm53-r28"
-docker_image_dir = "glm53-jovian-r27"
+docker_image = "jovian-judgement:r28-glm53"  # full r28 lock via build_profile
+build_profile = "r28"
+docker_image_dir = "jovian-judgement"
 # Required: the clean r12 image follows the solar contract (ENTRYPOINT []
 # + CMD bash), so the recipe carries the entrypoint (the old day-0-based
 # r12 image had ["vllm","serve"] baked in, which is why this was absent

+ 3 - 3
recipes/glm53-flash-r28-spark/recipe.toml

@@ -73,9 +73,9 @@
 
 engine = "vllm"
 name = "GLM-5.3-Flash NVFP4-Spark (r27 img, nvfp4 KV, 2x)"
-docker_image = "glm53-jovian-r28:local"  # r27 clone-at-pin build (docker-images/glm53-jovian-r27)
-docker_image_dir = "glm53-jovian-r27"
-build_profile = "glm53-r28"
+docker_image = "jovian-judgement:r28-glm53"  # r27 clone-at-pin build (docker-images/jovian-judgement)
+docker_image_dir = "jovian-judgement"
+build_profile = "r28"
 # Required: the clean r12 image follows the solar contract (ENTRYPOINT []
 # + CMD bash), so the recipe carries the entrypoint (the old day-0-based
 # r12 image had ["vllm","serve"] baked in, which is why this was absent

+ 3 - 3
recipes/glm53-flash-r31-2x/recipe.toml

@@ -73,9 +73,9 @@
 
 engine = "vllm"
 name = "GLM-5.3-Flash NVFP4-Spark (r31 img, 2x DAC)"
-docker_image = "glm53-jovian-r31:local"  # r27 clone-at-pin build (docker-images/glm53-jovian-r27)
-docker_image_dir = "glm53-jovian-r27"
-build_profile = "glm53-r31"
+docker_image = "jovian-judgement:r31-glm53"  # r27 clone-at-pin build (docker-images/jovian-judgement)
+docker_image_dir = "jovian-judgement"
+build_profile = "r31"
 # Required: the clean r12 image follows the solar contract (ENTRYPOINT []
 # + CMD bash), so the recipe carries the entrypoint (the old day-0-based
 # r12 image had ["vllm","serve"] baked in, which is why this was absent

+ 6 - 6
recipes/glm53-flash-r31-4x-dcp4/recipe.toml

@@ -6,7 +6,7 @@
 # b12x 7216f6b9 (21 commits over r27: GLM/DeepSeek loader fixes, W4A4 FC1
 # fusion, M8 route prep, M1 FC2 overlap, GDN/MHC perf), LMCache 934c287a
 # (3 MP-transfer robustness fixes). Same model/flags/KV pin; the image is
-# the r27 build dir with the named version profile profiles/glm53-r28.env
+# the r27 build dir with the named version profile profiles/r28.env
 # (clone-at-pin fetches each commit directly, the tree gates verify them).
 
 # GLM-5.3-Flash NVFP4 — local-inference-lab quant (vLLM) — 2× DGX Spark, TP=2.
@@ -84,23 +84,23 @@
 
 engine = "vllm"
 name = "GLM-5.3-Flash NVFP4 (r31 img, lab ckpt, 4x DCP4)"
-docker_image = "glm53-jovian-r31:local"  # full r28 lock (build_profile) over the r27 image tree
-docker_image_dir = "glm53-jovian-r27"
+docker_image = "jovian-judgement:r31-glm53"  # full r28 lock (build_profile) over the jovian-judgement image tree
+docker_image_dir = "jovian-judgement"
 # NOTE: build_profile must stay a TOP-LEVEL key — a bare key after
 # [[extra_mounts]] would parse into the last mount table and be silently
 # ignored (2026-09-08).
 # FULL r28 source lock (2026-09-06 cut, all three forks): the named version
-# profile docker-images/glm53-jovian-r27/profiles/glm53-r28.env — vLLM
+# profile docker-images/jovian-judgement/profiles/r28.env — vLLM
 # 62f6385c + b12x 7216f6b9 (21 commits over r27: GLM/DeepSeek loader fixes,
 # MoE perf) + LMCache 934c287a (3 MP-transfer fixes). Merged over the image
 # dir's versions.env and folded into the build checksum, so this is a
-# distinct image (tag glm53-jovian-r28:local) sharing the r27 build tree.
+# distinct image (tag jovian-judgement:r28-glm53) sharing the r27 build tree.
 # Clone-at-pin fetches each commit directly; the Dockerfile gates HEAD + tree
 # hash per repo. Both r28 branches are strictly ahead of their r27/r26 pins
 # (0 behind) — a clean superset. The r28 vLLM tree has NO requirements/cmake
 # changes vs r27 (verified via the GitHub compare API, 13 commits / 29 files),
 # so the fetch-deps.sh dep gates still hold.
-build_profile = "glm53-r31"
+build_profile = "r31"
 # Required: the clean r12 image follows the solar contract (ENTRYPOINT []
 # + CMD bash), so the recipe carries the entrypoint (the old day-0-based
 # r12 image had ["vllm","serve"] baked in, which is why this was absent

+ 4 - 4
recipes/glm53-flash-r35-2x-dflash2/recipe.toml

@@ -3,7 +3,7 @@
 # Kept as a regression canary: if a future lab build fixes 2x DFlash2 page
 # geometry, this recipe is the test. 2x prod stays MTP3 (r31-2x / r35 4x).
 #
-# Clone of recipes/glm53-flash-r31-2x with the r35 image (glm53-jovian-r35:local,
+# Clone of recipes/glm53-flash-r31-2x with the r35 image (jovian-judgement:r35-glm53,
 # checksum 8bb87348, DFlash2 machinery in-tree) and ONLY the speculative-config
 # swapped: MTP3 -> DFlash2 (lab's block-diffusion ~1B draft, offline MXFP8,
 # already on the shared NAS). Lab's own Spark 2x profile is MTP3-only (no DFlash
@@ -83,9 +83,9 @@
 
 engine = "vllm"
 name = "GLM-5.3-Flash NVFP4-Spark (r35 img, 2x DAC, DFlash2 K7)"
-docker_image = "glm53-jovian-r35:local"  # r27 clone-at-pin build (docker-images/glm53-jovian-r27, r35 profile)
-docker_image_dir = "glm53-jovian-r27"
-build_profile = "glm53-r35"
+docker_image = "jovian-judgement:r35-glm53"  # r27 clone-at-pin build (docker-images/jovian-judgement, r35 profile)
+docker_image_dir = "jovian-judgement"
+build_profile = "r35"
 # Required: the clean r12 image follows the solar contract (ENTRYPOINT []
 # + CMD bash), so the recipe carries the entrypoint (the old day-0-based
 # r12 image had ["vllm","serve"] baked in, which is why this was absent

+ 6 - 6
recipes/glm53-flash-r35-4x-dcp4/recipe.toml

@@ -6,7 +6,7 @@
 # b12x 7216f6b9 (21 commits over r27: GLM/DeepSeek loader fixes, W4A4 FC1
 # fusion, M8 route prep, M1 FC2 overlap, GDN/MHC perf), LMCache 934c287a
 # (3 MP-transfer robustness fixes). Same model/flags/KV pin; the image is
-# the r27 build dir with the named version profile profiles/glm53-r28.env
+# the r27 build dir with the named version profile profiles/r28.env
 # (clone-at-pin fetches each commit directly, the tree gates verify them).
 
 # GLM-5.3-Flash NVFP4 — local-inference-lab quant (vLLM) — 2× DGX Spark, TP=2.
@@ -84,23 +84,23 @@
 
 engine = "vllm"
 name = "GLM-5.3-Flash NVFP4 (r35 img, lab ckpt, 4x DCP4)"
-docker_image = "glm53-jovian-r35:local"  # full r35 lock (build_profile) over the r27 image tree
-docker_image_dir = "glm53-jovian-r27"
+docker_image = "jovian-judgement:r35-glm53"  # full r35 lock (build_profile) over the jovian-judgement image tree
+docker_image_dir = "jovian-judgement"
 # NOTE: build_profile must stay a TOP-LEVEL key — a bare key after
 # [[extra_mounts]] would parse into the last mount table and be silently
 # ignored (2026-09-08).
 # FULL r28 source lock (2026-09-06 cut, all three forks): the named version
-# profile docker-images/glm53-jovian-r27/profiles/glm53-r28.env — vLLM
+# profile docker-images/jovian-judgement/profiles/r28.env — vLLM
 # 62f6385c + b12x 7216f6b9 (21 commits over r27: GLM/DeepSeek loader fixes,
 # MoE perf) + LMCache 934c287a (3 MP-transfer fixes). Merged over the image
 # dir's versions.env and folded into the build checksum, so this is a
-# distinct image (tag glm53-jovian-r28:local) sharing the r27 build tree.
+# distinct image (tag jovian-judgement:r28-glm53) sharing the r27 build tree.
 # Clone-at-pin fetches each commit directly; the Dockerfile gates HEAD + tree
 # hash per repo. Both r28 branches are strictly ahead of their r27/r26 pins
 # (0 behind) — a clean superset. The r28 vLLM tree has NO requirements/cmake
 # changes vs r27 (verified via the GitHub compare API, 13 commits / 29 files),
 # so the fetch-deps.sh dep gates still hold.
-build_profile = "glm53-r35"
+build_profile = "r35"
 # Required: the clean r12 image follows the solar contract (ENTRYPOINT []
 # + CMD bash), so the recipe carries the entrypoint (the old day-0-based
 # r12 image had ["vllm","serve"] baked in, which is why this was absent

+ 6 - 6
recipes/glm53-flash-r35-4x-dflash2/recipe.toml

@@ -3,7 +3,7 @@
 # Clone of recipes/glm53-flash-r35-4x-dcp4 with ONLY the speculative-config
 # swapped: MTP3 -> DFlash2 (lab's block-diffusion ~1B draft, offline MXFP8,
 # on the shared NAS from the 2026-08-28 port work). Same image
-# (glm53-jovian-r35:local, checksum 8bb87348 — DFlash2 machinery is in-tree),
+# (jovian-judgement:r35-glm53, checksum 8bb87348 — DFlash2 machinery is in-tree),
 # same 4x DCP4 shape, same KV/scheduler pins. Night-shift A/B: stop the MTP3
 # prod, serve this, bench (dev65, seed 42, hardmode, c1/c2) vs the 163/176
 # r35 anchor, decide, restore.
@@ -15,23 +15,23 @@
 
 engine = "vllm"
 name = "GLM-5.3-Flash NVFP4 (r35 img, lab ckpt, 4x DCP4, DFlash2 K7)"
-docker_image = "glm53-jovian-r35:local"  # full r35 lock (build_profile) over the r27 image tree
-docker_image_dir = "glm53-jovian-r27"
+docker_image = "jovian-judgement:r35-glm53"  # full r35 lock (build_profile) over the jovian-judgement image tree
+docker_image_dir = "jovian-judgement"
 # NOTE: build_profile must stay a TOP-LEVEL key — a bare key after
 # [[extra_mounts]] would parse into the last mount table and be silently
 # ignored (2026-09-08).
 # FULL r28 source lock (2026-09-06 cut, all three forks): the named version
-# profile docker-images/glm53-jovian-r27/profiles/glm53-r28.env — vLLM
+# profile docker-images/jovian-judgement/profiles/r28.env — vLLM
 # 62f6385c + b12x 7216f6b9 (21 commits over r27: GLM/DeepSeek loader fixes,
 # MoE perf) + LMCache 934c287a (3 MP-transfer fixes). Merged over the image
 # dir's versions.env and folded into the build checksum, so this is a
-# distinct image (tag glm53-jovian-r28:local) sharing the r27 build tree.
+# distinct image (tag jovian-judgement:r28-glm53) sharing the r27 build tree.
 # Clone-at-pin fetches each commit directly; the Dockerfile gates HEAD + tree
 # hash per repo. Both r28 branches are strictly ahead of their r27/r26 pins
 # (0 behind) — a clean superset. The r28 vLLM tree has NO requirements/cmake
 # changes vs r27 (verified via the GitHub compare API, 13 commits / 29 files),
 # so the fetch-deps.sh dep gates still hold.
-build_profile = "glm53-r35"
+build_profile = "r35"
 # Required: the clean r12 image follows the solar contract (ENTRYPOINT []
 # + CMD bash), so the recipe carries the entrypoint (the old day-0-based
 # r12 image had ["vllm","serve"] baked in, which is why this was absent

+ 4 - 4
recipes/glm53-flash-spark-4x/recipe.toml

@@ -4,7 +4,7 @@
 # Operator direction (2026-09-19): after the NAS disk death the interim
 # serving mode is 2x + 4x on local NVMe with the current lab quants. This
 # lane uses the latest lab engine (r38 = dev/jovian-judgement tip 8e1f1e5,
-# see profiles/jovian-r38-glm53.env) instead of the legacy r12 rebuild
+# see profiles/r38.env) instead of the legacy r12 rebuild
 # (the r12 image is gone from the nodes; the r12 composition is a "phantom"
 # — the lab mainline keeps the split GDN naming the current quants carry,
 # and the r38 tip adds the B12X MXFP8 linear kernel that the r35-era
@@ -39,9 +39,9 @@
 
 engine = "vllm"
 name = "GLM-5.3-Flash NVFP4-Spark (vLLM, 4x Spark, MTP-3, r38 tip)"
-docker_image = "glm53-jovian-r35:local"  # r35 loads the Spark checkpoint (r38 pool-deadlock, see bug report)
-docker_image_dir = "glm53-jovian-r27"
-build_profile = "glm53-r35"
+docker_image = "jovian-judgement:r35-glm53"  # r35 loads the Spark checkpoint (r38 pool-deadlock, see bug report)
+docker_image_dir = "jovian-judgement"
+build_profile = "r35"
 entrypoint = ["vllm", "serve"]
 model = "local-inference-lab/GLM-5.3-Flash-NVFP4-Spark"
 parent_model = "zai-org/GLM-5.3-Flash"

+ 5 - 5
recipes/glm53-full-mxfp4-4x-dspark8/recipe.toml

@@ -28,8 +28,8 @@
 # ~740B total params / ~40B active. The Flash variant we serve in prod is
 # 320B/18B (45 layers, hidden 4096, 288 experts) — this is a different model.
 #
-# ── BASE STACK: our own jovian r35 build (docker-images/glm53-jovian-r27 +
-#    build_profile glm53-r35 → image glm53-jovian-r35:local) ────────────────
+# ── BASE STACK: our own jovian r35 build (docker-images/jovian-judgement +
+#    build_profile r35 → image jovian-judgement:r35-glm53) ────────────────
 # Selected 2026-09-13. Evidence (all verified by read-only inspection of the
 # images on dgx1):
 #   * registers the full-model arch: registry.py →
@@ -144,12 +144,12 @@ name = "GLM-5.3 (full) MXFP4 (r37 img, 4x, DSpark K8 @131K)"
 # decode). r37 is the newer DS4.1 lock whose DCP sparse-MLA path is the
 # qualified one (same tree family as our DCP2/DFlash2 work); the GlmMoeDsa
 # arch + MTP + b12x ship in the r37 image (verified 2026-09-13).
-docker_image = "jovian-r37-ds41:local"
-docker_image_dir = "glm53-jovian-r27"
+docker_image = "jovian-judgement:r37-ds41"
+docker_image_dir = "jovian-judgement"
 # NOTE: build_profile must stay a TOP-LEVEL key — a bare key after
 # [[extra_mounts]] would parse into the last mount table and be silently
 # ignored (2026-09-08).
-build_profile = "jovian-r37-ds41"
+build_profile = "r37-ds41"
 entrypoint = ["vllm", "serve"]
 model = "RedHatAI/GLM-5.3-MXFP4"
 parent_model = "zai-org/GLM-5.3"

+ 5 - 5
recipes/glm53-full-mxfp4-4x-probe/recipe.toml

@@ -35,8 +35,8 @@
 # ~740B total params / ~40B active. The Flash variant we serve in prod is
 # 320B/18B (45 layers, hidden 4096, 288 experts) — this is a different model.
 #
-# ── BASE STACK: our own jovian r35 build (docker-images/glm53-jovian-r27 +
-#    build_profile glm53-r35 → image glm53-jovian-r35:local) ────────────────
+# ── BASE STACK: our own jovian r35 build (docker-images/jovian-judgement +
+#    build_profile r35 → image jovian-judgement:r35-glm53) ────────────────
 # Selected 2026-09-13. Evidence (all verified by read-only inspection of the
 # images on dgx1):
 #   * registers the full-model arch: registry.py →
@@ -144,12 +144,12 @@
 
 engine = "vllm"
 name = "GLM-5.3 (full) MXFP4 — P0 PROBE: no DCP, 131K, 4 GiB KV (r35 img)"
-docker_image = "glm53-jovian-r35:local"
-docker_image_dir = "glm53-jovian-r27"
+docker_image = "jovian-judgement:r35-glm53"
+docker_image_dir = "jovian-judgement"
 # NOTE: build_profile must stay a TOP-LEVEL key — a bare key after
 # [[extra_mounts]] would parse into the last mount table and be silently
 # ignored (2026-09-08).
-build_profile = "glm53-r35"
+build_profile = "r35"
 entrypoint = ["vllm", "serve"]
 model = "RedHatAI/GLM-5.3-MXFP4"
 parent_model = "zai-org/GLM-5.3"

+ 5 - 5
recipes/glm53-full-mxfp4-4x/recipe.toml

@@ -28,8 +28,8 @@
 # ~740B total params / ~40B active. The Flash variant we serve in prod is
 # 320B/18B (45 layers, hidden 4096, 288 experts) — this is a different model.
 #
-# ── BASE STACK: our own jovian r35 build (docker-images/glm53-jovian-r27 +
-#    build_profile glm53-r35 → image glm53-jovian-r35:local) ────────────────
+# ── BASE STACK: our own jovian r35 build (docker-images/jovian-judgement +
+#    build_profile r35 → image jovian-judgement:r35-glm53) ────────────────
 # Selected 2026-09-13. Evidence (all verified by read-only inspection of the
 # images on dgx1):
 #   * registers the full-model arch: registry.py →
@@ -144,12 +144,12 @@ name = "GLM-5.3 (full) MXFP4 (r35 img, RedHatAI ckpt, 4x DCP4)"
 # decode). r37 is the newer DS4.1 lock whose DCP sparse-MLA path is the
 # qualified one (same tree family as our DCP2/DFlash2 work); the GlmMoeDsa
 # arch + MTP + b12x ship in the r37 image (verified 2026-09-13).
-docker_image = "jovian-r37-ds41:local"
-docker_image_dir = "glm53-jovian-r27"
+docker_image = "jovian-judgement:r37-ds41"
+docker_image_dir = "jovian-judgement"
 # NOTE: build_profile must stay a TOP-LEVEL key — a bare key after
 # [[extra_mounts]] would parse into the last mount table and be silently
 # ignored (2026-09-08).
-build_profile = "jovian-r37-ds41"
+build_profile = "r37-ds41"
 entrypoint = ["vllm", "serve"]
 model = "RedHatAI/GLM-5.3-MXFP4"
 parent_model = "zai-org/GLM-5.3"

+ 3 - 3
recipes/glm53-full-mxfp4-8x/recipe.toml

@@ -22,12 +22,12 @@ name = "GLM-5.3 (full) MXFP4 (r37 img, RedHatAI ckpt, 8x DCP1 @512K)"
 # decode). r37 is the newer DS4.1 lock whose DCP sparse-MLA path is the
 # qualified one (same tree family as our DCP2/DFlash2 work); the GlmMoeDsa
 # arch + MTP + b12x ship in the r37 image (verified 2026-09-13).
-docker_image = "jovian-r37-ds41:local"
-docker_image_dir = "glm53-jovian-r27"
+docker_image = "jovian-judgement:r37-ds41"
+docker_image_dir = "jovian-judgement"
 # NOTE: build_profile must stay a TOP-LEVEL key — a bare key after
 # [[extra_mounts]] would parse into the last mount table and be silently
 # ignored (2026-09-08).
-build_profile = "jovian-r37-ds41"
+build_profile = "r37-ds41"
 entrypoint = ["vllm", "serve"]
 model = "RedHatAI/GLM-5.3-MXFP4"
 parent_model = "zai-org/GLM-5.3"

+ 6 - 6
specs/tech-architecture/glm53-recipe-state.md

@@ -859,7 +859,7 @@ Operator verdict: regenerating tarballs on some machine is nonsense (the
 sources existed only on that machine — a fresh repo clone could not build).
 The r27 build has NO context tarballs:
 
-- `docker-images/glm53-jovian-r27/` — clone-at-pin build: the Dockerfile
+- `docker-images/jovian-judgement/` — clone-at-pin build: the Dockerfile
   clones vLLM/b12x/LMCache at pinned commits (versions.env `*_PIN` = SHA,
   `*_TREE` = git tree hash, gates assert BOTH), builds sub-deps from the
   pins the tree itself declares (fetch-deps.sh, grep-gated against the
@@ -1100,7 +1100,7 @@ prefix-cache hits. b12x unchanged (e8ad299b, RoCEnante already in).
 New recipe `glm53-flash-r28-4x-dcp4`: clone of the r27 4x-dcp4 recipe
 (160/176, 46.8/62.4 t/s) with `[build.versions]` overriding
 `VLLM_PIN`/`VLLM_TREE`/`VLLM_PRETEND_VERSION` — same build dir
-(`glm53-jovian-r27`), distinct image tag `glm53-jovian-r28:local`,
+(`jovian-judgement`), distinct image tag `jovian-judgement:r28-glm53`,
 override folds into the build checksum (separate image, no r27 rebuild).
 A/B target: r27 4x DCP4 160/176 + 46.8 t/s; 2x (162/176, 27.4 t/s) after
 the 4x verdict.
@@ -1155,7 +1155,7 @@ jovian-warmup-buffer-reuse-20260909 — carries the GLM Flash MTP projection
 loader fix for our upstream eh_proj issue, FlashInfer GDN prefill on SM12x,
 scheduler hardening) + b12x 3edbcbce (frozen since 09-08, incl. TP2 graph
 peer-push fix) + LMCache f868580a. Clone-at-pin build via the new version
-profile `docker-images/glm53-jovian-r27/profiles/glm53-r31.env` (empty
+profile `docker-images/jovian-judgement/profiles/r31.env` (empty
 `FLASH_KDA_SRC_DIR` — the r28.1+ tree gates FlashKDA on the packed
 checkpoint API and must use its own pinned 3b225bf2 + in-tree patch
 fallback; the Dockerfile now takes `FLASH_KDA_SRC_DIR` as an ARG).
@@ -1186,7 +1186,7 @@ Full shift log: `history/night-shifts/2026-09-10.md`.
 ### R35 adoption (2026-09-12, tool 2.6.1.dev65, 4nodes-switch 4x DCP4)
 
 Latest lab rev (qualified 2026-09-11): vLLM `de982a50` / b12x `98086604` /
-LMCache `29bc5a2e` (`profiles/glm53-r35.env`, recipe
+LMCache `29bc5a2e` (`profiles/r35.env`, recipe
 `glm53-flash-r35-4x-dcp4`). R33's shared-input split MoE prefill arrives with
 R35's merged B12X SwiGLU-clamp correction (R33/R34 shipped the split path
 without the model's clamp — the runaway-generation defect; we skipped
@@ -1274,8 +1274,8 @@ file size agree at MXFP4's 4.25 bits/param; note the 09-08 history entry's
 from the 320B/18B Flash variant we serve in prod: 45 layers, hidden 4096).
 
 **BASE STACK SELECTED: our own jovian r35 build** —
-`docker_image_dir = "glm53-jovian-r27"` + `build_profile = "glm53-r35"` →
-image `glm53-jovian-r35:local`, the same image as the Flash 4x prod. Evidence
+`docker_image_dir = "jovian-judgement"` + `build_profile = "r35"` →
+image `jovian-judgement:r35-glm53`, the same image as the Flash 4x prod. Evidence
 (read-only image inspection, 2026-09-13):
 - `registry.py` maps `"GlmMoeDsaForCausalLM" → vllm.models.deepseek_v32`, the
   NEW implementation ("MLA + a lightning indexer selecting top-k for sparse

+ 8 - 3
src/docker/build_tests.rs

@@ -8,9 +8,14 @@ use std::time::Duration;
 #[test]
 fn registry_refs_version_and_latest() {
     use crate::docker::push::registry_refs;
-    let (v, l) = registry_refs("ghcr.io/kilork", "glm53-jovian-r35:local", "ead6e95a333d").unwrap();
-    assert_eq!(v, "ghcr.io/kilork/glm53-jovian-r35:ead6e95a333d");
-    assert_eq!(l, "ghcr.io/kilork/glm53-jovian-r35:latest");
+    let (v, l) = registry_refs(
+        "ghcr.io/kilork",
+        "jovian-judgement:r35-glm53",
+        "ead6e95a333d",
+    )
+    .unwrap();
+    assert_eq!(v, "ghcr.io/kilork/jovian-judgement:ead6e95a333d");
+    assert_eq!(l, "ghcr.io/kilork/jovian-judgement:latest");
     // slashed image name → last segment; base slash-trimmed
     let (v, _) = registry_refs("ghcr.io/kilork/", "foo/bar:1.2", "abc123").unwrap();
     assert_eq!(v, "ghcr.io/kilork/bar:abc123");