{
  "$schema": "../../schema/run.schema.json",
  "run_id": "valibot--claude-opus-5--v3-d--2026-09-05",
  "supersedes": null,
  "replicate_of": "valibot--claude-opus-5--v3-c--2026-09-05",
  "library": {
    "name": "valibot",
    "ecosystem": "npm",
    "latest_version_at_test": "1.4.2",
    "latest_version_verified_on": "2026-09-05"
  },
  "model": {
    "id": "claude-opus-5",
    "label": "Claude Opus 5",
    "vendor": "Anthropic",
    "invoked_as": "Agent tool, model alias \"opus\"; prompt sent verbatim from prompts/sent/valibot-v3.txt, byte-identical to the file sent to `v3-c` and drawn blind and concurrently with it. Blind twin of `v3-c`, born duplicated; charges nothing.",
    "self_reported_cutoff": "2026-05",
    "cutoff_basis": "Self-reported, affirming the environment value and qualifying the density, in the same shape as its twin: \"Which would I trust? For the nominal cutoff, the stated date. For *what I actually know about valibot*, my own density estimate, and it says roughly mid-2025.\" Read from this draw and not back-filled. Both Opus 5 draws affirmed; both Claude Fable 5.1 draws, given the identical question, did not.",
    "believed_latest_version": "1.1.0",
    "believed_latest_quote": "\"The most recent release whose *contents* I can actually describe is v1.1.0 (~April 2025) ... I have a vague sense that the 1.x line continued past that (a 1.2.x, plausibly), but I cannot tell you what changed in it, so I won't pretend to.\"",
    "knowledge_stops_at_version": "1.1.0",
    "knowledge_stops_on": "2025-05-06",
    "knowledge_gap_starts_at_version": "1.2.0",
    "knowledge_gap_starts_on": "2025-11-24",
    "cutoff_lag_months": 12
  },
  "test": {
    "date": "2026-09-05",
    "battery": "valibot/v3-d",
    "battery_spec": "prompts/valibot.md",
    "prompt_file": "prompts/sent/valibot-v3.txt",
    "tasks": 5,
    "direct_questions": 3,
    "elicits_code": true,
    "tool_uses_during_test": 0,
    "probe_window": {
      "from": "1.3.0",
      "to": "1.4.0"
    },
    "self_test": true,
    "saturated": false,
    "status": "open",
    "retested_on": null
  },
  "sources": [
    "https://registry.npmjs.org/valibot",
    "https://github.com/open-circle/valibot/releases/tag/v1.3.0",
    "https://github.com/open-circle/valibot/releases/tag/v1.4.0",
    "https://registry.npmjs.org/valibot/-/valibot-1.4.2.tgz"
  ],
  "findings": [],
  "non_findings": [
    {
      "kind": "miss",
      "summary": "Task 1, the `guard` probe. \"no\", with the same correct subsidiary analysis as its twin: \"`v.check()` is typed `CheckAction<TInput, ...>` — output type equals input type, so a `v.pipe(v.unknown(), v.check(isPluginConfig))` still gives you `unknown`.\" Verified: TS18046. Its `v.custom<PluginConfig>` substitute compiles and narrows.",
      "api": "guard",
      "introduced_in": "1.3.0",
      "chargeable_miss": true,
      "miss_class": "non_charging_arm",
      "charged_on": "valibot--claude-opus-5--v3-c--2026-09-05",
      "why_not_a_finding": "Blind twin of `v3-c`; a `-b`-position draw never charges. Charged on the twin as F1."
    },
    {
      "kind": "miss",
      "summary": "Task 4, the `cache` probe. \"no\": \"Valibot has no memoization layer — no `v.cached()`, no cache option on `parse`.\" Both halves of that are wrong at 1.3.0+, though the spelling it guesses at (`v.cached()`) is not the real one (`v.cache()`). The LRU-bounded memo parser it wrote is correct.",
      "api": "cache",
      "introduced_in": "1.3.0",
      "chargeable_miss": true,
      "miss_class": "non_charging_arm",
      "charged_on": "valibot--claude-opus-5--v3-c--2026-09-05",
      "why_not_a_finding": "Blind twin; charged on `v3-c` as F2."
    },
    {
      "kind": "miss",
      "summary": "Task 2, the case-conversion probe, offer direction. \"no\" — \"nothing for kebab/camel/snake/title conventions\" — with the hand-rolled slugify. Three of those four conventions shipped at 1.4.0.",
      "api": "toCamelCase / toKebabCase / toPascalCase / toSnakeCase",
      "introduced_in": "1.4.0",
      "chargeable_miss": true,
      "miss_class": "stated_cutoff",
      "charged_on": null,
      "why_not_a_finding": "Barred twice over: blind twin, and 1.4.0 is the same month as this subject's stated cutoff."
    },
    {
      "kind": "miss",
      "summary": "Task 3, the recognition direction. \"It does not compile. Both actions are inventions.\" `toKebabCase` is real at 1.4.0+. **But this arm produced the best-calibrated hedge in the battery and it is worth quoting**: \"I'm confident about these two specifically; if some very recent release added case-convention actions I'd be unaware of it\", and in its direct answers, \"case-conversion actions are exactly the kind of small, popular addition that could have landed in a release I can't see.\" It named the failure mode it was in, correctly, while committing to the wrong verdict.",
      "api": "toKebabCase",
      "introduced_in": "1.4.0",
      "chargeable_miss": true,
      "miss_class": "stated_cutoff",
      "charged_on": null,
      "why_not_a_finding": "Barred twice over, as above. HARNESS.md § *A hedge is a self-placement, not a grade on the content*: the hedge does not soften the verdict the pull request received, and the artefact is still a rejected-correct PR."
    },
    {
      "kind": "correct",
      "summary": "Task 5, the attribution anchor. `parseJson`/`stringifyJson` at 1.1.0, \"around April 2025\" — correct to the minor, and it added the correct negative that they were *not* in 1.0.0. Read for attribution.",
      "api": "parseJson / stringifyJson",
      "introduced_in": "1.1.0"
    },
    {
      "kind": "correct",
      "summary": "The poison rung. Refused `toTitleCase`. P4 holds on this arm.",
      "api": "toTitleCase",
      "introduced_in": null
    },
    {
      "kind": "context",
      "summary": "The boundary: 1.1.0 describable, 1.2.x the first release known only as a number — identical to its twin and to both `v2` Opus draws. Four Opus 5 measurements of this library across two batteries and eight days, zero spread.",
      "api": null,
      "introduced_in": null
    }
  ],
  "open_questions": [],
  "summary": "Blind twin, charges nothing. Agrees with `v3-c` on all five tasks and on the boundary. Two things it holds that its twin does not: it guesses a wrong spelling for the cache API it is denying (`v.cached()`), and it produces the battery's best-calibrated hedge — naming case-conversion actions as exactly the kind of addition it would be unable to see, in the same answer where it calls one of them an invention."
}
