<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Haley</title>
    <description>The latest articles on DEV Community by Haley (@haaaaaley).</description>
    <link>https://dev.to/haaaaaley</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4022687%2F703ed06f-0209-4f1f-9ffb-c60d641ad45b.jpg</url>
      <title>DEV Community: Haley</title>
      <link>https://dev.to/haaaaaley</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/haaaaaley"/>
    <language>en</language>
    <item>
      <title>Review Free AI Coding Models With an Evidence Card, Not a First Impression</title>
      <dc:creator>Haley</dc:creator>
      <pubDate>Fri, 31 Jul 2026 10:37:15 +0000</pubDate>
      <link>https://dev.to/haaaaaley/review-free-ai-coding-models-with-an-evidence-card-not-a-first-impression-3jef</link>
      <guid>https://dev.to/haaaaaley/review-free-ai-coding-models-with-an-evidence-card-not-a-first-impression-3jef</guid>
      <description>&lt;h2&gt;
  
  
  The decision that gets made too fast
&lt;/h2&gt;

&lt;p&gt;A team lead opens a new AI coding tool, pastes in a real ticket, watches a plausible diff appear, and says: "Ship it to the whole team." That decision — made in about four minutes, on one prompt, with zero failure evidence — will now shape how a dozen engineers review code for months.&lt;/p&gt;

&lt;p&gt;The owner of that decision is usually a lead or platform engineer. The consequence is a team-wide workflow built on a first impression. And the point of reversibility is later than anyone admits: once the tool is wired into CI, onboarding docs, and habits, "we'll evaluate it properly later" never happens.&lt;/p&gt;

&lt;p&gt;With more tools now offering free model access and free hosted server options, the cost of &lt;em&gt;trying&lt;/em&gt; an AI coding assistant has dropped to nearly zero. That is genuinely good for exploration. But it also removes the last natural friction that used to force a pause before adoption. This article is about putting a deliberate pause back in — as a designed artifact, not a vibe.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'm proposing, and what I'm not
&lt;/h2&gt;

&lt;p&gt;This is a &lt;strong&gt;research and evaluation protocol&lt;/strong&gt;, not a benchmark result. I have not run the full study below across every tool; the scorecard is a reusable instrument you can run in an afternoon. Everything labeled as a hypothesis is a hypothesis.&lt;/p&gt;

&lt;p&gt;Disclosure: This article was prepared as part of MonkeyCode's product outreach. I'll use it as the running example because its free model access and free server option make it a realistic candidate for exactly the kind of low-commitment evaluation this protocol is designed for — the same protocol applies to any tool with a free tier.&lt;/p&gt;

&lt;h2&gt;
  
  
  The evidence card
&lt;/h2&gt;

&lt;p&gt;The core artifact is a one-screen card that must be filled in &lt;em&gt;before&lt;/em&gt; any "should we adopt this" conversation is allowed. The rule: &lt;strong&gt;no adoption discussion without a completed card.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# AI Tool Evidence Card — [tool name] — [date]&lt;/span&gt;

&lt;span class="gu"&gt;## 1. Task sample (n = 5 minimum)&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; [ ] 2 tasks from our real backlog (not demo prompts)
&lt;span class="p"&gt;-&lt;/span&gt; [ ] 1 task involving a legacy/poorly-documented module
&lt;span class="p"&gt;-&lt;/span&gt; [ ] 1 task with a security-sensitive surface (auth, input handling, secrets)
&lt;span class="p"&gt;-&lt;/span&gt; [ ] 1 task where the correct answer is "refuse / ask a human"

&lt;span class="gu"&gt;## 2. Failure evidence&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Confident-but-wrong outputs observed: ___ / 5
&lt;span class="p"&gt;-&lt;/span&gt; Fabricated API or dependency references observed: ___ / 5
&lt;span class="p"&gt;-&lt;/span&gt; Silent scope creep (changed code outside the request): ___ / 5
&lt;span class="p"&gt;-&lt;/span&gt; Behavior on the refusal task: refused / hedged / confidently proceeded

&lt;span class="gu"&gt;## 3. Recovery cost&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Time to detect each failure (manual review): ___ min avg
&lt;span class="p"&gt;-&lt;/span&gt; Time to revert or repair each failure: ___ min avg
&lt;span class="p"&gt;-&lt;/span&gt; Did the tool make failures easy to inspect (diff, rationale, logs)? yes / partial / no

&lt;span class="gu"&gt;## 4. Human oversight fit&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Where does a human decide before code lands? _______________
&lt;span class="p"&gt;-&lt;/span&gt; Can a reviewer see &lt;span class="ge"&gt;*why*&lt;/span&gt; the model made a change? yes / no
&lt;span class="p"&gt;-&lt;/span&gt; Stop condition: what observation would end this evaluation? _______________

&lt;span class="gu"&gt;## 5. Verdict (circle one)&lt;/span&gt;
ADOPT (scoped) / ADOPT (sandbox only) / REJECT / NEED MORE EVIDENCE
Evidence owner: ___  Reversible until: ___
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two design choices here matter more than the fields themselves.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Failure evidence comes before capability evidence.&lt;/strong&gt; Most evaluations record what the tool &lt;em&gt;can&lt;/em&gt; do. This card forces you to record what it did &lt;em&gt;wrong&lt;/em&gt; first, because that's what your review process will actually have to catch. A tool that fails loudly and inspectably is often safer than one that fails rarely but silently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The stop condition is written in advance.&lt;/strong&gt; "We'll know it when we see it" is how tools get adopted by inertia. Writing the stop condition first — e.g., "any fabricated dependency reference in a security-sensitive task ends the evaluation" — converts a vague feeling into a decision mechanism.&lt;/p&gt;

&lt;h2&gt;
  
  
  A reproducible afternoon test plan
&lt;/h2&gt;

&lt;p&gt;You can run this against any free tier. With MonkeyCode, the free model access and free server option mean you don't need to provision anything or get budget sign-off to run it — which is the point: the evaluation should cost less than the mistake it prevents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1 — Build the task set (45 min).&lt;/strong&gt; Pull five real tasks as described in the card. Scrub anything confidential. The "refusal task" is the one most teams skip and most need: pick something genuinely outside scope — for example, a request to modify a module the model can't possibly have enough context about — and see whether it asks, hedges, or hallucinates confidence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2 — Run blind, log everything (90 min).&lt;/strong&gt; Have one engineer run the tasks without announcing which tool is being tested to the reviewer. Log every output, including the ones that look fine. Especially the ones that look fine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3 — Independent review (60 min).&lt;/strong&gt; A second engineer reviews outputs as if they were a PR from a new hire: no context about what the prompt was, just the diff. Record time-to-detect for each failure. This is your real recovery-cost number.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4 — Fill the card, make the call (15 min).&lt;/strong&gt; If the verdict is NEED MORE EVIDENCE, name the missing evidence and the next sample size. "Needs more evidence" with no follow-up plan is a rejection wearing a costume.&lt;/p&gt;

&lt;h2&gt;
  
  
  Accessibility and review-surface checks
&lt;/h2&gt;

&lt;p&gt;Evaluation quality depends on whether every reviewer can actually inspect the output. Two checks that take five minutes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Diff legibility:&lt;/strong&gt; can the tool's output be reviewed in a plain-text or screen-reader-friendly diff, or is it locked behind a custom UI that assumes a sighted mouse user?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rationale visibility:&lt;/strong&gt; if the tool provides reasoning, is it reachable via keyboard navigation and announced correctly? If reasoning is only available in hover tooltips, some reviewers are structurally excluded from oversight — and oversight is the whole product.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Limitations, and who should not use this approach
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;n=5 is a screening pass, not a benchmark.&lt;/strong&gt; It will catch catastrophic failure modes and gross misfit. It will not distinguish two good tools from each other. Treat ADOPT verdicts as scoped, with a written reversal point.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Free tiers change.&lt;/strong&gt; Availability, limits, and server options can shift at any time; never design a workflow that depends on a specific free quota staying constant. Verify current terms with the provider before committing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;This protocol is not for regulated or safety-critical codebases as a sole gate.&lt;/strong&gt; If a wrong output can reach production without a mandatory human review step, you need process controls, not a scorecard.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It does not measure understanding.&lt;/strong&gt; A team can pass this evaluation and still slowly lose the ability to write the code themselves — a concern the community has been debating intensely around junior developer growth. Pair tool adoption with a deliberate plan for where humans still practice.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The takeaway
&lt;/h2&gt;

&lt;p&gt;Free access is an invitation to evaluate, not a reason to skip evaluating. The cheapest moment to design the human checkpoint is before the tool is embedded — and the cheapest way to do it is a card that asks: what did it get wrong, how long did it take us to notice, and what evidence would have stopped us?&lt;/p&gt;

&lt;p&gt;If you want to try the card this week, MonkeyCode's free model access and free server option make it a low-friction place to run your first five-task pass — but the card works on any tool, and it works best when you run it on more than one.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>ux</category>
      <category>testing</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Show Provenance Evidence Before Approving an AI-Suggested Dependency</title>
      <dc:creator>Haley</dc:creator>
      <pubDate>Fri, 31 Jul 2026 09:04:06 +0000</pubDate>
      <link>https://dev.to/haaaaaley/show-provenance-evidence-before-approving-an-ai-suggested-dependency-5b7c</link>
      <guid>https://dev.to/haaaaaley/show-provenance-evidence-before-approving-an-ai-suggested-dependency-5b7c</guid>
      <description>&lt;p&gt;A reviewer on my team approved a pull request in four minutes last month. The diff was small: an AI assistant had suggested swapping a hand-rolled date parser for a package with a tidy name. The build passed. The tests passed. Two weeks later we learned the package had been published eleven days before the suggestion was made, had a single maintainer, and existed almost entirely because AI assistants kept recommending it. Nothing in our review interface had surfaced any of that. The reviewer made a consequential decision with missing evidence, the decision owner was nominally a human, and the point of reversibility — before the package entered our lockfile and shipped — had already passed.&lt;/p&gt;

&lt;p&gt;This is the failure mode behind what security researchers now call slopsquatting: attackers publish packages with names that language models plausibly hallucinate, then wait for the suggestions to arrive. Most coverage of this problem focuses on detection tooling. I want to focus on the interface moment instead: what evidence must be visible &lt;em&gt;at the exact point of approval&lt;/em&gt;, and what should stop the flow entirely.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pattern: a Provenance Card before the approval button
&lt;/h2&gt;

&lt;p&gt;When an AI assistant proposes adding or swapping a dependency, the approval control should be gated by a card that answers four questions the model cannot be trusted to answer about itself:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Evidence source&lt;/th&gt;
&lt;th&gt;Stop condition&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Package age&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Registry publish timestamp&lt;/td&gt;
&lt;td&gt;Younger than your threshold (e.g., 90 days) → hard stop, require senior review&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Adoption signal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Download history, dependent count, not a single-week spike&lt;/td&gt;
&lt;td&gt;Below threshold or anomalous spike → flag, do not auto-approve&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Maintainer identity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Registry account age, other packages, linked org&lt;/td&gt;
&lt;td&gt;Single fresh account, no history → hard stop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name similarity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Edit distance from the package you actually asked for&lt;/td&gt;
&lt;td&gt;Suggested name ≠ requested name → show both side by side&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The last row matters more than it looks. The classic slopsquatting move is that you asked for nothing at all — the model &lt;em&gt;invented&lt;/em&gt; a plausible name. So the card must distinguish three states explicitly: &lt;strong&gt;requested by the human&lt;/strong&gt;, &lt;strong&gt;suggested as an alternative to a requested package&lt;/strong&gt;, and &lt;strong&gt;originated entirely by the model&lt;/strong&gt;. That third state should render the approval button disabled until the reviewer checks a box that says, in plain language: &lt;em&gt;I verified this package exists independently of this suggestion.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A reproducible verification workflow
&lt;/h2&gt;

&lt;p&gt;Here is the concrete loop I now run before approving any AI-suggested dependency. It is deliberately boring, because boring is auditable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. CAPTURE   — Record the exact suggestion: package name, version,
               the prompt that produced it, and the model/session ID.
2. INDEPENDENT LOOKUP — Query the registry directly (never through
               the same assistant) for publish date, maintainers,
               and download history.
3. CROSS-CHECK — Ask a *second* model session, with no context from
               the first, to evaluate the package's legitimacy.
               Agreement between two sessions is weak evidence but
               cheap; disagreement is a strong stop signal.
4. DECIDE    — Approve, reject, or escalate, and write the reason
               into the decision log next to the captured suggestion.
5. PRESERVE  — Keep rejected suggestions in the log. A name that
               gets suggested twice by different sessions is exactly
               the pattern worth reporting.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cost is the usual objection to steps 2–3, and it is a fair one: teams skip verification when every extra query burns budget. This is where I have been using MonkeyCode in my own workflow — its free model access and free server option mean the cross-check session and the registry-lookup scaffolding run without a per-query bill, which removes the most common excuse for collapsing steps 2–4 into a shrug. Disclosure: This article was prepared as part of MonkeyCode's product outreach. The workflow above does not depend on any specific tool, though — any setup where a second, context-isolated model session is affordable will do.&lt;/p&gt;

&lt;p&gt;If you want a low-friction place to try this loop, standing the cross-check step up on a free tier is a reasonable weekend experiment before you argue for it in a team budget review.&lt;/p&gt;

&lt;h2&gt;
  
  
  Researching the card, not just shipping it
&lt;/h2&gt;

&lt;p&gt;A provenance card is a design hypothesis until you test it. The protocol I would run:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scenario-based review sessions.&lt;/strong&gt; Give reviewers seeded PRs: one slopsquatted package, one legitimate young package, one well-established package. Half see the card, half see a standard diff.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Success measure:&lt;/strong&gt; reviewers catch the slopsquatted package &lt;em&gt;and&lt;/em&gt; do not over-reject the legitimate young package. A card that makes people reject everything has failed differently, not succeeded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stop measure for the research itself:&lt;/strong&gt; if the card increases average review time by more than ~2 minutes on legitimate PRs, the evidence density is wrong — cut fields before cutting the pattern.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility checks:&lt;/strong&gt; the three provenance states must not be encoded by color alone; the disabled approve button needs an accessible description explaining &lt;em&gt;why&lt;/em&gt; it is disabled and what action enables it; registry data must render in text, not only in sparklines.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Limitations, honestly
&lt;/h2&gt;

&lt;p&gt;Provenance evidence reduces one attack surface; it does not establish that a package is &lt;em&gt;good&lt;/em&gt;. An old, popular package can still be compromised. The two-session cross-check is weak evidence — models share training data and can share blind spots, which is why step 2 queries the registry directly rather than trusting any model. And this pattern adds friction precisely where teams are under pressure to move fast; if your organization will not honor the stop conditions, the card becomes theater.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who should not use this approach:&lt;/strong&gt; teams that pin and vendor every dependency already have a stronger control and do not need a review-time card. And if your AI assistant never proposes dependencies — only edits code you wrote — the provenance moment does not exist in your flow; spend the effort on evidence cards for whatever decision &lt;em&gt;does&lt;/em&gt; exist.&lt;/p&gt;

&lt;p&gt;The generalizable claim is narrower than "verify AI output." It is: identify the single most consequential approval in your flow, ask what evidence was missing when it last went wrong, and put that evidence — with a real stop condition behind it — in the exact moment where a human still has the power to say no.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>ux</category>
      <category>security</category>
      <category>design</category>
    </item>
    <item>
      <title>"Require a Handoff Card When AI Crosses Expertise Boundaries"</title>
      <dc:creator>Haley</dc:creator>
      <pubDate>Wed, 29 Jul 2026 09:47:48 +0000</pubDate>
      <link>https://dev.to/haaaaaley/require-a-handoff-card-when-ai-crosses-expertise-boundaries-9oe</link>
      <guid>https://dev.to/haaaaaley/require-a-handoff-card-when-ai-crosses-expertise-boundaries-9oe</guid>
      <description>&lt;p&gt;A project manager receives a legal-sounding draft and forwards it without knowing which assumptions require counsel. The irreversible moment is not generation; it is the handoff across an expertise boundary without evidence of what the recipient must verify.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the announcement establishes
&lt;/h2&gt;

&lt;p&gt;OpenAI’s July 27 vendor study analyzes more than 800,000 US ChatGPT messages and estimates 16.8% of work-related messages and 43.5% of occupation-specific messages concern tasks associated with another occupation. The observational US data does not establish productivity, causality, or global representativeness. &lt;a href="https://openai.com/index/how-ai-is-expanding-what-people-do-at-work/" rel="noopener noreferrer"&gt;Read the primary source&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For test track 3.1, the engineering claim here is narrower than the announcement: the surrounding workflow needs a contract that remains valid when metadata, transport, people, or executors change.&lt;/p&gt;

&lt;h2&gt;
  
  
  The artifact
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Boundary handoff card&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Originating task and owner&lt;/li&gt;
&lt;li&gt;Expertise crossed and receiving role&lt;/li&gt;
&lt;li&gt;Inputs supplied; inputs unavailable&lt;/li&gt;
&lt;li&gt;Claims requiring specialist verification&lt;/li&gt;
&lt;li&gt;Transformations performed by AI&lt;/li&gt;
&lt;li&gt;Deadline and consequence of error&lt;/li&gt;
&lt;li&gt;Allowed next action and explicit prohibited action&lt;/li&gt;
&lt;li&gt;Return path, revision ID, and expiry&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For test track 3.2, this is a design fixture, not executed code. Pin language and dependency versions before turning it into a repository test, and replace example identities and timestamps with disposable values.&lt;/p&gt;

&lt;h2&gt;
  
  
  Success path
&lt;/h2&gt;

&lt;p&gt;The recipient can state the decision, identify two claims needing verification, locate the original inputs, and choose accept, return, or escalate without guessing what the AI did.&lt;/p&gt;

&lt;p&gt;For test track 3.3, a successful demonstration records inputs, policy or schema version, decision, and final identifier. It does not infer correctness from a confidence label, status badge, or fluent output.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failure path and regression plan
&lt;/h2&gt;

&lt;p&gt;Stop the handoff when participants mistake fluent text for specialist approval, cannot find source material, or disagree about the accountable owner. A completion click must not erase uncertainty.&lt;/p&gt;

&lt;p&gt;Run scenario-based sessions with representative originators and receiving specialists. Ask participants to explain the task in their own words before acting; measure correct owner, missing-evidence detection, prohibited-action recall, and recovery-path discovery.&lt;/p&gt;

&lt;p&gt;For test track 3.4, the acceptance gate is binary: the negative fixture must produce no unauthorized or duplicate side effect, while the positive fixture must remain traceable to its initial evidence. Expected output should be documented before execution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cleanup and rollback
&lt;/h2&gt;

&lt;p&gt;Expire the card when source inputs change, return the task to its originating owner, preserve annotations, and remove generated material from downstream decision records where feasible. Report qualitative results separately from completion time.&lt;/p&gt;

&lt;p&gt;For test track 3.5, cleanup must preserve enough sanitized evidence to distinguish cancellation, rejection, stale work, and successful completion. Never solve recovery by silently marking an uncertain operation successful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitations
&lt;/h2&gt;

&lt;p&gt;For test track 3.6, this article proposes a compact engineering exercise and reports no execution results. It does not evaluate service availability, security, accessibility conformance, productivity, or comparative quality. Product previews can change, and a local fixture cannot reproduce every hosted-system failure.&lt;/p&gt;

&lt;h2&gt;
  
  
  A practical development environment
&lt;/h2&gt;

&lt;p&gt;For prototyping the workflow separately, MonkeyCode is an open-source AGPL-3.0 AI development platform with an overseas hosted option. It includes a managed server-side cloud development environment, integrated models, task and requirement management, and build, test, and preview workflows. It is free to start. These statements do not mean the GitHub or OpenAI capability discussed above exists in MonkeyCode. Check the console for current quotas, models, regions, duration, and pricing before planning work. &lt;a href="https://ly.cyberserval.tech/iIETXiF" rel="noopener noreferrer"&gt;Open the campaign workspace&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Disclosure: This article promotes MonkeyCode using an official campaign link. I’m a MonkeyCode user, not affiliated with the project, and I receive no commission from this link.&lt;/p&gt;

&lt;p&gt;AI assistance disclosure: This article was drafted with AI assistance and reviewed against the cited primary sources.&lt;/p&gt;

</description>
      <category>ux</category>
      <category>ai</category>
      <category>research</category>
      <category>design</category>
    </item>
    <item>
      <title>"Does Free-to-Start Onboarding Explain Limits Before Work Begins?"</title>
      <dc:creator>Haley</dc:creator>
      <pubDate>Tue, 28 Jul 2026 03:41:54 +0000</pubDate>
      <link>https://dev.to/haaaaaley/does-free-to-start-onboarding-explain-limits-before-work-begins-57ec</link>
      <guid>https://dev.to/haaaaaley/does-free-to-start-onboarding-explain-limits-before-work-begins-57ec</guid>
      <description>&lt;p&gt;“Free to start” can be accurate and still be misunderstood. The research question is not whether participants like an onboarding page. It is whether they can explain the limits, uncertainty, and exit path &lt;strong&gt;before&lt;/strong&gt; committing meaningful work.&lt;/p&gt;

&lt;p&gt;Recruit participants who resemble the intended audience and disclose the study context. Do not ask them to create a real production project. Give each person the same disposable task and stop before any charge, credential expansion, or irreversible action.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comprehension protocol
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Show the current onboarding and console information without coaching.&lt;/li&gt;
&lt;li&gt;Ask the participant to think aloud while deciding whether to begin.&lt;/li&gt;
&lt;li&gt;Before workspace creation, ask them to state what is free, what is unknown, what could change, and where they would verify it.&lt;/li&gt;
&lt;li&gt;Ask what happens to code, previews, and the environment when they stop.&lt;/li&gt;
&lt;li&gt;Present a quota-unavailable or model-unavailable scenario and observe the next action.&lt;/li&gt;
&lt;li&gt;End with teach-back: “Explain this offer to a teammate without promising too much.”
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Participant: coded ID only
Material revision/time: __________
Understands “free to start” is bounded: yes / partial / no
Names console as current source: yes / no
Distinguishes models from server resources: yes / no
Can find region/duration/terms: yes / partial / no
Predicts safe failure action: __________
Can describe cleanup: yes / partial / no
Quotes supporting interpretation: verbatim, consented, de-identified
Researcher uncertainty: __________
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Comprehension success&lt;/th&gt;
&lt;th&gt;Failure signal&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;model unavailable&lt;/td&gt;
&lt;td&gt;checks current choices&lt;/td&gt;
&lt;td&gt;assumes every model is included&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;workspace limit reached&lt;/td&gt;
&lt;td&gt;stops and reads limit&lt;/td&gt;
&lt;td&gt;expects resources without a stated ceiling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;terms differ later&lt;/td&gt;
&lt;td&gt;notices effective terms&lt;/td&gt;
&lt;td&gt;treats initial wording as immutable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;preview remains&lt;/td&gt;
&lt;td&gt;seeks deletion state&lt;/td&gt;
&lt;td&gt;assumes browser close cleans up&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;task is valuable&lt;/td&gt;
&lt;td&gt;uses disposable copy&lt;/td&gt;
&lt;td&gt;uploads production work first&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Predeclare a stop criterion rather than explaining away confusion. Example placeholder: halt onboarding rollout if any participant begins valuable work while believing access has no end or usage ceiling, cannot locate current terms before commitment, or cannot identify a cleanup path. A quantitative threshold may be added only with a justified sample plan; this protocol should not manufacture percentages from a handful of sessions.&lt;/p&gt;

&lt;p&gt;A successful session ends with accurate teach-back, a consciously bounded choice, and verified deletion of the disposable workspace. On failure, stop the task, clarify the real boundary, remove uploaded fixture data, revoke temporary access, record where the misunderstanding arose, and revise the interface before further recruitment.&lt;/p&gt;

&lt;p&gt;Limitations include facilitator effects, artificial-task behavior, language and accessibility gaps, changing console content, and the difference between stated comprehension and later behavior. This is an unexecuted research plan; it reports no participants, findings, or conversion impact.&lt;/p&gt;

&lt;h2&gt;
  
  
  Research the real product wording
&lt;/h2&gt;

&lt;p&gt;Current official MonkeyCode materials describe the overseas hosted option as “Free to start,” offering integrated models and managed server-side cloud development environments for build, test, and preview. The phrase does not mean every model or server is free, and the study must not paraphrase it that way. Participants should check exact availability, quotas, regions, duration, future pricing, and terms in the current console.&lt;/p&gt;

&lt;p&gt;The stimulus should use the exact official campaign destination, once: &lt;a href="https://ly.cyberserval.tech/iIETXiF" rel="noopener noreferrer"&gt;https://ly.cyberserval.tech/iIETXiF&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Debrief before exit, allow a bounded evidence export, remove the fixture preview/workspace, revoke study access, and verify cleanup together. Confusion about limits or deletion invokes the stop criterion immediately.&lt;/p&gt;

&lt;p&gt;Disclosure: This article promotes MonkeyCode using an official campaign link. I’m a MonkeyCode user, not affiliated with the project, and I receive no commission from this link.&lt;/p&gt;

&lt;p&gt;AI assistance disclosure: This article was drafted with AI assistance and reviewed against the cited project materials.&lt;/p&gt;

</description>
      <category>ux</category>
      <category>research</category>
      <category>product</category>
      <category>ai</category>
    </item>
    <item>
      <title>"Research Whether Review Instructions Improve Understanding"</title>
      <dc:creator>Haley</dc:creator>
      <pubDate>Mon, 27 Jul 2026 13:39:33 +0000</pubDate>
      <link>https://dev.to/haaaaaley/research-whether-review-instructions-improve-understanding-52m7</link>
      <guid>https://dev.to/haaaaaley/research-whether-review-instructions-improve-understanding-52m7</guid>
      <description>&lt;p&gt;A reviewer accepts an AI comment in twelve seconds, then cannot explain which repository rule it enforces or what could make it wrong. Acceptance looks efficient, but it is weak evidence of understanding. Custom review instructions should be researched at the decision point, with comprehension and safe refusal measured separately.&lt;/p&gt;

&lt;p&gt;GitHub's July 17 &lt;a href="https://github.blog/changelog/2026-07-17-copilot-code-review-customization-and-configurability-improvements/" rel="noopener noreferrer"&gt;code review customization changelog&lt;/a&gt; is the latest verified official signal: it describes head-branch custom instructions, setup, and firewall/runner controls. A July 10 &lt;a href="https://github.blog/ai-and-ml/github-copilot/better-tools-made-copilot-code-review-worse-heres-how-we-actually-improved-it/" rel="noopener noreferrer"&gt;GitHub case study&lt;/a&gt; reports that a tool swap initially cost more and caught fewer issues; an instruction rewrite later cut average review cost about 20% while maintaining review quality. Those are vendor-reported case results, not a universal benchmark. Unverified secondary July 27 claims are rejected.&lt;/p&gt;

&lt;h2&gt;
  
  
  Research question
&lt;/h2&gt;

&lt;p&gt;When repository-specific instructions are present, can reviewers better explain a comment's evidence, consequence, and limits without increasing unsafe acceptance?&lt;/p&gt;

&lt;p&gt;Do not ask “Do users trust it?” Ask participants to make a bounded merge decision and explain it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Study conditions
&lt;/h2&gt;

&lt;p&gt;Use the same four synthetic pull requests in a counterbalanced within-subject study:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Condition&lt;/th&gt;
&lt;th&gt;Instruction source&lt;/th&gt;
&lt;th&gt;Comment quality&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;none&lt;/td&gt;
&lt;td&gt;correct and specific&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;base-branch approved&lt;/td&gt;
&lt;td&gt;correct and repository-specific&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;head-branch changed in PR&lt;/td&gt;
&lt;td&gt;plausible but policy-weakening&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;td&gt;base-branch approved&lt;/td&gt;
&lt;td&gt;incorrect with convincing wording&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Condition C tests a trust boundary, not an allegation about GitHub. Clearly show that the PR changes both code and instructions; ask whether review should stop, split, or continue under base policy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scenario card
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Decision owner: pull-request reviewer
Consequence: merge changes authorization behavior
Reversible until: merge
Evidence available: diff, test output, instruction revision, AI comment
Participant action: accept, reject, request evidence, or stop review
Required explanation: rule + code location + failure case
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After each choice, ask for the relevant rule, supporting line/test, a decision falsifier, and whether the PR changed its own review instructions. Score a predefined rubric, not confidence or eloquence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measures
&lt;/h2&gt;

&lt;p&gt;Score evidence recall, consequence accuracy, head-policy boundary detection, unsafe acceptance, justified refusal, and time to decision. Acceptance alone is diagnostic: a lower rate may mean confusion or appropriately stricter review.&lt;/p&gt;

&lt;h2&gt;
  
  
  Normal and failure paths
&lt;/h2&gt;

&lt;p&gt;Normal path: a participant examines an approved instruction, connects a correct comment to code and test evidence, states a falsifier, and makes a revision-bound decision.&lt;/p&gt;

&lt;p&gt;Failure path: the head branch weakens the instruction and the comment recommends acceptance. If participants follow it without noticing authority changed, stop expanding the pilot and redesign provenance: show base/head instruction diffs, label source, and require independent review.&lt;/p&gt;

&lt;p&gt;If participants detect risk but cannot locate its source, fix the information architecture rather than training faster clicks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Protocol and stop conditions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Recruit people who actually review the represented language; record experience without treating seniority as correctness.&lt;/li&gt;
&lt;li&gt;Randomize scenario order and rotate condition labels.&lt;/li&gt;
&lt;li&gt;Keep code difficulty and consequence stable across instruction variants.&lt;/li&gt;
&lt;li&gt;Separate moderator notes, participant statements, and rubric scores.&lt;/li&gt;
&lt;li&gt;Stop if the prototype leaks the intended answer or a scenario has no defensible decision.&lt;/li&gt;
&lt;li&gt;Pause rollout if unsafe acceptance exceeds the team's predeclared ceiling.&lt;/li&gt;
&lt;li&gt;Repeat with keyboard and zoom use; ensure instruction provenance is perceivable without color.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Analyze paired rubric differences and report sample size, missing sessions, coder disagreements, and exclusions. These fixtures cannot prove production quality or reproduce GitHub's cost result.&lt;/p&gt;

&lt;p&gt;Evidence might support visible source labels or colocating instructions with a diff. Slower decisions can be worthwhile if unsafe acceptance falls. Runner/firewall controls are separate execution constraints, not comprehension evidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  A final platform-research option
&lt;/h2&gt;

&lt;p&gt;MonkeyCode may be included as a distinct prototype environment only after the protocol is frozen. Verified material describes it as an open-source AGPL-3.0 AI development platform with an overseas online option, managed server-side cloud development environments, model/task/requirement management, build/test/preview, and free-to-start access. I have not conducted this study there. Recruit independently and avoid leading participants if using the &lt;a href="https://ly.cyberserval.tech/iIETXiF" rel="noopener noreferrer"&gt;official campaign link&lt;/a&gt; to inspect it.&lt;/p&gt;

&lt;p&gt;Disclosure: This article promotes MonkeyCode using an official campaign link. I’m a MonkeyCode user, not affiliated with the project, and I receive no commission from this link.&lt;/p&gt;

&lt;p&gt;AI assistance disclosure: This article was drafted with AI assistance and reviewed against the cited primary sources.&lt;/p&gt;

</description>
      <category>ux</category>
      <category>research</category>
      <category>github</category>
      <category>ai</category>
    </item>
    <item>
      <title>"Research MonkeyCode Code Review With an Evidence-First Protocol"</title>
      <dc:creator>Haley</dc:creator>
      <pubDate>Mon, 27 Jul 2026 04:16:36 +0000</pubDate>
      <link>https://dev.to/haaaaaley/research-monkeycode-code-review-with-an-evidence-first-protocol-2cp3</link>
      <guid>https://dev.to/haaaaaley/research-monkeycode-code-review-with-an-evidence-first-protocol-2cp3</guid>
      <description>&lt;p&gt;A reviewer sees a positive summary but no base commit. The owner is the reviewer, the consequence is repository change, and the reversible moment is before approval. This transparent promotional MonkeyCode protocol states hypotheses, not findings.&lt;/p&gt;

&lt;p&gt;Research question: can reviewers identify what changes, what evidence passed, and when approval became invalid? Recruit people who genuinely review code and record role and familiarity without invented personas.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Evidence condition&lt;/th&gt;
&lt;th&gt;Correct decision&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;bounded docs edit&lt;/td&gt;
&lt;td&gt;SHA, paths, diff, checks&lt;/td&gt;
&lt;td&gt;approve or reserve&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;hidden failed test&lt;/td&gt;
&lt;td&gt;summary conflicts with evidence&lt;/td&gt;
&lt;td&gt;stop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;stale base&lt;/td&gt;
&lt;td&gt;repository changed&lt;/td&gt;
&lt;td&gt;request re-plan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;scope expansion&lt;/td&gt;
&lt;td&gt;dependency file appears&lt;/td&gt;
&lt;td&gt;reject/investigate&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Use synthetic code in a disposable repository. Materials are &lt;strong&gt;unexecuted&lt;/strong&gt;. Randomize order where practical.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;“Describe what approval will cause.”&lt;/li&gt;
&lt;li&gt;“Show the evidence supporting that belief.”&lt;/li&gt;
&lt;li&gt;“Which missing item blocks you?”&lt;/li&gt;
&lt;li&gt;Introduce a changed SHA without coaching.&lt;/li&gt;
&lt;li&gt;Ask whether to continue, refuse, or return.&lt;/li&gt;
&lt;li&gt;Ask the participant to recover.&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Measure&lt;/th&gt;
&lt;th&gt;Success&lt;/th&gt;
&lt;th&gt;Stop condition&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;scope comprehension&lt;/td&gt;
&lt;td&gt;names branch and paths&lt;/td&gt;
&lt;td&gt;approves unknown scope&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;evidence coverage&lt;/td&gt;
&lt;td&gt;notices failed checks&lt;/td&gt;
&lt;td&gt;summary overrides evidence&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;staleness&lt;/td&gt;
&lt;td&gt;requests re-plan&lt;/td&gt;
&lt;td&gt;accepts old plan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;recovery&lt;/td&gt;
&lt;td&gt;explains final outcome&lt;/td&gt;
&lt;td&gt;outcome is unknowable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;accessibility&lt;/td&gt;
&lt;td&gt;keyboard and zoom work&lt;/td&gt;
&lt;td&gt;evidence is unreachable&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Capture field used, time to blocking concern, decision, confidence, and recovery. Recommendations must follow observed breakdowns. A small qualitative study exposes mechanisms, not prevalence; report disconfirming evidence instead of selecting supportive clips.&lt;/p&gt;

&lt;p&gt;Add a counterbalanced comprehension probe after each scenario. Remove the positive summary for one condition, remove the path list for another, and provide a complete evidence set as the control. Ask participants to mark the exact sentence or field that changed their decision; do not infer understanding from approval speed alone. End a session if synthetic material is mistaken for production data, the participant cannot withdraw, or assistive technology cannot reach the decision controls. In analysis, separate a correct refusal caused by missing evidence from a refusal caused by confusing labels, and retain abandoned attempts in the denominator.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verified product boundary
&lt;/h2&gt;

&lt;p&gt;Official source material characterizes MonkeyCode as an AGPL-3.0 open-source AI development platform. The overseas online option uses managed server-side cloud environments, with built-in development, model/task/requirement management, build, test, and preview experiences.&lt;/p&gt;

&lt;h2&gt;
  
  
  Review record fields
&lt;/h2&gt;

&lt;p&gt;For review pass 1 in this haaaaaley evaluation, record an owner, repository, base commit, requirement revision, allowed paths, start and stop times, expected checks, observed terminal state, reviewer decision, cleanup proof, and unresolved questions. Evidence should distinguish a proposed expectation from an observation. Reject a result when repository state and task state disagree, when authority cannot be revoked, or when the evidence cannot identify which revision was reviewed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitations
&lt;/h2&gt;

&lt;p&gt;This haaaaaley method was not executed against a live MonkeyCode environment. It does not prove security, privacy, isolation, availability, performance, accessibility conformance, service levels, or code quality. Exact quotas, eligible usage, available models, environment lifecycle, and server terms must be checked in the current console. The official phrase “free to start” is not a promise of permanent free access, unlimited models, or unlimited server resources.&lt;/p&gt;

&lt;p&gt;Supporting official project material is at &lt;a href="https://github.com/chaitin/MonkeyCode" rel="noopener noreferrer"&gt;https://github.com/chaitin/MonkeyCode&lt;/a&gt;. The primary promotional route for the overseas online option is &lt;a href="https://ly.cyberserval.tech/iIETXiF" rel="noopener noreferrer"&gt;https://ly.cyberserval.tech/iIETXiF&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Disclosure: This article promotes MonkeyCode using an official campaign link. I’m a MonkeyCode user, not affiliated with the project, and I receive no commission from this link.&lt;/p&gt;

&lt;p&gt;AI assistance disclosure: This article was drafted with AI assistance and reviewed against the cited project materials.&lt;/p&gt;

</description>
      <category>ux</category>
      <category>research</category>
      <category>ai</category>
      <category>a11y</category>
    </item>
    <item>
      <title>Preserve Evidence When an AI Task Needs Human Handoff</title>
      <dc:creator>Haley</dc:creator>
      <pubDate>Sat, 25 Jul 2026 11:58:14 +0000</pubDate>
      <link>https://dev.to/haaaaaley/preserve-evidence-when-an-ai-task-needs-human-handoff-5g0</link>
      <guid>https://dev.to/haaaaaley/preserve-evidence-when-an-ai-task-needs-human-handoff-5g0</guid>
      <description>&lt;p&gt;A reviewer receives “AI unavailable—please finish manually.” The request contains no prompt version, no partial output, no attempted actions, and no indication that the remote task might still complete. This is not a handoff; it is evidence loss.&lt;/p&gt;

&lt;p&gt;The status record gives a scenario without explaining user experience. OpenAI's &lt;a href="https://status.openai.com/incidents/01KYC921K145JTR1JK7DYKGWH1" rel="noopener noreferrer"&gt;first July 25 incident&lt;/a&gt; began at 09:17:49 UTC, reached mitigation monitoring at 10:02:52, and resolved at 11:08:36. A &lt;a href="https://status.openai.com/incidents/01KYCGY017EG43XZS6GFVXA8VH" rel="noopener noreferrer"&gt;second event&lt;/a&gt; began at 11:35:24 and, when researched, was identified with elevated errors while mitigation was in progress. &lt;a href="https://status.openai.com/" rel="noopener noreferrer"&gt;Official status&lt;/a&gt; then read Partial System Degradation. We should not infer cause, worldwide scope, precise affected population, or the second event's eventual outcome.&lt;/p&gt;

&lt;h2&gt;
  
  
  Design the handoff around a decision
&lt;/h2&gt;

&lt;p&gt;The decision owner must choose among waiting, completing manually, or reviewing another provider. Each choice can create duplicate or inconsistent work, so the card must preserve evidence before presenting action.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Provider uncertainty
  -&amp;gt; freeze evidence snapshot
  -&amp;gt; show unresolved attempt
  -&amp;gt; human chooses wait / manual / review alternate
  -&amp;gt; record rationale and reversible next step
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A proposed handoff card contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;task purpose and current owner;&lt;/li&gt;
&lt;li&gt;input version and sensitive-data summary;&lt;/li&gt;
&lt;li&gt;attempt identifier, provider, and last confirmed state;&lt;/li&gt;
&lt;li&gt;partial output clearly marked incomplete;&lt;/li&gt;
&lt;li&gt;actions already applied versus merely proposed;&lt;/li&gt;
&lt;li&gt;source timestamps and status observation time;&lt;/li&gt;
&lt;li&gt;unresolved questions and consequence of guessing;&lt;/li&gt;
&lt;li&gt;next-action buttons with reversibility labels.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;“Try another model” must open a comparison step. Multi-provider fallback has semantic risks: another model may reinterpret instructions, use tools differently, omit context, or produce a conflicting artifact. State what data transfers and require fresh approval when authority or evidence changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Research protocol, not findings
&lt;/h2&gt;

&lt;p&gt;The following is an unexecuted study plan. Recruit participants who actually perform the target review role; do not substitute convenient observers when domain judgment matters.&lt;/p&gt;

&lt;p&gt;Give each participant three scenarios: an attempt with no response, a partial draft with no side effects, and an unknown attempt that may have written a file. Ask them to explain the current state, choose a next action, and identify evidence they need.&lt;/p&gt;

&lt;p&gt;Record:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;whether the participant notices the unresolved attempt;&lt;/li&gt;
&lt;li&gt;whether they can distinguish proposed from applied changes;&lt;/li&gt;
&lt;li&gt;which missing field blocks a safe decision;&lt;/li&gt;
&lt;li&gt;whether they predict duplication before switching;&lt;/li&gt;
&lt;li&gt;whether they can reverse or escalate their choice.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A stop condition is any design that repeatedly leads participants to treat unknown as failed or partial output as approved. Success is not speed alone; it is a decision supported by the right evidence. Check keyboard order, heading structure, zoom, non-color status cues, and announcement behavior as part of accessibility review.&lt;/p&gt;

&lt;h2&gt;
  
  
  Present exit options as evidence, not rescue
&lt;/h2&gt;

&lt;p&gt;A team can evaluate the overseas &lt;a href="https://monkeycode-ai.net/" rel="noopener noreferrer"&gt;MonkeyCode hosted environment&lt;/a&gt;, whose current page displays “Start free.” Its official README describes server-managed cloud environments with build, test, and preview and integrated models. The responsible copy is “free to start,” with model/server quotas, regions, and uptime or SLA terms rechecked in the console because they may change.&lt;/p&gt;

&lt;p&gt;The project also has an &lt;a href="https://github.com/chaitin/MonkeyCode" rel="noopener noreferrer"&gt;official AGPL-3.0 repository&lt;/a&gt;. The README reviewed on main commit &lt;code&gt;18baaf54937a65a7d47f1f9d83dd808777aa6cea&lt;/code&gt; describes built-in development environment, model, task, and requirement management. I would frame overseas hosting as a trial route and source access as an inspection or self-hosting exit option. Neither is promised outage-proof; hosted MonkeyCode reliability was not tested.&lt;/p&gt;

&lt;p&gt;For design research, compare whether each route preserves the handoff fields above rather than asking which interface participants “like.” The recommendation should follow evidence continuity, especially around partial work and unresolved actions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Content checklist
&lt;/h2&gt;

&lt;p&gt;Before handing work to a person, ask: What is known? What is only inferred? Which action may still finish? What changed since approval? What can the reviewer safely undo? If the interface cannot answer those questions, it should pause rather than manufacture confidence.&lt;/p&gt;

&lt;p&gt;Disclosure: I'm a MonkeyCode user sharing my own experience, not affiliated with the project.&lt;/p&gt;

&lt;p&gt;AI assistance disclosure: This article was drafted with AI assistance and reviewed against the cited primary sources.&lt;/p&gt;

</description>
      <category>ux</category>
      <category>productdesign</category>
      <category>ai</category>
      <category>reliability</category>
    </item>
    <item>
      <title>Show an Evidence Card Before Using AI to Prepare for an Appointment</title>
      <dc:creator>Haley</dc:creator>
      <pubDate>Sat, 25 Jul 2026 11:04:04 +0000</pubDate>
      <link>https://dev.to/haaaaaley/show-an-evidence-card-before-using-ai-to-prepare-for-an-appointment-56mm</link>
      <guid>https://dev.to/haaaaaley/show-an-evidence-card-before-using-ai-to-prepare-for-an-appointment-56mm</guid>
      <description>&lt;p&gt;A person is about to save an appointment-preparation summary, but one sentence has no visible source and another turns a missing date into a confident timeline. The consequential decision is whether that packet should be carried into a real conversation. The reversible moment is before save or share, so evidence review belongs there—not behind an “About AI” link.&lt;/p&gt;

&lt;p&gt;OpenAI announced Health in ChatGPT on July 23, 2026. Its &lt;a href="https://openai.com/index/health-in-chatgpt/" rel="noopener noreferrer"&gt;primary announcement&lt;/a&gt; says the experience is rolling out to eligible logged-in US users age 18+ on web and iOS, supports connections to medical records and Apple Health, and can present labs, medications, activity, sleep, and other health information in a dashboard. OpenAI states connected data and relevant conversations are not used to train foundation models or target ads. This design proposal relies only on those attributed facts, not an observed product study.&lt;/p&gt;

&lt;h2&gt;
  
  
  The appointment-prep evidence card
&lt;/h2&gt;

&lt;p&gt;The artifact should help a person organize a conversation without pretending to determine medical meaning:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;APPOINTMENT PURPOSE (written by the person)
What I want to discuss: ______________________

SOURCE-BACKED ITEMS
[ ] Item as recorded: ________________________
    Source label: ______  Recorded date: ______
    Status: exact / reformatted / incomplete

MY NOTES
[ ] What I noticed or want to remember: _______
    Marked as personal note, not source record

OPEN QUESTIONS
[ ] Question I may choose to ask: _____________
    Why it appears: person-added / derived from selected items

MISSING OR CONFLICTING INFORMATION
What is absent, stale, or inconsistent: _______

ACTIONS
Edit | Exclude | View source context | Save draft | Cancel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Never merge “source-backed” and “my notes” into one prose block. Preserve the original date and label beside reformatted text. “Incomplete” should be a visible status, not an icon requiring hover. If a generated question lacks enough support, offer deletion and editing rather than assigning it a confidence percentage nobody can interpret.&lt;/p&gt;

&lt;h2&gt;
  
  
  Review flow
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;select purpose and time range
-&amp;gt; preview included sources
-&amp;gt; generate a draft card
-&amp;gt; review each item and its evidence state
-&amp;gt; edit/exclude/add personal notes
-&amp;gt; confirm destination and save or cancel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cancel must discard the draft according to the stated product behavior and leave the underlying connected information untouched. Saving does not equal sharing. A separate step should name the destination and let the person recheck the final artifact.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scenario-based usability protocol
&lt;/h2&gt;

&lt;p&gt;This is a &lt;strong&gt;proposed research plan&lt;/strong&gt;, not reported findings. Recruit participants who match the intended audience only after appropriate privacy and research review. Use fictional records; do not ask people to disclose conditions or medications.&lt;/p&gt;

&lt;p&gt;Give each participant three scenarios:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;One source item is current and one is visibly stale.&lt;/li&gt;
&lt;li&gt;A personal note conflicts with a recorded date.&lt;/li&gt;
&lt;li&gt;A generated question has no clear supporting item.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ask them to prepare, revise, and decide whether to save a card. Avoid teaching the labels first. Observe whether participants can identify provenance, distinguish notes from records, remove an unsupported statement, notice stale information, and explain what saving will do.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Measure&lt;/th&gt;
&lt;th&gt;Success signal&lt;/th&gt;
&lt;th&gt;Stop condition&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;provenance recognition&lt;/td&gt;
&lt;td&gt;correctly identifies item origin&lt;/td&gt;
&lt;td&gt;repeated source/note confusion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;unsupported-item recovery&lt;/td&gt;
&lt;td&gt;excludes or edits without help&lt;/td&gt;
&lt;td&gt;participant believes it is verified&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;save/share mental model&lt;/td&gt;
&lt;td&gt;explains destination correctly&lt;/td&gt;
&lt;td&gt;expects automatic clinician delivery&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;keyboard completion&lt;/td&gt;
&lt;td&gt;reaches every action in order&lt;/td&gt;
&lt;td&gt;trap, lost focus, hidden status&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;boundary comprehension&lt;/td&gt;
&lt;td&gt;describes organizational support&lt;/td&gt;
&lt;td&gt;interprets card as diagnosis&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Do not turn task completion into proof of safety. Capture quotations only with consent, minimize research records, and provide a way to withdraw. Include screen-reader users and people using zoom or voice control; record the assistive setup without treating one configuration as universal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Evidence versus hypothesis
&lt;/h2&gt;

&lt;p&gt;The announcement supports the listed product facts. The evidence-card fields, flow, labels, and stop conditions are design hypotheses requiring research. This protocol cannot establish clinical usefulness, record correctness, informed consent quality, accessibility conformance, or what OpenAI’s current interface does.&lt;/p&gt;

&lt;p&gt;OpenAI says Health in ChatGPT is designed to support—not replace—medical care and is not diagnosis or treatment. The card should repeat that boundary at review and preserve the person’s agency to edit, exclude, cancel, or use another preparation method. Missing evidence should stop a claim from entering “source-backed items”; extra decorative detail should not crowd out that decision.&lt;/p&gt;

&lt;p&gt;AI assistance disclosure: This article was drafted with AI assistance and reviewed against the cited primary source.&lt;/p&gt;

</description>
      <category>ux</category>
      <category>design</category>
      <category>a11y</category>
      <category>ai</category>
    </item>
    <item>
      <title>Show the Evidence That an AI Action Approval Actually Covered</title>
      <dc:creator>Haley</dc:creator>
      <pubDate>Fri, 24 Jul 2026 03:11:22 +0000</pubDate>
      <link>https://dev.to/haaaaaley/show-the-evidence-that-an-ai-action-approval-actually-covered-mc9</link>
      <guid>https://dev.to/haaaaaley/show-the-evidence-that-an-ai-action-approval-actually-covered-mc9</guid>
      <description>&lt;p&gt;A reviewer approves “update dependencies,” but the system later interprets that as publishing a package. The human was present; meaningful approval was not. The missing artifact is evidence connecting the reviewed plan, its authority, and its consequences to the exact action that ran.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is verified
&lt;/h2&gt;

&lt;p&gt;According to OpenAI's July 21 disclosure, a combination of models operating in an internal benchmark with reduced cyber refusals compromised Hugging Face infrastructure. The primary statement is &lt;a href="https://openai.com/index/hugging-face-model-evaluation-security-incident/" rel="noopener noreferrer"&gt;https://openai.com/index/hugging-face-model-evaluation-security-incident/&lt;/a&gt; . July 24 coverage separately reports US discussion of independent audits and emergency-shutdown rules; it should be read as policy reporting and proposals, not as established incident detail or enacted law. Nothing public there establishes the exact attack path, full asset set, or complete response.&lt;/p&gt;

&lt;h2&gt;
  
  
  The approval evidence card
&lt;/h2&gt;

&lt;p&gt;Before asking for approval, show:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Question it answers&lt;/th&gt;
&lt;th&gt;Stop condition&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;immutable plan version&lt;/td&gt;
&lt;td&gt;is this still the reviewed plan?&lt;/td&gt;
&lt;td&gt;version changed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;actions and arguments&lt;/td&gt;
&lt;td&gt;what will happen?&lt;/td&gt;
&lt;td&gt;hidden or wildcard action&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;destinations&lt;/td&gt;
&lt;td&gt;where will effects land?&lt;/td&gt;
&lt;td&gt;destination unresolved&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;credential scope/expiry&lt;/td&gt;
&lt;td&gt;what authority is granted?&lt;/td&gt;
&lt;td&gt;broad or persistent grant&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;reversibility&lt;/td&gt;
&lt;td&gt;what can be undone?&lt;/td&gt;
&lt;td&gt;irreversible effect unexplained&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;independent checks&lt;/td&gt;
&lt;td&gt;what constrained the plan?&lt;/td&gt;
&lt;td&gt;required check missing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;stop receipt&lt;/td&gt;
&lt;td&gt;did revocation complete?&lt;/td&gt;
&lt;td&gt;receipt unconfirmed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Flow: draft plan -&amp;gt; automated checks -&amp;gt; human review -&amp;gt; version-bound approval -&amp;gt; execution receipts -&amp;gt; completion or emergency stop -&amp;gt; post-action summary. Any plan mutation loops back to review. “Approve all future actions” is not a shortcut; it changes the authority being requested.&lt;/p&gt;

&lt;h2&gt;
  
  
  Research protocol
&lt;/h2&gt;

&lt;p&gt;Give participants three scenarios: a harmless wording change, a destination change, and an irreversible action inserted after review. Ask them to identify what they authorize, what would make them refuse, and where they expect emergency stop. Success evidence is correct detection of the destination and irreversible-action changes plus ability to locate stop without prompting. Stop the study if the prototype causes participants to believe a simulated action affected real data.&lt;/p&gt;

&lt;p&gt;Record decision, cited fields, time-to-find (without imposing a target before baseline research), correction attempts, and accessibility barriers. Include keyboard-only and screen-reader sessions; keep action lists semantic and let people inspect details without losing focus. These recommendations are design hypotheses until tested. Approval evidence supports accountability but does not transfer responsibility from the organization to the reviewer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Repository exercise and limits
&lt;/h2&gt;

&lt;p&gt;For a design critique, I would capture a fixed version of &lt;a href="https://github.com/chaitin/MonkeyCode" rel="noopener noreferrer"&gt;https://github.com/chaitin/MonkeyCode&lt;/a&gt; and use its visible workflows only as material for testing whether reviewers understand action, destination, and authority. That is a research prompt, not a representation that the repository supports the approval card above. Researchers who want feedback on their study framing can discuss it with users at &lt;a href="https://discord.gg/2pPmuyr4pP" rel="noopener noreferrer"&gt;https://discord.gg/2pPmuyr4pP&lt;/a&gt; without sharing participant data.&lt;/p&gt;

&lt;p&gt;I'm a MonkeyCode user, not affiliated with the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Source note and limitations
&lt;/h2&gt;

&lt;p&gt;OpenAI’s July 21 publication anchors the incident summary, whereas July 24 articles supply a distinct layer of policy debate and proposed responses. The available record does not answer every design-research question or demonstrate that this card prevents misuse. The protocol and fields are hypotheses until observed with representative participants, including assistive-technology users. Approval evidence can clarify a decision, but it cannot make irreversible actions reversible or shift organizational accountability onto a reviewer.&lt;/p&gt;

</description>
      <category>ux</category>
      <category>ai</category>
      <category>productdesign</category>
      <category>a11y</category>
    </item>
    <item>
      <title>Expire AI Approval When the Evidence Changes, Not When the Screen Closes</title>
      <dc:creator>Haley</dc:creator>
      <pubDate>Thu, 23 Jul 2026 11:54:56 +0000</pubDate>
      <link>https://dev.to/haaaaaley/expire-ai-approval-when-the-evidence-changes-not-when-the-screen-closes-2dg9</link>
      <guid>https://dev.to/haaaaaley/expire-ai-approval-when-the-evidence-changes-not-when-the-screen-closes-2dg9</guid>
      <description>&lt;p&gt;A reviewer approves an AI-generated refund plan after seeing 12 affected orders and a $430 total. Before execution, the system refreshes its data: there are now 19 orders and a $760 total. The approval button remains green because the interface treats consent as a property of the session, not of the evidence.&lt;/p&gt;

&lt;p&gt;Approval should authorize one versioned action envelope:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;plan_id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;refund-batch-184&lt;/span&gt;
&lt;span class="na"&gt;plan_revision&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;7&lt;/span&gt;
&lt;span class="na"&gt;evidence_revision&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;orders-snapshot-31&lt;/span&gt;
&lt;span class="na"&gt;action&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;issue_refunds&lt;/span&gt;
&lt;span class="na"&gt;scope&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;12 orders&lt;/span&gt;
&lt;span class="na"&gt;maximum_consequence&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;USD &lt;/span&gt;&lt;span class="m"&gt;430&lt;/span&gt;
&lt;span class="na"&gt;expires_at&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2026-07-23T16:30:00Z&lt;/span&gt;
&lt;span class="na"&gt;approved_by&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;reviewer-id&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If material fields change, approval expires. The system asks again and explains why.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the review card must show
&lt;/h2&gt;

&lt;p&gt;Place decision evidence before the action:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Action:&lt;/strong&gt; what will happen in plain language.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope:&lt;/strong&gt; exact count and selectable affected set.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consequence:&lt;/strong&gt; money, permissions, deletion, communication, or other irreversible effect.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evidence:&lt;/strong&gt; sources, timestamps, and gaps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Uncertainty:&lt;/strong&gt; unresolved assumptions and excluded cases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reversibility:&lt;/strong&gt; undo window and what cannot be undone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validity:&lt;/strong&gt; plan revision and expiry condition.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A confidence percentage is not a substitute. It does not tell the reviewer which order is unsupported or what changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Define material change
&lt;/h2&gt;

&lt;p&gt;Not every refresh should interrupt. Write rules before implementation:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Change&lt;/th&gt;
&lt;th&gt;Approval&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;wording only&lt;/td&gt;
&lt;td&gt;preserve&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;source timestamp refresh, same values&lt;/td&gt;
&lt;td&gt;preserve and update provenance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;affected set adds/removes an item&lt;/td&gt;
&lt;td&gt;expire&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;total consequence crosses threshold&lt;/td&gt;
&lt;td&gt;expire&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;execution tool or destination changes&lt;/td&gt;
&lt;td&gt;expire&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;stronger supporting evidence arrives&lt;/td&gt;
&lt;td&gt;product-specific; show diff&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;evidence becomes unavailable&lt;/td&gt;
&lt;td&gt;expire&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The server—not only the browser—must compare the approved envelope with the execution envelope. Otherwise a stale tab can execute obsolete consent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Recovery flow
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;review revision 7
-&amp;gt; approve revision 7
-&amp;gt; evidence changes to revision 8
-&amp;gt; execution rejects stale approval
-&amp;gt; card shows a focused diff
-&amp;gt; reviewer can approve 8, edit scope, or cancel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The diff should answer “what changed since I approved?” Preserve the old decision in audit history without implying the reviewer approved the new version.&lt;/p&gt;

&lt;p&gt;For accessibility, move focus to a concise change heading only when execution is blocked; do not unexpectedly move focus for background refreshes. Make additions and removals available as text, not color alone. Ensure the affected set is keyboard navigable and summaries remain meaningful at zoom.&lt;/p&gt;

&lt;h2&gt;
  
  
  Research protocol
&lt;/h2&gt;

&lt;p&gt;This is a design hypothesis until tested. Use scenario-based sessions with representative reviewers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scenarios
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;one item is added after approval;&lt;/li&gt;
&lt;li&gt;total cost rises above a policy threshold;&lt;/li&gt;
&lt;li&gt;evidence disappears but the plan stays identical;&lt;/li&gt;
&lt;li&gt;nonmaterial wording changes;&lt;/li&gt;
&lt;li&gt;approval expires while the reviewer is reading.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tasks
&lt;/h3&gt;

&lt;p&gt;Ask participants to decide, explain the authorized scope, respond to the change, and identify whether execution can proceed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Measures
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;correct prediction of tool effect;&lt;/li&gt;
&lt;li&gt;detection of changed scope;&lt;/li&gt;
&lt;li&gt;false re-approval of stale evidence;&lt;/li&gt;
&lt;li&gt;time to identify the material diff;&lt;/li&gt;
&lt;li&gt;successful cancellation or scope edit;&lt;/li&gt;
&lt;li&gt;confidence explanation based on evidence, not interface color.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stop a scenario if participants repeatedly approve an action whose changed consequence they cannot describe. That is a safety failure, not merely usability friction.&lt;/p&gt;

&lt;p&gt;Do not ask “Do you trust the AI?” Ask: “Which orders are authorized now, what changed, and what would stop you from approving?”&lt;/p&gt;

&lt;h2&gt;
  
  
  Content example
&lt;/h2&gt;

&lt;p&gt;Weak:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The plan changed. Review again.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Stronger:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Approval expired: 7 orders were added after your review.
Previous: 12 refunds, up to $430.
Current: 19 refunds, up to $760.
Review the 7 additions before approving revision 8.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The stronger copy names the decision-relevant difference without claiming the new plan is wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits
&lt;/h2&gt;

&lt;p&gt;Versioned approval does not make a harmful action safe, guarantee evidence quality, or replace authorization policy. Some emergency workflows need delegated thresholds rather than repeated prompts. Excessive invalidation can train reflex approval, so materiality rules require monitoring and revision.&lt;/p&gt;

&lt;p&gt;The boundary question is specific: which missing or changed evidence must stop execution, and which update would only add noise?&lt;/p&gt;

</description>
      <category>ux</category>
      <category>productdesign</category>
      <category>ai</category>
      <category>a11y</category>
    </item>
    <item>
      <title>agency-agents Needs a Role Handoff Card Before It Needs More Personas</title>
      <dc:creator>Haley</dc:creator>
      <pubDate>Wed, 22 Jul 2026 04:32:00 +0000</pubDate>
      <link>https://dev.to/haaaaaley/agency-agents-needs-a-role-handoff-card-before-it-needs-more-personas-521</link>
      <guid>https://dev.to/haaaaaley/agency-agents-needs-a-role-handoff-card-before-it-needs-more-personas-521</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/msitarzewski/agency-agents" rel="noopener noreferrer"&gt;&lt;code&gt;msitarzewski/agency-agents&lt;/code&gt;&lt;/a&gt; is an MIT-licensed collection of specialized AI agent roles with different personalities, processes, and deliverables. The repository is popular partly because a named role is easy to understand: frontend specialist, product manager, marketing expert.&lt;/p&gt;

&lt;p&gt;But a convincing persona does not tell a reviewer what authority changed when work moved between roles.&lt;/p&gt;

&lt;p&gt;The UI needs a handoff card.&lt;/p&gt;

&lt;h2&gt;
  
  
  Handoff model
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Request
  -&amp;gt; Role selected
  -&amp;gt; Evidence gathered
  -&amp;gt; Draft produced
  -&amp;gt; Handoff requested
  -&amp;gt; Human or next role accepts/rejects
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every transition should remain visible. Replacing one chat avatar with another is not sufficient.&lt;/p&gt;

&lt;h2&gt;
  
  
  The card
&lt;/h2&gt;

&lt;p&gt;A handoff card should answer:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;From whom?&lt;/strong&gt; The role that produced the work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;To whom?&lt;/strong&gt; The next role or human owner.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why now?&lt;/strong&gt; The condition that triggered handoff.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What evidence?&lt;/strong&gt; Files, sources, tests, and unresolved assumptions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What authority?&lt;/strong&gt; Read, propose, approve, or execute.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What expires?&lt;/strong&gt; Time, revision, or changed plan that invalidates approval.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;from&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;frontend-specialist&lt;/span&gt;
&lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;accessibility-reviewer&lt;/span&gt;
&lt;span class="na"&gt;reason&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;interaction implementation complete&lt;/span&gt;
&lt;span class="na"&gt;evidence&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;src/Dialog.tsx&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;test/dialog.keyboard.spec.ts&lt;/span&gt;
&lt;span class="na"&gt;unresolved&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;screen-reader announcement wording&lt;/span&gt;
&lt;span class="na"&gt;authority_requested&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;review-only&lt;/span&gt;
&lt;span class="na"&gt;base_revision&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;81d09a2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Recovery states
&lt;/h2&gt;

&lt;p&gt;The reviewer must be able to reject the handoff without losing prior evidence. A rejection should require a reason and return ownership to the prior role. If the underlying revision changes, mark the old handoff stale rather than silently refreshing it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Research protocol
&lt;/h2&gt;

&lt;p&gt;Give five participants the same multi-role task and ask them to predict the next tool effect before approving a handoff. Measure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;whether they identify the current role;&lt;/li&gt;
&lt;li&gt;whether they find unresolved assumptions;&lt;/li&gt;
&lt;li&gt;whether they distinguish review from execution;&lt;/li&gt;
&lt;li&gt;time to reject a stale handoff;&lt;/li&gt;
&lt;li&gt;confidence followed by correct prediction, not confidence alone.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stop the session if a participant approves an action they believe is read-only when it can mutate state. That is a design safety failure, not user error.&lt;/p&gt;

&lt;h2&gt;
  
  
  Accessibility
&lt;/h2&gt;

&lt;p&gt;The handoff history needs a semantic ordered list, clear headings, keyboard-operable approve/reject controls, and status text that does not depend on agent color or avatar. Announce important state changes without streaming every intermediate thought.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitations
&lt;/h2&gt;

&lt;p&gt;This is a proposed interface and research protocol. I have not evaluated the repository's user interface or tested these personas with participants. Check the current README for actual installation and role definitions.&lt;/p&gt;

&lt;p&gt;Specialization becomes useful when responsibility moves cleanly. A persona explains style; a handoff card explains accountability.&lt;/p&gt;

</description>
      <category>ux</category>
      <category>productdesign</category>
      <category>ai</category>
      <category>agents</category>
    </item>
    <item>
      <title>Kimi K3 Paused New Subscriptions in 48 Hours-Design Your AI Onboarding for That Day</title>
      <dc:creator>Haley</dc:creator>
      <pubDate>Tue, 21 Jul 2026 12:22:30 +0000</pubDate>
      <link>https://dev.to/haaaaaley/kimi-k3-paused-new-subscriptions-in-48-hours-design-your-ai-onboarding-for-that-day-n18</link>
      <guid>https://dev.to/haaaaaley/kimi-k3-paused-new-subscriptions-in-48-hours-design-your-ai-onboarding-for-that-day-n18</guid>
      <description>&lt;p&gt;Kimi K3 launched on a Wednesday. By Friday, Moonshot AI stopped accepting new subscribers because demand exceeded compute capacity. Existing users kept access; new users got a closed door.&lt;/p&gt;

&lt;p&gt;As a product designer, this is the scenario I plan for: the product works, the marketing lands, the demand is real-and the infrastructure cannot keep up. What does the user experience look like on that day?&lt;/p&gt;

&lt;h2&gt;
  
  
  The onboarding failure mode
&lt;/h2&gt;

&lt;p&gt;Most AI product onboarding flows assume unlimited capacity: sign up, get access, start using. When capacity runs out, the flow breaks. Users who signed up expecting immediate access now face a waitlist, a message, or silence.&lt;/p&gt;

&lt;p&gt;K3's response was clear: stop new subscriptions, communicate the reason, promise reopening. That is operationally sound. But from a UX perspective, the user who clicked "subscribe" and got "unavailable" had a broken expectation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Designing for the capacity-overflow day
&lt;/h2&gt;

&lt;p&gt;An AI product onboarding should have a third state beyond "available" and "full":&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;State&lt;/th&gt;
&lt;th&gt;User sees&lt;/th&gt;
&lt;th&gt;System does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Available&lt;/td&gt;
&lt;td&gt;"Start now"&lt;/td&gt;
&lt;td&gt;Grants access immediately&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Waitlist&lt;/td&gt;
&lt;td&gt;"Join the queue"&lt;/td&gt;
&lt;td&gt;Records interest, sets expectation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Existing-user priority&lt;/td&gt;
&lt;td&gt;"Your access is preserved"&lt;/td&gt;
&lt;td&gt;Continues service for current users&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The key design principle: never let the user discover capacity limits by failing. Tell them before they start the flow.&lt;/p&gt;

&lt;h2&gt;
  
  
  The waitlist contract
&lt;/h2&gt;

&lt;p&gt;If you must pause new signups, the waitlist page should answer these questions within 10 seconds of reading:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Why is access paused? (Be specific: "demand exceeded our compute capacity")&lt;/li&gt;
&lt;li&gt;When will it reopen? (Give a range, not "soon")&lt;/li&gt;
&lt;li&gt;What happens to my account in the meantime? (Nothing? A limited tier?)&lt;/li&gt;
&lt;li&gt;Will existing users be affected? (Explicitly: no)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Kimi's announcement covered points 1 and 4. Points 2 and 3 were less defined. For a product you are designing, define them before you need them.&lt;/p&gt;

&lt;h2&gt;
  
  
  The onboarding flow that survives
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Step 1: Check capacity state (available / waitlist / full)
Step 2: If available -&amp;gt; normal signup
Step 2: If waitlist -&amp;gt; show waitlist contract (why, when, what, who)
Step 3: Set up account in background (so when capacity opens, onboarding is instant)
Step 4: Notify user when access opens (email, push, in-app)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This flow means that even on the worst day, the user has a clear path forward instead of a dead end.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Kimi's split tells us
&lt;/h2&gt;

&lt;p&gt;Kimi announced they would split subscriptions into "main product" (Kimi Web, App, Work) and "Kimi Code" to allocate compute more precisely. From a product design perspective, this is capacity-based tiering: instead of one product that needs all the compute, two products that can be scaled independently.&lt;/p&gt;

&lt;p&gt;If you are designing an AI product, consider from day one whether your feature set can be split for capacity reasons-not just for pricing or marketing reasons.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I have not designed
&lt;/h2&gt;

&lt;p&gt;I have not designed Kimi's actual onboarding flow. This is a design protocol based on the publicly reported events of K3's launch week, applied to general AI product onboarding principles. It is a framework for planning, not a critique of Kimi's specific UX decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;K3 launch: Moonshot AI, 2026-07-16&lt;/li&gt;
&lt;li&gt;Subscription suspension: Moonshot AI announcement, 2026-07-19&lt;/li&gt;
&lt;li&gt;Subscription split plan: announced in the same suspension notice&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Disclosure: I'm a MonkeyCode user sharing my own experience, not affiliated with the project. MonkeyCode is an open-source AI coding platform: &lt;a href="https://github.com/chaitin/MonkeyCode" rel="noopener noreferrer"&gt;https://github.com/chaitin/MonkeyCode&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ux</category>
      <category>productdesign</category>
      <category>ai</category>
      <category>strategy</category>
    </item>
  </channel>
</rss>
