Skip to content

Planner substitutes a wrong known label instead of reporting the target unresolvable #8

Description

@adharshvenkat

Problem

llm_planner.py's system prompt instructs the model to return an empty plan when the requested target isn't in known_labels. In practice, the local model (Ollama qwen2.5:3b) instead substitutes a different, known-but-wrong label.

Evidence

Command "Go to the forklift" (not in the map) produced a task graph targeting door (a known label) instead of the documented empty-plan fallback ({"summary": "no matching target", "tasks": [], "replan_on_failure": false}).

Impact

  • The executor's replan-on-unresolvable path (fleet_orchestrator.py) rarely fires as designed, since the planner rarely emits a genuinely unresolvable target.
  • The robot can confidently navigate to the wrong object with no visible error, which is worse than failing loudly.

Proposed fix

Options to evaluate:

  • Validate the planner's JSON output against known_labels in code and force a replan if target isn't an exact/fuzzy match, rather than trusting the LLM's adherence to the prompt.
  • Try a stronger/instruction-following model for this task.
  • Add an explicit "explore" task type the planner can emit when it has no confident target.

Acceptance criteria

  • Requesting a target with no corresponding known label never results in silent navigation to an unrelated object.
  • The unresolvable path is exercised by an integration test or a scripted repro command.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions