Summary
docs/architecture/lifecycle.md, Deletion, says the finalizer "cleans its metadata off the nodes — state annotations, cordons it owns, and the runtime-required taint". The operator deliberately does not remove the state annotations in the common case: CleanupSCRMetadata keeps nodewright.nvidia.com/nodeState_<name> and nodewright.nvidia.com/version_<name> whenever the parsed state is non-empty, because a non-absent entry means the package's files are still on the host (the D2 semantics docs/user-guide/uninstall.md describes). Only status_*, cordon metadata and the taint go.
Observed while deleting completed test NodeWrights on a real cluster (#685 release testing): a minute after deletion, nodeState_<name> and version_<name> were still on the node; status_<name> was gone. That is the intended behaviour, and a reader of lifecycle.md expects the opposite.
Fix
Reword item 2 of the Deletion list to match CleanupSCRMetadata and link to the uninstall guide's D2 explanation (linked PR).
Summary
docs/architecture/lifecycle.md, Deletion, says the finalizer "cleans its metadata off the nodes — state annotations, cordons it owns, and the runtime-required taint". The operator deliberately does not remove the state annotations in the common case:CleanupSCRMetadatakeepsnodewright.nvidia.com/nodeState_<name>andnodewright.nvidia.com/version_<name>whenever the parsed state is non-empty, because a non-absent entry means the package's files are still on the host (the D2 semanticsdocs/user-guide/uninstall.mddescribes). Onlystatus_*, cordon metadata and the taint go.Observed while deleting completed test NodeWrights on a real cluster (#685 release testing): a minute after deletion,
nodeState_<name>andversion_<name>were still on the node;status_<name>was gone. That is the intended behaviour, and a reader of lifecycle.md expects the opposite.Fix
Reword item 2 of the Deletion list to match
CleanupSCRMetadataand link to the uninstall guide's D2 explanation (linked PR).