Skip to content

ReActV2's last_request_note renders with an invented assistant reply #259

Description

@deepfates

What's true now. Imp.Predict.ReActV2's :last_request_note is documented as "one line of host text put in front of it as a user message" (lib/imp/predict/react_v2.ex ~115). It's stored as a history entry that has an input and no outputs (append_note/3), and the chat adapter renders every history entry as a complete exchange. So the note's entry becomes a user message followed by a made-up assistant message:

[[ ## next_thought ## ]]
Not supplied for this conversation history message.

[[ ## completed ## ]]

That's DSPy's filler for history entries missing an output (dspy/adapters/base.py:451, DSPy 3.2.1). It's right for DSPy's History, where every entry is a finished exchange. It's wrong for Imp's own note, which isn't an exchange. As a result, the last request of an interrupted turn ends on an invented assistant reply rather than on the note. Evidence: a Dwell capture with Dwell's output renderer removed (GroveResearch/dwell#148; scratchpad imp-renders/without-output-renderer/h-budget-request-4.txt).

Target. The note reaches the model as what the docs say it is: the last user message of that request, with no made-up assistant reply after it. The same holds anywhere ReActV2 stores an input-only entry of its own making. DSPy-shaped History inputs keep DSPy's behaviour.

Done when.

  • A captured last request with a note ends on the note as a user message.
  • The tests fail without the fix.
  • The parity differentials are unchanged, or any change is recorded with its reason.
  • It ships in 0.7.0: GroveResearch/dwell#148 carries a narrow renderer only until this lands.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions