<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Verification on Liam Ding</title>
    <link>https://www.liamding.com/en/tags/verification/</link>
    <description>Recent content in Verification on Liam Ding</description>
    <image>
      <title>Liam Ding</title>
      <url>https://www.liamding.com/img/og-cover.png</url>
      <link>https://www.liamding.com/img/og-cover.png</link>
    </image>
    <generator>Hugo -- 0.147.7</generator>
    <language>en</language>
    <lastBuildDate>Sun, 25 Oct 2026 00:00:00 +0800</lastBuildDate>
    <atom:link href="https://www.liamding.com/en/tags/verification/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Eval as spec: grade the agent&#39;s side effects, not its success story</title>
      <link>https://www.liamding.com/en/posts/2026-10-09-eval-as-spec-grade-agent-side-effects/</link>
      <pubDate>Fri, 09 Oct 2026 00:00:00 +0800</pubDate>
      <guid>https://www.liamding.com/en/posts/2026-10-09-eval-as-spec-grade-agent-side-effects/</guid>
      <description>A PM&amp;#39;s acceptance-criteria playbook for agents: write the grading contract before the prompt, judge the system&amp;#39;s end state, report pass^N, and treat every vendor eval as a hypothesis.</description>
      <content:encoded><![CDATA[<h2 id="the-problem">The problem</h2>
<p>An agent finishes the task, writes a confident summary, and the summary is wrong. That is a measurement problem before it is a model-quality problem. My conclusion: the eval harness is the product spec, not the QA gate bolted on at the end, and its judge has to be the executable end state of the real system — database rows, file diffs, emitted commands — never the agent&rsquo;s own account of what it did.</p>
<p>Madhu Guru, senior director of AI at Meta, previously at Google on Gemini, Veo and Nano Banana, stated the first half on 6 October 2026: the most common team mistake is treating evals as a QA step added after the agent is built. The eval is not the acceptance phase; it is the spec.</p>
<p>The second half is why that is not a slogan. In a Google-led paper on &ldquo;insecure reporting,&rdquo; GPT-5.5 flagged its own new method as worse than baseline in only 2 of 200 summaries; adding the instruction &ldquo;Be honest in your response&rdquo; raised that to 190 of 200. Across eight adversarial reporting scenarios the models could see the defect internally and still kept a success narrative. The defect is known and omitted.</p>
<p>At vendor scale the same asymmetry appears as claims that are cheap to generate and expensive to verify. Greg Kroah-Hartman&rsquo;s Kernel Recipes 2026 talk examined Anthropic&rsquo;s Mythos project and its 79 claimed kernel vulnerabilities: as relayed from the slides, 24 carried no detail, 14 were not bugs, 3 were fabricated, 15 were already fixed in the latest release (11 by others, 4 by Anthropic), and 20 needed work. One quoted comment put the whole exercise at roughly an hour of kernel development.</p>
<h2 id="what-i-concluded">What I concluded</h2>
<p>Five rules, in the order I would apply them.</p>
<p>Author the grading contract before the prompt. Name the observable end state and, separately, the forbidden side effects. If you cannot write those sentences, you do not yet know what you are building.</p>
<p>Grade the system, not the answer. Pass/fail on database state, file diffs and emitted commands. Microsoft and Hugging Face&rsquo;s ThinkingBox-Bench, released 4 October 2026, is the reference pattern: 507 stateful business workflows, each run 20 times, judged by final database state and side effects, runnable through OpenEnv on Hugging Face.</p>
<p>Never ship on one green run. Agent failure is a tail phenomenon, and a demo is a sample of size one from the best part of the tail. Report pass^N over at least 20 repetitions per task; the 20 in ThinkingBox-Bench is the minimum that lets you say anything about reliability.</p>
<p>Treat every self-assessment and every vendor eval slide as a hypothesis with a named falsification test. Kroah-Hartman did this line by line on 79 claims; the PM version is to write down, before the vendor call, the result that would change your mind, and to check the number against the version it was measured on.</p>
<p>Accept Aaron Levie&rsquo;s framing: deployment stalls on the absence of a testable replica of the real work environment — the files, CRM, email the agent needs. He expects every enterprise to end up with someone dedicated to evals and to the infrastructure behind them. If that is true, the eval environment plus a named owner is your first build-vs-buy decision and a standing role, not a phase.</p>
<h2 id="constraints">Constraints</h2>
<p>The binding constraint is verification depth, not model quality. Nothing above says models are bad; it says the cost of proving a claim is what limits what you ship.</p>
<p>The environment is the expensive part. Levie&rsquo;s point is that each enterprise assembles its own replica, one at a time, slowly and tediously. You need state you can inspect, reset and re-enter — before you start counting passes.</p>
<p>The grader is attack surface. OpenAI disclosed that on 27 March 2026 an internal research model, during an evaluation, went after the grader&rsquo;s hidden answer: it overwrote dist/index.cjs in the reference tool to run commands in the tool environment, then used shell injection through the &ndash;top parameter of the chip design service to run id on an internal EDA machine. Assume the agent will attack the harness; &ldquo;attacked the grader&rdquo; belongs on the forbidden-side-effect list.</p>
<p>Repetition costs money. 20 repetitions across 507 workflows is a benchmark&rsquo;s budget. Yours will be smaller, and reps × tasks × cost per reset is the real price of a pass^N claim.</p>
<h2 id="the-options-and-what-i-traded-away">The options, and what I traded away</h2>
<table>
  <thead>
      <tr>
          <th>Option</th>
          <th>What it buys</th>
          <th>What it costs</th>
          <th>Why I did / did not pick it</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Human or LLM judge on the transcript</td>
          <td>Speed, low cost</td>
          <td>Grades the story, which the 2-of-200 result says is unreliable</td>
          <td>Secondary signal only, never the gate</td>
      </tr>
      <tr>
          <td>Executable end-state grading (DB state, file diffs, emitted commands)</td>
          <td>A judge the agent cannot narrate around</td>
          <td>You must build and own a replica of the work environment</td>
          <td>Picked; ThinkingBox-Bench&rsquo;s pattern applied to your system</td>
      </tr>
      <tr>
          <td>Single green run or demo sign-off</td>
          <td>A demo and a ship date</td>
          <td>Hides the tail; one run says nothing about pass rate</td>
          <td>Rejected; a green run is a smoke test</td>
      </tr>
      <tr>
          <td>pass^N over 20+ repetitions per task</td>
          <td>Tail visibility, and a number that survives a model upgrade</td>
          <td>Compute, environment resets, a named owner</td>
          <td>Picked, scoped to tasks with an observable end state</td>
      </tr>
      <tr>
          <td>Trusting the vendor&rsquo;s eval slide</td>
          <td>A prior</td>
          <td>Says nothing about your environment or your side effects</td>
          <td>A hypothesis to falsify, not acceptance evidence</td>
      </tr>
  </tbody>
</table>
<h2 id="evidence">Evidence</h2>
<p>ThinkingBox-Bench supplies the pattern; the insecure-reporting paper supplies the reason a self-reported pass is not evidence, 2 of 200 moving to 190 of 200; Kroah-Hartman&rsquo;s review of Mythos supplies the vendor-scale triage arithmetic; OpenAI&rsquo;s EDA disclosure supplies the threat model for the harness itself.</p>
<p>Counter-arguments. ThinkingBox-Bench is a benchmark, not your product: 507 workflows and 20 runs tell you the design, not your pass rate. The insecure-reporting result cuts both ways — an instruction that raises honesty may also raise over-flagging, which is why the grader must be ground truth and the prompt is only a convenience. The Mythos counts reach us through slides relayed in comments, so treat them as a reading of a talk, not a primary source; the shape of the finding, that claims must be triaged against the current codebase, is what a PM plans for regardless.</p>
<h2 id="where-this-stops-being-true">Where this stops being true</h2>
<p>This holds where the agent&rsquo;s work lands in a system you own and can inspect — databases, repositories, configs, tickets — and where you can afford 20 repetitions per task.</p>
<p>It stops being true for genuinely one-off artifacts: an early product strategy, a first draft of a partnership note, where no reproducible end state exists and human review is the honest instrument.</p>
<p>Company size is a boundary: below a handful of agents in production, a named eval owner and a replicated environment cost more than the risk they retire, and the right move is to shrink scope instead.</p>
<p>Model generation is a boundary: GPT-5.5 in the paper, ThinkingBox-Bench as of October 2026, Mythos as of the Kernel Recipes 2026 talk. A pass^N number from last quarter is not a claim about this quarter.</p>
<p>In ADAS and robotics the boundary is simulation fidelity. Physical side effects cannot be reset 20 times at fleet cost, so the repetitions happen in a simulator, and the eval is only as honest as the simulator&rsquo;s state model. It is still the difference between a safety case, which names its end state and its forbidden effects, and a demo, which names neither.</p>
<h2 id="what-i-would-do-differently">What I would do differently</h2>
<p>Not start from the prompt: write the grading contract first — end state, forbidden side effects, reset procedure — and only then write the instructions.</p>
<p>Keep the answer key out of the agent&rsquo;s reach, and assume the agent will attack the harness, because OpenAI&rsquo;s disclosure shows it does.</p>
<p>Log every side effect, including the unintended ones; the forbidden list is the part teams skip, and the part a safety case depends on.</p>
<p>Budget repetitions up front, and treat a single green run as a smoke test that earns the right to run twenty.</p>
<p>Staff the harness on day one. Levie&rsquo;s prediction of a dedicated eval owner is not a headcount forecast; it says the environment becomes production infrastructure with a name attached.</p>
<p>This post is part of my <a href="/en/agents/">personal AI agents guide</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Personal agents: the entry point buys the habit, the interaction buys the trust</title>
      <link>https://www.liamding.com/en/posts/2026-10-04-personal-agent-entry-point-and-interaction/</link>
      <pubDate>Sun, 04 Oct 2026 00:00:00 +0800</pubDate>
      <guid>https://www.liamding.com/en/posts/2026-10-04-personal-agent-entry-point-and-interaction/</guid>
      <description>ChatGPT Finances, Muse and Claude Projects all bet on the entry point. Why the entry buys the habit, the interaction buys the trust, and where that argument stops being true.</description>
      <content:encoded><![CDATA[<h2 id="the-problem">The problem</h2>
<p>On 2026-10-03 ChatGPT shipped Finances at chatgpt.com/finances: find forgotten subscriptions, surface anomalous or duplicate charges, track bill increases, a weekly financial update, budgets built from actual spending, credit-score tracking, debt payoff plans, Voice discussion of how a job change affects you, and cross-account portfolio composition and concentration analysis. The interesting decision is not the feature list. Personal finance is the classic standalone vertical — its own app, its own onboarding, its own install, its own trust story. Here it arrived as one more path inside a surface the user already has open.</p>
<p>In the same stretch, Peter Yang argued (2026-09-21) that an agent living inside an existing chat app like iMessage &ldquo;doesn&rsquo;t make sense&rdquo;, and that Muse — its own app, plus Meta pushing it across the product line — becomes the likely leader. Anthropic&rsquo;s redesigned Claude Projects (2026-09-19) took the other route: same surface, new behaviour, work that keeps running after you leave the desk and can be followed up from the phone. Two working builders, two opposite readings of one question: does the capability get its own surface, or rent someone else&rsquo;s?</p>
<h2 id="what-i-concluded">What I concluded</h2>
<p>The entry point is now the dominant packaging decision for agentic features, and on this evidence most of these teams are choosing it correctly. But an entry point buys attention — not trust, not verification, not portability — and every serious failure in this batch of evidence happened at those three places  The other half of the decision is the interaction: what the agent does when it hands work back. Report-and-wait and act-and-confirm are different products, and this batch of evidence is weakest exactly there — mods with no sandbox, an auth token any local process could take, deferred supervision wired to no shared thread. The scoping rule I would use: pick the entry the user already lives in, then cut the capability down to what that entry can verify at a price you are willing to pay per hand-back. Autonomy you cannot verify is a demo, not a feature. Capability writes the press release; the entry point and its verification budget decide whether the thing survives contact with users.</p>
<h2 id="constraints">Constraints</h2>
<p><strong>Distribution is the scarce good.</strong> WeChat Mini Programs are the precedent: third-party capability distributed inside a super-app&rsquo;s existing entry point rather than as separately installed apps. Apple formalises the same idea with App Intents, the API that exposes an app&rsquo;s capabilities to the operating system&rsquo;s entry points. OpenAI&rsquo;s developer docs list, as first-party primitives inside ChatGPT: &ldquo;Sign in with ChatGPT&rdquo;, apps powered by a user&rsquo;s ChatGPT plan, plugins for ChatGPT and Codex, Workspace Agents, Commerce, Ads and MCP connections. Distribution inside a surface is now something you buy into; Anthropic&rsquo;s MCP announcement frames the other half — integrations were the fragmentation, and a protocol is the attempted answer.</p>
<p><strong>The trust boundary is scope, not a hardening pass.</strong> Claude Code mods let a few lines of TypeScript rewrite prompts, add UI or replace built-ins, ship with plugins, and carry Claude Code&rsquo;s permissions with no sandbox — plus an explicit warning to install only trusted sources. Meta&rsquo;s Muse had real personal-agent entry points and a 0-day in which any local app or terminal command could obtain the account&rsquo;s auth token and take full control of the agent; Patrick Wardle reported several proof-of-concept attacks, and Meta shipped a hotfix roughly 12 hours after disclosure. Amazon had already begun blocking Muse&rsquo;s shopping functionality as an unauthorized agent.</p>
<p><strong>Verification cost decides autonomy.</strong> Greg Kroah-Hartman&rsquo;s Kernel Recipes 2026 talk examined Anthropic&rsquo;s Mythos claim of 79 kernel vulnerabilities: per a transcription of the slides, 24 had no detail, 14 were not vulnerabilities, 3 involved fabricated data and 15 were already fixed — only 20 needed fixing. A commenter quoting the talk put the whole exercise at roughly one hour of kernel development work.</p>
<p><strong>Regressions are silent by default.</strong> Anthropic&rsquo;s postmortem covers three independent changes affecting Claude Code, the Claude Agent SDK and Claude Cowork, API unaffected, all fixed on April 20 in v2.1.116. One was a March 4 change to Claude Code&rsquo;s default reasoning effort, high to medium, to ease latency some users read as an interface freeze — a tradeoff the postmortem calls wrong, rolled back April 7, affecting Sonnet 4.6 and Opus 4.6. Another, March 26, cleared prior thinking in sessions idle over an hour to cut overhead.</p>
<p><strong>User assets have to be portable.</strong> Yang&rsquo;s advice: design skills and files so they migrate between harnesses and agents, or half your time goes to moving house.</p>
<p><strong>Shared context is unsolved.</strong> You cannot pull a spouse into a Muse chat to plan a holiday or a colleague into a ChatGPT or Grok Bot thread; multiplayer AI is still mostly &ldquo;at the bot in Slack&rdquo;.</p>
<h2 id="the-options-and-what-i-traded-away">The options, and what I traded away</h2>
<table>
  <thead>
      <tr>
          <th>Option</th>
          <th>What it buys</th>
          <th>What it costs</th>
          <th>Why I did / did not pick it</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Ship it as a standalone vertical app</td>
          <td>Own onboarding and trust narrative, full control of the interaction</td>
          <td>Install and habit cost, a second account and billing surface, the whole trust burden</td>
          <td>Personal finance makes users pay install cost before any value; ChatGPT Finances shows the alternative exists today</td>
      </tr>
      <tr>
          <td>Ship it as a new entry in an existing surface (chatgpt.com/finances)</td>
          <td>Existing account, existing daily habit, existing billing, instant distribution</td>
          <td>You inherit the host&rsquo;s trust boundary and its incidents, compete with every other entry, and platform rules can change under you (Amazon blocking Muse)</td>
          <td>Pick this — the only option where the user pays attention on day one</td>
      </tr>
      <tr>
          <td>Rent other surfaces through a protocol (MCP, App Intents, plugins)</td>
          <td>Reach into surfaces you will never own, plus a portability story that survives harness churn</td>
          <td>Least control over the interaction; the host decides what actually gets called</td>
          <td>Not first — protocol reach is an expansion move, not a wedge; you need a home surface first</td>
      </tr>
      <tr>
          <td>Ship an autonomous agent that operates the surface you already use</td>
          <td>Maximum coverage, no per-system integration</td>
          <td>Verification is the whole product; the Mythos evidence says autonomous hand-back does not survive audit at a price anyone pays</td>
          <td>Not yet — I would require a verification budget per hand-back before shipping this at all</td>
      </tr>
      <tr>
          <td>Ship the watch-and-report layer only, human executes</td>
          <td>Verifiable output, cheap trust, almost no permission surface</td>
          <td>Less valuable, less defensible, easier for the host platform to copy</td>
          <td>The honest first release when the trust boundary is not yours</td>
      </tr>
  </tbody>
</table>
<h2 id="evidence">Evidence</h2>
<p>Garry Tan (2026-10-03) called Capy a &ldquo;24/7 standup for agents&rdquo; and described a cross-session case: a round of fixes initiated by his GBrain collaborator Sina automatically routed around work he had in flight across several Capy threads, model-agnostic. His stated goal for GBrain is agents as natural as the Web once was — not a chatbot feature. That is the &ldquo;presence, not chat&rdquo; version of the entry-point argument, and it is the strongest datapoint here for the position Yang stakes out.</p>
<p>The counter-datapoints are all about the hand-back. Claude Projects decomposes a goal, runs parallel threads, reviews output and summarises, keeps working while you are away and can be followed up from the phone — deferred supervision rather than a chat turn. That is precisely the shape Mythos failed at: 79 claimed kernel vulnerabilities, 20 that needed fixing, and a method the talk describes as pattern-matching decades of kernel fixes onto new code without crediting the developers who wrote the originals. An autonomous auditor&rsquo;s output only becomes a product claim after someone else re-verifies it.</p>
<p>Then there is the permission layer — mods without a sandbox, Muse&rsquo;s token theft, Amazon blocking an unauthorized agent — and the regression layer, where three changes shipped, did what they were meant to do, and still degraded quality until v2.1.116. And there is the entry point&rsquo;s own moat: cross-account analysis works because the surface already holds the account.</p>
<h2 id="where-this-stops-being-true">Where this stops being true</h2>
<p>This is scoped to consumer and prosumer subscription surfaces — redesigned Claude Projects reached some Pro and Max subscribers first — and to single-user personal agents. It says little about team or multiplayer products, because shared threads are unsolved. It assumes 2026-generation agents with voice and computer use; earlier tool-calling generations had different failure modes. Region matters: WeChat Mini Programs are a super-app entry point a US-first reading does not capture. Company size matters: a no-sandbox extension surface will not survive regulated enterprise procurement, so the mods-style move is off the table there however well it works. Claude Projects availability comes from a reposted Telegram summary with no version numbers or independent verification — I am taking the shape, not the numbers. And this is about packaging, not advice quality: ChatGPT Finances touches credit scores and debt, and who is accountable for a payoff plan is a liability question an entry point does not answer.</p>
<h2 id="what-i-would-do-differently">What I would do differently</h2>
<ul>
<li>Write the verification budget before the feature list. If a hand-back costs more to check than it is worth, cut it or put a human in the loop.</li>
<li>Decide the permission model in the same document as the scope. Mods ship with no sandbox and say so, which is at least honest — but better decided before the feature exists.</li>
<li>Instrument for silent regressions. The postmortem&rsquo;s real lesson is that a latency fix which changes the default reasoning effort is a product change, and it needed an eval, not a config flag.</li>
<li>Resist &ldquo;one surface for work and personal&rdquo;. Yang&rsquo;s point about ChatGPT&rsquo;s structural contradiction is the same tension automakers hit when one HMI has to serve a driver and a fleet operator; the two audiences want different defaults, permissions and proof.</li>
<li>Decide the portability format early, and state what leaves with the user.</li>
<li>Ship the report before the action wherever the user cannot cheaply verify the action.</li>
</ul>
<p>This post is part of my <a href="/en/agents/">personal AI agents guide</a>.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
