feat(parsers): gemma4 on the v2 UnifiedParser — one ordered stream, with Dynamo request modes - #166
Conversation
|
📊 Conformance matrix rendered — view in CI summary |
645365c to
4bedf3a
Compare
bfc3024 to
d3eb844
Compare
d3eb844 to
827d4c0
Compare
da43cb2 to
2c7ca39
Compare
9cb43a6 to
6f05a50
Compare
2c7ca39 to
2911511
Compare
ad6a087 to
8b50a4e
Compare
d9fb490 to
09d1fe0
Compare
2911511 to
49205ef
Compare
… Dynamo request modes (#166) Signed-off-by: Keiven Chang <keivenchang@users.noreply.github.com>
4539f6e to
b035226
Compare
… Dynamo request modes (#166) Signed-off-by: Keiven Chang <keivenchang@users.noreply.github.com>
b035226 to
6cd3e15
Compare
|
Pushed The parser now preserves lexical Local validation passes: format and clippy, 450 parser unit tests plus integrations/docs, the full conformance package, 191 Python utility tests, and a 292-case matrix with no historical placeholders. CI for |
…ith Dynamo request modes (#166)
Signed-off-by: Keiven Chang <keivenchang@users.noreply.github.com>
Signed-off-by: Keiven Chang <keivenchang@users.noreply.github.com>
indrajit96
left a comment
There was a problem hiding this comment.
@keivenchang thanks for adding this
Left a few comments on streaming changes with a possible perf issue.
SOme gemma specific behavior is still present in unified/mod.rs
The existing tests all pass.
Signed-off-by: Keiven Chang <keivenchang@users.noreply.github.com>
Signed-off-by: Keiven Chang <keivenchang@users.noreply.github.com>
indrajit96
left a comment
There was a problem hiding this comment.
LGTM!
Conditional approval with one corner case comment here #166 (comment)
Signed-off-by: Keiven Chang <keivenchang@users.noreply.github.com>
|
Indrajit’s conditional approval is addressed in 2a6d200 — the parser now preserves a balanced recovery candidate across trailing whitespace at EOF, with native and unified coverage at chunk sizes 1, 4, and 16. |
Overview:
This PR moves Gemma4 onto the v2
UnifiedParserso reasoning, visible content, and tool calls stay in one ordered stream. Gemma4 only; every other family keeps its current path.This is standalone on current
main. #178, #174, and #194 already provide the shared parser interface, request modes, and guided-streaming contract.Example (before → after):
Case
UNIFIED.12.b— a tool call opens inside a reasoning span:Details:
ScannerUnified; registration is one family row.ReasoningSpec.start_labelstrips Gemma4's structuralthought\nrole label instead of exposing it as reasoning text.call:prose, skips wrapper-shaped data inside argument strings, and resynchronizes after malformed or incomplete wrappers.dynamo_v2-0.3.3+pr166, separate from the released0.3.3identity. Historical columns use immutable sparse overlays, and released base hashes remain unchanged.Verification:
cargo fmt -- --check, parser clippy, and conformance clippy pass.python3 -m pytest conformance/utils/testspasses 191 tests.postdates that buildplaceholders.Where should the reviewer start?
parsers/v2/src/unified/gemma4.rs, thenparsers/v2/src/tool_calling/scan.rsandparsers/v2/src/tool_calling/v1core/gemma4/parser.rs/coderabbit profile chill