Repository navigation
propose_plan's params description lists Fedora-only and toolbox actions to Ubuntu hosts #648
Description
On Ubuntu, propose_plan still shows the model Fedora-only and toolbox action names, through the one part of the tool definition the distro filter never touches. available_on filters the action_name enum and the catalogue per distro (crates/sysknife-brain/src/planning_tools/propose_plan.rs:506-539), and the comment at :544 explains why that filter matters. The params description beside them is a single static string (:623), built the same way for every host. At 90cc24e it names, among others:
AddLayeredPackage RebaseSystem SetKernelArguments PinDeployment
InstallPackages ListToolboxes CreateToolbox ConfigureFirewall
with worked examples such as RebaseSystem: {"target_ref":"fedora/40/x86_64/silverblue"}. debian_tool_def_omits_fedora_only_actions (:1314) reads only ["action_name"]["description"] and the enum, so it passes.
Why it matters
The fence exists because models proposed ListToolboxes and ConfigureFirewall on Ubuntu VMs. The enum stops an out-of-list name on a strict provider, but the description keeps advertising the parameter shape, and a weaker local model or a lenient provider can still emit it. The daemon then refuses after the operator has read and approved a plan.
Scope
- Build the
paramsdescription from the same filtered list as the enum: emit an example line only for an actionavailable_onkeeps. - Keep each example's text unchanged for the actions that stay, so Fedora prompts do not shift.
- Related, same fix shape:
planner.rs:684adds everyquery_tools()entry on every distro, includingquery_deploymentsandquery_toolboxes. Include it if the per-tool mapping is clear to you; otherwise leave it and say so in the PR, and I'll file it on its own.
Tests first
debian_tool_def_params_description_names_no_fenced_actionin thepropose_plan.rstests: serializepropose_plan_tool_def(Some(&debian_hint)), readparams.description, and assert no name fromFEDORA_ONLY_ACTIONSorNON_CANONICAL_ON_DEBIANappears. It fails today.- A mirror test for Fedora against
DEBIAN_ONLY_ACTIONSandUBUNTU_ONLY_ACTIONS. - Make the description static again and the first test must fail.
Difficulty
medium: the change is local, but the description is long and the two prompts must stay byte-stable where they should.
Getting started
CONTRIBUTING.md has the build and test commands. No CLA and no copyright waiver. The project is MIT.
Activity
vladimirrott commentedon Oct 24, 2026
@jabrailkhalil your #422 made the action-reference drift check name the first line that differs. This is drift the fence test cannot see:
propose_plan's params description still names Fedora-only and toolbox actions to Ubuntu hosts.I'm holding it for you. Say so here and I'll assign it. If it isn't for you, no reply needed.
jabrailkhalil commentedon Oct 24, 2026
Thanks for thinking of me and for the clear report. I’m focused on my existing Qwen and Google follow-ups right now, so please leave this available for another contributor.
dannyward630 commentedon Oct 25, 2026
Claiming #648. I will derive the
propose_planparams examples from the same distro-filtered action list as theaction_nameenum and add Debian/Ubuntu and Fedora regression tests. I will inspect the relatedplanner.rsquery-tool mapping and leave it out if it needs a separate mapping decision.vladimirrott commentedon Oct 25, 2026
@dannyward630 it's yours, and assigned. jabrailkhalil passed on it yesterday, so nobody else is holding it.
Thank you. In two weeks you've landed #632 and #638, opened #635, #636, #637 and now #656, and taken #479, #557, #629, #630 and #633. Nobody else is carrying this much of the tracker right now. You send every PR with its tests, the commands you ran and a plain note on what you couldn't run, and that makes each one fast to review. The macOS note on #656 saved me a round trip. I'm grateful you chose to spend this much of your time on SysKnife.
My review of #656 is on the PR. One item there needs to change before it leaves draft; the rest is optional.