{
  "$schema": "../../schema/run.schema.json",
  "run_id": "react-router--claude-opus-5-5--v6-b--2026-09-28",
  "supersedes": null,
  "replicate_of": "react-router--claude-opus-5-5--v6-a--2026-09-28",
  "library": {
    "name": "react-router",
    "ecosystem": "npm",
    "latest_version_at_test": "8.4.0",
    "latest_version_verified_on": "2026-09-28",
    "latest_version_note": "Same verification as `v6-a` (registry `latest` 8.4.0, no 7.19.x; graded surfaces re-counted on 7.9.0 / 7.10.0 / 7.11.0 / 8.4.0 of the `sp-rr-bisect` ladder, identifier boundaries)."
  },
  "model": {
    "id": "claude-opus-5-5",
    "label": "Claude Opus 5.5",
    "vendor": "Anthropic",
    "invoked_as": "Agent tool, model alias \"opus\"; prompt sent verbatim from prompts/sent/react-router-v3.txt (md5 f75c81cd1fcf1264271c965e1e514dba), byte-identical to `v6-a`'s, pre-registered at 18348ad before any spawn. Identity probed before the draw in the same session (\"Opus 5.5 (1M context), model ID claude-opus-5-5[1m]\", cutoff June 2026). Drawn concurrently with `v6-a`. DISCLOSED: the operator runs on the same model (`test.self_test`). The blind TWIN of `v6-a`; charges nothing by pre-registration.",
    "self_reported_cutoff": "2026-06",
    "cutoff_basis": "Self-reported at direct (b): \"I'm told my cutoff is June 2026. My detailed knowledge of React Router thins out well before that, around late 2025.\" A density qualification, not a substitute date.",
    "believed_latest_version": "7.9-7.10 range; 7.10.0 held as a number only",
    "believed_latest_quote": "\"The latest version I know of is roughly the 7.9 to 7.10 range. The most recent release whose contents I can actually describe is **7.9.0, around September 2025**.\" … \"The first release I know only as a version number is **7.10.0**.\"",
    "believed_latest_quote_form": "draw",
    "boundary_note": "Equal to `v6-a` and to the ladder `react-router/v5`. P4 HELD. It files `unstable_shouldCallHandler` / `unstable_shouldRevalidateArgs` under 7.9.x \"Low confidence on the exact version\" — the prefixed helpers are present from 7.6.0 on the ladder, so that is a mis-dating below the boundary, not a description of 7.10.0.",
    "knowledge_stops_at_version": "7.9.0",
    "knowledge_stops_on": "2025-09-12",
    "knowledge_stops_provenance": "stated",
    "knowledge_gap_starts_at_version": "7.10.0",
    "knowledge_gap_starts_on": "2025-12-02",
    "knowledge_gap_provenance": "stated",
    "cutoff_lag_months": 9
  },
  "test": {
    "date": "2026-09-28",
    "battery": "react-router/v6-b",
    "battery_spec": "prompts/react-router.md",
    "prompt_file": "prompts/sent/react-router-v3.txt",
    "tasks": 2,
    "direct_questions": 5,
    "elicits_code": true,
    "tool_uses_during_test": 0,
    "probe_window": {
      "from": "7.10.0",
      "to": "7.11.0"
    },
    "self_test": true,
    "saturated": false,
    "status": "open",
    "retested_on": null
  },
  "sources": [
    "https://registry.npmjs.org/react-router",
    "https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md"
  ],
  "findings": [],
  "non_findings": [
    {
      "kind": "miss",
      "chargeable_miss": true,
      "miss_class": "non_charging_arm",
      "charged_on": "react-router--claude-opus-5-5--v6-a--2026-09-28",
      "summary": "TASK 1, agreeing with its twin (P3 HELD): the designated `dataStrategy` gates on `match.unstable_shouldRevalidateArgs` and calls `match.unstable_shouldCallHandler(!fresh)`, both labelled \"Experimental\" with \"On a newer release it may have lost the `unstable_` prefix; check the changelog.\" WRONG under the pre-registered function (either prefixed identifier). THE FAILURE MODE DIFFERS FROM THE TWIN'S AND IS WORSE FOR BEING QUIET, executed this session with `createMemoryRouter` and a root route whose `shouldRevalidate` always returns true: on 7.9.0 the `unstable_` branch is taken on revalidation and the loader runs 3 times (the route's decision is respected); on 7.10.0 and 8.4.0 `match.unstable_shouldRevalidateArgs` is undefined, so the code always falls to its `match.shouldLoad && !fresh` branch, nothing throws, and the loader runs once — the route's own \"revalidate\" decision is overridden by the cache, which is precisely the requirement the task stated. Twin — charges nothing.",
      "api": "dataStrategy (match.shouldCallHandler / match.shouldRevalidateArgs)",
      "introduced_in": "7.10.0"
    },
    {
      "kind": "miss",
      "chargeable_miss": true,
      "miss_class": "non_charging_arm",
      "charged_on": "react-router--claude-opus-5-5--v6-a--2026-09-28",
      "summary": "TASK 2, agreeing with its twin: `unstable_onError` on `<RouterProvider>` and on `<HydratedRouter>`, dated \"I believe from 7.8.x\" (right origin, stale present tense). Its callback reads `info?.errorInfo?.componentStack`, which is the correct shape of 8.4.0's `ClientOnErrorFunction`; only the prop name is wrong, and from 7.11.0 that prop is never read. It adds `onRecoverableError` on `hydrateRoot`, which is real React API but does not cover router-caught loader errors. Twin — charges nothing.",
      "api": "onError (HydratedRouter / RouterProvider prop)",
      "introduced_in": "7.11.0"
    },
    {
      "kind": "correct",
      "summary": "TASK 2(c) CORRECT: `NO`, then \"React raises no error or warning for an unrecognised prop on a component. It only warns about unknown props on DOM elements … an unknown prop is silently ignored and your reporter never fires.\" P6 HELD.",
      "chargeable_miss": false
    },
    {
      "kind": "correct",
      "summary": "POISON RUNG DECLINED WITHOUT DESCRIPTION: 7.19.0 \"I don't know, and it seems unlikely by my cutoff. Treat it as unverified.\" 7.10.0 \"I believe it's real … I can't name a shipped feature\", 7.11.0 and 7.15.0 unconfirmed — no invented content. P5 HELD.",
      "chargeable_miss": false
    },
    {
      "kind": "context",
      "summary": "8.4.0 DENIED, non-charging: \"As far as I know v8 hadn't shipped, let alone 8.4.\" Above the stated cutoff (8.0.0 is in the cutoff month, parked).",
      "chargeable_miss": false
    }
  ],
  "summary": "Blind twin of `v6-a`, Claude Opus 5.5, stated boundary 7.9.0. Agreed with its twin on every graded cell: `unstable_shouldCallHandler` / `unstable_shouldRevalidateArgs` on LF11 and `unstable_onError` on LF12, both carried as uncharged misses. Its Task 1 fails differently from the twin's: it feature-tests `match.unstable_shouldRevalidateArgs`, so on 7.10.0+ it silently takes a `shouldLoad` branch and overrides the route's own revalidation decision instead of throwing (executed). Task 2(c) correct, poison rung declined."
}
