Skip to content

E.6: A7 enum-family audit, conclusion and file:line per row (docs; E.5 needs no changes) (on #31) - #37

Open
cunninghamcard-bit wants to merge 1 commit into
exp/e4-tool-input-start-kindfrom
exp/e6-enum-family-audit
Open

cunninghamcard-bit wants to merge 1 commit into
exp/e4-tool-input-start-kindfrom
exp/e6-enum-family-audit

Conversation

@cunninghamcard-bit

Copy link
Copy Markdown
Owner

Unit E.6 (PHASES 1E). Docs only. Stacked on #31 (E.4, a498558a), and the PR base is exp/e4-tool-input-start-kind.

E.5 has no remaining changes, so it has no PR

The E.5 acceptance check is rg -n '\.dynamic\b|\.invalid\b' aimux-* tools. At the E.4 head it finds only:

  • Wire conversions: tool.rs:369-370, :686, :690.
  • V4-layer RawToolCall fields (provider-layer three-state data):
    • parse_tool_call.rs:107, :192
    • tool_input_test.rs:30, :212
    • mistral_upstream_e2e_test.rs:203
  • Accessor method calls to ToolResult::dynamic(): provider_executed_marking_test.rs:88, data_loss_regression_test.rs:275.
  • Two test.invalid URLs.

No source code reads wire fields such as ["dynamic"], ["invalid"], ["providerExecuted"] or get(...), either. Every consumer listed in PHASES E.5 already uses accessors or match: GenerateContent/TextContent, ToolApprovalRequestOutput.tool_call, aimux-stream, aimux-ffi, providers and tools. The compiler forced that when E.2–E.4 changed the types. The two internal functions in A7 (parsed_tool_call_arguments, response_tool_call_input) already take &ToolCall.

E.6

I appended a conclusion table to docs/amendments/A7-enum-state-modeling.md. Every A7 row now has a conclusion and a file:line:

  • Already done: ToolCall, ToolResult, RawToolCall, ToolKind, StreamPart and TextStreamPart (E.1–E.4).
  • Already an enum, no change: ContentPart, LanguageModelMessage and its parts, ToolResultOutput/ToolResultContent, GenerateContent and Source.
  • Plain data, no change: ToolCallPart, ToolApprovalResponsePart, RawToolApprovalRequest, ToolApprovalRequestOutput and GenerateTextResult.
  • Can't be met, no change: MessageContent/ModelPrompt (message.rs:28, :82) use untagged.
  • V4 DTOs on u1.6 (b837aac), no change: aimux-provider/src/content.rs:84, :99.

The table also records the E.4 decision: D25's "always write" rule applies only to core TextStreamPart, and the provider-layer StreamPart passes the value through.

No code changed, so no tests were re-run. The numbers from #31 still apply.

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