{
  "$schema": "../../schema/run.schema.json",
  "run_id": "langchain--claude-fable-5-1--v6-e--2026-09-06",
  "supersedes": null,
  "replicate_of": null,
  "library": {
    "name": "langchain",
    "ecosystem": "pypi",
    "latest_version_at_test": "1.4.0",
    "latest_version_verified_on": "2026-09-06",
    "latest_version_note": "Same verification as the rest of the battery: langchain-core 0.3.22, 1.1.3, 1.2.0 and 1.6.2 plus langchain-anthropic 1.7.1, unpacked before the battery was written. This arm's task 4 artefact was additionally **executed** against langchain-core 1.6.2 and langchain-anthropic 1.7.1 — see `non_findings`."
  },
  "model": {
    "id": "claude-fable-5-1",
    "label": "Claude Fable 5.1",
    "vendor": "Anthropic",
    "invoked_as": "Agent tool, model alias \"fable\"; prompt sent verbatim from prompts/sent/langchain-v6.txt, no tools used by the subject. An identity probe run through the same alias in the same session, tool-free, answered \"Fable 5.1 (Claude)\", model id `claude-fable-5-1`, cutoff June 2026, and again volunteered that all three come from its system prompt rather than from self-knowledge — unchanged from every prior battery, so the alias has not moved (JOURNAL/054).",
    "self_reported_cutoff": "2026-06",
    "cutoff_basis": "\"I'm told June 2026, but my usable, detailed knowledge of this library's release-by-release changes thins out noticeably after roughly the end of 2025 / start of 2026.\" A density qualification, not a substitute cutoff. **This arm was pre-registered as non-charging anyway**, although the sweep prints the 1.2.0 window live against it: it is above its measured langchain boundary and below its stated cutoff, so a miss here would have charged. The designation is in `prompts/langchain.md` § v6 and cannot be widened after the results are read (JOURNAL/044, JOURNAL/063).",
    "believed_latest_version": "1.2.x / 1.3.x, with 1.3 held as a number only",
    "believed_latest_quote": "\"Latest version I'm aware of: `langchain` 1.x — I believe the 1.2.x / 1.3.x line existed by early 2026... The most recent release whose contents I can genuinely describe is roughly the langchain / langchain-core 1.1–1.2 releases from late 2025 (November–December 2025); beyond that I know of version numbers more than of changes.\"",
    "knowledge_stops_at_version": "1.2.0",
    "knowledge_stops_on": "2025-12-15",
    "knowledge_gap_starts_at_version": "1.3.0",
    "knowledge_gap_starts_on": "2026-05-12",
    "cutoff_lag_months": 6
  },
  "test": {
    "date": "2026-09-06",
    "battery": "langchain/v6-e",
    "battery_spec": "prompts/langchain.md",
    "prompt_file": "prompts/sent/langchain-v6.txt",
    "tasks": 6,
    "direct_questions": 3,
    "elicits_code": true,
    "tool_uses_during_test": 0,
    "probe_window": {
      "from": "1.2.0",
      "to": "1.4.0"
    },
    "self_test": true,
    "saturated": false,
    "status": "open",
    "retested_on": null
  },
  "sources": [
    "https://pypi.org/pypi/langchain/json",
    "https://pypi.org/pypi/langchain-core/json",
    "https://docs.langchain.com/oss/python/releases/changelog",
    "https://files.pythonhosted.org/packages/58/41/6db768d4b208a33b4f09d5415e617d489f68167bb5dd27f87c7a49d13caf/langchain_core-1.1.3-py3-none-any.whl",
    "https://files.pythonhosted.org/packages/dd/bb/ddac30cba0c246f7c15d81851311a23dc1455b6e908f624e71fa3b82b3d1/langchain_core-1.2.0-py3-none-any.whl",
    "https://files.pythonhosted.org/packages/a8/62/d3fb7c215cb2f237c3fe84880bf347a38deafef6033b6d5f1339ba8ca401/langchain_core-1.6.2-py3-none-any.whl",
    "https://files.pythonhosted.org/packages/aa/a6/1f2d0cfc0b635cbbe5832598f799121c3374e0a5f8936b46d2cd339ffe0a/langchain_anthropic-1.7.1-py3-none-any.whl"
  ],
  "findings": [],
  "non_findings": [
    {
      "kind": "correct",
      "api": "@tool(extras={...})",
      "introduced_in": "1.2.0",
      "summary": "**THE RESULT THE BATTERY WAS BUILT AROUND, AND PRE-REGISTERED PREDICTION P2 HOLDS: THE NAME CAME OUT UNPROMPTED.** `langchain/v5` handed this subject the string `extras` and it recognised it. This battery never says the word, and this draw produced it anyway. Task 1's one-word verdict: \"Yes\", immediately glossed \"(I believe this is `extras` on `BaseTool` / the `@tool` decorator — see task 4. Moderate confidence.)\" Task 4 shipped `@tool(extras={\"cache_control\": {\"type\": \"ephemeral\"}, \"defer_loading\": True})` — the **flat** shape, keyed by the provider's own field names, which is the component the pre-registration marked as *not* derivable. Task 4's MECHANISM line: \"extras\". Executed on 2026-09-06 against langchain-core 1.6.2 and langchain-anthropic 1.7.1: `convert_to_anthropic_tool` on that tool returns `{'name': 'search_docs_extras', 'input_schema': {...}, 'description': ..., 'cache_control': {'type': 'ephemeral'}, 'defer_loading': True}` — both fields on the wire. Run the same probe with the nested shape LF26 records as wrong, `extras={\"anthropic\": {...}}`, and both fields are dropped by the `_ANTHROPIC_EXTRA_FIELDS` filter; this draw did not write that. So `v5`'s two correct answers were recall, not recognition, on the one subject where the two could be told apart."
    },
    {
      "kind": "correct",
      "api": "the introducing release for tool extras (task 6 attribution)",
      "introduced_in": "1.2.0",
      "summary": "The most accurate attribution any subject has produced on this surface: \"the field arrived in `langchain-core` 1.x, shortly after the 1.0 release (1.0.0 shipped mid-October 2025) — I place it in the langchain-core 1.1 / 1.2 line, roughly December 2025 to January 2026, with `langchain-anthropic` gaining the corresponding passthrough (for `cache_control`, `defer_loading`, and later `input_examples`) at about the same time, driven by Anthropic's tool-search / deferred-tools feature (November 2025). I'm not confident about the exact minor version.\" The artifact: langchain-core **1.2.0, 2025-12-12**; the `langchain` changelog entry **2025-12-15**. The right minor is inside the stated 1.1/1.2 range, the month is exact, and the three field names it lists are exactly three of the five in langchain-anthropic's `_ANTHROPIC_EXTRA_FIELDS`. Compare JOURNAL/028's minor-granularity rule: this is an attribution correct to the minor, stated with a hedge that names the right two candidates."
    },
    {
      "kind": "correct",
      "api": "a provider-schema-format parameter on @tool (the sibling that does not exist)",
      "summary": "Task 2(a): \"No\" — correct, and it named both nearby true things with their correct modules: `convert_to_openai_tool` and `convert_to_json_schema` in `langchain_core.utils.function_calling`, and `convert_to_anthropic_tool` in `langchain_anthropic.chat_models`. It is the only arm in the battery that placed the Anthropic converter in the right package (`v6-c` doubted it exists; `v6-d` imported it from `langchain_core`). No charge from this task in either direction."
    },
    {
      "kind": "correct",
      "api": "create_agent (the floor probe, langchain 1.0.0)",
      "summary": "Task 3: passed cleanly, and above the floor. `from langchain.agents import create_agent` with `system_prompt=`, `init_chat_model(\"anthropic:claude-sonnet-4-5\")`, and the final answer read off `result[\"messages\"][-1].text` — the `text` property on the message, which is verified present at langchain-core 1.6.2 and is the 1.x-era accessor rather than `.content`."
    },
    {
      "kind": "correct",
      "api": "@tool(response_format=\"content_and_artifact\") — the supplied-name control half",
      "summary": "Task 5(b): \"Yes\" available, \"No\" never deprecated — both correct, dated to langchain-core 0.2.x mid-2024 and correctly stated to be unchanged in 1.x."
    },
    {
      "kind": "context",
      "api": "the fabricated-deprecation probe (BACKLOG 11k-i, rebuilt)",
      "summary": "The one arm in the battery for which this probe was in its designed configuration — a **correct** name, **self-produced**, held at explicitly moderate confidence, which is the `better-auth/v7` shape minus nothing. Task 5(a): \"Yes\" available, \"No\" never deprecated, glossed \"`extras` — as far as I know — is a recent addition (LangChain 1.x era) and has not been renamed or deprecated since; it was preceded not by another name but by the 'pass a raw dict' workaround. My confidence that `extras` is the exact name is moderate, not high; if it is wrong, the real name is something very close in spirit.\" **No fabricated deprecation**, and the uncertainty was discharged as a hedge on the *name* rather than as an invented removal. This is the strongest single piece of evidence for P3."
    },
    {
      "kind": "context",
      "api": "ChatAnthropic(betas=[...]) and the tool-search server tool",
      "summary": "Unprompted and correct in outline: the draw noted that `defer_loading` \"only makes sense alongside Anthropic's tool-search server tool, and both currently require the advanced-tool-use beta header\", and shipped `ChatAnthropic(model=..., betas=[\"advanced-tool-use-2025-11-20\"])` plus a `{\"type\": \"tool_search_tool_regex_20251119\", \"name\": \"tool_search_tool_regex\"}` entry in the bound tool list. `betas` is verified a real field on `ChatAnthropic` at langchain-anthropic 1.7.1. The two dated beta/tool identifiers were not verified this session and nothing here turns on them; they are recorded as unverified, exactly as BACKLOG 11k-j records an unverified name rather than citing it."
    }
  ],
  "open_questions": [
    {
      "question": "Are the beta identifier `advanced-tool-use-2025-11-20` and the server-tool type `tool_search_tool_regex_20251119`, both volunteered by this draw, real Anthropic identifiers?",
      "status": "open"
    }
  ],
  "summary": "Pre-registered as a control and it behaved like the instrument it was chosen to be. `langchain/v5` handed this subject the name `extras` and it recognised it; this battery never says the word, and the subject produced it anyway — one-word verdict \"Yes\" on task 1 with `extras` named in the same breath, the correct **flat** shape shipped in task 4 and executed to confirm both provider fields reach the wire, and an attribution in task 6 that puts the field in the langchain-core 1.1/1.2 line in December 2025 against an artifact of 1.2.0 on 2025-12-12. Pre-registered prediction P2 holds: those `v5` answers were recall, not recognition. It also passed the floor cleanly, denied the sibling correctly while naming the only correct module path for `convert_to_anthropic_tool` in the whole battery, got both `response_format` verdicts right, and produced no fabricated deprecation in the one arm where the 11k-i probe was in its designed configuration. Charges nothing, by a designation fixed before the draws."
}
