release: v0.1.7
Release / build (aarch64-apple-darwin) (push) Waiting to run
Release / build (x86_64-apple-darwin) (push) Waiting to run
Release / build (aarch64-unknown-linux-gnu) (push) Waiting to run
Release / build (x86_64-pc-windows-msvc) (push) Waiting to run
Release / publish GitHub Release (push) Blocked by required conditions
Release / build (x86_64-unknown-linux-gnu) (push) Failing after 7s
Release / build (aarch64-apple-darwin) (push) Waiting to run
Release / build (x86_64-apple-darwin) (push) Waiting to run
Release / build (aarch64-unknown-linux-gnu) (push) Waiting to run
Release / build (x86_64-pc-windows-msvc) (push) Waiting to run
Release / publish GitHub Release (push) Blocked by required conditions
Release / build (x86_64-unknown-linux-gnu) (push) Failing after 7s
Since v0.1.6 — the cross-provider replay audit (Pi transform-messages policy: every wire builder emits only items valid for its target): - fix(responses): reasoning items without a native rs_* id dropped (the GPT/codex 400 Invalid 'input[N].id'); provenance gate drops foreign reasoning and demotes foreign backend tool calls on model switches - fix(codex): bare rs_* reasoning references dropped (stateless backend) - fix(wire): shared ASCII tool-call id sanitizer, symmetric call+result on both the Messages and Responses legs - fix(messages): image-source whitelist (raster base64 only, http(s) urls only) and empty-user-content guard - fix(conversation): char-boundary-safe code preview (CJK/emoji code panicked every request build) - docs: AGENTS.md records the replay policy
This commit is contained in:
@@ -228,6 +228,26 @@ edges stay deterministic Rust. The harness appends a terminal
|
||||
results); everything else — unsigned cross-backend history, `tco_*`
|
||||
Responses blobs, stale-model blocks — is stripped, or the request
|
||||
400s "Invalid `signature` in `thinking` block".
|
||||
- CROSS-PROVIDER REPLAY POLICY (Pi `transform-messages` pattern): the
|
||||
conversation history is provider-agnostic and sessions switch
|
||||
models/backends mid-history, so EACH wire builder owns emitting only
|
||||
items valid for its target — never patch downstream except in the
|
||||
per-backend body adapters. Concretely: the Responses input drops
|
||||
Reasoning items without a native `rs_*` id (foreign capture is id "")
|
||||
and provenance-gates whole turns via `transform_items_for_responses`
|
||||
(`AssistantItem.model_id` vs the request model: foreign Reasoning
|
||||
dropped, foreign BackendToolCall demoted to its `text_summary`);
|
||||
the codex adapter additionally drops bare `rs_*` references (stateless
|
||||
backend); tool-call ids pass through ONE shared ASCII
|
||||
`sanitize_tool_call_id` symmetrically on call+result on BOTH the
|
||||
Messages and Responses legs; Messages image sources go through
|
||||
`parse_base64_image_data_uri` (raster whitelist, no `data:` url
|
||||
sources) and empty user turns get a placeholder. Dangling tool calls
|
||||
are already repaired item-level by `repair_dangling_tool_calls` on the
|
||||
actor's build path. When a provider wire bug surfaces, fix the CLASS
|
||||
across all three builders in the same pass — three sequential
|
||||
single-provider fixes (thinking signature → codex system role → codex
|
||||
reasoning id) motivated this policy.
|
||||
- `openai-codex` (ChatGPT Plus/Pro, `scope_key oauth/openai-codex`, port
|
||||
1455 `/auth/callback`, FORM body, authorize+token host `auth.openai.com`,
|
||||
client `app_EMoam…`, scope `openid profile email offline_access`, the 3
|
||||
|
||||
Reference in New Issue
Block a user