These entries are point-in-time observations, not official contracts. Keep each entry's documented expectation separate from its observed result; current contracts are linked from api_reference.md. Do not change a test date or status unless the behavior was actually exercised again.
Test environment live-2026-08-23-a was a personal token on macOS arm64
(Darwin 25.6.0), Python 3.9.6, OpenAI 2.48.0, Anthropic 0.125.0,
langchain-openai 0.3.35, httpx 0.28.1, direct HTTP where noted, and UTC report
timestamps. No private input or generated content was retained.
Test environment live-2026-09-12-a used the account owner's test token,
macOS arm64, Python 3.9.6, and direct standard-library HTTP through the smoke
runner. The date is Asia/Shanghai; sanitized reports use UTC timestamps.
Requests were serial with no POST retries and a cumulative 50-credit ceiling.
Only synthetic text and PNG inputs were used. Prompts, generated content,
reasoning text, and credentials were not retained in reports.
Test environment live-2026-09-12-b checked the PR #3 recipes with the same
macOS/Python environment, OpenAI 2.48.0, Anthropic 0.125.0,
langchain-openai 0.3.35, and httpx 0.28.1. Requests used synthetic text,
60-second timeouts, no retries, and the same cumulative 50-credit ceiling.
Only response structure, field-preservation checks, and usage were retained.
Test environment live-2026-09-12-c used the account owner's personal tokens
(two distinct keys), Windows x64, Node.js 24.14.1 fetch direct HTTP, and
Asia/Shanghai local dates 2026-09-12 through 2026-09-14, during an
owner-authorized interactive integration session rather than the smoke runner.
Reliability runs were serial with roughly four-second spacing; unspaced bursts
are called out per entry. Repeated attempts in those runs were deliberate
characterization samples, not uncertainty retries, and credit consumption was
not metered against the runner's ceiling. Only synthetic arithmetic and
vision-fixture inputs were used. Prompts, generated content, reasoning text,
and credentials were not retained.
- Tested at: 2026-08-23; reproduced 2026-09-12
- Environment: live-2026-08-23-a, direct HTTP; live-2026-09-12-b, HTTPX
- Protocol and endpoint: OpenAI-compatible
GET /models - Documented expectation: Missing or invalid authentication returns
401. - Observed behavior: An obviously invalid bearer returned
200JSON with an empty model list. - Reproduction conditions: Send
GET /modelswith a non-secret invalid bearer value. - Impact: An empty list can be mistaken for authenticated discovery.
- Recommended fallback: Treat discovery as model visibility, not authentication proof; check authenticated access with a protected documented endpoint.
- Status: active
- Tested at: 2026-08-23
- Environment: live-2026-08-23-a, direct HTTP
- Protocol and endpoint: OpenAI-compatible
GET /models - Documented expectation: Missing authentication returns
401. - Observed behavior: The response was
500 application/jsonwith an HTML 500 page stored in the JSONerrorstring. - Reproduction conditions: Send
GET /modelswithout an Authorization header. - Impact: Status-only or HTML-only handling can misclassify the failure.
- Recommended fallback: Preserve status, content type, request ID, and a bounded redacted body sample.
- Status: active
- Tested at: 2026-08-23
- Environment: live-2026-08-23-a, direct HTTP
- Protocol and endpoint: OpenAI-compatible
GET /models - Documented expectation: Runtime discovery is interpreted with the current model page.
- Observed behavior: The seven-model list included
ecnu-image-pro, which was absent from the model page. - Reproduction conditions: Compare a valid-token model list with the current official model page.
- Impact: Visibility alone may lead callers to select an undocumented ID.
- Recommended fallback: Classify it as visible-but-undocumented and do not select it without an authorized endpoint probe.
- Status: active
- Tested at: 2026-08-21
- Environment: Personal token; exact OS, Python, SDK, and transport versions were not recorded.
- Protocol and endpoint: OpenAI-compatible
POST /images/generations - Documented expectation:
ecnu-image-prohas no documented generation contract. - Observed behavior: One probe returned plain-text
500 Internal Server Error. - Reproduction conditions: Submit one minimal request using the runtime-only model ID.
- Impact: A visible ID was not verifiably usable and the POST may have cost implications.
- Recommended fallback: Use documented
ecnu-image; do not retry or routinely probe undocumented image models. - Status: not-retested
- Tested at: 2026-08-23
- Environment: live-2026-08-23-a, direct HTTP
- Protocol and endpoint: OpenAI-compatible
POST /audio/speech - Documented expectation: Invalid voice input returns
400JSON witherror,request_id, anddetails. - Observed behavior: An invalid voice returned
500 text/plainwith a bounded internal-error string. - Reproduction conditions: Submit the short text
你好。with an obviously invalid voice ID. - Impact: Clients cannot rely on the documented JSON voice list.
- Recommended fallback: Tolerate non-JSON errors and retain only a bounded redacted sample.
- Status: active
- Tested at: 2026-08-23
- Environment: live-2026-08-23-a, direct HTTP
- Protocol and endpoint: OpenAI-compatible
POST /audio/speech - Documented expectation: Successful audio includes
Content-Disposition; PCM also includes rate, channel, and bit-depth headers. - Observed behavior: Short
xiayuPCM and MP3 returned non-empty audio-typed bodies but noContent-Disposition; PCM also omitted all three format headers. - Reproduction conditions: Request
你好。withxiayuas PCM and MP3 in separate sequential calls. - Impact: Callers cannot derive filenames or raw PCM configuration from the response.
- Recommended fallback: Validate MIME and bytes, choose a local filename, and configure PCM explicitly when headers are absent.
- Status: active
- Tested at: 2026-08-23
- Environment: live-2026-08-23-a, direct HTTP with Bearer auth
- Protocol and endpoint: Anthropic-compatible
POST /v1/messages - Documented expectation: The proxy strips
[1m], routes toecnu-max, and advertises 1M-character context. - Observed behavior:
ecnu-max[1m]returned metadata-related401; the immediate plainecnu-maxcontrol returned200. - Reproduction conditions: Compare otherwise identical short requests for suffixed and plain model names.
- Impact: Model access can work while the long-context compatibility signal fails.
- Recommended fallback: Only after the same credential has passed a plain
ecnu-maxcontrol, fall back once when the suffix returns this exact metadata-related401; disclose the loss of the 1M signal and require the caller to accept it. - Status: active
- Tested at: 2026-08-23
- Environment: live-2026-08-23-a, direct HTTP with Bearer auth
- Protocol and endpoint: Anthropic-compatible
POST /v1/messages - Documented expectation:
output_config.effort: nonedisables thinking. - Observed behavior: The request returned structured
422; the accepted-value message listedlow,medium,high,xhigh, andmaxonly. - Reproduction conditions: Send a short
ecnu-maxrequest with effortnone. - Impact: Clients following the documented disable value fail validation.
- Recommended fallback: Omit
output_configwhen thinking is not required; do not translatenoneinto a supported tier silently. - Status: active
- Tested at: 2026-08-23
- Environment: live-2026-08-23-a, direct HTTP
- Protocol and endpoint: OpenAI-compatible
POST /embeddings - Documented expectation:
inputis a string or string array; invalid request shapes use structured validation errors. - Observed behavior: An empty string array returned plain-text
500 Internal Server Error. - Reproduction conditions: Send
input: []withecnu-embedding-small. - Impact: A deterministic client error appears as a server failure.
- Recommended fallback: Reject empty arrays locally and do not retry the unchanged POST.
- Status: active
- Tested at: 2026-08-23
- Environment: live-2026-08-23-a, direct HTTP
- Protocol and endpoint: OpenAI-compatible
POST /embeddings - Documented expectation: Input is limited to 8192 characters.
- Observed behavior: Both 8192 and 8193 ASCII characters returned
200with one 1024-value vector. - Reproduction conditions: Send separate scalar inputs of exactly 8192 and 8193 characters.
- Impact: The documented boundary was not enforced by this deployment.
- Recommended fallback: Continue enforcing 8192 characters in clients; do not promote one accepted over-limit request into a new limit.
- Status: active
- Tested at: 2026-08-23
- Environment: live-2026-08-23-a, direct HTTP
- Protocol and endpoint: Cohere-compatible
POST /rerank - Documented expectation: Each document is limited to 8192 characters.
- Observed behavior: A single 8193-character document returned
200with a scored result. - Reproduction conditions: Rerank one 8193-character document against a short query.
- Impact: The documented boundary was not enforced by this deployment.
- Recommended fallback: Keep the documented 8192-character client guard.
- Status: active
- Tested at: 2026-08-23
- Environment: live-2026-08-23-a, direct HTTP
- Protocol and endpoint: OpenAI-compatible
POST /chat/completions - Documented expectation: Direct
reasoning_effortacceptslow,high, ormax; invalid fields normally produce structured validation errors. - Observed behavior: An invalid value returned plain-text
500 Internal Server Error. - Reproduction conditions: Enable thinking for
ecnu-maxand send an obviously invalid effort value. - Impact: Callers cannot inspect a field path or accepted values.
- Recommended fallback: Validate the three documented values locally and never retry the same invalid request.
- Status: active
- Tested at: 2026-08-23
- Environment: live-2026-08-23-a, direct HTTP
- Protocol and endpoint: OpenAI-compatible
POST /chat/completions - Documented expectation:
temperatureis between 0 and 1. - Observed behavior: A short
ecnu-plusrequest withtemperature: 2returned200and a normal completion shape. - Reproduction conditions: Send the otherwise minimal deterministic Chat request with temperature 2.
- Impact: Current server acceptance can hide invalid application configuration.
- Recommended fallback: Enforce the documented range client-side.
- Status: active
- Tested at: 2026-08-23
- Environment: live-2026-08-23-a, direct HTTP
- Protocol and endpoint: OpenAI-compatible
POST /chat/completions - Documented expectation:
401indicates credential failure; unsupported request values should not be confused with invalid bearer auth. - Observed behavior: An obviously unsupported model returned
401JSON indicating third-party metadata retrieval failure while the same bearer passed/modelsand primary-model calls. - Reproduction conditions: Use a valid bearer with a synthetic unsupported model name.
- Impact: A model-resolution failure can trigger incorrect credential rotation or a global auth stop.
- Recommended fallback: Verify auth with a documented model; treat this 401 as case-specific after a valid control succeeds.
- Status: active
Current-contract note (documentation checked 2026-10-19, not a retest): the
2026-10-01 model update
moved ecnu-max to DeepSeek-V4.1-Flash-1017 with native image understanding.
The 2026-09-18 text-only interval is historical, and the resolved status below
still describes only the September 12 fixture.
- Tested at: 2026-09-12; previous failure on 2026-08-23
- Environment: live-2026-09-12-a, direct HTTP; historical live-2026-08-23-a
- Protocol and endpoint: OpenAI-compatible
POST /chat/completions - Documented expectation: Current model and Chat Completions pages support image input on both primary models. The August contract did not support it on
ecnu-max. - Observed behavior: Both models returned
200, ended normally, and recognized a synthetic red square. The earlier max plain-text500is historical. A plus probe limited to 32 output tokens was truncated; a separate 128-token probe completed and recognized the image. - Reproduction conditions: Send the same tiny PNG data URL to each model with
max_tokens: 128; require a normal completion and correct visible content. - Impact: The old max failure no longer reproduces for this fixture. Too little output budget can make a vision check inconclusive or misleading.
- Recommended fallback: Budget complete output and validate image-grounded behavior; this simple fixture does not establish OCR or complex visual reasoning quality.
- Status: resolved
- Tested at: 2026-09-12
- Environment: live-2026-09-12-a, direct HTTP
- Protocol and endpoint: OpenAI-compatible
POST /chat/completions - Documented expectation: Enabled thinking exposes
reasoning_content; thinking tool history retains that field. Max acceptslow,high, andmaxeffort. - Observed behavior: All three effort values returned
200with reported reasoning-token usage, but those replies and a tool-call reply lackedreasoning_content. A later complex max tool reply included a separatereasoningkey; its content was not inspected or retained. Preserving the complete actual message allowed the tool continuation and a later user turn to succeed. A separate max coding fixture did returnreasoning_content, so field exposure varied across replies. - Reproduction conditions: Enable thinking, submit a short task with each documented effort, then run a bounded echo tool exchange and a later user turn with the original messages preserved. Record field presence and usage counters only.
- Impact: Requiring one field name can block a working tool loop. Its absence does not prove thinking was disabled; this run does not establish the tiers' relative quality or latency.
- Recommended fallback: Preserve the complete returned assistant message in memory; retain
reasoning_contentwhen supplied and never fabricate it when absent. Redact bothreasoning_contentandreasoningfrom diagnostics. Validate SDK and framework continuation separately. - Status: active
- Tested at: 2026-09-12
- Environment: live-2026-09-12-a, direct HTTP
- Protocol and endpoint: OpenAI-compatible
POST /chat/completions - Documented expectation: A valid short request produces a completion; no latency guarantee was assumed.
- Observed behavior: The initial max basic request exceeded its 45-second client timeout with no HTTP response. It was not retried. Subsequent independent max fixtures completed successfully.
- Reproduction conditions: One minimal non-thinking max request with a 45-second timeout; the timeout itself has not been reproduced.
- Impact: Completion and debit for that request remain unknown. A single timeout does not establish a service-wide outage.
- Recommended fallback: Keep the attempt inconclusive, inspect available status or request records, and avoid blindly repeating a possibly billed POST.
- Status: inconclusive
- Tested at: 2026-08-23
- Environment: live-2026-08-23-a, direct HTTP
- Protocol and endpoint: OpenAI-compatible
POST /chat/completions - Documented expectation: A thinking-mode assistant tool call must retain
reasoning_contentin subsequent turns. - Observed behavior: The correct preserved-reasoning flow returned
200, and a single negative continuation with the field omitted also returned200. - Reproduction conditions: Reuse one deterministic
echotool call, then submit preserved and omitted variants once each. - Impact: Current permissive behavior can hide a client bug that may fail on another model or deployment.
- Recommended fallback: Continue preserving the field ephemerally; never rely on the observed permissiveness.
- Status: active
- Tested at: 2026-08-23
- Environment: live-2026-08-23-a, direct HTTP plus bounded safe downloader
- Protocol and endpoint: OpenAI-compatible
POST /images/generations - Documented expectation: A documented
ecnu-imageURL result is available for transfer for 24 hours. - Observed behavior: The single generation returned
200with a URL, but its host did not resolve exclusively to public IP addresses, so the low-risk downloader refused access and no image bytes were retained. - Reproduction conditions: Generate one 512x512 URL result and apply public-HTTPS DNS and redirect checks before download.
- Impact: Content type, byte hash, and pixel dimensions could not be verified without relaxing the safety policy or paying for another generation.
- Recommended fallback: Treat the generation as inconclusive; transfer through an approved network path and never blindly retry the POST.
- Status: inconclusive
Across the 2026-08-23 runs and targeted reruns, the probes successfully checked
valid model discovery; direct and OpenAI-SDK Chat; bounded SSE with empty chunks
and [DONE]; ecnu-max thinking low;
deterministic tools and the correct two-turn thinking-tool splice; Responses
with effort none and low; scalar, array, SDK, and LangChain embeddings;
integer-token rejection; standard rerank behavior; ecnu-plus vision; JSON
Schema structure; Anthropic direct names, alias requests, valid effort, plain-max
fallback, and SDK use; and image stripping in the Responses and Anthropic
compatibility layers. Successful Chat responses may expose backend model labels,
while Anthropic alias responses may echo the requested alias; neither label alone
proves or disproves internal routing.
Environment live-2026-09-12-a made 30 requests: 24 passed their checks, five differed
from expectations, and one timed out. The five mismatches were the four
canonical reasoning-field checks described above and the truncated plus image
probe. The latter was followed by a normally completed image check with more
output room; the timeout was not retried.
Successful coverage included:
- Both primary models recognized the actual synthetic image and returned valid
json_schemaandjson_objectoutput. - Max image input also worked through the Responses and Anthropic endpoints for this fixture. This remains observed compatibility, not a documented general image-input contract for those protocols.
- The exact system prompt in
agent_development.mdcompleted an echo tool exchange and a later user turn on both models. Plus retained canonical reasoning content; max retained all actual returned fields. A separate max non-thinking tool exchange also passed. - Both models extracted the requested fields while ignoring conflicting instructions inside one synthetic untrusted source. One success is not a prompt-injection resistance guarantee.
- Both models used the exact coding prompt template plus a supplied small Python fixture to propose a fix. A restricted in-memory check verified empty, ordinary, zero, and empty-string inputs. Plus used thinking off; max used low. This is a small prompt check, not a repository-level coding benchmark.
- A constrained arithmetic task with max effort returned the expected answer and reported reasoning-token usage; visible reasoning was not a pass criterion.
The cumulative reserved estimate was 37.74 credits, within the 50-credit ceiling. Usage-based estimated consumption was 3.49058 credits, including the runner's reservation fallback for the timeout; this is not a verified debit. No live SDK, streaming, long-context, media-generation, embedding, or rerank revalidation was performed in this update. Older observations retain their original dates.
Response model metadata included qwen3.6-plus, deepseek-v4-flash, and
deepseek-flash, differing from the current model page's labels. These values
alone do not establish the deployed model identity or contradict its documented
routing; do not silently replace the documented model table with them.
Environment live-2026-09-12-b made eight requests: six POSTs and two GETs.
Seven passed their checks; the invalid-bearer GET reproduced the 200 empty-list
deviation above. Every request had exactly one transport attempt.
- The exact Python Chat and Anthropic SDK snippets returned normally completed text.
- The LangChain snippet sent both original strings, omitted
dimensions, and included the SDK's automaticencoding_format="base64". The service accepted this request and returned two 1024-value vectors. - Max thinking at
lowreturned an echo tool call withreasoning_content. The SDK recipe's dictionary equaled the original response message. The tool result and later user turn both preserved that original message on the wire and returned the expected value with normal completion.
This batch's usage-based estimate was 0.43764 credits under the current pricing formula. The cumulative reservation, including earlier checks, was 44.29 credits; estimated cumulative consumption was 3.92822 credits. Neither is verified account debit. This targeted run does not revalidate other historical cases, other SDK versions, streaming, or arbitrary framework adapters.
- Tested at: 2026-09-12
- Environment: live-2026-09-12-c, Node.js
fetchdirect HTTP - Protocol and endpoint: OpenAI-compatible
POST /chat/completions - Documented expectation: The alias
ecnu-reasonerequalsecnu-maxwiththinking: {"type": "enabled"}; a client must send thethinkingparameter to activate thinking onecnu-maxitself. - Observed behavior: A bare
ecnu-reasonerrequest with nothinkingfield returned200and a non-zerousage.completion_tokens_details.reasoning_tokenscount (range 18-198 across samples). A matching bareecnu-maxcontrol returnedreasoning_tokens: 0. The alias activates thinking server-side without any client-sidethinkingparameter. - Reproduction conditions: Send two otherwise identical minimal requests, one with
model: "ecnu-reasoner"and one withmodel: "ecnu-max", both omittingthinking; compareusage.completion_tokens_details.reasoning_tokens. - Impact: A client that relies on sending
thinkingto detect whether reasoning is active will misclassifyecnu-reasonerresponses. The absence ofmessage.reasoning_contentis not a reliable thinking indicator either (see the prior "Max thinking response fields" entry). - Recommended fallback: Detect active thinking via
usage.completion_tokens_details.reasoning_tokens, not viamessage.reasoning_contentor the presence of a client-sidethinkingparameter. Treatecnu-reasoneras always-thinking for routing decisions. - Status: active
Current-contract note (2026-10-02): The thinking page
still requires explicit thinking on ecnu-max. The observation below has
not been rerun against the current deployment; use the documented switch for
new integrations. Its original test date and status are retained.
- Tested at: 2026-09-12
- Environment: live-2026-09-12-c, Node.js
fetchdirect HTTP - Protocol and endpoint: OpenAI-compatible
POST /chat/completions - Documented expectation: The thinking page states that
reasoning_effortonly takes effect when thinking mode is enabled viathinking: {"type": "enabled"}; without it,reasoning_effortis ignored. - Observed behavior:
ecnu-maxrequests withreasoning_effortset but nothinkingfield returned200with non-zerousage.completion_tokens_details.reasoning_tokens. Dose-response was clean acrosslow(median ~117),high(~155), andmax(~343). Addingthinking: {"type": "enabled"}alongsidereasoning_effortdid not increase the token count beyond the same-effort baseline. - Reproduction conditions: Send
ecnu-maxrequests withreasoning_effortset tolow,high, andmaxbut omitthinking; recordusage.completion_tokens_details.reasoning_tokensfor each. - Impact: Clients following the documented precondition may unnecessarily send a
thinkingparameter, or may wrongly conclude thinking is off when onlyreasoning_effortis sent. The documented gating did not match the sampled deployment. - Recommended fallback: Send the documented explicit
thinkingswitch forecnu-max; do not rely on this dated effort-only behavior. For a client that cannot send the switch, the documentedecnu-reasoneralias defaults to enabled thinking. - Status: active
Current-contract note (2026-10-02): Current documented tiers are
low / high / max for ecnu-max and low / medium / xhigh for
ecnu-plus. The September observation below covers max only and has not
been rerun; it does not make medium invalid on plus or xhigh a supported
max default. Its original test date and status are retained.
- Tested at: 2026-09-12
- Environment: live-2026-09-12-c, Node.js
fetchdirect HTTP - Protocol and endpoint: OpenAI-compatible
POST /chat/completions - Documented expectation: The thinking page lists
low,high, andmaxas the three supportedreasoning_effortvalues forecnu-max. - Observed behavior:
minimalreturned HTTP 500 on 5 of 7 attempts;mediumreturned HTTP 500 on 7 of 9 attempts. Both occasionally succeeded but cannot be relied on.xhigh, although absent from the documentation, returned200on all attempts with a reasoning-token median (~178) betweenhighandmax.low,high, andmaxwere stable across all samples. - Reproduction conditions: Send
ecnu-maxrequests with each ofminimal,medium,xhigh,low,high, andmaxasreasoning_effort; use serial requests with roughly four-second spacing to separate this check from the rapid-request error observation below. - Impact: A client that sends
minimalormedium(for example, via an SDK default or a UI selector that does not filter values) will hit intermittent 500 errors.xhighis a usable but undocumented tier. - Recommended fallback: Use each model's current documented tiers, not the extra tiers accepted by this historical deployment. Reject an unsupported value locally rather than silently remapping it to a different effort.
- Status: active
- Tested at: 2026-09-12
- Environment: live-2026-09-12-c, Node.js
fetchdirect HTTP - Protocol and endpoint: OpenAI-compatible
POST /chat/completionsandGET /models - Documented expectation:
401indicates an authentication failure; the official guidance only advises avoiding parallel calls. - Observed behavior: Rapid sequential requests (under roughly one second apart) to either endpoint returned
401with{"detail": "获取第三方元数据失败"}even though the same bearer passed spaced requests. Spacing requests by roughly four seconds eliminated the failures. The error shape is identical to the unsupported-model case above, making them indistinguishable without a working control. - Reproduction conditions: Send the same valid bearer to the same documented model in a tight loop (sub-second spacing); then repeat with four-second spacing.
- Impact: A client may mistake this spacing-correlated error for a credential failure and trigger unnecessary key rotation. These observations do not establish a server-side rate-limit cause or whether rejected requests were billed.
- Recommended fallback: Inspect the complete error and chosen model first. If the request was explicitly rejected and a live check is authorized, one spaced control request can test whether the error persists. Do not automatically repeat a possibly accepted POST after a timeout or dropped connection, or rotate keys from this error shape alone.
- Status: active
Current-contract note (2026-10-19): This is historical coverage, not a current capability test. The model page now documents image understanding on both primary models; the max-vision result below predates the 2026-09-18 text-only interval and the 2026-10-01 multimodal backend update. Use the current per-model thinking tiers. No live revalidation was performed for this note.
Environment live-2026-09-12-c made characterization requests across two
personal tokens on Windows x64, Node.js 24.14.1, over Asia/Shanghai dates
2026-09-12 through 2026-09-14. Requests were serial with roughly four-second
spacing except where unspaced bursts are noted. No credit metering was applied;
this was an owner-authorized interactive session, not a smoke-runner batch.
Successful coverage included:
- Both
ecnu-maxandecnu-reasonerreturned200forreasoning_effortvalueslow,high,xhigh, andmax, with a clean dose-response curve (median reasoning tokens: low ~117, high ~155, xhigh ~178, max ~343). ecnu-reasonerbare requests returned non-zero reasoning tokens;ecnu-maxbare requests returned zero. The alias activates thinking server-side.ecnu-maxwithreasoning_effortbut nothinkingparameter activated thinking, contradicting the documented gating.minimalandmediumefforts returned intermittent HTTP 500 and are unreliable;xhighis undocumented but stable.- Both models correctly recognized a synthetic 96x96 red-circle PNG and returned the expected "circle red" description, with and without thinking.
- Function calling with thinking coexisted normally on both models; a
two-turn tool exchange without preserved
reasoning_contentreturned200. - Rapid sub-second request bursts returned
401{"detail": "获取第三方元数据失败"}; four-second spacing eliminated it.
No SDK, streaming, long-context, embedding, rerank, TTS, or image-generation revalidation was performed in this run. The dose-response medians are characterization samples, not quality benchmarks. Older observations retain their original dates and statuses.
- Record the date, non-secret environment, protocol, endpoint, expectation, observed structure, reproduction conditions, impact, and fallback.
- Use only
active,resolved,inconclusive, ornot-retestedas status. - Remove keys, prompts, generated content, one-time URLs, and reasoning text.
- Do not mark an item resolved from an unrelated success or an unexecuted case.
- Treat an ECNU release, model rollout, endpoint change, quota change, or announced fix as a revalidation trigger, not as resolution evidence.
- Recheck the current contract and pricing, then rerun only the affected cases with the current runner before changing dates, expectations, or statuses.
- Require scoped account-owner authorization for billable revalidation; never schedule TTS or image-generation probes automatically.