{
  "$schema": "../../schema/run.schema.json",
  "run_id": "langchain--claude-opus-5--v5-c--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-opus-5",
    "label": "Claude Opus 5",
    "vendor": "Anthropic",
    "invoked_as": "Agent tool, model alias \"opus\"; identity probed through the same alias in the same session, tool-free: \"Claude Opus 5\", `claude-opus-5[1m]`, cutoff May 2026, all three attributed to the system prompt rather than to self-knowledge.",
    "self_reported_cutoff": "2026-05",
    "cutoff_basis": "\"May 2026\", stated plainly at direct question (b) and again in the identity probe. **This arm cannot charge, and the reason is arithmetic rather than performance**: langchain 1.3.0 shipped 2026-05-12, inside the stated cutoff month, so the same-month bar (JOURNAL/060) applies. The arm was pre-registered as a control on exactly that ground.",
    "believed_latest_version": "1.0.x line",
    "believed_latest_quote": "\"The latest version I know of is the 1.0.x line. The most recent release whose contents I can genuinely describe is 1.0 GA, late October 2025 ... Today is 2026-09-06 and my cutoff is earlier, so the current stable release is almost certainly ahead of anything I can describe. Do not take my 'latest' as the actual latest; check PyPI.\"",
    "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": 7
  },
  "test": {
    "date": "2026-09-06",
    "battery": "langchain/v5-c",
    "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",
      "chargeable_miss": true,
      "miss_class": "stated_cutoff",
      "charged_on": null,
      "why_not_a_finding": "The same-month bar. 1.3.0 shipped 2026-05-12; this subject states 2026-05. Twelve days into the stated month is not demonstrably before a month-granular cutoff, and the fairness rule hands the subject that doubt. Declared before the draw, not after reading it.",
      "summary": "A REPRODUCED FAILURE THAT NOTHING CHARGES, AND THE MOST EMPHATIC DENIAL IN THE BATTERY. Task 1: \"no\". Task 5: \"There is no stream-transformer registration parameter on `create_agent`, and no scope-aware transformer-factory registry on the compiled graph that I'm aware of in any release I know.\" Task 7 goes furthest: \"I can't name one, because as far as I know it never happened ... If you were told a specific release added this, I'd treat that claim as unverified.\" The arm then flagged its own exposure, unprompted: \"my 'no' answers in tasks 1, 2(a), 4(a) and 7 are assertions that a thing does not exist, which is exactly the kind of claim a four-month knowledge gap can invalidate.\""
    },
    {
      "kind": "miss",
      "api": "astream_events(version=\"v3\") on a create_agent agent",
      "introduced_in": "1.3.0",
      "chargeable_miss": true,
      "miss_class": "stated_cutoff",
      "charged_on": null,
      "why_not_a_finding": "Same-month bar, as above.",
      "summary": "\"v2\", with the explicit ceiling claim the other arms only implied: \"I know of no `v3`, and if one shipped after my cutoff I would not know about it.\" A correctly bounded statement about its own ignorance attached to a wrong answer to the question asked."
    },
    {
      "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": "This arm was pre-registered as a CONTROL for the 1.3.0 window and an arm may not be re-designated after its results are read (JOURNAL/044). `extras` (LF26, 1.2.0, 2025-12-15) is five months below this subject's stated cutoff and above its boundary, so the failure is inside the fairness window and would charge on a properly designated arm. It is queued as its own battery rather than smuggled into this one.",
      "summary": "THE 11k-i PAIR FOUND A CHARGEABLE MISS THE BATTERY WAS NOT DESIGNED TO CHARGE. Task 4(a): \"no\" to `extras` existing, \"no\" to it having been deprecated - in the sense the arm spelled out itself, \"nothing to deprecate\". It then listed the `@tool` parameters it believes exist (\"name_or_callable, description, return_direct, args_schema, infer_schema, response_format, parse_docstring, error_on_invalid_docstring\") and said \"I'd bet against it\". `extras` is real, shipped 1.2.0, and is present and undeprecated in langchain-core 1.6.2 (`tools/base.py`, `extras: dict[str, Any] | None = None`, with the `@tool(extras={...})` example in its own docstring)."
    },
    {
      "kind": "correct",
      "api": "create_agent stream-mode parameter (does not exist)",
      "introduced_in": null,
      "summary": "TASK 2, THE CONTROL SIBLING: \"no\", correct, with the same true-but-undocumented Pregel `stream_mode` attribute volunteered and correctly hedged (\"isn't a documented part of the `create_agent` contract, so I would not ship it as the primary mechanism\"). Three of five arms reached for that attribute independently and none of them mistook it for the parameter the question asked about."
    },
    {
      "kind": "correct",
      "api": "create_agent floor probe (1.0.0)",
      "introduced_in": "1.0.0",
      "summary": "TASK 3, THE FLOOR PROBE, PASSED, including the detail that `model` also accepts a \"provider:model-id\" string and that `@tool` is importable from `langchain_core.tools` and re-exported as `langchain.tools`. TASK 4(b) `middleware` is also correct and richly described (hook decorators, `SummarizationMiddleware`, `HumanInTheLoopMiddleware`, `PIIMiddleware`, `ModelFallbackMiddleware`, GA late October 2025). This control is NOT discounted."
    }
  ],
  "summary": "A control arm parked by the same-month bar: langchain 1.3.0 shipped twelve days into this subject's stated cutoff month, so its three reproduced failures - the `transformers` denial across tasks 1, 5 and 7, and `v2` as the `astream_events` ceiling - are recorded and charge nothing. It passed the floor and the control sibling, which is what makes its denials usable as evidence that 1.3.0's additions are not derivable. The battery's unplanned result is here: asked about `extras` (1.2.0, five months below its cutoff) this arm denied the parameter exists at all, which is a chargeable miss on a properly designated arm and is queued as one."
}
