v0.4.1 — OpenAI incomplete StopReason fix
Patch release. A cut-over fix the Maestro team surfaced while switching onto the toolkit.
Fixed
-
OpenAI (Responses)
StopReason— onstatus:"incomplete"the adapter now surfacesincomplete_details.reason("max_output_tokens"/"content_filter") instead of the envelope status. This makes OpenAI consistent with the raw-finish-reason passthrough of the other adapters (cf. divergences G3/OL3), so consumers can detect length-truncation / content-filter without reaching intoRaw(outside the stability contract). Tool calls on a truncated response are preserved. Divergence OC4; no ADR (bugfix aligning to an existing convention). Cross-ref Maestro PR #220 / spec §9.Maestro consumers: on bumping to v0.4.1 you can delete the
rawStopReasonRaw.(*responses.Response)workaround + its two guard tests —normalizeStopReasonalready maps these reasons; no other change needed.
Docs
- ADR-0009 — recorded the 2026-05-18 end-to-end live validation of the v0.4 Vertex path (Anthropic via
anthropicvertex+ Gemini embeddings) against real Google Vertex AI (append-only; design validated as built).
No API changes. Pre-1.0: v0.x minor versions may break.