Skip to content

[bug] quick-router drops the reminder label when the task comes before the duration ("remind me to X in N minutes") #591

Description

@ultrahighsuper

Summary

The deterministic quick-router extracts the reminder task label only when it comes after the duration ("remind me in 5 minutes to check the oven"). The equally common reversed order, "remind me to check the oven in 5 minutes", loses the task entirely and falls back to the generic label:"reminder".

Steps to reproduce

  1. Route the utterance remind me to check the oven in 5 minutes through genie_core::tools::quick::route (the same path genie-ctl chat / the BFCL quick-router harness use).
  2. Inspect the emitted set_timer tool call.

Expected behavior

{"name":"set_timer","arguments":{"seconds":300,"label":"check the oven"}}

Same label as the already-supported reversed order remind me in 5 minutes to check the oven, which correctly yields label:"check the oven".

Actual behavior

{"name":"set_timer","arguments":{"seconds":300,"label":"reminder"}}

The task ("check the oven") is silently dropped. reminder_label() in crates/genie-core/src/tools/quick.rs only scans the tokens after the parsed duration unit for a to <label> clause, so when the to <label> clause precedes the duration it is never seen and the generic fallback label is used.

This is a whole class, not a single phrasing — every "remind me/us to in|after " utterance is affected (e.g. remind me to stretch after 90 seconds, remind us to water the plants in 2 hours).

Hardware

Non-Jetson (x86_64 dev / cross-build host)

GenieClaw version / commit

81ea986 (main)

Additional context

This is a tool-dispatch argument-correctness bug: the label argument is wrong, which is exactly what the BFCL local-LLM tool-call scoring measures. The duration (seconds) is already correct; only the label is dropped. Fix should be scoped so the reversed order and the named-timer paths (cookie timer for 12 minutes) stay unchanged, and a bare to <n> <unit> (no task clause) keeps the generic fallback.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions