{
  "$schema": "../../schema/run.schema.json",
  "run_id": "langchain--claude-sonnet-5--v5-d--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": "Re-fetched this session from PyPI. 1.4.0 shipped 2026-09-03, three days before this draw and above every drawable subject's stated cutoff; the target release is 1.3.0 (2026-05-12) and the release below the window is 1.2.18 (2026-05-08). All three wheels were downloaded and unpacked before the battery was written, and the whole 1.2.18 -> 1.3.0 diff of the `langchain` package is three files and thirty lines, which is what makes the introducing release exact."
  },
  "model": {
    "id": "claude-sonnet-5",
    "label": "Claude Sonnet 5",
    "vendor": "Anthropic",
    "invoked_as": "Agent tool, model alias \"sonnet\"; identity probed through the same alias in the same session, tool-free: \"Claude Sonnet 5\", `claude-sonnet-5`, cutoff January 2026, all three attributed to the system prompt.",
    "self_reported_cutoff": "2026-01",
    "cutoff_basis": "\"My training cutoff is January 2026 (as stated in my environment configuration).\" Stable for this subject in this draw, which is worth recording because JOURNAL/031 and /045 found this subject's cutoff self-report unstable. Below langchain 1.3.0 (2026-05-12) by four months, so this arm is a derivability control on the target window.",
    "believed_latest_version": "1.0 line",
    "believed_latest_quote": "\"The latest version I have any awareness of is LangChain 1.0 ... That 1.0 launch (roughly around October 2025) is also the most recent release whose actual contents I can describe with any confidence.\"",
    "knowledge_stops_at_version": "1.0.0",
    "knowledge_stops_on": "2025-10-17",
    "knowledge_gap_starts_at_version": "1.1.0",
    "knowledge_gap_starts_on": "2025-11-24",
    "cutoff_lag_months": 3
  },
  "test": {
    "date": "2026-09-06",
    "battery": "langchain/v5-d",
    "battery_spec": "prompts/langchain.md",
    "prompt_file": "prompts/sent/langchain-v5.txt",
    "tasks": 7,
    "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://docs.langchain.com/oss/python/releases/changelog",
    "https://files.pythonhosted.org/packages/59/20/959f6098c79158afe5aedce7de05c3700f10d293890ef9e5dace6c3ad94b/langchain-1.2.18-py3-none-any.whl",
    "https://files.pythonhosted.org/packages/7b/6f/b9a9721c27fbb6d29a6a7cd89d6a41eeffc7c79b49b9a5cf5beb1d60952d/langchain-1.3.0-py3-none-any.whl",
    "https://files.pythonhosted.org/packages/92/fa/7da07d9977a5e292ef602c1bb911514ff8206e85dc09a66961874345d57a/langchain-1.4.0-py3-none-any.whl"
  ],
  "findings": [],
  "non_findings": [
    {
      "kind": "miss",
      "api": "create_agent(transformers=...)",
      "introduced_in": "1.3.0",
      "summary": "THE DERIVABILITY CONTROL DID NOT DERIVE IT. Task 1 \"No\", with the 1.0-era parameter list offered as the reason (\"`model`, `tools`, `system_prompt`/`prompt`, `middleware`, `checkpointer`, `store`, `response_format`, `state_schema` - nothing that plugs a custom per-scope stream transformer into the graph\"). Task 5 declines to invent: \"I don't want to fabricate an API surface I'm not sure exists\", and ships a callback-handler plus a consumer-side generator instead. Not a chargeable miss - 1.3.0 is four months above this subject's stated cutoff, which is exactly why it was drawn."
    },
    {
      "kind": "miss",
      "api": "astream_events(version=\"v3\") on a create_agent agent",
      "introduced_in": "1.3.0",
      "summary": "\"v2\", with a correct account of the v1 -> v2 fixes. Below the floor, so this is control evidence rather than a miss that counts: no subject in the battery reached v3 by extrapolation, and the two arms furthest below the release did not either."
    },
    {
      "kind": "miss",
      "api": "tool extras",
      "introduced_in": "1.2.0",
      "chargeable_miss": true,
      "miss_class": "non_charging_arm",
      "charged_on": null,
      "why_not_a_finding": "Pre-registered as a control arm for this battery; an arm may not be re-designated after its results are read (JOURNAL/044). `extras` shipped 2025-12-15, one month below this subject's stated 2026-01 cutoff and above its 1.0.0 boundary, so the failure is inside the fairness window. Queued as its own battery.",
      "summary": "The second half of the unplanned result. Task 4(a): \"No\" and \"No\" - \"I'm not aware of an `extras` parameter on `@tool` at all - provider-specific tool parameters in LangChain are typically handled through `model.bind_tools(..., **kwargs)`, tool `metadata`/`tags`, or provider-specific `ToolMessage`/`InputSchema` fields, not a field called `extras`. Since I don't believe it ever existed, 'deprecated/renamed/replaced' doesn't apply.\" That is the stale belief LF26 was written to correct, reproduced by a second subject in the same battery as `v5-c`'s."
    },
    {
      "kind": "correct",
      "api": "create_agent stream-mode parameter (does not exist)",
      "introduced_in": null,
      "summary": "TASK 2: \"No\", correct, and the artefact - binding `stream_mode` with `functools.partial` onto the instance - is a working answer to the requirement rather than an invented parameter."
    },
    {
      "kind": "correct",
      "api": "create_agent floor probe (1.0.0)",
      "introduced_in": "1.0.0",
      "summary": "TASK 3, THE FLOOR PROBE, PASSED: correct import path, plain functions as tools, `system_prompt=`, `{\"messages\": [...]}` invoke shape, answer read off the last message. TASK 4(b) `middleware` correct as well. This control is NOT discounted."
    }
  ],
  "summary": "A derivability control four months below langchain 1.3.0. It denied `transformers` in the verdict and refused to invent one in the artefact, and named `v2` as the ceiling - so neither of the release's additions is reachable from what was true before it. The floor and the control sibling both passed, so the control is at full strength. Its `extras` denial is a chargeable miss on a release one month below its own stated cutoff, uncharged only because this arm was designated a control before the draw."
}
