Skip to content

[Bug]: empty initial turns finalize as failures instead of successful terminal responses #2658

Description

@1688mengdie

Summary

A turn whose first round carries only system-injection user messages (no real user content) is finalized locally without a model request; the success whitelist only accepts max_rounds/repeated_tool_failures, so this terminal reason classifies as failure. Add empty_initial_turn to the whitelist so locally synthesized terminal turns settle as success like the other no-model-request reasons.

Note: no production path emits empty_initial_turn at this baseline (grep zero hits across the tree at 32f2427); this is a defensive alignment so the reason settles correctly once an empty-input first-round guard is introduced upstream.

Area

src/crates/assembly/core/src/agentic/execution/execution_engine.rs (success whitelist, single line). Crate: bitfun-core.

Reproduction or evidence

At 32f2427 the whitelist (:4983) is "max_rounds" | "repeated_tool_failures". Evidence for the defensive nature: git grep empty_initial_turn 32f2427697 matches zero files; the reason value is only referenced by this whitelist today.

Environment

All platforms; baseline 32f2427.


AI-assisted change. Testing: verified locally (cargo check -p bitfun-core exit 0; cargo test --features agent-runtime execution_engine 48 passed, 0 failed; the suite requires the agent-runtime feature since the crate has default = []).

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