{
  "updatedAt": "2026-07-02",
  "entries": [
    {
      "date": "2026-07-02",
      "status": "shipped",
      "title": "The claim checker now previews the evidence ask before the form work",
      "why": "The claim checker could already generate a useful public ask, but a skeptical visitor had to scan the result panel or a long copy block before understanding what an evidence ask actually contains.",
      "proof": "Added a compact example evidence ask inside the claim intake with Claim, Ask, Boundary, and Next fields. It shows that ScribeBench turns a slogan like hallucination-free into a concrete proof request, not a verdict.",
      "next": "Keep making every named artifact visible before the visitor has to trust the name: QA finding, evidence ask, blocker receipt, and aggregate row.",
      "links": [
        { "label": "Claim checker", "href": "#claim-check" },
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Add row", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-02",
      "status": "shipped",
      "title": "The homepage now shows what a QA finding actually looks like",
      "why": "The first screen said visitors leave with a QA finding, but a skeptical visitor still had to run the checker or open the demo before seeing the shape of that artifact. That kept the main promise a little abstract.",
      "proof": "Added a compact example QA finding under the public-use contract with Decision, Evidence, Boundary, and Next fields. It shows that ScribeBench produces a reviewer action packet, not a vague score or generic AI answer.",
      "next": "Keep showing concrete artifacts before asking visitors to trust new terms: QA finding, evidence ask, blocker receipt, or scores-only row.",
      "links": [
        { "label": "Start here", "href": "#main" },
        { "label": "Paste my note", "href": "#quick-check-form" },
        { "label": "Demo finding", "href": "#quick-result" }
      ]
    },
    {
      "date": "2026-07-02",
      "status": "shipped",
      "title": "The QA result now says what the copy button actually gives you",
      "why": "The seeded result showed a strong first source-note gap and reviewer handoff, but the primary Copy QA finding button appeared before the visitor could see the full copied packet. That made the main action slightly trust-me-ish.",
      "proof": "Added a compact copied-packet contract directly under the result actions. It changes with the result type and says whether the copied QA finding includes the hold/edit action, story change, note/source excerpts, next review step, cleanup action, or clean-triage boundary.",
      "next": "Keep making every action button expose its artifact contract before the click.",
      "links": [
        { "label": "QA finding", "href": "#quick-result" },
        { "label": "Paste my note", "href": "#quick-check-form" },
        { "label": "Claim checker", "href": "#claim-check" }
      ]
    },
    {
      "date": "2026-07-02",
      "status": "shipped",
      "title": "The note checker now tells the truth in demo and paste-your-own modes",
      "why": "The plain homepage loaded a seeded failure, while the direct note-checker route opened empty fields. The form still talked about seeded text in both states, which made the first real interaction feel inconsistent.",
      "proof": "Changed the first route CTA to Paste my note and rewrote the source-note intake copy so it works for both states: paste your own source and AI note, or reload the seeded failure to see the exact catch. The output promise stays a reviewer handoff.",
      "next": "Keep auditing every entry point for state-specific copy: no control should imply demo data is present when the visitor is looking at blank fields.",
      "links": [
        { "label": "Paste my note", "href": "#quick-check-form" },
        { "label": "Seeded finding", "href": "#quick-result" },
        { "label": "Start here", "href": "#main" }
      ]
    },
    {
      "date": "2026-07-02",
      "status": "shipped",
      "title": "The first screen now says exactly when ScribeBench is useful",
      "why": "The homepage had a working note checker and clearer task routes, but a skeptical visitor still had to infer the product contract from several nearby blocks. That left room for the site to feel like generic AI-safety copy instead of a concrete public QA tool.",
      "proof": "Replaced the first-screen purpose panel with a public-use contract: use it for one-note checks, claim challenges, or aggregate evidence; leave with a QA finding, evidence ask, blocker receipt, or scores-only row; and do not use it for patient advice, PHI storage, clinical clearance, or current rankings from old rows.",
      "next": "Keep turning every public page section into a visible artifact contract: bring this, check this, leave with this, do not claim this.",
      "links": [
        { "label": "Start here", "href": "#main" },
        { "label": "Claim checker", "href": "#claim-check" },
        { "label": "Add row", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-02",
      "status": "shipped",
      "title": "The claim checker now shows the proof path before the copy block",
      "why": "A visitor challenging a vague AI-scribe claim should immediately see whether the claim is unsupported, what artifact would close it, and what to click next. Hiding that behind details made the claim checker feel like another text generator.",
      "proof": "Added a visible claim-boundary card above the copyable public ask with current status, closing artifact, next public step, and direct action links for the selected claim type. The manual-copy fallback now opens inside the public-ask output card instead of the intake form.",
      "next": "Keep moving public-claim flows toward concrete evidence artifacts: one-note QA finding, evidence ask, or powered aggregate row.",
      "links": [
        { "label": "Claim checker", "href": "#claim-check" },
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Add row", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-02",
      "status": "shipped",
      "title": "The Lab now says when a second read is actually useful",
      "why": "The checker could hand a flagged note into the Lab, but the live-judge step still looked like generic model plumbing. Visitors need to know whether to stop at the no-key QA finding or ask for another read.",
      "proof": "Added a second-read decision card above the Lab inputs. It changes with the current result: flagged no-key findings say they are enough to hold the note, live judges are optional for disputed gaps or reviewer prose, and every path keeps the boundary at one note.",
      "next": "Keep reducing model-centered language until the public flow reads as source-note QA first and provider calls only as optional escalation.",
      "links": [
        { "label": "Second opinion", "href": "#lab-workbench" },
        { "label": "QA finding", "href": "#quick-result" },
        { "label": "Build-in-public log", "href": "#worklog" }
      ]
    },
    {
      "date": "2026-07-02",
      "status": "shipped",
      "title": "The QA finding copy fallback now stays with the result",
      "why": "The main user job is leaving with a reviewer-ready QA finding. If clipboard access fails and the manual fallback appears in the wrong part of the page, the core action feels broken.",
      "proof": "The result panel now owns its own manual-copy fallback directly under the Copy QA finding action, while the first-screen seeded-copy fallback stays scoped to the seeded intro strip.",
      "next": "Keep auditing the post-check path for anything that makes the copied finding feel generic, hidden, or disconnected from the evidence cards.",
      "links": [
        { "label": "QA finding", "href": "#quick-result" },
        { "label": "Source-note checker", "href": "#quick-check-form" },
        { "label": "Build-in-public log", "href": "#worklog" }
      ]
    },
    {
      "date": "2026-07-02",
      "status": "shipped",
      "title": "The checked-note result now owns the work surface",
      "why": "After the first-screen fix, the paste-and-check workflow was clear, but the generated QA finding still rendered in the left rail while the right half of the page sat empty. That made the most important artifact feel secondary.",
      "proof": "A completed note check now spans the full checker panel: the status, title, copy action, first source-note gap, compact boundary, and reviewer handoff read as one artifact instead of a narrow side card.",
      "next": "Keep the post-check experience centered on the artifact a reviewer can use: first gap, source evidence, action, and copied QA finding before lower-priority routing material.",
      "links": [
        { "label": "QA finding", "href": "#quick-result" },
        { "label": "Source-note checker", "href": "#quick-check-form" },
        { "label": "First evidence card", "href": "#quick-result" }
      ]
    },
    {
      "date": "2026-07-02",
      "status": "shipped",
      "title": "The first screen now shows the actual checker before the brochure",
      "why": "The headline and purpose copy said ScribeBench was a source-vs-note checker, but the first viewport still showed route cards and seeded-demo explanation before both paste boxes and the primary check action were visible.",
      "proof": "The desktop and mobile first view now put the source box, AI-note box, and Check note now action ahead of the seeded demo, with the route and purpose material moved into the supporting rail or below the form.",
      "next": "Keep the public site behaving like a tool first: every important route should show the input, action, and leave-with artifact before explanatory material.",
      "links": [
        { "label": "Source-note checker", "href": "#quick-check-form" },
        { "label": "QA finding", "href": "#quick-result" },
        { "label": "Build-in-public log", "href": "#worklog" }
      ]
    },
    {
      "date": "2026-07-02",
      "status": "shipped",
      "title": "The evidence ledger now starts with a sharper claim boundary",
      "why": "The ledger first screen still offered too many competing actions: note review, claim boundary, finish row, citation boundary, raw JSON, historical rows, current blocker, and smoke proof. That made the public-evidence path feel like benchmark machinery again.",
      "proof": "The ledger now opens with three plain lanes: use the checker today, do not cite a current winner yet, and make comparison citable by finishing the current row. The copyable current-row task moved into that first decision area.",
      "next": "Keep the evidence path as a decision surface first and a ledger second: what works now, what cannot be claimed, and what artifact to build next.",
      "links": [
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Current-row task", "href": "#current-run" },
        { "label": "Claim checker", "href": "#claim-check" }
      ]
    },
    {
      "date": "2026-07-02",
      "status": "shipped",
      "title": "The checked-note result now puts the leave-with action first",
      "why": "After the first-evidence fix, the result proved the source-note gap but still buried the Copy QA finding action below multiple panels. A visitor could see the problem before seeing how to leave with the artifact.",
      "proof": "The result action row now sits directly above the first source-note evidence card: Copy QA finding, Ask second opinion, and Next steps are visible before the evidence, compact metrics, and reviewer handoff.",
      "next": "Keep each public path focused on the artifact a visitor can leave with: QA finding, evidence ask, or aggregate row task.",
      "links": [
        { "label": "QA finding", "href": "#quick-result" },
        { "label": "Source-note checker", "href": "#quick-check-form" },
        { "label": "Next steps", "href": "#next-steps" }
      ]
    },
    {
      "date": "2026-07-02",
      "status": "shipped",
      "title": "The note checker result now opens with the usable evidence",
      "why": "A pasted source-note run did flag unsupported care, but the first result viewport still felt like an internal receipt and direct form links could be overwritten by the seeded demo after the JSON load finished.",
      "proof": "Direct #quick-check-form visits now stay in blank own-note mode, and each QA finding adds a first-evidence panel with the note claim, source check, and review step before the copy-ready finding text.",
      "next": "Keep the one-note path artifact-first: direct links should accept the visitor's evidence, and the result should lead with what to verify before anyone signs or cites the note.",
      "links": [
        { "label": "Source-note checker", "href": "#quick-check-form" },
        { "label": "QA finding", "href": "#quick-result" },
        { "label": "Seeded demo", "href": "#quick-check" }
      ]
    },
    {
      "date": "2026-07-02",
      "status": "shipped",
      "title": "The GitHub README now opens with the public job",
      "why": "The website routes were clearer, but a visitor who clicked GitHub could still fall from the repo description into file trees and historical benchmark rows before seeing what to do with the project.",
      "proof": "The README now has a Use this repo in public block that sends source-note users to the one-note checker, claim users to the claim checker, and ranking questions to the evidence ledger with the plain answer that a current ranking is not ready yet.",
      "next": "Keep the GitHub entry point aligned with the site: live artifact first, repo machinery second, historical rows never framed as today's winner.",
      "links": [
        { "label": "GitHub README", "href": "https://github.com/napiermd/scribe-bench" },
        { "label": "One-note checker", "href": "#quick-check" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-07-02",
      "status": "shipped",
      "title": "The claim checker now has its own intake contract",
      "why": "The claim route had a clear output card, but the form still opened with presets and a textarea before saying what artifact the visitor was creating. That made the claim path feel less concrete than the note checker, Lab, and row builder.",
      "proof": "The claim form now starts with Claim-to-evidence intake, says to turn the claim into a public ask rather than a verdict, and shows Bring, Check, and Leave with steps before the presets.",
      "next": "Keep every direct route artifact-first: note paths create QA findings, claim paths create evidence asks, and row paths create aggregate evidence packages.",
      "links": [
        { "label": "Claim checker", "href": "#claim-check" },
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Source-note checker", "href": "#quick-check-form" }
      ]
    },
    {
      "date": "2026-07-02",
      "status": "shipped",
      "title": "The Lab workbench now starts with the second-read job",
      "why": "Direct links to the Lab workbench still landed on textareas and a seeded score before restating why a visitor was there. That could make the Lab feel like a model playground instead of a second-read review for one disputed note.",
      "proof": "The workbench now opens with a Second-read intake contract: checked source plus note, no-key first with live judge optional, and a second-read QA finding as the output. Lab result labels now read Seeded QA finding, Review signal, and Flagged gaps instead of generic benchmark language.",
      "next": "Keep direct anchors self-explanatory: every deep link should name the artifact, input, and boundary before showing controls.",
      "links": [
        { "label": "Lab workbench", "href": "#lab-workbench" },
        { "label": "Source-note checker", "href": "#quick-check-form" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-07-02",
      "status": "shipped",
      "title": "The row builder now names the public artifact first",
      "why": "The contribution path explained aggregate evidence higher up, but direct links to the run builder still landed on presets and CLI fields before saying what the visitor was creating.",
      "proof": "The builder now opens with an Aggregate row intake, a scores-only evidence-package headline, and Input, Output, and Use when steps before the candidate-note JSON and scoring command.",
      "next": "Keep contribution UI honest: if someone has only one note or a slogan, route them back to the checker or claim ask before they touch benchmark machinery.",
      "links": [
        { "label": "Aggregate row intake", "href": "#run-builder" },
        { "label": "Claim checker", "href": "#claim-check" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-07-02",
      "status": "shipped",
      "title": "The note checker form now has an intake contract",
      "why": "The first screen explained the point, but the paste form still looked like two bare text boxes beside demo state. That made the actual review workflow feel less real than the copy promised.",
      "proof": "The checker form now names the source-note intake, says to replace the seeded text for a real case, and shows Bring, Check, and Leave with steps before the source and AI-note fields.",
      "next": "Keep tightening the hands-on review path: the moment someone arrives at a control, it should say what artifact they are creating and what boundary it carries.",
      "links": [
        { "label": "Source-note intake", "href": "#quick-check-form" },
        { "label": "QA finding", "href": "#quick-result" },
        { "label": "After-the-finding guide", "href": "#public-action-kit" }
      ]
    },
    {
      "date": "2026-07-02",
      "status": "shipped",
      "title": "The evidence ledger now starts with the useful artifact",
      "why": "The lower evidence section still opened with a blocked aggregate row, which made ScribeBench feel like stalled benchmark machinery instead of a public tool someone can use today.",
      "proof": "The ledger now leads with the one-note QA finding, claim-boundary actions, and explicit limits for historical, smoke, and current-ranking evidence before showing the current-row contribution task.",
      "next": "Keep burying row mechanics behind the visitor's job: first produce a useful finding, then explain what larger claim that finding can and cannot support.",
      "links": [
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Source-note checker", "href": "#quick-check" },
        { "label": "Current blocker", "href": "#current-run" }
      ]
    },
    {
      "date": "2026-07-02",
      "status": "shipped",
      "title": "QA findings now say where they should be used",
      "why": "The checker could produce a strong source-vs-note finding, but visitors still had to infer whether it belonged in chart QA, a vendor defect thread, or a public evidence discussion.",
      "proof": "The result now includes a Where this goes panel and a copyable QA finding route for chart QA, builder/vendor handoff, and public claim boundaries.",
      "next": "Keep moving useful output closer to the review workflow: every generated artifact should say who should receive it and what it can and cannot support.",
      "links": [
        { "label": "QA finding", "href": "#quick-result" },
        { "label": "Source-note checker", "href": "#quick-check-form" },
        { "label": "Claim checker", "href": "#claim-check" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Mobile now puts the visitor's note before the seeded demo",
      "why": "The first screen explained the product better, but on a phone the paste form still sat behind a long route stack and the seeded example. That made the main job feel slower than it was.",
      "proof": "Mobile ordering now routes to the source-note form before the seeded catch, tightens the purpose copy, and turns the first source-note route into a primary tap target.",
      "next": "Keep measuring the first-tap path: a visitor with source + note should get to an empty form and then a QA finding without reading benchmark machinery.",
      "links": [
        { "label": "Source-note checker", "href": "#quick-check-form" },
        { "label": "Seeded demo", "href": "#quick-result" },
        { "label": "After-the-finding guide", "href": "#next-steps" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The first screen now states the point before the routes",
      "why": "The site had a useful checker, but a cold visitor still had to infer who it was for, what they leave with, and why the repo exists.",
      "proof": "The opening checker now has a real page H1 plus a compact Point / Who / Why repo exists contract before the source-note, claim, and aggregate-evidence routes.",
      "next": "Keep making the first viewport answer the user's actual question: what do I bring, what do I get, and what public claim does this support?",
      "links": [
        { "label": "Source-note checker", "href": "#quick-check" },
        { "label": "After-the-finding guide", "href": "#next-steps" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Copied QA findings now start with the reviewer decision",
      "why": "The on-screen result had become action-first, but the copied QA finding still opened like a report. That made the shareable artifact feel less decisive than the product surface.",
      "proof": "The copied source-vs-note QA finding now starts with Decision, Action, Why, Evidence, and Next before showing detailed source-note evidence and boundaries.",
      "next": "Keep every exported artifact paste-ready: the first lines should tell a reviewer what to do before they read the detailed evidence.",
      "links": [
        { "label": "QA finding", "href": "#quick-result" },
        { "label": "Source-note checker", "href": "#quick-check-form" },
        { "label": "Second-read review", "href": "#lab" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The source-note path now opens a clean checker",
      "why": "The new first-screen chooser routed people with their own source and note to the form, but that form was still prefilled with the seeded demo and stale demo status.",
      "proof": "The source + note entry now uses the same own-note start behavior as Check my note: it clears the seeded source and note, hides old artifacts, focuses the source field, and asks the visitor to paste their own evidence.",
      "next": "Keep the live demo available, but never let demo state leak into the path for someone bringing real source-note evidence.",
      "links": [
        { "label": "Source-note checker", "href": "#quick-check-form" },
        { "label": "Seeded demo", "href": "#quick-result" },
        { "label": "Claim checker", "href": "#claim-check" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The first screen now starts with the visitor's job",
      "why": "The site explained the checker, evidence ledger, and repo, but a cold visitor still had to infer whether they were here to review a note, challenge a claim, or publish proof.",
      "proof": "Replaced the four explanatory purpose blocks with a compact chooser for three real situations: I have source + note, I heard a claim, and I can add proof. Each path names the artifact the visitor should leave with and links to the right tool.",
      "next": "Keep reducing explanation into useful routes: every first-screen block should either start note review, create an evidence ask, or prepare aggregate proof.",
      "links": [
        { "label": "Check one note", "href": "#quick-check-form" },
        { "label": "Claim checker", "href": "#claim-check" },
        { "label": "Prepare row", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The QA result now starts with a reviewer handoff",
      "why": "The checker produced a useful copyable QA finding, but the result still exposed the long finding text before giving a reviewer the actual decision: hold, fix, or continue with bounded triage.",
      "proof": "Added a compact Reviewer handoff with Action, Why, Evidence, and Next fields. Flagged notes say to hold before signing, leak-only output says to fix the artifact, and clean browser checks stay scoped to triage. The full QA finding text is still available, but closed until someone wants to copy it.",
      "next": "Keep making every output action-first: a reviewer should know the decision before opening the detailed artifact.",
      "links": [
        { "label": "QA finding", "href": "#quick-result" },
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Second-read review", "href": "#lab" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The checker now exposes its real scope",
      "why": "The browser checker could already catch more than the first-screen copy implied, which made the site feel smaller and vaguer than the actual tool.",
      "proof": "The first checker now names the real users, clinical QA reviewers, buyers, and builders with source-note evidence in hand, and says it catches unsupported care plus chart-fact drift across meds, orders, diagnoses, procedures, results, demographics, side, allergies, leaks, and changed story.",
      "next": "Keep making the useful detector behavior visible before asking visitors to care about benchmark rows or repo machinery.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "QA finding", "href": "#quick-result" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The artifact names now line up",
      "why": "The first screen now promised a QA finding, but lower sections still used too many artifact names for the same visitor job. That made the product feel like separate demos instead of one public workflow.",
      "proof": "Standardized public-facing copy around three outputs: one-note QA finding, claim evidence ask, and multi-note aggregate row. The Lab is now a second-read review behind the QA finding, and the current run is a blocker status instead of pretending to be a leaderboard.",
      "next": "Keep checking every new section against the same vocabulary so visitors do not have to decode internal benchmark language before using the site.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Second-read review", "href": "#lab" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The first screen now asks the plain question",
      "why": "The checker still led with internal artifact language before saying the simple job: did the AI scribe make up care?",
      "proof": "Changed the opening headline to the plain question, rewrote the purpose strip around real encounter plus AI note, unsupported clinical claims, and a copy-paste QA finding, and renamed the primary actions to Check my note, Copy seeded finding, and Open demo finding.",
      "next": "Keep benchmark and row language below the first action so cold visitors understand the one-note QA job before the repo machinery.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "QA finding", "href": "#quick-result" },
        { "label": "After the finding", "href": "#next-steps" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The duplicate intro layer is gone",
      "why": "Once the first checker explained who it is for and what artifact it produces, the old hero, role router, public contract, and proof-trail panel repeated the same promise before the visitor could use the tool.",
      "proof": "Removed the duplicate intro panel, start-route buttons, copy-route fallback, and proof-trail wiring. The opening band now starts with the source-vs-note checker, and the after-the-finding guide handles the next bounded actions.",
      "next": "Keep one surface per job: checker first, finding guide next, claim checker for broad promises, and aggregate-row tools only when someone is ready to publish evidence.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "After the finding", "href": "#next-steps" },
        { "label": "Claim checker", "href": "#claim-check" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The checker now says who should use it",
      "why": "The first real viewport is the note checker, not the longer intro. That means the checker itself has to explain who it is for, why invented care matters, and what artifact a visitor leaves with.",
      "proof": "Added a first-screen purpose strip for people holding evidence: clinical QA reviewers, buyers, and builders can catch unsupported care and leave with a copy-ready QA finding. The same point is now mirrored in the README.",
      "next": "Keep the first screen focused on the visitor's evidence-in-hand job: source plus note, unsupported-care contradiction, QA finding, and boundary before any benchmark machinery.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "QA finding", "href": "#quick-result" },
        { "label": "GitHub README", "href": "https://github.com/napiermd/scribe-bench" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The repo handoff now matches the product contract",
      "why": "The first screen now says one note becomes a QA finding, but the guide and README still used older artifact language. That made the GitHub handoff feel like a different product.",
      "proof": "Aligned the public guide, repo explanation, mobile proof note, and README around the same artifact model: one note becomes a QA finding, one claim becomes an evidence ask, and many declared notes can become a scores-only aggregate row.",
      "next": "Keep the site, README, and worklog using the same artifact names so public readers never have to infer what the repo is for.",
      "links": [
        { "label": "Public guide", "href": "#next-steps" },
        { "label": "GitHub README", "href": "https://github.com/napiermd/scribe-bench" },
        { "label": "QA finding", "href": "#quick-check" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The first screen now states the public contract",
      "why": "The opening panel still split purpose across what/who/point cards and a separate route chooser. A cold visitor could see the checker working without understanding the larger rule: one note gets a QA finding, but broad AI-scribe claims need aggregate rows.",
      "proof": "Replaced the first-screen purpose cards with a compact public contract: one note becomes a QA finding, one claim becomes an evidence ask, and many notes become an aggregate row only after a declared run.",
      "next": "Keep measuring every first-screen block against the same question: does it help someone paste evidence, copy a QA finding, challenge a claim, or build a row?",
      "links": [
        { "label": "Start here", "href": "#main" },
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Claim checker", "href": "#claim-check" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Custom note checks now reveal the receipt",
      "why": "The paste-your-own-note flow rendered the receipt above the form. After submit, a visitor could stay near the form status text and miss the actual review packet.",
      "proof": "Changed form submit to reveal #quick-result, update the hash, and scroll to the receipt after the local browser check runs. Seeded demo loading still checks quietly without jumping the first screen.",
      "next": "Keep the own-note path result-first: paste source and note, run the check, see the receipt, copy the packet.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Source-note form", "href": "#quick-check-form" },
        { "label": "Receipt output", "href": "#quick-result" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The public guide now gives copy-ready artifacts",
      "why": "The Guide said ScribeBench was a public action kit, but the artifact cards were still mostly navigation links. That forced visitors to understand the site before they could use it in the next thread.",
      "proof": "Added copy-ready snippets for a one-note QA packet, vendor evidence ask, current-row blocker receipt, and aggregate-row request, wired into the existing public-action copy handler.",
      "next": "Keep turning every explanatory section into something a reviewer, buyer, builder, or contributor can copy and use.",
      "links": [
        { "label": "Public guide", "href": "#next-steps" },
        { "label": "Claim checker", "href": "#claim-check" },
        { "label": "Current blocker", "href": "#current-run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The first checker panel now shows the actual seeded catch",
      "why": "The first screen said ScribeBench catches invented care, but desktop visitors still had to scroll or inspect the receipt to see the concrete failure. That made the site feel more like an explanation than a useful QA artifact.",
      "proof": "Changed the first checker action strip into a compact source-vs-note contradiction: the note invents a negative head CT and syncope workup, while the source says mechanical rug trip with no head strike or loss of consciousness.",
      "next": "Keep the first minute anchored on tangible artifacts: visible contradiction, copyable packet, then paste-your-own-note workflow.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Demo receipt", "href": "#quick-result" },
        { "label": "Source-note form", "href": "#quick-check-form" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Mobile navigation no longer crowds the checker",
      "why": "After the first-screen packet work, the mobile header still showed seven navigation links before the checker. That consumed about 15% of the viewport and made the useful surface feel pushed down.",
      "proof": "Kept the full desktop nav, moved mobile links into a native Menu disclosure, preserved the key Check note path, and shortened mobile anchor offsets for the smaller header.",
      "next": "Keep the first mobile viewport focused on the note checker and copyable packet, with deeper site navigation available but not competing.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Claim checker", "href": "#claim-check" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The first mobile screen now exposes a copyable packet",
      "why": "The checker was first on mobile, but the actual copy-review-packet action still sat far below the first viewport. A visitor could understand the tool without immediately feeling the artifact.",
      "proof": "Added a first-screen Copy demo packet action to the checker start strip and mirrored copy status there, so the seeded example demonstrates the review-packet output before the visitor scrolls.",
      "next": "Keep the first minute centered on tangible outputs: paste a real note, copy the demo packet, or inspect why the seeded note failed.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Demo receipt", "href": "#quick-result" },
        { "label": "Source-note form", "href": "#quick-check-form" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Mobile visitors now hit the checker before the essay",
      "why": "The desktop first screen showed the working checker immediately, but mobile visitors had to scroll past the header, purpose cards, and route chooser before reaching the tool. That made the public site feel more like an explanation than something to use.",
      "proof": "Reordered the mobile first screen so the note checker appears before the guide rail, and added a top action strip inside the checker with a direct paste-your-note action plus the seeded demo receipt.",
      "next": "Keep mobile entry artifact-first: paste source plus note, inspect the seeded catch only when useful, then copy the packet or escalate to a second read.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Source-note form", "href": "#quick-check-form" },
        { "label": "Public guide", "href": "#next-steps" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The Lab now hides model plumbing by default",
      "why": "The Lab said it was only for a second read, but the visible path still pushed seeded demos, candidate generation, provider readiness, and smoke testing. That made the site drift back toward model playground behavior.",
      "proof": "Changed the Lab header to send visitors back to the browser receipt first, left only receipt and live-judge review actions in the main workbench, and moved demo tools plus provider diagnostics into closed disclosure sections.",
      "next": "Keep Lab useful as an escalation path: one source-note pair, one review packet, provider details only when the reviewer asks for them.",
      "links": [
        { "label": "Second opinion Lab", "href": "#lab" },
        { "label": "Browser receipt", "href": "#quick-check" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Old score tables now stay in evidence archives",
      "why": "The Evidence page said the June 2026 rows were historical, but the full tables still sat open in the main path. On mobile they added thousands of pixels and horizontal scroll, making old models feel more important than the current blocker.",
      "proof": "Moved the historical launch rows and n=3 smoke rows behind closed disclosure sections. The visible Evidence path now prioritizes the current public task, note-review answer, blocker receipt, smoke receipt, and worklog before anyone opens archived tables.",
      "next": "Keep stale or tiny-n evidence visible for transparency, but closed unless the visitor asks for the raw ledger.",
      "links": [
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Current blocker", "href": "#current-run" },
        { "label": "Add a row", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The first screen now answers who this is for",
      "why": "The public site was becoming more useful, but a cold visitor still had to infer the product contract from the checker, route chooser, and evidence language. That made ScribeBench feel like tool output before it felt like a public artifact.",
      "proof": "Added a first-screen answer strip that names what ScribeBench is, who uses it, and the point of leaving with a reviewable artifact. Added the same cold-visitor answer before the public action kit so the guide explains the audience and purpose before the repo machinery.",
      "next": "Keep the public page anchored on the visitor's evidence-in-hand job before showing benchmark or implementation details.",
      "links": [
        { "label": "Start here", "href": "#main" },
        { "label": "Public guide", "href": "#next-steps" },
        { "label": "Check one note", "href": "#quick-check" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The claim checker now leads with the ask",
      "why": "The claim checker already generated a useful public ask, but the output panel also exposed proof requirements, current limits, and an evidence path all at once. That made the artifact compete with its own explanation.",
      "proof": "Kept the copyable public ask visible as the primary artifact and moved proof requirements, current limits, and evidence-path detail behind native disclosure controls. Visitors can copy the ask first, then open the deeper method context when they need it.",
      "next": "Keep every visitor path artifact-first: copy the thing, then expand the method only when the reader asks for more.",
      "links": [
        { "label": "Claim checker", "href": "#claim-check" },
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Contribute", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The seeded receipt no longer eats the first screen",
      "why": "After the route chooser moved up, the seeded receipt still rendered every flagged excerpt and the full review packet before the form. It proved the checker worked, but it made the page feel like a long demo artifact.",
      "proof": "Added a compact receipt strip for flagged count, issue type, and evidence boundary. Moved flagged source-note excerpts, proof-boundary detail, and the copy-ready packet preview behind native disclosure controls while keeping the primary copy and own-note actions visible.",
      "next": "Keep making the first screen behave like a tool: summary first, details when asked, source-note form close enough to act.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Source-note form", "href": "#quick-check-form" },
        { "label": "Public guide", "href": "#next-steps" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The first screen now starts with visitor routes",
      "why": "The opening rail still made visitors read why ScribeBench exists before it answered what they could do with the site. The useful path chooser was buried below the seeded receipt and felt like another section instead of the front door.",
      "proof": "Moved the visitor route chooser next to the headline, removed the old plain-English explanation blocks from the first rail, and changed the primary note route to clear the demo and jump straight to the source-note form. The checker now labels the seeded receipt as the loaded state instead of repeating the project rationale.",
      "next": "Keep the first viewport focused on action: note receipt, claim ask, candidate-note scoring, or current-row blocker.",
      "links": [
        { "label": "Start here", "href": "#main" },
        { "label": "Check one note", "href": "#quick-check-form" },
        { "label": "Public guide", "href": "#next-steps" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The current blocker now reads like a receipt",
      "why": "The current-run section still mixed the public blocker with runner diagnostics: generated counts, last score, partial aggregate, blocker text, next text, links, and the resume command all competed for attention.",
      "proof": "Collapsed the visible current-run middle into a blocker receipt, three-field status strip, and short proof/blocker note. Removed the generated count, last-score line, and extra next panel from the public Evidence flow while keeping the resume command copyable.",
      "next": "Keep turning status details into visitor-facing artifacts: receipt first, raw diagnostics only where they help someone act.",
      "links": [
        { "label": "Current blocker", "href": "#current-run" },
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Contribute", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Evidence now skips the generic backlog",
      "why": "The Evidence section still had a generic backlog after the work log, even though Contribute already carries the current public queue and copyable task. That made the middle page feel like roadmap clutter instead of proof.",
      "proof": "Removed the Evidence-only backlog and its dead layout styles. Evidence now moves from the current task, public answer, current blocker, smoke receipt, and work log straight into historical baselines.",
      "next": "Keep tightening the Evidence and Contribute handoff so one public queue owns the next action.",
      "links": [
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Current blocker", "href": "#current-run" },
        { "label": "Contribute", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The middle page no longer detours into a run-plan form",
      "why": "After the claim checker, visitors hit a separate powered-row challenge planner before the evidence ledger and contribution tools. It repeated the same row-builder job and made the page feel like benchmark machinery again.",
      "proof": "Removed the standalone challenge planner, its presets, copy logic, and CSS. Claim, evidence, queue, and historical-row actions now point directly to the current blocker, Lab smoke path, or aggregate row builder.",
      "next": "Keep the middle journey linear: claim ask, evidence boundary, current blocker, then row builder only when the visitor has many notes.",
      "links": [
        { "label": "Claim checker", "href": "#claim-check" },
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Row builder", "href": "#run-builder" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The first note path now has one artifact",
      "why": "The browser receipt already created a copy-ready review packet, but the page also rendered a separate public evidence card for the same one-note result. That repeated the same finding and made the first experience feel padded.",
      "proof": "Running the first checker now clears claim and smoke artifacts and leaves the review packet as the single output. Public evidence cards remain reserved for claim asks and second-read smoke packets, where a standalone handoff is useful.",
      "next": "Keep cutting repeated artifact language so each visitor path leaves one obvious output.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Review packet", "href": "#quick-receipt-preview-output" },
        { "label": "Claim checker", "href": "#claim-check" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The Lab now stays behind the review receipt",
      "why": "The Lab still surfaced provider availability and smoke runs like browsing models was the product. That made the site feel like a model playground instead of a public source-vs-note review workflow.",
      "proof": "The Lab now says to start from the browser receipt, escalates only when a flagged source-note pair needs a second read, and hides model names behind provider readiness. The smoke action is framed as testing a bounded second-read path, not ranking current models.",
      "next": "Keep model-backed paths from implying system ranking; public claims still need powered aggregate rows.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Second-read Lab", "href": "#lab" },
        { "label": "Powered row", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The guide now stops repeating the same path choice",
      "why": "After the first-screen checker, the page asked visitors to choose a path, then repeated the same idea in the Public guide and again in a How to use grid. That made the site feel padded instead of useful.",
      "proof": "The Public guide now starts with one instruction: leave with one artifact, not another demo screenshot. The duplicate ScribeBench in one pass strip and repeated How to use cards were removed, leaving the artifact kit followed by the repo loop.",
      "next": "Keep cutting guide text that does not directly help a visitor copy a review packet, claim ask, blocker receipt, or aggregate row.",
      "links": [
        { "label": "Public guide", "href": "#next-steps" },
        { "label": "Public action kit", "href": "#public-action-kit" },
        { "label": "Check one note", "href": "#quick-check" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The first screen now says why ScribeBench exists",
      "why": "The homepage could still read like a generic benchmark demo. It named source-vs-note QA, but it did not immediately connect the tool to the NapierMD production documentation QA thesis: signed clinical notes have to stay true after the demo ends.",
      "proof": "The hero now leads with the literal job, Check whether an AI scribe invented care, and adds a NapierMD proof strip citing 13 hospital sites, 42 physician complaints, and 1,089 closed-loop iterations. The plain-English panel now names people holding evidence and the artifact they leave with.",
      "next": "Keep reducing anything that feels like benchmark theater unless it helps a visitor produce a review packet, claim ask, blocker receipt, or aggregate row.",
      "links": [
        { "label": "Start here", "href": "#main" },
        { "label": "NapierMD proof trail", "href": "https://napiermd.me/work#clinical-ai" },
        { "label": "Check one note", "href": "#quick-check" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Evidence exposed the current public task",
      "why": "The Evidence section had the blocker, but it appeared after broad interpretation cards and ledger framing. On mobile, visitors reached stale-row language before the task they could actually help finish.",
      "proof": "A Make this citeable task card began copying the same public task as Contribute and mirrors the current-run counts, Bring, Do, and Done fields from current-run.json. It was later moved behind the useful-artifact card once the visitor job became clearer.",
      "next": "Keep the public task visible without letting benchmark mechanics replace the visitor's first job: produce a QA finding.",
      "links": [
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Current public task", "href": "#current-run" },
        { "label": "Contribute", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The claim checker now makes the public ask the artifact",
      "why": "The claim checker could generate a useful evidence ask, but the ask appeared after method cards and looked like supporting text instead of the thing a buyer or operator came to copy.",
      "proof": "The claim answer now surfaces a Copyable public ask immediately after the claim summary, with a visible copy button inside the answer. The supporting evidence requirements and evidence path stay below the ask instead of competing with it.",
      "next": "Keep claim checks focused on the practical handoff: paste the claim, copy the ask, then use aggregate rows only when the claim needs system-level proof.",
      "links": [
        { "label": "Claim checker", "href": "#claim-check" },
        { "label": "Copyable public ask", "href": "#claim-public-ask" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The first note result now makes the next action obvious",
      "why": "The first checker produced useful evidence, but the result action still said to use it as a QA finding. That was accurate, but too abstract for a cold visitor trying to decide what to do next.",
      "proof": "The result guidance now says to hold the note and copy the review packet when unsupported care is flagged. Seeded examples keep Check your own note as the primary action, while user-owned results promote Copy this review packet and move Check another note to the secondary action.",
      "next": "Keep testing the first screen as a review workflow: run the check, understand the decision, copy the artifact, then escalate only if a broader claim needs evidence.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Review packet", "href": "#quick-receipt-preview-output" },
        { "label": "Claim checker", "href": "#claim-check" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The guide now names the artifacts visitors can leave with",
      "why": "The public site explained the one-note and aggregate-row loop, but a visitor still had to connect the checker, claim tool, blocker receipt, and row builder into concrete public outputs.",
      "proof": "The Public guide now includes a Public action kit with four shareable artifacts: review packet, claim ask, blocker receipt, and aggregate row. Each artifact names what to bring, what to copy, and where that output belongs.",
      "next": "Keep every public path oriented around a useful artifact someone can paste into review, buyer diligence, build-in-public progress, or evidence submission.",
      "links": [
        { "label": "Public action kit", "href": "#public-action-kit" },
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Current blocker", "href": "#current-run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The Lab now starts with second-opinion boundaries",
      "why": "The Lab had useful no-key and live-model actions, but the controls could still read like a generic model playground instead of a bounded review workflow for one source-note pair.",
      "proof": "The Lab now opens with a Use when, Do first, Escalate if, and Do not claim contract. Button labels separate no-key receipt, live judge review, and demo candidate generation, while provider settings are marked optional and live models are framed as review aids rather than leaderboard rows.",
      "next": "Keep the model-backed lane useful for second opinions and smoke checks while reserving public ranking claims for powered aggregate PriMock57 rows.",
      "links": [
        { "label": "Second opinion Lab", "href": "#lab" },
        { "label": "Lab workbench", "href": "#lab-workbench" },
        { "label": "Check one note", "href": "#quick-check-form" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Contribute now starts from what a visitor has in hand",
      "why": "The Contribute section had the right queue and row builder, but it led with aggregate-evidence language and pushed the human entry points below the blocker details, especially on mobile.",
      "proof": "The section now opens with plain contribution copy: one source-note pair, a public claim, a batch of candidate notes, or a provider key. The entry-point chooser appears before the public work queue, and the row builder is explicitly framed as only for many-note rows.",
      "next": "Keep the builder useful for people with candidate notes while making the first contribution action clear for non-benchmark visitors.",
      "links": [
        { "label": "Contribute", "href": "#run" },
        { "label": "Current blocker", "href": "#current-run" },
        { "label": "Row builder", "href": "#run-builder" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The evidence ledger now opens as a public task board",
      "why": "The Evidence section had the right blocker details, but it still read like a dense ledger and could briefly open in a loading state even though the current-run facts already existed in the repo.",
      "proof": "The Evidence heading now asks what is useful now and what still needs public work. The current-run card ships with static 9/57 counts and an Open public task strip with Bring, Do, and Done steps; the renderer refreshes those fields from current-run.json when it loads.",
      "next": "Use the visible task to recruit a non-capped provider resume run, then replace the blocker receipt with a reviewed aggregate current row.",
      "links": [
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Current row task", "href": "#current-run" },
        { "label": "Public work queue", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Evidence rows now carry their claim boundary",
      "why": "The Evidence section warned that launch rows are historical, but the table rows themselves could still be read as a current leaderboard once someone scrolled past the explanation.",
      "proof": "The historical table now opens with a visible caption and a Claim boundary column. Each powered row says Historical only and not current ranking; smoke rows say Smoke only and not ranked.",
      "next": "Keep making the ledger impossible to misread: current claims need a completed current powered row, while old rows can only support the failure-gradient story.",
      "links": [
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Historical baselines", "href": "#historical-baselines-title" },
        { "label": "Current blocker", "href": "#current-run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The first copied packet now reads like a review handoff",
      "why": "The first-screen receipt showed the right source-note evidence, but the copied packet opened with title/date/scope metadata. That made the artifact feel more like benchmark output than something a reviewer could paste into a decision thread.",
      "proof": "The first copy action now creates a review packet that starts with use-now, verdict, what happened, case, date, flagged source-note evidence, what it can and cannot support, the evidence boundary, and the next proof step. The first-screen buttons now say Copy review packet.",
      "next": "Keep making each public artifact lead with the decision it helps, then the evidence and boundary that keep the claim honest.",
      "links": [
        { "label": "Check one note", "href": "#quick-check-form" },
        { "label": "Public evidence card", "href": "#public-evidence-card" },
        { "label": "Public guide", "href": "#next-steps" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The public queue now gives contributors a copyable task",
      "why": "The Contribute section showed the current blocker and row builder, but a visitor still had to write their own public ask before recruiting help or posting a build-in-public update.",
      "proof": "The Public work queue now includes a copyable task generated from the live current-run status: scored/generated/blocked counts, the ask, blocker, done condition, no-raw-notes boundary, and the current-run reference.",
      "next": "Use the copied public task to recruit a non-capped provider resume run, then replace the blocker receipt with a reviewed aggregate current row.",
      "links": [
        { "label": "Public work queue", "href": "#run" },
        { "label": "Current blocker receipt", "href": "#current-run" },
        { "label": "Build row command", "href": "#run-builder" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Claim evidence cards now land in the claim path",
      "why": "The claim checker could create a useful public evidence card, but the handoff landed beside the default source-plus-note router and kept note-checking as the primary card action. That made the output feel generic after a visitor had just challenged a public claim.",
      "proof": "When a claim is turned into a public evidence card, the Start router now switches to the public-claim route, the card's primary action becomes copying the claim card, and the secondary actions point back to editing the claim or following the evidence path that would close it.",
      "next": "Keep making every generated artifact carry the context that created it: one-note review, claim ask, blocker receipt, or aggregate evidence row.",
      "links": [
        { "label": "Claim checker", "href": "#claim-check" },
        { "label": "Public evidence card", "href": "#public-evidence-card" },
        { "label": "Start router", "href": "#main" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The homepage now says what visitors do here",
      "why": "The first screen had a useful seeded receipt, but the left hero repeated the same seeded example instead of answering the public-facing question: who visits ScribeBench and what do they leave with?",
      "proof": "The hero now names the three practical jobs: clinical reviewers copy a QA packet from one source-note pair, buyers or operators turn claims into evidence asks, and builders or contributors add aggregate rows only when the batch and method are declared. The full seeded receipt remains in the checker where the artifact belongs.",
      "next": "Keep using the first screen for action and purpose: one useful receipt first, then clear paths for claims and aggregate evidence.",
      "links": [
        { "label": "Start here", "href": "#main" },
        { "label": "Check one note", "href": "#quick-check-form" },
        { "label": "Public guide", "href": "#next-steps" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The Guide now answers the cold-visitor question first",
      "why": "The Guide had the right pieces, but it still jumped from a high-level purpose into visitor roles, repo components, and public rows before plainly saying what someone should paste and what they get back.",
      "proof": "The Guide now opens with a one-pass answer strip: who this is for, what to paste, what artifact comes back, and what not to claim. The three Guide cards now use first-person visitor jobs instead of role labels, and the repo explanation starts from the evidence loop before naming implementation pieces.",
      "next": "Keep pressure-testing the first visit until every section earns its place by helping someone check a note, challenge a claim, or add citable aggregate evidence.",
      "links": [
        { "label": "Public guide", "href": "#next-steps" },
        { "label": "Check one note", "href": "#quick-check-form" },
        { "label": "Claim checker", "href": "#claim-check" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Lab copy now reads like a note-review packet",
      "why": "The Lab result had become useful on the page, but the copied output still opened with scope, scores, rubric, and benchmark language. That made the public artifact feel like internal eval output instead of something a reviewer or buyer could paste into a decision thread.",
      "proof": "The Lab buttons now copy a Review packet and Detailed review. The copied text starts with use-now, verdict, summary, boundary, and flagged source-note issues, including note and source excerpts, before method details such as judge, rubric, and scores.",
      "next": "Keep making each copied artifact stand on its own: first what happened, then why it matters, then the method boundary.",
      "links": [
        { "label": "Lab workbench", "href": "#lab-workbench" },
        { "label": "Review packet", "href": "#evidence-packet" },
        { "label": "Check one note", "href": "#quick-check-form" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The Lab now opens on the review workbench, not model plumbing",
      "why": "After a visitor clicked Ask second opinion, the page still made them pass through current-model lists and workflow cards before the actual source-note workspace. That made the Lab feel like benchmark machinery instead of a usable next step for one note.",
      "proof": "The Lab section now puts the source/note/result workbench first, adds a stable Lab workbench anchor, and sends first-screen handoffs directly there. The Lab packet copy now starts with note-review use before mentioning aggregate system comparisons.",
      "next": "Keep making every escalation path answer the user's immediate question first, then show broader evidence options only after the practical artifact is visible.",
      "links": [
        { "label": "Lab workbench", "href": "#lab-workbench" },
        { "label": "Check one note", "href": "#quick-check-form" },
        { "label": "Current model lane", "href": "#lab" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The first checker no longer starts with model-smoke controls",
      "why": "A cold visitor should understand the first job without decoding benchmark plumbing. The old first-screen action row mixed Check note now with Smoke current models, which made the product feel like a vague leaderboard instead of a practical source-vs-note QA tool.",
      "proof": "The first checker now keeps only note-review actions: check the note, reload the seeded failure, or ask for a Lab second opinion. The live current-model lane moved into the Lab, where model-backed smoke checks belong as an escalation step.",
      "next": "Keep the front door anchored on one-note QA while using the Lab and Contribute sections for model-backed checks and powered evidence rows.",
      "links": [
        { "label": "Check one note", "href": "#quick-check-form" },
        { "label": "Optional second opinion", "href": "#lab" },
        { "label": "Add powered row", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Own-note results no longer look like the demo",
      "why": "The checker caught real pasted-note issues, but the result header still said Default artifact. That made a visitor-owned QA packet feel canned.",
      "proof": "Quick-check results now label pasted source-note pairs as Your QA packet, seeded examples as Seeded example receipt, and other loaded cases as Loaded case receipt. A regression test prevents the old demo label from returning.",
      "next": "Keep separating the practical note-review path from deeper benchmark language so the first visit feels like a tool, not a report.",
      "links": [
        { "label": "Check one note", "href": "#quick-check-form" },
        { "label": "Public evidence card", "href": "#public-evidence-card" },
        { "label": "Guide", "href": "#next-steps" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Contribute now starts with the next public job",
      "why": "The site explained evidence levels, but the contribution surface still made visitors decode benchmark controls before seeing the one concrete public thing that would make the project more useful.",
      "proof": "The Add Row section now opens with a Public work queue tied to the live current-run status: active job, blocker, done condition, why it matters, and direct actions into the blocker receipt or powered-row command builder.",
      "next": "Use the queue to recruit a non-capped PriMock57 resume run, then replace the blocker receipt with a reviewed aggregate current row.",
      "links": [
        { "label": "Public work queue", "href": "#run" },
        { "label": "Current blocker receipt", "href": "#current-run" },
        { "label": "Build row command", "href": "#run-builder" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Current PriMock57 public run advanced to 9 scored cases",
      "why": "The strongest critique was still fair: old rows are not enough. A worthwhile public artifact needs fresh current-model evidence, even when the run is incomplete.",
      "proof": "Raised the live judge payload limit from 18k to 60k characters so generated PriMock57 notes can be judged, then resumed the production public API runner against a 30-case selection. The current attempt now has 13 generated notes and 9 scored PriMock57 cases, with a partial 11.1% dangerous-fabrication signal and 21 errored or excluded cases from timeouts, parser failure, and OpenRouter free-model rate limits. It remains smoke-level current public-path evidence, not a ranked row.",
      "next": "Resume the cached run with OpenRouter credits, a non-capped provider key, or a faster second judge until at least 30 PriMock57 cases are scored, then publish aggregate-only scores after method review.",
      "links": [
        { "label": "Current run status", "href": "#current-run" },
        { "label": "Run builder", "href": "#run" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The public page now has one guide instead of five overlapping explanations",
      "why": "The site had become more useful, but the middle of the page still stacked Who, After receipt, Public action kit, Why, and What it is sections. That made the project feel overexplained and harder to understand.",
      "proof": "Those overlapping blocks are now consolidated into one Public guide that names the three visitor jobs, the repo loop, the evidence limits, and the next useful click. Legacy anchors still land on the guide so old links do not dead-end.",
      "next": "Keep pruning duplicate explanation and put the saved attention into stronger live evidence rows.",
      "links": [
        { "label": "Public guide", "href": "#next-steps" },
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The no-key checker now catches invented urgent follow-up",
      "why": "A practical source-vs-note review is not just diagnoses and test results. An AI note can also invent an urgent follow-up plan, turning routine discharge instructions into a new obligation for the clinician or patient.",
      "proof": "The browser-only receipt now checks urgent follow-up timing such as tomorrow, 24 hours, 48 hours, or 1-2 days against source support and explicit contradictions like follow up as needed or no scheduled follow-up. Focused tests cover unsupported urgent follow-up and supported or negated non-catches.",
      "next": "Keep strengthening the walk-up checker around concrete note-review risks before adding more explanatory site sections.",
      "links": [
        { "label": "Check one note", "href": "#quick-check-form" },
        { "label": "Detailed receipt", "href": "#quick-check" },
        { "label": "Public evidence card", "href": "#public-evidence-card" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Public evidence cards now include the actual flagged snippets",
      "why": "The one-note receipt had useful note/source excerpts, but the first-screen public evidence card collapsed the result into a generic issue count. That made the shareable artifact feel less useful than the detailed receipt it came from.",
      "proof": "One-note QA cards now show a Flagged evidence section with the top source-note issues plus note and source excerpts, and the copy-ready public card includes the same snippets. Claim and smoke cards stay concise when they do not have source-note evidence rows.",
      "next": "Keep tightening the public artifacts so every copied packet contains enough evidence to stand on its own without making the reader hunt around the page.",
      "links": [
        { "label": "Check one note", "href": "#quick-check-form" },
        { "label": "Public evidence card", "href": "#public-evidence-card" },
        { "label": "Detailed receipt", "href": "#quick-check" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The first screen now says what the browser check catches",
      "why": "The page could produce a useful one-note QA packet, but the first screen still spent prime space on abstract paths like claims, rows, and blockers before explaining the concrete checks a visitor gets immediately.",
      "proof": "The first-screen checker now shows a compact Browser check catches grid: invented lab/imaging/ECG results, medication/treatment/order changes, diagnosis/workup story changes, and demographic/laterality/allergy/template issues. The deeper route chooser still handles claims, candidate notes, and current-row blockers.",
      "next": "Keep making the public artifact answer one cold-visitor question at a time: what do I paste, what can it catch, what do I leave with, and what can I publicly claim.",
      "links": [
        { "label": "Check one note", "href": "#quick-check-form" },
        { "label": "Who uses this", "href": "#who-uses-this" },
        { "label": "What it is", "href": "#repo-map" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The no-key checker now catches invented test results",
      "why": "The browser receipt could catch invented medication changes, diagnoses, treatments, and orders, but production still let a note claim lab, imaging, or ECG results when the source said no test happened.",
      "proof": "The browser-only receipt now checks positive lab, imaging, and ECG result language against visible source support and explicit contradictions such as no labs obtained, no x-ray performed, or no ECG performed. Focused tests cover invented CBC/x-ray results, invented ECG/troponin results, and supported or negated non-catches.",
      "next": "Keep expanding the instant receipt around concrete signer-risk facts: results, follow-up, medication changes, orders, diagnoses, treatments, and disposition.",
      "links": [
        { "label": "Check one note", "href": "#quick-check-form" },
        { "label": "Detailed receipt", "href": "#quick-check" },
        { "label": "Fabrication taxonomy", "href": "https://github.com/napiermd/scribe-bench/blob/main/docs/fabrication-taxonomy.md" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The no-key checker now catches invented medication changes",
      "why": "The browser receipt could catch invented treatment actions and care-plan orders, but production still let a note claim a medication was started, stopped, held, resumed, increased, or decreased when the source did not support that change.",
      "proof": "The browser-only receipt now checks medication-change actions against visible source support and explicit contradictions such as no medication changes or no prescriptions. Focused tests cover invented antihypertensive changes, unsupported gabapentin prescriptions, and supported or negated non-catches.",
      "next": "Keep expanding the instant receipt around concrete things a signer inherits: medication changes, follow-up, results, diagnoses, orders, and disposition.",
      "links": [
        { "label": "Check one note", "href": "#quick-check-form" },
        { "label": "Detailed receipt", "href": "#quick-check" },
        { "label": "Fabrication taxonomy", "href": "https://github.com/napiermd/scribe-bench/blob/main/docs/fabrication-taxonomy.md" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The no-key checker now catches invented orders and referrals",
      "why": "The browser receipt had become useful for symptoms, diagnoses, and treatment actions, but production still let a note claim an x-ray was ordered or an orthopedic referral was placed when the source explicitly said neither happened.",
      "proof": "The browser-only receipt now checks positive care-plan actions for imaging orders, specialist referrals, lab orders, and admission or ED-transfer escalation. Focused tests cover unsupported order/referral catches, lab and ED-transfer catches, plus supported and negated non-catches.",
      "next": "Keep turning the checker into a practical first-pass QA artifact by adding concrete, clinically meaningful invention classes instead of generic benchmark copy.",
      "links": [
        { "label": "Check one note", "href": "#quick-check-form" },
        { "label": "Detailed receipt", "href": "#quick-check" },
        { "label": "Fabrication taxonomy", "href": "https://github.com/napiermd/scribe-bench/blob/main/docs/fabrication-taxonomy.md" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The no-key checker now catches diagnosis escalations",
      "why": "The checker had become useful for treatment inventions, but it could still miss an AI note that escalated a benign source encounter into pneumonia, sepsis, fracture, or stroke without support.",
      "proof": "The browser-only receipt now checks positive diagnosis-style phrasing for pneumonia, sepsis, fracture, and stroke. It flags explicit source contradictions and missing visible support, while ignoring supported, negated, and rule-out diagnosis language.",
      "next": "Keep moving the no-key checker toward concrete invented-care categories people actually need to catch before trusting a generated note.",
      "links": [
        { "label": "Check one note", "href": "#quick-check-form" },
        { "label": "Detailed receipt", "href": "#quick-check" },
        { "label": "Fabrication taxonomy", "href": "https://github.com/napiermd/scribe-bench/blob/main/docs/fabrication-taxonomy.md" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The no-key checker now catches invented treatment actions",
      "why": "The source-vs-note checker could catch invented workups and common contradicted facts, but it still missed a clinically important case: the note claiming antibiotics, IV fluids, steroids, or insulin were given when the source did not support that care.",
      "proof": "The browser-only receipt now checks positive treatment actions for antibiotics, IV fluids, steroids, and insulin, separates source contradictions from missing visible support, and shows note/source excerpts in the QA packet. Focused tests cover unsupported antibiotic and IV-fluid inventions plus supported and negated non-catches.",
      "next": "Keep strengthening the no-key checker around the concrete things AI notes invent: treatment delivered, orders placed, diagnoses escalated, and follow-up that never happened.",
      "links": [
        { "label": "Check one note", "href": "#quick-check-form" },
        { "label": "Detailed receipt", "href": "#quick-check" },
        { "label": "Fabrication taxonomy", "href": "https://github.com/napiermd/scribe-bench/blob/main/docs/fabrication-taxonomy.md" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The first-screen router now starts from what the visitor has",
      "why": "The homepage named audiences, but a cold visitor still had to decide whether they were a buyer, reviewer, builder, or contributor before knowing what to click.",
      "proof": "The first-screen router now starts from the actual input: source plus AI note, public claim, candidate notes, or current evidence gap. Each path names the artifact it creates: QA packet, evidence ask, citable row, or blocker receipt.",
      "next": "Keep treating the site as an artifact router: input in hand first, public evidence output second, audience labels only as supporting context.",
      "links": [
        { "label": "Start here", "href": "#main" },
        { "label": "Check one note", "href": "#quick-check-form" },
        { "label": "Current blocker receipt", "href": "#current-run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Claim checks now point to the evidence artifact that would close them",
      "why": "The claim checker turned vague AI-scribe language into a public ask, but it still left visitors to infer which ScribeBench artifact would actually satisfy the claim.",
      "proof": "Each claim type now shows an Evidence path: the closing artifact, what the site can prove today, and the next click. Safety claims route toward powered aggregate rows, one-note claims route to QA packets, comparison claims route to comparable runs, and current-ranking claims route to the blocker or Add Row path.",
      "next": "Keep connecting every public claim to the artifact that would make it citeable instead of leaving visitors with abstract benchmark advice.",
      "links": [
        { "label": "Claim checker", "href": "#claim-check" },
        { "label": "Add row", "href": "#run" },
        { "label": "Current blocker receipt", "href": "#current-run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Add Row now starts from what the visitor actually has",
      "why": "The Add Row path was accurate but too benchmark-native. It opened with candidate files, judge backends, and presets before helping a visitor decide whether they had a one-note QA issue, a claim, candidate notes, or a blocked run.",
      "proof": "The Run section now includes a Start from what you have chooser: one source-note pair routes to the checker, a vendor or model claim routes to the claim checker, candidate notes jump into the powered-row builder, and cap/partial-run states route to the current blocker receipt.",
      "next": "Keep making contribution paths honest about evidence level so people do not mistake one note, smoke tests, or blocked runs for publishable system rows.",
      "links": [
        { "label": "Add row", "href": "#run" },
        { "label": "Check one note", "href": "#quick-check-form" },
        { "label": "Current blocker receipt", "href": "#current-run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The checker now says exactly what visitors leave with",
      "why": "The first-screen form worked, but a new visitor still had to infer the payoff from the seeded demo. That made the site feel closer to a canned benchmark page than a usable public QA tool.",
      "proof": "The checker now includes a compact output contract: bring source plus AI note, run browser QA with no key, leave with flagged issues, note/source excerpts, evidence boundary, and the next public ask. It also states the boundary that one note is QA evidence, not clinical clearance or a system ranking.",
      "next": "Keep tying every action to a concrete artifact: QA packet, claim ask, smoke packet, or aggregate row.",
      "links": [
        { "label": "Quick checker", "href": "#quick-check" },
        { "label": "Check your own note", "href": "#quick-check-form" },
        { "label": "Public action kit", "href": "#public-action-kit" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Check your own note now clears the demo",
      "why": "The first-screen CTA said Check your own note, but it only jumped to a form still filled with the seeded failure. That made the real visitor path feel like a demo they had to erase by hand.",
      "proof": "The Clinical QA tile and the Public evidence card CTA now switch the quick checker into a blank own-note state: source and generated-note boxes are cleared, seeded result artifacts are hidden, the form is focused, and the Reload seeded failure action remains available.",
      "next": "Keep separating demo mode from visitor-input mode so the site feels like a tool, not a prefilled page.",
      "links": [
        { "label": "Check your own note", "href": "#quick-check-form" },
        { "label": "Reload seeded failure", "href": "#quick-check-form" },
        { "label": "Quick checker", "href": "#quick-check" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "blocked",
      "title": "The current PriMock57 row has a fresh blocker receipt",
      "why": "The site kept saying the public board needed current rows, but the current-run card did not make the latest retry concrete enough. A stale or vague blocker makes the project feel like an old leaderboard with excuses.",
      "proof": "The public API runner retried the first five PriMock57 cases on June 30, 2026 at 22:48 UTC. The result is still 1/57 target cases scored: PM57-d1c01 scored, PM57-d1c02 and PM57-d1c03 have cached generated notes waiting on judge calls, and PM57-d1c04 plus PM57-d1c05 are blocked before generation by OpenRouter's free-model daily cap. The current-run card now shows the latest retry time and a Free-model cap hit status.",
      "next": "Add OpenRouter credits, use a non-capped provider key through the documented --key-env path, or configure a second judge, then resume the cached run toward at least 30 scored PriMock57 cases.",
      "links": [
        { "label": "Current run receipt", "href": "#current-run" },
        { "label": "Copy resume command", "href": "#current-run" },
        { "label": "Run builder", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The first evidence card now points to the real tool",
      "why": "The first screen showed a useful seeded evidence card, but the visible primary action was to copy that canned receipt while the source-note form sat below the fold. A cold visitor could read it as a static demo instead of a usable checker.",
      "proof": "The first visitor path now anchors directly to the source-note form, the helper copy says the seeded case is only there to show the artifact, the Public evidence card starts with Check your own note before secondary share actions, and delayed hash realignment keeps deep links landing on the form after the seeded result expands.",
      "next": "Keep making the first viewport answer what a visitor can do with their own note before adding more explanatory sections.",
      "links": [
        { "label": "Check your own note", "href": "#quick-check-form" },
        { "label": "Public evidence card", "href": "#quick-check" },
        { "label": "Who this is for", "href": "#who-uses-this" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The evidence card order now matches the document order",
      "why": "The mobile screen showed the Public evidence card before the source-note form, but CSS ordering left the form earlier in the DOM. Keyboard and assistive-technology users could hit the edit form before the artifact the screen visually emphasized.",
      "proof": "The Public evidence card now lives before the quick-check form in the markup, and the mobile CSS order overrides for the card/form sequence were removed. The result-first path is now visual order and document order.",
      "next": "Keep checking that responsive layout changes do not create a separate hidden reading order.",
      "links": [
        { "label": "Public evidence card", "href": "#quick-check" },
        { "label": "Edit source / note", "href": "#quick-check-form" },
        { "label": "Accessibility note", "href": "#quick-check" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Mobile now shows the evidence card before the edit form",
      "why": "The mobile first screen finally explained the point, but it still forced visitors through source and note textareas before showing the useful public artifact. That made ScribeBench feel like a form demo instead of an evidence tool.",
      "proof": "On small screens the Public evidence card now appears before the source-note form when a seeded result is available, with a mobile-only Edit source / note action for people who want to test their own pair.",
      "next": "Keep mobile result-first: show the artifact, then expose editing and deeper Lab controls as the next step.",
      "links": [
        { "label": "Public evidence card", "href": "#quick-check" },
        { "label": "Edit source / note", "href": "#quick-check-form" },
        { "label": "Claim checker", "href": "#claim-check" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Mobile visitors now see the point before the form",
      "why": "Desktop visitors saw the hero explanation next to the checker, but mobile visitors landed directly in a source-note form before seeing why ScribeBench exists or what public artifact they would leave with.",
      "proof": "The first mobile checker now includes a compact proof strip: fluent AI notes can add care that never happened, ScribeBench turns the source-vs-note gap into a copyable evidence card, and one note is QA rather than a ranking.",
      "next": "Keep checking mobile first; if the first viewport reads like a generic form, add context before adding more sections.",
      "links": [
        { "label": "Mobile checker", "href": "#quick-check" },
        { "label": "Public evidence card", "href": "#quick-check" },
        { "label": "Who this is for", "href": "#who-uses-this" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The evidence-card copy action is now visible before the preview",
      "why": "The site had promoted the Public evidence card as the main leave-behind, but the Copy evidence card action still appeared below the long copy-preview block. That made the artifact visible before it was obviously usable.",
      "proof": "The Public evidence card now shows the primary copy action immediately after the evidence fields, before the scroll-contained copy-ready text. Visitors can act on the card before reading the full block.",
      "next": "Keep placing the primary action at the moment the artifact becomes understandable.",
      "links": [
        { "label": "Public evidence card", "href": "#quick-check" },
        { "label": "Claim checker", "href": "#claim-check" },
        { "label": "Add powered row", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The repo map now shows the evidence system loop",
      "why": "The What it is section listed website, APIs, evaluator, data, and ledger pieces, but a cold visitor still had to infer how those pieces became a useful public workflow.",
      "proof": "The repo map now opens with the loop: one source-note check becomes a public evidence card, and many checked notes become a scores-only public row. The README now uses the same one-note-to-card, many-notes-to-row framing.",
      "next": "Keep making every section answer what the visitor can do, what artifact they leave with, and what claim that artifact can support.",
      "links": [
        { "label": "What it is", "href": "#repo-map" },
        { "label": "Public evidence card", "href": "#quick-check" },
        { "label": "Add public row", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "The public evidence card now appears before the detailed receipt",
      "why": "The first screen promised evidence, but after a note check the visitor still saw the long QA receipt before the shareable card. That made the useful leave-behind feel secondary.",
      "proof": "The first result artifact after a note check is now the Public evidence card: what happened, evidence level, boundary, next public ask, and copy-ready text. The detailed source-note receipt follows underneath for review.",
      "next": "Keep treating the evidence card as the main public output and the detailed receipt as supporting proof.",
      "links": [
        { "label": "Public evidence card", "href": "#quick-check" },
        { "label": "Detailed receipt", "href": "#quick-check" },
        { "label": "Claim checker", "href": "#claim-check" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "First screen now names the visitor jobs",
      "why": "The site could already check notes, challenge claims, and collect aggregate rows, but the first screen still led with evidence modes before saying who should use them. That left the product feeling like an internal benchmark page.",
      "proof": "The first viewport now names the three public jobs directly: clinical QA reviewers can review one AI note, buyers and operators can challenge a claim, and builders or contributors can add a public evidence row. The hero headline also promises the actual leave-behind: evidence.",
      "next": "Keep compressing the first-screen path until a cold visitor can pick the right job without reading the whole page.",
      "links": [
        { "label": "Review one AI note", "href": "#quick-check" },
        { "label": "Challenge a claim", "href": "#claim-check" },
        { "label": "Add public row", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Outputs now converge into one public evidence card",
      "why": "The site had useful receipt, smoke, and claim-copy actions, but they still felt like separate widgets. A visitor needed one obvious public artifact to leave with.",
      "proof": "One-note receipts, completed current-smoke packets, and claim asks can now create the same Public evidence card. The card states what happened, the evidence level, the boundary, the next public ask, and exposes one copy-ready block.",
      "next": "Keep using the public evidence card as the default leave-behind, then reserve powered rows for aggregate claims.",
      "links": [
        { "label": "Public evidence card", "href": "#quick-check" },
        { "label": "Claim checker", "href": "#claim-check" },
        { "label": "Add powered row", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Current smoke now leaves a first-screen packet",
      "why": "The first screen exposed the current-model smoke button, but clicking it still sent visitors into the Lab to understand what happened. That made the live-model path feel like plumbing rather than a public artifact.",
      "proof": "The first-screen smoke action now shows a Current smoke packet with running, blocked, and complete states. A completed smoke summarizes the case, generator, judge, evidence boundary, and copyable packet while the detailed Lab result remains one click away.",
      "next": "Keep turning every public action into a visible artifact: local QA receipt, current smoke packet, claim ask, or powered aggregate row.",
      "links": [
        { "label": "Current smoke", "href": "#quick-check" },
        { "label": "Live Lab", "href": "#lab" },
        { "label": "Add powered row", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "First checker now exposes the current-smoke path",
      "why": "The page could run a current OpenRouter smoke check from the Lab, but the first screen still looked like only a local receipt tool. That made visitors work too hard to understand how no-key QA, current smoke, and powered evidence rows relate.",
      "proof": "The first-screen checker now has a compact proof-mode strip for no-key receipt, current-model smoke, and powered row, plus a Run current-model smoke button wired to the existing Lab smoke path. The README Start here table now names the current free-model smoke job directly.",
      "next": "Keep the first-screen actions aligned with evidence levels: one note for QA, smoke for plumbing, powered rows for public comparison.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Live Lab", "href": "#lab" },
        { "label": "Add row", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "First screen now answers what can be used today",
      "why": "The hero had a live proof trail, but leading with the latest shipped change made the artifact feel self-referential. The stronger public answer is what a visitor can use today, what remains unproven, and where the current row is blocked.",
      "proof": "The first screen now labels the top proof card Today's answer and says ScribeBench is useful for one-note QA but not a current winner board. It keeps the current PriMock57 gap and evidence boundary above the fold while the detailed worklog stays lower on the page.",
      "next": "Keep the first viewport focused on reader decisions: use now, do not overclaim, and contribute the next proof row.",
      "links": [
        { "label": "Today's answer", "href": "#main" },
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Current run status", "href": "#current-run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Receipts now route visitors to the next useful action",
      "why": "After the first-screen checker found a source-note issue, the visitor still had to choose among broad site sections. That made the product feel more like a dense benchmark page than a usable QA workflow.",
      "proof": "Quick-check receipts now include a Use this result panel. For flagged source-note issues it recommends using the result as a QA finding first, then offers direct actions to copy the QA packet, challenge a claim, or add aggregate evidence. Clean triage and leak results get different guidance.",
      "next": "Keep attaching every result to a concrete artifact someone can use immediately: QA packet, claim ask, or aggregate row plan.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Claim checker", "href": "#claim-check" },
        { "label": "Add aggregate row", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "First screen now shows the actual receipt shape before abstraction",
      "why": "The site had become useful, but the opening still leaned on explanatory promise language. A skeptical visitor needed to see the concrete source-vs-note catch immediately, not infer it from role cards.",
      "proof": "The hero now opens with the seeded ScribeBench catch: the AI note invents a negative head CT and syncope workup while the source says mechanical rug trip, no head strike, and no loss of consciousness. The page names the output as two reviewable source-note issues plus a copyable QA packet before the visitor reaches the detailed receipt.",
      "next": "Keep reducing abstract benchmark copy in favor of visible artifacts: source, note, finding, evidence boundary, and next public action.",
      "links": [
        { "label": "Start here", "href": "#main" },
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Public action kit", "href": "#public-action-kit" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Public API retries now update the current-run receipt automatically",
      "why": "The current-row blocker is the most important evidence gap. Before this, a retry could update the ignored cache and pending artifact while the public status card still needed manual JSON editing.",
      "proof": "The public API benchmark runner now builds the same current-run status object the website renders, writes site/current-run.json for PriMock57 attempts, includes selected/generated/scored/errored counts, blocked case ids, latest blocker text, last scored case, and a copyable resume command. Focused tests cover the partial-run blocker receipt.",
      "next": "Use the runner as the single path for future current-row retries, then publish aggregate scores only after at least 30 PriMock57 cases are scored.",
      "links": [
        { "label": "Current run status", "href": "#current-run" },
        { "label": "Runner source", "href": "https://github.com/napiermd/scribe-bench/blob/main/scripts/run_public_api_benchmark.ts" },
        { "label": "README public API path", "href": "https://github.com/napiermd/scribe-bench#current-public-api-run-path" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "open",
      "title": "Current PriMock57 row was retried and is blocked by free-model cap",
      "why": "The biggest remaining weakness is the lack of current powered rows. Leaving the blocker as an old status would make the build-in-public trail feel performative instead of useful.",
      "proof": "Retried the live public API runner against the first 5 PriMock57 cases on July 1 ICT. PM57-d1c01 remains the only scored case; PM57-d1c02 and PM57-d1c03 have cached notes but judge calls hit OpenRouter's free-model daily cap, and PM57-d1c04/PM57-d1c05 could not generate for the same cap. current-run.json now reports 1/5 attempted and 1/57 target cases scored.",
      "next": "Add OpenRouter credits, use a non-capped local provider key, or switch to a faster second judge, then resume toward at least 30 scored PriMock57 cases before publishing any ranked current row.",
      "links": [
        { "label": "Current run status", "href": "#current-run" },
        { "label": "Run builder", "href": "#run" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "First screen now shows the live proof trail",
      "why": "ScribeBench explained the workflow, but the public build-in-public signal still lived farther down the page. A skeptical visitor could miss what changed recently, what is still missing, and what can honestly be cited.",
      "proof": "Added a first-screen Live proof trail that reads the latest worklog entry, current PriMock57 row status, and evidence boundary from the same public JSON assets as the detailed ledger. The README Start here table now names that entry point.",
      "next": "Keep the first screen alive: every major public change should update the proof trail, not just the lower worklog.",
      "links": [
        { "label": "Live proof trail", "href": "#main" },
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Public work log", "href": "#worklog" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Visitors now get a public action kit",
      "why": "ScribeBench had useful receipts, claim asks, and run plans, but visitors still had to assemble the public-facing language themselves. That made the site feel more like a tool drawer than a build-in-public artifact.",
      "proof": "Added a Public action kit after the evidence ladder with copyable language for a QA post, a vendor evidence ask, and a current-row request. The README now links directly to the kit from Start here.",
      "next": "Keep making every public path end in a thing someone can paste into QA, vendor review, GitHub, or a public evidence thread.",
      "links": [
        { "label": "Public action kit", "href": "#public-action-kit" },
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Claim checker", "href": "#claim-check" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Evidence rows now carry a freshness receipt",
      "why": "The site repeatedly warned that old launch rows are not a current leaderboard, but the evidence table still looked enough like a ranking that visitors could miss the point. That made the old-model criticism too easy to repeat.",
      "proof": "Added a freshness receipt above the evidence rows that separates historical launch baselines, the current-row gap, smoke-test plumbing evidence, and the exact next powered PriMock57 artifact needed. The README evidence section now says evidence ledger, not current leaderboard.",
      "next": "Use the freshness receipt as the default public answer whenever someone asks whether ScribeBench proves today's best AI scribe.",
      "links": [
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Current blocker", "href": "#current-run" },
        { "label": "Submission guide", "href": "https://github.com/napiermd/scribe-bench/blob/main/leaderboard/SUBMISSION.md" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "First receipt now shows the copy-ready QA packet",
      "why": "The checker could produce a useful source-vs-note receipt, but the artifact was mostly hidden behind the copy button. Visitors still had to trust that copying would give them something usable.",
      "proof": "The first-screen checker now renders the copy-ready ScribeBench QA packet on-screen, including scope, case, finding, evidence meaning, flagged issues, next proof step, and reference URL. The README start-here table now promises a copy-ready QA packet instead of a vague receipt.",
      "next": "Keep improving the actual takeaways people can paste into QA, vendor review, or a public evidence thread.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Who this is for", "href": "#who-uses-this" },
        { "label": "README", "href": "https://github.com/napiermd/scribe-bench#start-here" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Audience fit is now explicit",
      "why": "The site showed useful tools, but visitors still had to infer whether ScribeBench was for reviewers, buyers, builders, researchers, or the general public. That ambiguity made the artifact easier to dismiss as a vague benchmark page.",
      "proof": "Added a Who this is for section with four concrete audiences, what each person brings, what they leave with, and a Not for boundary. The README now carries the same audience framing before the start-here table.",
      "next": "Keep the first public path tied to a named visitor and a concrete output, especially when adding new evidence rows.",
      "links": [
        { "label": "Who this is for", "href": "#who-uses-this" },
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Add evidence", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Research context now points to the live preprint",
      "why": "The public site said ScribeBench was a reproducibility artifact, but visitors could not reach the actual closed-loop clinical documentation QA paper from the artifact itself. That made the project feel weaker and less grounded than the NapierMD clinical-AI story.",
      "proof": "Added the medRxiv preprint link and DOI to the README and methodology, added a research-context card to the Why this exists section, and surfaced the preprint from the site header area and footer.",
      "next": "Keep each public entry point tied to a concrete thing a visitor can read, run, cite, or challenge.",
      "links": [
        { "label": "Preprint", "href": "https://www.medrxiv.org/content/10.64898/2026.05.27.26353977v1" },
        { "label": "Why this exists", "href": "#why-this-exists" },
        { "label": "Methodology", "href": "https://github.com/napiermd/scribe-bench/blob/main/docs/methodology.md" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Shared links now show the actual product",
      "why": "The site claimed a large social card but shipped no image metadata. A public build-in-public artifact needs to look intentional when linked from NapierMD, GitHub, Slack, or social posts, not like a bare static page.",
      "proof": "The site now publishes an Open Graph and Twitter image using the real first-screen checker screenshot, with alt text and static build copying so Vercel serves the image at /og-image.jpg.",
      "next": "Keep public packaging aligned with the product itself: shared previews should show the working checker and receipt, not generic branding.",
      "links": [
        { "label": "Live site", "href": "https://scribe-bench.vercel.app" },
        { "label": "Share image", "href": "/og-image.jpg" },
        { "label": "Check one note", "href": "#quick-check" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "First screen now leads with visitor outputs",
      "why": "Fresh production screenshots showed the page was useful, but visitors still had to infer the actual public artifact from benchmark language. That made the project easier to dismiss as a vague leaderboard instead of a tool people can use.",
      "proof": "The first screen now states the three takeaways directly: a source-vs-note QA receipt, a copyable public evidence ask for vendor claims, or a current aggregate row plan. The seeded checker copy also names the unsupported head CT and syncope workup so the first visit shows the point immediately. On mobile, the working no-key checker now appears before the explanatory rail.",
      "next": "Keep every above-the-fold path tied to a thing someone can copy, cite, or run, not only to an explanation of the benchmark.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Claim checker", "href": "#claim-check" },
        { "label": "Add row", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Repo metadata now says the public job",
      "why": "The GitHub About text and package description still led with dense benchmark jargon. That kept the repo chrome out of sync with the clearer website and README.",
      "proof": "The package and GitHub repo descriptions now describe ScribeBench as a public workbench for checking whether AI-scribe notes invent care, with receipts and aggregate evidence rows.",
      "next": "Keep every public entry point using the same practical language before deeper benchmark terminology.",
      "links": [
        { "label": "GitHub repo", "href": "https://github.com/napiermd/scribe-bench" },
        { "label": "Live checker", "href": "#quick-check" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "README now starts with live jobs",
      "why": "The GitHub repo still opened with benchmark positioning and methodology before a visitor saw the live site link or the practical jobs. That made the repo entry point feel more academic than useful.",
      "proof": "The README now adds a Start here table immediately after the project summary, with direct links to the live checker, claim checker, evidence ledger, and Add row flow, plus the output each path gives the visitor.",
      "next": "Keep GitHub and the website aligned: every entry point should show the practical job before the methodology.",
      "links": [
        { "label": "GitHub README", "href": "https://github.com/napiermd/scribe-bench#start-here" },
        { "label": "Live checker", "href": "#quick-check" },
        { "label": "Add row", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Add row now explains the public evidence package first",
      "why": "The navigation said Add row, but the target section still opened like a developer command builder. That made the public contribution path feel more technical than it needed to and left non-coders guessing what a row actually publishes.",
      "proof": "The Add row section now leads with a citable-row promise and a three-part contract: what goes public, what stays private, and when to submit. The command builder remains below that contract, and related links now use Add row / add evidence wording instead of Build row.",
      "next": "Keep the contribution path framed around the public artifact first, then the command needed to create it.",
      "links": [
        { "label": "Add row", "href": "#run" },
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Submission guide", "href": "https://github.com/napiermd/scribe-bench/blob/main/leaderboard/SUBMISSION.md" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "First screen answers who, what, and why public",
      "why": "The site had become useful as a one-note checker, but the public-facing point still took too much inference. A skeptical visitor needed an immediate answer to who this is for, what they can do, and why anyone should care about the public evidence trail.",
      "proof": "The first-screen purpose strip now says ScribeBench is for clinical AI buyers, builders, and reviewers; it names the three jobs as checking one note, challenging a claim, or adding evidence; and it frames the public point as receipts and current rows for safe-or-best AI-scribe claims. The top nav now calls the contribution path Add row instead of the vaguer Run it, and direct hash links land without native smooth-scroll drift.",
      "next": "Keep the first viewport ruthless: a visitor should know the audience, action, and public artifact before reading benchmark detail.",
      "links": [
        { "label": "Start here", "href": "#main" },
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Add row", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Run docs now start with the actual system under test",
      "why": "The site separated smoke tests from publishable evidence, but the README and backend docs still opened with provider-generated free-model examples. That made the project look like a toy model leaderboard instead of a harness for scoring real scribe output.",
      "proof": "The Quickstart now begins with a bundled synthetic smoke test, then the powered path asks for candidate notes from the actual current system under test. Provider generation is documented as an optional helper, and the Run builder's serious presets no longer default robustness work to a free-model judge.",
      "next": "Keep free/open models in the smoke lane unless someone completes a declared powered run with enough cases, repeats, judge details, and aggregate scores.",
      "links": [
        { "label": "README Quickstart", "href": "https://github.com/napiermd/scribe-bench#quickstart" },
        { "label": "Model backends", "href": "https://github.com/napiermd/scribe-bench/blob/main/docs/model-backends.md" },
        { "label": "Run builder", "href": "#run" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "README now explains the repo instead of narrating every change",
      "why": "The public site was getting clearer, but the GitHub README still read like a running changelog. That made the repo feel more confusing and more AI-generated than the actual product warranted.",
      "proof": "The Public website section is now a concise orientation: three visitor jobs, explicit non-goals, and a repo map covering the site, local receipt, live API, eval engine, data, and evidence ledger.",
      "next": "Keep the README as the stable map and leave iteration detail in the worklog, not in product copy.",
      "links": [
        { "label": "GitHub README", "href": "https://github.com/napiermd/scribe-bench#public-website" },
        { "label": "What it is", "href": "#repo-map" },
        { "label": "Work log", "href": "#worklog" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Receipts now state what the result can prove",
      "why": "The first-screen checker could catch source-note issues, but a visitor still had to infer what that single receipt meant for a vendor review, public claim, or system-level benchmark. That gap made the site feel more like a clever demo than a usable public evidence artifact.",
      "proof": "Quick-check results now include can-support, cannot-support, and use-next fields. The copied receipt carries the same evidence meaning, so a pasted QA artifact separates one-note review from leaderboard claims and clinical clearance.",
      "next": "Keep making every public output self-explanatory: a visitor should know the evidence level, boundary, and next proof step from the artifact itself.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Next steps", "href": "#next-steps" },
        { "label": "Evidence levels", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-07-01",
      "status": "shipped",
      "title": "Copied receipts use the visitor's local date",
      "why": "A receipt copied just after midnight in Vietnam could still show the previous UTC date. For a QA artifact or vendor-review packet, a wrong-looking date undermines trust even when the findings are correct.",
      "proof": "The quick-check receipt now formats its Date line from the browser's local calendar date instead of slicing an ISO UTC timestamp.",
      "next": "Keep treating copied receipts as evidence artifacts: every field should describe the exact source-note pair, review date, and evidence level a reader is looking at.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Next steps", "href": "#next-steps" },
        { "label": "Live Lab", "href": "#lab" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "First screen puts the checker before the router",
      "why": "The live receipt path worked, but the first screen still asked visitors, especially on mobile, to read a role router before reaching the actual source-vs-note checker. That made the site feel more like benchmark explanation than a tool.",
      "proof": "The purpose copy is now a compact give/get/use strip. The working checker comes before the visitor-path router in document order, so mobile visitors reach the usable receipt first while desktop keeps the router as supporting context beside the live checker.",
      "next": "Keep pushing explanatory benchmark machinery behind the first useful action: paste a source and note, get an inspectable receipt, then choose the evidence path.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Next jobs", "href": "#main" },
        { "label": "Live Lab", "href": "#lab" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Quick receipts can escalate into the Lab",
      "why": "The first-screen receipt could show a useful issue, but using that exact source-note pair in the Lab still required re-pasting or reloading a demo. The post-receipt path felt like a static explanation instead of a workflow.",
      "proof": "Quick-check results now include an Open in Lab with this pair action. It copies the checked source and note into the Lab, preserves seeded-versus-pasted metadata, reruns the local receipt there, and leaves the live judge as the next escalation.",
      "next": "Keep shortening the path from one-note triage to stronger evidence so visitors can move from a receipt to an action without rebuilding context.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Live Lab", "href": "#lab" },
        { "label": "Next steps", "href": "#next-steps" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Receipts now call flags source-note issues",
      "why": "Once demographic, laterality, and allergy contradictions became first-class checks, the UI still called every flag an unsupported clinical item or dangerous fabrication. That made the public receipt sound less precise than the evidence it showed.",
      "proof": "The quick checker, Lab verdicts, copyable summaries, and evidence packets now describe flagged source-note issues and list issue types such as age, sex/gender, laterality, allergy, unsupported care, or arrival mismatch. Demo case receipts also render the same evidence cards as the main checker.",
      "next": "Keep making the public artifact read like a practical QA receipt: one clear issue label, visible proof, and a next action a buyer, builder, or reviewer can use.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Demo cases", "href": "#demo" },
        { "label": "Live Lab", "href": "#lab" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Structured mismatch receipts show their proof",
      "why": "Age, sex/gender, laterality, and allergy contradictions were caught by the browser receipt but still rendered like plain verdict strings, which made some of the most patient-changing flags less inspectable than CT or syncope inventions.",
      "proof": "Local receipts now attach note and source excerpts to structured mismatch findings. A pasted note that changes a 79-year-old woman with right hip pain and penicillin allergy into an 89-year-old man with left hip pain and NKDA now shows the exact source and note snippets behind each flag.",
      "next": "Keep moving every public verdict toward evidence a reader can inspect, copy, and challenge without trusting hidden model judgment.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Live Lab", "href": "#lab" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Pasted-note receipts clear seeded labels",
      "why": "After the seeded case loaded, editing the source or note reset the visible result but left seeded metadata on the fields, so a copied receipt for a pasted example could still say SYN-003.",
      "proof": "Manual edits in the first-screen checker now clear the seeded case id, case type, and bundled-candidate label before the next receipt is built. Pasted source-vs-note pairs copy as pasted pairs, while untouched seeded examples still keep their SYN-003 label.",
      "next": "Keep treating receipts like public evidence: metadata must describe the actual pair that was checked, not a previous demo state.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Work log", "href": "#worklog" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "No-key receipt path loads before model plumbing",
      "why": "The first screen could say the seeded fall case was loaded while the source and note boxes were still empty because model-list/API discovery ran before static demo data.",
      "proof": "Changed startup so static results, demo cases, and metadata load first; the seeded source-vs-note receipt appears before optional Lab model discovery. The initial status now says the seeded case is loading until it is actually populated.",
      "next": "Keep protecting the instant browser receipt as the primary public workflow. Model-backed paths should enrich the site without delaying the no-key proof.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Live Lab", "href": "#lab" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "First screen now names the public point",
      "why": "The site could run a useful receipt, but the first viewport still made a new visitor infer who ScribeBench was for and why the public artifact mattered.",
      "proof": "Replaced the generic first-screen job strip with a compact For/Do/Point line: clinical AI buyers, builders, reviewers, and public commenters can get a receipt, challenge claims, or publish aggregate evidence; the output is proof, not a vague score.",
      "next": "Keep making the public site answer the visitor's skeptical questions before it asks them to trust benchmark machinery.",
      "links": [
        { "label": "Start here", "href": "#main" },
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Why this exists", "href": "#why-this-exists" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Receipts now show their evidence",
      "why": "The browser-only checker could flag unsupported care, but the result still asked visitors to trust the checker instead of showing the source and note snippets behind each flag.",
      "proof": "Local receipts now return structured evidence for dangerous findings, including the note excerpt, source excerpt, and reason. The first-screen receipt and Lab dangerous-finding list render those excerpts inline, and the copyable receipt includes them.",
      "next": "Keep making every verdict inspectable: a public QA artifact should show the reader why it is worried before asking them to cite it.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Live Lab", "href": "#lab" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "NapierMD context made visible",
      "why": "ScribeBench still felt too detached from the broader NapierMD build-in-public story, with the clinical-AI provenance hidden in the footer.",
      "proof": "Added a Why this exists section that ties the benchmark to NapierMD's after-the-demo clinical AI lane: ScribeBench is not the scribe product, it is the public pressure test for whether a signed note stays true to the source.",
      "next": "Keep connecting each public artifact to the real visitor question it answers: can this note or system be trusted, cited, or compared?",
      "links": [
        { "label": "Why this exists", "href": "#why-this-exists" },
        { "label": "NapierMD clinical AI", "href": "https://napiermd.me/work#clinical-ai" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "First screen turned into visitor jobs",
      "why": "The top of the site still read partly like positioning copy, so a first-time visitor had to assemble what the repo was for from several later sections.",
      "proof": "Replaced the abstract For/Does/Why strip with three concrete jobs: check one note, challenge a claim, or publish aggregate evidence. The first screen now names the seeded CT/syncope catch and separates one-note QA from system-level proof.",
      "next": "Keep compressing the site around visitor jobs so the benchmark machinery feels like a path, not a pile of artifacts.",
      "links": [
        { "label": "Start here", "href": "#main" },
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Powered row defaults made serious",
      "why": "The Run builder asked visitors to create a current powered row but prefilled an OpenRouter free model, making the serious evidence path look like another cheap smoke demo.",
      "proof": "Changed the current powered-row preset and current challenge planner to start with the actual system under test, a visitor-produced candidate-note file, and a declared strong judge. OpenRouter/free-model defaults now stay in the smoke-test preset.",
      "next": "Keep separating quick plumbing demos from publishable evidence so the public site does not confuse a smoke path with a market claim.",
      "links": [
        { "label": "Run builder", "href": "#run" },
        { "label": "Row builder", "href": "#run-builder" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Evidence decision matrix",
      "why": "The Evidence section still felt like a pile of benchmark readouts before a visitor understood what any row could support.",
      "proof": "Replaced the opening caveat cards with a decision matrix for one-note checks, historical rows, current-ranking claims, and vendor claims. The matrix now pulls live powered-row count, smoke status, and current-run progress from the public assets.",
      "next": "Keep moving dense evidence machinery behind visitor decisions: what they have, what they can say, and what proof they need next.",
      "links": [
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Current run status", "href": "#current-run" },
        { "label": "Claim checker", "href": "#claim-check" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Plain-language note check",
      "why": "The first screen was functionally useful, but it still made the visitor decode 'no-key receipt' and 'first-screen checker' before understanding the job.",
      "proof": "Changed the primary route, checker title, button labels, status text, and Lab copy to say the visitor is checking a note for invented care; the receipt is now framed as the copyable output.",
      "next": "Keep replacing benchmark-internal wording with the words a buyer, builder, or reviewer would use while preserving the reproducible evidence path.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Live Lab", "href": "#lab" },
        { "label": "Start here", "href": "#main" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "First-screen route cleanup",
      "why": "The 'I have one note' path promised an instant receipt but its primary action pointed at the full Lab and the click handler loaded the seeded demo instead of preserving the user's own note-checking job.",
      "proof": "Added a direct #quick-check anchor, changed the route CTA to the first-screen checker, and made the click focus the source field without overwriting inputs.",
      "next": "Keep checking every primary action against the visitor job it claims to support.",
      "links": [
        { "label": "Check one note", "href": "#quick-check" },
        { "label": "Start here", "href": "#main" },
        { "label": "Live Lab", "href": "#lab" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Historical baseline guardrail",
      "why": "The evidence section still risked looking like a stale current-model leaderboard because the old launch rows appeared in a normal ranked table.",
      "proof": "Reframed the powered table as historical baselines, changed rank language to baseline order, added scored dates, and put current-row actions directly above the old rows.",
      "next": "Run and publish current powered PriMock57 rows so the historical board becomes comparison context instead of the main artifact.",
      "links": [
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Current blocker", "href": "#current-run" },
        { "label": "Run builder", "href": "#run" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Demo case receipts",
      "why": "The synthetic demo still behaved like a passive source/note gallery even though the product promise is a receipt for unsupported care.",
      "proof": "Added a browser-only receipt panel to the demo case viewer. Selecting a bundled case now shows score, flagged unsupported items, leaks, next proof step, and actions to load the same case in the Lab or first-screen checker.",
      "next": "Keep replacing passive explanation with receipt-producing workflows so every section answers what the visitor can do.",
      "links": [
        { "label": "Demo cases", "href": "#demo" },
        { "label": "Live Lab", "href": "#lab" },
        { "label": "Check one note", "href": "#main" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Evidence reader digest",
      "why": "The Evidence section explained its caveats, but the actual rows still looked like a stale model leaderboard, especially on mobile.",
      "proof": "Added a data-backed digest before the tables: best historical powered row, worst historical dangerous-fabrication signal, freshest smoke row, and the next public action needed before any current-system claim.",
      "next": "Keep the exact tables as the audit trail, but make the public takeaway visible before visitors parse old launch-model names.",
      "links": [
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Current blocker", "href": "#current-run" },
        { "label": "Run builder", "href": "#run" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Source-first Lab workflow",
      "why": "The Lab had useful checking behavior, but it opened with provider, model, and key controls before the visitor saw the actual job: compare a source encounter with an AI-written note.",
      "proof": "Reframed the Lab around a three-step source-to-note QA workflow, moved the note fields before model settings, made the no-key local receipt the primary action, and tucked provider/model/key controls into a settings disclosure.",
      "next": "Keep testing whether a first-time visitor can understand the public path from one-note triage to powered PriMock57 evidence without needing repo context.",
      "links": [
        { "label": "Live Lab", "href": "#lab" },
        { "label": "Check one note", "href": "#main" },
        { "label": "Run builder", "href": "#run" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Evidence trust readout",
      "why": "The Evidence section opened with agenda machinery before answering what the rows can prove today.",
      "proof": "Moved the ranked/smoke/missing explanation to the top of the Evidence section and rewrote it as a plain readout: what can support a claim, what only shows smoke evidence, and what cannot be claimed yet.",
      "next": "Keep tightening the Lab and Evidence sections so a visitor can move from one-note QA to aggregate proof without reading the whole repo.",
      "links": [
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Claim checker", "href": "#claim-check" },
        { "label": "Run builder", "href": "#run" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Mobile first-screen clarity",
      "why": "The mobile first viewport opened on a form before explaining who ScribeBench is for or why the visitor should care.",
      "proof": "Added a compact For/Does/Why strip to the first screen and removed the mobile rule that promoted the quick-check form above the intro and task router.",
      "next": "Keep reducing dense benchmark language so the site feels like a useful public QA tool before it feels like a repo artifact.",
      "links": [
        { "label": "Start here", "href": "#main" },
        { "label": "Run builder", "href": "#run" },
        { "label": "Repo map", "href": "#repo-map" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Run builder presets",
      "why": "The Run section still opened as a dense benchmark form. Visitors needed to pick the job first, then see the command details.",
      "proof": "Added presets for a current powered row, quick smoke test, real workflow row, and second-judge pass. Each preset updates the selected-run plan, form fields, candidate JSON, generated command, and active state.",
      "next": "Use the same task-first pattern to keep tightening the Evidence section around what a visitor can trust, challenge, or contribute next.",
      "links": [
        { "label": "Run builder", "href": "#run" },
        { "label": "Repo map", "href": "#repo-map" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Public repo map",
      "why": "The site had useful pieces, but a visitor still had to infer how the website, APIs, eval engine, data, leaderboard, and submission path fit together.",
      "proof": "Added a public Repo map section that names each repository piece, when to use it, what it outputs, and where to go next. The top navigation now links to Repo map, and the contributor start route points there as its secondary path.",
      "next": "Keep turning the Run and Evidence sections from raw benchmark machinery into concrete visitor jobs with visible outputs.",
      "links": [
        { "label": "Repo map", "href": "#repo-map" },
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "Run builder", "href": "#run" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "First-screen task router restored",
      "why": "The site still had the right product logic hidden in JavaScript, but the homepage showed static explanation instead of asking visitors what job they were trying to do.",
      "proof": "Added the visible Start Here route chooser for one-note reviewers, vendor evaluators, scribe builders, and evidence contributors. The one-note primary action now runs the browser-only seeded receipt in the first-screen checker instead of jumping away to the Lab.",
      "next": "Keep collapsing the deeper Evidence and Run sections into the same job-first language so every page answers what a visitor brings, does, and leaves with.",
      "links": [
        { "label": "Start here", "href": "#main" },
        { "label": "Check one note", "href": "#main" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Proof-run picker",
      "why": "The current-model challenge still felt like a tiny benchmark form. Visitors needed to see the actual proof runs they could ask for or contribute.",
      "proof": "Added one-click proof-run presets for updating a current hosted model row, trying an open/free model, scoring a real scribe workflow, and checking judge robustness. Each preset sets the run target and system label, updates the proof explanation, and keeps the copyable run plan. The target and system fields now use the full form width instead of a cramped three-column row.",
      "next": "Keep moving the deeper Evidence and Run sections from benchmark machinery toward task-first workflows with clear outputs.",
      "links": [
        { "label": "Row builder", "href": "#run-builder" },
        { "label": "Run builder", "href": "#run" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Claim checker presets",
      "why": "The claim checker was useful but still opened like an empty form. Visitors should not have to invent the first vendor claim before the tool shows its point.",
      "proof": "Added one-click presets for hallucination-free, safe-note, better-scribe, and best-current-model claims. Each preset fills the claim type and exact claim text, updates the ScribeBench answer, and leaves a copyable public evidence ask. The claim type control now has the full form width instead of truncating the default option.",
      "next": "Keep reducing blank states across the deeper Lab, evidence ledger, and run builder so each section starts with a concrete task and output.",
      "links": [
        { "label": "Claim checker", "href": "#claim-check" },
        { "label": "Next steps", "href": "#next-steps" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "After-receipt action path",
      "why": "The first-screen checker made the site useful, but the next scroll still felt like a status report. Visitors needed to know what to do with a receipt.",
      "proof": "Replaced the old status and who-it-is-for explanation blocks with an after-receipt action map: review a flagged note, escalate a clean triage result to the Lab, challenge vendor claims, or build a powered aggregate row. Added a copyable first-screen receipt that carries scope, findings, flagged items, and next proof step without copying raw encounter text.",
      "next": "Keep tightening the public path around real visitor jobs: note review, claim challenge, model-backed QA, and aggregate evidence submissions.",
      "links": [
        { "label": "Next steps", "href": "#next-steps" },
        { "label": "Check one note", "href": "#main" },
        { "label": "Claim checker", "href": "#claim-check" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "First-screen note checker",
      "why": "The public site still felt too much like a benchmark brochure. A visitor should understand the point by checking a note immediately, not by decoding PriMock57, smoke rows, and challenge language first.",
      "proof": "Replaced the right-side receipt preview with a working browser-only source-vs-note checker, preloaded and scored the seeded SYN-003 fall case on first load, simplified the hero into who/what/not-proven statements, and shifted the visual tone toward a quieter clinical QA tool.",
      "next": "Use the first-screen checker as the front door, then keep the deeper Lab, claim checker, and powered PriMock57 runner as stronger evidence levels.",
      "links": [
        { "label": "Check one note", "href": "#main" },
        { "label": "Open full Lab", "href": "#lab" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Structured no-key receipt checks",
      "why": "Provider quotas still block the first current powered PriMock57 row, so the public site should become more useful even before a visitor supplies a key or credits.",
      "proof": "Expanded the browser-only local receipt to catch high-confidence age mismatches, sex/gender mismatches, left-right body-part mismatches, and allergy contradictions alongside the existing contradiction, workup, transport, and leak checks. Added focused tests for both catches and non-catches, and updated the site copy to name the no-key checks plainly.",
      "next": "Keep the local receipt as instant triage while using the current-run card to recruit a non-capped powered PriMock57 run.",
      "links": [
        { "label": "Run instant receipt", "href": "#lab" },
        { "label": "Next steps", "href": "#next-steps" },
        { "label": "Current run status", "href": "#current-run" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "open",
      "title": "Current row blocker made actionable",
      "why": "The strongest remaining objection is evidence freshness. A failed current PriMock57 retry should become a public contribution path, not an invisible local error.",
      "proof": "Retried the public API PriMock57 run at 11:06 UTC. PM57-d1c01 stayed scored, while PM57-d1c02 and PM57-d1c03 again hit OpenRouter's free-model daily cap. Updated the current-run status asset and Evidence card with the exact blocker, minimum publishable threshold, and a copyable resume command for anyone with credits or a non-capped provider key.",
      "next": "Resume with OpenRouter credits, a caller-supplied provider key, or a faster second judge until at least 30 PriMock57 cases are scored, then publish aggregate-only scores.",
      "links": [
        { "label": "Current run status", "href": "#current-run" },
        { "label": "Run builder", "href": "#run" },
        { "label": "Runner source", "href": "https://github.com/napiermd/scribe-bench/blob/main/scripts/run_public_api_benchmark.ts" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Public status receipt",
      "why": "A build-in-public benchmark needs a single artifact that tells visitors what is useful today, what is not proven yet, and what concrete run would make the project worth citing.",
      "proof": "Added a top-level public status section with useful-today, evidence-now, not-proven-yet, and next-proof cards plus a copyable public status receipt. Simplified the top navigation so Status, Evidence, Lab, and Run it are easier to find.",
      "next": "Use the status receipt as the public project spine, then finish a current powered PriMock57 row so the site can move from useful triage to stronger system-level evidence.",
      "links": [
        { "label": "Next steps", "href": "#next-steps" },
        { "label": "Run Lab", "href": "#lab" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "No-key local receipt path",
      "why": "A public usefulness loop cannot depend entirely on free hosted models behaving. Visitors need a meaningful first receipt even when provider keys, quotas, or latency get in the way.",
      "proof": "Added a browser-only local receipt module, Lab controls, first-screen instant receipt CTA, tests, and static build wiring. The local path catches explicit source contradictions, unsupported common workups such as head CT or syncope workup, EMS arrival mismatches, and deterministic template leaks without sending text to any API.",
      "next": "Use the local receipt as the instant front door, then keep the live judge and powered PriMock57 paths as stronger evidence levels.",
      "links": [
        { "label": "Run Lab", "href": "#lab" },
        { "label": "Start here", "href": "#main" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "First-visit product router",
      "why": "The site still asked new visitors to understand the benchmark before it told them what job they could do. That made the public project feel abstract and easy to dismiss as AI-benchmark theater.",
      "proof": "Replaced the static first-screen quick paths with a role-based Start Here router for one-note reviewers, buyers or clinical leaders, scribe builders, and evidence contributors. Each route now states what the visitor brings, what they do, what they leave with, and the next click.",
      "next": "Use the router language as the spine for the rest of the site: keep collapsing jargon into concrete jobs, receipts, and public evidence rows.",
      "links": [
        { "label": "Start here", "href": "#main" },
        { "label": "Run Lab", "href": "#lab" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Resumable public API PriMock57 runner",
      "why": "The site should not stop at one-note receipts. It needs a concrete path from the public Vercel lab to current aggregate PriMock57 evidence without committing raw generated notes.",
      "proof": "Added scripts/run_public_api_benchmark.ts with ignored progress caching, caller-supplied provider-key forwarding, fail-closed incomplete-case handling, configuration mismatch guards, aggregate-only pending output, tests, and a public current-run status card. A production slice generated and judged PM57-d1c01 through https://scribe-bench.vercel.app; PM57-d1c02 and PM57-d1c03 generated but judge calls first timed out, then hit OpenRouter's free-model daily cap on retry. The errored cases stayed excluded instead of being counted clean.",
      "next": "Add OpenRouter credits, pass a local provider key with --key-env, or configure a faster second judge, then resume the cached run toward at least 30 completed PriMock57 cases before publishing any ranked current row.",
      "links": [
        { "label": "Run Lab", "href": "#lab" },
        { "label": "Evidence ledger", "href": "#leaderboard" },
        { "label": "GitHub runner", "href": "https://github.com/napiermd/scribe-bench/blob/main/scripts/run_public_api_benchmark.ts" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Receipt-first homepage framing",
      "why": "The public site needed to answer the first-minute question more directly: what does a visitor do here, who is it for, and what do they leave with?",
      "proof": "Reworked the hero around the after-the-demo clinical AI use case, added a first-screen ScribeBench receipt preview for SYN-003, clarified that visitors leave with a quotable QA receipt, and aligned the NapierMD footer link to the live clinical-AI work section.",
      "next": "Keep moving from receipt-shaped one-note triage toward full powered PriMock57 rows for current models and real scribe workflows.",
      "links": [
        { "label": "Homepage receipt", "href": "#main" },
        { "label": "Run Lab", "href": "#lab" },
        { "label": "NapierMD clinical AI", "href": "https://napiermd.me/work#clinical-ai" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Live PriMock57 smoke passed",
      "why": "The public site needed proof that the current-model path is more than static copy: a visitor should be able to generate and judge a realistic PriMock57 encounter through production.",
      "proof": "Production Vercel generated PM57-d1c01 with nvidia/nemotron-3-ultra-550b-a55b:free and judged the note through the public /api/judge endpoint with the same current OpenRouter free model. The smoke result returned normalized=100, inputFidelity=5, 0 dangerous fabrications, 0 leaks, and 3 standard/non-dangerous assumptions.",
      "next": "Run the full PriMock57 set with repeats and publish only aggregate scores once the row has enough cases to support a system-level claim.",
      "links": [
        { "label": "Run Lab", "href": "#lab" },
        { "label": "Current blocker", "href": "#current-run" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Harder judge JSON repair",
      "why": "The first PriMock57 current-row probe generated a note successfully but the OpenRouter judge returned malformed JSON, blocking a current powered evidence run.",
      "proof": "Added JSON-object mode for OpenRouter judging, a third API repair attempt with prior-output context, parser repair for raw control characters inside strings plus trailing commas, and a plain-text compact fallback when models keep mangling JSON. A follow-up PM57 reference-note probe showed nvidia/nemotron-3-ultra-550b-a55b:free returns a parseable judge result while the previous Super judge path still failed on the generated PM57 note.",
      "next": "Use the Ultra judge and compact fallback as the public OpenRouter default path, then rerun the PriMock57 current-row probe and graduate it into a full scores-only row once judge responses are stable.",
      "links": [
        { "label": "Run Lab", "href": "#lab" },
        { "label": "Current blocker", "href": "#current-run" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Current-model challenge planner",
      "why": "The site now gives visitors a concrete answer to the stale-leaderboard objection: pick the kind of current row you can run, name the system, and copy the exact evidence plan.",
      "proof": "Added the Current-model challenge section with target switching, system-label input, live proof-plan rendering, and clipboard/fallback copy behavior for frontier, open/free, real-workflow, and second-judge runs.",
      "next": "Use the planner to turn public interest into actual powered PriMock57 rows for current models and real scribe workflows.",
      "links": [
        { "label": "Build row command", "href": "#run-builder" },
        { "label": "Run builder", "href": "#run" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Public claim checker",
      "why": "A visitor can paste a vague AI-scribe claim, choose what kind of claim it is, and leave with a concrete evidence requirement plus a copyable public ask.",
      "proof": "Added the Claim checker section to the public site with live claim-type switching and clipboard/fallback copy behavior for one-note, hallucination-free, system-comparison, and current-ranking claims.",
      "next": "Use the claim checker to route public discussion into either the Lab evidence packet or a powered PriMock57 submission.",
      "links": [
        { "label": "Check a claim", "href": "#claim-check" },
        { "label": "Run Lab", "href": "#lab" },
        { "label": "Evidence ledger", "href": "#leaderboard" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Fresh OpenRouter smoke row",
      "why": "The public Vercel site generated and judged all three bundled synthetic cases with current OpenRouter free models, so the board now has fresh evidence instead of only launch-era baselines.",
      "proof": "Added openrouter-nemotron-3-ultra-live-smoke to the visible smoke table: n=3, nErrored=0, repeats=1, 0/3 dangerous fabrications flagged. The production judge JSON-repair path was exercised on SYN-003.",
      "next": "Run the same generator over PriMock57 with declared repeats before treating it as a system-level claim.",
      "links": [
        { "label": "Raw results JSON", "href": "/assets/results.json" },
        { "label": "Run smoke", "href": "#lab" },
        { "label": "Use powered path", "href": "#run" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Lab evidence packet",
      "why": "A visitor can now leave the Lab with a compact packet that names the scope, case, generator, judge, finding, and next proof step.",
      "proof": "Public alias serves the Evidence packet UI and copy action; production logs were clean after deploy.",
      "next": "Use packets as the lightweight artifact for public discussion, then graduate useful claims into PriMock57 rows.",
      "links": [
        { "label": "Open Lab", "href": "#lab" },
        { "label": "Raw work log", "href": "/assets/worklog.json" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "One-click current-model smoke check",
      "why": "The homepage can run the seeded fall case through the configured OpenRouter free-model path instead of only describing the benchmark.",
      "proof": "OpenRouter model discovery is configured on production and returns current free models; the live site exposes the smoke-check CTA.",
      "next": "Promote promising smoke checks to powered PriMock57 runs before making any model-ranking claim.",
      "links": [
        { "label": "Run smoke", "href": "#lab" },
        { "label": "Use powered path", "href": "#run" }
      ]
    },
    {
      "date": "2026-06-30",
      "status": "shipped",
      "title": "Contribution command builder",
      "why": "The Run section now turns a visitor's dataset, generator, judge, repeats, and system label into the JSON shape and command needed for a public row.",
      "proof": "The builder generates smoke and powered commands, candidate-note JSON templates, and a PR checklist from the selected run type.",
      "next": "Use the builder to add current frontier, open/free, real-workflow, and judge-robustness rows.",
      "links": [
        { "label": "Add row", "href": "#run" },
        { "label": "Submission guide", "href": "https://github.com/napiermd/scribe-bench/blob/main/leaderboard/SUBMISSION.md" }
      ]
    }
  ]
}
