<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[World Reading Note]]></title><description><![CDATA[Notes from building things, observing what happens, and reading the patterns that emerge. Practical lessons for technical makers and small-tool builders.]]></description><link>https://worldreadingnote.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6a9b77581660076f2b1e6440/ad5de28e-37fc-4be5-8e74-9f5849ad6636.png</url><title>World Reading Note</title><link>https://worldreadingnote.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 17:00:37 GMT</lastBuildDate><atom:link href="https://worldreadingnote.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Before You Create Another Draft, Check What Already Exists]]></title><description><![CDATA[During one recent AI-assisted publishing session, the draft list was checked before the published list.
A new draft was started for an article that was already public.
The platform had not lost the ar]]></description><link>https://worldreadingnote.hashnode.dev/before-you-create-another-draft-check-what-already-exists</link><guid isPermaLink="true">https://worldreadingnote.hashnode.dev/before-you-create-another-draft-check-what-already-exists</guid><category><![CDATA[Artificial Intelligence]]></category><category><![CDATA[Technical writing ]]></category><category><![CDATA[Developer Tools]]></category><dc:creator><![CDATA[Yosuke Yoshimura]]></dc:creator><pubDate>Tue, 08 Sep 2026 23:33:52 GMT</pubDate><content:encoded><![CDATA[<p>During one recent AI-assisted publishing session, the draft list was checked before the published list.</p>
<p>A new draft was started for an article that was already public.</p>
<p>The platform had not lost the article. The article had not failed to publish. The observation was incomplete: one state class had been inspected, while another relevant state class had not.</p>
<p>That small mistake suggests a practical question for anyone using an AI agent with a CMS:</p>
<p><strong>Before creating something, how do you establish that it does not already exist?</strong></p>
<h2>One publication, several state classes</h2>
<p>A publishing dashboard rarely has one complete list called “everything.” Content may be separated into:</p>
<ul>
<li>drafts</li>
<li>scheduled posts</li>
<li>published posts</li>
<li>archived posts</li>
<li>submissions</li>
</ul>
<p>Seeing nothing in one list does not establish absence from the others.</p>
<p>In this case, the dashboard showed zero drafts after cleanup and two published articles. The article in question was already publicly accessible. The extra draft was the duplicate.</p>
<p>The error was not “the article is missing.”</p>
<p>The error was:</p>
<blockquote>
<p>We had not yet looked from every position required to support that conclusion.</p>
</blockquote>
<h2>A small preflight before creating content</h2>
<p>Before an agent creates another article, page, release, or asset, I now want it to run this bounded check.</p>
<h3>1. Identify the intended artifact</h3>
<p>Write down the identity you expect:</p>
<ul>
<li>working title</li>
<li>intended slug or URL</li>
<li>publication or account</li>
<li>substantive topic</li>
<li>expected state</li>
</ul>
<p>A title match alone may be insufficient. Titles can change. Two different titles can also contain substantially the same article.</p>
<h3>2. Check every relevant state class</h3>
<p>For a publishing system, that usually means checking at least:</p>
<ul>
<li>Drafts</li>
<li>Published</li>
<li>Scheduled, if the platform supports it</li>
<li>Archived, when restoration is possible</li>
</ul>
<p>The goal is not unlimited searching. It is a fixed inventory check over the state classes that can contain the artifact.</p>
<h3>3. Open the strongest candidate</h3>
<p>If an item may match, inspect enough to distinguish it:</p>
<ul>
<li>Does the title match?</li>
<li>Does the slug match?</li>
<li>Does the substantive content match?</li>
<li>Is there a public URL?</li>
<li>Is the public page actually reachable?</li>
</ul>
<p>Do not create a replacement merely because the first list you opened was empty.</p>
<h3>4. Classify the result</h3>
<p>A small state vocabulary helps:</p>
<p><strong>MISSING</strong><br />No matching draft or public artifact was found within the checked scope.</p>
<p><strong>DRAFT_ONLY</strong><br />A matching draft exists, but public availability is not established.</p>
<p><strong>PUBLISHED_ONLY</strong><br />The public artifact exists; a new draft is unnecessary unless a revision is intended.</p>
<p><strong>DUPLICATE</strong><br />Equivalent draft and published artifacts both exist without a deliberate revision relationship.</p>
<p><strong>UNKNOWN</strong><br />The available views are insufficient to distinguish the state.</p>
<h3>5. Take the minimum correcting action</h3>
<p>The classification determines the next action:</p>
<ul>
<li>MISSING may justify creating a draft.</li>
<li>DRAFT_ONLY may justify continuing the existing draft.</li>
<li>PUBLISHED_ONLY may justify linking, observing, or promoting the existing article.</li>
<li>DUPLICATE may justify removing the duplicate after confirming the exact target.</li>
<li>UNKNOWN should stop creation until the missing observation is available.</li>
</ul>
<h2>What happened in this case</h2>
<p>The sequence was:</p>
<blockquote>
<p>Draft inspected<br />→ published article overlooked<br />→ duplicate draft created<br />→ owner correction received<br />→ Drafts and Published rechecked<br />→ public article opened and compared<br />→ duplicate draft deleted<br />→ Drafts 0 / Published 2 verified</p>
</blockquote>
<p>This established one thing under one set of conditions: checking both inventory classes exposed the mistaken assumption and allowed the duplicate to be removed while preserving the public article.</p>
<p>It did <strong>not</strong> establish that this procedure prevents every duplicate, works identically on every CMS, or proves that two artifacts are semantically equivalent in all cases.</p>
<p>Those remain outside the evidence.</p>
<h2>The correction is part of the loop</h2>
<p>The most useful part of the event was not the deletion itself. It was the relationship between an assertion and a correction.</p>
<p>The agent concluded that an article still needed to be prepared. The owner contradicted that conclusion. The contradiction triggered a broader observation. That observation changed the model of the situation, and the next action became smaller: delete one duplicate instead of publishing another copy.</p>
<p>That is a compact world loop:</p>
<blockquote>
<p>Act<br />→ receive correction<br />→ re-observe<br />→ distinguish states<br />→ update the model<br />→ apply the minimum correction<br />→ verify what remained unchanged</p>
</blockquote>
<p>An owner correction is real evidence about the workflow. It is not evidence of market demand, reader trust, or product fit. Those require different observations.</p>
<h2>Before your next AI-assisted publish</h2>
<p>Ask the agent:</p>
<blockquote>
<p>Which state classes did you check before deciding this artifact was missing?</p>
</blockquote>
<p>If the answer is only “Drafts,” the next action may not be “create.”</p>
<p>It may be “look once more, from the other relevant position.”</p>
<p>This follows the same claim-scope distinction described in <a href="https://worldreadingnote.hashnode.dev/your-ai-says-it-s-done-what-has-actually-been-proven">Your AI Says It’s Done. What Has Actually Been Proven?</a>.</p>
<p>A free <a href="https://worldreader6.gumroad.com/l/mkebln">Claim Scope Review Checklist</a> is also available for checking whether a technical conclusion stays inside its evidence.</p>
<p>What state classes does your publishing or release workflow check before it creates something new?</p>
]]></content:encoded></item><item><title><![CDATA[Your AI Says It’s Done. What Has Actually Been Proven?]]></title><description><![CDATA[AI coding agents can sound certain, even when the evidence is narrower than the conclusion.
You ask:

Is this ready?

And the answer comes back:

Yes. All tests pass. The implementation is safe and re]]></description><link>https://worldreadingnote.hashnode.dev/your-ai-says-it-s-done-what-has-actually-been-proven</link><guid isPermaLink="true">https://worldreadingnote.hashnode.dev/your-ai-says-it-s-done-what-has-actually-been-proven</guid><category><![CDATA[engineering]]></category><category><![CDATA[Artificial Intelligence]]></category><category><![CDATA[Testing]]></category><dc:creator><![CDATA[Yosuke Yoshimura]]></dc:creator><pubDate>Tue, 08 Sep 2026 22:47:09 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a9b77581660076f2b1e6440/5afe15a7-d1d2-4e38-bc94-6fd663f1da9c.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>AI coding agents can sound certain, even when the evidence is narrower than the conclusion.</p>
<p>You ask:</p>
<blockquote>
<p>Is this ready?</p>
</blockquote>
<p>And the answer comes back:</p>
<blockquote>
<p>Yes. All tests pass. The implementation is safe and ready for production.</p>
</blockquote>
<p>That sounds useful.</p>
<p>But there is a subtle problem:</p>
<p><strong>What was actually observed, and what was inferred beyond the evidence?</strong></p>
<p>Those are not the same thing.</p>
<h2>A simple example</h2>
<p>Suppose an agent modifies a feature and reports:</p>
<blockquote>
<p>All 42 tests pass. The implementation is safe.</p>
</blockquote>
<p>The first sentence may be directly supported by evidence.</p>
<p>The second may not be.</p>
<p>A more precise review might look like this:</p>
<pre><code class="language-text">Observed
- 42 configured tests passed.

Supported
- The tested paths behaved as expected under those test conditions.

Not established
- All runtime paths are safe.
- Unknown inputs cannot violate the boundary.
- Production deployment is safe.
</code></pre>
<p>Nothing here says the implementation is bad.</p>
<p>The issue is the <strong>scope of the claim</strong>.</p>
<p>The evidence may be correct while the conclusion is broader than what the evidence actually establishes.</p>
<h2>Why this matters more with AI agents</h2>
<p>Human developers do this too.</p>
<p>AI systems can compress many observations into a short conclusion before a person has inspected the full chain of evidence.</p>
<p>A coding agent may inspect files, run tests, modify code, read logs, and then compress everything into:</p>
<blockquote>
<p>Done.</p>
</blockquote>
<p>That compression is convenient.</p>
<p>It can also hide an important distinction:</p>
<p><strong>“I observed enough to support this limited claim”</strong></p>
<p>versus</p>
<p><strong>“The system is generally safe/correct/complete.”</strong></p>
<p>When agents are given more autonomy, this distinction becomes especially important.</p>
<h2>A useful question before accepting a claim</h2>
<p>When an AI system says something is:</p>
<ul>
<li><p>done</p>
</li>
<li><p>safe</p>
</li>
<li><p>correct</p>
</li>
<li><p>verified</p>
</li>
<li><p>production-ready</p>
</li>
<li><p>fully implemented</p>
</li>
<li><p>compliant</p>
</li>
<li><p>fixed</p>
</li>
</ul>
<p>ask:</p>
<p><strong>What evidence would have to exist for that exact claim to be true?</strong></p>
<p>Then compare that requirement with what was actually observed.</p>
<p>A tiny review can help separate the result into three layers:</p>
<h3>1. Observed</h3>
<p>What happened directly?</p>
<p>Tests passed.<br />A request returned 200.<br />A file changed.<br />A provider call count was zero.<br />A particular runtime path was exercised.</p>
<h3>2. Supported</h3>
<p>What conclusion is reasonably supported by those observations?</p>
<p>The tested behavior worked.<br />The inspected path did not call the provider.<br />The specific regression appears fixed.</p>
<h3>3. Not established</h3>
<p>What still exceeds the available evidence?</p>
<p>All possible inputs are safe.<br />Every runtime path behaves identically.<br />The system is production-ready.<br />The implementation satisfies every external requirement.</p>
<p>That last category is important.</p>
<p><strong>“Not established” does not mean false.</strong></p>
<p>It means the available evidence does not yet justify claiming it as true.</p>
<h2>This is really a boundary problem</h2>
<p>I started thinking about this while building AI-assisted systems.</p>
<p>The difficult part was often not getting the AI to do something.</p>
<p>It was determining exactly <strong>what had been established after it did it</strong>.</p>
<p>The system might correctly observe several facts and still produce a conclusion whose scope was too large.</p>
<p>So I started reviewing claims as boundaries:</p>
<pre><code class="language-text">Evidence
   ↓
Observed fact
   ↓
Supported claim
   ↓
Boundary
   ↓
What remains unproven
</code></pre>
<p>The goal is not to make AI less useful or force every task into formal verification.</p>
<p>It is simply to avoid silently converting:</p>
<blockquote>
<p>“This worked here.”</p>
</blockquote>
<p>into:</p>
<blockquote>
<p>“This works everywhere.”</p>
</blockquote>
<h2>A small checklist</h2>
<p>I turned this into a small free checklist for reviewing AI-generated technical claims.</p>
<p>It is meant for moments when an AI, agent, or development workflow says something has been verified, completed, fixed, or proven.</p>
<p>Before accepting the claim, the checklist asks you to look at things like:</p>
<ul>
<li><p>What was directly observed?</p>
</li>
<li><p>What evidence supports the claim?</p>
</li>
<li><p>Does the claim extend beyond that evidence?</p>
</li>
<li><p>Which conditions were actually tested?</p>
</li>
<li><p>What remains explicitly unproven?</p>
</li>
</ul>
<p>It is deliberately small.</p>
<p>The point is not to create another governance framework.</p>
<p>The point is to make one distinction easier:</p>
<p><strong>What do we know — and what are we only saying?</strong></p>
<p>You can get the free Claim Scope Review Checklist here:</p>
<p><a href="https://worldreader6.gumroad.com/l/mkebln">https://worldreader6.gumroad.com/l/mkebln</a></p>
<p>If you work with coding agents or AI-assisted development, I’m especially interested in one question:</p>
<p><strong>When your AI says “done,” what do you currently use to decide whether that claim is actually justified?</strong></p>
]]></content:encoded></item><item><title><![CDATA[When a fix feels done, whose recognition made it done?]]></title><description><![CDATA[I've noticed something small three times in the last few weeks. I don't know if it's a pattern or a coincidence. I want to write it down carefully before the shape talks me out of it.
The first was a ]]></description><link>https://worldreadingnote.hashnode.dev/when-a-fix-feels-done-whose-recognition-made-it-done</link><guid isPermaLink="true">https://worldreadingnote.hashnode.dev/when-a-fix-feels-done-whose-recognition-made-it-done</guid><category><![CDATA[Software Engineering]]></category><category><![CDATA[software development]]></category><category><![CDATA[writing]]></category><dc:creator><![CDATA[Yosuke Yoshimura]]></dc:creator><pubDate>Sat, 05 Sep 2026 05:02:44 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a9b77581660076f2b1e6440/42efbedc-f9c9-40e7-b434-ed26e20516ee.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I've noticed something small three times in the last few weeks. I don't know if it's a pattern or a coincidence. I want to write it down carefully before the shape talks me out of it.</p>
<p>The first was a version label. I'd finished a fix on a small file; the earlier review had touched everything it noticed. Preparing to share the file, a different eye caught a footer line still on the old number. That eye had checked one more thing — a place the earlier review had not been positioned to see. It wasn't only about who was declaring; it was also about which observation was actually available to establish whether the fix held.</p>
<p>The second was one online post. A programmatic check said the post was up. My own logged-in view said the platform's filter had removed it. Someone else's browser, from a fresh session, said the same. The post itself didn't change while we watched. The observer did. The answer I got depended on where I was standing when I asked.</p>
<p>The third was a small hand-over between two systems I'd built for myself. One of them had added a rule: don't hand this over yet, the evidence isn't enough. The problem was that "enough" was the other system's authority to decide. The first system had quietly begun arbitrating a question that wasn't its to answer. It was still doing useful work; it just wasn't in the position it thought it was.</p>
<p>The three don't feel identical. One is about an additional observation that hadn't happened. One is about the same object showing different faces depending on surface. One is about who is entitled to decide. But something rhymes. In each case, a claim was made — a fix is complete, a post is up, a hand-over is ready. In each case, whether the claim actually held depended on something more than the declaration: an observation, a surface, an authority. That other thing wasn't the same across the three. But its role was similar. It was what the claim's standing hung on for the purpose at issue.</p>
<p>There's a small notation habit that helps me notice this a little earlier. When I write a fact down, I try to tag it: declared by whom, observed by whom, inferred by whom. It doesn't solve the problem. It doesn't guarantee I've named the recognition position that will actually matter later. What it does — sometimes — is make the pause self-announce at write time rather than at hand-over time. When I write "the fix is complete" without any tag, I'm collapsing declarer, observer, and authority into one line, and treating the collapse as a settled thing. If I have to type "declared complete by me" when I only had one eye on it, the sentence starts asking its own follow-up — observed by whom, admitted by whom — and the answer might be "not yet." Which is often what I needed to know. What I don't know is whether this actually reduces the gap or just relocates it. The tag says "declared by me" — but who observes it, and by whose authority is it admitted for the purpose at issue? Those slots become the next thing to fill, or the next thing to leave honestly open. Whether that's progress or a relocation of the same shape one layer up, I don't yet know. I'm going to keep writing the tags for a while and see what the next few weeks show.</p>
]]></content:encoded></item></channel></rss>