Skip to content

k8s: NFD v0.20.1, agent-sandbox v1.0.8, EAS patch 0003 on nri-plugins v0.15.0, kubectl v1.37.2 for the wildct and cross-host rows - #239

Merged
88plug merged 5 commits into
mainfrom
claude/latest-k8s-1029
Oct 29, 2026
Merged

88plug merged 5 commits into
mainfrom
claude/latest-k8s-1029

Conversation

@88plug

@88plug 88plug commented Oct 29, 2026

Copy link
Copy Markdown
Owner

Moves the k8s-area pins of the 2026-10-29 audit to their newest releases, each checked that day with the use-latest-version registry check and the registry itself (gh api releases, dl.k8s.io/release/stable.txt and .sha256, the nri-plugins Helm index, and docker buildx imagetools inspect for every image digest).

Merge after H52b's hold. NFD is baked into the node image, so merging cuts a release, and H52b's plain up runs main's default node image (amendment D2). If this lands first, H52b runs NFD v0.20.1, and its node-image.txt should record that. Wildct's rows take W7's newest release at their first hold anyway.

Changes (class ours)

Pin From To
Node Feature Discovery (share/node-feature-discovery.yml, baked) v0.19.0 2fa1c99a... v0.20.1 6fc5c9af...8379
agent-sandbox controller (share/agent-sandbox.yml, sandbox up) v1.0.7 f254384c... v1.0.8 e1d96312...
agent-sandbox python runtime (share/agent-sandbox-k3d.yml) v1.0.7 fc92654c... v1.0.8 41da8480...
Draft EAS patch 0003, nri_cpu_balloons_chart_version v0.14.0 v0.15.0
Wildct rule W7 kubectl (bench/wildct/install.sh) v1.37.1 v1.37.2, amendment P1
Cross-host rule 5 kubectl (~/k3dgpu-xhost/bin) v1.35.2 v1.37.2, amendment K1, new bench/xhost/tools.sh
  • NFD v0.20.1. It carries the GO-2026-6809 x509 fix and is built against the Kubernetes 1.37 libraries. Its notes list no public API change.
    • Re-rendered with kubectl kustomize from v0.20.1's deployment/overlays/default plus Intel's NodeFeatureRules v0.37.1, using the same patches and worker config. Before the bump, the header's kustomization reproduced the committed v0.19.0 body byte for byte, with kubectl v1.35.2 and v1.37.2 alike.
    • The body changes only in CRD descriptions, one master config comment, the config map's hash suffix and the image.
    • NFD's default cpuid blacklist and its klauspost/cpuid version (v2.4.0) are unchanged, so the launcher's label list stands.
  • agent-sandbox v1.0.8. The release file (sha256 e68bfae0...) adds only the optional failedPodPolicy field (default Retain) and the new controller tag. Its action items, the MCP output cap and the router kustomization, do not apply: k3d-gpu installs neither. The runtime image keeps its user, command, port and workdir; it moves from Python 3.14.8 to 3.14.9. bench/eatflow/agent.lock and the coding constraints stay at 1.0.7 as H43's record.
  • EAS patch 0003. It was regenerated with git format-patch on EAS main 5767995, with the version and its message changed. The issue draft, the upstream README and docs/intel/upstream-eat.md's patch tree follow. The patch's own reason ("the newest release today") now holds again: v0.15.0, 2026-10-21, chart sha256 1c727a8d..., the same chart k3d-gpu's component pins.
  • Wildct amendment P1. No wildct hold has run, and install.sh runs again before the first one to install W7's newest k3d-gpu release, so every wildct row gets v1.37.2. If wildct amendment R1 (bench(wildct): resume pack, bounded host calls and a host health check (amendment R1) #226) merges, its sentence keeping v1.37.1 is superseded. P1 and R1 both follow the wildct pre-registration; keep-both resolves it.
  • Cross-host amendment K1. It covers H28x's run 2 and H7x, neither of which has run a measuring hold. The node image (0.1.61) serves Kubernetes v1.37.1, two minors past kubectl v1.35, outside the one-minor skew policy. Rule 5's tools had no script in the repo. bench/xhost/tools.sh installs exactly k3d v5.9.0 and kubectl v1.37.2, and checks both against their upstream checksum files before installing either. H25x, H27x and H34x keep what they ran.

Left to #238, to avoid duplicate edits

#238 already carries these, with the same versions and sha256:

  • kubectl v1.37.2 in packaging/install.sh.
  • cert-manager v1.21.3 in the KServe example, its test and the README.
  • Crescent amendment E4 (kubectl v1.37.2, helm v4.3.1 and uv 0.13.6 in ~/k3dgpu-bench/bin, for H53, H58 and later crescent rows).

E4 does not touch the cross-host workspace, which is why K1 exists. This branch merges cleanly with #238.

Kept

  • EAT-stock: the bastion's helm v3.14.0 (EAT release-1.1.0, still EAT's newest release) and draft patch 0005's rancher/k3s:v1.34.12-k3s1, which matches EAS main's kubectl v1.34.3. v1.34.12 is the newest 1.34 k3s.
  • Already newest: k3s v1.37.1+k3s1 and its 8 system images, k3d v5.9.0, the NVIDIA device plugin v0.20.1 and toolkit 1.20.1-1, intel-device-plugins v0.37.1, the GPU DRA driver v0.12.1, the Gaudi plugin 1.24.2-481, the nri-plugins chart v0.15.0, KServe v0.21.0, kubeconform v0.8.0, helm v4.3.1, and hack/tools.env helm v3.22.1 (deliberately v3).
  • Historical: every Reproduce header, the H50/H50o/H51/H52/H54a-c tool records, docs/security-audit.md's dated audit, and the fixture SOURCES that cite NFD v0.19.0.
  • Comment drift, not pins: "v0.14.0" still appears in hack/components/nri-balloons/header.txt (and so in share/nri-balloons.yml), tests/prefill_guard_test.sh and tests/detect_test.sh. agent: llama.cpp backend the fit picks, and busy Intel cards left out of the device plugin #182 and ci: hold.sh stops CMD's group with one TERM under GNU timeout; prefill guard test reads the pinned chart version #224 touch part of that. The statements describe v0.14.0's behaviour and would need checking against v0.15.0's source before being renamed.

Tests

  • Throwaway k3d clusters on this desktop: rancher/k3s:v1.37.1-k3s1 at the Dockerfile's digest, with the NFD manifest in the server's manifests directory as the image bakes it, and kubectl v1.37.2. Both clusters were deleted afterwards.
    • NFD v0.20.1: all three pods run digest 6fc5c9af..., Ready, with no restarts.
    • They publish the same 70 feature labels, keys and values, as v0.19.0 on the same node, both on a fresh cluster and after an in-place upgrade from v0.19.0.
  • k3d-gpu sandbox up from this tree:
    • The v1.0.8 controller came up, and the warm pool was ready.
    • A SandboxClaim adopted the warm sandbox, and POST /execute answered {"stdout":"42 3.14.9\n",...,"exit_code":0}.
    • The E-core status check failed, as expected on a hybrid host with no balloons policy: the cluster was plain k3s.
  • tests/detect_test.sh 1185 passed.
  • tests/audit_test.sh 49 passed. The goldens were regenerated with --update, and only the NFD lines changed. The lock still holds 52 images.
  • tests/remote_test.py OK. The sandbox golden was regenerated.
  • tests/share_kubeconform.sh: 67 valid, 0 invalid, 11 skipped, the same as main.
  • Other suites:
    • tests/kubeconform.sh ok.
    • scripts/images-lock check and pins ok.
    • tests/image_pins_test.sh 39 passed.
    • tests/sim_matrix_test.sh 256 passed.
    • tests/console_test.sh 61 passed, and console/ledger-rules.json is unchanged.
    • tests/eat_test.sh 64 passed.
    • tests/docs_test.sh 61 passed, with the hashed mkdocs lock.
    • tests/ci_wiring_test.sh 58 passed.
    • tests/render_test.sh 16 passed, with helm v3.22.1.
  • tests/claims_check.sh: 25 files clean. tests/ledger_drift_check.py: 40 files agree with 74 rows. Every in-page anchor of EXPERIMENTS.md resolves.
  • tests/xhost_tools_test.sh (new, in CI) 18 passed.
    • Five broken copies of tools.sh each fail it: old kubectl, an install before the second check, no kubectl check, an extra binary, and no cleanup.
    • tools.sh against the real upstream printed k3d: OK, kubectl: OK, k3d v5.9.0 and kubectl v1.37.2.
  • integrations/eat/upstream/checks/apply-check.sh on EAS main 5767995: all five patches apply alone and as a series.
    • The 0003 static check passes for chart v0.15.0: helm template of the role's values in both reserved-CPU forms, and the BalloonsPolicy against the chart's CRD with unknown fields rejected.
  • shellcheck v0.11.0 (warning level) and actionlint 1.7.12: clean.

Both were the newest releases on 2026-10-29 (GitHub releases, and the use-latest-version
registry check), and each image is pinned to the index digest docker buildx imagetools
resolves.

- Node Feature Discovery v0.19.0 -> v0.20.1. It carries the GO-2026-6809 x509 fix and is
  built against the Kubernetes 1.37 libraries; its notes list no public API change.
  share/node-feature-discovery.yml is re-rendered with kubectl kustomize from v0.20.1's
  default overlay plus Intel's NodeFeatureRules v0.37.1, with the same patches and
  worker config (the header's kustomization reproduces the committed v0.19.0 body byte
  for byte before the bump). The body changes only in CRD descriptions, one master config
  comment, the config map's hash suffix and the image. NFD's default cpuid blacklist and
  its klauspost/cpuid (v2.4.0) are unchanged, so the launcher's label list stands. Image
  sha256:6fc5c9af...8379.
- agent-sandbox v1.0.7 -> v1.0.8. The release file (sha256 e68bfae0...) adds only the
  optional failedPodPolicy field (default Retain) and the controller's new tag. The
  controller and the python runtime are re-pinned. The release's action items (the MCP
  output cap and the router kustomization) do not apply: k3d-gpu installs neither.

Goldens: the audit goldens and fixtures name the new NFD tag and digest (the lock still
holds 52 images), the remote sandbox golden names v1.0.8, and the lock-drift case edits
the v0.20.1 pin.

Checked on throwaway k3d clusters (rancher/k3s v1.37.1-k3s1 at the Dockerfile's digest,
the manifest in the server's manifests directory, as the image bakes it): the three NFD
pods run the v0.20.1 digest, Ready with no restarts, and publish the same 70 feature
labels, keys and values, as v0.19.0 on the same node, both fresh and after an in-place
upgrade from v0.19.0. `k3d-gpu sandbox up` from this tree brought up the v1.0.8
controller and a ready warm pool; a SandboxClaim adopted it and POST /execute answered.
The unsent draft pinned the balloons chart to v0.14.0 as "the newest release today".
v0.15.0 (2026-10-21) is the newest in the nri-plugins Helm index now, and EAS main
(5767995) still has no chart pin, so a fresh install floats to v0.15.0. The patch is
regenerated with git format-patch on EAS main with the version and its message changed;
the issue draft and README follow.

Re-checked on 2026-10-29: every patch applies to EAS main 5767995 on its own and as a
series (checks/apply-check.sh). The role's advanced-balloon-values.yaml.j2, rendered with
sample inputs in both reserved-CPU forms, goes through helm template for chart v0.15.0
(sha256 1c727a8d..., the digest k3d-gpu's own component pins), and the BalloonsPolicy
validates against that chart's CRD with unknown fields rejected; the image resolves to
nri-resource-policy-balloons:v0.15.0.
Rule W7 pins kubectl v1.37.1, "the newest release on 2026-10-20". Kubernetes v1.37.2 came out
on 2026-10-28 and is the newest now (dl.k8s.io stable.txt, read 2026-10-29); k3d v5.9.0 and
helm v4.3.1 are still the newest of theirs.

P1 moves W7's kubectl to v1.37.2, mechanics only. No wildct hold has run (smoke1 was
discarded), and install.sh runs again before the first hold to install W7's newest k3d-gpu
release, so every wildct row runs on it. bench/wildct/install.sh fetches v1.37.2 and checks
it against its .sha256 file, as before; W7 points to P1. If wildct amendment R1 (PR #226)
merges, its sentence keeping v1.37.1 is superseded.
Cross-host rule 5 pins kubectl v1.35.2 in ~/k3dgpu-xhost/bin, which bench/xhost/hold.sh puts
first on PATH. The node image the cross-host rows run (0.1.61) serves Kubernetes v1.37.1, two
minors past the client and outside kubectl's one-minor skew policy. Crescent amendment E4
(PR #238) moves shared rule 5's workspace, ~/k3dgpu-bench/bin; it does not touch this one.

K1 moves rule 5's kubectl to v1.37.2 (the newest release, 2026-10-28; k3d v5.9.0 stays),
mechanics only. It covers H28x's run 2 and H7x, whose first measuring holds have not run.
H25x, H27x and H34x are records and keep what they ran. A row runs all its holds on the
kubectl in place at its first measuring hold.

Rule 5's tools had no script in this repo. bench/xhost/tools.sh installs exactly k3d v5.9.0
and kubectl v1.37.2 into ~/k3dgpu-xhost/bin, checks both against their upstream checksum
files before installing either, and prints both versions. A run against the real upstream
gave "k3d: OK", "kubectl: OK", k3d v5.9.0 and kubectl v1.37.2.

tests/xhost_tools_test.sh (in CI) runs it against a curl shim: exactly the two binaries at
the pinned versions, four downloads, nothing else touched, a checksum mismatch on either
installs nothing, no download directory left behind. Five broken copies of tools.sh (old
kubectl, an install before the second check, no kubectl check, an extra binary, no cleanup)
each fail it.
…lugins v0.15.0

The node image bakes the nri-plugins balloons chart v0.15.0 (component.conf,
share/nri-balloons.yml, since #192), and v0.15.0 is still the newest release in the
nri-plugins Helm index (2026-10-21, chart sha256 1c727a8d...). Two current-state lines
still named v0.14.0: the README's `helm upgrade --install` that adopts the baked objects
pinned `--version v0.14.0`, so following it would move a v0.15.0 node back to the older
chart, and docs/intel.md said the image bakes balloons v0.14.0. Both now read v0.15.0.
`helm template` of the chart from the repo at v0.15.0 renders the same kinds and the
v0.15.0 image the baked manifest carries.

The statements that describe v0.14.0's behaviour (docs/intel.md's CRD options and live
run, docs/failure-modes.md's snapshot, the dated security audit, the H14 record) are left
as they are.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant