Problem
Since the upgrade target image resolves from values.yaml::image (#176), the node body's machine.install.image is no longer consulted. When the two diverge — typical in projects initialized with an older preset where values.yaml was never bumped but node files were edited or re-templated — talm upgrade -f nodes/<name>.yaml prints only Using image from values.yaml: <ref> and proceeds. There is no signal that the file's image was ignored, nor that the file will be rewritten by the post-upgrade write-back to match the applied image.
This surprised a real operator: their values.yaml carried an old preset default (talos:v1.10.5) while the node file pointed at a current image; the printed line was the only hint that the wrong knob was about to win.
Proposal
When -f is given and --image is unset, after resolving the target from values.yaml, parse machine.install.image from each -f node body (best-effort, plain YAML read, no templating). If any body's image differs from the resolved target, print a warning naming both refs and stating that the body will be patched to the target after a successful upgrade. A warning, not a blocker — drift here is expected mid-upgrade.
Problem
Since the upgrade target image resolves from
values.yaml::image(#176), the node body'smachine.install.imageis no longer consulted. When the two diverge — typical in projects initialized with an older preset wherevalues.yamlwas never bumped but node files were edited or re-templated —talm upgrade -f nodes/<name>.yamlprints onlyUsing image from values.yaml: <ref>and proceeds. There is no signal that the file's image was ignored, nor that the file will be rewritten by the post-upgrade write-back to match the applied image.This surprised a real operator: their values.yaml carried an old preset default (
talos:v1.10.5) while the node file pointed at a current image; the printed line was the only hint that the wrong knob was about to win.Proposal
When
-fis given and--imageis unset, after resolving the target from values.yaml, parsemachine.install.imagefrom each-fnode body (best-effort, plain YAML read, no templating). If any body's image differs from the resolved target, print a warning naming both refs and stating that the body will be patched to the target after a successful upgrade. A warning, not a blocker — drift here is expected mid-upgrade.