Action compatibility
Host eligibility, mechanism compatibility, and planner preference answer different
questions. The constants in sysknife-core::action_family separate them:
DEBIAN_ONLY_ACTIONScovers apt/dpkg and the Debian GRUB interface.UBUNTU_ONLY_ACTIONScovers Canonical services, release upgrades, Ubuntu PPAs, and the Ubuntu reboot sentinel. A Debian family orID_LIKE=ubuntuhint does not establish Ubuntu identity.FEDORA_ONLY_ACTIONScovers rpm-ostree/DNF mechanisms.NON_CANONICAL_ON_DEBIANwithholds firewalld/toolbox from the entire Debian family's planner.NON_CANONICAL_ON_DEBIAN_HOSTadditionally withholds snap/netplan/Multipass on non-Ubuntu Debian-family hosts.NON_CANONICAL_ON_FEDORAkeeps the Fedora planner on its existing defaults. Portable mechanisms such as ufw, AppArmor, fail2ban, Flatpak and distrobox can still execute when the operator has installed and configured their tools.
Only the hard lists feed the daemon and CLI mechanism compatibility fences.
The shared action_requires_supported_host predicate also includes portable
tools for CLI host eligibility and unknown-family catalogue filtering. Those
hosts must not reach approval for mutations the daemon will refuse. This
conservative client gate withholds portable reads too; it does not restrict
portable tools on eligible Ubuntu or Fedora Atomic hosts.
At the daemon, portable Observer reads such as UfwStatus and SnapList no
longer require distro detection after leaving the hard lists. This widens
read-only inspection; mutations still require an eligible host, and the
Low-risk mutating AptUpdate remains hard-fenced.
Ubuntu Core is not an eligible host. Its Debian family tag does not make apt available: the planner limits its catalogue to actions outside the shared host-policy predicate, as it does for an unknown family. This does not claim Ubuntu Core execution support.
The MCP surface uses the same routing checks and withholds hard-restricted actions when detection fails. The planner receives an explicit distribution ID alongside the family; display text never grants Ubuntu capabilities.
The action reference's Distro column describes the default supported catalogue, including preferences. It is not a claim that a portable tool cannot be installed elsewhere. The default Ubuntu and Fedora catalogues remain unchanged by this split.
Debian is still ineligible under DistroId::is_supported(). This change does not
enable its mutations or claim live Debian validation. PPAs contain packages built
for an Ubuntu series, even on Debian releases that provide add-apt-repository.
CheckPendingReboot reads /var/run/reboot-required, normally produced by
Ubuntu's update-notifier. A missing file is not sufficient evidence on Debian;
the action stays Ubuntu-only pending validation of a Debian producer or backend.