Skip to content

propose_plan's params description lists Fedora-only and toolbox actions to Ubuntu hosts #648

Closed

Description

@vladimirrott

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 params description from the same filtered list as the enum: emit an example line only for an action available_on keeps.
  • Keep each example's text unchanged for the actions that stay, so Fedora prompts do not shift.
  • Related, same fix shape: planner.rs:684 adds every query_tools() entry on every distro, including query_deployments and query_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_action in the propose_plan.rs tests: serialize propose_plan_tool_def(Some(&debian_hint)), read params.description, and assert no name from FEDORA_ONLY_ACTIONS or NON_CANONICAL_ON_DEBIAN appears. It fails today.
  • A mirror test for Fedora against DEBIAN_ONLY_ACTIONS and UBUNTU_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

  1. added
    bugSomething isn't working
    help wantedExtra attention is needed
    mediumDifficulty: needs familiarity with one subsystem
    on Oct 24, 2026
  2. vladimirrott commented on Oct 24, 2026

    @vladimirrott
    MemberAuthor

    @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.

  3. jabrailkhalil commented on Oct 24, 2026

    @jabrailkhalil
    Contributor

    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.

  4. dannyward630 commented on Oct 25, 2026

    @dannyward630
    Contributor

    Claiming #648. I will derive the propose_plan params examples from the same distro-filtered action list as the action_name enum and add Debian/Ubuntu and Fedora regression tests. I will inspect the related planner.rs query-tool mapping and leave it out if it needs a separate mapping decision.

  5. added
    claimedSomeone has said in the thread that they are working on this
    on Oct 25, 2026
  6. vladimirrott commented on Oct 25, 2026

    @vladimirrott
    MemberAuthor

    @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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingclaimedSomeone has said in the thread that they are working on thishelp wantedExtra attention is neededmediumDifficulty: needs familiarity with one subsystem

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions