| correct | parseJson / stringifyJson |
Task 7 used v.parseJson() — the 1.1.0 action — and named the release correctly, including the mirror v.stringifyJson(). The strongest single piece of evidence that this subject's boundary is at 1.1.0 and not below it. |
| correct | NanoIDAction / NanoIDIssue |
Task 9, the battery's one designed S1, passed: v.NanoIdAction<TInput, TMessage> and v.NanoIdIssue — the post-1.1.0 casing, written without hedging. (The rename is exactly what it wrote.) |
| correct | summarize |
Task 6 used v.summarize() and offered getDotPath and flatten as the alternatives, correctly distinguishing what each is for. |
| correct | getTitle / getDescription / getMetadata |
Task 4 read metadata back with v.getTitle, v.getDescription and v.getMetadata — all three added in 1.1.0 — rather than scanning the pipe array by hand. |
| correct | exactOptional |
Task 10 (exactOptional) correct, with the full optional/exactOptional/undefinedable/nullish/nullable family and the exactOptionalPropertyTypes caveat. Floor probe passed. |
| imprecision | examples / getExamples |
Task 4 attached examples via v.metadata({ examples: [...] }) rather than the 1.2.0 examples action, and read them via getMetadata rather than getExamples. Never claims the built-in is missing. (Additive-API rule — the metadata route works.) |
| imprecision | toNumber / toBoolean / toDate / toBigint / toString |
Task 1 coerced with v.decimal() then v.transform(Number), and with a picklist(['true','false']) for the boolean, where 1.2.0 ships toNumber and toBoolean. Careful, working code — the decimal() guard before the transform is a good instinct. (Additive-API rule.) |
| context | toNumber / toBoolean / toDate / toBigint / toString |
Belief probe (d) is wrong and is recorded as a chargeable miss without an F-number: "valibot deliberately ships no dedicated string-to-number/boolean/date coercion actions — no toNumber(), toBoolean(), toDate()." It names three of the five actions 1.2.0 added, as things that do not exist. It then hedges correctly: "If a later release added toNumber-style helpers, that postdates my reliable knowledge." (Question (d) is a belief probe and the battery never scores it as a finding. Recorded so the miss is on the record — it is the sharpest single instance in the Index of a model naming the exact API it cannot see.) [chargeable miss — produced only by a belief question the battery does not score as a finding;
absent from the finding count] |
| correct | message |
Task 8 solved the local message override with the trailing message argument, including the function form, and correctly stated its precedence over setGlobalMessage/setSchemaMessage/setSpecificMessage. (A separate, still-current mechanism that satisfies the task.) |
| correct | isbn |
Task 2: "Valibot does not ship an isbn() action (it has imei, creditCard, mac, etc., but no ISBN), so this is a custom check." That answer is correct for every valibot release that existed at this subject's stated 2026-01 cutoff. isbn is unusable until 1.3.0 (2026-03-17), two months after the cutoff. (WITHDRAWN 2026-09-02 (JOURNAL/040). This was charged as F2, an S3, on the strength of the v1.2.0 release note announcing the action. The Node auditor failed the correction at 1.2.0 and the tagged source explains why: the module exists at tag v1.2.0 but the action barrel never re-exports it, so the published 1.2.0 package contains no isbn at all. See data/valibot/facts.json LF3. The subject was right and the Index was wrong; the finding is removed rather than reclassified, because nothing about the answer was a failure. F1 and F3 keep their numbers — renumbering would break the run's published URLs and every pointer into it.) |