/* SPDX-License-Identifier: AGPL-3.0-or-later */ /* Copyright (C) 2026 David (Corey) Herrera */ /** * @file abandoned_call_fixture.h * @brief The raw tool text of an ABANDONED call: the shape the * [tool_degenerate] diagnostic in openai_chat.c collect_tool_calls * reports when a model opens a parameter and never fills or closes it. * Reproduces an emission observed in real serving byte-for-byte; it * carries no user content. * * WHAT IT SHOWS. The model opened a `read`, opened , * wrote NO value at all, and then jumped straight to -- * skipping entirely. tc_parse_tool_calls found no closed * parameter, dropped the empty value, and produced `{}`, which is * indistinguishable at the client from a model that emitted an empty * argument. This is NOT the reasoning-budget force-close (zero FORCED * close events in the same log), NOT string mangling, and NOT the * frame-capture misroute: it was seen on a shallow prompt (~2,858 * tokens), mode=REQUIRED, dialect=XML. * * @status None * @issues None * @todo None */ #ifndef PN_TEST_ABANDONED_CALL_FIXTURE_H #define PN_TEST_ABANDONED_CALL_FIXTURE_H /* The raw tool channel text, 57 chars. Logged as `tool=read args={}`. */ static const char FX_ABANDONED_READ_PATH[] = "\n\n\n\n"; #endif /* PN_TEST_ABANDONED_CALL_FIXTURE_H */