Summary
The Laguna architecture added in #102 uses Poolside's implicit-open reasoning format and GLM-style tool-call tags, but automatic parser selection currently falls through to unrelated generic parsers. As a result, Laguna can load and generate while reasoning/tool transport is silently misclassified.
Expected behavior
For Laguna / Poolside checkpoints, --reasoning-parser auto and --tool-call-parser auto should select a dedicated poolside_v1 pair:
- reasoning starts implicitly and closes at
</think>
- tool calls use
<tool_call>, <arg_key>, and <arg_value> tags
- streaming must tolerate arbitrary tag chunk boundaries
- JSON-schema-declared strings preserve source-code whitespace; typed non-string arguments retain GLM conversion behavior
- explicitly selecting
poolside_v1 must be accepted by both CLI choices
Proposed implementation
- Add
poolside_v1 to the reasoning and function-call parser factories.
- Reuse the existing GLM 4.7 state machine for tool tags while preserving leading/trailing whitespace only when the property schema is exactly
type: "string".
- Auto-select the parser for Laguna architecture/path markers.
- Keep existing
glm47 buffered and streaming behavior unchanged.
Validation
On a branch containing current main plus #102:
- 254 parser/streaming tests pass across the auto-selection matrix, Poolside-specific cases, GLM/Qwen/Minimax/Muse parsers, default/disabled thinking modes, and reasoning models.
- Poolside-specific coverage includes buffered and arbitrary-chunk streaming, escapes, text after tool calls, enum-only/untyped schemas, exact string whitespace, and schema-aware GLM coercion for explicitly typed non-string arguments.
- A real
unsloth/Laguna-S-2.1-GGUF revision 750f92f90cf54159c4d7a610cb7b3e74498e75c6 run auto-selected both parsers without explicit flags.
- Real buffered and streaming requests produced correctly transported tool calls when the checkpoint emitted a valid closed tool block. Failures from the IQ1 checkpoint emitting a tool block inside unclosed reasoning are model-generation failures, not parser corruption.
Related: #102
Summary
The Laguna architecture added in #102 uses Poolside's implicit-open reasoning format and GLM-style tool-call tags, but automatic parser selection currently falls through to unrelated generic parsers. As a result, Laguna can load and generate while reasoning/tool transport is silently misclassified.
Expected behavior
For Laguna / Poolside checkpoints,
--reasoning-parser autoand--tool-call-parser autoshould select a dedicatedpoolside_v1pair:</think><tool_call>,<arg_key>, and<arg_value>tagspoolside_v1must be accepted by both CLI choicesProposed implementation
poolside_v1to the reasoning and function-call parser factories.type: "string".glm47buffered and streaming behavior unchanged.Validation
On a branch containing current
mainplus #102:unsloth/Laguna-S-2.1-GGUFrevision750f92f90cf54159c4d7a610cb7b3e74498e75c6run auto-selected both parsers without explicit flags.Related: #102