Repository navigation
E.0: enum-state shared wire samples + 8455db9a baseline; add A7 (phase 1E) - #24
Open
cunninghamcard-bit wants to merge 2 commits into
Open
cunninghamcard-bit wants to merge 2 commits into
cunninghamcard-bit wants to merge 2 commits into
Conversation
fixtures/v4/enum-state/: JSONL samples for ToolCall, ToolResult, RawToolCall and StreamPart/TextStreamPart tool-input-start (absent / explicit false / true, providerExecuted true/false/absent, invalid+error, D26 rejected inputs, RFC-0042:84-91 vectors as RawToolCall input), normalized/ per A7 D25, and baseline/ recorded at 8455db9. aimux-core/tests/enum_state_wire_test.rs compares serialize(deserialize(line)) byte for byte with the baseline and checks normalized/ is a round-trip fixed point. A7 copied verbatim into docs/amendments/.
tool_call.jsonl gains the RFC-0042:84-93 core values (string "Tokyo", string
"{\"x\":1}" kept a string, number, bool, null, last-wins {"a":2}, 100.0)
and empty text / {"a": as invalid dynamic calls with an error (never {}).
tool_call_semantic.jsonl holds the non-canonical spellings (duplicate key,
1e2), compared by JSON semantics. check_normalized asserts line counts before
zipping; baseline_equals_samples is skipped in bless mode. Baseline re-blessed
at 8455db9 (existing lines unchanged; new lines appended).
This was referenced Oct 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phase 1E unit E.0 (A7; D2/D25/D26). Branches from
exp/restart@8455db9aand is independent of the 1R stack (#19–#23): it touches no code those PRs change. Test and fixture additions only; no library code changed.Added
docs/amendments/A7-enum-state-modeling.md: a verbatim copy of the plan's A7 (cmpidentical), including the D25/D26 decisions and the 2026-10-11 corrections.fixtures/v4/enum-state/*.jsonlshared samples. Each line is one compact JSON value, with keys in the Rust serialization order so the comparison can be byte for byte.tool_call(15 rows):dynamicabsent/false/true ×providerExecutedabsent/true/false;invalid:falsewith and withoutdynamic; Dynamic+invalid:true+error(also withproviderExecuted/providerMetadata); andproviderMetadata.tool_call_rejected(3 rows, D26):invalid:truewithoutdynamic, withdynamic:false, and withouterror. They are accepted at 8455db9; E.2'stry_frommust reject them.tool_result(8 rows):dynamicabsent/false/true;isErrorandpreliminarytrue/false; andproviderMetadata.raw_tool_call(18 rows): the RFC-0042:84-91 rows 1–6 as provider input text, reused from 1.3'stool-input-vectors.json(onexp/u1.3-tool-input-vectors, not on 8455db9). Includes""and{"a":, plusdynamic×providerExecutedthree-state.stream_tool_input_start/text_stream_tool_input_start(10 rows each):dynamic×providerExecutedthree-state, plustitle.normalized/is generated per the A7 D25 table:dynamic:falseandinvalid:falseare dropped.dynamicis always written as a boolean.providerExecutedpasses through everywhere.ToolResulthas noproviderExecutedfield, so the client-vs-provider split in A7's E.3 correction can't be read from it. E.3 must decide that and updatenormalized/tool_result.jsonl.baseline/holds the round-trip output recorded at 8455db9 (AIMUX_BLESS_ENUM_STATE=1).gen_samples.pydocuments how the samples andnormalized/were produced.aimux-core/tests/enum_state_wire_test.rs(7 tests):serialize(deserialize(line))is compared byte for byte withbaseline/, andnormalized/is checked to be a round-trip fixed point.baseline_equals_samplesshows that at 8455db9 every sample round-trips unchanged. Later units point the comparison atnormalized/where D25 changes the output.Results vs R.0 (local linux x64; the 7 new test names appear in the log)
untagged/flatten/new tag in new codeThe Python and Node bindings were not re-run because no library code changed. Go/Java/Kotlin/Swift/Flutter were not run.
Update (684c8b9): review fixes
Core-side RFC-0042:84-93 samples.
tool_call.jsonladds the parsed values:"Tokyo""{\"x\":1}", which stays a string and is not turned into an object123,true,null{"a":2}and100.0{"a":as invalid dynamic calls with an error, never{}Comparison rules. Provider raw text (
raw_tool_call.jsonl) is compared byte for byte.tool_call_semantic.jsonlholds the non-canonical spellings ({"a":1,"a":2}and1e2) and is compared by JSON semantics withnormalized/tool_call_semantic.jsonl(new testtool_call_semantic_samples_match_by_json_value). The baseline was re-blessed at 8455db9 code: existing lines are unchanged and the new lines are appended.check_normalizednow asserts the line counts are equal before zipping.Bless mode (
AIMUX_BLESS_ENUM_STATE=1) skipsbaseline_equals_samples, because the other tests are rewriting the baseline at that moment.Deferred to E.3a:
tool_resultD25 normalization:dynamicis always written as a boolean for client-executed results and passed through for provider-executed ones;providerExecutedToolResult samples, including a provider-executed result withoutdynamic.At 8455db9
ToolResulthas noproviderExecutedfield, sonormalized/tool_result.jsonlstays identity here.enum_state_wire_test: 8 tests pass. The full workspace wasn't re-run for this fix (expected 2879 / 0 / 7 = 2878 + 1).