<?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: FRANCISE LIANG</title>
    <description>The latest articles on DEV Community by FRANCISE LIANG (@francise_liang_e4544eadb9).</description>
    <link>https://dev.to/francise_liang_e4544eadb9</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2252675%2F960229c1-1f93-4d50-9aac-7df95f55c150.jpg</url>
      <title>DEV Community: FRANCISE LIANG</title>
      <link>https://dev.to/francise_liang_e4544eadb9</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/francise_liang_e4544eadb9"/>
    <language>en</language>
    <item>
      <title>Build Time vs Edit Time — My Web Agent Can Publish But Can't Edit (An Honest Capability-Boundary Spike)</title>
      <dc:creator>FRANCISE LIANG</dc:creator>
      <pubDate>Wed, 06 May 2026 00:55:53 +0000</pubDate>
      <link>https://dev.to/francise_liang_e4544eadb9/build-time-vs-edit-time-my-web-agent-can-publish-but-cant-edit-an-honest-capability-boundary-4lpl</link>
      <guid>https://dev.to/francise_liang_e4544eadb9/build-time-vs-edit-time-my-web-agent-can-publish-but-cant-edit-an-honest-capability-boundary-4lpl</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;: My web-agent used itself to publish 2 blog posts to dev.to (full dogfooding story). But when I asked it to edit the already-published article to add a cross-link, it ran 7 steps before V0.5.0 anti-loop hard-aborted. The 5-action actuator (click/type/scroll/extract/done) lacks keyboard_shortcut / paste / textarea range API. &lt;strong&gt;Failure itself is data&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;7 sections + 2 mermaid figures (capability-boundary flowchart + spike-and-decide flowchart).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full version&lt;/strong&gt; (with V0.16.31 dogfooding 4/5 = 80% E2E success rate cumulative table + V0.17+ trigger conditions):&lt;br&gt;
&lt;a href="https://github.com/franciseliang99-dot/web-agent/blob/main/docs/blog-drafts/2026-05-build-vs-edit-time-final-en.md" rel="noopener noreferrer"&gt;https://github.com/franciseliang99-dot/web-agent/blob/main/docs/blog-drafts/2026-05-build-vs-edit-time-final-en.md&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project repo&lt;/strong&gt; (MIT, ⭐ welcome):&lt;br&gt;
&lt;a href="https://github.com/franciseliang99-dot/web-agent" rel="noopener noreferrer"&gt;https://github.com/franciseliang99-dot/web-agent&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Series&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://dev.to/francise_liang_e4544eadb9/50-compliance-not-0-how-a-logging-spike-almost-triggered-the-wrong-architecture-rewrite-1lna"&gt;https://dev.to/francise_liang_e4544eadb9/50-compliance-not-0-how-a-logging-spike-almost-triggered-the-wrong-architecture-rewrite-1lna&lt;/a&gt; — measurement layer&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/francise_liang_e4544eadb9/why-i-permanently-no-god-patchright-after-a-spike-and-the-anti-detection-decision-tree-3m11"&gt;https://dev.to/francise_liang_e4544eadb9/why-i-permanently-no-god-patchright-after-a-spike-and-the-anti-detection-decision-tree-3m11&lt;/a&gt; — architecture layer&lt;/li&gt;
&lt;li&gt;(this post) — capability-boundary layer&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;LLM thought self-reported 'Tool limitation (no keyboard shortcut like Ctrl+End)' — aware of boundary. Anti-loop fired = user data protected.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>webagent</category>
      <category>playwright</category>
    </item>
    <item>
      <title>Why I Permanently NO-GO'd Patchright After a Spike (And the Anti-Detection Decision Tree)</title>
      <dc:creator>FRANCISE LIANG</dc:creator>
      <pubDate>Tue, 05 May 2026 22:28:24 +0000</pubDate>
      <link>https://dev.to/francise_liang_e4544eadb9/why-i-permanently-no-god-patchright-after-a-spike-and-the-anti-detection-decision-tree-3m11</link>
      <guid>https://dev.to/francise_liang_e4544eadb9/why-i-permanently-no-god-patchright-after-a-spike-and-the-anti-detection-decision-tree-3m11</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;: My web-agent runs sannysoft.com anti-bot tests. vanilla playwright passes 19/32, with playwright-stealth it's 21/32, but patchright (claimed stronger) — still 19/32, identical to vanilla. The reason: patchright's patches all sit in the launch phase, but I take over already-launched Chrome via connect_over_cdp — entirely bypassed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;8 chapters + 3 mermaid figures (xychart bar comparison + 2 decision flowcharts).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full version&lt;/strong&gt; (with reproducible spike commands):&lt;br&gt;
&lt;a href="https://github.com/franciseliang99-dot/web-agent/blob/main/docs/blog-drafts/2026-05-patchright-nogo-final-en.md" rel="noopener noreferrer"&gt;https://github.com/franciseliang99-dot/web-agent/blob/main/docs/blog-drafts/2026-05-patchright-nogo-final-en.md&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project repo&lt;/strong&gt; (MIT, ⭐ welcome):&lt;br&gt;
&lt;a href="https://github.com/franciseliang99-dot/web-agent" rel="noopener noreferrer"&gt;https://github.com/franciseliang99-dot/web-agent&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anti-detection layered model: JS injection / CDP / TLS / IP reputation. Architecture decisions decide which layers are off the menu.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>webagent</category>
      <category>playwright</category>
    </item>
    <item>
      <title>50% Compliance, Not 0%: How a Logging Spike Almost Triggered the Wrong Architecture Rewrite</title>
      <dc:creator>FRANCISE LIANG</dc:creator>
      <pubDate>Tue, 05 May 2026 21:33:38 +0000</pubDate>
      <link>https://dev.to/francise_liang_e4544eadb9/50-compliance-not-0-how-a-logging-spike-almost-triggered-the-wrong-architecture-rewrite-1lna</link>
      <guid>https://dev.to/francise_liang_e4544eadb9/50-compliance-not-0-how-a-logging-spike-almost-triggered-the-wrong-architecture-rewrite-1lna</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;: I thought my prompt augmentation track was completely broken (compliance=0%) and almost spent 27 hours rewriting plan-and-execute. Turns out the 0% was a regex bug — real value was 50%.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;7 chapters + 4 figures (hero / decision matrix quadrantChart / 7-version timeline / data delta tables).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full version&lt;/strong&gt; (with mermaid quadrantChart + reproducible spike commands):&lt;br&gt;
&lt;a href="https://github.com/franciseliang99-dot/web-agent/blob/main/docs/blog-drafts/2026-05-w5c2-spike-story-final-en.md" rel="noopener noreferrer"&gt;https://github.com/franciseliang99-dot/web-agent/blob/main/docs/blog-drafts/2026-05-w5c2-spike-story-final-en.md&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project repo&lt;/strong&gt; (MIT, ⭐ welcome):&lt;br&gt;
&lt;a href="https://github.com/franciseliang99-dot/web-agent" rel="noopener noreferrer"&gt;https://github.com/franciseliang99-dot/web-agent&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;LLM engineering + spike decision methodology + Chrome GPU deadlock diagnosis + regex false-negative lessons. Might save you 27h.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Related&lt;/strong&gt;: &lt;a href="https://dev.to/francise_liang_e4544eadb9/why-i-permanently-no-god-patchright-after-a-spike-and-the-anti-detection-decision-tree-3m11"&gt;Why I Permanently NO-GO'd Patchright After a Spike (And the Anti-Detection Decision Tree)&lt;/a&gt; — V0.16.14 anti-detection spike + 4-layer decision tree story.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>webagent</category>
      <category>playwright</category>
    </item>
  </channel>
</rss>
