Skip to content

Preserve literal reasoning tags in assistant history - #1009

Merged
bradhilton merged 11 commits into
mainfrom
fix/preserve-literal-reasoning-content
Sep 28, 2026
Merged

bradhilton merged 11 commits into
mainfrom
fix/preserve-literal-reasoning-content

Conversation

@bradhilton

@bradhilton bradhilton commented Sep 28, 2026 •

Copy link
Copy Markdown
Collaborator

Qwen-style inline reasoning parsing can delete literal content containing <think> or </think>. Disable the executable parser while preserving surrounding whitespace and explicit structured reasoning.

Moving a trim requires a proven local renderer, a closed template effect boundary, and namespace mutations limited to private counters that remain bound to their validated declarations. Unknown callbacks, shared bindings and unproved macro calls retain their original trims and evaluation order. This changes the shared inference template helper; tokenizer APIs are unchanged.

Validation: 295 parser cases pass, including callback and parameter-alias regressions that fail their respective parent versions. Public forward-block and caller-default cases also reproduce the old problem and pass. Both actual Qwen template assets retain identical normalized bytes and thinking defaults. Ruff and formatting pass; type diagnostics match the existing baseline. Final independent CLI reviews and CI are running.

@bradhilton
bradhilton marked this pull request as ready for review September 28, 2026 14:18
@bradhilton
bradhilton merged commit e65b0dd into main Sep 28, 2026
7 checks passed
bradhilton added a commit that referenced this pull request Oct 10, 2026
This reverts commit 1006597.

Restores pre-#925 SPMD trainer execution: trainer_rank/ and megatron/ now
match 652e0f0 apart from the independent #1089. The cloudpickle dependency
goes with it; the uv.lock conflict was the adjacent datrie line #1104 removed.

Rendering is intentionally unchanged. #925 also removed #967's
_preserve_literal_thinking_off_content and part of #1009's chat-template
parser handling. Those, and the tests that cover them, stay byte-identical to
main until a separate investigation decides:

  src/art/trajectories/_tokenize.py
  src/art_inference/chat_template.py
  tests/unit/test_literal_reasoning_content.py
  tests/unit/test_reasoning_parser_joined_branches.py
  tests/unit/trajectories/test_literal_thinking_off.py
  tests/unit/trajectories/test_recorded_boundaries.py
  tests/unit/trajectories/test_recorded_boundary_source_guard.py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant