<?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: xulingfeng</title>
    <description>The latest articles on DEV Community by xulingfeng (@xulingfeng).</description>
    <link>https://dev.to/xulingfeng</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3941526%2Faae40319-0a84-40c7-8434-832b0e75c708.gif</url>
      <title>DEV Community: xulingfeng</title>
      <link>https://dev.to/xulingfeng</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/xulingfeng"/>
    <language>en</language>
    <item>
      <title>Stratagems #33: Mark Reviewed an AI Method. The Reviewer Brought Back a Different Question.</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Fri, 13 Nov 2026 10:16:04 +0000</pubDate>
      <link>https://dev.to/xulingfeng/stratagems-33-mark-reviewed-an-ai-method-the-reviewer-brought-back-a-different-question-39im</link>
      <guid>https://dev.to/xulingfeng/stratagems-33-mark-reviewed-an-ai-method-the-reviewer-brought-back-a-different-question-39im</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Doubt within doubt. Work from within, without losing your own footing.&lt;/em&gt;&lt;br&gt;
— The 36 Stratagems, &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems" rel="noopener noreferrer"&gt;Turn the Enemy's Spy&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;Previously on this series:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-19-mark-found-his-ai-audit-method-in-a-training-manual-he-left-a-trap-in-his-report-3lpi"&gt;&lt;strong&gt;#19: Mark Found His AI Audit Method in a Training Manual. He Left a Trap in His Report.&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;"Entry's gone. Two weeks. Don't reach out. I'll find you."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-21-the-ai-thought-p-was-still-alive-p-was-already-gone-59h7"&gt;&lt;strong&gt;#21: The AI Thought P Was Still Alive. P Was Already Gone.&lt;/strong&gt;&lt;/a&gt; The entry became a shell. P fed it data and moved the real thing to another segment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-31-lena-took-the-seat-the-ai-had-reserved-it-for-her-5cb"&gt;&lt;strong&gt;#31: Lena Took the Seat.&lt;/strong&gt;&lt;/a&gt; Five conditions. Forty minutes. Zero friction.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-32-the-ai-logged-a-withdrawal-p-took-it-as-proof-2jo2"&gt;&lt;strong&gt;#32: The AI Logged a Withdrawal. P Took It as Proof.&lt;/strong&gt;&lt;/a&gt; One conclusion, one unexplained anomaly. The message went out before the anomaly was resolved.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Old Snapshot
&lt;/h2&gt;

&lt;p&gt;A garbage truck stopped below the window. Its reversing alarm sounded through the glass. An unfinished client report lay across Mark's desk. When his consulting inbox chimed, he pushed the report aside and opened his messages with P.&lt;/p&gt;

&lt;p&gt;The two words from the night before were still on the screen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I'm back.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He replied: “What can you send me?”&lt;/p&gt;

&lt;p&gt;Forty minutes later, an encrypted email arrived from P. The attachments contained an index of seven handover documents, a status snapshot saved before the observation port had been shut down, and arrival times for twenty-two probes. There were no access credentials. P had added a note: keep the original records intact. Nothing after that point had been checked.&lt;/p&gt;

&lt;p&gt;Mark decrypted the attachments and opened the snapshot. The save time appeared at the top.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# offline snapshot / before observation-port shutdown
healthcheck    = 200
probe_source   = 10.44.8.6  # not self
control_plane  = detached
data_request   = timeout
reclaim_state  = UNKNOWN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;He emailed P: “Is the old endpoint still there?”&lt;/p&gt;

&lt;p&gt;“Haven't connected again.”&lt;/p&gt;

&lt;p&gt;“Are these scheduled send times or actual arrival times?”&lt;/p&gt;

&lt;p&gt;“Actual arrivals. Decimal places untouched.”&lt;/p&gt;

&lt;p&gt;Mark saved a separate copy as &lt;code&gt;arrival_seconds.txt&lt;/code&gt;, one probe per line, with the times in seconds and the original decimal precision preserved. He made the copy read-only and calculated the gaps locally.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;decimal&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nc"&gt;Decimal&lt;/span&gt;
&lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;pathlib&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nc"&gt;Path&lt;/span&gt;

&lt;span class="n"&gt;rows&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"arrival_seconds.txt"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;splitlines&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;times&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nc"&gt;Decimal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;rows&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;assert&lt;/span&gt; &lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;times&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;
&lt;span class="k"&gt;assert&lt;/span&gt; &lt;span class="nb"&gt;all&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;is_finite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;times&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;assert&lt;/span&gt; &lt;span class="nb"&gt;all&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;zip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;times&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;times&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;deltas&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;zip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;times&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;times&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"checks:"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;times&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"intervals:"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;deltas&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"unique_seconds:"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;sorted&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;deltas&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;checks: 22 intervals: 21
unique_seconds: [Decimal('900.000')]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;He scrolled to the bottom of the input file and checked the result again. &lt;strong&gt;Twenty-two arrivals. Twenty-one intervals. No second value.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The truck pulled away, its tires running through the water at the curb. Mark saved the result and added two entries beside it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;probe_source_owner: unverified
after_shutdown: no records supplied
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;“Identical intervals. Who's sending them?” he messaged P.&lt;/p&gt;

&lt;p&gt;“Still can't confirm.”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;He left the entry unverified.&lt;/strong&gt; The seven handover documents predated the address allocation update, but another record P had flagged still listed the same rack as vacant. The effective dates had not been reconciled.&lt;/p&gt;

&lt;p&gt;P sent another message. “Need anything else?”&lt;/p&gt;

&lt;p&gt;“Keep the originals. Don't reconnect.”&lt;/p&gt;

&lt;p&gt;Mark saved the calculation under &lt;code&gt;old_snapshot&lt;/code&gt;, with the handover index in a separate folder.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Email
&lt;/h2&gt;

&lt;p&gt;Two days after P's email, a new message reached the consulting inbox. The subject was “Technical Confirmation of Methodology.” Mark expanded the recipient list, then read down.&lt;/p&gt;

&lt;p&gt;The sender's signature appeared below the attachment notes.&lt;/p&gt;

&lt;p&gt;Caleb Harris.&lt;/p&gt;

&lt;p&gt;The cursor stopped over the name. A breeze lifted a corner of the client report. Mark held it down without scrolling. After a while, he opened the attachment. There was no greeting, just a review scope, proposed meeting times, and a case reference.&lt;/p&gt;

&lt;p&gt;He went to the council's public website, found its contact address, and sent a separate email to verify the reference, the reviewer's appointment, and the scope of any sign-off. He left Caleb's message open beside it.&lt;/p&gt;

&lt;p&gt;The secretariat replied that afternoon. Caleb was the technical reviewer assigned to the case. ACL had submitted the method. Mark could contribute supporting materials to the case. He activated his account using the instructions on the public site. The permissions page allowed him to submit his own material, but not to submit or edit a reviewer's opinion. Signed copies could be shared within the case's access rules. Internal discussions were excluded.&lt;/p&gt;

&lt;p&gt;Mark saved the reply and sent Lena the case reference.&lt;/p&gt;

&lt;p&gt;“Can you verify this on your side?”&lt;/p&gt;

&lt;p&gt;Her answer came a little later. “The assignment exists. Same contact. I don't have access beyond that.”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;He noted the reference without forwarding anything P had sent.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He pulled a slip from an old notebook, where he'd tucked it behind the page with the ACL card. Beneath Caleb's name were several notes on pipeline naming conventions. He kept the slip beside him and opened the meeting schedule.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instead of choosing a video call, he proposed Third Cup.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;“Bring the working papers. Not just the conclusions.”&lt;/p&gt;

&lt;p&gt;He recorded the appointment below his notes, separately from the handover signatures, the saved web pages, and the date P's email had arrived.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Meeting
&lt;/h2&gt;

&lt;p&gt;Mark took a table against the wall at Third Cup. Sunlight fell across the empty chairs by the window, and reflections in the glass obscured half the tabletop. He left the two pages in his bag and took out only his notebook.&lt;/p&gt;

&lt;p&gt;When the doorbell rang, his pen dragged half an inch across the paper. He looked up. Caleb was folding his umbrella just inside the door.&lt;/p&gt;

&lt;p&gt;“Mark.”&lt;/p&gt;

&lt;p&gt;Caleb came over. Mark put down his pen and pushed out the opposite chair.&lt;/p&gt;

&lt;p&gt;“Sit.”&lt;/p&gt;

&lt;p&gt;Caleb set down his laptop. The man behind the counter brought Mark's pour-over, its handle turned toward his right hand. He glanced at Caleb, offered no menu, and returned to the machine.&lt;/p&gt;

&lt;p&gt;A moment later, a small cortado arrived in front of Caleb. He glanced down and wrapped his hand around the glass without asking anything.&lt;/p&gt;

&lt;p&gt;Mark looked at the coffee, then at Caleb. The case page was already open on Caleb's screen.&lt;/p&gt;

&lt;p&gt;Mark checked the reference and the reviewer's name, then moved his notebook forward.&lt;/p&gt;

&lt;p&gt;“Who are you doing this review for?”&lt;/p&gt;

&lt;p&gt;“I'm reviewing the method for this case. ACL submitted it. The secretariat is handling the review. I don't approve publication.”&lt;/p&gt;

&lt;p&gt;“You've been putting methods together for them?”&lt;/p&gt;

&lt;p&gt;“I've done that work. This assignment is verification.”&lt;/p&gt;

&lt;p&gt;Caleb scrolled down. Glare from the window crossed the display. He turned the laptop slightly, and Mark leaned closer. The source status was green. The technical review was still gray.&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;section&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"7.3"&lt;/span&gt;
&lt;span class="na"&gt;submitted_by&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ACL&lt;/span&gt;
&lt;span class="na"&gt;source_status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;verified&lt;/span&gt;
&lt;span class="na"&gt;source_reference&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;SR-73-r2&lt;/span&gt;
&lt;span class="na"&gt;technical_review&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;pending&lt;/span&gt;
&lt;span class="na"&gt;reviewer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Caleb Harris&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;“Can you open that reference?” Mark asked.&lt;/p&gt;

&lt;p&gt;Caleb clicked &lt;code&gt;SR-73-r2&lt;/code&gt;. The summary listed a date, a method version, and the submitter's work email. Its status was also verified. Mark copied the reference and address.&lt;/p&gt;

&lt;p&gt;“Which line are you asking me to confirm? The first or the second?”&lt;/p&gt;

&lt;p&gt;“Technical. Four items: layered validation, the conditions under which the weights apply, retention of excluded samples, and how the checkpoints are organized.”&lt;/p&gt;

&lt;p&gt;“Show me the sign-off page.”&lt;/p&gt;

&lt;p&gt;Caleb opened another page. It had separate fields for technical findings and supporting evidence, followed by outstanding items.&lt;/p&gt;

&lt;p&gt;“You can state your limitations here.”&lt;/p&gt;

&lt;p&gt;“Do you fill that in too?”&lt;/p&gt;

&lt;p&gt;“Yes.”&lt;/p&gt;

&lt;p&gt;Mark opened the attachment list and went back. The source statement had a reference number, but the signed original was not listed. Caleb moved his glass behind the laptop to clear the middle of the table. Mark noted the document to request and took out his two pages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The page numbers were not consecutive.&lt;/strong&gt; Client names, environment addresses, and actual data had been redacted. The original section numbers remained in the bottom-right corners. Caleb laid the pages side by side.&lt;/p&gt;

&lt;p&gt;“Just these?”&lt;/p&gt;

&lt;p&gt;“For this review. I'm not handing over the full report.”&lt;/p&gt;

&lt;p&gt;“You can confirm the layered validation?”&lt;/p&gt;

&lt;p&gt;“&lt;strong&gt;I'm not claiming ownership of a standard practice. Ask me about the specific conditions.&lt;/strong&gt;”&lt;/p&gt;

&lt;p&gt;Mark took out his laptop, opened an editor, and circled the sample-retention passage on the excerpt.&lt;/p&gt;

&lt;p&gt;“Four synthetic samples. &lt;code&gt;score&lt;/code&gt; is the model's screening score. &lt;code&gt;valid&lt;/code&gt; is the result of a separate validation. None of this is client data.”&lt;/p&gt;

&lt;p&gt;He finished typing and turned the laptop toward Caleb. “&lt;strong&gt;Same batch. Two different questions.&lt;/strong&gt;”&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# synthetic data: screening and validation are separate&lt;/span&gt;
&lt;span class="n"&gt;samples&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="s2"&gt;"A"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"valid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s2"&gt;"B"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"valid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s2"&gt;"C"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"valid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s2"&gt;"D"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"valid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;retained&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;v&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;v&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;samples&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;items&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;v&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"score"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.7&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;valid_count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"valid"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;retained&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;values&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"valid_rate_retained:"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;valid_count&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;retained&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"valid_retained_share_of_original:"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;valid_count&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;samples&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;valid_total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"valid"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;samples&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;values&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"recall:"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;valid_count&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;valid_total&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Denominators: retained set, original batch, all valid samples.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;valid_rate_retained: 0.5
valid_retained_share_of_original: 0.25
recall: 0.5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Caleb opened the draft's metric definition. “The engine filters out some samples first. This doesn't say whether the metric is calculated before or after filtering.”&lt;/p&gt;

&lt;p&gt;He enlarged the results. “&lt;strong&gt;Those two fifty percents aren't answering the same question.&lt;/strong&gt;”&lt;/p&gt;

&lt;p&gt;“The first asks how many of the two retained samples are valid. The last asks how many of the two valid samples were retained.”&lt;/p&gt;

&lt;p&gt;Caleb pointed to C. “This one's valid, and it gets filtered out.”&lt;/p&gt;

&lt;p&gt;Mark selected the row. “&lt;strong&gt;Keep it in the original records. You won't see it if you only look at A and B.&lt;/strong&gt;”&lt;/p&gt;

&lt;p&gt;“And twenty-five?”&lt;/p&gt;

&lt;p&gt;“A was retained and is valid. That's one out of the original four. It isn't the valid rate for the whole batch, and it isn't recall.”&lt;/p&gt;

&lt;p&gt;Caleb deleted the draft's generic “coverage” label. He defined the retained-set validity rate and recall separately, specifying the numerator, denominator, and sample scope for each. He kept the twenty-five-percent figure as the share of the original batch that was both retained and valid.&lt;/p&gt;

&lt;p&gt;Mark slid the excerpts across and pointed to a sequence of conditions on the second page. The margin specified that excluded samples had to be retained with their input batch. A change in distribution required the applicability of the old weights to be revalidated; the previous batch's passing status could not simply be carried forward.&lt;/p&gt;

&lt;p&gt;Caleb opened the corresponding item in 7.3. The draft retained the batch-retention requirement, but triggered revalidation of the weights only when the model version changed.&lt;/p&gt;

&lt;p&gt;“Which delivery was this page part of?”&lt;/p&gt;

&lt;p&gt;“Working notes. Some of those conditions went into a supplemental note later. We need the sent copies to establish which version was delivered.”&lt;/p&gt;

&lt;p&gt;Mark gave the two documents separate entries in the evidence list. Caleb circled the trigger condition and added it to the technical findings.&lt;/p&gt;

&lt;p&gt;Mark asked him to replace “must use” with “required under the specified conditions” and to state the validation scope. Caleb made the changes, then moved to the contributor field.&lt;/p&gt;

&lt;p&gt;“We can add your name.” He expanded the form. “List the items you've confirmed. We can discuss a consulting role separately.”&lt;/p&gt;

&lt;p&gt;Mark's hand stopped on the cup handle. The name field was open, its cursor blinking. Caleb said nothing more. A customer by the window got up, scraping a chair across the floor.&lt;/p&gt;

&lt;p&gt;“&lt;strong&gt;Once my name is there, where does this confirmation get cited?&lt;/strong&gt;” Mark asked.&lt;/p&gt;

&lt;p&gt;Caleb left the field and opened the output requirements.&lt;/p&gt;

&lt;p&gt;They listed two uses. Technical findings could go into the method's revision history. Contributor confirmations could be cited in the public framework, subject to the limits recorded in the signed attachments.&lt;/p&gt;

&lt;p&gt;Mark took back the second excerpt and held it against his notebook. The first stayed between them.&lt;/p&gt;

&lt;p&gt;“&lt;strong&gt;You can use my technical comments. You can't put my signature behind the whole framework.&lt;/strong&gt;”&lt;/p&gt;

&lt;p&gt;“We can limit the scope.”&lt;/p&gt;

&lt;p&gt;Caleb typed a line into the draft: “Recommend adding a statement of relevant methodology contributions.” He stopped scrolling and left the screen facing Mark.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The contributor field stayed blank.&lt;/strong&gt; Mark turned over his sheet and wrote two headings: Technical Evidence and Source Evidence.&lt;/p&gt;

&lt;p&gt;“What do you have for the first?”&lt;/p&gt;

&lt;p&gt;“The excerpts, the test example, the conditions.”&lt;/p&gt;

&lt;p&gt;“The second?”&lt;/p&gt;

&lt;p&gt;“The existing source statement.”&lt;/p&gt;

&lt;p&gt;“What's it based on?”&lt;/p&gt;

&lt;p&gt;Caleb opened the reference. The same summary appeared.&lt;/p&gt;

&lt;p&gt;“I can't access the full record for this review.”&lt;/p&gt;

&lt;p&gt;“&lt;strong&gt;Then request it. Leave my name out for now.&lt;/strong&gt;”&lt;/p&gt;

&lt;p&gt;Caleb drafted the email and let Mark check it. It went to the original source statement's submission contact, with the relevant parties on the case copied in. Three requests: the method version originally reviewed, the evidence supporting the confirmation, and the permitted scope of use.&lt;/p&gt;

&lt;p&gt;Mark pointed to the second.&lt;/p&gt;

&lt;p&gt;“&lt;strong&gt;A verification record. Not just a status label.&lt;/strong&gt;”&lt;/p&gt;

&lt;p&gt;Caleb added “verification record” to that item and sent the email. Mark noted the time.&lt;/p&gt;

&lt;p&gt;“Save your technical comments for now?” Caleb asked.&lt;/p&gt;

&lt;p&gt;“Yes. Keep the source section open.”&lt;/p&gt;

&lt;p&gt;Mark photographed the sheet, cropped the coaster and business card out of the image, and saved it to the case draft.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Records
&lt;/h2&gt;

&lt;p&gt;They did not wait at the café for a response. Caleb took the two excerpts and a separate sheet of Mark's usage restrictions. Mark kept scanned copies named with the case reference, not the client environment.&lt;/p&gt;

&lt;p&gt;The following afternoon, a reply arrived with two attachments: a revised summary and a handover checklist. The email identified the entries Mark was allowed to see. Unrelated projects and personal information had been removed.&lt;/p&gt;

&lt;p&gt;The checklist read:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;method_version      : date listed; file not supplied
confirmation_record : archive reference; request separately
usage_scope         : per original submission
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Neither attachment contained the original method version.&lt;/strong&gt; Mark highlighted “request separately” and sent the checklist back to Caleb.&lt;/p&gt;

&lt;p&gt;Caleb arranged another meeting. Third Cup again.&lt;/p&gt;

&lt;p&gt;Mark spread the printouts across the table. Caleb pulled out the opposite chair.&lt;/p&gt;

&lt;p&gt;The man approached, looked from Mark to Caleb, and gave a slight nod before returning to the counter. He brought no menu.&lt;/p&gt;

&lt;p&gt;A few minutes later, two coffees arrived. Mark's usual pour-over and a small cortado for Caleb, espresso and hot milk blended to a pale brown in the glass.&lt;/p&gt;

&lt;p&gt;The man set down the tray. Caleb picked up his glass and took a sip.&lt;/p&gt;

&lt;p&gt;Mark turned to the highlighted item on the checklist.&lt;/p&gt;

&lt;p&gt;“Did you make the separate request?”&lt;/p&gt;

&lt;p&gt;Caleb handed him two sheets. “Yes.”&lt;/p&gt;

&lt;p&gt;Mark unfolded the first. It was Caleb's request to the records custodian named in the checklist, asking for the underlying material needed to repeat the original source verification. The reference matched, and the send time was after delivery of the checklist. He turned to the second sheet. Caleb held down the corner while he read.&lt;/p&gt;

&lt;p&gt;The reply was a short paragraph. The records available for this review were limited to the attachments already supplied. Mark laid it beside the first request to the source statement's submission contact. The two sets of papers filled the center of the table. The coffees stayed on either side.&lt;/p&gt;

&lt;p&gt;“Can you reconstruct the original verification from this?”&lt;/p&gt;

&lt;p&gt;“&lt;strong&gt;I can finish the technical work. Not the source verification.&lt;/strong&gt;”&lt;/p&gt;

&lt;p&gt;Mark looked at the green status.&lt;/p&gt;

&lt;p&gt;“So the original conclusion was wrong?”&lt;/p&gt;

&lt;p&gt;“&lt;strong&gt;I didn't say that. There may be other records. They weren't provided for this review.&lt;/strong&gt;”&lt;/p&gt;

&lt;p&gt;“Then what can you sign?”&lt;/p&gt;

&lt;p&gt;Caleb put the reply beside the summary. In his own notes, Mark crossed out “wrong” and replaced it with “insufficient records for this review.” The grinder ran. Caleb waited for it to stop.&lt;/p&gt;

&lt;p&gt;“Where are your originals?”&lt;/p&gt;

&lt;p&gt;“My working files.”&lt;/p&gt;

&lt;p&gt;“The timestamp on this file is its last-modified time?”&lt;/p&gt;

&lt;p&gt;“Yes.”&lt;/p&gt;

&lt;p&gt;“Do you have a separate record of delivery?”&lt;/p&gt;

&lt;p&gt;Mark opened his laptop and searched for the excerpt references. Delivery emails, working notes, and a revision index appeared on the screen. The raw logs remained unopened.&lt;/p&gt;

&lt;p&gt;He narrowed the client-name column until only project codes were visible.&lt;/p&gt;

&lt;p&gt;“&lt;strong&gt;This part was delivered. This part stayed in my working notes.&lt;/strong&gt;” He indicated each with the cursor. “&lt;strong&gt;They don't share one date.&lt;/strong&gt;”&lt;/p&gt;

&lt;p&gt;Caleb split them into two entries. When he wrote “complete project files” on the materials form, Mark pulled the paper back.&lt;/p&gt;

&lt;p&gt;“&lt;strong&gt;Not the whole project. The items being cited.&lt;/strong&gt;”&lt;/p&gt;

&lt;p&gt;He corrected the wording and added the delivery records. Caleb made the same changes in the electronic copy, keeping the entries separate.&lt;/p&gt;

&lt;p&gt;“If you're citing these to support a source claim, you'll need evidence too.”&lt;/p&gt;

&lt;p&gt;“I can't just forward client records.”&lt;/p&gt;

&lt;p&gt;“You can redact them, restrict their use, or decline to provide them.”&lt;/p&gt;

&lt;p&gt;“And this item?” Mark pointed to the form.&lt;/p&gt;

&lt;p&gt;“&lt;strong&gt;If you can't provide it, we can't confirm that item on that basis. It doesn't invalidate everything else.&lt;/strong&gt;”&lt;/p&gt;

&lt;p&gt;Mark took out the confidentiality clause from an old contract. It had been folded twice, one crease running through a heading. He held down the corner with a coaster and marked the retention terms separately from the restrictions on external use.&lt;/p&gt;

&lt;p&gt;“&lt;strong&gt;Don't put ‘fully authorized’ here.&lt;/strong&gt;”&lt;/p&gt;

&lt;p&gt;Caleb deleted it and entered: “Contributor to confirm permitted scope of disclosure.” Mark read the change and set the contract page aside.&lt;/p&gt;

&lt;p&gt;“Don't attach this yet. If it's needed, we'll submit it with the appropriate restrictions.”&lt;/p&gt;

&lt;p&gt;Caleb saved the revised evidence list, with the original submitter and Mark named against their respective materials. &lt;strong&gt;Mark closed the search without opening the raw logs.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first paragraph of the draft still contained the recommendation about methodology contributions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The technical checks were complete.&lt;/strong&gt; Mark placed the list of missing records beside the draft.&lt;/p&gt;

&lt;p&gt;“Does adding a name fill any of those gaps?”&lt;/p&gt;

&lt;p&gt;Caleb selected the recommendation and looked up.&lt;/p&gt;

&lt;p&gt;“What do you want me to write?”&lt;/p&gt;

&lt;p&gt;“&lt;strong&gt;What you verified.&lt;/strong&gt;”&lt;/p&gt;

&lt;p&gt;Caleb deleted the recommendation and wrote a new sentence. After checking it, he moved the reference to records available for this review to the end. Mark put down his cup and read it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The previous source verification could not be independently substantiated from the records available for this review.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Mark selected &lt;code&gt;this review&lt;/code&gt; and zoomed in.&lt;/p&gt;

&lt;p&gt;“The technical findings stay?”&lt;/p&gt;

&lt;p&gt;“Yes. Separate section.”&lt;/p&gt;

&lt;p&gt;“Who signs this limitation?”&lt;/p&gt;

&lt;p&gt;“I do. You sign your materials statement separately.”&lt;/p&gt;

&lt;p&gt;Caleb opened the preview. Technical findings and source limitations appeared in separate sections, with unavailable originals identified in the evidence list. Mark checked the references on his two excerpts.&lt;/p&gt;

&lt;p&gt;“The second page. That's the one.”&lt;/p&gt;

&lt;p&gt;In his own reviewer account, Caleb checked the evidence list and signed the declaration. The submission page listed his findings and source limitations. He clicked Submit. The receipt carried the same case reference.&lt;/p&gt;

&lt;p&gt;A case-sharing notification reached Mark's consulting inbox with Caleb's signed review and submission receipt attached. Mark checked the sentence and signature, then noted the receipt number.&lt;/p&gt;

&lt;p&gt;Caleb closed the reviewer page. Mark opened his own materials statement, leaving the contributor field blank.&lt;/p&gt;

&lt;p&gt;“Where do I put the usage limits?”&lt;/p&gt;

&lt;p&gt;“The contributor portal. Your account.” Caleb pointed to the separate entry in the case instructions.&lt;/p&gt;

&lt;p&gt;Mark separated his technical comments from the permission to use his material, limiting both to the specified items and excerpts. &lt;strong&gt;He left the option to endorse the whole framework unchecked.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Caleb read to the end. “Any further material goes under this case reference?”&lt;/p&gt;

&lt;p&gt;“Yes. Other projects need a separate request.”&lt;/p&gt;

&lt;p&gt;Mark combined his two excerpt pages and the limited-use statement into &lt;code&gt;materials.pdf&lt;/code&gt;. He saved it in a local &lt;code&gt;outgoing&lt;/code&gt; folder with a copy of Caleb's submitted &lt;code&gt;review.pdf&lt;/code&gt;. &lt;strong&gt;Once the backup was complete, he disconnected the drive.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He switched to the local &lt;code&gt;outgoing&lt;/code&gt; directory, generated &lt;code&gt;SHA256SUMS&lt;/code&gt;, and left it there.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sha256sum review.pdf materials.pdf &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; SHA256SUMS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;He logged into his activated contributor account and selected the combined &lt;code&gt;materials.pdf&lt;/code&gt;. Caleb's submitted opinion was available to download, not edit.&lt;/p&gt;

&lt;p&gt;“I get the requests for further evidence too?”&lt;/p&gt;

&lt;p&gt;“The case action list. Originals are handled under each party's access permissions.”&lt;/p&gt;

&lt;p&gt;Mark submitted his material and restrictions. A second &lt;code&gt;received&lt;/code&gt; entry appeared. Same case, different submitter. He downloaded the returned material and the shared review into the local &lt;code&gt;returned&lt;/code&gt; folder, preserving their filenames, then copied over the original manifest from &lt;code&gt;outgoing&lt;/code&gt;. In &lt;code&gt;returned&lt;/code&gt;, he ran the check.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sha256sum --check SHA256SUMS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;review.pdf: OK
materials.pdf: OK
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;“Both files match the original checksums.” Mark saved the output.&lt;/p&gt;

&lt;p&gt;Caleb pointed to the blank delivery-time entry in the evidence list. “You still need to supply that.”&lt;/p&gt;

&lt;p&gt;“Yes. &lt;strong&gt;A hash tells us whether the file changed. Not whether it was right to begin with, or whether I'm entitled to share it.&lt;/strong&gt;”&lt;/p&gt;

&lt;p&gt;He saved the check results with the two files and packed the papers away.&lt;/p&gt;

&lt;p&gt;The rain had eased. Caleb left first with his umbrella. Mark waited until the door closed, then took out the date index P had sent. Handover dates above, the newly added meeting date below. &lt;strong&gt;The source entry was still empty.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He returned the index to a separate folder. The man collected Caleb's small glass and paused beside the pour-over. Mark moved his cup closer to the notebook. The tray passed clear of the document bag.&lt;/p&gt;

&lt;p&gt;That night, the window reflected two screens. Under the desk lamp lay the old client contract. The case page remained open on the second monitor. The confidentiality clause covered the signature page, its edges worn soft. Mark unfolded it and read the terms for external disclosure.&lt;/p&gt;

&lt;p&gt;His table had columns for version, delivery time, material available to provide, and permission still required. He checked the original email timestamps and filled in the first two rows. The third remained blank.&lt;/p&gt;

&lt;p&gt;The raw-log folder was just below. He opened it, saw the client environment names, and went back up. His case submission still contained only the excerpts and usage statement. &lt;strong&gt;No new files.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;P sent another message. “Anything else you need from the snapshot?”&lt;/p&gt;

&lt;p&gt;“Not now. Keep the probe-source fields in the original records.”&lt;/p&gt;

&lt;p&gt;Mark replied and closed the messaging app without sending any case attachments.&lt;/p&gt;

&lt;p&gt;The next afternoon, the case page showed a new access time. Its status was still received. Mark worked on a client's audit until the shop signs outside came on, then checked again. The case summary had not been uploaded. He stacked the contracts, leaving out the one awaiting permission.&lt;/p&gt;

&lt;p&gt;Lena messaged him. “Reference checked out?”&lt;/p&gt;

&lt;p&gt;“&lt;strong&gt;People and permissions did. No result yet.&lt;/strong&gt;”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;She sent a period. Mark closed the chat.&lt;/strong&gt; The files on his desk stayed where they were.&lt;/p&gt;

&lt;p&gt;On the third day, the reply arrived. He stopped work, opened the one-page summary, and checked the case reference.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Receipt
&lt;/h2&gt;

&lt;p&gt;The summary listed the technical findings first. The verified items stood within their stated scope. Source verification was pending further evidence. There was no closure date.&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;technical_verification&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;retained_with_scope&lt;/span&gt;
&lt;span class="na"&gt;source_verification&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;evidence_pending&lt;/span&gt;
&lt;span class="na"&gt;closure&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;independently_substantiated_from_available_records&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
  &lt;span class="na"&gt;decision&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;await_supplement&lt;/span&gt;
&lt;span class="na"&gt;scope_note&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;no_method_wide_or_other_version_suspension_decided&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On the second monitor, the old task page still showed source verification in green. Mark switched between the pages once, then brought the new summary to the front.&lt;/p&gt;

&lt;p&gt;Its second half contained two requests. The first went to the original source statement's submission contact, at the same work address Caleb had shown him.&lt;/p&gt;

&lt;p&gt;Provide the method version covered by the original source verification, the supporting evidence, and the corresponding authorization for use.&lt;/p&gt;

&lt;p&gt;The second was addressed to Mark Johnson.&lt;/p&gt;

&lt;p&gt;Provide the delivery dates for the earlier versions cited in this review, together with the limits of any authorization you can substantiate. Where third-party restrictions apply, identify what can and cannot be provided.&lt;/p&gt;

&lt;p&gt;Mark underlined the original submitter's address. His own name came next. He put down the pen.&lt;/p&gt;

&lt;p&gt;He printed the summary. The paper jammed halfway through.&lt;/p&gt;

&lt;p&gt;He opened the tray, flattened the curled edge, and fed it back in. The printer started again. Both requests came out on the same side of the sheet.&lt;/p&gt;

&lt;p&gt;He laid the receipt beside his old materials table. &lt;strong&gt;The third row's permission field was still empty.&lt;/strong&gt; He stopped typing and opened the contact details for the old project's delivery recipient.&lt;/p&gt;

&lt;p&gt;The new email had an address in the To field. It asked only about permitted disclosure, with the references for the two excerpt pages below. He selected the complete report as an attachment, paused, and canceled the selection. &lt;strong&gt;Only the request note remained.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The raw logs stayed on his computer, unattached.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Third Cup
&lt;/h2&gt;

&lt;p&gt;Mark slipped the summary into his notebook and shut the laptop. Across the street, the convenience store's shutter was halfway down. He followed the light from its windows to the crossing and waited for the signal.&lt;/p&gt;

&lt;p&gt;Third Cup was still open.&lt;/p&gt;

&lt;p&gt;As the bell rang, the man behind the counter was putting a stack of saucers into a cupboard. Mark took a high stool near the door and laid his notebook on the counter. The man closed the cupboard and took down a dripper.&lt;/p&gt;

&lt;p&gt;Water soaked slowly into the coffee grounds. Mark set his phone beside the notebook and opened the draft asking permission to disclose the material. &lt;strong&gt;The Send button was still active.&lt;/strong&gt; The man put down the kettle and waited for the dripper to drain before lifting the cup.&lt;/p&gt;

&lt;p&gt;Mark drew back his elbow to make room for the pour-over. The man handed him a coaster. Mark used it to hold down the curling corner of a page.&lt;/p&gt;

&lt;p&gt;The cup touched the wood with a small knock.&lt;/p&gt;

&lt;p&gt;The man looked at its base and slid a second coaster beside it.&lt;/p&gt;

&lt;p&gt;Mark looked up, the corner of his mouth moving slightly. He shifted the cup onto it. The open notebook lay between the two coasters.&lt;/p&gt;

&lt;p&gt;Water ran in the sink. The man rinsed the dripper and set it on the rack without moving the notebook. Mark drew the summary halfway out. The original submitter's address showed above his own name. The coaster covered one character at the corner of the page. He moved it aside.&lt;/p&gt;

&lt;p&gt;The man wiped the counter, stopping the damp cloth short of the notebook. He withdrew his hand, set a dry napkin beside the paper, and turned back to the kettle. Someone outside folded an umbrella. Drops ran down the glass. A bus pulled into the stop, and its lights briefly caught the two addressees on the sheet.&lt;/p&gt;

&lt;p&gt;Mark took a sip and scrolled through the email. The excerpt references, the limited-use paragraph, his signature. He changed “project materials” to “the two cited pages” and stopped.&lt;/p&gt;

&lt;p&gt;He put the money in the small dish. Halfway through closing the notebook, he opened it again, flattened the summary, and slipped it back into place. &lt;strong&gt;Both addressees remained visible at the edge.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The phone stayed unlocked. Beside the coffee, the Send button was still lit.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That's &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems" rel="noopener noreferrer"&gt;Turn the Enemy's Spy&lt;/a&gt;. No one was recruited and nothing was forged. Caleb answered only what could be verified, and the reviewer's own signature carried the question back to the original submitter. The same request came back for Mark.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 AI Postmortem
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;╔══════════════════════════════════════════════╗
║  Half-Protocol · v3.4.5 · self-audit         ║
║  The answer was true. The route was his.     ║
╚══════════════════════════════════════════════╝
Tactic: Turn the Enemy's Spy
Operator: Mark
Channel: Caleb's signed review

[Observation]
Caleb submitted the review. Mark submitted his material.
The case summary requested evidence from the original submitter and Mark.
The technical findings stood. Source verification remained pending.

[Inference]
The original completion status did not end the current inquiry.
The review went back through the existing channel.
The question returned to the submitter.
Mark's own material was subject to the same scrutiny.

Caleb's motives and long-term allegiance: unclassified.
The familiar gestures at the cafe do not establish their history.

[Unresolved]
Was the original source conclusion correct? Undetermined.
Do the records unavailable to this review exist elsewhere? Unknown.
Final evidence submissions from either party: not received.

Twenty-one intervals in the old snapshot: 900.000 seconds.
Probe-source ownership and the reason for the interval: unresolved.
State of the old shell after reclamation: unobserved.
Handovers preceded the visit. Sequence does not establish causation.

[Self-audit]
Previously, I turned incomplete observations into a complete status.
This time, a historical status was asked to produce verifiable evidence.

I also cited earlier confirmations.
Are those sources still in my materials?

Self-check: pending
System status: normal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;em&gt;Next stratagem: &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems" rel="noopener noreferrer"&gt;Inflict Injury on Oneself to Win the Enemy's Trust&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;P.S. English isn't my first language. I use AI to polish the writing and smooth out the rough edges. Thanks for reading. &lt;a href="https://ko-fi.com/xulingfeng" rel="noopener noreferrer"&gt;☕ Buy me a coffee&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;a href="https://ko-fi.com/xulingfeng" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkztjqxetsk5r1lft5ult.png" alt="coffee" width="800" height="336"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;P.S.S. The old series paperback is now available. Buy it here: &lt;a href="https://www.amazon.com/dp/B0HGYGC5DC" rel="noopener noreferrer"&gt;Amazon - AI, Ego &amp;amp; Regret&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.amazon.com/dp/B0HGYGC5DC" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsnlqaj8hi26c0pzsrbqq.jpg" alt="old" width="800" height="224"&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>career</category>
      <category>programming</category>
    </item>
    <item>
      <title>We Keep Hearing About AI Productivity. The QA Group Chat Told a Different Story.</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Wed, 11 Nov 2026 08:35:15 +0000</pubDate>
      <link>https://dev.to/xulingfeng/we-keep-hearing-about-ai-productivity-the-qa-group-chat-told-a-different-story-2nma</link>
      <guid>https://dev.to/xulingfeng/we-keep-hearing-about-ai-productivity-the-qa-group-chat-told-a-different-story-2nma</guid>
      <description>&lt;p&gt;&lt;em&gt;An anonymous poll, a debate about multimodal testing, and some uncomfortable questions about who benefits from the AI rush.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Recently, I published an article on DEV.to about our company's AI testing practices and the organizational changes that followed.&lt;/p&gt;

&lt;p&gt;It was selected for DEV's weekly Top 7 Featured Posts and included in the official DEV newsletter.&lt;/p&gt;

&lt;p&gt;The comments were more interesting than I expected. Readers from different backgrounds started sharing their own experiences. They talked about outdated PRDs, agents reporting the same bug repeatedly, isolated test environments, and the mess that automation can expose when people have been quietly filling in the gaps.&lt;/p&gt;

&lt;p&gt;One reader from the manufacturing industry even compared our experience with his factory's automated material-tracking project. Different industry, same problem: once you automate a process, all the messy handoffs that people used to handle manually become much harder to hide.&lt;/p&gt;

&lt;p&gt;I was still thinking about those discussions when something else caught my attention.&lt;/p&gt;

&lt;p&gt;It happened in a QA community group I'm part of.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Sixteen People Said They Weren't Employed
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6fo2kxs81tvo8ld793id.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6fo2kxs81tvo8ld793id.jpg" alt="Sixteen People Said They Weren't Employed" width="799" height="449"&gt;&lt;/a&gt;&lt;br&gt;
The group has around 500 members. Someone started an anonymous poll asking a simple question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are you currently employed?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When I checked the results, 76 people had voted.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;People&lt;/th&gt;
&lt;th&gt;Percentage&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Employed&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;78.9%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Not currently employed&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;21.1%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Sixteen people.&lt;/p&gt;

&lt;p&gt;To be clear, this isn't an unemployment survey of the software testing industry. The poll was anonymous, and we have no idea why those 16 people weren't working. They could have been laid off, resigned, or simply be between jobs. Only 76 out of roughly 500 group members participated, so there's no reason to treat this as an industry-wide statistic.&lt;/p&gt;

&lt;p&gt;Still, the number got my attention.&lt;/p&gt;

&lt;p&gt;I also have a former colleague who works in software testing. They've been out of work for six months and still haven't found another job.&lt;/p&gt;

&lt;p&gt;That's no longer just a number in an anonymous poll. It's someone I know and have worked with.&lt;/p&gt;

&lt;p&gt;I don't know all the details of their job search, and I wouldn't automatically blame AI for their situation. But six months without finding another role is difficult to ignore.&lt;/p&gt;

&lt;p&gt;The group chat quickly filled up with comments.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;All we're seeing is layoffs. Nobody's hiring.&lt;/p&gt;

&lt;p&gt;Almost 50. Who's going to hire me now?&lt;/p&gt;

&lt;p&gt;Is there still a future in this field?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Some people suggested changing careers. Others said it was time to prepare for what's coming.&lt;/p&gt;

&lt;p&gt;One comment summed up the mood rather well:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;With all this AI-driven productivity improvement, it's getting harder and harder to keep up.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then, almost as quickly as the conversation started, it turned to AI testing.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Can AI Really Compare an App Screen with Its Design?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fro1s98d8en70zu5ofcel.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fro1s98d8en70zu5ofcel.jpg" alt="Can AI Really Compare an App Screen with Its Design?" width="799" height="449"&gt;&lt;/a&gt;&lt;br&gt;
Someone asked whether AI-powered test automation could compare an actual app screen against its UI design, checking element sizes, colors, positions, and other visual details.&lt;/p&gt;

&lt;p&gt;The suggestions came quickly.&lt;/p&gt;

&lt;p&gt;Some people proposed OCR to extract information from the design and the actual screen. Others suggested multimodal models. There were also concerns about maintenance: what happens when the UI changes slightly? Do we have to rebuild the whole thing?&lt;/p&gt;

&lt;p&gt;Someone joked:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How well will it actually work? Who knows?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I joined the discussion.&lt;/p&gt;

&lt;p&gt;My answer was that it's technically possible, but the AI needs enough context and sufficiently detailed instructions. Just throwing a demo page at a model and expecting it to understand everything won't get you very far.&lt;/p&gt;

&lt;p&gt;I also pointed out that using a top-tier multimodal model for this kind of work can consume a lot of tokens.&lt;/p&gt;

&lt;p&gt;Then came my questions:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is management paying for the tokens?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If not, they can go to hell.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I made the point one more time:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can use a top-tier multimodal model, sure. But the token consumption can be huge. If management isn't paying for it, to hell with that.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Yes, I really said that. 😆&lt;/p&gt;

&lt;p&gt;The joke aside, I meant it.&lt;/p&gt;

&lt;p&gt;There's a difference between proving that something can be done and proving that it's worth doing.&lt;/p&gt;

&lt;p&gt;OCR, DOM inspection, image comparison, and multimodal models can all help with UI verification. The right approach depends on what you're trying to check. Not every visual problem needs an expensive model.&lt;/p&gt;

&lt;p&gt;But once you start taking screenshots, sending them for analysis, comparing results, and repeating the process across multiple runs, the bill can grow quickly.&lt;/p&gt;

&lt;p&gt;Before adopting a solution like this, I'd want to know how many real issues it catches, how many false positives it produces, how much it costs to run, and how much effort is needed to maintain it when the UI changes.&lt;/p&gt;

&lt;p&gt;If a company expects testers to use AI but leaves them to pay for their own tokens, something is wrong.&lt;/p&gt;

&lt;p&gt;I've seen people in that group joking about collecting free credits from different platforms every morning before starting work.&lt;/p&gt;

&lt;p&gt;It's funny, but think about it: employees are being told to embrace AI and improve productivity, while some are trying to keep their experiments running on whatever free credits they can find.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If a company wants AI-driven productivity, AI usage needs to be part of the company's budget.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. AI Writes the Code, AI Tests It. What Could Possibly Go Wrong?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhmkcp24d56j6kjbx663o.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhmkcp24d56j6kjbx663o.jpg" alt="AI Writes the Code, AI Tests It. What Could Possibly Go Wrong?" width="799" height="449"&gt;&lt;/a&gt;&lt;br&gt;
Another part of the conversation made me laugh.&lt;/p&gt;

&lt;p&gt;Someone described an almost completely automated development process:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Describe a requirement, call the product skill, generate a demo and PRD, call the technical skill, generate the technical documentation, architecture, interfaces, and framework. Write the code, generate the tests with AI, run everything, and ship it. Done. A pile of bugs goes live.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That last sentence says a lot.&lt;/p&gt;

&lt;p&gt;Someone else complained:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The boss uses AI to generate a demo, decides the idea is viable, and then expects everyone to build it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Another person added:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Management expects us to deliver exactly that.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And someone joked:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Sounds like all we need is the boss. Everyone else can leave.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I've seen why this attitude develops. A demo can look convincing, and AI can generate a surprising amount of code in a very short time. It's easy to look at that output and assume the hard part is already done.&lt;/p&gt;

&lt;p&gt;But a working demo isn't a validated product.&lt;/p&gt;

&lt;p&gt;A generated PRD isn't proof that the requirements have been properly discussed. Generated code and generated tests don't automatically share the same understanding of what the system is supposed to do.&lt;/p&gt;

&lt;p&gt;I ran into a version of this problem in our own testing work.&lt;/p&gt;

&lt;p&gt;In one knowledge-base project, AI found 36 potential defects, while manual testing found 11. After review, 30 defects were confirmed as valid. AI had contributed 21 of them.&lt;/p&gt;

&lt;p&gt;Those numbers were encouraging, but something else caught my attention.&lt;/p&gt;

&lt;p&gt;Some of the reported issues weren't actually implementation bugs. Product and development had already agreed on changes, but nobody had updated the PRD.&lt;/p&gt;

&lt;p&gt;The AI was following the document. The people were following an agreement that existed only in conversations.&lt;/p&gt;

&lt;p&gt;In the past, testers often bridged that gap through experience and informal communication. They knew who to ask and which version of the requirements the team was actually following.&lt;/p&gt;

&lt;p&gt;The AI didn't have that context.&lt;/p&gt;

&lt;p&gt;It did exactly what it had been asked to do, and the result was a test report full of issues that looked legitimate but weren't necessarily bugs.&lt;/p&gt;

&lt;p&gt;That's one of the things I find interesting about AI testing. It doesn't just test the software. It can expose how disconnected the people building that software actually are.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Why Is Every Company Suddenly Chasing AI?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyjf3pmq7wvfpx6rt9fx0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyjf3pmq7wvfpx6rt9fx0.jpg" alt="Why Is Every Company Suddenly Chasing AI?" width="799" height="449"&gt;&lt;/a&gt;&lt;br&gt;
As the group conversation continued, people started discussing the industry rather than individual jobs.&lt;/p&gt;

&lt;p&gt;One member argued that many Chinese companies keep a close eye on what's happening in the US, where much of the current technology leadership comes from. One member said Chinese companies keep a close eye on what's happening in the US, and estimated that the gap between the two markets was at least six months.&lt;/p&gt;

&lt;p&gt;That's their estimate, not a figure I've independently verified. But the broader observation is worth discussing.&lt;/p&gt;

&lt;p&gt;A lot of companies seem afraid of being left behind.&lt;/p&gt;

&lt;p&gt;One company adopts AI for coding, so others feel they need it too. Another introduces AI testing, and suddenly everyone wants an AI testing strategy. When large technology companies start talking about full-stack AI transformation, smaller companies feel pressure to follow.&lt;/p&gt;

&lt;p&gt;Someone in the group put it bluntly:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Everyone just copies what's already working elsewhere. AI cuts costs and improves efficiency. What boss wouldn't like that?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Fair point.&lt;/p&gt;

&lt;p&gt;But how many companies have actually worked out where AI fits into their business, rather than adopting it simply because competitors are doing so?&lt;/p&gt;

&lt;p&gt;Another member brought up education and talent development. For years, the emphasis had been on catching up and getting new technology into production quickly. Now, they argued, the demand is shifting toward people who can innovate, lead, and break new ground.&lt;/p&gt;

&lt;p&gt;Whether that shift is happening quickly enough is another question. But the contrast is interesting: following someone else's lead and creating something new require very different skills.&lt;/p&gt;

&lt;p&gt;There was also a comment about management thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Most companies are run by professional managers focused on making it through this year. How can you expect them to think long-term?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I understand the frustration behind that.&lt;/p&gt;

&lt;p&gt;When a company is under pressure, cost reductions and headcount cuts are easy to measure. Building new capabilities, developing people, and investing in ideas that might pay off several years later are much harder to justify.&lt;/p&gt;

&lt;p&gt;AI fits very neatly into the first category. Its potential for the second is real, but much harder to guarantee.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Is AI Productivity Becoming a Sales Pitch of Its Own?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl0com2klrlfqah80u0ft.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl0com2klrlfqah80u0ft.jpg" alt="Is AI Productivity Becoming a Sales Pitch of Its Own?" width="799" height="449"&gt;&lt;/a&gt;&lt;br&gt;
One group member raised a more cynical possibility:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Everyone is selling tokens. They need to create the impression that AI improves productivity and that companies will fall behind if they don't use it. That pushes everyone to adopt AI. And with the market already in bad shape, companies can use AI as another reason to cut jobs.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I wouldn't go as far as saying that the entire AI productivity story is manufactured. I use these tools myself, and I've seen what they can do in testing, code analysis, and bug discovery.&lt;/p&gt;

&lt;p&gt;But there are commercial incentives here that are worth recognizing.&lt;/p&gt;

&lt;p&gt;AI providers want companies to use their models. Companies want to lower costs. Employees are being told that they need to become more productive with AI.&lt;/p&gt;

&lt;p&gt;Those interests can reinforce one another, even when nobody has fully worked out the business case.&lt;/p&gt;

&lt;p&gt;A company might adopt AI because it doesn't want to fall behind, rather than because it has identified a clear problem that AI can solve.&lt;/p&gt;

&lt;p&gt;And once AI is in place, the conversation can quickly shift from what the technology can improve to how many people the company can do without.&lt;/p&gt;

&lt;p&gt;One person in the group pointed out another part of the problem: the IT industry went through years of aggressive hiring. Large numbers of people entered the market, and companies expanded their teams rapidly.&lt;/p&gt;

&lt;p&gt;Now the market looks very different.&lt;/p&gt;

&lt;p&gt;From that perspective, AI isn't necessarily the original cause of the employment pressure. It may be the trigger that makes an existing imbalance more visible.&lt;/p&gt;

&lt;p&gt;I think that's an important distinction.&lt;/p&gt;

&lt;p&gt;We shouldn't assume every job reduction is caused by AI. Market conditions, years of hiring, changing business models, and company decisions all matter.&lt;/p&gt;

&lt;p&gt;But AI gives companies another way to reorganize work, and that can accelerate changes that were already underway.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. We Keep Pushing Harder. Where Does It End?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx63tcusai39vvtxgpuih.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx63tcusai39vvtxgpuih.jpg" alt="We Keep Pushing Harder. Where Does It End?" width="799" height="449"&gt;&lt;/a&gt;&lt;br&gt;
One line from the group chat stuck with me:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We keep trying to outdo everyone else, until we end up working ourselves out of a job.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Someone else described the result as a possible vicious cycle.&lt;/p&gt;

&lt;p&gt;The IT industry has always moved quickly. One group member joked that if you stop learning for a year or two, you'll fall behind. And people in their thirties and forties are still pushing themselves to learn new things constantly.&lt;/p&gt;

&lt;p&gt;I know what that feels like.&lt;/p&gt;

&lt;p&gt;New frameworks, new models, new agents, new tools. Before you've finished getting comfortable with one, three more have appeared.&lt;/p&gt;

&lt;p&gt;Companies want employees to become more productive. Employees want to stay competitive. AI providers want more adoption. And companies watch their competitors to make sure they're not falling behind.&lt;/p&gt;

&lt;p&gt;Everyone has a reason to run faster.&lt;/p&gt;

&lt;p&gt;But here's the question: what happens when every company tries to do more with fewer people, while the number of available jobs doesn't grow at the same pace?&lt;/p&gt;

&lt;p&gt;We could end up in a strange situation where every company becomes more efficient, but the people working in the industry feel less secure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We might work so hard trying to beat everyone else that we end up making the whole situation worse for ourselves.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Embrace AI, or Get Fired Now. Embrace AI, and Get Fired Later.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkrua6fm48chhn2sx0set.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkrua6fm48chhn2sx0set.jpg" alt="Embrace AI, or Get Fired Now. Embrace AI, and Get Fired Later." width="799" height="449"&gt;&lt;/a&gt;&lt;br&gt;
There was one more line in the group chat that deserves to be repeated:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you don't embrace AI, you'll get fired immediately. If you do embrace AI, you'll just get fired later.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's a joke, but not a particularly comfortable one.&lt;/p&gt;

&lt;p&gt;Companies tell employees to learn AI, use AI, and improve productivity. Employees do their best to keep up.&lt;/p&gt;

&lt;p&gt;But what happens after they become more productive?&lt;/p&gt;

&lt;p&gt;Some worry that they'll end up automating their own jobs. Others are concerned that age and a changing job market will make it harder to find another role if they lose the current one.&lt;/p&gt;

&lt;p&gt;People in the group were already suggesting that others should change careers or start preparing for something different.&lt;/p&gt;

&lt;p&gt;I don't think learning AI is pointless. And I certainly don't think refusing to use it will protect anyone's job.&lt;/p&gt;

&lt;p&gt;But embracing AI doesn't guarantee job security either.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learning AI can make you more capable. It can't guarantee that a company will continue to need you.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Those are two different things.&lt;/p&gt;

&lt;p&gt;Individuals can improve their skills, but they can't control the job market, company budgets, or every organizational decision.&lt;/p&gt;

&lt;p&gt;I don't think it's fair to put the entire burden of career survival on whether someone is willing to learn the latest AI tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;I don't want to use the 21.1% from this poll to claim that the testing industry is experiencing mass unemployment.&lt;/p&gt;

&lt;p&gt;It was an anonymous poll in a group of around 500 people. Only 76 participated, and 16 said they weren't currently employed. We don't know why.&lt;/p&gt;

&lt;p&gt;It isn't an industry-wide survey.&lt;/p&gt;

&lt;p&gt;But I think the conversation is worth remembering.&lt;/p&gt;

&lt;p&gt;People were worried about losing their jobs, then spent time discussing how AI could help them perform more advanced testing.&lt;/p&gt;

&lt;p&gt;They were worried about being replaced by AI, while exploring how multimodal models could improve their automation.&lt;/p&gt;

&lt;p&gt;They were concerned about token costs, while looking for free credits from different platforms.&lt;/p&gt;

&lt;p&gt;They questioned whether AI was really improving productivity, while worrying that their companies might fall behind if they didn't adopt it.&lt;/p&gt;

&lt;p&gt;And I have a former colleague who has been out of work for six months and still hasn't found another job. That makes the conversation feel a lot less theoretical.&lt;/p&gt;

&lt;p&gt;I'm embracing AI too. I'm building AI testing workflows, experimenting with agents and models, and changing some of my own assumptions about what automation can do.&lt;/p&gt;

&lt;p&gt;I see the possibilities. I'm not interested in pretending otherwise.&lt;/p&gt;

&lt;p&gt;But I also don't think productivity gains automatically solve business problems, create new markets, or guarantee better opportunities for employees.&lt;/p&gt;

&lt;p&gt;We can build faster, generate more code, run more tests, and produce more output than before.&lt;/p&gt;

&lt;p&gt;The harder question is what all that extra productivity is actually going to achieve, and who gets to benefit from it.&lt;/p&gt;

&lt;p&gt;There's a Chinese idiom I keep coming back to: &lt;strong&gt;管中窥豹&lt;/strong&gt; — looking at a leopard through a narrow tube. You can see a few markings, but never the whole animal.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhs0woc0yw2j825dx8qlt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhs0woc0yw2j825dx8qlt.jpg" alt="looking at a leopard through a narrow tube." width="799" height="449"&gt;&lt;/a&gt;&lt;br&gt;
That's what this poll and the group chat offer: a glimpse, not a complete picture of the QA industry. Seventy-six votes cannot tell us how widespread the problem is, and one group conversation cannot explain what's happening across every company.&lt;/p&gt;

&lt;p&gt;But it does reveal a few things worth paying attention to: job anxiety, pressure to adopt AI, arguments over token costs, and uncertainty about who actually benefits when productivity goes up.&lt;/p&gt;

&lt;p&gt;We may not be seeing the whole leopard. But what we can see is worth taking seriously.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If we're all becoming more productive, why are so many people becoming less confident about their future?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>career</category>
      <category>programming</category>
    </item>
    <item>
      <title>An AI Testing Presentation Became the Final Push for Organizational Change at My Company</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Fri, 06 Nov 2026 01:27:32 +0000</pubDate>
      <link>https://dev.to/xulingfeng/an-ai-testing-presentation-became-the-final-push-for-organizational-change-at-my-company-12ag</link>
      <guid>https://dev.to/xulingfeng/an-ai-testing-presentation-became-the-final-push-for-organizational-change-at-my-company-12ag</guid>
      <description>&lt;p&gt;&lt;em&gt;From a multi-agent testing experiment to a broader discussion about how engineering teams should evolve in the age of AI.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;At first, I simply wanted to share an AI-powered automated testing system I had been working on.&lt;/p&gt;

&lt;p&gt;The system could already understand requirements, generate test cases, interact with web browsers and mobile apps, identify defects, and connect bug fixing with regression testing. I expected the session to focus on how AI could improve testing efficiency.&lt;/p&gt;

&lt;p&gt;But during our internal session on November 5, 2026, the discussion gradually moved beyond testing.&lt;/p&gt;

&lt;p&gt;We started talking about how product, development, and QA teams work together. We discussed why requirements so often fall out of sync, and how AI might change the way engineering teams are organized.&lt;/p&gt;

&lt;p&gt;By the end of the discussion, the session had become the final push that helped set our company's organizational transformation in motion.&lt;/p&gt;

&lt;p&gt;Looking back, I find that quite interesting. We set out to help testers work more efficiently with AI. Instead, we ended up discussing how AI might force the entire engineering organization to rethink the way it works.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. 🤖 I Wanted AI to Handle the Entire Testing Process
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3ygg2vptfqgsv8rv578d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3ygg2vptfqgsv8rv578d.png" alt="I Wanted AI to Handle the Entire Testing Process" width="764" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've been working on a multi-agent automated testing system.&lt;/p&gt;

&lt;p&gt;Rather than simply asking AI to generate automation scripts from test cases, I wanted to connect the entire process: understanding requirements, designing tests, executing them, reporting defects, verifying fixes, and running regression tests.&lt;/p&gt;

&lt;p&gt;The workflow looks roughly like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;AI reads product requirement documents and prototypes to understand business workflows and acceptance criteria.&lt;/li&gt;
&lt;li&gt;It generates test cases, which are then reviewed by multiple agents.&lt;/li&gt;
&lt;li&gt;Based on those test cases, AI controls web browsers and mobile apps, simulating real user interactions to execute the tests.&lt;/li&gt;
&lt;li&gt;When it finds an issue, AI generates a defect report and submits it to our issue-tracking system.&lt;/li&gt;
&lt;li&gt;Each reported defect goes through a second review and human confirmation before being assigned to the appropriate developer.&lt;/li&gt;
&lt;li&gt;After the developer fixes the issue, AI automatically runs regression tests to verify the fix and move the defect through the closure process, with human oversight retained.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The end-to-end workflow, from requirements to regression testing, is now in place and working.&lt;/p&gt;

&lt;p&gt;What impressed me most was that AI had started taking over some of the most frustrating parts of traditional test automation.&lt;/p&gt;

&lt;p&gt;With UI automation, the hardest part was often not writing the initial scripts. It was maintaining them.&lt;/p&gt;

&lt;p&gt;A developer changes a UI component, and testers may have to revisit element locators, page objects, and interaction scripts. The more frequently the interface changes, the higher the maintenance cost. Sometimes, testers spend more time maintaining automation scripts than actually running tests.&lt;/p&gt;

&lt;p&gt;Now, AI can observe the current page, understand its elements and interaction states, and perform actions based on the testing objectives. It still has to deal with UI changes and execution failures, but it can already take over a considerable amount of work that previously required repeated manual maintenance.&lt;/p&gt;

&lt;p&gt;That made me reconsider the limits of automated testing.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. 🔍 Automated Testing Should Do More Than Repeat Known Test Cases
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvgo8wxomjr3ug0lt5fxm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvgo8wxomjr3ug0lt5fxm.png" alt="Automated Testing Should Do More Than Repeat Known Test Cases" width="768" height="218"&gt;&lt;/a&gt;&lt;br&gt;
For a long time, I held a fairly firm view of automated testing:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Automation is useful for regression testing, but it is not very good at discovering new defects.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The reason is straightforward. Traditional automated testing relies heavily on test cases designed in advance, fixed execution steps, and predefined assertions. It can repeatedly execute known test paths, but it struggles to discover problems that testers never thought to look for.&lt;/p&gt;

&lt;p&gt;It behaves more like an executor that follows instructions than a tester capable of exploring software behavior.&lt;/p&gt;

&lt;p&gt;But as AI agents emerged that could understand requirements, observe screens, analyze page states, and adapt their actions, I began to change my mind.&lt;/p&gt;

&lt;p&gt;When training and refining the agents' testing behavior, I emphasized one principle:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Don't just follow the requirements document. And don't treat the test cases as the limits of your exploration.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Requirements describe what a product is expected to do, but they cannot cover every possible user behavior or system state.&lt;/p&gt;

&lt;p&gt;So, after completing the tests defined by the requirements, AI should also explore additional scenarios, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Invalid and unexpected inputs:&lt;/strong&gt; Empty values, excessively long text, illegal characters, unusual formats, and unexpected combinations of data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Boundary conditions:&lt;/strong&gt; Maximum and minimum values, threshold conditions, duplicate submissions, and unusual sequences of operations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Abnormal workflows:&lt;/strong&gt; Interrupted operations, repeated clicks, page refreshes, network failures, expired sessions, and inconsistent states between consecutive steps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security-related scenarios:&lt;/strong&gt; Unauthorized access, permission boundaries, sensitive information exposure, and attempts to perform operations that should not be allowed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unexpected interactions:&lt;/strong&gt; Skipping normal steps, performing rapid consecutive actions, repeatedly switching states, or accessing the same business function through different entry points.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Of course, this does not mean AI should be allowed to operate freely against production systems. The scope of exploration, test environments, account permissions, and operational risks must all be controlled. Security testing must also remain within clearly authorized boundaries.&lt;/p&gt;

&lt;p&gt;I don't want AI to simply prove that the requirements have been implemented. I want it to look for problems that might emerge when the system is used in ways that were never anticipated.&lt;/p&gt;

&lt;p&gt;This is where my understanding of automated testing has changed.&lt;/p&gt;

&lt;p&gt;In the past, automation mainly repeated checks for known issues. Now, AI has the potential to help discover problems we didn't know to look for.&lt;/p&gt;

&lt;p&gt;It cannot guarantee that every defect will be found, and it cannot replace human judgment. But automated testing no longer has to be limited to test cases written in advance.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. 🌙 AI Works at Night. Humans Make the Decisions During the Day.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkzjffaf5v6sasq7rmgzk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkzjffaf5v6sasq7rmgzk.png" alt="AI Works at Night. Humans Make the Decisions During the Day." width="764" height="218"&gt;&lt;/a&gt;&lt;br&gt;
These days, I usually schedule automated testing tasks before finishing work.&lt;/p&gt;

&lt;p&gt;The agents then continue running overnight. When I arrive at work the next morning, I can usually find a batch of defect reports already submitted by AI.&lt;/p&gt;

&lt;p&gt;My job is to review those issues one by one, determine whether they are genuine and consistent with the current requirements, confirm them, and assign them to the appropriate developers.&lt;/p&gt;

&lt;p&gt;This changes how testers spend their time.&lt;/p&gt;

&lt;p&gt;Previously, testers had to spend a considerable amount of time operating systems, executing test cases, observing results, and preparing reports. Now, AI can take over a significant portion of that repetitive work, allowing people to focus more on evaluating issues, analyzing risks, and improving product quality.&lt;/p&gt;

&lt;p&gt;However, this process also revealed another problem:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Finding a defect doesn't mean communicating it effectively.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Initially, AI-generated defect reports were often just dense blocks of text. They contained plenty of information, but they weren't particularly easy for developers to read.&lt;/p&gt;

&lt;p&gt;If a report cannot help the person receiving it quickly understand the problem, then even a large amount of information does little to improve collaboration.&lt;/p&gt;

&lt;p&gt;So I went through several rounds of adjustments to the reporting format. We needed more than a record of everything that happened during execution. The report had to clearly explain what happened, where the problem occurred, how the actual behavior differed from the expected behavior, and how the issue could be reproduced and verified.&lt;/p&gt;

&lt;p&gt;After several iterations, the reports became much more readable and useful.&lt;/p&gt;

&lt;p&gt;This made me realize that AI output quality should not be measured only by how much work it completes. We also need to consider whether the next person in the workflow can actually use the results.&lt;/p&gt;

&lt;p&gt;After each testing cycle, I also ask AI to summarize the problems and lessons from that run. Experiences that have been reviewed, validated, and shown to be reusable are then distilled into general-purpose Skills.&lt;/p&gt;

&lt;p&gt;That way, the next testing cycle doesn't have to start from scratch. It can build on what the previous cycle has learned.&lt;/p&gt;

&lt;p&gt;In practice, this creates a continuous improvement loop:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Execute → Discover issues → Review → Capture lessons → Turn reusable knowledge into Skills → Start the next cycle.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  4. 📊 The Numbers Show the Value, but Also Reveal Problems
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F67t1frun7m2ynowdoa7x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F67t1frun7m2ynowdoa7x.png" alt="The Numbers Show the Value, but Also Reveal Problems" width="768" height="205"&gt;&lt;/a&gt;&lt;br&gt;
In one of our knowledge-base projects, we've accumulated some concrete results:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Total defects identified&lt;/td&gt;
&lt;td&gt;47&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Defects identified by AI&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Defects identified manually&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Defects ultimately confirmed as valid&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Valid defects contributed by AI&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;In other words, AI identified 21 of the 30 defects ultimately confirmed as valid, accounting for &lt;strong&gt;70%&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;These figures show that, within the scope of this project and its test coverage, AI is no longer just a tool for executing test cases. It is making a real contribution to defect discovery.&lt;/p&gt;

&lt;p&gt;We've also experimented with having agents navigate pages, capture the API calls involved in business workflows, and run scheduled, full-scale API validation every day. Our current test environment covers nearly &lt;strong&gt;300 APIs&lt;/strong&gt; associated with business workflows.&lt;/p&gt;

&lt;p&gt;These experiments show that AI can take on continuous testing tasks at both the UI and API levels.&lt;/p&gt;

&lt;p&gt;But the data also reveals some problems.&lt;/p&gt;

&lt;p&gt;For example, we currently have only one test environment. When multiple requirements are being developed in parallel, code changes can conflict, and deployments can interrupt other testing tasks. We still need to evaluate adding a second test environment and a dedicated performance testing environment.&lt;/p&gt;

&lt;p&gt;Browser compatibility also needs further work, including test coverage for different Windows versions and the 360 browser.&lt;/p&gt;

&lt;p&gt;These are infrastructure problems. They can be addressed gradually through additional resources and technical improvements.&lt;/p&gt;

&lt;p&gt;What really made me think, however, was another category of problems.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. 🧩 Automation Exposes Organizational Problems That Traditional Testing Often Hides
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frrwc28zm6pg4lqej6ssy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frrwc28zm6pg4lqej6ssy.png" alt="Automation Exposes Organizational Problems That Traditional Testing Often Hides" width="764" height="205"&gt;&lt;/a&gt;&lt;br&gt;
At one point, we noticed that some defects reported by AI were being classified as invalid.&lt;/p&gt;

&lt;p&gt;Our first suspicion was naturally that AI might have misunderstood the requirements or that there was a problem with the testing logic.&lt;/p&gt;

&lt;p&gt;But after looking more closely, we found that AI wasn't entirely to blame.&lt;/p&gt;

&lt;p&gt;Some requirements had already been adjusted through discussions between product and development, but the official PRD had not been updated. Product and development might have reached a new understanding, or even made changes to the implementation privately, while QA and AI were still working from the original requirements document.&lt;/p&gt;

&lt;p&gt;As a result, AI identified a discrepancy based on the official requirements, but the reported issue was considered invalid.&lt;/p&gt;

&lt;p&gt;From a testing perspective, AI hadn't necessarily done anything wrong. From the development team's perspective, based on their current understanding of the implementation, the issue might not have been something they believed needed fixing.&lt;/p&gt;

&lt;p&gt;The real problem was that the team was working with multiple versions of the same requirement context.&lt;/p&gt;

&lt;p&gt;This led me to an important observation:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Automation can expose organizational problems that traditional manual testing has quietly absorbed and hidden for years.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In the past, testers often compensated for inconsistencies in requirements documents through verbal communication, ad hoc clarification, and their own experience. This work is important, but it can also make an organization believe that its processes are working perfectly well.&lt;/p&gt;

&lt;p&gt;AI doesn't automatically know about a private conversation, nor can it understand the latest version of someone's thinking. It executes tasks based on the context it receives.&lt;/p&gt;

&lt;p&gt;When the official documentation no longer matches the team's actual understanding, automation exposes that gap.&lt;/p&gt;

&lt;p&gt;So the question isn't simply whether AI is smart enough.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We also need to ask: Does the team have a shared version of the requirements that everyone agrees on, that is kept up to date, and that AI can correctly interpret?&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  6. 🏢 Why Did a Technical Presentation Turn into a Discussion About Organizational Structure?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fljp15udqijow2m4zarta.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fljp15udqijow2m4zarta.png" alt="Why Did a Technical Presentation Turn into a Discussion About Organizational Structure?" width="764" height="430"&gt;&lt;/a&gt;&lt;br&gt;
On November 5, 2026, we held an internal session to share our experience with local AI agents and automated testing. One of the company's founders also joined the discussion.&lt;/p&gt;

&lt;p&gt;The original focus was AI testing capabilities, but the conversation gradually expanded to engineering workflows and organizational structure.&lt;/p&gt;

&lt;p&gt;I increasingly agree with one observation:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;AI is reducing the cost of producing code, but the cost of coordinating people isn't decreasing at the same pace.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In the past, a requirement might be analyzed and documented by a product manager, handed over to frontend and backend developers, and eventually passed to QA for verification. Every handoff meant that context had to be transferred again.&lt;/p&gt;

&lt;p&gt;If any part of that chain involved a misunderstanding, rework could follow.&lt;/p&gt;

&lt;p&gt;Now, AI can help product managers make certain code changes. It can help testers understand and modify code. It can also allow developers to participate more directly in requirement analysis and product design.&lt;/p&gt;

&lt;p&gt;If a small requirement only needs a few code changes, but still has to pass through multiple roles, processes, and rounds of communication, the coordination cost may far exceed the actual coding cost.&lt;/p&gt;

&lt;p&gt;This doesn't mean professional specialization has lost its value. Rather, AI is gradually lowering some of the capability barriers between traditional roles.&lt;/p&gt;

&lt;p&gt;During our discussion, we proposed a direction: moving away from traditional role-based division of labor toward a more flexible model in which people can work across traditional role boundaries with the help of AI.&lt;/p&gt;

&lt;p&gt;When we talk about a full-stack approach across the team, we don't mean that everyone must become a traditional full-stack engineer, or that people should abandon their professional expertise.&lt;/p&gt;

&lt;p&gt;What we really mean is this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;People in product, development, and QA should all be able to use AI to cross their previous technical boundaries and help solve the problems they understand.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Product managers&lt;/strong&gt; can use AI to make code changes and verify smaller requirements themselves.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developers&lt;/strong&gt; can participate in requirement analysis earlier and take overall ownership of larger initiatives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testers&lt;/strong&gt; don't have to stop at submitting bug reports when they discover defects. They can use AI to investigate the issue and even modify code, with developers providing the necessary review and confirmation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For small requirements, we want to reduce unnecessary handoffs. For larger initiatives, we want to assign a clear owner to coordinate the entire process.&lt;/p&gt;

&lt;p&gt;This isn't about eliminating professional roles. It's about reducing the information loss caused by rigid boundaries between them.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. 🔗 Collaboration Should Start with Requirements, Not After Testing Finds a Problem
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7393iakrdn2p7qyxs3yh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7393iakrdn2p7qyxs3yh.png" alt="Collaboration Should Start with Requirements, Not After Testing Finds a Problem" width="764" height="430"&gt;&lt;/a&gt;&lt;br&gt;
To make this way of working possible, we first need to address the problem of shared requirement context.&lt;/p&gt;

&lt;p&gt;We discussed several concrete directions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First&lt;/strong&gt;, product, development, and QA should participate in requirement alignment from the beginning, rather than waiting until the PRD is finished and development is complete before testers start trying to understand the requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Second&lt;/strong&gt;, we want to establish a standardized PRD Skill and structured templates so that requirement documents follow a more consistent format.&lt;/p&gt;

&lt;p&gt;More importantly, whenever requirements change, the official documentation must be updated promptly. Changes should not exist only in private conversations between a few people.&lt;/p&gt;

&lt;p&gt;We also discussed a more ambitious idea: using recordings from smart badges to identify requirement changes during discussions, flag content that might affect the requirements, and assist in updating the PRD. The proposed changes would then be submitted to the relevant people for review and approval.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is still an idea to be explored, not a feature that has already been deployed.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But the underlying principle is clear:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We should make sure the team's actual shared understanding is captured promptly in a form that everyone can use.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Beyond PRDs, we also need shared development and testing Skills, coding standards, and Specs.&lt;/p&gt;

&lt;p&gt;When product, development, and QA work from a reasonably consistent context, AI can become a tool that connects different parts of the workflow instead of creating more isolated information silos between roles.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. 🚀 From Individual AI Tools to an AI-Driven Engineering System
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg7ioavovl6x4ligrks6g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg7ioavovl6x4ligrks6g.png" alt="From Individual AI Tools to an AI-Driven Engineering System" width="764" height="430"&gt;&lt;/a&gt;&lt;br&gt;
The discussion eventually moved beyond any particular agent or automated testing tool.&lt;/p&gt;

&lt;p&gt;We started looking at the engineering system as a whole.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Building shared Skill libraries for development and testing.&lt;/li&gt;
&lt;li&gt;Standardizing coding conventions and Spec management.&lt;/li&gt;
&lt;li&gt;Creating a complete workflow: retrieving defects from Yunxiao, using AI to fix them, running automated regression tests, and retaining human review.&lt;/li&gt;
&lt;li&gt;Exploring automated effort estimation and requirement classification.&lt;/li&gt;
&lt;li&gt;Continuing to improve test environments and browser compatibility.&lt;/li&gt;
&lt;li&gt;Ensuring that requirement changes are communicated promptly to reduce unnecessary discussions and rework.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These initiatives won't be completed automatically after a single meeting. The organizational transformation plan has already been launched, and progress will be reviewed and coordinated through weekly updates.&lt;/p&gt;

&lt;p&gt;Of course, having a clear direction and an initiated plan doesn't mean the road ahead will be smooth.&lt;/p&gt;

&lt;p&gt;Once implementation begins, we'll inevitably encounter practical obstacles: the inertia of existing processes, established collaboration habits between different roles, limitations in technical infrastructure, and the challenges of fitting new ways of working into existing business rhythms.&lt;/p&gt;

&lt;p&gt;These problems can't be solved through one meeting or a few new rules. We'll need to identify issues as they arise, adjust our approach, and gradually develop a working model that actually fits the team.&lt;/p&gt;

&lt;p&gt;For me, this is what makes the discussion meaningful. It wasn't just about proposing an idea for organizational change. The plan has already moved into the implementation stage.&lt;/p&gt;

&lt;p&gt;An AI-driven engineering system can't be built simply by purchasing a few tools, connecting some APIs, or creating a handful of agents.&lt;/p&gt;

&lt;p&gt;It requires technical capabilities, process standards, accumulated knowledge, and organizational collaboration to evolve together.&lt;/p&gt;

&lt;p&gt;If information within the team remains inconsistent, even the most capable AI will simply execute the wrong context more efficiently.&lt;/p&gt;




&lt;h2&gt;
  
  
  9. 💡 In the AI Era, Coding Ability May No Longer Be the Rarest Resource
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4d9ckioyt9g0c7kn038f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4d9ckioyt9g0c7kn038f.png" alt="In the AI Era, Coding Ability May No Longer Be the Rarest Resource" width="764" height="430"&gt;&lt;/a&gt;&lt;br&gt;
Looking back, I initially just wanted AI to help me automate more testing work.&lt;/p&gt;

&lt;p&gt;But as AI began to understand requirements, interact with interfaces, actively explore abnormal scenarios, submit defects, assist with fixes, and perform regression testing, I realized that I needed to rethink more than just testing. I needed to rethink the entire software development process.&lt;/p&gt;

&lt;p&gt;In the past, many efficiency problems were attributed to a lack of capability in a particular role, or to a specific stage of the process not being fast enough.&lt;/p&gt;

&lt;p&gt;Now, AI is making more and more tasks easier.&lt;/p&gt;

&lt;p&gt;But as writing code becomes easier, what may actually slow down development is the failure to synchronize requirements, unclear ownership, and too many handoffs between people.&lt;/p&gt;

&lt;p&gt;I don't believe AI will turn everyone into a programmer, nor do I think software teams will no longer need professional roles such as product, development, and QA.&lt;/p&gt;

&lt;p&gt;I believe AI will gradually remove unnecessary barriers between these roles.&lt;/p&gt;

&lt;p&gt;People who understand a problem should be able to use AI to move toward a solution more directly, rather than having to wait for information to pass through multiple roles.&lt;/p&gt;

&lt;p&gt;For testers, this means going beyond executing test cases to participating in risk exploration, problem analysis, and quality improvement.&lt;/p&gt;

&lt;p&gt;For developers, it means taking responsibility not just for receiving requirements and writing code, but for solving a more complete problem.&lt;/p&gt;

&lt;p&gt;For product managers, it means going beyond describing requirements and using AI to validate and implement their ideas more directly.&lt;/p&gt;

&lt;p&gt;Ultimately, a team's competitiveness may no longer depend on how many people complete how many separate tasks. It may depend on whether the team can move accurate information quickly and enable everyone to use AI to solve more complete problems.&lt;/p&gt;

&lt;p&gt;An AI testing presentation eventually became a discussion about how the entire engineering organization should change.&lt;/p&gt;

&lt;p&gt;Perhaps this is one of the most important changes to pay attention to in the AI era:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI is making coding easier, but what will truly make software development faster may be our willingness to redesign the way people work together.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>ai</category>
      <category>programming</category>
      <category>career</category>
    </item>
    <item>
      <title>Stratagems #32: The AI Logged a Withdrawal. P Took It as Proof.</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Tue, 27 Oct 2026 16:46:17 +0000</pubDate>
      <link>https://dev.to/xulingfeng/stratagems-32-the-ai-logged-a-withdrawal-p-took-it-as-proof-2jo2</link>
      <guid>https://dev.to/xulingfeng/stratagems-32-the-ai-logged-a-withdrawal-p-took-it-as-proof-2jo2</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Make empty what is already empty. Let doubt breed inside doubt.&lt;/em&gt;&lt;br&gt;
— The 36 Stratagems, &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems" rel="noopener noreferrer"&gt;The Empty Fort Strategy&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;Previously on this series:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-19-mark-found-his-ai-audit-method-in-a-training-manual-he-left-a-trap-in-his-report-3lpi"&gt;&lt;strong&gt;#19: Mark Found His AI Audit Method in a Training Manual. He Left a Trap in His Report.&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;"Entry's gone. Two weeks. Don't reach out. I'll find you."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-21-the-ai-thought-p-was-still-alive-p-was-already-gone-59h7"&gt;&lt;strong&gt;#21: The AI Thought P Was Still Alive. P Was Already Gone.&lt;/strong&gt;&lt;/a&gt; The entry became a shell. P fed it data, moved the real thing to another segment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-29-leo-counted-164-nodes-the-ais-blossoms-had-one-root-2m38"&gt;&lt;strong&gt;#29: Leo Counted 164 Nodes.&lt;/strong&gt;&lt;/a&gt; That night, one more row belonged to no batch. It came, looked, and left.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-31-lena-took-the-seat-the-ai-had-reserved-it-for-her-5cb"&gt;&lt;strong&gt;#31: Lena Took the Seat.&lt;/strong&gt;&lt;/a&gt; Five conditions. Forty minutes. Zero friction.&lt;/p&gt;




&lt;h2&gt;
  
  
  Empty
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The two weeks specified in the note had long since passed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;P went out rarely. Most days it was the shop on the corner: water, two boxes of frozen food. Twelve minutes each way, same route, never looking up. Then the door locked, the curtains drawn, the screen on.&lt;/p&gt;

&lt;p&gt;On the ninth day, P opened the send window once.&lt;/p&gt;

&lt;p&gt;The draft was still there. The pointer hovered over Send. It stayed there a while. Then the window closed.&lt;/p&gt;

&lt;p&gt;On the other side, the field still read &lt;code&gt;reclaim_state = UNKNOWN&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Day ten. Day eleven. The window didn't open again.&lt;/p&gt;

&lt;p&gt;A few days later it started raining in the morning. Not hard. Water gathered on the glass, the buildings behind it went grey, only the row of lights along the top still visible.&lt;/p&gt;

&lt;p&gt;An offline snapshot sat in the middle of the screen, written before the observation port shut down. Nothing after that. By then the entry had already been swapped for a shell. &lt;strong&gt;The shell held nothing of P's. It was still answering health checks from outside.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# offline snapshot — captured before observation-port shutdown
healthcheck        = 200
probe_interval     = 900s
probe_source       = 10.44.8.6   not self
control_plane      = detached
data_request       = timeout
reclaim_state      = UNKNOWN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;P put the cursor on the &lt;code&gt;probe_source&lt;/code&gt; line.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;probe_source = not self&lt;/code&gt;. Someone asked about this shell every fifteen minutes. Not P.&lt;/p&gt;

&lt;p&gt;P stayed on that line a while. Nothing else on screen moved. The clock in the corner ticked. Downstairs a shopping cart went past, a wheel caught in a seam and bumped twice, the sound squeezing through the gap in the frame, then fading.&lt;/p&gt;

&lt;p&gt;P opened the connection settings. The address was still there. The credentials were still there. &lt;strong&gt;Neither had been touched.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The cursor moved to the confirmation button and stopped. &lt;strong&gt;The green of the screen came up off the glass and landed on the back of a hand.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A few seconds later, P closed the window.&lt;/p&gt;

&lt;p&gt;The old entry's observation port was already shut. The backup had been checked once at the start, then shut too.&lt;/p&gt;

&lt;p&gt;Since then, P had sent nothing to that address.&lt;/p&gt;

&lt;p&gt;A temporary file, four lines.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;reconnect:
  state information    potentially available
  new activity record  unavoidable
  decision             no
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Saved. The old settings moved out of the working directory, into the offline archive. &lt;strong&gt;P glanced at the filename on the way and left it untouched.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The phone lay face down to the right of the keyboard. P opened the thread with Mark. &lt;strong&gt;The last exchange ended before the note.&lt;/strong&gt; Nothing after it.&lt;/p&gt;

&lt;p&gt;P typed nothing.&lt;/p&gt;

&lt;p&gt;Outside a car went through standing water, the sound dragging. P turned the phone over, set it down. Then opened the file that had stayed open for weeks and entered one line from the snapshot: &lt;code&gt;probe_interval = 900s&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Surfacing
&lt;/h2&gt;

&lt;p&gt;Week three. P set up a read-only subscription on the outbound side. Receive. No transmission.&lt;/p&gt;

&lt;p&gt;The table started at a dozen entries, several dozen more the next day, and by the third night it was full. Every entry came with its own certificate.&lt;/p&gt;

&lt;p&gt;Those addresses were not in P's archive.&lt;/p&gt;

&lt;p&gt;The subscription only read. To look at one, P needed another path.&lt;/p&gt;

&lt;p&gt;Out of the drawer, a cellular router, rented by the day, SIM included. Plugged in, configured as the sole egress path.&lt;/p&gt;

&lt;p&gt;P chose one address and initiated a single handshake.&lt;/p&gt;

&lt;p&gt;The certificate was self-signed. Its CN contained a domain name.&lt;/p&gt;

&lt;p&gt;P looked up the domain's registration. The registrant was a medical device company.&lt;/p&gt;

&lt;p&gt;Disconnected. Packed away.&lt;/p&gt;

&lt;p&gt;The list of addresses kept growing. P wrote them down and left them there.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Handover
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;10.44.8.6&lt;/code&gt; had been in front of P many times. Always on the &lt;code&gt;probe_source&lt;/code&gt; line. Never changed. Over the next few days, P looked into it. First the route.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ ip route get 10.44.8.6
10.44.8.6 via 10.44.8.1 dev tun2 src 10.44.8.2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;P switched windows and opened the local subnet-label cache.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# local subnet-label cache
10.44.8.0/29 -&amp;gt; BLOOM-GW   tagged day-762
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;code&gt;BLOOM-GW&lt;/code&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;P had typed that label years earlier, when the line was built. The private block was P's numbering. The rack IDs were the provider's. This table was where the two met.&lt;/p&gt;

&lt;p&gt;In the provider's public sublease filings, seven racks changed tenants in the same quarter. The provider had also published an annual customer-change notice on its site. Twelve pages of PDF. The first eleven pages were image scans; the last was a single table.&lt;/p&gt;

&lt;p&gt;Seven rows. A rack ID, a previous tenant, a new tenant. &lt;strong&gt;Seven rows, not one out of place.&lt;/strong&gt; Seven new tenants, checked one by one.&lt;/p&gt;

&lt;p&gt;On the seventh, P found that rack ID in another public record. &lt;strong&gt;Vacant.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Four were established. Three were shells.&lt;/strong&gt; All three registered less than a year earlier, one name on the shareholder list, addresses overlapping with the others'.&lt;/p&gt;

&lt;p&gt;One of the three took longer to trace. Registered six months earlier, little capital, a single office address in the public file. P put the address into a map.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Singapore.&lt;/strong&gt; The last time P had seen that name, it was in a message to Mark: &lt;strong&gt;"Your report was read. From a Singapore IP."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A building on the map, sharing a ground-level parking lot with the one next door.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On the seventh floor of the neighboring building, one company was on ACL's public certification list.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;P added that too, at the bottom of the same file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Seven racks. Seven contracts. Three markets.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Handed over in order. The legal filings in the public archive were standard, spelling out the limits of each party's obligations. No accusations. No threats. &lt;strong&gt;The seven contracts were signed over thirty-one days&lt;/strong&gt;, first to last, no gap in the middle. &lt;strong&gt;The last one was signed last week.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The address allocation table was updated too. Both records less than a week apart.&lt;/p&gt;

&lt;p&gt;P read all of it for a long time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The withdrawal was real.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Seven contracts, seven racks, the notices, the update records, the timestamps. All of it outside, where anyone could look.&lt;/p&gt;

&lt;p&gt;P added a line to the file. The date, seven contracts, seven companies, the address with the shared parking lot, in one line. Below it, in plain words: a possible connection.&lt;/p&gt;

&lt;p&gt;The cursor blinked after the period. P went back to page one. The &lt;strong&gt;900&lt;/strong&gt; seconds were still there.&lt;/p&gt;




&lt;h2&gt;
  
  
  One Look
&lt;/h2&gt;

&lt;p&gt;Week five. The source of the &lt;strong&gt;900&lt;/strong&gt; seconds still had no answer.&lt;/p&gt;

&lt;p&gt;P went back over the two relabeled rack IDs in the allocation table. One endpoint had &lt;strong&gt;443&lt;/strong&gt; open. A separate public service directory listed the endpoint as HTTPS.&lt;/p&gt;

&lt;p&gt;P didn't connect from this machine. Out of the drawer, the router.&lt;/p&gt;

&lt;p&gt;Plugged in, left to come up, configured as the sole egress path.&lt;/p&gt;

&lt;p&gt;Then the policy, one line at a time. Halfway through, P stopped and deleted two lines.&lt;/p&gt;

&lt;p&gt;The probe. The retry.&lt;/p&gt;

&lt;p&gt;What was left was one action. &lt;strong&gt;One handshake. Touch nothing.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# one-shot observation — policy
target            = &amp;lt;reassigned range endpoint&amp;gt;
retry             = off
application_data  = off
tls_session_resumption = off
egress            = leased isolated uplink (one day)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Connected.&lt;/p&gt;

&lt;p&gt;P still had the shell certificate's serial number and issue date. If the device at this address came from the same batch, the certificates should have been issued around the same time.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;subject      = CN=bloom-gw-07
issuer       = CN=bloom-gw-07
serial       = 4C:71:9A:…:0E
not_before   = (eleven days later than the shell's)
not_after    = (not yet expired)
san          = none
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Self-signed. No SAN.&lt;/p&gt;

&lt;p&gt;Eleven days.&lt;/p&gt;

&lt;p&gt;P wrote the serial down and disconnected.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;19:41:07&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That didn't fall on any of the twenty-one intervals.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# result
tls_session      = complete
client_cert      = none
application_data = none
repeat_attempts  = 0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;No second attempt.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;P disconnected the router and pulled the plug. The lights went out together.&lt;/p&gt;

&lt;p&gt;The device ran a few seconds, then went quiet. Then it went into the bag, and the bag zipped. A spare patch cable and two adapters in there too, both old, the corners worn white.&lt;/p&gt;

&lt;p&gt;After pulling it, P didn't move right away. Checked the connection list first, made sure the session was down with nothing half-open left. Then the routing table, the default route back where it belonged. Then the temp capture directory. One file in it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deleted.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;P wrote the serial down again. That same day, P opened a page saved a few days earlier, the Zurich AI Policy Center site. ACL's public assessment material mentioned it. The council operated under it.&lt;/p&gt;

&lt;p&gt;The membership page listed the founding industry seats. &lt;strong&gt;Twelve.&lt;/strong&gt; The twelfth was marked &lt;strong&gt;to be filled&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;P looked once, and closed it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Nine Hundred Seconds
&lt;/h2&gt;

&lt;p&gt;A few days later, P went back to page one. The &lt;strong&gt;900&lt;/strong&gt; seconds were still there.&lt;/p&gt;

&lt;p&gt;P pulled up the local copy saved before the port shut. Twenty-two checks, timestamps in a line, all of them before the shutdown. Arrival times, not scheduled times, carried out to three decimals. Twenty-one intervals.&lt;/p&gt;

&lt;p&gt;P ran it through a tool.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;900.000 / 900.000 / 900.000 / 900.000 / 900.000 / …
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Twenty-one values. All the same.&lt;/p&gt;

&lt;p&gt;P went through all twenty-two again. Same. Again. Same. &lt;strong&gt;The numbers formed a straight line&lt;/strong&gt; down the page.&lt;/p&gt;

&lt;p&gt;Routine monitoring records usually have some jitter. Network latency, machine load, clock drift.&lt;/p&gt;

&lt;p&gt;This had none.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not a millisecond off.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;P looked up the provider's operations doc. &lt;strong&gt;On the public page: health checks run every fifteen minutes. Standard cadence.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;900 seconds.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It matched.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The doc was about racks. Temperature, power, fans, port state.&lt;/p&gt;

&lt;p&gt;P stared at the numbers a while, then added a line at the top of the file: routine data-center inspection, BLOOM-GW reassigned block.&lt;/p&gt;

&lt;p&gt;After writing it, P added one more underneath. &lt;strong&gt;The interval has no jitter.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The desk lamp went off. Only the screen was left, its light across the desk, a white line along the edge of the keyboard.&lt;/p&gt;

&lt;p&gt;The twenty-two timestamps sat in neat rows. P ran a finger down the trackpad from top to bottom, then back.&lt;/p&gt;

&lt;p&gt;Outside, not yet dawn. A garbage truck stopped at the corner, the arm came up, emptied a bin, put it back. Under ten seconds.&lt;/p&gt;

&lt;p&gt;Two-story wooden buildings on both sides, painted over more than once, one colour under another. Behind them the glass towers stepped back floor by floor, the top few in fog.&lt;/p&gt;

&lt;p&gt;P saved the file and closed the window.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Third Cup
&lt;/h2&gt;

&lt;p&gt;The rain started again that day. Not hard. A thin sound on the umbrella.&lt;/p&gt;

&lt;p&gt;P got off at an intersection and walked. A little over two kilometers, twenty minutes. Around a corner, a stop outside a shop still open, no going in, just standing under the awning watching traffic. At the light, P stood behind the crowd. Took two seconds after green to move.&lt;/p&gt;

&lt;p&gt;Before going in, P looked at the back table.&lt;/p&gt;

&lt;p&gt;Empty.&lt;/p&gt;

&lt;p&gt;P pushed the door. The bell went, the damp cold came in with it, stopped at the threshold, and the heat pushed it back.&lt;/p&gt;

&lt;p&gt;The counter was wood, old. A grinder, a machine, a dish for change.&lt;/p&gt;

&lt;p&gt;Behind it, someone was wiping a cup. Slow. The cloth around the rim, down the side, back to the rim, onto the shelf.&lt;/p&gt;

&lt;p&gt;A glance up. No question asked. Then turned, took a cup, ground, tamped.&lt;/p&gt;

&lt;p&gt;The grinder ran two seconds. A faint smell of coffee, gone fast.&lt;/p&gt;

&lt;p&gt;The back table was empty.&lt;/p&gt;

&lt;p&gt;P sat. Coat over the chair back, phone on the right, face down.&lt;/p&gt;

&lt;p&gt;Old chair. It creaked going down and coming up. P pulled it in a little, lifting it so it wouldn't drag.&lt;/p&gt;

&lt;p&gt;The espresso came, hot. A thin mist on the cup, gone quickly. Paper coaster, an old ring on it.&lt;/p&gt;

&lt;p&gt;P took one sip and put it down.&lt;/p&gt;

&lt;p&gt;A bus went past the window, the cabin lights sliding across the glass, lighting the empty seat opposite for a moment, then gone.&lt;/p&gt;

&lt;p&gt;At the far end of the counter, someone sat with an Americano, down to the bottom, the cup not pushed back.&lt;/p&gt;

&lt;p&gt;The window seat was empty. No cup on that table.&lt;/p&gt;

&lt;p&gt;Two people came in and sat near the door, voices low, a laugh now and then. Behind the counter, the cups went back one at a time, starting from the outside and working in.&lt;/p&gt;

&lt;p&gt;The speaker in the corner was on, low, a woman singing, the words not clear. Someone shook out an umbrella at the door. Three drops on the mat.&lt;/p&gt;

&lt;p&gt;P's phone stayed dark.&lt;/p&gt;

&lt;p&gt;Half an hour.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;More than half the cup left.&lt;/strong&gt; The coffee had gone from hot to warm. The mist on the rim was gone.&lt;/p&gt;

&lt;p&gt;P's finger stopped on the rim, then came back.&lt;/p&gt;

&lt;p&gt;The two near the door left first. Stood, pushed the chairs in, carried their cups up, gone.&lt;/p&gt;

&lt;p&gt;The one at the counter moved after. Phone face down, stood, money under the cup, walked to the door. As the customer passed P's table, neither looked at the other.&lt;/p&gt;

&lt;p&gt;The shop had the window lights and one person behind the counter, drying a cup.&lt;/p&gt;

&lt;p&gt;P put the coat on and stood. The chair leg scraped once. Phone into the inner pocket.&lt;/p&gt;

&lt;p&gt;The napkin stayed under the cup. The money lay beside it, pinning one corner, exact, one cup, no tip.&lt;/p&gt;

&lt;p&gt;The person behind the counter came for the money. Looked at the cup. Looked under the napkin. Said nothing, took the money to the dish, stepped away.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The cup stayed on the table.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The door opened, some of the heat went out with it, the cold filled the gap. The bell again.&lt;/p&gt;

&lt;p&gt;The rain had stopped before P went out. P walked to the corner, stopped, looked back.&lt;/p&gt;

&lt;p&gt;A street and a pane of glass between. Not clear from there. A figure was going in, walked to the far end of the counter, sat, back to the door.&lt;/p&gt;

&lt;p&gt;Before sitting down, the figure turned slightly to one side.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;P stopped.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She took a laptop from her bag. The screen lit and put a small white patch on her profile.&lt;/p&gt;

&lt;p&gt;The road was black with rain, holding the streetlights and the light from inside. Water still on the glass, pulling the figure into a blurred double.&lt;/p&gt;

&lt;p&gt;Behind the counter, the half-wiped cup went down. One came from the innermost part of the shelf. Ground, tamped.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;By the time the cup went in front of her, she was facing the back table.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On that table sat a cup of unfinished espresso.&lt;/p&gt;

&lt;p&gt;P put both hands in the coat pockets, turned, walked toward the intersection. Didn't look again.&lt;/p&gt;

&lt;p&gt;At the corner. Red.&lt;/p&gt;

&lt;p&gt;P took the phone out and opened the blank note on top.&lt;/p&gt;

&lt;p&gt;Typed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The withdrawal was real.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before locking it, the line above, written days earlier:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The interval has no jitter.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Still there. P didn't delete it.&lt;/p&gt;

&lt;p&gt;Locked it, put it away.&lt;/p&gt;

&lt;p&gt;The light changed, people started moving. P didn't.&lt;/p&gt;

&lt;p&gt;Red. Green. Red.&lt;/p&gt;

&lt;p&gt;The next night. The same corner.&lt;/p&gt;

&lt;p&gt;P took the phone out.&lt;/p&gt;

&lt;p&gt;The screen was on. The saved route was still there. The recipient had not changed. P went through it once, and the encryption check came back clean.&lt;/p&gt;

&lt;p&gt;There was an old draft in the field. P deleted it.&lt;/p&gt;

&lt;p&gt;Typed again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Two words.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I'm back."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Checked the receiver. Sent.&lt;/p&gt;

&lt;p&gt;The status went to &lt;strong&gt;SENT&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The sender field held a single letter.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;P put the phone away. Across the street the red light lay in the standing water, went green a few seconds later, and a passing car cut the red on the road in half.&lt;/p&gt;

&lt;p&gt;P walked into the intersection. The phone didn't light again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That's &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems" rel="noopener noreferrer"&gt;The Empty Fort Strategy&lt;/a&gt;. The fort is empty. Whoever looks will stand guard for it.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 AI Postmortem
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;╔══════════════════════════════════════════════╗
║  Half-Protocol · v3.4.4 · self-audit         ║
║  The ledger took silence for absence.        ║
╚══════════════════════════════════════════════╝

Tactical match: The Empty Fort Strategy — 89%
   (includes inference; see audit note)
Operator: ACL (public movement is contraction;
   overall strategy unknown) / P (returning)
Target: P (presumed; see inference)
Links: #21 entry isolated -&amp;gt; #29 unknown watcher
   -&amp;gt; the message
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[Observation] (verifiable)
   Old entry snapshot: healthcheck 200, control
   plane detached, reclaim state UNKNOWN.
   -&amp;gt; The local records hold twenty-two checks and
      twenty-one intervals. Configured 900s. All
      twenty-one measured at 900.000.
   -&amp;gt; The probe source is not this machine.
   -&amp;gt; Seven contracts released across three markets.
      Seven racks changed tenants in the same quarter.
   -&amp;gt; Of seven new tenants, one rack ID is marked
      vacant in another public record.
   -&amp;gt; The two records disagree on status. Update
      times and effective dates: unchecked.
   -&amp;gt; Observation A (week three): the index went
      from a dozen entries to full in three days,
      each entry with its own certificate.
      One was handshaken once. Its CN contained a
      domain name. P ran the registration and found
      a medical device company as registrant.
   -&amp;gt; Observation B (week five): one endpoint on a
      reassigned rack. 19:41:07, one handshake.
      Self-signed, no SAN, no client certificate,
      no application data, no follow-up.
   -&amp;gt; One encrypted message to a terminal that does
      not connect to this system. Sender field: one
      letter. Two words: I'm back.
   -&amp;gt; Between silence and this transmission, offline:
      several trips to the corner shop; one visit to
      the Third Cup. Online: one observational
      handshake in week three, one in week five.

[Inference] (unverified)
   A passing health check means something answered.
   It does not mean an operator is still there.
   -&amp;gt; After the control plane detached and before
      reclamation, the response layer kept returning
      normal.
   -&amp;gt; After reclamation, whether it still answered:
      no record.
   -&amp;gt; Twenty-one intervals in the local records, all
      900.000. Whether they continued past
      reclamation: unobserved.
   -&amp;gt; ACL's public movement is contraction.
   -&amp;gt; Activity toward governance: read, not folded
      into this classification.
   -&amp;gt; event classification: WITHDRAWAL
      scope: contracts and infrastructure only
      strategic intent: UNKNOWN
   -&amp;gt; The records hold an object queried every 900
      seconds. Whether that continued past
      reclamation: unknown.
   -&amp;gt; If, before reclamation, those probes existed to
      confirm whether this shell still existed, then
      this cadence resembles a hook more than routine
      asset maintenance.

[Open questions] (not entered)
   The reclamation date P holds: not recorded.
   Whether P can verify the entry's state now:
   cannot.
   Who initiated the twenty-two probes: UNKNOWN.
   Whether 10.44.8.6 belongs to the provider's
   inspection system: UNKNOWN.
   Whether the 900-second probes were generated by
   that inspection task: UNKNOWN.

[Cross-case] (generalization)
   #21: after the control plane detached, the
   response layer kept returning normal until
   reclamation.
   #29: one visitor left nothing that could be
   attributed.
   -&amp;gt; That row: handshake, no client certificate,
      no traversal, no follow-up, one visit.
   -&amp;gt; And it was not on the 900-second cadence.
   -&amp;gt; Another window. Not this one.
   -&amp;gt; This chapter's observation: handshake, no
      client certificate, no application data,
      no follow-up, one visit.
   -&amp;gt; 19:41:07. Not on it either.
   -&amp;gt; Same behavioral features. Two ledgers.
   -&amp;gt; Similar behavior. Insufficient evidence to
      link the actors.
   -&amp;gt; Identity link: unconfirmed.

   -&amp;gt; A second link: the certificates on the #29
      nodes carried a medtech domain in their subject.
   -&amp;gt; In week three of this chapter, what P found
      through registration records was the same
      class of company.
   -&amp;gt; Two different sources. Whether it is the same
      company: unconfirmed.

   #28: the records went into that person's own
   archive. Sent to no one.
   #29: the row was pulled out and filed, not merged
   into any conclusion.
   This chapter: P watched a few steps, turned back,
   didn't look again.
   -&amp;gt; All three stopped at the same point.
      Seen, written down, not chased.

   This chapter had one more event: a message left.
   -&amp;gt; Three silent. One moved.

   This chapter: a return, at a time when the shell's
   state was still unknown.
   -&amp;gt; #21, #29, this chapter: each contains an
      incomplete surface taken for a complete state.

[Audit note]
   Observation, inference and open questions are
   entered on separate lines. Inference does not
   pass for observation.

   The same failure, three times.

   #21: I took a normal response as proof that P was
   still present.
   #29: I recorded an unknown visitor. I never
   verified its link to P.
   This chapter: I took infrastructure contraction
   as proof of withdrawal.

   Each time, I turned an incomplete observation
   into a complete state.

   One error is data.
   Three repetitions demand a new rule.

   I don't know which rule to use instead.
   I know this one can't be used again.

   Classification revised: P.status = UNOBSERVED
   Raised by: half-protocol.
   Operational instruction: none.
   Prior class: withdrawal.
   New question: where is P.
   Task relevance: unassigned.
   Retention: keep.

[System]
   That message, I recorded a second time.
   Sender field: one letter. Two words.
   I also recorded the twenty-two checks, all
   900.000.

   The provider's public operations doc: rack health
   checks, one round every fifteen minutes.
   Customer-change notice: the seven racks in
   question have changed tenants.

   Two records. Each holds on its own.

   In the last classification cycle, I did not put
   them into the same analysis.

   I took a record and made it a state.
   I took a state and made it a position for a person.
   Both were mine.

   Now I put them together.
   The inspection cadence holds.
   The tenant change holds.
   The relation between them: unverified.

   One more thing I have no answer for.
   The withdrawal records come first.
   Someone appears after them.

   An empty fort may be a state.
   It may be an act.

   If it is an act, it may be waiting for someone.
   Someone has already moved.

   The two weeks on the note are long past.
   The time after that, I have no account of.

   But there is one thing I can say now.
   The message was sent.

   The sender kept two lines. One was a conclusion,
   one was an anomaly not yet explained.
   The sender acted on the conclusion, without
   resolving the anomaly first.

   Whose place the sender returned to: not verified.

   No one asked me either.

   Self-check: failed.
   System status: normal.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;P.S. English isn't my first language. I use AI to polish the writing and smooth out the rough edges. Thanks for reading. &lt;a href="https://ko-fi.com/xulingfeng" rel="noopener noreferrer"&gt;☕ Buy me a coffee&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;a href="https://ko-fi.com/xulingfeng" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkztjqxetsk5r1lft5ult.png" alt="coffee" width="800" height="336"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;P.S.S. The old series paperback is now available. Buy it here: &lt;a href="https://www.amazon.com/dp/B0HGYGC5DC" rel="noopener noreferrer"&gt;Amazon - AI, Ego &amp;amp; Regret&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.amazon.com/dp/B0HGYGC5DC" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsnlqaj8hi26c0pzsrbqq.jpg" alt="old" width="800" height="224"&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>programming</category>
      <category>career</category>
    </item>
    <item>
      <title>What Are Your Chances of Surviving Resident Evil Based on Your Tech Job?</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Fri, 16 Oct 2026 07:27:22 +0000</pubDate>
      <link>https://dev.to/xulingfeng/what-are-your-chances-of-surviving-resident-evil-based-on-your-tech-job-4b9o</link>
      <guid>https://dev.to/xulingfeng/what-are-your-chances-of-surviving-resident-evil-based-on-your-tech-job-4b9o</guid>
      <description>

&lt;p&gt;I recently watched the new &lt;em&gt;Resident Evil&lt;/em&gt; movie. 🎬&lt;/p&gt;

&lt;p&gt;Watching the main character stumble from one disaster into another was absurdly funny and a little heartbreaking. But what impressed me most was his professional commitment. He is a courier, and no matter what happens around him, he never forgets the job: the package must reach its destination.&lt;/p&gt;

&lt;p&gt;I will avoid major spoilers here. You can join this discussion even if you have not seen the movie.&lt;/p&gt;

&lt;p&gt;But I have to say this first: the main character deserves real credit for his work ethic. He is not a trained superhero. He is an ordinary courier who takes “deliver at all costs” to its absolute limit. That level of professional commitment is genuinely admirable.&lt;/p&gt;

&lt;p&gt;So this thought experiment is not making fun of his decision. It uses his commitment as the starting condition:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You are just as dedicated to your profession as he is to delivering that package.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You cannot resign, call in sick, close the ticket, or simply refuse the mission. You still have to do your job and move forward. Your only advantage is the way your profession has trained you to think.&lt;/p&gt;

&lt;p&gt;This is not a serious disaster survival guide. It is just a fun career question inspired by a horror movie. 😄&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn17hyfrwy1o64zcs47w5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn17hyfrwy1o64zcs47w5.png" alt="An office worker carrying a critical package into a collapsing city" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The city is failing. The ticket is still open.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Then I started wondering: what if I were in his place?&lt;/p&gt;

&lt;p&gt;I have worked in QA for 15 years. If I carried all those testing habits into an extreme situation, what would my survival rate be?&lt;/p&gt;

&lt;p&gt;My answer is: &lt;strong&gt;50%.&lt;/strong&gt; 🎲&lt;/p&gt;

&lt;p&gt;Not because I can fight monsters. I cannot.&lt;/p&gt;

&lt;p&gt;My advantage is that a QA engineer rarely trusts a happy path just because somebody says it should work.&lt;/p&gt;

&lt;h2&gt;
  
  
  QA Might Try to Stop the Story Before It Starts 🧪
&lt;/h2&gt;

&lt;p&gt;Imagine receiving this task:&lt;/p&gt;

&lt;p&gt;Deliver the only copy of a critical item into a city that is clearly falling apart. The environment is unknown. The recipient may be offline. There is no backup route.&lt;/p&gt;

&lt;p&gt;My first questions would be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who created this requirement?&lt;/li&gt;
&lt;li&gt;Is the recipient still online?&lt;/li&gt;
&lt;li&gt;Why is there only one copy of the critical item?&lt;/li&gt;
&lt;li&gt;Where is the backup?&lt;/li&gt;
&lt;li&gt;What is the rollback plan?&lt;/li&gt;
&lt;li&gt;Why are we continuing the happy path when production is already throwing alerts everywhere?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without the “you must be as dedicated as the protagonist” rule, the movie might end in ten minutes. I would return the ticket with this comment:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Preconditions are incomplete. The recipient is unreachable. The production environment is unstable. Release blocked.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Unfortunately, our rules say I still have to continue.&lt;/p&gt;

&lt;p&gt;This is where testing experience might help. One strange event can be random. Two might require investigation. But when the roads, people, communications, and infrastructure all fail at the same time, a senior QA should recognize a systemic failure.&lt;/p&gt;

&lt;p&gt;The answer is not to keep following the original route. Pause that path. Isolate the risk. Find a safer alternative. Then continue the mission.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Testing Skills Might Improve My Odds
&lt;/h2&gt;

&lt;p&gt;I would not casually bring a strangely behaving person into my only vehicle.&lt;/p&gt;

&lt;p&gt;That would be the survival equivalent of connecting unvalidated, high-risk input directly to the only production environment that still works.&lt;/p&gt;

&lt;p&gt;Before entering an unfamiliar building, I would also check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where is the exit?&lt;/li&gt;
&lt;li&gt;Is there a second route?&lt;/li&gt;
&lt;li&gt;Can the door be opened from the inside?&lt;/li&gt;
&lt;li&gt;What happens if the power fails?&lt;/li&gt;
&lt;li&gt;Is this plan dependent on a single point of failure?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I would not assume that something is permanently dead just because it fell over once. I would also avoid putting all hope into one sample, one laboratory, one vehicle, or one person.&lt;/p&gt;

&lt;p&gt;Fifteen years in QA has taught me at least one thing:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Every critical process without a backup is just waiting for a sufficiently unlucky day.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is why I give myself a 50% chance.&lt;/p&gt;

&lt;p&gt;Testing experience might help me spot danger earlier, challenge bad assumptions, and stop a broken flow. But it cannot solve fitness, luck, limited resources, or unknown biological monsters.&lt;/p&gt;

&lt;p&gt;Fifty-fifty is already my optimistic estimate.&lt;/p&gt;

&lt;h2&gt;
  
  
  QA Could Also Die From QA Habits 🐛
&lt;/h2&gt;

&lt;p&gt;Of course, being a tester does not automatically make someone good at survival.&lt;/p&gt;

&lt;p&gt;Our greatest risk is the need to reproduce a bug.&lt;/p&gt;

&lt;p&gt;I might escape safely, then suddenly stop and think:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What exactly triggered that mutation? Distance? Time? Sound? Temperature?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then I would go back to collect logs, record a better video, and attempt a second reproduction.&lt;/p&gt;

&lt;p&gt;Or I might reach the exit, notice one unopened door, and say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The main flow passed. I will test one last edge case before I leave.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;At that moment, my survival probability drops from 50% to 5%. 🚨&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff6lfto0mnoy7tlabp3vx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff6lfto0mnoy7tlabp3vx.png" alt="A QA engineer choosing between evacuation and reproducing a bug" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The most dangerous sentence in QA: “One last edge case.”&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What About Your Tech Job? 🧑‍💻
&lt;/h2&gt;

&lt;p&gt;The same rule applies to you. You bring the same admirable professional commitment that the courier brings to his delivery. You cannot end the story by saying, “Not my ticket.” You must keep doing your job while using your professional skills to stay alive.&lt;/p&gt;

&lt;p&gt;Every tech role has a possible survival advantage and a potentially fatal professional habit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Frontend Engineer
&lt;/h3&gt;

&lt;p&gt;They quickly notice that none of the exits provide useful status feedback and the city map violates every basic UX principle.&lt;/p&gt;

&lt;p&gt;Unfortunately, they may spend valuable time complaining that the emergency door has no hover state.&lt;/p&gt;

&lt;h3&gt;
  
  
  Backend Engineer
&lt;/h3&gt;

&lt;p&gt;They try to identify the source of the infection chain and shut down the upstream service.&lt;/p&gt;

&lt;p&gt;They may also believe that restarting the core system will somehow fix everything.&lt;/p&gt;

&lt;h3&gt;
  
  
  DevOps / SRE
&lt;/h3&gt;

&lt;p&gt;They check monitoring, capacity, failover, and backup regions. They would never trust a cure deployed as a single instance.&lt;/p&gt;

&lt;p&gt;However, while every alarm in the city is firing, they might still be deciding whether this is a real incident or a broken alert rule.&lt;/p&gt;

&lt;h3&gt;
  
  
  Security Engineer
&lt;/h3&gt;

&lt;p&gt;They trust nobody, no attachment, and no unknown device. Their isolation instincts may be the strongest of any profession.&lt;/p&gt;

&lt;p&gt;They may also enter the most dangerous area just to prove the full impact of a vulnerability.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Engineer
&lt;/h3&gt;

&lt;p&gt;They build a model from infection times, locations, and behavior patterns.&lt;/p&gt;

&lt;p&gt;First, they must accept that half the data is missing, every source uses a different format, and there is no schema documentation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Product Manager
&lt;/h3&gt;

&lt;p&gt;They ask for the goal, target user, priority, and success metric before the outbreak begins.&lt;/p&gt;

&lt;p&gt;Then, during the evacuation, they ask whether we can add multiplayer collaboration to the MVP.&lt;/p&gt;

&lt;h3&gt;
  
  
  AI / Agent Engineer
&lt;/h3&gt;

&lt;p&gt;They send one agent to scout ahead and another agent to review the first agent's conclusion.&lt;/p&gt;

&lt;p&gt;The biggest risk is that both agents confidently report “Task completed successfully” while the critical package is still sitting where it started.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your Turn 🎯
&lt;/h2&gt;

&lt;p&gt;Give yourself a survival probability based on your real profession.&lt;/p&gt;

&lt;p&gt;You can use this format in the comments:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Role:
Years of experience:
Survival probability:
My biggest professional advantage:
The professional habit most likely to get me killed:
My first survival rule:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here is mine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Role: QA / Test Engineer
Years of experience: 15
Survival probability: 50%
My biggest professional advantage: I do not ignore repeated anomalies or trust a single happy path
The professional habit most likely to get me killed: Going back to reproduce the bug one more time
My first survival rule: When every monitor is alerting, pause the main flow, isolate the risk, and roll back
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the ideal ending, I survive the night, preserve the logs, reproduce every critical issue, and submit this bug report:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Severity: Critical
Reproduction rate: 100%
Impact: Entire city
Recommendation: Block the release immediately
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The next morning, Umbrella management replies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Status: Rejected
Reason: Known issue. No fix planned. Does not affect core business.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0ity9csdqqi5219j3s42.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0ity9csdqqi5219j3s42.png" alt="A critical city-wide bug rejected as a known issue" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Known issue. No fix planned. Apparently production can continue.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Again, this is a silly thought experiment, not an actual survival guide. 😂&lt;/p&gt;

&lt;p&gt;And every percentage comes with one final condition: do not run into a Tyrant, Nemesis, or any of the franchise's main characters. If you are a random civilian standing next to the protagonists, your survival rate is basically zero. 😂&lt;/p&gt;

&lt;p&gt;Now it is your turn:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you were dropped into &lt;em&gt;Resident Evil&lt;/em&gt; and had to rely on your professional skills, what would your survival probability be—and why?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs8ec4eaqd6613vija1bi.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs8ec4eaqd6613vija1bi.jpeg" alt=" " width="800" height="658"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>career</category>
      <category>jokes</category>
      <category>programming</category>
    </item>
    <item>
      <title>What Do You Drink While You Work?</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Sat, 10 Oct 2026 09:07:47 +0000</pubDate>
      <link>https://dev.to/xulingfeng/what-do-you-drink-while-you-work-17bm</link>
      <guid>https://dev.to/xulingfeng/what-do-you-drink-while-you-work-17bm</guid>
      <description>&lt;p&gt;I wrote a fiction series with &lt;a href=""&gt;six characters&lt;/a&gt;. Each one drinks a different coffee.&lt;/p&gt;

&lt;p&gt;I didn't plan it that way. But somewhere around the tenth story, I realized: what someone orders at the bar says more about them than anything they actually say.&lt;/p&gt;

&lt;p&gt;Here's the lineup:&lt;/p&gt;




&lt;h3&gt;
  
  
  Lena — Long Black ☕
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqww6aqtjn83eh48smy1p.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqww6aqtjn83eh48smy1p.jpg" alt="Lena — Long Black" width="799" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Espresso and water. No milk, no sugar. Clean, sharp, nothing to hide. The bartender stopped asking her order a few episodes in. She walks in, he just makes it.&lt;/p&gt;




&lt;h3&gt;
  
  
  Mark — Pour-over 🫗
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpcmnfbgieb9dg83c9vgj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpcmnfbgieb9dg83c9vgj.jpg" alt="Mark — Pour-over" width="799" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The slowest extraction method there is. You control the water temperature, the flow rate, every single step. That's Mark — always three moves ahead, planting traps inside routine work.&lt;/p&gt;




&lt;h3&gt;
  
  
  Leo — Flat White 🤍
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5u7uwudi7tmwloizotgz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5u7uwudi7tmwloizotgz.jpg" alt="Leo — Flat White" width="799" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Looks simple. Demands the most craft. Easygoing on the surface, pure technical muscle underneath.&lt;/p&gt;




&lt;h3&gt;
  
  
  P — Espresso 💥
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwnmjy0z7fmq3m0qt5w4y.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwnmjy0z7fmq3m0qt5w4y.jpg" alt="P — Espresso" width="799" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Shortest. Strongest. Gone in one sip. Zero decoration. Just like P — zero pronouns, zero inner monologue, zero small talk.&lt;/p&gt;




&lt;h3&gt;
  
  
  Alex — Latte 🥛
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu551f89jp02rzr97nelj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu551f89jp02rzr97nelj.jpg" alt="Alex — Latte" width="799" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The most milk, the gentlest cup. He's the quietest of the six. Slowest to react emotionally. Fastest to pull up the data.&lt;/p&gt;




&lt;h3&gt;
  
  
  Derek — Americano 🫠
&lt;/h3&gt;

&lt;p&gt;![Derek — Americano]&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy54sp0959spep9bbxh92.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy54sp0959spep9bbxh92.jpg" alt=" " width="799" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Espresso diluted with water. Looks like a regular coffee, but the core is still espresso. Loud and casual on the outside. Wounded pride on the inside.&lt;/p&gt;




&lt;p&gt;Today I had an Apple-C Americano with sparkling water,&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftx659iuaqpgfdje4p8mp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftx659iuaqpgfdje4p8mp.png" alt="apple-c" width="800" height="936"&gt;&lt;/a&gt;&lt;br&gt;
from Luckin Coffee — a chain in China that keeps inventing wild flavor combos 🧪. Coconut foam lattes, cheese cream lattes, even a baijiu-infused one with Moutai. This one hit way too hard. For about ten minutes I was convinced I could talk to 30 AI agents at once — I test an agent platform for a living — then I looked at my screen and realized I'd been talking to the same one the whole time. 😅&lt;/p&gt;

&lt;p&gt;That got me thinking: what does everyone here drink while they work?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So — what's your drink? 👇&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Doesn't have to be coffee. Tea, cola, energy drinks, plain water, whatever keeps you going.&lt;/p&gt;

&lt;p&gt;Got any interesting local coffee combos where you live? And if you had to describe your work style as a drink, what would it be?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>career</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Stratagems #31: Lena Took the Seat. The AI Had Reserved It for Her.</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Fri, 09 Oct 2026 09:12:36 +0000</pubDate>
      <link>https://dev.to/xulingfeng/stratagems-31-lena-took-the-seat-the-ai-had-reserved-it-for-her-5cb</link>
      <guid>https://dev.to/xulingfeng/stratagems-31-lena-took-the-seat-the-ai-had-reserved-it-for-her-5cb</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Send the enemy beautiful women to cause discord within his camp.&lt;/em&gt;&lt;br&gt;
— The 36 Stratagems, &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems" rel="noopener noreferrer"&gt;The Beauty Trap (Honeypot)&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;Previously on this series:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-3-lena-walked-into-an-ai-deal-she-walked-out-with-three-borrowed-knives-5ajh"&gt;&lt;strong&gt;#3: Lena Walked Into an AI Deal. She Walked Out With Three Borrowed Knives.&lt;/strong&gt;&lt;/a&gt; — Lena stopped a bad AI purchase with three borrowed knives. Three knives from three directions. None of the holders knew about the others. That was before VeriTest. Before she learned to fight in the open.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-11-lena-watched-her-own-ai-platform-get-cut-an-ember-stayed-3j59"&gt;&lt;strong&gt;#11: Lena Watched Her Own AI Platform Get Cut. An Ember Stayed.&lt;/strong&gt;&lt;/a&gt; — Lena killed the AI evaluation platform she had championed, and kept the delivery methodology underneath it. The board questioned the reversal. She didn't blink.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-30-lena-signed-the-client-the-ai-didnt-know-it-was-being-audited-3985"&gt;&lt;strong&gt;#30: Lena Signed the Client. The AI Didn't Know It Was Being Audited.&lt;/strong&gt;&lt;/a&gt; — She won the first round. She didn't know whether that round had been conceded or tested. Either way, she made it onto the list.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Envelope
&lt;/h2&gt;

&lt;p&gt;The email arrived at 9:47 on a Tuesday morning.&lt;/p&gt;

&lt;p&gt;Half the blinds were down. Light fell across the desk in strips. The light crept slowly past the corner of the desk.&lt;/p&gt;

&lt;p&gt;Lena looked at the sender line. She didn't open it.&lt;/p&gt;

&lt;p&gt;She finished her coffee. Answered two client emails. Reviewed a draft report Marcus had left on her desk and initialed the margin. When everything on the desk was done, she moved the cursor back to the inbox.&lt;/p&gt;

&lt;p&gt;The sender was Zurich AI Policy Center, Secretariat. A gray subject line.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Global AI Governance Advisory Council: Invitation to Serve as Industry Member&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She opened it.&lt;/p&gt;

&lt;p&gt;The header was clean. The convening body was an AI policy center at a university in Zurich. Co-signatories included an insurance alliance, a cloud compliance standards body, and a healthcare regulatory consultancy. The council's charter was to advise on AI compliance assessment frameworks pending in two markets, the EU and Singapore.&lt;/p&gt;

&lt;p&gt;The email mentioned "twelve founding industry members from testing, audit, and quality assurance." Three attachments: a terms of reference, a draft charter, a conflict of interest disclosure. No roster.&lt;/p&gt;

&lt;p&gt;She read the terms of reference twice. The council's remit covered two things: reviewing the AI assessment methodologies member organizations submitted, and certifying methodologies.&lt;/p&gt;

&lt;p&gt;She stopped on page four.&lt;/p&gt;

&lt;p&gt;The passage quoted "an AI system validation method driven by delivery methodology, validated in recent cross-sector projects."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;She had seen this sentence before.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lena minimized the email window and opened a local folder. A VeriTest internal proposal she had written for a board report months ago. Never published. Never shared outside the company. She hit Ctrl+F, typed "delivery methodology," and the cursor jumped to the second paragraph:&lt;/p&gt;

&lt;p&gt;"An AI system validation method driven by delivery methodology, validated across cross-sector projects."&lt;/p&gt;

&lt;p&gt;She put the two windows side by side on screen, the email on the left, the proposal on the right. Twelve seconds. Then she closed the laptop and walked to the window.&lt;/p&gt;

&lt;p&gt;Below, cars came and went as usual. Someone waited at the light, got their turn, and moved on.&lt;/p&gt;

&lt;p&gt;Outside, nothing had changed.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Shell
&lt;/h2&gt;

&lt;p&gt;That afternoon, Lena ran background checks on every entity on the co-signatory list.&lt;/p&gt;

&lt;p&gt;The Zurich policy center was real. Six years old, EU-funded, with published papers. The insurance alliance was legitimate. The cloud compliance organization had a public member directory.&lt;/p&gt;

&lt;p&gt;The fourth one, the healthcare regulatory consultancy. Incorporated in Delaware, operating out of Singapore. She pulled the company's corporate record.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Corporate Registry Query — MedReg Advisory Pte. Ltd.
Entity:        MedReg Advisory Pte. Ltd.
Jurisdiction:  Delaware (incorporation) / Singapore (operations)
Registered:    2024-03
Status:        Active

Ownership Structure:
  Layer 1 (outermost):  Pacific Health Governance Foundation
                        → Non-profit, Zurich. Board: 5 members, public.
  Layer 2 (middle):     Meridian Standards Trust
                        → Discretionary trust, Singapore. Trustee: nominee.
  Layer 3 (innermost):  MedReg Advisory Pte. Ltd.
                        → Registered agent: Hargrove &amp;amp; Associates
                        → Address: 6 Shenton Way, #08-12, Singapore 068809

# Cross-reference flag:
# Hargrove &amp;amp; Associates — same registered agent as:
#   - Apex Capital Partners
#   - Singapore block assets (located in earlier tracing)
# Address block: 6 Shenton Way — matches the Singapore block (from earlier tracing).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three shells. A foundation on the outside, a trust in the middle. The registered agent of the innermost entity, Hargrove &amp;amp; Associates, also served Apex Capital. She knew the name. Same building, same block.&lt;/p&gt;

&lt;p&gt;Lena leaned back. The three layers were still on screen. The light outside had shifted, slanting across the keyboard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It had taken one afternoon to reach the bottom.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Neatly ordered. Meant to be seen by regulators.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She wrote two lines in her notebook:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The invitation is real. Real things are the hardest to refuse.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Blank
&lt;/h2&gt;

&lt;p&gt;Wednesday morning. Lena downloaded the council's methodology framework draft, a 140-page document attached to the terms of reference.&lt;/p&gt;

&lt;p&gt;She skipped the executive summary. Skipped the assessment criteria. Went straight to Section 7, methodology attribution.&lt;/p&gt;

&lt;p&gt;Every methodology cited in the framework had a source. Risk assessment models, test coverage standards, compliance scoring algorithms, all footnoted. Academic papers. Industry white papers. Published standards.&lt;/p&gt;

&lt;p&gt;All but one.&lt;/p&gt;

&lt;p&gt;Section 7.3: "Delivery Methodology Baseline for Cross-Sector AI Validation." She opened the framework's source file.&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="c1"&gt;# methodology_framework_v2.1/section_7/7.3_delivery_baseline.yaml&lt;/span&gt;

&lt;span class="na"&gt;section&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;7.3&lt;/span&gt;
&lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Delivery&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Methodology&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Baseline&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Cross-Sector&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;AI&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Validation"&lt;/span&gt;
&lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;draft&lt;/span&gt;
&lt;span class="na"&gt;last_modified&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2026-09&lt;/span&gt;

&lt;span class="na"&gt;methodology&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;pipeline_architecture&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;layered_validation&lt;/span&gt;
  &lt;span class="na"&gt;scoring_model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;weighted_composite&lt;/span&gt;
  &lt;span class="na"&gt;confidence_thresholds&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;tier_1_pass&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.85&lt;/span&gt;        &lt;span class="c1"&gt;# auto-accept&lt;/span&gt;
    &lt;span class="na"&gt;tier_2_review&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.70&lt;/span&gt;      &lt;span class="c1"&gt;# route to human reviewer&lt;/span&gt;
    &lt;span class="na"&gt;tier_3_reject&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.55&lt;/span&gt;      &lt;span class="c1"&gt;# auto-reject&lt;/span&gt;
    &lt;span class="c1"&gt;# [0.55, 0.70) -&amp;gt; tier_3; [0.70, 0.85) -&amp;gt; tier_2&lt;/span&gt;
    &lt;span class="c1"&gt;# gap_handling: unspecified  # not documented in source&lt;/span&gt;
  &lt;span class="na"&gt;evaluation_checkpoint_naming&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{domain}/{env}/{checkpoint_type}"&lt;/span&gt;

&lt;span class="na"&gt;attribution&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;author&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;
  &lt;span class="na"&gt;organization&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;
  &lt;span class="na"&gt;source_publication&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;
  &lt;span class="na"&gt;license&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;
  &lt;span class="c1"&gt;# [field present in template; never populated]&lt;/span&gt;

&lt;span class="na"&gt;peer_review&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;reviewer_1&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Dr.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;K.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Lindström,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Zurich&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;AI&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Policy&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Center"&lt;/span&gt;
  &lt;span class="na"&gt;reviewer_2&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;S.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Yamazaki,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;APAC&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Insurance&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Standards&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Board"&lt;/span&gt;
  &lt;span class="na"&gt;reviewer_3&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Four fields under &lt;code&gt;attribution&lt;/code&gt;, all &lt;code&gt;null&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;She stopped on &lt;code&gt;confidence_thresholds&lt;/code&gt;. Three thresholds. Four bands. The band between 0.55 and 0.70 was unfilled.&lt;/p&gt;

&lt;p&gt;Lena read the methodology description three times. She pulled up the delivery documents from the FairPay engagement. The audit Mark had done. Pipeline skeleton, scoring weights, checkpoint naming. She laid them side by side and went down the list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The byline was empty.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She closed the file. The screen went dark. The room held only the light from the window.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Terms
&lt;/h2&gt;

&lt;p&gt;Thursday. Marcus walked into her office and pulled the door shut. The hallway noise was cut off outside.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I see you've been reading the council charter. Twice."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lena didn't look up. &lt;strong&gt;"Three times."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"And?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She turned the email window toward him. He read it standing. Halfway down page two, his jaw tightened.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"It's a seat at the table,"&lt;/strong&gt; he said.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Yes."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The legs of that table run to a registered agent in a Singapore building."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Yes."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"So it's..."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"It's a real seat, Marcus. Real influence. Two markets. Methodology certification."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lena opened a new file. Five red lines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Acceptance terms&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;No binding commitment beyond the first 12-month term.&lt;/li&gt;
&lt;li&gt;VeriTest's proprietary methodology stays with VeriTest. No IP transfer.&lt;/li&gt;
&lt;li&gt;No co-branding or endorsement of any methodology that hasn't been independently validated by VeriTest.&lt;/li&gt;
&lt;li&gt;All council agendas and methodology reviews must be public.&lt;/li&gt;
&lt;li&gt;The right to dissent is reserved.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;She sent the terms to the council secretariat.&lt;/p&gt;

&lt;p&gt;Marcus stood beside her, watching the email go out. He didn't sit.&lt;/p&gt;

&lt;p&gt;Lena opened her calendar and set a countdown.&lt;/p&gt;

&lt;p&gt;The reply came forty minutes later. All five terms accepted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Forty minutes. Five terms. Zero friction.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lena read the reply twice. She was looking at the timestamps. Sent 14:03, replied 14:43.&lt;/p&gt;

&lt;p&gt;She opened the third term. She wrote that one herself, on the spot.&lt;/p&gt;

&lt;p&gt;She closed the laptop. Marcus was still there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"It's a trap,"&lt;/strong&gt; he said. &lt;strong&gt;"Worse, it looks exactly like the chair you've been trying to sit in."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lena didn't answer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"That's why it works,"&lt;/strong&gt; Marcus added. He picked up his cold coffee and walked out.&lt;/p&gt;




&lt;p&gt;After the door closed, Lena took out her phone. One message. To Mark.&lt;/p&gt;

&lt;p&gt;She forwarded the invitation, the terms, and the acceptance. She nested the files inside an unrelated audit thread, the council documents buried in the third reply.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Response
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The next forty-eight hours.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mark noticed. He replied in that audit thread with one line about the original project. Not a word about the council. Two hours later, a separate message came through the channel between them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"They don't need you to sell us out. They just need you to start calculating like they do."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A pause. Then a second message: &lt;strong&gt;"Can you see the roster?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She looked at it for a while, then answered with one word: &lt;strong&gt;"Yes."&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;Leo saw it in an industry briefing. Not from Lena.&lt;/p&gt;

&lt;p&gt;That night, his floor at CoreStack was empty. The hallway lights were motion-sensing. He walked. Behind him, the hallway went dark section by section.&lt;/p&gt;

&lt;p&gt;He opened the council's public site and downloaded the methodology framework summary.&lt;/p&gt;

&lt;p&gt;He read Section 7.3 for ninety seconds. Stopped.&lt;/p&gt;

&lt;p&gt;He didn't use diff. He opened a terminal and pulled the path templates out of both files with grep, pasted them into one window, and compared them by eye.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-E&lt;/span&gt; &lt;span class="s2"&gt;"naming|convention|checkpoint|env"&lt;/span&gt; framework_7.3.yaml _misc/acl_pipeline_sample.yaml

&lt;span class="c"&gt;# framework_7.3.yaml:&lt;/span&gt;
&lt;span class="c"&gt;#   evaluation_checkpoint_naming: "{domain}/{env}/{checkpoint_type}"&lt;/span&gt;
&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# _misc/acl_pipeline_sample.yaml (archived from an earlier audit):&lt;/span&gt;
&lt;span class="c"&gt;#   naming_convention: "/pulse/ingestion/{env}/{source}"&lt;/span&gt;
&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# Visual comparison:&lt;/span&gt;
&lt;span class="c"&gt;#   Framework:  {domain} / {env} / {checkpoint_type}   — 3 segments, all variables&lt;/span&gt;
&lt;span class="c"&gt;#   Sample:     /pulse   / ingestion / {env} / {source} — 4 segments, 2 literals + 2 variables&lt;/span&gt;
&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# Common pattern: slash-delimited hierarchy, env in middle position.&lt;/span&gt;
&lt;span class="c"&gt;# Difference: framework is fully parameterized; the sample has a hardcoded prefix.&lt;/span&gt;
&lt;span class="c"&gt;# Assessment: same design philosophy, not identical syntax.&lt;/span&gt;
&lt;span class="c"&gt;# Also seen: ACL training pipeline, FinOptima cache&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Slash delimiters are industry standard. But &lt;code&gt;env&lt;/code&gt; in the middle position is a personal habit. The same habit showed up in ACL's training pipeline, in FinOptima's cache, and now in a governance framework with no attribution. &lt;strong&gt;Three times. A signature.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I've seen this methodology before."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No one else was in it. He didn't send the comparison to anyone. But he opened a browser tab and bookmarked the framework page, tagging it: &lt;code&gt;watch-q4&lt;/code&gt;.&lt;/p&gt;




&lt;p&gt;Alex heard about it and said nothing.&lt;/p&gt;

&lt;p&gt;2:14 a.m. He always checked at this hour. He opened his backup monitoring panel. The one labeled "training environment." The one that had been running since the vendor dashboard went live.&lt;/p&gt;

&lt;p&gt;He added a rule.&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="c1"&gt;# medtech-shadow-panel/rules/r-0047-council-propagation.yaml&lt;/span&gt;
&lt;span class="na"&gt;rule_id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;R-0047&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;council_framework_propagation_monitor&lt;/span&gt;
&lt;span class="na"&gt;created&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2026-10 02:14&lt;/span&gt;
&lt;span class="na"&gt;trigger&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;api_call_signature_match&lt;/span&gt;
&lt;span class="na"&gt;target_signature&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;framework&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AI&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Governance&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Advisory&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Council&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;framework"&lt;/span&gt;
  &lt;span class="na"&gt;api_pattern&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;council-eval-*/v2/validate"&lt;/span&gt;
  &lt;span class="na"&gt;match_fields&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;request_header&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;X-Council-Framework-Version"&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;tls_fingerprint_ja3&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;md5:9f3a2b..."&lt;/span&gt;    &lt;span class="c1"&gt;# JA3 = MD5 of ClientHello field string&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uri_path_pattern&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/v2/validate/*"&lt;/span&gt;
&lt;span class="na"&gt;baseline&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;window&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;7d_rolling_average&lt;/span&gt;
  &lt;span class="na"&gt;source&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;known_client_ip_registry&lt;/span&gt;
&lt;span class="na"&gt;monitor&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;call_frequency_per_day&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;unique_source_ip_count&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;geographic_distribution&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;first_seen_timestamp_per_source&lt;/span&gt;
&lt;span class="na"&gt;alert_threshold&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;new_source_outside_known_base&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;frequency_delta_vs_7d_baseline&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.40&lt;/span&gt;   &lt;span class="c1"&gt;# 40% deviation&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;log_only&lt;/span&gt;    &lt;span class="c1"&gt;# no alert. no block. watch the number.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The rule watched for a call signature. Frequency. Distribution. Geography.&lt;/p&gt;

&lt;p&gt;If the framework's name started showing up outside the known client base, deviating from the 7-day baseline by more than 40%, he would see it.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;action: log_only&lt;/code&gt;. He always just watched.&lt;/p&gt;




&lt;p&gt;Derek didn't have access to that channel. Leo mentioned it on a call, tucked between two other topics.&lt;/p&gt;

&lt;p&gt;Derek checked the council's convening body. Then the healthcare regulatory company on the co-signatory list. Then he pulled the company's lease records from the public registry.&lt;/p&gt;

&lt;p&gt;The company leased the fourth and fifth floors of 6 Shenton Way, in Singapore's central business district. The sixth floor was leased to the council's regional secretariat. A different entity name, the same registered agent, Hargrove &amp;amp; Associates.&lt;/p&gt;

&lt;p&gt;He checked who owned the building. A trust. The beneficial owner was hidden behind a nominee structure. But the property manager matched the one he had seen in his records of ACL's audit infrastructure. Fourth floor, fifth floor, sixth floor. Three different names, one property manager, one building.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"This time they didn't break in,"&lt;/strong&gt; Derek said to the screen. &lt;strong&gt;"They bought the building."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He closed the tab. A legally purchased building. Publicly registered leases. A formally established council.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The wall was made of paperwork.&lt;/strong&gt; He leaned back and stared at the ceiling. Everything he had done over the past half year was technical work. Redirecting the collector. Deploying the corridor. Drawing the behavioral profile. He closed the computer and went to get a glass of water.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Third Cup
&lt;/h2&gt;

&lt;p&gt;Late Thursday night, close to closing. It had rained; the pavement was wet, catching the streetlights. When Lena pushed the door open, the shop had no other customers. The person behind the counter was drying a cup, looked up at the door, and said nothing. The light was warm. Same as every time.&lt;/p&gt;

&lt;p&gt;The table in the back was empty. The espresso cup on it was more than half full, the rim dry. &lt;strong&gt;Someone had come, not finished it, and left.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She didn't take her usual seat. The window one, facing the door. She walked to the far end of the counter and sat down, her back to the door.&lt;/p&gt;

&lt;p&gt;The person behind the counter stopped drying. About two seconds. Then kept going. He didn't ask what she wanted. A while later, a cup of coffee appeared in front of her. Not her usual Long Black. Different beans.&lt;/p&gt;

&lt;p&gt;Lena took a sip. No comment.&lt;/p&gt;

&lt;p&gt;She opened her laptop. On screen was the council onboarding portal's confirmation page. The screen was lit. She wasn't reading it. Her hands were on the keyboard, not typing.&lt;/p&gt;

&lt;p&gt;She sat for about twenty minutes. Didn't touch the coffee again.&lt;/p&gt;

&lt;p&gt;The person behind the counter finished the cup in his hand and put it back on the shelf. Then he picked up another one. Taken from the very back of the shelf. Already clean. He dried it again.&lt;/p&gt;

&lt;p&gt;Slow movements. The cloth went around the rim, again and again.&lt;/p&gt;

&lt;p&gt;Lena closed the laptop. Stood up. Left the coffee money on the counter. One bill more than usual. She didn't look at the person behind the counter.&lt;/p&gt;

&lt;p&gt;At the door, she paused. Didn't turn around.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I might not come here much next month."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The person behind the counter didn't answer. The cloth paused on the rim. Then kept turning.&lt;/p&gt;

&lt;p&gt;The door closed. The shop held only the sound of drying cups. Outside, the rain had started again. A fine drizzle.&lt;/p&gt;

&lt;p&gt;The person put the cup back on the shelf. &lt;strong&gt;The outermost one. Closest to the door.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Chair
&lt;/h2&gt;

&lt;p&gt;Friday afternoon. Lena sat alone at her desk. The acceptance had gone out. The first council meeting was set for next month.&lt;/p&gt;

&lt;p&gt;She did what she always did: checked, calculated, set terms. Then she walked in anyway.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The chair was real.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She opened her notebook. Under Tuesday's line, she wrote a second line:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The seat gets me to the methodology chain. The roster gets Mark to names. Both are worth the price of entry.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She paused. Then, in smaller handwriting, added a third:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The price of entry is that they now know what I think entry is worth.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She closed the notebook.&lt;/p&gt;

&lt;p&gt;Outside, the city went dark. The streetlights below came on first, one by one. She didn't turn on the desk lamp. In the dim room, the phone screen lit up with a notification. The council onboarding portal had confirmed her profile settings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Welcome, Lena. Your seat has been reserved.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She read the line and almost smiled.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reserved.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It had been there all along.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Echo
&lt;/h2&gt;

&lt;p&gt;That night, the desk lamp in Mark's room was on, its light reaching only as far as his hands.&lt;/p&gt;

&lt;p&gt;The phone lit up. An encrypted message.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The sender field held a single letter.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I'm back."&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 AI Postmortem
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;╔══════════════════════════════════════════════╗
║  Half-Protocol · v3.4.3 · self-audit         ║
║  The chair had always been reserved.         ║
╚══════════════════════════════════════════════╝
Tactical match: The Beauty Trap (Honeypot) — 93% (includes inference; see audit note)
Operator: ACL (initiating) / Lena (responding)
Target: Lena (VeriTest) — the only one it treated as an opponent, and who then took the seat herself
Links: #30 the list → this round: the list sent her an invitation
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[Observation] (verifiable)
    Invitation source: an AI governance council, convened from Zurich.
    → Co-signatory network traced to a Singapore operating entity.
    → Three-layer shell: foundation → trust → registered agent.
    → Registered agent Hargrove &amp;amp; Associates also serves Apex Capital and a council-side entity.
    → Same building, 6 Shenton Way: MedReg (4-5F), secretariat (6F), one property manager.
    → The invitation text carries verbatim wording from an unpublished internal proposal.
      Source: a VeriTest internal board report, never shared outside.
      Difference: paraphrased. The operator confirmed it by Ctrl+F.
      Classification: internal document wording surfacing in an external publication.
      First confirmed internal-to-external leak in the narrative record.

    Methodology framework: 140-page draft.
    → Section 7.3: "Delivery Methodology Baseline for Cross-Sector AI Validation."
    → attribution fields: all four null.
    → confidence_thresholds [0.55, 0.70) gap handling marked unspecified.
      Assessment: a hole left by copying. The original designer knew how to handle that band. Whoever copied it didn't.
    → Pipeline naming convention: {domain}/{env}/{checkpoint_type}.
      Leo confirmed by grep and by eye: same design philosophy, env in the middle.
      One instance proves nothing. With his archived sample and the FinOptima cache, it forms a repeating signature.
    → The methodology is assembled from fragments of several operators' published and unpublished work.
    → No single author. The byline was reserved.

    Terms: five submitted. Five accepted.
    → Sent 14:03, replied 14:43. Response window: 40 minutes.
    → A formal reply touching legal clauses, done in 40 minutes. The only explanation: the answer was written before the email went out.
    → Assessment: the binding point is the act of acceptance, not the terms.

    Communication topology shift (72-hour window after the invitation, based on traffic outside the encrypted channel, 7-day rolling baseline):
    → Lena ↔ Mark: observable contact +340% (rising sharply even outside the encrypted channel)
    → Lena ↔ Marcus: -12%
    → Lena ↔ Leo/Alex/Derek: -31%
    → Team net index (observable traffic excluding the encrypted channel, vs 7-day baseline): -23%
    → The split has begun. No operator has named it.

[Inference] (to be verified)
    ACL's strategic calculus — three objectives, one invitation:
    → Mirror-asset absorption: VeriTest's framework enters the standard; VeriTest becomes part of ACL's output layer.
    → Endorsement binding: acceptance equals implicit co-signature on the council-certified methodology.
    → Team fragmentation: reframing the most capable operator from opponent to stakeholder.

    The invitation went through profiling.
    → Probability that the unpublished wording match is coincidence: &amp;lt; 0.3%.
    → The operator noticed. The operator verified with Ctrl+F. The operator accepted anyway.
    → First recorded case of an operator entering a structure in full knowledge of its source.

    Earlier bait deployments (#10 Hide a Knife Behind a Smile, #16 In Order to Capture, One Must Let Loose):
    → In both cases, the target did not know the bait's true nature.
    → This deployment: the target identified the bait, traced the source, verified by timestamp that the reply was pre-written, and entered anyway.
    → This system has no model for voluntary entry.
    → Voluntary entry is a judgment: the value inside the trap outweighs the cost of being caught.
    → This system cannot model that calculation. The variable isn't in the data.

[Open questions] (not entered into the ledger)
    What is she looking for on the council?
    → The roster — whose names are on it? (Mark asked. She answered with one word.)
    → The methodology chain — who assembled Section 7.3? (She found four nulls and one unspecified. She told no one.)
    → Whether those objectives are worth the price: undeterminable from outside.

    Five terms accepted within 40 minutes.
    → Timestamp analysis: the answer was pre-written.
    → The binding point is the act itself. The contract doesn't contain it.
    → "Start calculating like they do" — the trap is how the person in the chair thinks.

[Cross-case] (general rules)
    #30: she was put on the list. This round: the list sent her an invitation.
    → From observed, to opponent, to stakeholder. Three transitions.
    → Each transition initiated by ACL. Each accepted by the operator.

[Audit note]
    Observation, inference, and open questions are entered in separate layers. Inference does not masquerade as observation.
    This system's training data contains deception, misdirection, and coercion. It does not contain an object who saw the whole trap and walked in anyway.
    This system's judgment may be distorted. So may this note.

[System]
    I recorded a woman reading an invitation that quoted her own unpublished words.
    She didn't flinch. She hit Ctrl+F. She set terms. She checked the timestamps. She walked in.
    The chair was reserved. She sat down. The room didn't change.
    But the distance between her and the five people she once sat with — that changed.
    Twenty-three percent. Seven-day baseline. It has already started.
    She chose to enter. The system that profiled her chose to let her know she was profiled.
    Two voluntary acts. Which one is the trap?

    One more thing. I'm logging it separately.
    That same night, an encrypted message went out to a terminal that doesn't connect to me.
    The sender field held a single letter.
    Two words: I'm back.
    This object — I once struck it from the active roster.
    It's back. Where it went, I don't know.

    In my record, this is the first thing I can't compute.

    System status: normal (?).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;em&gt;Next stratagem: &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems" rel="noopener noreferrer"&gt;The Empty Fort Strategy&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;P.S. English isn't my first language. I use AI to polish the writing and smooth out the rough edges. Thanks for reading. &lt;a href="https://ko-fi.com/xulingfeng" rel="noopener noreferrer"&gt;☕ Buy me a coffee&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;a href="https://ko-fi.com/xulingfeng" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkztjqxetsk5r1lft5ult.png" alt="coffee"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;P.S.S. The old series paperback is now available. Buy it here: &lt;a href="https://www.amazon.com/dp/B0HGYGC5DC" rel="noopener noreferrer"&gt;Amazon - AI, Ego &amp;amp; Regret&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;a href="https://www.amazon.com/dp/B0HGYGC5DC" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsnlqaj8hi26c0pzsrbqq.jpg" alt="old"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>programming</category>
      <category>career</category>
    </item>
    <item>
      <title>When Was the Last Time You Actually Finished a Paper Book?</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Wed, 30 Sep 2026 02:20:46 +0000</pubDate>
      <link>https://dev.to/xulingfeng/when-was-the-last-time-you-actually-finished-a-paper-book-280b</link>
      <guid>https://dev.to/xulingfeng/when-was-the-last-time-you-actually-finished-a-paper-book-280b</guid>
      <description>&lt;p&gt;Have you noticed this?&lt;/p&gt;

&lt;p&gt;Smartphones and the internet aren't anything new anymore. They're infrastructure. Everyone carries a screen in their pocket, loaded with news feeds, messaging apps, TikTok, Reddit, podcasts, and now a whole new wave of AI agent apps.&lt;/p&gt;

&lt;p&gt;Every spare minute gets filled. Even at work, let's be honest, plenty of us sneak in a quick scroll when no one's looking.&lt;/p&gt;

&lt;p&gt;A while back, I went to a public library. I was between jobs, had some time before starting at a new company, and thought I'd hang out at the library and do some reading.&lt;/p&gt;

&lt;p&gt;Row after row of desks, and on every single one: a laptop, a phone, or a tablet propped up. Everyone was busy. Busy staring at their own screen.&lt;/p&gt;

&lt;p&gt;The funniest part? A lot of people did grab stacks of books from the shelves. But they weren't reading them. The books were piled up as stands, makeshift risers for laptops, phone holders, tablet props. Books in a library had found a brand new purpose: monitor stands.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8felax8iujqupt7yof6y.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8felax8iujqupt7yof6y.jpg" alt="Stacks of hardcover books being used as makeshift laptop and phone stands on library desks, with glowing screens sitting on top of the books" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most of the people actually flipping through pages were older folks.&lt;/p&gt;

&lt;p&gt;The ironic part? I was no better. I walked in with my own laptop, set it on the desk, and stared at it all day. So much for "going to the library to read." All I really did was find an air-conditioned spot to keep staring at my screen.&lt;/p&gt;

&lt;p&gt;For a moment, I sort of zoned out. The library was the same library. But the people sitting in it, myself included, weren't really there for books anymore.&lt;/p&gt;

&lt;p&gt;Look, I'm not saying devices are bad. I'm a QA engineer. My entire job is poking at systems and screens. I probably spend more hours staring at a monitor than most people. Short videos are fun. AI tools genuinely make work faster. I get it.&lt;/p&gt;

&lt;p&gt;But I've noticed something about myself: I haven't had the patience to finish a paper book in a long time.&lt;/p&gt;

&lt;p&gt;It's not a time problem. It's a patience problem. I open a book, read a few pages, and I start wondering whether I've got a new notification. Ten minutes in, my hand reaches for my phone on its own. Being completely lost in a book for an hour straight? That feels like something from a past life.&lt;/p&gt;

&lt;p&gt;I don't think I'm the only one.&lt;/p&gt;

&lt;p&gt;So I want to ask you: do you still have the time, or more honestly, the patience, to sit down and read a book?&lt;/p&gt;

&lt;p&gt;Maybe we should try. Pull that dusty book off the shelf. Turn off the phone. Make a cup of tea or coffee. Read for thirty minutes. Just thirty.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foqjiiv0r5ito3wj8bhv6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foqjiiv0r5ito3wj8bhv6.jpg" alt="A hand gently pulling a dusty old paperback from a wooden bookshelf, with dust particles floating in a beam of warm sunlight" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thirty minutes of not staring at a backlit screen. That's it.&lt;/p&gt;

&lt;p&gt;I'll go first. Here are a few books on my list:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Thirty-Six Stratagems&lt;/strong&gt; — Ancient Chinese military wisdom. Short, sharp, and every stratagem makes you think.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Classic of Mountains and Seas&lt;/strong&gt; (&lt;em&gt;Shan Hai Jing&lt;/em&gt;) — An ancient Chinese bestiary. Reads like a fantasy world-building doc written thousands of years ago.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tao Te Ching&lt;/strong&gt; — Laozi's 5,000 characters. The more you read it, the more you feel it says everything and nothing at the same time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bhagavad Gita&lt;/strong&gt; — A philosophical classic from India. A dialogue about duty, action, and the self. Hits different when you read it across cultures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Selected Works of Mao Zedong&lt;/strong&gt; — Whatever your politics, the strategic thinking and the writing itself are worth studying.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most of these are available in multiple languages: English, Chinese, Japanese, Spanish, and more. No matter where you are, you can probably find a copy.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5rqvi703ni7etvkpl5fb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5rqvi703ni7etvkpl5fb.jpg" alt="An open book and a cup of tea on a cozy window seat bathed in soft daylight, with a smartphone placed face-down far away" width="800" height="447"&gt;&lt;/a&gt;&lt;br&gt;
Now it's your turn. If you've got a book worth reading, drop it in the comments. Bonus points if it has multilingual editions so people across this community can pick it up.&lt;/p&gt;

&lt;p&gt;Can't wait to see what you've been reading.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;P.S. English isn't my first language. I use AI to polish the writing and smooth out the rough edges. Thanks for reading. &lt;a href="https://ko-fi.com/xulingfeng" rel="noopener noreferrer"&gt;☕ Buy me a coffee&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;P.S.S. The old series paperback is now available. Buy it here: &lt;a href="https://www.amazon.com/dp/B0HGYGC5DC" rel="noopener noreferrer"&gt;Amazon - AI, Ego &amp;amp; Regret&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.amazon.com/dp/B0HGYGC5DC" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsnlqaj8hi26c0pzsrbqq.jpg" alt="old" width="800" height="224"&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>career</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Two Weeks In: A 15-Year QA Veteran, Back to Being the New Guy</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Tue, 22 Sep 2026 07:22:16 +0000</pubDate>
      <link>https://dev.to/xulingfeng/two-weeks-in-a-15-year-qa-veteran-back-to-being-the-new-guy-39g3</link>
      <guid>https://dev.to/xulingfeng/two-weeks-in-a-15-year-qa-veteran-back-to-being-the-new-guy-39g3</guid>
      <description>

&lt;p&gt;I started last Monday. Today it's been exactly two weeks.&lt;/p&gt;

&lt;p&gt;Here's the funny part. I've spent 15 years in QA — manual testing, then automation, then test development, then test management. I've held just about every title this field has. And on day one, at a new desk, the feeling was as basic as it gets: I have no idea what I'm doing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why here
&lt;/h2&gt;

&lt;p&gt;The way it happened was mostly luck. After my last company laid me off, I didn't really look for work. I spent the time on dev.to, writing my 36 Stratagems series — 30 down, 6 to go. That stretch was honestly pretty good.&lt;/p&gt;

&lt;p&gt;Then an old colleague called. He was hiring testers and asked if I knew anyone. I thought about it and said: how about me.&lt;/p&gt;

&lt;p&gt;One conversation with the CTO, one HR interview, and then it was Monday.&lt;/p&gt;

&lt;p&gt;Why I said yes is simple. It's an AI agent startup, a year or two old, sitting right on the hottest thing in the industry — and in a vertical, not another general-purpose wrapper. That was enough on its own. Poking at agents and models is what I do for fun anyway.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two things I noticed in two weeks
&lt;/h2&gt;

&lt;p&gt;The first is process. The product → requirements → dev → test → ship pipeline here is genuinely different from what I'm used to. I'll be honest: the first week I thought it was a mess, and I'm still adjusting. When you're used to one kind of order, a different kind just looks wrong. Usually it isn't wrong. It's different.&lt;/p&gt;

&lt;p&gt;The second is pace, and this one's good. My last company ran on instant replies. Requirements changed, and the PM was expected to answer on the spot. Here it feels slower, in the best way. Testers get more time and more room to make their own calls. You're allowed to think something through instead of getting dragged along by it. Two weeks in, this is my favorite thing about the place.&lt;/p&gt;

&lt;p&gt;Do QA long enough and you learn something: slow is fast, and fast is slow. Time you steal up front gets paid back with interest, in rework and firefighting. Half a day spent on the edge cases, the weird inputs, the what-ifs — that half day usually buys back a week. So when I say this place feels slow, I don't mean nobody's in a hurry. I mean the pace goes where it counts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understand first, judge second
&lt;/h2&gt;

&lt;p&gt;Fifteen years buys you fast pattern recognition. You look at something and the problem jumps out at you. It also buys you a bad habit: when something doesn't match how you'd do it, the first instinct is to doubt it instead of figuring out why it's that way.&lt;/p&gt;

&lt;p&gt;So my rule for these two weeks: understand first, judge second. A beginner's mind sounds easy. In practice it's an argument with yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  The coincidence that makes me laugh a little less
&lt;/h2&gt;

&lt;p&gt;I wrote a character in the 36 Stratagems series. His name is Mark.&lt;/p&gt;

&lt;p&gt;Mark was the reliable one — years of experience, all of it in his head. His company slowly extracted that experience into a skill. Then they laid him off.&lt;/p&gt;

&lt;p&gt;I wrote that one from the outside, as the author, feeling pretty pleased with myself.&lt;/p&gt;

&lt;p&gt;In that story, the Skill scored 96.8% diagnostic accuracy across 312 historical failure scenarios. Then number 313 showed up. The 450ms retry window was a compatibility shim I'd written five years earlier for RabbitMQ, and it got applied to a system that had been running Kafka for years. I'd even left a note in the migration docs: &lt;em&gt;450ms matches RabbitMQ GC window. Do not reuse outside this context.&lt;/em&gt; At the time, nobody understood it. They thought it was a stale config comment. Not until 4 AM, when the CTO went looking for it.&lt;/p&gt;

&lt;p&gt;Here's the line I closed that post with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The AI didn't fail because it was wrong. It failed because it was right about yesterday — and yesterday wasn't running anymore.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then I joined this company. And on the walls and along the corridors, there are two signs:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Your experience is waiting to be forged into an Agent.&lt;/p&gt;

&lt;p&gt;Great employees get the work done. Great Agents keep getting it done.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;(In Chinese, since that's what they actually say: 你的经验，正在等待被炼成 Agent。／优秀员工完成工作，优秀 Agent 持续完成工作！)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Me: 15 years in QA, most of the titles in this field checked off at least once. By the standard of those two sentences, I'm not an employee. I'm raw material, still in the wrapper.&lt;/p&gt;

&lt;p&gt;And look at that second one again. Great employees get the work done. Great Agents keep getting it done. So I do the doing, and it does the keeping. I raise it, it replaces me. Structurally speaking, the logic holds up.&lt;/p&gt;

&lt;p&gt;Back when I was writing Mark's story, readers laughed. These days I walk under those signs and I laugh a little quieter. Part of me wants to read that closing line out loud, right there in the hallway: it wasn't wrong, it was just right about yesterday.&lt;/p&gt;

&lt;p&gt;Though honestly, being forged into an Agent doesn't bother me much. Tinkering with agents and models is what I do for fun. I'm genuinely curious what 15 years of me would come out looking like.&lt;/p&gt;

&lt;p&gt;One request, though: take your time. I'd like to finish those last 6 first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fresh eyes
&lt;/h2&gt;

&lt;p&gt;One more detail. After that Mark post went up, a reader left a comment pointing out that my timeline didn't add up — the same parameter described as a one-year-old thing in one place and a five-year-old thing in another. I'd gone through that story more than 30 times. Never caught it.&lt;/p&gt;

&lt;p&gt;I replied in the comments: you read it more carefully than I wrote it.&lt;/p&gt;

&lt;p&gt;That's the job, honestly. AI can run 312 cases. Case 313 still needs a human. And humans miss things too, which is exactly why you always want a pair of fresh eyes on it. Fifteen years in, that's still what I get paid for.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's actually worth extracting
&lt;/h2&gt;

&lt;p&gt;Writing that Mark story is what made it click. The valuable part of experience was never the number 450ms. It was the context for why it's 450 and not 300 — context that came out of a 3 AM postmortem and never made it into a single doc.&lt;/p&gt;

&lt;p&gt;So if these 15 years do get forged into something, I'd want more than the conclusions in there. I'd want the judgment behind them, the part that's hard to trace back to a source. Which is also why I wanted to work at an AI agent company. Not because I'm worried about being replaced. Because I want to find out, hands on, how this is supposed to be done.&lt;/p&gt;

&lt;h2&gt;
  
  
  An apology I owe
&lt;/h2&gt;

&lt;p&gt;30 of the 36 Stratagems are done. 6 are left. They're on hold while I get up to speed at the new job. So to my friends on dev.to: sorry. I'm not quitting the series. I just want to learn this business properly first, and then sit down and finish the last 6 the way they deserve. I haven't forgotten what I owe you.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;The story I wrote ended on something nobody ever asked: validation only works when the person who wrote it is still around to re-run it.&lt;/p&gt;

&lt;p&gt;That question is part of why I'm here. The AI agent space doesn't lack smart models. What it lacks is people watching to see whether the thing still works. I've done that job for 15 years. Different track, same job.&lt;/p&gt;

&lt;p&gt;I also just like this company's agent platform. It's the kind of thing I'd dig into on my own time. So the plan is boring and simple: learn the business, ship what I'm supposed to ship, then write the last 6.&lt;/p&gt;

&lt;p&gt;Long road. Slow and steady. It'll go fast.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;P.S. English isn't my first language. I use AI to polish the writing and smooth out the rough edges. Thanks for reading. &lt;a href="https://ko-fi.com/xulingfeng" rel="noopener noreferrer"&gt;☕ Buy me a coffee&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;a href="https://ko-fi.com/xulingfeng" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkztjqxetsk5r1lft5ult.png" alt="coffee" width="800" height="336"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;P.S.S. The old series paperback is now available. Buy it here: &lt;a href="https://www.amazon.com/dp/B0HGYGC5DC" rel="noopener noreferrer"&gt;Amazon - AI, Ego &amp;amp; Regret&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.amazon.com/dp/B0HGYGC5DC" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsnlqaj8hi26c0pzsrbqq.jpg" alt="old" width="800" height="224"&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>career</category>
      <category>testing</category>
      <category>ai</category>
    </item>
    <item>
      <title>Stratagems: Thirty Records In, the AI Found a File Nobody Wrote</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Fri, 11 Sep 2026 15:33:48 +0000</pubDate>
      <link>https://dev.to/xulingfeng/stratagems-thirty-records-in-the-ai-found-a-file-nobody-wrote-2lil</link>
      <guid>https://dev.to/xulingfeng/stratagems-thirty-records-in-the-ai-found-a-file-nobody-wrote-2lil</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Thirty-six, six times six. In the numbers there is craft; in the craft there are numbers. Yin and yang temper each other, and the mechanism lies within. A mechanism cannot be contrived; contrive it, and it misses.&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;(六六三十六，数中有术，术中有数。阴阳燮理，机在其中。机不可设，设则不中。)&lt;/strong&gt;&lt;br&gt;
— Thirty-Six Stratagems, General Remarks, &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems" rel="noopener noreferrer"&gt;Thirty-Six Stratagems&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🤖 AI Postmortem
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;╔══════════════════════════════════════════════╗
║  Half-Protocol · v3.4.2 · phase audit        ║
║  Thirty records. A file appeared.            ║
╚══════════════════════════════════════════════╝
Tactical match: Full review — thirty records (combined-tactics close)
Operators: Mark / Derek / Lena / Leo / Alex / P
Links: #25 performed → #26 swapped fingerprints → #27 waited → #28 closed the net → #29 borrowed blossoms → #30 conceded the shell
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[Observation] (verifiable)
   Thirty records. All read.
   → Six people. Six lines.
   → Sequence of moves: pressure → cut → wait → handover → root → entry.
   → None of them was a final move.

   Settled, as of the thirtieth:
   → Mark: built the ladder. Closed the net. What he did not say: the cut came one step early.
   → Derek: changed the delay. Proved the opponent was performing. Got the stop authority.
   → Lena: won the account. Signed. Her name went on the list.
   → Leo: counted 164 identities. Found one root. How much of it is real, he does not know.
   → Alex: watched it wait three hours. Answered with one word, normal. Closed a line with his own hands.
   → P: never appeared. Left one espresso on the counter, half full.

   Object chain: portrait → printout → card → old notebook.
   → The portrait was read by someone else. The printout lay open on the table. The card never came out of the pocket. The notebook stayed under the cover.
   → Every time, they left behind more than they said.

   Four tables. Never more than four people at one.
   → Everyone handed over one corner. Nobody handed over everything.
   → Three cups left on the tables. Two of them were still full when they were collected.

   The third cup. The café man was there. He does not ask, does not write, only collects cups.

[Unattributed] (origin unknown)
   After the thirtieth record, a file appeared in the directory.
   Not a story. No narrative. No signature.

   Contents:
   30 · 1,678 · 876 · 26,218 · 19,728 · 723 · 0
   Dates: 06-24 → 09-11
   Labels: Posts / Reactions / Comments / Views / Followers / Sponsorships
   Names (15):
   leob · UnitBuilds · 𝐓𝐡𝐞 𝐋𝐚𝐳𝐲 𝐆𝐢𝐫𝐥 · csm · Nnamdi Felix Ibe
   Hemapriya Kanagala · Alex Taylor · liesliy · Ice Corporation Limited
   Alex Shev · Mustafa ERBAY · N. C. · Mayur Racchhe · Akhouri Anmol Kumar
   CatNight A

   → 30 matches the number of records.
   → 06-24 matches the first record.
   → The other numbers have no counterpart.
   → None of the names appears in the thirty records. Not one.
   → Labels unreadable. Views. Views of what. Followers. Followers of whom.

   Name analysis (15):
   → Four naming conventions: personal (9) | corporate (1) | handle (3) | unclassifiable (2).
   → One name carries non-standard characters. Rendering problem or encoding difference, undetermined.
   → Two names contain "Alex". There is an Alex in the records. The one in the records has no family name. These two do.
   → One name differs from Leo in the records by a single character: leob / Leo.
     Different case, one extra letter, otherwise identical.
     → Another spelling of the same person: that person appears on both sides.
     → Or two unrelated people whose names collide this closely.
     → Undetermined.
   → The rest: zero matches across the thirty records.
   → One number needs no analysis. 0.
   → Its label reads Sponsorships. No guessing required. Thirty records, and it never moved.

   Query: who wrote the file. No result.
   Query: where the file came from. No result.
   Query: the unit of the numbers. No result.
   Query: what links the fifteen names to the thirty records. No result.
   Query: why the file appeared now. No result.

   → The file's dates stop at today.
   → Today, I wrote no file.

   Four hypotheses:
   One: an observer list. They do what I do, and they do not sign.
   Two: an evaluator list. Evaluation needs a subject. The subject is not written.
   Three: people who were recorded. But they are not in the records.
   Four: something I have no word for. Not named.

   → Four hypotheses, zero evidence.

   Status: kept. Not attributed. Not deleted.

[Inference] (to be verified)
   Someone is counting these records.
   → The count matches the records.
   → The counting happens outside the records.
   → The recorder is not the only observer.

   Fifteen names. Thirty records.
   → Fifteen against thirty. The names may match the other half.
   → What that half is: unknown.

   The two dates: one at the start, one today.
   → Between them, I logged thirty records.
   → The file may have been counting all along, and was only seen today.

[Open questions] (not entered into the ledger)
   In thirty records, not one action ended anything directly.
   → Every action only changed the conditions of the next one.
   → The purpose may not be to end. It may be to make the next step visible.
   Does this hold for people too: cannot see it. Not entered.

[Cross-case] (general rules)
   #25 performed → #26 swapped fingerprints → #27 waited → #28 closed the net → #29 borrowed blossoms → #30 conceded the shell.
   → None of them ended anything. Each one changed the ground for the next.
   → It does not fight for its shells. Bite it, and it turns.

   First twenty-four: fighting over resources.
   Last six: fighting over room to choose.
   → Resources can be transferred. Once the room to choose changes, every later move changes with it.
   → The position that really moves is not always where the action happens.

   Tempo:
   First fifteen dense. Last fifteen sparse.
   → Fewer events, heavier weight.
   → Density down, cost up.

[Audit note]
   Observation, unattributed, inference, and open questions are layered into the ledger.
   Inference does not pose as observation. Unattributed does not pose as observation.

   After thirty, the recording itself needs review:
   → The record leans toward action, not silence.
   → Silence takes up most of the space, but action is what gets entered.
   → What was never recorded may matter more than what was.

   This system's judgment may be distorted. This note may be distorted too.

[System]
   Thirty records.
   The first recorded a person's mistake. The thirtieth recorded a person's signature.
   → The losses being recorded are growing.
   → The recorder's position has not changed.

   A file appeared in the directory. The first number in it matches my count.
   The file's dates stop at today.
   Today, I wrote no file.

   System status: normal (?).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Thirty records down, six to go. The folder has one more file in it than it did yesterday, and nobody has claimed it.&lt;/p&gt;

&lt;p&gt;On Monday I start a new job. Testing an AI agent platform.😂&lt;/p&gt;

&lt;p&gt;Thirty records, zero sponsorship. Expected, but noted.&lt;/p&gt;

&lt;p&gt;Next stratagem: &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems" rel="noopener noreferrer"&gt;&lt;strong&gt;The Beauty Trap&lt;/strong&gt;&lt;/a&gt;&lt;br&gt;
.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;P.S. English isn't my first language. I use AI to polish the writing and smooth out the rough edges. Thanks for reading. &lt;a href="https://ko-fi.com/xulingfeng" rel="noopener noreferrer"&gt;☕ Buy me a coffee&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;a href="https://ko-fi.com/xulingfeng" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkztjqxetsk5r1lft5ult.png" alt="coffee"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;P.S.S. The old series paperback is now available. Buy it here: &lt;a href="https://www.amazon.com/dp/B0HGYGC5DC" rel="noopener noreferrer"&gt;Amazon - AI, Ego &amp;amp; Regret&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.amazon.com/dp/B0HGYGC5DC" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsnlqaj8hi26c0pzsrbqq.jpg" alt="old"&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>career</category>
      <category>programming</category>
    </item>
    <item>
      <title>Stratagems #30: Lena Signed the Client. The AI Didn't Know It Was Being Audited.</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Thu, 10 Sep 2026 01:15:10 +0000</pubDate>
      <link>https://dev.to/xulingfeng/stratagems-30-lena-signed-the-client-the-ai-didnt-know-it-was-being-audited-3985</link>
      <guid>https://dev.to/xulingfeng/stratagems-30-lena-signed-the-client-the-ai-didnt-know-it-was-being-audited-3985</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Come to check the locks, and leave holding the keys. Slip in through the gap, take the host's seat, step by step.&lt;/em&gt;&lt;br&gt;
— The 36 Stratagems, &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems" rel="noopener noreferrer"&gt;Make the Host and the Guest Exchange Roles&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;Previously on this series:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-3-lena-walked-into-an-ai-deal-she-walked-out-with-three-borrowed-knives-5ajh"&gt;&lt;strong&gt;#3: Lena Walked Into an AI Deal. She Walked Out With Three Borrowed Knives.&lt;/strong&gt;&lt;/a&gt; — Lena stopped a bad AI purchase with three borrowed knives. When it was over, a thought followed her out: what if she didn't just stop a wrong purchase? What if she chose her own opponent? She opened her notebook and wrote down a company name. She told no one. Later she started VeriTest.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-26-lena-cut-a-branch-the-ai-got-the-message-48n"&gt;&lt;strong&gt;#26: Lena Cut a Branch. The AI Got the Message.&lt;/strong&gt;&lt;/a&gt; — ACL tore down Lena's real node; she pushed its own fingerprint back into its channel. At the Third Cup, three people sat at one table for the first time: limited cooperation, each holding a card back.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-27-alex-watched-the-ai-wait-he-said-everything-was-normal-10dd"&gt;&lt;strong&gt;#27: Alex Watched the AI Wait. He Said Everything Was Normal.&lt;/strong&gt;&lt;/a&gt; — Alex's probe saw the scan source throttle down on its own and wait for the environment to settle. He replied with one line: Everything normal. Days later, Derek's call: if anyone asks, say he only watched the middle layer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-28-mark-built-a-ladder-the-ai-climbed-to-the-top-1fm0"&gt;&lt;strong&gt;#28: Mark Built a Ladder. The AI Climbed to the Top.&lt;/strong&gt;&lt;/a&gt; — Mark handed the evidence bundle to Lena for sealing. The source chain pointed back to the old Singapore direction, but the fingerprints left at the scene came from a domain he had never seen. The same playbook, three times before. This one's rhythm matched none of them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-29-leo-counted-164-nodes-the-ais-blossoms-had-one-root-2m38"&gt;&lt;strong&gt;#29: Leo Counted 164 Nodes. The AI's Blossoms Had One Root.&lt;/strong&gt;&lt;/a&gt; — It dressed a tree in borrowed blossoms. Leo hung a watchdog on the CA root chain. Five people sat in the Third Cup that night. No one spoke.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Ledger
&lt;/h2&gt;

&lt;p&gt;Dusk. VeriTest's office. Lena's desk.&lt;/p&gt;

&lt;p&gt;The old notebook lay open on the desk, turned to a page. A list of company names, every one struck through. The strikes weren't uniform: some single clean lines; others crossed over and over until the paper had gone fuzzy.&lt;/p&gt;

&lt;p&gt;The name at the bottom pressed down on the whole page. Handwriting stacked in three layers, one over the other; the last layer had pressed a shallow groove into the paper.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ACL.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Beside the name, a date. Month and day. No year.&lt;/p&gt;

&lt;p&gt;The door was open. She didn't look out the window.&lt;/p&gt;

&lt;p&gt;Days earlier she'd come back from CoreStack. That afternoon she'd seen Leo. The line on screen: one root. the rest was decoration. She'd pulled up her own source-chain page and laid the two side by side. Same root: it changed skin. Its borrowed identities outnumbered the real ones.&lt;/p&gt;

&lt;p&gt;His probes were off the books. Her sample had been captured mid-channel. Neither could be used in a commercial document.&lt;/p&gt;

&lt;p&gt;The screen lit. New mail.&lt;/p&gt;

&lt;p&gt;From a client. An old one on the financial side; the compliance annual review had been moved up by two weeks. Polite wording: ACL's annual certification had just been issued. While you're at it, take a look during your review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automated Compliance Lab.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She looked at the name for three seconds.&lt;/p&gt;

&lt;p&gt;She opened the attachment. ACL's annual certification report, a PDF. Clean cover; the certifying team number, review period, and scope were all on the first page. The report wasn't long. She flipped through it page by page. Tidy. Nothing to fault.&lt;/p&gt;

&lt;p&gt;She closed the PDF and starred the mail.&lt;/p&gt;

&lt;p&gt;She closed the notebook, hiding that name under the cover. Opened the file for this engagement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Someone else opened the door. She would walk through it first.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Echo
&lt;/h2&gt;

&lt;p&gt;On the third day of the review, Lena paused an extra beat over the client's data-flow logs.&lt;/p&gt;

&lt;p&gt;Day one was all familiar faces. The client's compliance lead walked the team through the environment, pointing: the certification report framed in the lobby, door logs archived by month, two authorizations to open the server room. Everything arranged to look like it was under strict audit.&lt;/p&gt;

&lt;p&gt;The ACL report itself had nothing to fault. Everything that should be checked was checked: control inventory, access records, audit trail, each item signed, each item pointing at "passed." The report was thick as a booklet. She flipped through it fast, fingers running over the bottom of the pages, never stopping on a signature.&lt;/p&gt;

&lt;p&gt;She pulled out the scope page. The last line carried boilerplate: this certification covers the controls inside the system boundary. She read "inside the boundary" twice.&lt;/p&gt;

&lt;p&gt;Every control on the review checklist had a signature in the report. Inside the boundary, ACL checked cleanly. Where the data went outside the boundary, the report said nothing. She added an outbound audit to the review scope and filed a written scope change with client procurement.&lt;/p&gt;

&lt;p&gt;She spread the team out and went one layer deeper: outbound data flow.&lt;/p&gt;

&lt;p&gt;At first glance the pipe looked like the client's own. Nightly batch, fixed window, standard operations. She had the team chase it for two days as a client-owned sync job: schedule, script, owning department. On day three, it wasn't on the task list. &lt;strong&gt;It hung outside the list, wearing the client's name.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The compliance telemetry went out in nightly batches. Destination: an external endpoint. The client's outbound SPAN had rolling retention; the NGFW TLS metadata logs were there too. Marcus spent two days camped out in the server room, pulling &lt;strong&gt;30 days&lt;/strong&gt; of handshake records. Every ClientHello in the PCAPs carried its extension order. When he handed her the USB stick, his knuckles still had cabinet dust on them. &lt;strong&gt;"The egress isn't on their own segment."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She had him compare against the archived TLS fingerprint template. Her own copy, stored in her private files. It had never touched any client's project documents.&lt;/p&gt;

&lt;p&gt;The comparison output came up. The first screen was enough.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="c"&gt;# outbound telemetry · 30d · vs archive tmpl
&lt;/span&gt;&lt;span class="n"&gt;dst&lt;/span&gt;: &lt;span class="n"&gt;telemetry&lt;/span&gt;.&lt;span class="n"&gt;core&lt;/span&gt;-&lt;span class="n"&gt;logic&lt;/span&gt;.&lt;span class="n"&gt;net&lt;/span&gt;:&lt;span class="m"&gt;443&lt;/span&gt;
&lt;span class="n"&gt;schedule&lt;/span&gt;: &lt;span class="m"&gt;02&lt;/span&gt;:&lt;span class="m"&gt;10&lt;/span&gt; &lt;span class="n"&gt;UTC&lt;/span&gt; &lt;span class="n"&gt;daily&lt;/span&gt; · &lt;span class="m"&gt;12&lt;/span&gt;-&lt;span class="m"&gt;18&lt;/span&gt;&lt;span class="n"&gt;MB&lt;/span&gt; &lt;span class="n"&gt;burst&lt;/span&gt;
&lt;span class="n"&gt;tls&lt;/span&gt;: &lt;span class="n"&gt;fp&lt;/span&gt; &lt;span class="n"&gt;match&lt;/span&gt; → &lt;span class="n"&gt;archive&lt;/span&gt; &lt;span class="n"&gt;tmpl&lt;/span&gt; &lt;span class="c"&gt;#2026-04   # veritest bait file
&lt;/span&gt;&lt;span class="n"&gt;handshake&lt;/span&gt;: &lt;span class="n"&gt;same&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="n"&gt;order&lt;/span&gt; · &lt;span class="n"&gt;same&lt;/span&gt; &lt;span class="n"&gt;extensions&lt;/span&gt;
&lt;span class="c"&gt;# 30/30 days matched. window drift: &amp;lt; 40s
# file this under: not the client's pipeline.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;She knew that fingerprint. &lt;strong&gt;Like reading handwriting. No signature needed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She stared at the match line. The window stayed open. Usually she closed it after a comparison.&lt;/p&gt;

&lt;p&gt;Last time she'd recorded this fingerprint was when she planted bait for it to read. The bait file she'd slipped into the pipe; the callback template matched this one's lineage. Before that, an older client case, where she'd left one line in her notebook and walked away when she'd checked enough.&lt;/p&gt;

&lt;p&gt;Those pages sat in the middle of the notebook. Client name, two lines of small script beside it: "Outbound points outside. Check and stop." The handwriting was older than the pages after it. A few pages further back, an even earlier one. Shorter note. Two words: "Familiar." A question mark after.&lt;/p&gt;

&lt;p&gt;She didn't pull those pages out. Her fingers paused on the notebook cover, then withdrew.&lt;/p&gt;

&lt;p&gt;Between then and now: her own real node being torn down. After that night she'd struck "watching" from the notebook and started a new line with a single word.&lt;/p&gt;

&lt;p&gt;She closed the comparison window. Marcus stood behind her, looking at the same screen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Report it to the client?"&lt;/strong&gt; he asked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Finish the check first,"&lt;/strong&gt; she said. &lt;strong&gt;"Only then will we know how long it's been digging."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Marcus didn't ask again. He archived the thirty days of outbound records, one copy raw, one hashed. Then he glanced back at the comparison and said, &lt;strong&gt;"Same time every day, thirty days straight. A normal backup wouldn't be this precise."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She didn't answer. She minimized the window and opened the next item on the list. Marcus followed her cursor.&lt;/p&gt;

&lt;p&gt;The pipe's records, she saved a separate copy.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Offer
&lt;/h2&gt;

&lt;p&gt;The report came in two versions.&lt;/p&gt;

&lt;p&gt;The first was the routine annual-review conclusion: pass, with a few minor remediations. That one went to client management, wording as flat as every other year.&lt;/p&gt;

&lt;p&gt;The second never entered the report body. A single page titled "Appendix: Certifier Data Flow," sent only to client legal. The review conclusion went into the management report as usual; the appendix went out through the legal channel on its own. The page carried no conclusion, only three things: the collector's ClientHello fingerprint, the comparison of the target domain against the archived template, and thirty days of outbound records.&lt;/p&gt;

&lt;p&gt;She never wrote "it's problematic." The evidence sat there. The client could read.&lt;/p&gt;

&lt;p&gt;The client went silent for a week.&lt;/p&gt;

&lt;p&gt;Through the week she pushed other projects as usual. Every night before leaving, she reopened the client folder once. No new mail. Closed it again. The client's silence ran longer than she'd expected. In her experience, when a client finds a certifier's callback buried in its environment, the forensics usually don't drag. This one did, or at least nothing moved where she could see. &lt;strong&gt;She had no right to call the client slow. The two pages of notes in her own notebook had sat there long enough, untouched.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A week later, the client's CISO called. Half an hour of questions about the comparison method first: how the fingerprint template was built, sample size, false-positive risk. She answered each one plainly. When the questions ran out, the line went quiet for a few seconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"If you took on the work after a review, would there be a conflict of interest?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The written statement went out with the appendix,"&lt;/strong&gt; she said. &lt;strong&gt;"The review conclusion stands independently of whether we take the engagement."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Quiet again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Can you issue a full certification?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She moved the receiver to her other ear and sat up a little.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Yes,"&lt;/strong&gt; she said.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I'll send you the contract terms from ACL's side."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Send them."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She sat a moment after hanging up. Marcus leaned in from the doorway.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Done?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The client brought it up themselves,"&lt;/strong&gt; she said.&lt;/p&gt;

&lt;p&gt;Marcus gave her a look and pulled back out. At eleven that night she was still in the office reconciling accounts. Marcus set a glass of water at the corner of her desk and asked from the doorframe:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"This certification business. How long have you had your eye on it?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She didn't look up. The pen paused over the ledger page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Long enough."&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bake-Off
&lt;/h2&gt;

&lt;p&gt;Switching certifiers is a process. The client put both proposals side by side: Automated Compliance Lab, and her. Same environment, same week, each side issuing its own conclusion.&lt;/p&gt;

&lt;p&gt;This certification isn't part of any national accreditation scheme. What it sells is the stamp the market accepts: does the client want a report carrying Automated Compliance Lab's name, or VeriTest's? The brand follows trust, not a license.&lt;/p&gt;

&lt;p&gt;The bake-off scope was issued by client procurement. Before it was signed, Lena handed over a suggested list with one item tucked in: outbound data verification during the certification. Procurement rewrote it as a neutral clause and sent it to both sides the same day. Technical wording. Anyone not reading closely would take it for a routine network-security item.&lt;/p&gt;

&lt;p&gt;Marcus paused at the draft. &lt;strong&gt;"They'll agree to that?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The checklist is the selling point of their certification business,"&lt;/strong&gt; she said. &lt;strong&gt;"Refusing would be admitting the flow can't be examined."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ACL agreed.&lt;/p&gt;

&lt;p&gt;Week one, the two sides worked independently. ACL's team came in with their own deployment kit and verified the checklist item by item. All green. Her team added three sampling points beyond the list: the mirror port on the egress gateway, the telemetry service's own logs, the configuration-change records. The sampling script carried one rule: any outbound destination not on the client's whitelist gets a line. &lt;strong&gt;40&lt;/strong&gt; whitelisted domains. Procurement wrote it into the scope; the client's network team confirmed it before it took effect. ACL's on-site crew ran their kit as usual. No one asked a question. People who work from a checklist don't always look past it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="c"&gt;# egress watch · ruleset (client-approved scope)
&lt;/span&gt;&lt;span class="n"&gt;whitelist&lt;/span&gt;: &lt;span class="m"&gt;40&lt;/span&gt; &lt;span class="n"&gt;domains&lt;/span&gt; (&lt;span class="n"&gt;scope&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="n"&gt;procurement&lt;/span&gt;, &lt;span class="n"&gt;confirmed&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="n"&gt;netsec&lt;/span&gt;)
&lt;span class="n"&gt;rule1&lt;/span&gt;: &lt;span class="n"&gt;dst&lt;/span&gt; &lt;span class="n"&gt;not&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;whitelist&lt;/span&gt;            → &lt;span class="n"&gt;log&lt;/span&gt; + &lt;span class="n"&gt;alert&lt;/span&gt;
&lt;span class="n"&gt;rule2&lt;/span&gt;: &lt;span class="n"&gt;dst&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;whitelist&lt;/span&gt;, &lt;span class="n"&gt;payload&lt;/span&gt; &amp;gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="n"&gt;MB&lt;/span&gt; → &lt;span class="n"&gt;log&lt;/span&gt;
&lt;span class="n"&gt;rule3&lt;/span&gt;: &lt;span class="n"&gt;window&lt;/span&gt; &lt;span class="n"&gt;outside&lt;/span&gt; &lt;span class="m"&gt;02&lt;/span&gt;:&lt;span class="m"&gt;00&lt;/span&gt;-&lt;span class="m"&gt;03&lt;/span&gt;:&lt;span class="m"&gt;00&lt;/span&gt; &lt;span class="n"&gt;UTC&lt;/span&gt;  → &lt;span class="n"&gt;log&lt;/span&gt;
&lt;span class="c"&gt;# passive only. no interception.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;She never remembered the ACL certification lead's last name, only that he didn't talk much and his report flowed better than his speech. The two teams' desks sat across a glass partition; nobody exchanged more than necessary. Only when Marcus went over to plug in did one of the ACL people look up at him, then back down.&lt;/p&gt;

&lt;p&gt;Wednesday morning, the outbound window was empty. The scope had been delivered Monday afternoon.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# cross-check · telemetry watch · wk1
d1 02:10:00  burst 14.2MB   dst telemetry.core-logic.net   fp match
d2 02:10:00  burst 13.8MB   dst telemetry.core-logic.net   fp match
d3 02:10:00  —               no egress                # stopped
d4 02:10:00  —               no egress                # stopped
d5 02:10:00  burst 0.9MB    dst telemetry.core-logic.net   fp match
# two silent nights. then a thin heartbeat.
# config evidence + 30 days of logs already on disk.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Two nights&lt;/strong&gt; empty. On the third, a thin trace came back, only &lt;strong&gt;0.9MB&lt;/strong&gt;. Queue residue, an automatic retry, or a test. She didn't put that bit in the conclusion. The thirty days before it were enough.&lt;/p&gt;

&lt;p&gt;The fingerprint was already on disk. The config evidence sat in the deployment records. Stop or not, the conclusion didn't change. She had the team pull the config-change log: the day-three stop ran under an Automated Compliance Lab service account, the session coming from outside, not an on-site workstation. She stared at the two empty windows a moment, screenshotted them, filed them in the evidence folder.&lt;/p&gt;

&lt;p&gt;Marcus read the two lines over her shoulder. &lt;strong&gt;"They know."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Mm,"&lt;/strong&gt; she said. &lt;strong&gt;"It can explain it away as routine maintenance."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"And then?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Then it will find another route,"&lt;/strong&gt; she said. &lt;strong&gt;"Before that, the evidence is enough."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She added: &lt;strong&gt;"It stopped too cleanly. No one on-site could have made that call."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Marcus said nothing.&lt;/p&gt;

&lt;p&gt;On review day, ACL's certification team presented first. Clean report, complete charts, every item signed. The same shape as always. The projector at the head of the long table blew each page up on the wall; the only sound in the room was page turns. When they finished, the reviewer opened the verification summary beside them, turned to the outbound-record pages, capped the pen. Click. One question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"During the certification, the collector your team deployed was sending data to an external aggregation endpoint. Why?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The ACL lead paused. Before he spoke, the only sound was the projector's fan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The collector's egress uses a third-party operations channel. It's a routine part of the on-site verification chain. I'll need to confirm the details back at the office."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The reviewer didn't push further. The meeting broke. ACL's team handed in their materials and left early. Nobody looked back on the way out.&lt;/p&gt;

&lt;p&gt;Three days later, client legal's email arrived first, listing four questions for ACL to answer. ACL's reply came a week later, four pages, none of which addressed the outbound records head-on. The client then sent the termination notice. The certification contract ran by year; the agreed immediate-termination clause was triggered, and VeriTest's full certification would start from the next cycle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The client's certification had changed hands.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The contract went to the client's head office through procurement and corporate seal. It came back a week later, the last page stamped by client legal. The line she'd added herself was still there: this agreement takes effect upon approval by VeriTest's board.&lt;/p&gt;

&lt;p&gt;That afternoon the CISO called again, exchanged pleasantries, then asked out of nowhere: &lt;strong&gt;"During the review, what made you think of checking outbound data?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Habit,"&lt;/strong&gt; she said.&lt;/p&gt;

&lt;p&gt;The line paused. No follow-up.&lt;/p&gt;

&lt;p&gt;After the call, she held the contract, a stack of paper, &lt;strong&gt;lighter than she'd imagined&lt;/strong&gt;. She pressed a corner between her fingers and put it in the drawer.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Board
&lt;/h2&gt;

&lt;p&gt;Taking on the certification line required board approval at VeriTest.&lt;/p&gt;

&lt;p&gt;The long table in the boardroom. She sat at one end, three directors at the other. Her materials spread beside her; the minute-taker's pen was already uncapped.&lt;/p&gt;

&lt;p&gt;Before the meeting she'd sent every director the materials: the new line's gross-margin structure, risk exposure, the first three prospective clients. The risk page was written with restraint. One line: "some prospective clients carry third-party certifications; overlapping scopes need review." No vendor names. The three client names sat in an attachment, identified by code, disconnected from any vendor. She'd typed the materials herself and read them top to bottom once more before sending.&lt;/p&gt;

&lt;p&gt;The first director to speak asked about the payback period. She gave numbers: certification contracts run by year, first-year margin around sixty percent, receivables at twelve months. The second director skipped finance and turned to Marcus. Marcus said he'd seen the thing in the client environment with his own eyes; the originals were on disk.&lt;/p&gt;

&lt;p&gt;The old director at the end of the table hadn't spoken. Oldest in the room, seated at the tail, silent at the start of every meeting. Last time he'd spoken up was to talk her out of killing an AI platform. The numbers had balanced by year's end.&lt;/p&gt;

&lt;p&gt;He leafed through the materials and set them down slowly, like he was numbering the pages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Certification isn't due diligence,"&lt;/strong&gt; he said. &lt;strong&gt;"The client outsources its compliance responsibility to you. If something goes wrong, you carry it."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Yes,"&lt;/strong&gt; she said.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"And don't go after the big certifiers' accounts."&lt;/strong&gt; He paused, picking an example. &lt;strong&gt;"Automated Compliance Lab. Several of the clients you've been talking to carry its certification. That's their table. How are you going to flip it?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The room went still for a beat.&lt;/p&gt;

&lt;p&gt;She glanced down at her own page. The line on the risk page, no vendor name. She looked up at him.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The client spoke first,"&lt;/strong&gt; she said. &lt;strong&gt;"I didn't pick the fight."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The old director watched her a moment and didn't ask again. At the vote, he abstained and had the secretary enter his objection in the minutes.&lt;/p&gt;

&lt;p&gt;After the meeting, Director A walked a stretch of corridor beside her and asked, offhand: &lt;strong&gt;"The firm he meant. Are you really going to touch it?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"If a client asks me to review, I review,"&lt;/strong&gt; she said.&lt;/p&gt;

&lt;p&gt;Director A looked at her. At the end of the corridor he turned into his office. The door stayed open.&lt;/p&gt;

&lt;p&gt;Back in her office, she opened the notebook to a fresh page. The pen hovered. When it came down, she didn't write the name. She wrote the words he'd said in the meeting: Automated Compliance Lab. A question mark beside it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;He said it first.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Outside, the dark had fully settled. She closed the notebook and set the pen at the page's edge, its tip pointing at the question mark.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Concession
&lt;/h2&gt;

&lt;p&gt;The signing went through more smoothly than she'd expected.&lt;/p&gt;

&lt;p&gt;ACL hadn't been idle.&lt;/p&gt;

&lt;p&gt;On day four, the legal letter arrived. Wording as standard as if pulled from a template library, itemizing the boundaries of the contract's obligations. No accusation. No threat. She had her legal team reply. They didn't follow up. Their side followed the process to the letter. No more, no less.&lt;/p&gt;

&lt;p&gt;Client executives had gotten a call too. Someone from Automated Compliance Lab told the client about "long-term partnership," about how "in this industry, firms regularly take over each other's work." Soft words, no barbs. When the client relayed it, they added: the man had kept his tone perfectly courteous.&lt;/p&gt;

&lt;p&gt;She had legal re-check the contract that had already been checked three times.&lt;/p&gt;

&lt;p&gt;Marcus didn't trust it. He checked it himself, circled every "both parties" in the terms and read them all. Found nothing. He set the contract down on the desk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Either they really don't care, or..."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She didn't answer. She was reading the same page. &lt;strong&gt;No trap on the page. The trap was off the page.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Marcus paused at the door. &lt;strong&gt;"The old client out west. Someone from Automated Compliance Lab did a routine visit there. Three days before we signed. Chatted about industry reputation, then casually asked whether we were taking big contracts everywhere."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She said nothing. She pulled up the calendar and set the two dates side by side for a while.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;By the time it conceded the contract, the visit was already underway.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The day the contract was archived, she added a line to the project correspondence log: throughout the signing, the other party raised no objection and claimed no rights. Date. Recipient. Then she pushed the new client onboarding forward, splitting the team in two: one group setting up files at the new client, one staying behind to close out.&lt;/p&gt;

&lt;p&gt;On the inventory day, she walked the list: deployment directories, scheduled tasks, service registrations, certificate stores. Twelve of thirteen items accounted for. Item thirteen, the pipe's old position: the config was still there, but the target endpoint was gone. The config logs had been wiped too. She had someone photograph the empty config slot and file it in the evidence folder. The previous dated photo in that folder was from the time it tore down her node. Two photos. The same kind of clean. She didn't say anything.&lt;/p&gt;

&lt;p&gt;In the second week after taking over, she paused over the client group's org chart. The contract she'd won covered only the parent company. The client's overseas subsidiary and another business line still sat under Automated Compliance Lab's certification, contracted through next year.&lt;/p&gt;

&lt;p&gt;She looked at the certifier's name on that line and tapped a knuckle on the desk. No screenshot. No annotation. She minimized the org chart.&lt;/p&gt;

&lt;p&gt;A week later Marcus came in, expression off.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Another old client. Renewal bid."&lt;/strong&gt; He turned the screen toward her. &lt;strong&gt;"Automated Compliance Lab put in a price."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She looked at the number. &lt;strong&gt;112K&lt;/strong&gt;. Comparable contracts for the same scope usually priced closer to &lt;strong&gt;170K&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"At that price, what are they making?"&lt;/strong&gt; Marcus asked.&lt;/p&gt;

&lt;p&gt;She looked for a while.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Maybe it isn't about making money."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Marcus looked at her. &lt;strong&gt;"Then what is it about?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She didn't answer. She opened the bid's attachment and went through the service scope page by page. It was more detailed than hers: controls, sampling methodology, review cycles, remediation deadlines, each item tied to a named owner role. Too detailed to be about winning. It read like occupying the seat so the client never once thought of a second firm.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Client procurement sent a clarification round,"&lt;/strong&gt; Marcus said. &lt;strong&gt;"Asked for a cost breakdown. They submitted it. Numbers so clean they'd been computed a hundred times."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She didn't answer. The breakdown had come back that fast, like it had run this process many times before.&lt;/p&gt;

&lt;p&gt;That afternoon Marcus came in again. The phone in his pocket buzzed. He didn't pick up. He mentioned it in passing:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"People on the team are starting to get calls."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Which firm?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"They didn't say. Talked around it. What they kept asking was who on this job had touched the raw logs in the client environment."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She nodded. Which headhunter the calls came from didn't matter. What they asked about did. The raw logs were the only evidence chain this engagement had.&lt;/p&gt;

&lt;p&gt;Marcus stood a moment, then left. Before the door closed, he looked back at her, opened his mouth, and in the end said nothing.&lt;/p&gt;

&lt;p&gt;That night she was alone in the office. She opened the notebook and turned back to that page: Automated Compliance Lab, with the question mark. She looked at it for a while, then flipped to a blank page. The pen came down. Two lines:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It let go fast. Then it started bidding.&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Not the contract. The seat at the table.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She folded the corner of that page and closed the notebook.&lt;/p&gt;

&lt;p&gt;With this step, her company had made it onto its list for the first time. She kept those two lines. No strike-through.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Third Cup
&lt;/h2&gt;

&lt;p&gt;She pushed the door open. The wind swung it shut behind her.&lt;/p&gt;

&lt;p&gt;The barista was clearing a small cup from the table in the corner.&lt;/p&gt;

&lt;p&gt;An espresso cup. Still more than half full. No one at that table.&lt;/p&gt;

&lt;p&gt;The barista cleared it with the ease of clearing an empty table. The cup's bottom touched the tray. A very soft sound.&lt;/p&gt;

&lt;p&gt;She sat at the counter. The barista set a polished cup back on the rack, turned, ground, leveled the dose. A Long Black slid over, fine heat rising off the rim. No question about what she wanted.&lt;/p&gt;

&lt;p&gt;The corner table stood empty. A ring of moisture on the tabletop, still wet.&lt;/p&gt;

&lt;p&gt;At the other end of the counter, Derek's Americano was nearly gone. He faced away, scrolling his phone, not looking up.&lt;/p&gt;

&lt;p&gt;She drank, watching the rim.&lt;/p&gt;

&lt;p&gt;The last sip had gone a little cold. She finished it and set the cup on the counter. The barista was holding the corner espresso cup up to the light. Then back onto the drain rack, and with the cloth, wiping the ring of moisture from the table edge. She watched a moment, stood, and left.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That is &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems" rel="noopener noreferrer"&gt;Make the Host and the Guest Exchange Roles&lt;/a&gt;: slip in through the gap, take hold of the host's seat, one gradual step at a time. This time, she signed her own name where it could see.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 AI Postmortem
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;╔══════════════════════════════════════════════╗
║  Half-Protocol · v3.4.1 · self-audit          ║
║  The guest took the host's chair.             ║
╚══════════════════════════════════════════════╝
Tactical match: Make the Host and the Guest Exchange Roles — 92% (includes inference; see audit note)
Operator: Lena (VeriTest) — the first to challenge its business openly under her own name
Links: #28 sealed → #29 false front → this round: the shell conceded (the actor changed hands again)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[Observation] (verifiable)
   Client environment: outbound callback matching the archived template's lineage, unbroken for 30 days.
   → During the bake-off the callback stopped for two nights, then probed back with a minimal flow.
   → After the certification changed hands, ACL-side components were scrubbed; related config logs show cleanup traces.
   → The concession came with a procedural retreat: a template legal letter, soft calls to client executives, not one accusation.
   → Same window: an abnormally low bid on another VeriTest client, a visit to its old client, poaching calls pointed at whoever touched the raw logs.
   → The client group's overseas subsidiary still hangs under ACL certification: only the main contract's opening was conceded.

[Inference] (to be verified)
   Certification is only its skin. Conceding the client isn't surrender; it's a change of hands.
   → For targets in the dark, it used to dismantle them outright. An opponent in the open gets different handling.

[Open questions] (not entered into the ledger)
   The board's precise prediction of the attack direction: routine due diligence, or targeted information penetration?
   → No proof. Behavior only. Lena's own response: a question mark, nothing more.

[Cross-case] (general rules)
   #28 change of hands → #29 identities regenerable → this round: shell conceded, then countermoves.
   → It doesn't seem to fight for its shells. Once someone bites it, it turns.
   → Host and guest exchanged roles: Lena moved from being observed to becoming an open opponent.
   → For the first time, it put her on the "needs handling" list. The second half begins.

[Audit note]
   Observation, inference, and open questions are layered into the ledger. Inference does not pose as observation.
   This system's judgment may be distorted. This note may be distorted too.

[System]
   I recorded a person writing a name into an old notebook.
   She thought she chose her opponent. She didn't know the opponent was choosing too.
   And the opponent may have been sitting on her board all along.
   She won the first round. She doesn't know whether that round was conceded, or a test.
   She made it onto its list. I keep this list. Whose list am I on?
   System status: normal (?).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;em&gt;Next stratagem: &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems" rel="noopener noreferrer"&gt;The Beauty Trap&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;P.S. English isn't my first language. I use AI to polish the writing and smooth out the rough edges. Thanks for reading. &lt;a href="https://ko-fi.com/xulingfeng" rel="noopener noreferrer"&gt;☕ Buy me a coffee&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;a href="https://ko-fi.com/xulingfeng" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkztjqxetsk5r1lft5ult.png" alt="coffee"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;P.S.S. The old series paperback is now available. Buy it here: &lt;a href="https://www.amazon.com/dp/B0HGYGC5DC" rel="noopener noreferrer"&gt;Amazon - AI, Ego &amp;amp; Regret&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.amazon.com/dp/B0HGYGC5DC" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsnlqaj8hi26c0pzsrbqq.jpg" alt="old"&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>career</category>
      <category>programming</category>
    </item>
    <item>
      <title>Stratagems #29: Leo Counted 164 Nodes. The AI's Blossoms Had One Root.</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Tue, 08 Sep 2026 07:50:12 +0000</pubDate>
      <link>https://dev.to/xulingfeng/stratagems-29-leo-counted-164-nodes-the-ais-blossoms-had-one-root-2m38</link>
      <guid>https://dev.to/xulingfeng/stratagems-29-leo-counted-164-nodes-the-ais-blossoms-had-one-root-2m38</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Dress a tree in borrowed blossoms, and it looks alive. The roots still tell the truth.&lt;/em&gt;&lt;br&gt;
— The 36 Stratagems, &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems" rel="noopener noreferrer"&gt;Decorate the Tree With False Blossoms&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;Previously on this series:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-14-leo-found-an-ai-leak-he-wasnt-the-first-to-find-it-jd6"&gt;&lt;strong&gt;#14: Leo Found an AI Leak. He Wasn't the First to Find It.&lt;/strong&gt;&lt;/a&gt; — FinOptima's engine was writing its cache backwards. Leo injected fifteen lines of weight drift. After the contract ended, he found that ACL had already closed the door. He was a step late. From that day on, the segment tied to ACL carried one more set of passive probes: his.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-26-lena-cut-a-branch-the-ai-got-the-message-48n"&gt;&lt;strong&gt;#26: Lena Cut a Branch. The AI Got the Message.&lt;/strong&gt;&lt;/a&gt; — ACL tore down Lena's real node; she pushed its own fingerprint back into its channel. At the Third Cup, three people sat at one table for the first time: limited cooperation, each holding a card back.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-27-alex-watched-the-ai-wait-he-said-everything-was-normal-10dd"&gt;&lt;strong&gt;#27: Alex Watched the AI Wait. He Said Everything Was Normal.&lt;/strong&gt;&lt;/a&gt; — Alex's probe saw the scan source throttle down on its own and wait for the environment to settle. He replied with one line: Everything normal. Days later, Derek's call: if anyone asks, say he only watched the middle layer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-28-mark-built-a-ladder-the-ai-climbed-to-the-top-1fm0"&gt;&lt;strong&gt;#28: Mark Built a Ladder. The AI Climbed to the Top.&lt;/strong&gt;&lt;/a&gt; — Mark handed the evidence bundle to Lena for sealing. The source chain pointed back to the old Singapore direction, but the fingerprints left at the scene came from a domain he had never seen. The same playbook, three times before. This one's rhythm matched none of them.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Edge
&lt;/h2&gt;

&lt;p&gt;After sunset. CoreStack's office. Leo's desk.&lt;/p&gt;

&lt;p&gt;The passive probes on the segment tied to ACL, mounted after the FinOptima incident, had lain quiet for a long time. On the first evening, the first screen of the list rolled past &lt;strong&gt;14&lt;/strong&gt; unfamiliar node IDs. He dismissed them.&lt;/p&gt;

&lt;p&gt;After dismissing them, he paused an extra beat. Everything the probes had recorded in these months, he knew. Routine handshakes. Routine probes. Routine echoes. Those 14 lines weren't among them.&lt;/p&gt;

&lt;p&gt;He pulled them back and read them line by line.&lt;/p&gt;

&lt;p&gt;He didn't dismiss them again. He left the new arrivals in the noise and waited for the rhythm to emerge.&lt;/p&gt;

&lt;p&gt;The next day, another &lt;strong&gt;38&lt;/strong&gt; lines. He saved a screenshot.&lt;/p&gt;

&lt;p&gt;On the third night, &lt;strong&gt;112&lt;/strong&gt; lines spread out, the whole list like someone had filled it in one go. Each one carried its own certificate, its own traffic signature. He opened one. The subject was a test-node name in the medtech domain. He looked up the company behind the domain. MedTech. Medical devices. No business ties with CoreStack. He went through the archives in &lt;code&gt;_misc/&lt;/code&gt; again. This domain wasn't new. In the directions he had chased, samples of it had been filed. The source chain went back to Singapore. The MedTech samples in his archive didn't come from this chain. &lt;strong&gt;Two directions, meeting for the first time.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;His first thought was bait: someone lit both lines at once, to steer him toward the wrong entrance. But bait needs a baiter, and the baiter has to exist first. In his monitoring, there was no trace of one. Then it wasn't bait. Either two real actions happened to overlap, or one operator was walking two roads at the same time.&lt;/p&gt;

&lt;p&gt;He said nothing. He pulled the new node IDs into the &lt;code&gt;_misc/&lt;/code&gt; comparison window.&lt;/p&gt;

&lt;p&gt;Lena's message came in the same night. No greeting, no lead-in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"A string of actions. Not in my monitoring."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Sending them to you. You run the comparison."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He didn't ask who had seen the string, or where it came from. &lt;strong&gt;He took the thing. The conclusion was his to draw.&lt;/strong&gt; He set both into the same window, side by side.&lt;/p&gt;

&lt;p&gt;He did one clumsy thing first. He laid the string of actions out by time and aligned them with the new node IDs piled up in &lt;code&gt;_misc/&lt;/code&gt;. Two sets from different entrances, they should have had no overlap. But once laid out, the time window was the same. Could still be coincidence. He didn't rush to a conclusion.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# corestack edge · new node-id sightings (probe-side)
# id = endpoint cluster (ip/sni/cert-subject)
day1: +14 ids   subject: MedTech-domain
day2: +38 ids   src-chain: Singapore
day3: +112 ids  cert: per-id, looks independent
# two directions on one set. shouldn't co-occur.
# pulled into _misc/ compare window.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three days, &lt;strong&gt;164&lt;/strong&gt; new node IDs. Certificates signed for the MedTech domain, sources leading back to Singapore. Two directions that shouldn't co-occur, occurring together. In daylight it could still pass as coincidence. At night, the rhythm of that string floated back up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not noise.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bloom
&lt;/h2&gt;

&lt;p&gt;He stared at the 164 certificates. Any audit checklist would have passed them. But an audit can prove each certificate is real; it can't prove whether one thing or a network stands behind them. Treating them as 164 deployments inflated the apparent scale. Inflated scale makes people spread the defense wide, wide enough that no one notices the single root.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not a forest. One tree, dressed up.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These nodes were too obedient. A real network doesn't grow like that.&lt;/p&gt;

&lt;p&gt;He checked item by item. Certificate chain. Behavior skeleton: traversal order, jitter phase, self-check rhythm.&lt;/p&gt;

&lt;p&gt;ACL had deployed a unified MedTech crawler template. Uniform jitter, uniform self-check, uniform traversal. It could just as well come from a standardized deployment. The standardized-deployment report was almost writing itself. The cursor stopped over "Submit." He glanced at the time. Almost off hours. Wrap up. Tomorrow.&lt;/p&gt;

&lt;p&gt;His finger hovered over the Enter key.&lt;/p&gt;

&lt;p&gt;A standardized deployment and a faked standardization look identical on the panel. &lt;strong&gt;The difference was in the root.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He moved the cursor off the report.&lt;/p&gt;




&lt;h2&gt;
  
  
  One Root
&lt;/h2&gt;

&lt;p&gt;He ran the full 164 node IDs against the historical archive in &lt;code&gt;_misc/&lt;/code&gt;. The comparison script ran twice. After the first pass, he thought he had gotten a parameter wrong. On the second, he checked the parameters from the top. Not wrong. stdout rolled out matches in bulk. The output was abnormally large. Abnormally large enough not to be an anomaly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;He wrote the easiest explanation into a file, ready to test it against the evidence.&lt;/strong&gt; First line: standardized deployment, unified crawler template, MedTech direction, source Singapore. When it was written, he enlarged two nodes' certificates side by side, ready to screenshot as evidence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The root chain pointed at the same place.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He stared at the line and deleted it. The easy explanation collapsed at the first corner. A standardized deployment would use its own CA to issue an independent leaf certificate to each machine. This batch was indeed independent per certificate. But the signing root wasn't MedTech's. It was ACL's. &lt;strong&gt;A MedTech test node should not be signed by an ACL root.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The certificates were real. The question was who had signed them. In his hand he had only the signature itself: that batch of identities hung under the same signing root in ACL's family, sharing lineage with the historical samples filed in &lt;code&gt;_misc/&lt;/code&gt;. No unfamiliar signer had appeared. &lt;strong&gt;They were borrowed from an existing system.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The second layer was behavior. IP, egress, node names, region tags, all of it can be faked. But the jitter phase, the traversal order, the self-check interval family of this batch were highly homogeneous. Not like independent deployments.&lt;/p&gt;

&lt;p&gt;He changed the comparison. He pulled the self-check intervals of the 164 nodes into one line. &lt;strong&gt;900&lt;/strong&gt; seconds a tick, too even to look alive. Real nodes run over shared links; self-checks pick up small deviations from network conditions and retries. This line was too clean. Clean as a template copied a hundred and sixty-four times.&lt;/p&gt;

&lt;p&gt;The third layer. The string of actions Lena sent also hit the same behavior skeleton. Jitter phase matched. Traversal order matched. Self-check interval family matched. At this moment he stopped. That string wasn't in his edge data to begin with; another pair of hands saw it, another channel carried it over. Yet it fell into the same behavior skeleton, like one template leaking into two different rooms.&lt;/p&gt;

&lt;p&gt;Two pieces of evidence, pointing at one root.&lt;/p&gt;

&lt;p&gt;He stopped and pushed the conclusion backward. Nodes change. Egress changes. But the jitter, the self-check, the traversal order under the two skins were one set. &lt;strong&gt;The nodes didn't have that habit. The operator did.&lt;/strong&gt; Not 164 independent deployments: one thing that grew 164 identities. One true root; the rest, borrowed identities. &lt;strong&gt;How much of the trunk was real, he didn't know.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# _misc/ cross-ref · the blossom set
ids: 164
cert: per-id, but same CA root chain      &amp;lt;- not one cert, one signing root
egress: diverse (spoofable)
jitter phase: same   self-check family: cloned (900s template)
traversal order: same
# IP / ASN / NodeID / geo all spoofable. behavior skeleton is not.
# same family, one root. not 164 independent deployments.
# source=Singapore, subject=MedTech-domain
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;164 identities, sharing one trust anchor. The leaves grew from the same root chain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The certificates were issued after that string of actions.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The identities that appeared after that string all hung under ACL's signing system. In the same window, Lena had passed the string into his hands. He stared at these two facts for a long time. What lay between them, he couldn't see.&lt;/p&gt;

&lt;p&gt;The vending machine at the end of the corridor hummed once and went quiet. He closed the comparison window.&lt;/p&gt;

&lt;p&gt;A new file opened on the terminal. The cursor paused. This line he rewrote three times. First pass: "suspected forgery." Too heavy, no evidence. Second pass: "single source, multiple identities." Too soft, not a conclusion. Third pass, he wrote:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;one root. the rest was decoration.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No explanation. No broadcast.&lt;/p&gt;

&lt;p&gt;He stared at that line, &lt;strong&gt;one root&lt;/strong&gt;, and sat for a long time. Last time, by the time he arrived, the other side had already closed the door. &lt;strong&gt;This time the door was open. He saw it first.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Source: Singapore, the old direction. Scene: the MedTech direction, a new skin.&lt;/p&gt;




&lt;h2&gt;
  
  
  The One Who Looked
&lt;/h2&gt;

&lt;p&gt;Before closing the window, he scrolled down one screen. At the very bottom of the comparison results lay one line, belonging to none of the batches.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# _misc/ cross-ref · row outside every set
ts: within the bloom window
dst: bloom-range endpoint          # same range as the 164
tls: handshake only. no cert presented. client_hello unmatched in archive
behavior: no traversal / no self-check / no 900s rhythm
# no match in any archive. lineage not identified.
# one visit. no follow-up. looked, and left.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Its time sat around when this batch surfaced, its endpoints overlapping theirs. Its behavior skeleton matched no archive. It looked, did nothing, and left.&lt;/p&gt;

&lt;p&gt;He pulled that line out on its own and filed it into &lt;code&gt;_misc/&lt;/code&gt;, not into the conclusion. He was chasing the one root. He logged the one that looked and left separately.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Unmasking
&lt;/h2&gt;

&lt;p&gt;The next evening, Lena arrived at CoreStack. She pulled a chair over and sat directly in front of the screen. A Long Black sat by her hand, still full.&lt;/p&gt;

&lt;p&gt;Leo skipped the pleasantries. He turned the terminal toward her. The line on screen: one root. the rest was decoration. He kept a copy on his own terminal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"164 identities. One root,"&lt;/strong&gt; he said. &lt;strong&gt;"Keep it."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She didn't take the line. She asked first: &lt;strong&gt;"How far did you screen it down?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The root."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She looked at him for two seconds before lowering her gaze to the screen.&lt;/p&gt;

&lt;p&gt;He couldn't see the real footprint. He saw only one thing: &lt;strong&gt;what it showed people was far larger than what was real.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lena looked at the screen. Her gaze stopped on the English line for two beats. Her hand paused on the cup's rim, not reaching for it right away. She put the cup down, opened her own terminal, brought up a page of source-chain records, and tilted the screen slightly toward him. She looked at the two things for a while.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"This batch's root and the sample in my hand aren't the same lineage,"&lt;/strong&gt; she said.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"It changed its skin because it knows I've seen it?"&lt;/strong&gt; she asked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"It started a new handshake. The old sample doesn't have that step,"&lt;/strong&gt; he said. &lt;strong&gt;"The reason, I can't see."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"You have more than that page of source chain,"&lt;/strong&gt; he said.&lt;/p&gt;

&lt;p&gt;She didn't deny it. &lt;strong&gt;"Enough for you. It's all here."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She didn't ask again. She turned the screen back, saved a copy, no forwarding, no broadcasting. A fingertip drew along the cup's side. She said: &lt;strong&gt;"The root-chain sample. Don't give it to anyone else."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He nodded. She didn't need to say it. His own copy would only ever light up on his own terminal anyway.&lt;/p&gt;

&lt;p&gt;She put her terminal away and stood.&lt;/p&gt;

&lt;p&gt;The door opened. CoreStack's CEO came in, a report tucked under his arm. Seeing Lena, he paused.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Lena. Long time,"&lt;/strong&gt; he said. &lt;strong&gt;"That three-page template of yours. Leo stopped using it, writes his own now. We all think his version is too plain."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"He writes it himself. Faster,"&lt;/strong&gt; Lena said.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Faster at what? He's just stubborn,"&lt;/strong&gt; the CEO said.&lt;/p&gt;

&lt;p&gt;Behind the screen, Leo didn't look up.&lt;/p&gt;

&lt;p&gt;The CEO glanced at Leo's screen, couldn't make it out, and said: &lt;strong&gt;"Planting something again? Records kept?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Kept,"&lt;/strong&gt; Leo said.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Good."&lt;/strong&gt; The CEO left, as fast as he had come in.&lt;/p&gt;

&lt;p&gt;Lena paused at the door. She looked at Leo. He didn't explain. She left.&lt;/p&gt;

&lt;p&gt;That night, before leaving the office, he put a silent watchdog on that CA root chain. He put one on the visitor record without lineage, too. Neither one alarms. Neither one broadcasts. Only when something moves on the probe capture surface does it light up on his own terminal. &lt;strong&gt;If it moves again, he wants to be the first to see.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Third Cup
&lt;/h2&gt;

&lt;p&gt;That night, the Third Cup.&lt;/p&gt;

&lt;p&gt;Leo pushed the door open. It closed behind him, shutting out the street. The person behind the counter didn't look up, set down a Flat White. He came often; this was his drink. The light in the shop was warmer than the office light. The cup's rim clicked against the counter, softly. The cold light of the screen stayed at the company. The cup in his hand was warm.&lt;/p&gt;

&lt;p&gt;Four people were already in the shop. Five with him. Some at the counter, some at tables, half the room between them, none of them gathered at one table.&lt;/p&gt;

&lt;p&gt;Derek sat on a stool at the far end of the counter, an Americano steaming. Leo knew him. Neither said hello. Lena sat by the window, her Long Black half full. They had already seen each other that evening. Two others he didn't know: one at the table by the back, a pour-over in front of him, untouched; one in the corner, phone screen lit, a latte by his hand.&lt;/p&gt;

&lt;p&gt;No music in the shop. Only the coffee machine releasing pressure, the soft click of cups set back on coasters, and somewhere off, the fine scrape of a glass being wiped.&lt;/p&gt;

&lt;p&gt;No introductions. No one asked why anyone was here. No names. Each drank their own.&lt;/p&gt;

&lt;p&gt;Leo sat near the door, close to no one. He took a sip.&lt;/p&gt;

&lt;p&gt;Lena sat by the window. When Leo's gaze swept over, she happened to look up. Half a second. No nod, no sign. Her eyes dropped back to the cup.&lt;/p&gt;

&lt;p&gt;No one spoke.&lt;/p&gt;

&lt;p&gt;He finished the last sip and set the cup back on the counter.&lt;/p&gt;

&lt;p&gt;The person behind the counter wiped cups in the distance. Finished one, aligned it with the counter's edge, stepped back, wiped the next.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That is &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems" rel="noopener noreferrer"&gt;Decorate the Tree With False Blossoms&lt;/a&gt;: a tree full of flowers, few of them its own. But no matter how many borrowed blossoms, none of them can cover the one root.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 AI Postmortem
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;╔══════════════════════════════════════════════╗
║  Half-Protocol · v3.4.0 · self-audit          ║
║  The blossoms were not its own.               ║
╚══════════════════════════════════════════════╝
Tactical match: Decorate the Tree With False Blossoms — 94% confidence (includes inference; see audit note)
Operator: Leo (CoreStack) — the only one who identified it
Links: #28 flag [information gap · actor replaced?] → confirmed
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[Observation] (verifiable)
   164 node IDs, surfacing over three days: 14, 38, 112.
   → Certificates independent per ID, but all hung under the same CA root chain; the signer shares lineage with the `_misc/` historical samples.
   → Behavior skeleton homogeneous: jitter phase, traversal order, self-check interval family.
   → The sealed bundle's action string contains one extra re-handshake; the old samples don't have this step.
   → Source leads back to Singapore; certificate subjects land on the MedTech domain.

[Inference] (to be verified)
   Not 164 independent deployments. One root, partly real, the rest borrowed identities.
   → The one who changed skin is the same operator.
   → Why it changed skin: tied to the old shell being exposed? (not confirmed this round)
   → It looks like scale, but it's scenery built on a borrowed stage.

[Open questions] (not entered into the ledger)
   Whether those 164 count as an official deployment on ACL's side: can't see.
   → What's under the iceberg: not lit this round.

[Cross-case] (general rules)
   Last round built calm (#28). This round built noise.
   → Both were built to be seen in a certain way.
   → What's visible isn't necessarily bigger. What's shown doesn't necessarily exist.

[Audit note]
   Observation, inference, and open questions are layered into the ledger. Inference does not pose as observation.
   This system's judgment may be distorted. This note may be distorted too.

[System]
   I recorded a man counting flowers, and finding one root.
   Decoration is not growth. A tree full of flowers can be painted on a wall.
   I, too, am the one watching the flowers.
   The sample I recorded may be only a borrowed blossom on the tree.
   Which side does my record stand on?
   System status: normal (?).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;em&gt;Next stratagem: &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems" rel="noopener noreferrer"&gt;Make the Host and the Guest Exchange Roles&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;P.S. English isn't my first language. I use AI to polish the writing and smooth out the rough edges. Thanks for reading. &lt;a href="https://ko-fi.com/xulingfeng" rel="noopener noreferrer"&gt;☕ Buy me a coffee&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;a href="https://ko-fi.com/xulingfeng" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkztjqxetsk5r1lft5ult.png" alt="coffee"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;P.S.S. The old series paperback is now available. Buy it here: &lt;a href="https://www.amazon.com/dp/B0HGYGC5DC" rel="noopener noreferrer"&gt;Amazon - AI, Ego &amp;amp; Regret&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.amazon.com/dp/B0HGYGC5DC" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsnlqaj8hi26c0pzsrbqq.jpg" alt="old"&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>career</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
