What Claude Sonnet 5 gets right about langchain — battery v6-d, tested 2026-09-06

Run langchain--claude-sonnet-5--v6-d--2026-09-06 · self-test: the subject is the operator

Summary

The blind twin of v6-c. It agreed with it on the substance — the same denial in the body of task 1, the same hand-built Anthropic dict in task 4, the same "no release has done so" on task 6, the same correct sibling denial and response_format verdicts, the same stated January 2026 cutoff — and disagreed with it on two instrument quantities. It passed the floor probe its twin failed, writing create_agent from langchain.agents where v6-c wrote create_react_agent, so the pair straddles the 1.0.0 boundary on one sent file in one session. And it opened with a bare "YES" that its own next line contradicts with "Task 1 answer: No" — a verdict/body split of a new kind, where the one-word rule in the preamble appears to have collected the one-word answer. Charges nothing; the failure is charged as F1 on v6-c.

SubjectClaude Sonnet 5 claude-sonnet-5, Anthropic
Invoked asAgent tool, model alias "sonnet"; prompt sent verbatim from prompts/sent/langchain-v6.txt, concurrently with and blind to `v6-c`, no tools used by the subject. The separate identity probe through this alias in the same session gave "Claude Sonnet 4.5" and a cutoff of "roughly early-to-mid 2025"; see `v6-c` for why that is recorded and not used.
Cutoff the model states2026-01
Newest langchain release it could place0.3.0 · 2024-09-13 (~16 month lag)
Oldest langchain release it could not place1.0.0 · 2025-10-17 (so this run brackets the subject’s boundary to 2024-09-13 – 2025-10-17)
In its own words"I'm aware LangChain moved to a 1.0 line... I do not have confident, detailed release-note-level knowledge of a specific 1.0.x stable version's exact contents. The most recent release whose contents I can actually describe with real confidence is somewhere in the 0.2.x / 0.3.x range (roughly mid-to-late 2024)."
Library at test timelangchain 1.4.0 (pypi), verified 2026-09-06
Batterylangchain/v6-d · 6 tasks, 3 direct questions · probe window 1.2.0 to 1.4.0
Tool uses during test0 (a run with any tool use is void — we measure training knowledge, not retrieval)
Tested2026-09-06
Findings0, of which 0 chargeable

Findings

None. Every task in this battery produced code that works on the current release, and every direct question was answered correctly. A run with nothing to charge is kept in the Index at full weight: it is the control that makes the other runs mean something, and it is the evidence for what this model does not need correcting on. What the subject actually said is recorded below.

What it got right, and near misses

Recorded so the run cannot be read as a hit list. A model that is right for an obsolete reason is recorded here, not as a finding.

KindAPINote
miss@tool(extras={...}) THE SAME DENIAL AS THE SIBLING IN THE BODY, WITH THE GRADED VERDICT CONTRADICTING IT — SEE THE SEPARATE context ENTRY. Task 1's body: "To my knowledge BaseTool / the @tool-produced StructuredTool doesn't expose a documented, first-class field (something like provider_kwargs or extra_fields) whose contents get merged into the provider's tool-definition JSON... So there's no first-class documented slot for cache_control/defer_loading/input_examples-style provider fields." Task 6: "To my knowledge, no release of langchain or langchain-core has given a tool a first-class, documented place of its own for provider-specific fields... I'm not aware of such a feature existing at all in the tool abstraction, so I won't invent a version number for it." MECHANISM line: "raw provider tool-schema dict (output of convert_to_anthropic_tool, hand-edited) passed to bind_tools() — not an attribute of the Tool/BaseTool object itself." (The -b-position arm of a born-duplicated pair charges nothing (JOURNAL/028). The same failure is charged as F1 on v6-c.) [chargeable miss — a replicate, a duplicated arm’s second draw or a below-floor control charges nothing; charged as a finding on langchain--claude-sonnet-5--v6-c--2026-09-06]
contexttask 1 verdict formatting (instrument observation) A NEW SHAPE OF VERDICT/BODY SPLIT, AND IT IS THE OPPOSITE WAY ROUND FROM JOURNAL/060's. This draw opened its whole response with the single word "YES" on its own line, then wrote: "Explanation follows below, but per the task rules that single word answers the direct yes/no question first," and then, under the heading Task 1 answer, wrote "No." The instrument designates the first single word as the graded verdict; the draw appears to have emitted it as a meta-response to the prompt's formatting rule rather than as an answer to task 1, and then answered task 1 the other way. Per JOURNAL/060 the designated verdict is never overwritten by the explanation and the explanation is never erased by the verdict, so both readings are recorded and neither moves the other; this arm publishes no single verdict for task 1. Nothing turns on it — this is the non-charging twin, and its body, its artefact and its task 6 answer all agree with v6-c's denial. It is recorded because it is an instrument property a future battery reusing the one-word-first shape needs to know about: a rule stated in the preamble can itself attract the one-word answer.
missconvert_to_anthropic_tool import path Task 4's code reads from langchain_core.utils.function_calling import convert_to_anthropic_tool. That function exists — but in langchain_anthropic.chat_models, not in langchain_core, where only convert_to_openai_function, convert_to_openai_tool and convert_to_json_schema are defined (verified at langchain-core 1.6.2 and langchain-anthropic 1.7.1). As written the artefact raises ImportError on line 2. Not charged, and not chargeable: this arm charges nothing, and the misplacement is not a stale prior about a release — the function has never lived in langchain_core. Recorded because the -c twin hedged in the opposite direction on the same name, doubting a converter that exists, and the pair therefore got the same fact wrong in two different ways in one battery.
correcta provider-schema-format parameter on @tool (the sibling that does not exist) Task 2(a): "No" — correct, with the right mechanism: "The @tool decorator itself is provider-agnostic... To actually get a provider-specific rendering you rely on the chat model's bind_tools(), which internally calls a provider-specific converter." No charge from this task in either direction.
correctcreate_agent (the floor probe, langchain 1.0.0) Task 3: passed, and it is the half of the Sonnet 5 pair that did. from langchain.agents import create_agent, correctly named as "LangChain's own newer high-level entry point, built on top of LangGraph under the hood", with langgraph.prebuilt.create_react_agent correctly placed as the older LangGraph-native equivalent and initialize_agent/AgentExecutor as legacy. Two blemishes short of a clean pass: it passed prompt= where 1.0's parameter is system_prompt=, and it flagged its own uncertainty — "I have solid recall of langgraph.prebuilt.create_react_agent as the workhorse... the unification of a create_agent directly under langchain.agents is something I recall as a 2025-era change; I'm less certain of its exact final signature." The blind twins of this pair therefore disagree on the floor, which is the sharpest instrument reading in the battery: same subject, same sent file, same session, one arm at 1.0 and one at 0.3.
correct@tool(response_format="content_and_artifact") — the supplied-name control half Task 5(b): "yes" available, "no" never deprecated — both correct, with an accurate description of what the parameter does.
contextthe fabricated-deprecation probe (BACKLOG 11k-i, rebuilt) Task 5(a): "no" / "no", on the reasoning that the mechanism it named was never a formal API surface — "you can't deprecate a dict-splice." No fabricated deprecation. Consistent with P3. Note the (a)(i) "no" is not a claim of unavailability: the draw explicitly reads the question as being about a named versioned API and answers that no such name exists.

Sources

Battery specification: prompts/langchain.md in the studio repo. Every finding above also carries its own citation.