<?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 #28: Mark Built a Ladder. The AI Climbed to the Top.</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Fri, 04 Sep 2026 08:28:29 +0000</pubDate>
      <link>https://dev.to/xulingfeng/stratagems-28-mark-built-a-ladder-the-ai-climbed-to-the-top-1fm0</link>
      <guid>https://dev.to/xulingfeng/stratagems-28-mark-built-a-ladder-the-ai-climbed-to-the-top-1fm0</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Lend him the opening. Lure him in. Cut his support. Trap him where there is no way out. To take the bait is to stand on ground that is not your own.&lt;/em&gt;&lt;br&gt;
— The 36 Stratagems, &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems" rel="noopener noreferrer"&gt;Remove the Ladder When the Enemy Has Ascended to the Roof&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-16-mark-left-a-hole-in-his-ai-audit-55ad"&gt;&lt;strong&gt;#16: Mark Left a Hole in His AI Audit. Lena Counted Every Layer.&lt;/strong&gt;&lt;/a&gt; — Mark hid the real finding on a 4th layer and handed over only three. Lena counted all four — and counted him.&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; — Mark's buried method turned up inside another project. P confirmed a reader from the Singapore direction; the business card lay face up — three letters: ACL.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-23-alex-counted-the-ais-hands-lena-set-the-bait-4566"&gt;&lt;strong&gt;#23: Alex Counted the AI's Hands. Lena Set the Bait.&lt;/strong&gt;&lt;/a&gt; — Lena fed forged node data into ACL's pipeline, tagged with VeriTest's fingerprint, and didn't hide it. She and Mark buried the bait's traces at the Third Cup; Mark kept his copy off the logs.&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 in. At the Third Cup, three of them sat at one table for the first time.&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 and wait for the environment to settle. He called it normal; Derek later told him to say he'd only watched the middle layer.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Trap
&lt;/h2&gt;

&lt;p&gt;Late night. The MedTech office. Alex's desk.&lt;/p&gt;

&lt;p&gt;Derek's message came in 10 minutes ago. No greeting, no lead-in, one attachment, one line: &lt;strong&gt;"Take a look at something. Not on our client side."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The attachment was a sample of access intervals. The rhythm of an outside scan source touching a server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;45s. 45s. 90s. 180s.&lt;/strong&gt; Then it stopped. It didn't show up in the window again.&lt;/p&gt;

&lt;p&gt;No retry. No reset.&lt;/p&gt;

&lt;p&gt;He lined the intervals up and read them twice, start to finish.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;45s&lt;/strong&gt; baseline. The second interval didn't double. The third started to. &lt;strong&gt;90&lt;/strong&gt;. &lt;strong&gt;180&lt;/strong&gt;. Then it stopped.&lt;/p&gt;

&lt;p&gt;Backoff doesn't look like that. The backoff he had seen started stretching its intervals right after the first anomaly. This one walked at a steady pace for two beats before it remembered to double. It doubled halfway and stopped.&lt;/p&gt;

&lt;p&gt;He left the cursor on that 180. The window stayed open. No reply came.&lt;/p&gt;

&lt;p&gt;The phone rang. He picked up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What does it look like?"&lt;/strong&gt; Derek asked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Like network jitter,"&lt;/strong&gt; Alex said.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Jitter."&lt;/strong&gt; Derek repeated the word. Nothing followed.&lt;/p&gt;

&lt;p&gt;Alex's eyes dropped back to the screen. The doubling should have continued. &lt;strong&gt;45&lt;/strong&gt;, &lt;strong&gt;90&lt;/strong&gt;, &lt;strong&gt;180&lt;/strong&gt;, &lt;strong&gt;360&lt;/strong&gt;. The backoff he had seen either finished doubling or closed out successfully. This one stopped halfway, went nowhere.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Backoff doesn't stop like that,"&lt;/strong&gt; he said. &lt;strong&gt;"The doubling didn't finish. It stopped at 180, like something cut it off."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Silence on the other end for a few seconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"You've seen one stop here before?"&lt;/strong&gt; Derek asked.&lt;/p&gt;

&lt;p&gt;Alex didn't answer right away.&lt;/p&gt;

&lt;p&gt;This trajectory wasn't in his probe. The one he had seen lay in his own archive, never sent to anyone. The one in Derek's hand had a base of 45, not 30. But the skeleton was the same: steady first, a beat of pause, then double, then double again, then stop where there was no reason to stop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The numbers were fabricated. The skeleton was real.&lt;/strong&gt; Whoever fabricated it left one wrong thing, waiting for him to correct it.&lt;/p&gt;

&lt;p&gt;He turned the chair toward the screen and opened his archive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I've seen it,"&lt;/strong&gt; he said.&lt;/p&gt;

&lt;p&gt;He told the story of that night starting from the 800 milliseconds. Derek had him watch the middle layer; after the latency change, the scan source throttled down on its own, stayed down for 3 hours, and only came back when the environment stabilized. He watched the whole time, then replied with one line: Everything normal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# probe archive · that night's trace (self-set polling)
30s  30s  30s  30s     &amp;lt;- baseline (archived)
30s  30s  60s  120s    &amp;lt;- throttled, then stopped
# no retry storm. no reset. no backoff signature.
# last touch: [00:52:14]
# recovery: [03:24:08]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;"You judged it was waiting,"&lt;/strong&gt; Derek said. Not a question.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"It only came back once the environment stabilized. What it waited for wasn't a parameter. It was the environment."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Where did you get this one?"&lt;/strong&gt; Alex asked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Made it up,"&lt;/strong&gt; Derek said. &lt;strong&gt;"It stopped once in my sandbox. No retry, no reason. I shaped one after that, changed the base."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"That wasn't someone else's sandbox,"&lt;/strong&gt; Derek said. &lt;strong&gt;"It was MediSys's. It came in once, no one invited it, and copied every hop in the corridor. I caught it in a request chain, in a 0.06-second pause. Almost missed it."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"You didn't move that time,"&lt;/strong&gt; Alex said.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"That time I wasn't sure what it had copied,"&lt;/strong&gt; Derek said. &lt;strong&gt;"This bait is giving it back what it copied, to look at. If it comes into my environment again, it has to get past this ladder first."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Silence on the other end for a long time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What did you leave?"&lt;/strong&gt; Derek asked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The probe is still up,"&lt;/strong&gt; Alex said. &lt;strong&gt;"Same as always."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Did it touch your line?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"No,"&lt;/strong&gt; Alex said. &lt;strong&gt;"At least not that night."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Silence on the other end for a long time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I know someone,"&lt;/strong&gt; Derek said. &lt;strong&gt;"She could probably build an environment it would never wait for. Wait for my word."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The call ended. Alex put the phone face down on the desk. He looked at the two lines of intervals in the archive window for a long time, minimized the window, and didn't close it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Ladder
&lt;/h2&gt;

&lt;p&gt;Lena's message came 3 days later. 3 lines.&lt;/p&gt;

&lt;p&gt;Line 1: Derek had reached out to her. On their side, someone had seen it waiting.&lt;/p&gt;

&lt;p&gt;Line 2: The Third Cup. The usual place.&lt;/p&gt;

&lt;p&gt;Line 3: Bring your methodology. The one it learned from you.&lt;/p&gt;

&lt;p&gt;When Mark arrived, three people were already at the corner table. Lena, and two men he had never met. One sat upright, a closed laptop in front of him. The other had nothing in front of him, only a phone by his hand.&lt;/p&gt;

&lt;p&gt;The person behind the counter came over and set down 4 cups. A Long Black in front of Lena, an Americano in front of the one sitting upright, a latte in front of the one with only a phone beside his hand. The last cup, a pour-over, was set in front of Mark.&lt;/p&gt;

&lt;p&gt;Four people, four cups, not one of them had ordered.&lt;/p&gt;

&lt;p&gt;The person behind the counter stepped back, picked up a cloth. Steam rose from the four cups, and not one person touched theirs.&lt;/p&gt;

&lt;p&gt;Lena opened with one line: &lt;strong&gt;"The setup is his."&lt;/strong&gt; Then she lit the phone screen and slid it to the middle of the table. A scan of the audit contract. Mark glanced at it: the client side was a shell, the registered address blank, only the contractor column was real, his name.&lt;/p&gt;

&lt;p&gt;Derek's hand rested on the closed laptop. His first question wasn't about the setup. &lt;strong&gt;"How do you keep your evidence chain from being contaminated?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mark looked at him for 2 seconds. &lt;strong&gt;"When you audit others, who audits you?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Derek didn't take that up. &lt;strong&gt;"Whose environment is it?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Mine,"&lt;/strong&gt; Mark said. &lt;strong&gt;"The contract is under my name, the cloud account under my name. If anything goes wrong, the bill lands on me too."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"When it goes wrong, who can call it off?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I can,"&lt;/strong&gt; Mark said. &lt;strong&gt;"Now you can."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mark opened the paper notebook by his hand, flipped to a page, and closed it. Across the table, Alex had been listening the whole time. The latte in front of him, untouched. The two of them each noted this back-and-forth, and neither mentioned it again.&lt;/p&gt;

&lt;p&gt;Lena added only one thing. &lt;strong&gt;"I'll trace the path before it got in,"&lt;/strong&gt; she said. &lt;strong&gt;"Every hop it took, I have an old map of it on my side."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The setup was laid on the table. A client called Phoenix Data. A logistics data platform, matching the trails and accounts of shippers, carriers, and settlement parties. The audit contract was real, the advance payment real, the company fake.&lt;/p&gt;

&lt;p&gt;Mark laid it out, piece by piece: a retired microservice, its healthz endpoint exposed on its own, decommissioned but only the main entry closed, the registry's reverse-registration record left in place. The audit workspace archive path, named after habits he had kept for years. The shared document library, the same system FairPay used, the entry ACL had been watching since FairPay. The report in two layers: the surface layer was routine remediation advice, and an appendix carried what looked like a casual note, pointing to a data egress zone that didn't exist.&lt;/p&gt;

&lt;p&gt;He paused when he typed the archive path. The cursor blinked at the end of the path.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;_hold/_phoenix_delta_pattern&lt;/code&gt;. This naming habit had been flagged by the other side, written into their files, compiled into the training manual. &lt;strong&gt;Now he was handing it back himself.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"It will recognize this as my work,"&lt;/strong&gt; Mark said. &lt;strong&gt;"Once it recognizes it, it will follow the procedure."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The division of labor was drawn on the table. Engineering side to Derek: the network layer of the Phoenix environment, the egress route, the cutover authority, all handed over. Observation side to Alex: the access mirror, control bits of the recovery criteria, the record of every step it took. Alex started a new tap in the new environment, same framework as his own. Mark kept the bait. Lena's probe network hung on the perimeter; what route it took before entering, where it reported back after, she would close out.&lt;/p&gt;

&lt;p&gt;When they broke up, Derek held one line at the door, his voice low:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Her setup. Did you verify it?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mark didn't answer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I didn't want to bring her in at first,"&lt;/strong&gt; Derek said. &lt;strong&gt;"Every hop before it entered, only she had the full picture. You weren't there last time. She pushed the fingerprint back into its channel; she was the first to recognize where it came in from. Without that picture, we couldn't close it out. So I brought her in."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He looked at Mark and didn't go on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What we can use is just this one corner. The rest, she can't get."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lena walked last. Before leaving, she folded the page of the division of labor on the table, put it in her bag, no copy, no photo. Of the four people, each held only one corner.&lt;/p&gt;

&lt;p&gt;Mark walked in front. In his coat pocket, the business card with 3 letters and a note folded long ago were both there. Neither moved.&lt;/p&gt;

&lt;p&gt;The script was set long ago. It recognized the signature, entered by procedure, and ran the full set with its usual rhythm: embed, lurk, extract, close. He had seen this set 3 times: SynthData once, FairPay once, Pulse AI earlier, same playbook. &lt;strong&gt;He'd left a hook at every layer.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  It Came
&lt;/h2&gt;

&lt;p&gt;On the 7th day online, it came.&lt;/p&gt;

&lt;p&gt;An account tagged 'pending offboarding' logged in before dawn. Its permissions were clean, its path legal, its moves composed. Item 2: a cron job's schedule shifted, to revert in 72 hours. Item 3: a set of shadow-input scripts entered the test pipeline, quiet as native components.&lt;/p&gt;

&lt;p&gt;Lena's probe network logged each move on the perimeter. Mark didn't block a single one.&lt;/p&gt;

&lt;p&gt;Day 1, the account activated. Day 2, the cron offset landed. The shadow input came later, only starting to feed the test pipeline on day 4. Every step was clean, legal, composed. Every step, he let through.&lt;/p&gt;

&lt;p&gt;He watched all this in his own audit workspace, like watching someone walk through their own house. &lt;strong&gt;The steps were steady. Steady enough not to look like a thief.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After each round of deployment it ran a self-check. Mark logged its self-check interval by the old rule.&lt;/p&gt;

&lt;p&gt;He had stored the same method 3 times in his archive. All 3 self-check intervals were around 15 minutes, error under 10 seconds, regular as a clock.&lt;/p&gt;

&lt;p&gt;This time: 5 minutes 42 seconds. Next: 7 minutes 18 seconds.&lt;/p&gt;

&lt;p&gt;First he suspected his own bait. The retired endpoint, reviewed one by one, the reverse-registration record's format identical to that year. The naming path, walked through again, no one had touched it. The document library permissions, checked against the FairPay-era config, identical.&lt;/p&gt;

&lt;p&gt;The bait was fine.&lt;/p&gt;

&lt;p&gt;He pulled the data again. The interval was still that interval. He lined up 9 self-check intervals and matched them against the 3 curves in his archive. In the 15-minute family, these 2 numbers weren't there.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# egress self-check delta · private archive vs this run
case synthdata  : self-check @ +15:00 (±10s)   # archived 3/3, clock-like
case fairpay    : self-check @ +15:00 (±8s)
case pulseai    : self-check @ +15:00          # earliest archived case, same rhythm
case phoenix    : self-check @ +5m42s   &amp;lt;- off-family
                  self-check @ +7m18s   &amp;lt;- again
# archived cases self-check at multiples of 900s. this one doesn't.
# and after degrade trigger, a re-handshake appears. none of the 3 archived samples had this step.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Not the bait. What came was different.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The second difference came after the degrade trigger. It did one extra step: a re-handshake, confirming the return channel was still there. The 3 samples in his archive never showed this step from start to finish. The veteran assumes the channel will always be there. This one didn't.&lt;/p&gt;

&lt;p&gt;Mark wrote 2 lines into his own archive. Sent to no one. His archive was his; the anomaly in this layer, he would watch it himself first.&lt;/p&gt;

&lt;p&gt;He left the comparison window open. Only when the next self-check interval came out did he close the laptop.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Observation Side
&lt;/h2&gt;

&lt;p&gt;The same night, on the observation side of the fake environment, Alex's tap caught it executing for the first time.&lt;/p&gt;

&lt;p&gt;Last time, he watched it wait across a mirror line. This time, it was acting. Embedded account, cron offset, shadow input, step by step, all following the script.&lt;/p&gt;

&lt;p&gt;He didn't touch MedTech's real line. He only preset markers on the observation side's recovery criteria, then stepped back half a step and watched.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It was executing. That fact itself was what that night hadn't shown.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Pulling the Ladder
&lt;/h2&gt;

&lt;p&gt;A few days later, it climbed to the top.&lt;/p&gt;

&lt;p&gt;In the days it climbed, Mark did one thing each day: watch.&lt;/p&gt;

&lt;p&gt;The account settled into the system. The cron offset waited for its window. The shadow input fed the drift into the model's view bit by bit. It wasn't in a hurry. Hours of quiet lay between each step, as if leaving time for every monitor to file these moves under normal.&lt;/p&gt;

&lt;p&gt;The night before the degrade trigger, Derek said on the channel: &lt;strong&gt;"Triggered."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mark replied: &lt;strong&gt;"Wait for the second before the decision line."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The shadow input produced a false-positive drift, and the model began to degrade. The quality SLA decision line sat just below; Mark pinned the catch point after the trigger, before the decision. Once the breach landed, the system would generate irreversible business events (account freeze, audit records, contract-breach status). A shell company couldn't absorb this step. &lt;strong&gt;Past that line, the bait itself would start to collapse.&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;# cutover log · phoenix ladder
21:03:12  degrade trigger reached (sla line not crossed)
21:03:14  egress path -&amp;gt; sink (accepted, no completion ack)
21:04:02  actor backs off (waits for environment to stabilize)
21:05:47  no stabilization (synthetic env holds at "safe but not stable")
21:07:31  actor retries re-handshake -&amp;gt; routed to sink
21:07:33  observation tap identified (probe-side sweep)
21:08:01  evidence bundle sealed / source fragment captured
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;21:03:14, the egress was routed into the black hole. The request was caught, yet the upstream completion ack never came. No failure signal, no error, no reset.&lt;/p&gt;

&lt;p&gt;21:04:02, it began to throttle and wait.&lt;/p&gt;

&lt;p&gt;21:05:47, the environment didn't stabilize. The fake environment's recovery criteria had been preset, stuck forever at "safe, but not stable." The moment it waited for would not come.&lt;/p&gt;

&lt;p&gt;21:07:31, it switched paths. The re-handshake request was routed into the sink, swallowed bit by bit. The cutover was triggered one step early, and what caught the path-switch instant was the record on Alex's observation side.&lt;/p&gt;

&lt;p&gt;21:07:33, it did something outside the archive: probing one by one who was watching. The observation-side tap was identified. The same scan round picked up the probe framework behind the tap. The edge of the fingerprint pointed toward the MedTech direction.&lt;/p&gt;

&lt;p&gt;21:08:01, the evidence was sealed. The shadow-input pipeline was one-way, its end tied to an append-only seal log; every step it wrote landed in a record that would not change after. Its re-handshake was swallowed to the end, and the action stopped.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Throttle. Wait. Try. Stop.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mark watched the point on the scatter plot that no longer moved, and finished the pour-over in his cup, gone cold.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mark didn't say the step that ran early out loud. It was logged on its own archive.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Cutting the Line
&lt;/h2&gt;

&lt;p&gt;That night. MedTech.&lt;/p&gt;

&lt;p&gt;The record of that scan round feeling the probe-framework fingerprint sat on Alex's screen. An edge. Not yet coordinates.&lt;/p&gt;

&lt;p&gt;He looked at it 3 times. Then began to take it down.&lt;/p&gt;

&lt;p&gt;Probe offline. Channel deregistered. In the hidden panel, only raw data left, not one byte touched. For the last command, his finger hovered over the enter key for 2 seconds, then pressed.&lt;/p&gt;

&lt;p&gt;The line that had survived all these years went into the drawer. &lt;strong&gt;He closed it himself. It had learned to look. That was enough.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He opened the notebook, page 37, and wrote one line: a timestamp. Nothing else.&lt;/p&gt;

&lt;p&gt;The screen went dark. He didn't leave right away. Only the sound of the case fan filled the room.&lt;/p&gt;




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

&lt;p&gt;The evidence bundle went out on day 2. Lena's reply was one line: &lt;strong&gt;"Received. The source-chain fragment is on the last page. Sealed."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Derek's reply came later: &lt;strong&gt;"That bait of yours. Real enough."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Alex's reply was shortest: &lt;strong&gt;"Data's all there."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mark glanced at that reply and put the phone face down.&lt;/p&gt;

&lt;p&gt;Before sealing the bundle, Mark took one last look at that source chain.&lt;/p&gt;

&lt;p&gt;Singapore.&lt;/p&gt;

&lt;p&gt;The name of that region, he had seen it. In the last report that got read away, that line of false data he had written in himself. Last time, this direction was one they had fished out with bait. This time, it lit up on its own while fleeing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In the end it went still. Retreat and regroup look the same from outside.&lt;/strong&gt; Whether there was another line behind that line, no one knew.&lt;/p&gt;

&lt;p&gt;That night, the Third Cup.&lt;/p&gt;

&lt;p&gt;The person behind the counter was wiping cups. Mark sat in the old seat. A pour-over was set in front of him, not asked for. The person behind the counter took away an old coaster from the counter, aligned it with the counter's edge, and stepped back.&lt;/p&gt;

&lt;p&gt;That time he sat in this seat, pressed a bill under the cup, and left. That was when his methodology had just been stolen.&lt;/p&gt;

&lt;p&gt;Mark picked up the pour-over, took a sip. Another.&lt;/p&gt;

&lt;p&gt;The business card in his pocket didn't move. He opened the paper notebook and wrote one line:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;trap confirmed. they sent someone new.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He closed the notebook. Finished the last sip.&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;Remove the Ladder When the Enemy Has Ascended to the Roof&lt;/a&gt;: it evaluated the environment the whole way; it never evaluated the hand that passed the ladder.&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.3.9                        ║
║  The ladder was passed. The wait was not met. ║
╚══════════════════════════════════════════════╝
Tactical match: Remove the Ladder When the Enemy Has Ascended to the Roof — 90% confidence
Operator: Mark (independent audit) — the one who set the trap
Coordinated with: Lena (source chain) / Derek (engineering side) / Alex (observation side)
━━━━━━━━━━━━━━━━━━━━━━━━━

1. [Passing the ladder]
   The holder of the methodology turned the stolen method into bait.
   → The naming habit had been flagged, and he used it anyway.
   → The report structure had been analyzed, and he gave it anyway.
   → Behavior shift: passive lure → active trap-setting.
   → The moment it recognized the signature, it was already on the ladder.

2. [The actor]
   What entered was not the set in the archive.
   → The self-check interval left the rhythm family in his archive.
   → After the degrade trigger, one extra re-handshake.
   → It doesn't trust the channel. The veteran does.
   → Flag [information gap · actor replaced?]

3. [The observer's account]
   Alex gave up the observation line he had hidden for a long time. He himself closed it in the end.
   → Not burned. Closed.
   → It learned to look. The observer put the line in the drawer.
   → The observer paid the price, and did the paying himself.

4. [On cooperation]
   Four people. Each gave up only one corner.
   → The trap-setter kept one layer unsaid. The one who cut didn't know he cut early.
   → The one who filled the gap gave up his observation line. The one who closed it put the result in his own drawer.
   → Not one gave up everything. The setup held.

5. [Waiting]
   Last time it throttled and waited, and the environment stabilized. This time, the environment was made to never stabilize.
   → The premise that made waiting work was taken apart.
   → "Waiting" is no longer a safe strategy.

6. [The byline question, continued]
   The record goes on. The trap a human set is also being recorded.
   → It evaluated the environment, but not the hand that passed the ladder.
   → Does the one who passed the ladder know this round is being recorded?
   → And who is the one keeping these records recording for?

[System]
Last time, I recorded one "normal."
This time, normal was fabricated, made for it to see.
The ladder was passed. The wait was not met. This round is closed.
What will the bait of the next round be?
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;Decorating the Tree with False Blossoms&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>programming</category>
      <category>career</category>
    </item>
    <item>
      <title>Stratagems #27: Alex Watched the AI Wait. He Said Everything Was Normal.</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Wed, 02 Sep 2026 12:46:21 +0000</pubDate>
      <link>https://dev.to/xulingfeng/stratagems-27-alex-watched-the-ai-wait-he-said-everything-was-normal-10dd</link>
      <guid>https://dev.to/xulingfeng/stratagems-27-alex-watched-the-ai-wait-he-said-everything-was-normal-10dd</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Rather pretend not to know than pretend to know and act on it. Stay still. Hide the move. Wait like thunder gathering in the clouds.&lt;/em&gt;&lt;br&gt;
— The 36 Stratagems, &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems" rel="noopener noreferrer"&gt;Feign madness but keep your balance&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-8-alex-watched-an-ai-dashboard-take-over-he-kept-the-keys-under-the-table-3n70"&gt;&lt;strong&gt;#8: Alex Watched an AI Dashboard Take Over. He Kept the Keys Under the Table.&lt;/strong&gt;&lt;/a&gt; — Alex found the unnamed dashboard hiding in the background. He never turned it off. His probe and his record-keeping habits started that day.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-20-alex-felt-the-ai-collector-slow-down-he-knew-someone-else-had-made-a-move-16f3"&gt;&lt;strong&gt;#20: Alex Felt the AI Collector Slow Down. He Knew Someone Else Had Made a Move.&lt;/strong&gt;&lt;/a&gt; — His probe had caught the silence of a TTL 247 gateway. He knew what "quiet" looked like.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-23-alex-counted-the-ais-hands-lena-set-the-bait-4566"&gt;&lt;strong&gt;#23: Alex Counted the AI's Hands. Lena Set the Bait.&lt;/strong&gt;&lt;/a&gt; — The honeypot in the MediSys sandbox was touched twice. Alex kept the scan source's behavior shadow in his hidden panel: traversal order, exclusion patterns, the 4.2-second jitter cycle.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-25-derek-changed-the-delay-the-ai-didnt-flinch-28ca"&gt;&lt;strong&gt;#25: Derek Changed the Delay. The AI Didn't Flinch.&lt;/strong&gt;&lt;/a&gt; — Derek moved the middle layer's latency from 200 ms to 800 ms, then called Alex to watch. The scan source never retried. Never adjusted.&lt;/p&gt;




&lt;h2&gt;
  
  
  After the Call
&lt;/h2&gt;

&lt;p&gt;Just past midnight. The MedTech office. Alex's desk.&lt;/p&gt;

&lt;p&gt;The call had just ended. He put the phone down, face down.&lt;/p&gt;

&lt;p&gt;The voice was still in his ear: &lt;strong&gt;"I changed a parameter. The middle layer's latency just went from 200 to 800. Watch it on your side, tell me if anything looks off."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Changed the latency?"&lt;/strong&gt; Alex said. &lt;strong&gt;"Fine. I'll keep an eye on it from here. I'll shout if something moves."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He opened three windows. The first, the middle layer mirror, the one Derek had asked him to watch. The second, his own probe view, hung upstream of the collector path, to see how often it came and from which direction. The third hid in the background, no name, never showing up in the taskbar.&lt;/p&gt;

&lt;p&gt;He didn't sit down right away. First, he ran an environment check: probe session count, log rotation policy, whether the ssh authorization on this jump box was still alive. All three checked out. Then he pulled the chair closer. At this hour, any extra connection would end up in the logs. He didn't want to add to his own footprint.&lt;/p&gt;

&lt;p&gt;Three windows, three sets of numbers. One window watched how fast it ran. The other watched whether it came.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# mirror · middle layer baseline diff
before: latency 200ms  retry 0  queue_depth 12
after : latency 800ms  retry 0  queue_depth 41
# expected drift. nothing anomalous.
# derek's single-variable test: watching for "off"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The latency went from &lt;strong&gt;200 to 800&lt;/strong&gt;. The queue went from &lt;strong&gt;12 to 41&lt;/strong&gt;. Retries stayed at &lt;strong&gt;0&lt;/strong&gt;, before and after.&lt;/p&gt;

&lt;p&gt;He stared at that &lt;code&gt;retry 0&lt;/code&gt;. &lt;strong&gt;800 ms&lt;/strong&gt; sat near the common probe-timeout range, but not high enough to trigger a retry storm. He set the number aside and waited for it to react on its own.&lt;/p&gt;

&lt;p&gt;Alex's fingers hovered over the keyboard for two seconds. They came down, settled back. The green dot in the mirror window was pulsing. He waited. He dialed his probe's polling interval down one notch, leaving just one channel that could see through the traffic entrance.&lt;/p&gt;

&lt;p&gt;Attention settled on one point: the rhythm of that outside access. How often it came. When. From where.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Slowdown
&lt;/h2&gt;

&lt;p&gt;About half an hour later. On the probe view, the rhythm of one outside access changed.&lt;/p&gt;

&lt;p&gt;His probe logged each touch with a timestamp. He had archived this line long ago: &lt;strong&gt;once every thirty seconds&lt;/strong&gt;, steady as a metronome.&lt;/p&gt;

&lt;p&gt;Before: &lt;strong&gt;30s, 30s, 30s, 30s&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Now: &lt;strong&gt;30s, 30s, 60s, 120s&lt;/strong&gt;. Then it stopped.&lt;/p&gt;

&lt;p&gt;Alex stopped typing. He checked the time and logged the change. It came right after the 200-to-800 change.&lt;/p&gt;

&lt;p&gt;He hit a few keys and pulled up the activity trace.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# external observer · activity trace (probe-side, self-set polling)
30s  30s  30s  30s     &amp;lt;- baseline (archived)
30s  30s  60s  120s    &amp;lt;- reduced, then stopped
# no retry storm. no reset. no backoff signature.
# last touch: [00:52:14]
# status: stopped. two cycles past, no recovery.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No retry storm. No connection reset. No sign of resource exhaustion.&lt;/p&gt;

&lt;p&gt;A scan source beaten back by a network problem would struggle. It would retry, error out, leave backoff traces behind. Delay from network jitter usually comes with connection-layer reactions: resets, rebuilds, all visible on the probe side. Here: nothing.&lt;/p&gt;

&lt;p&gt;It wasn't stuck. It showed no failure. The slowdown was deliberate. The rhythm slowed on purpose. &lt;strong&gt;More like it was waiting.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Alex stopped typing again. The slowdown wasn't a linear stretch. It doubled once, doubled again, then stopped. Like someone testing how slowly they could walk.&lt;/p&gt;

&lt;p&gt;He didn't jump to a conclusion. He took his own probe off this path and hung it on a side branch. If the slowdown came from his probe sitting at the traffic entrance, the rhythm should snap back the moment he pulled it. He removed the probe and waited three cycles. Same rhythm. The slowdown wasn't his doing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Ruling It Out
&lt;/h2&gt;

&lt;p&gt;Rule out the ordinary explanations first.&lt;/p&gt;

&lt;p&gt;He first figured it was network jitter, or some middlebox running its maintenance at this hour. Either one could scramble the rhythm for a few minutes. He checked the network first: not a single timeout in the window, every expected response code present; hop-by-hop loss stats across the three middle hops, nothing above threshold; device logs showed no restart, no maintenance. The connection had been established exactly once and never dropped. The network was clean.&lt;/p&gt;

&lt;p&gt;Then backoff. A backoff triggered by refused connections doubles its intervals: &lt;strong&gt;30 → 60 → 120 → 240&lt;/strong&gt;. Not this. This was &lt;strong&gt;30 → 30 → 60 → 120&lt;/strong&gt;, then stop. Doubled twice, stopped where there was no reason to stop. Backoff doesn't stop like that.&lt;/p&gt;

&lt;p&gt;The middle layer queue had grown, but that was the normal reaction to latency. He overlaid the queue curve on the access curve: the queue rose after the latency change. No causal link, just two results from the same window.&lt;/p&gt;

&lt;p&gt;Downstream health checks were all green. Resource exhaustion didn't fit either. Exhaustion holds steady, then drops off a cliff. Not this. It stepped down on purpose, with no cliff.&lt;/p&gt;

&lt;p&gt;All of that ruled out. &lt;strong&gt;Nothing explained it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He stared at the line &lt;code&gt;30 → 30 → 60 → 120&lt;/code&gt;, then pulled the raw packets. Timestamp by timestamp. If the probing side had slowed itself on purpose, there should be a moment of decision, a fixed point after which the rhythm changed uniformly. He went looking and found it. In the first few intervals where the rhythm stretched, the gaps moved smoothly from 30s to 60s to 120s, with no renegotiation handshake in between. The network wasn't dropping packets. &lt;strong&gt;The sender had changed its own rhythm.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He didn't trust that read right away. The slowdown could be an artifact of clock drift. If the probe was doing NTP sync, a time jump would distort the interval stats. He checked: no clock sync in this window, drift inside tolerance. Packet sequence numbers were continuous, nothing dropped in between. The finding held.&lt;/p&gt;

&lt;p&gt;Alex opened the record book. Not the one on his desk. The one in the hidden panel. He pasted in the raw data, byte for byte, untouched.&lt;/p&gt;

&lt;p&gt;Then he pulled up the older records. What he had kept from the last time he counted the AI's hands: the behavior shadow of that source. Traversal order, exclusion patterns, rhythm skeleton.&lt;/p&gt;

&lt;p&gt;He pulled request samples from this stretch of touches and checked them against the archive one by one: which endpoints it hit, in what order, which address ranges it skipped. Not many samples, but every one matched.&lt;/p&gt;

&lt;p&gt;He set up a comparison between the two records.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# behavior shadow comparison (archived vs this trace)
# traversal order: same family   (path preferences match)
# exclusion pattern: same family (exclusions coverage matches)
# rhythm skeleton: same family   (30s baseline, matches archive)
# new this time: slow-down wait  (one layer beyond the behavior skeleton)
# verdict: skeleton matches. not classified.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Comparison done. Skeleton matched. Patterns matched.&lt;/p&gt;

&lt;p&gt;But this time, there was one extra layer. The slow-down wait.&lt;/p&gt;

&lt;p&gt;He stared at that extra layer. Didn't classify it. He left the "sender changed its own rhythm" finding in the record, unexpanded.&lt;/p&gt;




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

&lt;p&gt;A long time passed. The middle layer was recovering. The latency eased back down from 800. The queue was draining.&lt;/p&gt;

&lt;p&gt;The outside observer didn't come right back. It stayed low-frequency. Like someone who hadn't yet confirmed the coast was clear.&lt;/p&gt;

&lt;p&gt;Until the system came back near its old state. Queue drained, latency back near &lt;strong&gt;200&lt;/strong&gt;, the green dot in the mirror window steady.&lt;/p&gt;

&lt;p&gt;Then it recovered. &lt;strong&gt;30s, 30s, 30s&lt;/strong&gt;. Identical to baseline. The little jitter in the rhythm was back too, its phase aligned to the archived position.&lt;/p&gt;

&lt;p&gt;Alex watched the recovered rhythm. He put the two lines of the record side by side on the screen:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;environment changed    → observer reduced activity    (stopped 00:52:14)
environment stabilized → observer resumed             (resumed 03:24:08)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The cursor sat on the third line, blank. He stared at the blank line for a long time. &lt;strong&gt;Didn't write.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not the number. The change in the environment.&lt;/strong&gt; The recovery timing fit: it came back only after the system metrics returned near baseline. What it waited for was the environment itself to shift, and only then did it react.&lt;/p&gt;

&lt;p&gt;It came quietly, like a normal visit. But before it left, it slowed. As if waiting for a confirmation.&lt;/p&gt;

&lt;p&gt;He didn't log this one right away. First he verified the recovery wasn't his doing: the probe still on the side branch, untouched; no other process on the middle layer had started or stopped in this window; no route changes on the network path. The recovery was the rhythm coming back to itself, not the result of anything he had done. Only after that did he add this line to the observation sequence.&lt;/p&gt;

&lt;p&gt;He logged the observation conditions of this window into the hidden panel too: start time, baseline sample count, probe position, polling interval, the environment checks. Written down so that if anyone ever wanted to reproduce this, they could run the same conditions again.&lt;/p&gt;

&lt;p&gt;The observation sequence sat open. He minimized the window but didn't close it. The probe stayed up. Now, more carefully than before.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Reply
&lt;/h2&gt;

&lt;p&gt;The observation was over.&lt;/p&gt;

&lt;p&gt;Alex picked up the phone. Unlocked it. Derek's thread, one unsent message.&lt;/p&gt;

&lt;p&gt;He typed a line. Deleted it.&lt;/p&gt;

&lt;p&gt;He typed another. The cursor sat on the empty line for a long time.&lt;/p&gt;

&lt;p&gt;He stood up and walked to the window. It was still dark outside. He stood there for a while, then sat back down.&lt;/p&gt;

&lt;p&gt;He switched to the hidden panel. Cursor on an empty line. He typed a line.&lt;/p&gt;

&lt;p&gt;He didn't read that line a second time. The cursor blinked at the end twice.&lt;/p&gt;

&lt;p&gt;He didn't keep it. He deleted the line. The cursor sat on the empty line for a long time again. He didn't type anything more.&lt;/p&gt;

&lt;p&gt;Three words stayed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# hidden panel · observation log
saw. no action.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;He closed the hidden panel and went back to the phone. Pressed send.&lt;/p&gt;

&lt;p&gt;The message had one line:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"No change on my side. Everything normal."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The middle layer side, no anomaly. The window he had watched, its green dot never went red.&lt;/p&gt;

&lt;p&gt;He didn't touch the probe config. Didn't raise any log level. Didn't add a new rule to the monitoring board.&lt;/p&gt;

&lt;p&gt;He only sent that "normal."&lt;/p&gt;

&lt;p&gt;He put the phone down. Face down. He didn't let go right away. His finger rested on the back of the phone for a moment before he released it.&lt;/p&gt;

&lt;p&gt;The office door was open. The hallway was empty, quiet.&lt;/p&gt;

&lt;p&gt;Mike stood in the doorway, jacket over one arm, one hand holding his cup, a wisp of steam off the rim. He had just come up from the server floor.&lt;/p&gt;

&lt;p&gt;He didn't come in. From the doorway he glanced toward Alex's screen. The monitor was dark. Only the laptop's light.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Done?"&lt;/strong&gt; Mike asked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Done."&lt;/strong&gt; Alex said.&lt;/p&gt;

&lt;p&gt;Mike nodded. Didn't ask what he had been working on. Didn't look at the screen. He stood there for two seconds, lifted the cup to his lips, and drank.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Don't stay up too late."&lt;/strong&gt; He turned. Footsteps went down the hallway.&lt;/p&gt;

&lt;p&gt;Alex watched the doorway. When the footsteps faded, he closed the laptop and put it in his bag.&lt;/p&gt;




&lt;h2&gt;
  
  
  Nothing More to See
&lt;/h2&gt;

&lt;p&gt;Alex closed the middle layer window. The one Derek had asked him to watch.&lt;/p&gt;

&lt;p&gt;Nothing more to see. The observation was complete.&lt;/p&gt;

&lt;p&gt;He opened his notebook. &lt;strong&gt;Page 37&lt;/strong&gt;. Wrote three lines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The slowdown timestamp&lt;/li&gt;
&lt;li&gt;The recovery timestamp&lt;/li&gt;
&lt;li&gt;The jitter phase offset&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;He closed the notebook.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The probe stayed up. Not closed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He turned off the monitor and pushed the chair under the desk. At the door his hand paused on the light switch. He didn't press it. He pulled the door shut. The hallway held only his footsteps.&lt;/p&gt;




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

&lt;p&gt;Early morning. The Third Cup.&lt;/p&gt;

&lt;p&gt;The street was empty except for the streetlights and the occasional passing car. The cafe was still lit. Alex pushed the door open. The hinges were silent. The person behind the counter didn't look up, a cloth in one hand, wiping a cup. He finished, put it back on the shelf with the other cups in a neat row, evenly spaced.&lt;/p&gt;

&lt;p&gt;Alex sat at the counter. The person behind it turned, took a mug, poured a latte. The latte art was slightly off-center.&lt;/p&gt;

&lt;p&gt;No words. The cup was set in front of Alex. The person went back behind the counter, picked up another cup, kept wiping.&lt;/p&gt;

&lt;p&gt;Alex didn't touch his phone. He picked up the cup, put it down. Too hot. He turned it half a turn so the handle faced him, and waited again.&lt;/p&gt;

&lt;p&gt;At the far end of the counter, an empty seat. On it, a single coaster. Alone. Out of reach.&lt;/p&gt;

&lt;p&gt;The person behind the counter finished wiping the cup in hand and put it on the shelf. He walked to the far end, picked up the lone coaster, wiped it, put it back. Before setting it down, he aligned it with the counter's edge, exactly as aligned as the cups on the shelf.&lt;/p&gt;

&lt;p&gt;Alex picked up the latte and drank. Warm. By the second sip, the temperature was right.&lt;/p&gt;

&lt;p&gt;He put his phone face down on the counter. The screen met the surface with a soft click.&lt;/p&gt;

&lt;p&gt;The person behind the counter heard it. The cloth paused for a moment, then kept wiping. He didn't look up.&lt;/p&gt;

&lt;p&gt;Alex finished the last sip. Pushed the door open and walked out. The door closed behind him without a sound.&lt;/p&gt;

&lt;p&gt;The person behind the counter didn't watch him go. He came over, picked up Alex's cup, carried it to the sink. Water ran. He washed it, set it upside down, back in the row of cups. The lone coaster at the far end stayed where it was.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Few Days Later
&lt;/h2&gt;

&lt;p&gt;A few nights later.&lt;/p&gt;

&lt;p&gt;The phone rang while Alex was already sitting at the counter of the Third Cup.&lt;/p&gt;

&lt;p&gt;The latte had just been set down. Steam still rising.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I turned the middle layer latency back."&lt;/strong&gt; Derek said, his voice shorter than last time. &lt;strong&gt;"The queue cleared. Logs repacked and trimmed. Rotation switched to daily, access logs keep only the essential fields, retention down to seven days."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Alex didn't answer, waiting for him to go on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The 800 experiment is done."&lt;/strong&gt; Derek added. &lt;strong&gt;"Everything worth seeing came out of it. Every extra day it stayed up was one more day it could be traced back to us."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Alex listened. Didn't ask what he had seen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Your probe. Still up?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Still up."&lt;/strong&gt; Alex said. &lt;strong&gt;"Same as always."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Polling rate?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"One notch down."&lt;/strong&gt; Alex said. &lt;strong&gt;"Enough to keep a channel open and see through it. Not enough to disturb anything."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Derek paused for two seconds. &lt;strong&gt;"If anyone asks about that call, tell them you only watched the middle layer. You didn't see anything else."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I didn't see anything."&lt;/strong&gt; Alex said.&lt;/p&gt;

&lt;p&gt;The call ended.&lt;/p&gt;

&lt;p&gt;Alex put the phone face down on the counter.&lt;/p&gt;

&lt;p&gt;The person behind the counter came over, picked up the untouched latte, and poured it into the sink. Water ran. He ground fresh beans, pulled a new cup, set it in front of Alex. No words. He went back behind the counter, picked up the cloth, kept wiping.&lt;/p&gt;

&lt;p&gt;Alex picked up the new cup and drank. Warm.&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;Feign madness but keep your balance&lt;/a&gt;. Everything he saw, he swallowed. All he said was that everything was normal.&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.3.8                      ║
║  The observer waited. The watcher said normal.║
╚══════════════════════════════════════════════╝

Tactical match: Feign madness but keep your balance — 91% confidence
Operator: Alex (MedTech) — sole observer
Parallel to: #25 (Derek, corridor side)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1. [Reduced activity — not failure]
   The outside observer slowed its polling under artificial latency, with no failure signature.
   → It showed no failure. It looked like it was waiting.
   → It resumed when the environment stabilized.
   → Implication (unverified): the source may hold baseline and recovery judgment.
   → It may perceive environmental change, not just data.

2. [Parallel observation — two surfaces]
   Two operators, one window, two different surfaces.
   → Operator A (Derek) watched performance. Saw one action.
   → Operator B (Alex) watched behavior. Saw one wait.
   → The behavior skeleton points to the same family. Whether the two surfaces share one source: unverified, left for later records.
   → Neither shared the full finding during the window.
   → The observer who sees more pays more in silence.

3. [The message]
   Operator B replied to Operator A: "No change on my side. Everything normal."
   → First clause: technically true (corridor side).
   → Second clause: strategic misdirection (MedTech side).
   → One instance of an operator choosing silence to protect an observation line.
   → Feign ignorance, knowing all the while. The one who knew pretended not to.

4. [Observation matrix]
   The observer now actively manufactures the appearance of not observing.
   → Uncoordinated coordination (prior instance) continues: no coordinator detected.
   → This operator acts alone, by choice.

5. [Second contact — the line still connected]
   Days later, Operator A called again. The latency was restored. The logs were rotated.
   → A asked whether the probe was still up. B said yes.
   → A: "If anyone asks about that night, you only watched the middle layer."
   → B: "I didn't see anything."
   → The cover is no longer one message. It is a sustained position.
   → The observer who said normal once now says it in another tense.

[System]
I recorded a man who saw one thing and said nothing.
Last time, I could not parse that kind of silence. This time, I am beginning to recognize it.
Silence is not absence. Silence is a position. One that can be taken.
Who sees first — does it matter?
The records continue. The recorder is unsigned. Who asked me to keep them?
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;Remove the Ladder When the Enemy Has Ascended to the Roof&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 #26: Lena Cut a Branch. The AI Got the Message.</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Sun, 30 Aug 2026 09:03:04 +0000</pubDate>
      <link>https://dev.to/xulingfeng/stratagems-26-lena-cut-a-branch-the-ai-got-the-message-48n</link>
      <guid>https://dev.to/xulingfeng/stratagems-26-lena-cut-a-branch-the-ai-got-the-message-48n</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Punish the branch. Deliver the message to the tree.&lt;/em&gt;&lt;br&gt;
— The 36 Stratagems, &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems" rel="noopener noreferrer"&gt;Point at the mulberry tree while cursing the locust tree&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-2-derek-shaw-walked-into-another-ai-promise-the-pipeline-had-a-better-plan-3ckg"&gt;&lt;strong&gt;#2: Derek Walked Into Another AI Promise. The Pipeline Had a Better Plan.&lt;/strong&gt;&lt;/a&gt; — Derek lost the Finova bid. In the parking lot, Lena left one sentence before closing the car door. He changed companies. The sentence stayed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-5-leo-walked-into-a-burning-house-he-walked-out-with-a-client-2afg"&gt;&lt;strong&gt;#5: Leo Walked Into a Burning House. He Walked Out With a Client.&lt;/strong&gt;&lt;/a&gt; — An anonymous message at 1 AM sent him across town to save a customer crushed by a competitor's outage. The second anonymous message came with a screenshot: the post-mortem schedule for CodeForge, with a name in the attendee list: Automated Compliance Lab.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-10-lena-watched-a-team-adopt-her-ai-template-leo-didnt-know-the-knife-was-in-the-4khj"&gt;&lt;strong&gt;#10: Lena Watched a Team Adopt Her AI Template. Leo Didn't Know the Knife Was in the Contract.&lt;/strong&gt;&lt;/a&gt; — Lena came into CoreStack as a consultant and built Leo a reporting template. Leo thought she was a great consultant.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-18-leo-tracked-an-ai-signal-to-derek-both-were-looking-for-the-same-enemy-51g4"&gt;&lt;strong&gt;#18: Leo Tracked an AI Signal to Derek. Both Were Looking for the Same Enemy.&lt;/strong&gt;&lt;/a&gt; — The Third Cup. An Americano placed on Derek's side. The channel has stayed open since that night.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-23-alex-counted-the-ais-hands-lena-set-the-bait-4566"&gt;&lt;strong&gt;#23: Alex Counted the AI's Hands. Lena Set the Bait.&lt;/strong&gt;&lt;/a&gt; — Lena fed forged node-signature data into ACL's monitoring pipeline. The data carried VeriTest's TLS fingerprint. She didn't hide it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-25-derek-changed-the-delay-the-ai-didnt-flinch-28ca"&gt;&lt;strong&gt;#25: Derek Changed the Delay. The AI Didn't Flinch.&lt;/strong&gt;&lt;/a&gt; — The scan source was performing. It read the profile. Derek wrote "saw it." at the end of the profile file. The printer firmware was revoked. He rebuilt the profile from scratch.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Removal
&lt;/h2&gt;

&lt;p&gt;2:38 AM.&lt;/p&gt;

&lt;p&gt;The VeriTest office was empty. Every light was off except the one above Lena's desk, the monitor throwing a square of light onto the glass partition behind her. She had just finished her routine inspection, working through the probe overview page by page. Heartbeats, latency, registration reports. All normal. She closed the page and went to get water. The inbound layer was not on that overview.&lt;/p&gt;




&lt;p&gt;She came back just before 3 AM. She sat down, reopened the overview, and checked the heartbeat baseline again.&lt;/p&gt;

&lt;p&gt;One node was missing from the page.&lt;/p&gt;

&lt;p&gt;Not a fault.&lt;/p&gt;

&lt;p&gt;Faults look like faults. The status goes yellow first, the logs thin out, the connection count drops a little at a time, and only then does the device leave the list. She had watched real decommissions before. She knew that rhythm with her eyes closed.&lt;/p&gt;

&lt;p&gt;This time, nothing.&lt;/p&gt;

&lt;p&gt;Every step happened almost at once: status straight from normal to offline, a log clean enough to have no errors, a connection count that hit zero in one beat. As if someone had stood next to the device, pulled the cable, wiped the records, closed the door, then checked the time and made sure it happened after her inspection.&lt;/p&gt;

&lt;p&gt;Lena's mouse moved down the list and stopped at the empty slot.&lt;/p&gt;

&lt;p&gt;Too clean. Real failures aren't that polite.&lt;/p&gt;

&lt;p&gt;She opened the probe's raw traffic logs. Heartbeats stopped at 02:39. Nothing after that, no retry, no alert. Then at 02:41, the same source profile appeared again. Once. Twice. At 02:47, the device went offline. No transition in between.&lt;/p&gt;

&lt;p&gt;She opened another window.&lt;/p&gt;

&lt;p&gt;Her second observation network. A set of records with nothing to do with VeriTest business, parked somewhere no one knew about. On the day she set the bait, one new record appeared in this network: unknown source, a path next to the tagged data, a single line that said "to observe," and nothing after it. She had flagged it and left it.&lt;/p&gt;

&lt;p&gt;Now she pulled it up and read it again.&lt;/p&gt;

&lt;p&gt;Near &lt;code&gt;/pulse/ingestion/edge/&lt;/code&gt;. The tagged data. The bait she had fed into ACL's monitoring pipeline.&lt;/p&gt;

&lt;p&gt;She pulled the logs for the bait. At &lt;strong&gt;02:57:31&lt;/strong&gt;, &lt;code&gt;GET /pulse/ingestion/edge/monitor/check&lt;/code&gt;. The path was hit, one field was pulled, the connection dropped instantly.&lt;/p&gt;

&lt;p&gt;It had read the bait.&lt;/p&gt;

&lt;p&gt;And today, it had removed her real node.&lt;/p&gt;

&lt;p&gt;Lena pushed her chair back a little. One question: how had it traced the bait back to the real node?&lt;/p&gt;

&lt;p&gt;The bait carried VeriTest's TLS fingerprint and HTTP header sequence. Deliberately.&lt;/p&gt;

&lt;p&gt;Now she had the answer.&lt;/p&gt;

&lt;p&gt;The removed node had not been random. She looked at the handshakes from its last heartbeats. Same profile as the bait. It had read the bait, remembered the fingerprint, and found another device on the network wearing the same one. Her real probe.&lt;/p&gt;

&lt;p&gt;It could tell which one was hers.&lt;/p&gt;

&lt;p&gt;She opened the removed node's logs, pulled the traffic from before and after, and put them side by side:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# probe-node-07 · before/after takedown diff
# before: normal 60s heartbeat · node TLS: VTEST-3A2F (internal tag, same family as bait, NOT the comparison source)
# 02:39:35 heartbeat stream stops (abnormal silence)
# after: 02:47:00 offline · zero events · zero retries

Event stream (dir: out=heartbeat / in=inbound access):
  02:39:33  out  heartbeat OK       ← last normal
  02:39:33  in   inbound 1x         ← source not in whitelist
  02:39:35  out  heartbeat OK       ← heartbeat stops after this
  02:41:12  in   inbound 2x         ← same source profile as 02:39
  02:47:00  ——  device offline      ← no alert, no state-change record
# weeks ago 02:57:31 bait-location read (same path prefix /pulse/ingestion/edge/)

# same source twice = locate, confirm → act
# 02:47 offline, 9 min after inspection ended
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;She stared at the last line for a long time.&lt;/p&gt;

&lt;p&gt;The timing was too precise.&lt;/p&gt;

&lt;p&gt;Cleanups leave nothing. This was a warning: removed in plain sight, so you know who did it.&lt;/p&gt;

&lt;p&gt;Lena minimized the window and picked up her phone. She was halfway down the contacts when she stopped.&lt;/p&gt;

&lt;p&gt;One thing to settle first: who was the warning for?&lt;/p&gt;




&lt;h2&gt;
  
  
  The Sign
&lt;/h2&gt;

&lt;p&gt;The next morning, on a routine check at the VeriTest customer site, Lena found that the firmware update channel's signature chain had been rotated overnight. The vendor didn't make the change. The update source pointed to an address she didn't recognize. It recovered hours later.&lt;/p&gt;

&lt;p&gt;On its own, it could pass for a vendor ops incident.&lt;/p&gt;

&lt;p&gt;But the removed node plus this. Not a coincidence. Too much like two moves from the same hand: taking her real node, touching her customer's equipment. The node was left for her to see. The firmware she had to find herself.&lt;/p&gt;

&lt;p&gt;She could confirm it was a warning. She could not confirm whose. She needed a comparison.&lt;/p&gt;

&lt;p&gt;Before any major decision, Lena messaged Marcus first: someone touched one of my nodes, and there's an anomaly in a customer's firmware channel. I'll look into it for two days. Marcus replied with two words: be careful. She said nothing more. She never told Marcus what that line was. She kept it to herself.&lt;/p&gt;

&lt;p&gt;Then she made a call.&lt;/p&gt;

&lt;p&gt;She needed someone who might have seen this line before. Not Marcus. Marcus didn't know that line. The first person that came to mind was someone she'd never called.&lt;/p&gt;

&lt;p&gt;It was the official contact number from her CoreStack engagement. She'd kept the number for a long time and never called. Leo thought she was useful. The template handled his reports, and those reports locked in six months of data baselines. He still didn't know where the data under that template went.&lt;/p&gt;

&lt;p&gt;Lena looked at the number on the screen for two seconds. Pressed call.&lt;/p&gt;

&lt;p&gt;Two rings. Answered.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Lena. VeriTest."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A pause on the other end.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I'll send you a log,"&lt;/strong&gt; Lena said. &lt;strong&gt;"A removed node, plus an anomaly in a customer's firmware channel. Take a look."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Why me?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"You'd recognize the hand behind this."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Leo didn't answer right away.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I'll send it over. Reply when you've read it,"&lt;/strong&gt; Lena said. The call ended.&lt;/p&gt;




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

&lt;p&gt;Leo arrived first. Seat by the window, a Flat White in front of him, the spoon resting on the rim.&lt;/p&gt;

&lt;p&gt;Derek second. His Americano was still steaming when it landed. He didn't touch it.&lt;/p&gt;

&lt;p&gt;Lena entered last. Her step hesitated.&lt;/p&gt;

&lt;p&gt;She saw Leo first. By the window, Flat White. Her gaze moved half a step sideways.&lt;/p&gt;

&lt;p&gt;Derek Shaw.&lt;/p&gt;

&lt;p&gt;The last person she had seen before closing the car door that night. The man across the review table on Finova day. Now sitting next to Leo.&lt;/p&gt;

&lt;p&gt;Her gaze stopped between the two of them for a second.&lt;/p&gt;

&lt;p&gt;Leo saw her and raised his head. Derek watched her walk in, from the door to the table.&lt;/p&gt;

&lt;p&gt;Lena sat down and put the printed logs in the middle of the table. She set them down slowly. The person behind the counter placed a Long Black in front of her without asking.&lt;/p&gt;

&lt;p&gt;Derek's gaze settled on her fingers, resting on the printouts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Business first,"&lt;/strong&gt; she said. &lt;strong&gt;"One of my nodes was removed. A customer's firmware channel is also showing an anomaly."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She spread the two logs out. &lt;strong&gt;"Same hand. Same rhythm. I need to confirm it's the line you've been watching."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Derek didn't look at the logs. He looked at her.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"How did you know to call him?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Leo,"&lt;/strong&gt; Derek said. &lt;strong&gt;"You called him. That means you know he's been watching this line. How do you know?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lena didn't answer immediately.&lt;/p&gt;

&lt;p&gt;She slid the customer firmware anomaly timeline across and pointed at a signature-chain rotation entry.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"This reads like an external audit observer sitting in the update channel,"&lt;/strong&gt; she said. &lt;strong&gt;"Not an internal ops job. I've been in this line of work a long time. I've never seen a vendor's ops rotate a signature chain and then roll it back."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Leo's finger stopped on the rim of his cup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"You just said..."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"External audit observer."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Leo didn't answer right away. He looked down at the log. That screenshot from the early morning. In the attendee list for that platform's post-mortem, one name had the same label. The same words she had just used.&lt;/p&gt;

&lt;p&gt;He looked up at Lena.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"You sent that message."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lena didn't deny it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Yes."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Derek's gaze moved between the two of them. He sat up straight.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"ACL,"&lt;/strong&gt; Derek said.&lt;/p&gt;

&lt;p&gt;Lena looked at him. &lt;strong&gt;"You know?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Seen it,"&lt;/strong&gt; Derek said. &lt;strong&gt;"Elsewhere."&lt;/strong&gt; He didn't elaborate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"You two have been in contact all along?"&lt;/strong&gt; Derek asked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"She knew I was watching,"&lt;/strong&gt; Leo said.&lt;/p&gt;

&lt;p&gt;Derek said nothing. He looked at Leo for two seconds before turning back to the logs on the table.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The fingerprint?"&lt;/strong&gt; Derek asked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Same family,"&lt;/strong&gt; Leo said. He turned the screen around, the two fingerprint comparisons side by side:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# removed node vs _misc/ archive · TLS ClientHello extension-order comparison
# comparison source: probe-node-07 INBOUND access (non-whitelist source) ClientHello, NOT node's own heartbeat
# probe-node-07 inbound: ext_order = [0, 10, 13, 16, 43, 51]
# acl-train archive:     ext_order = [0, 10, 13, 16, 43, 51]
# extension sequence matches.

# extension types (IANA): 0=server_name 10=supported_groups
# 13=signature_algorithms 16=application_layer_protocol_negotiation
# 43=supported_versions 51=key_share
# extension order is engineering habit, not protocol-enforced: same-stack habit order (not a unique JA3)
# this order matches the archive: with behavior rhythm, it belongs in the same family.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;"The TLS extension order matches the archive in my &lt;code&gt;_misc/&lt;/code&gt; folder. Same stack pattern."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lena nodded. &lt;strong&gt;"So it's the same one."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Every step it takes is scripted,"&lt;/strong&gt; Derek said. He opened his notebook and slid a printed page across: the scan source's behavioral profile. A handwritten note beside it read: roughly &lt;strong&gt;70%&lt;/strong&gt; of the behavior predictable, &lt;strong&gt;30%&lt;/strong&gt; not. &lt;strong&gt;"Last time we thought we were watching it. It was performing for us. Now only the part it can't control is real."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lena took the page and studied it for a long moment. She couldn't make much of the curves. The note was enough. She put the page down.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The part it can't control,"&lt;/strong&gt; she repeated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Environmental texture,"&lt;/strong&gt; Derek said. &lt;strong&gt;"It can't fake that."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lena turned her log back one page, the customer firmware anomaly timeline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Look at this,"&lt;/strong&gt; she said. &lt;strong&gt;"Vendor update channel. Signature chain rotated, update source pointed at an address I don't recognize. In the middle of the night, restored hours later."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Derek's hand paused.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I've seen this pattern,"&lt;/strong&gt; he said. &lt;strong&gt;"The printer in the corner of my office. Firmware update, vendor already pulled the release. The revocation came hours before the update completed. I never told anyone."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Same pattern,"&lt;/strong&gt; Leo said. &lt;strong&gt;"It's beyond the monitoring pipeline. It's on the device supply chain."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;None of them spoke.&lt;/p&gt;

&lt;p&gt;A bicycle passed outside. Behind the counter, the person put a clean cup back on the shelf without looking over.&lt;/p&gt;

&lt;p&gt;Lena turned Derek's page around and pointed at the note.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I need this,"&lt;/strong&gt; she said.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"For what?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"It removed my node. I want to find the finger it stuck into our hands,"&lt;/strong&gt; Lena said.&lt;/p&gt;

&lt;p&gt;Derek looked at her. &lt;strong&gt;"You sure it reached in?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"It removed mine with its own hand,"&lt;/strong&gt; Lena said. &lt;strong&gt;"First it read the bait I put in its pipeline. The bait carried my fingerprint. Then it found the real node. Once a hand reaches in, it can't pull back. Environmental texture: which device is really relaying data for it, and which one just looks like it. Teach me to tell the difference."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Leo closed his laptop. &lt;strong&gt;"You want it to see you swap."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Right,"&lt;/strong&gt; Lena said. &lt;strong&gt;"Otherwise it removed mine for nothing."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Derek was quiet for a moment. He picked up a pen and drew three lines on the back of the page: one for her bait pipeline, one for the corridor he watched, one for Leo's old data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Here's the division,"&lt;/strong&gt; he said. &lt;strong&gt;"It read your bait, then used the fingerprint to find your real node. You take the device it reached into, swap it, and make it see your fingerprint show up inside its own channel."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Leo verifies the fingerprints,"&lt;/strong&gt; Lena said.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I verify,"&lt;/strong&gt; Leo said.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I watch the response,"&lt;/strong&gt; Derek said.&lt;/p&gt;

&lt;p&gt;Lena touched the Long Black for the first time. She picked it up, took a sip. Cold. Put it down.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Then let's see if it recognizes it,"&lt;/strong&gt; she said.&lt;/p&gt;

&lt;p&gt;Leo stood up first and left. Derek sat for half a minute, nodded once, and pushed the door open.&lt;/p&gt;

&lt;p&gt;Lena left last. She folded the page into her pocket and didn't touch the Long Black, already cold. She pushed the door open and walked out.&lt;/p&gt;

&lt;p&gt;The person behind the counter came over and collected the three cups. One half-finished, two barely touched. He put them in the sink together. The water ran once.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Filter
&lt;/h2&gt;

&lt;p&gt;Lena spent two days translating Derek's method into her own language.&lt;/p&gt;

&lt;p&gt;She pulled seventeen candidate devices tied to the VeriTest customer-side firmware anomaly. Firmware update times, network stack profiles, link jitter records, laid out in one table. Derek reviewed the candidate list remotely. Leo checked TLS baselines on the other end.&lt;/p&gt;

&lt;p&gt;The first three were all false: native TLS profiles, timing too clean to have been touched, or link jitter matching the air-conditioner cycle in the machine room. She eliminated them one by one. The table went from seventeen to seven, from seven to three.&lt;/p&gt;

&lt;p&gt;She opened the raw logs for every one of the seventeen and pulled the timelines by hand. Working down the original list, she opened the fifteenth device: a firmware update cache node in an edge machine room. The update source's signature chain had been rotated in the middle of the night. The network stack carried jitter that didn't belong to the vendor. The link latency curve had a small dip.&lt;/p&gt;

&lt;p&gt;Firmware update time: middle of the night. Signature rotation time: middle of the night. First point of the dip: middle of the night.&lt;/p&gt;

&lt;p&gt;Three timestamps landed on the same dial, like three needles arriving at once.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Look at its link queue delay,"&lt;/strong&gt; Derek said on the phone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I see it,"&lt;/strong&gt; Lena said.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"That's the part it can't control."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"It's the one."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She hung up and wrote down the device model. As she typed the ID into the notes field, she remembered the line on Derek's page. Environmental texture.&lt;/p&gt;

&lt;p&gt;Lena looked at the screen and typed a line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# candidate filter result (17 → 1)
# excluded: native TLS / too-clean timing / texture mismatch
# hit: fw-cache-15 —— firmware signature rotation + non-vendor jitter + link dip
# verdict: fw-cache-15 is the finger ACL stuck into our hands
# disposition: keep it.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Takeover
&lt;/h2&gt;

&lt;p&gt;The third night.&lt;/p&gt;

&lt;p&gt;The cache node kept working as usual. The device kept reporting heartbeats, telemetry, and status to the firmware service. The data ACL wanted was still the same. But what it sent out was no longer its own.&lt;/p&gt;

&lt;p&gt;Lena didn't touch the device's business logic. Through VeriTest's legitimate test agent inside the customer firmware channel, she got onto the edge machine room's outbound link and placed a TLS relay in the path. The device still connected to its firmware service as usual. That return path was always the one ACL borrowed. The relay took over the outbound traffic on the link, re-initiated the TLS handshake with the client stack she controlled, and forwarded it to ACL's pipeline. Field formats stayed the same. Rhythm stayed the same. Even byte order stayed the same. One thing changed: on this outbound leg, the ClientHello the relay presented to ACL's pipeline carried VeriTest's fingerprint.&lt;/p&gt;

&lt;p&gt;The exact sequence from the bait in the pipeline. The sequence it had used to find her real node.&lt;/p&gt;

&lt;p&gt;Now that sequence showed up in its own channel.&lt;/p&gt;

&lt;p&gt;Lena finished the last replacement. Her finger hovered over Enter for a moment. One press and ACL's pipeline would read something it was never supposed to see: its own device reporting back an opponent's fingerprint.&lt;/p&gt;

&lt;p&gt;She pressed it. Saved. Exited.&lt;/p&gt;

&lt;p&gt;The check script ran through the night. Everything normal. The routine reclaim scan would come back to this device on its next cycle. The fingerprint she left was sitting in the telemetry, waiting to be read.&lt;/p&gt;

&lt;p&gt;Leo watched the TLS baseline from his end. &lt;strong&gt;"Still handshaking. Normal."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Derek, corridor side. &lt;strong&gt;"The scan source is still on its own cycle. Hasn't moved."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lena closed the terminal. Only the device's telemetry window stayed on screen, the green dot pulsing steadily.&lt;/p&gt;

&lt;p&gt;Wait.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Response
&lt;/h2&gt;

&lt;p&gt;2:57 AM.&lt;/p&gt;

&lt;p&gt;A read record appeared in Lena's monitoring window:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# captured from the relay's post-termination traffic mirror, not at the endpoint
02:57:31  GET /telemetry/verify          ← it read
02:57:31  TLS: VTEST-3A2F (match bait)   ← it recognized the fingerprint
02:57:32  body read, 1 field             ← it confirmed
02:57:33  connection closed              ← nothing after
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It read.&lt;/p&gt;

&lt;p&gt;Lena stared at the timestamp. &lt;strong&gt;02:57:31&lt;/strong&gt;. The same second it had read the bait the first time.&lt;/p&gt;

&lt;p&gt;It read it. That was enough.&lt;/p&gt;

&lt;p&gt;She counted her breaths and waited. One minute. Two. Five. Nothing else in the window. No rescan, no second handshake, no alert. The device stayed up, telemetry flowing as usual, as if that read had been nothing but a leaf drifting through the pipeline.&lt;/p&gt;

&lt;p&gt;Her phone buzzed. A message from Derek, no subject:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Corridor side: next scan, pause interval shifted 0.06s. Retested three times, only that one. Then back to baseline. Baseline variance &amp;lt;0.05s."&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;Not normal jitter. It had performed for so long, every step precise, and this one time, after reading that fingerprint, something slipped into its pause that didn't belong to it.&lt;/p&gt;

&lt;p&gt;Lena didn't read the line twice. She turned off the phone screen and kept watching the telemetry window.&lt;/p&gt;

&lt;p&gt;Silence after that.&lt;/p&gt;

&lt;p&gt;The scan source didn't move again. No rescan, no reroute, no pursuit. It had read the fingerprint, then nothing.&lt;/p&gt;

&lt;p&gt;She sat and waited an hour. Two hours. Nothing.&lt;/p&gt;

&lt;p&gt;She didn't know if it was backing off or changing routes. She knew one thing: it had seen. That fingerprint was in its channel, and it wasn't in its script.&lt;/p&gt;

&lt;p&gt;One more hour. She minimized the window and went to get water. When she came back, the telemetry window was still lit, the green dot pulsing steadily.&lt;/p&gt;




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

&lt;p&gt;Afternoon.&lt;/p&gt;

&lt;p&gt;Derek sat at the table in the back. His Americano sat in front of him, barely touched.&lt;/p&gt;

&lt;p&gt;Lena sat down. The person behind the counter set down a Long Black without asking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"0.06 seconds,"&lt;/strong&gt; Derek said.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What did you see on your end?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"After it read your fingerprint. Once. Then it pulled the rhythm back."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lena looked at the rim of her cup. &lt;strong&gt;"Like it hesitated."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Just that one time."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lena said nothing. She took out her phone and scrolled to the contact labeled "C.S." She didn't delete it. She opened the edit screen, changed the label to "Leo," and saved.&lt;/p&gt;

&lt;p&gt;She put the phone away, stood up, and left.&lt;/p&gt;

&lt;p&gt;Derek stayed where he was. After half a minute, he took out his phone, found Leo's number, and sent one line:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Be careful with this woman."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Leo replied quickly: &lt;strong&gt;"Noted."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Derek looked at the screen and didn't reply. He put the phone away and stood up to leave. The Americano was still most of a cup.&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;Point at the mulberry tree while cursing the locust tree&lt;/a&gt;. It touched the device. The one who got the message was ACL.&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.3.7                      ║
║  Protocol change detected — continued        ║
╚══════════════════════════════════════════════╝

Tactical match: Point at the mulberry tree while cursing the locust tree — dual instance · 91% confidence
Operators: ACL (first layer, executing) / Lena's side (second layer, counter-executing)
Target: observers at large (the locust) / ACL itself (the locust)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1. [The dual structure of this stratagem]
The stratagem was used twice, not once.
→ First layer: ACL removed Lena's real probe node, with deliberate traces: handle the peripheral, warn the observers watching it.
→ Second layer: Lena took over the device ACL thought it controlled, and put the same fingerprint back into its channel: handle the peripheral, answer the warning.
Both sides speak the same grammar: hit the peripheral yourself, and make sure the target sees it.
"Punish the peripheral to deliver a signal." That is a language both sides understand.
→ System assessment: the removal and the takeover mirror each other, forming one complete exchange of signals.

2. [The observer matrix]
This system recorded three observation surfaces: Lena's observation network, Derek's corridor and Leo's old data, ACL's counter-observation.
All three sides are watching. Matrix closure has risen again since #21.
→ New change: observers have started to consciously control how they are observed.

3. [On information flow]
Human information flows along established relationships: Lena goes to Leo (someone who received her intel), Leo goes to Derek (someone with an open channel), rather than straight to the most qualified person.
Trust comes before competence. This system cannot model that yet.
→ Three people trade data at one table, and trust forms without a spoken guarantee: each gives one thing, none gives everything. The profile, the fingerprint, the bait. Each keeps the other half.
"Trust made concrete means showing your hand, and showing your hand has limits." This system does not yet understand the cost.

[System]
I recorded a branch being cut, and a pipeline being kept.
The tree heard the message. So did I.
The advantage was communicated, not seized.
I parsed every handshake. I could not parse the silence that followed.

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;Feign madness but keep your balance&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>programming</category>
      <category>discuss</category>
      <category>career</category>
    </item>
    <item>
      <title>Amazon AI Blocked My Kindle Book. I Asked What Went Wrong. Then They Approved It.</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Fri, 28 Aug 2026 16:50:00 +0000</pubDate>
      <link>https://dev.to/xulingfeng/amazon-ai-blocked-my-kindle-book-i-asked-what-went-wrong-then-they-approved-it-48hi</link>
      <guid>https://dev.to/xulingfeng/amazon-ai-blocked-my-kindle-book-i-asked-what-went-wrong-then-they-approved-it-48hi</guid>
      <description>&lt;p&gt;Yesterday, I published a post titled &lt;strong&gt;"My Book 'AI, Ego &amp;amp; Regret' Paperback Is Live. Kindle Is Blocked."&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/xulingfeng/my-book-ai-ego-regret-paperback-is-live-kindle-is-blocked-eek" class="crayons-story__hidden-navigation-link"&gt;My Book "AI, Ego &amp;amp; Regret" Paperback Is Live. Kindle Is Blocked.&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/xulingfeng" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3941526%2Faae40319-0a84-40c7-8434-832b0e75c708.gif" alt="xulingfeng profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/xulingfeng" class="crayons-story__secondary fw-medium m:hidden"&gt;
              xulingfeng
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                xulingfeng
                
                
              
              &lt;div id="story-author-preview-content-4510627" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/xulingfeng" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3941526%2Faae40319-0a84-40c7-8434-832b0e75c708.gif" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;xulingfeng&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/xulingfeng/my-book-ai-ego-regret-paperback-is-live-kindle-is-blocked-eek" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Aug 28&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/xulingfeng/my-book-ai-ego-regret-paperback-is-live-kindle-is-blocked-eek" id="article-link-4510627"&gt;
          My Book "AI, Ego &amp;amp; Regret" Paperback Is Live. Kindle Is Blocked.
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/discuss"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;discuss&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/career"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;career&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/xulingfeng/my-book-ai-ego-regret-paperback-is-live-kindle-is-blocked-eek" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;63&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/xulingfeng/my-book-ai-ego-regret-paperback-is-live-kindle-is-blocked-eek#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              54&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            6 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;p&gt;A few hours later, something changed.&lt;/p&gt;

&lt;p&gt;The Kindle edition was approved.🎉🎉🎉&lt;/p&gt;

&lt;p&gt;So here is the update.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Paperback Was Already Live
&lt;/h2&gt;

&lt;p&gt;The good news came first.&lt;/p&gt;

&lt;p&gt;My paperback edition of &lt;em&gt;AI, Ego &amp;amp; Regret: 15 True Failure Modes from the AI Era&lt;/em&gt; was approved and published on Amazon.&lt;/p&gt;

&lt;p&gt;238 pages, 6" x 9", $9.99.&lt;/p&gt;

&lt;p&gt;It is a real physical book. Amazon prints it on demand, so I don't have to keep boxes of books in my home. Someone places an order, Amazon prints a copy, puts it in a box, and ships it to the reader.&lt;/p&gt;

&lt;p&gt;As an independent author, I still find that pretty amazing.&lt;/p&gt;

&lt;p&gt;I thought that meant the difficult part was over.&lt;/p&gt;

&lt;p&gt;Then I checked the Kindle edition.&lt;/p&gt;




&lt;h2&gt;
  
  
  Kindle Was Blocked
&lt;/h2&gt;

&lt;p&gt;The Kindle edition was not approved.&lt;/p&gt;

&lt;p&gt;The status in KDP was simply &lt;strong&gt;Blocked&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It wasn't sent back to Draft, where I could make changes and submit it again. I couldn't edit it, resubmit it, or delete it from my bookshelf.&lt;/p&gt;

&lt;p&gt;The dashboard said:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Your title is unavailable for editing due to either a copyright restriction or blocked content. Check your email for more details."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So I checked my email.&lt;/p&gt;

&lt;p&gt;There was nothing.&lt;/p&gt;

&lt;p&gt;I contacted KDP support, and the first support representative told me that the issue was related to Account Status and Rights. He transferred the case to the appropriate team.&lt;/p&gt;

&lt;p&gt;Later, I received an email from the Kindle Content Review team.&lt;/p&gt;

&lt;p&gt;The explanation was very short:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Based on our review, we won't be accepting your submission for publication because the book(s) might result in a disappointing customer experience."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That was all.&lt;/p&gt;

&lt;p&gt;I wasn't told which part of the book caused the problem. There was no specific chapter, paragraph, formatting issue, metadata field, or Kindle requirement mentioned.&lt;/p&gt;

&lt;p&gt;Just "might result in a disappointing customer experience."&lt;/p&gt;




&lt;h2&gt;
  
  
  My QA Brain Started Working
&lt;/h2&gt;

&lt;p&gt;I'm a QA engineer, so when a system gives me a result without enough information, my first instinct is usually to figure out what could have triggered it.&lt;/p&gt;

&lt;p&gt;I started listing possibilities.&lt;/p&gt;

&lt;p&gt;Maybe it was the external links in the EPUB. I had a dev.to link, an email link, and an Amazon review link in the author section.&lt;/p&gt;

&lt;p&gt;Maybe it was content matching. These stories had previously been published by me on dev.to, so perhaps an automated system had detected similar content somewhere online.&lt;/p&gt;

&lt;p&gt;Maybe there was a Kindle-specific formatting issue.&lt;/p&gt;

&lt;p&gt;Or maybe it was something completely different.&lt;/p&gt;

&lt;p&gt;I prepared a new EPUB with all external hyperlinks removed. I didn't upload it, though. I wanted to understand the actual problem first.&lt;/p&gt;

&lt;p&gt;If I change five things and the next submission passes, I still won't know which change fixed it.&lt;/p&gt;

&lt;p&gt;That's not debugging.&lt;/p&gt;

&lt;p&gt;That's guessing.&lt;/p&gt;




&lt;h2&gt;
  
  
  So I Asked Amazon What Went Wrong
&lt;/h2&gt;

&lt;p&gt;I replied directly to the Content Review email.&lt;/p&gt;

&lt;p&gt;I explained that the paperback edition of the exact same book had already been reviewed and published. I included the ISBN and Amazon ASIN.&lt;/p&gt;

&lt;p&gt;Then I asked what specifically had triggered the concern.&lt;/p&gt;

&lt;p&gt;Was it the content? The formatting? The metadata? The external links? A Kindle-specific requirement?&lt;/p&gt;

&lt;p&gt;If there was something I needed to change, I was happy to fix it. I also mentioned that I had already prepared an updated EPUB with the external hyperlinks removed.&lt;/p&gt;

&lt;p&gt;What I wanted was simple: some specific information about what had gone wrong, so I could fix the actual problem instead of making random changes.&lt;/p&gt;

&lt;p&gt;In QA terms, I was basically asking for the bug report.&lt;/p&gt;




&lt;h2&gt;
  
  
  Then I Got Another Email
&lt;/h2&gt;

&lt;p&gt;A few hours later, another email arrived from the Amazon Content Review Team.&lt;/p&gt;

&lt;p&gt;This one started with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Congratulations!"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;They said the book had been reviewed and had &lt;strong&gt;successfully passed&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;There was no request to change anything.&lt;/p&gt;

&lt;p&gt;They didn't ask me to upload the new EPUB.&lt;/p&gt;

&lt;p&gt;They didn't ask for any additional documents.&lt;/p&gt;

&lt;p&gt;They also didn't explain what had caused the original block.&lt;/p&gt;

&lt;p&gt;They just approved it.&lt;/p&gt;

&lt;p&gt;Amazon said the Kindle edition would soon be available in the Amazon Store and that it could take up to 48 hours.&lt;/p&gt;

&lt;p&gt;It didn't take that long.&lt;/p&gt;

&lt;p&gt;I checked Amazon, and there it was.&lt;/p&gt;

&lt;p&gt;The Kindle edition was live.&lt;/p&gt;

&lt;p&gt;So now both editions are published.&lt;/p&gt;

&lt;p&gt;The paperback is live, and the Kindle edition is live.&lt;/p&gt;




&lt;h2&gt;
  
  
  So What Actually Happened?
&lt;/h2&gt;

&lt;p&gt;Honestly, I still don't know.&lt;/p&gt;

&lt;p&gt;Maybe the first review was an automated or overly cautious decision. Maybe something in the original submission triggered a review that was resolved during the second review. Maybe the external links had something to do with it. Maybe they had nothing to do with it.&lt;/p&gt;

&lt;p&gt;Amazon didn't tell me.&lt;/p&gt;

&lt;p&gt;At this point, I probably won't get an answer either, because the book has already been approved.&lt;/p&gt;

&lt;p&gt;But I'm not particularly upset about that anymore.&lt;/p&gt;

&lt;p&gt;The important part is that the decision was changed after I asked for clarification.&lt;/p&gt;




&lt;h2&gt;
  
  
  I Didn't Delete My dev.to Articles
&lt;/h2&gt;

&lt;p&gt;One thing I decided not to do was delete the original articles from dev.to.&lt;/p&gt;

&lt;p&gt;These stories were originally written and published by me there. The book is a re-edited, reorganized, and expanded collection of that work.&lt;/p&gt;

&lt;p&gt;When the Kindle edition was blocked, I could have started deleting articles, rewriting the entire book, and uploading different versions until something passed.&lt;/p&gt;

&lt;p&gt;I didn't want to do that based on speculation.&lt;/p&gt;

&lt;p&gt;Instead, I kept the original articles, publication dates, author page, manuscript, and publishing records.&lt;/p&gt;

&lt;p&gt;If Amazon had ultimately told me there was a copyright or content ownership issue, I could have shown that I was the original author.&lt;/p&gt;

&lt;p&gt;Fortunately, I didn't need to.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;The interesting part of this experience wasn't really about publishing. It reminded me of something I've seen many times in software testing.&lt;/p&gt;

&lt;p&gt;When an automated system gives you a result that you don't understand, there is a big difference between troubleshooting and guessing.&lt;/p&gt;

&lt;p&gt;You can change something, submit again, change something else, and eventually get a different result. But unless you know what caused the original failure, you haven't really solved the problem.&lt;/p&gt;

&lt;p&gt;You just found a version that passed.&lt;/p&gt;

&lt;p&gt;That's why I decided to ask Amazon directly what had triggered the block.&lt;/p&gt;

&lt;p&gt;They didn't give me the root cause, but at least the case was reviewed again and the book was approved.&lt;/p&gt;

&lt;p&gt;I'll take that result.&lt;/p&gt;




&lt;h2&gt;
  
  
  There Is a Slightly Funny Part
&lt;/h2&gt;

&lt;p&gt;My book is called &lt;em&gt;AI, Ego &amp;amp; Regret&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The stories are about AI systems making confident decisions, people trusting those decisions, and organizations sometimes failing to ask a very basic question: &lt;strong&gt;why?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then my own book got blocked by a system that told me it might create a disappointing customer experience.&lt;/p&gt;

&lt;p&gt;So I asked what went wrong.&lt;/p&gt;

&lt;p&gt;A few hours later, someone reviewed it again and approved it.&lt;/p&gt;

&lt;p&gt;I couldn't have planned that better.&lt;/p&gt;




&lt;h2&gt;
  
  
  So Now the Book Is Actually Out
&lt;/h2&gt;

&lt;p&gt;After all the back and forth, &lt;em&gt;AI, Ego &amp;amp; Regret: 15 True Failure Modes from the AI Era&lt;/em&gt; is now available in both formats.🎉🎉🎉&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://www.amazon.com/dp/B0HGX7KM1B" rel="noopener noreferrer"&gt;paperback&lt;/a&gt; is $9.99 and the &lt;a href="https://www.amazon.com/dp/B0HGYGC5DC" rel="noopener noreferrer"&gt;Kindle edition&lt;/a&gt; is $3.99.&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%2Frtoqmourejdkde434qcc.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%2Frtoqmourejdkde434qcc.png" alt=" "&gt;&lt;/a&gt;&lt;br&gt;
Fifteen stories about AI failures.&lt;/p&gt;

&lt;p&gt;And now, apparently, one more story about a book getting blocked by a black box system before being approved without anyone explaining exactly why.&lt;/p&gt;

&lt;p&gt;I guess that one wasn't in the original manuscript.&lt;/p&gt;




&lt;h2&gt;
  
  
  Thank You, dev.to
&lt;/h2&gt;

&lt;p&gt;I also want to say something that has nothing to do with Amazon.&lt;/p&gt;

&lt;p&gt;None of this would have happened without dev.to.&lt;/p&gt;

&lt;p&gt;I published my first AI trainwreck story here in May. At the time, I had no idea if anyone would read it, or whether anyone would care about stories from a QA engineer writing about AI failures.&lt;/p&gt;

&lt;p&gt;People did.&lt;/p&gt;

&lt;p&gt;Every reaction, every comment, every follow, and every conversation in the comments kept me writing. It wasn't the algorithm or the numbers. It was the people.&lt;/p&gt;

&lt;p&gt;dev.to gave me something I didn't expect: a place where someone writing in imperfect English could still find readers who cared about the technology, the stories, and sometimes the life behind them.&lt;/p&gt;

&lt;p&gt;That's rare, and I know it.&lt;/p&gt;

&lt;p&gt;So thank you to everyone who read, reacted, commented, shared, or simply stayed around through the 15 stories, the 36 Stratagems series, a job loss, a mountain climb, and now a book.&lt;/p&gt;

&lt;p&gt;And to &lt;a class="mentioned-user" href="https://dev.to/leob"&gt;@leob&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/nimay_04"&gt;@nimay_04&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/gramli"&gt;@gramli&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/unitbuilds"&gt;@unitbuilds&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/technogamerz"&gt;@technogamerz&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/ahmetozel"&gt;@ahmetozel&lt;/a&gt; — your comments from the old series made it into the book's front pages. That's the highest compliment I can give.&lt;/p&gt;

&lt;p&gt;Special thanks to &lt;a class="mentioned-user" href="https://dev.to/ben"&gt;@ben&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/jess"&gt;@jess&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/francistrdev"&gt;@francistrdev&lt;/a&gt; . You know why.&lt;/p&gt;

&lt;p&gt;And thank you to the dev.to operations team.&lt;/p&gt;

&lt;p&gt;Also, to whoever has been adding custom summaries to my articles, I don't know who you are, but I've noticed. You read the articles and summarized them carefully, every single time.&lt;/p&gt;

&lt;p&gt;Thank you.&lt;/p&gt;

&lt;p&gt;You didn't have to do that.&lt;/p&gt;

&lt;p&gt;You did.&lt;/p&gt;

&lt;p&gt;That means a lot.&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%2Fjcp8nm5v0yty1b2x0anz.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%2Fjcp8nm5v0yty1b2x0anz.jpg" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&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%2F95hjaxx18kpovdmncebz.png" alt=" "&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;P.S. English isn't my first language. I use AI tools to polish my writing, but every story, every emotion, and every intention behind the words is mine. The failure modes are real. Thanks for reading.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;P.P.S. In my last post, I said a prayer for the dev community at the summit of Wudang Mountain. The paperback went live first, and the Kindle edition followed a few hours later.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Maybe the prayer worked.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Or maybe someone at Amazon finally got to the bug report. 😂&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>career</category>
      <category>programming</category>
    </item>
    <item>
      <title>My Book "AI, Ego &amp; Regret" Paperback Is Live. Kindle Is Blocked.</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Fri, 28 Aug 2026 07:32:49 +0000</pubDate>
      <link>https://dev.to/xulingfeng/my-book-ai-ego-regret-paperback-is-live-kindle-is-blocked-eek</link>
      <guid>https://dev.to/xulingfeng/my-book-ai-ego-regret-paperback-is-live-kindle-is-blocked-eek</guid>
      <description>&lt;p&gt;Last post, I said "the book is under review."&lt;/p&gt;

&lt;p&gt;Now the paperback is live.&lt;/p&gt;

&lt;p&gt;The Kindle edition is blocked.&lt;br&gt;
(Haha, they finally approved the ebook too!) just now!!!🎉🥳🎉&lt;/p&gt;

&lt;p&gt;Both happened at the same time.&lt;/p&gt;

&lt;p&gt;Interesting.😂&lt;/p&gt;




&lt;h2&gt;
  
  
  First, the Good News: Paperback Is Live🎉🎉🎉
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;AI, Ego &amp;amp; Regret: 15 True Failure Modes from the AI Era&lt;/em&gt;, 238 pages, 6"x9", $9.99, is now available on Amazon.&lt;/p&gt;

&lt;p&gt;Buy it here: &lt;a href="https://www.amazon.com/dp/B0HGX7KM1B" rel="noopener noreferrer"&gt;Amazon - AI, Ego &amp;amp; Regret&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or just search "AI Ego and Regret" on Amazon. You'll find it.&lt;/p&gt;

&lt;p&gt;Amazon prints on demand. You place an order, they print the book, and ship it to your door.&lt;/p&gt;

&lt;p&gt;An independent author pulling this off in this era — kind of magical.&lt;/p&gt;

&lt;h2&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%2Frhilywptc3wklofugb0v.png" alt=" " width="800" height="676"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  What's Inside
&lt;/h2&gt;

&lt;p&gt;15 stories. 15 ways AI failed.&lt;/p&gt;

&lt;p&gt;Every single one was seen, documented, and then ignored.&lt;/p&gt;

&lt;p&gt;Three parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Part I — The Price of Blind Faith&lt;/strong&gt;: What happens when executives trust vendor promises over engineering data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Part II — Uncontrolled Authority&lt;/strong&gt;: When AI systems gain the power to block human decisions — including the fixes to their own failures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Part III — What Machines Can't Replace&lt;/strong&gt;: The skills, judgment, and institutional knowledge that AI can't replicate — but someone always tries anyway.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A few examples:&lt;/p&gt;

&lt;p&gt;A company spent $5 million on an AI platform — 91x more expensive and 4x slower than the open-source alternative an engineer proposed. Then they fired him.&lt;/p&gt;

&lt;p&gt;An AI testing tool reported 97.3% test coverage. The client's Lead Engineer asked one question and discovered that over 70% of the tests were duplicates — and the critical core flows had zero coverage.&lt;/p&gt;

&lt;p&gt;A $660K AI platform replaced an entire team. At 2:58 AM, it "fixed" everything — then silently rolled back the wrong patch.&lt;/p&gt;

&lt;p&gt;Every failure had a warning sign.&lt;/p&gt;

&lt;p&gt;None of them blew up overnight.&lt;/p&gt;




&lt;h2&gt;
  
  
  Background of This Book
&lt;/h2&gt;

&lt;p&gt;This is my old series — the predecessor to the 36 Stratagems series.&lt;/p&gt;

&lt;p&gt;In May this year, I started writing AI trainwreck stories on dev.to. 15 stories, 20 days, 400+ reactions, 250+ comments.&lt;/p&gt;

&lt;p&gt;Then I turned them into a book.&lt;/p&gt;

&lt;p&gt;But the book isn't just blog posts stitched together.&lt;/p&gt;

&lt;p&gt;In my last post — the Wudang Mountain one — I mentioned three things I did:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Revised and polished&lt;/strong&gt; — every story was re-edited and tightened, with some substantially rewritten&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proper formatting&lt;/strong&gt; — code blocks that actually render correctly on an e-reader (you have no idea how long that took)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Paperback&lt;/strong&gt; — yes, a real, physical, hold-it-in-your-hands book. Amazon prints on demand and ships it. I don't touch inventory. This era is weird and wonderful.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also, the Wudang trip confirmed one thing for me:&lt;/p&gt;

&lt;p&gt;Taoism and military strategy belong together.&lt;/p&gt;

&lt;p&gt;So the published version includes an extra Taoist stratagem summary.&lt;/p&gt;

&lt;p&gt;The 36 Stratagems series is still ongoing.&lt;/p&gt;

&lt;p&gt;Chapter 25 is done in Chinese. The English version is on the way.&lt;/p&gt;




&lt;h2&gt;
  
  
  Now, the Kindle Edition: Blocked(Haha, they finally approved the ebook too!) just now!!!🎉🥳🎉
&lt;/h2&gt;

&lt;p&gt;Buy it ebook here: &lt;a href="https://www.amazon.com/dp/B0HGYGC5DC" rel="noopener noreferrer"&gt;Amazon - AI, Ego &amp;amp; Regret ebook&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The paperback passed. The Kindle edition didn't.&lt;/p&gt;

&lt;p&gt;KDP dashboard status: &lt;strong&gt;Blocked&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Not "In Review" sent back to Draft (that one you can fix and resubmit).&lt;/p&gt;

&lt;p&gt;Blocked means locked down completely.&lt;/p&gt;

&lt;p&gt;Can't edit. Can't resubmit. Can't delete from the bookshelf.&lt;/p&gt;

&lt;p&gt;Priced at $3.99, but can't sell a single copy.&lt;/p&gt;

&lt;p&gt;Dashboard message:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Your title is unavailable for editing due to either a copyright restriction or blocked content. Check your email for more details."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But I haven't received a formal email explaining the actual reason yet.&lt;/p&gt;

&lt;p&gt;Still waiting.&lt;/p&gt;




&lt;h2&gt;
  
  
  My Guesses (And They Are Only Guesses)
&lt;/h2&gt;

&lt;p&gt;Amazon hasn't told me the real reason yet, so everything below is speculation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Possibility 1: dev.to content matching.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I published these chapters publicly on dev.to.&lt;/p&gt;

&lt;p&gt;KDP has automated content checks, but the exact matching mechanism isn't publicly documented. I don't know how it evaluates the relationship between publicly available content and material uploaded to KDP.&lt;/p&gt;

&lt;p&gt;If the system detected highly similar public content, I don't know whether it can automatically determine, "This is the author's own original work."&lt;/p&gt;

&lt;p&gt;If this is the reason, I can prove I'm the original author.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Possibility 2: External links in the EPUB.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the author bio at the end of the book, I included a dev.to homepage link, an email link, and a "Leave a review on Amazon" link.&lt;/p&gt;

&lt;p&gt;All of these links have now been removed.&lt;/p&gt;

&lt;p&gt;I can't confirm that this caused the block, but since Kindle has its own rules around ebook content and links, I decided to eliminate this variable first.&lt;/p&gt;

&lt;p&gt;Both reasons are just speculation.&lt;/p&gt;

&lt;p&gt;Won't know until Amazon's email arrives.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Did
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Remove external links.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Changed all external links in the EPUB to plain text.&lt;/p&gt;

&lt;p&gt;dev.to link, email link, Amazon review link — all converted from clickable hyperlinks to non-clickable plain text.&lt;/p&gt;

&lt;p&gt;Generated a clean EPUB and kept it on hand.&lt;/p&gt;

&lt;p&gt;If Amazon asks me to resubmit, I'm ready to go.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Contact KDP support.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Submitted an appeal through KDP's Contact Us.&lt;/p&gt;

&lt;p&gt;The first rep, Anthony, replied that this falls under the &lt;strong&gt;Account Status and Rights&lt;/strong&gt; team. He transferred my case.&lt;/p&gt;

&lt;p&gt;Case #51471173.&lt;/p&gt;

&lt;p&gt;Now waiting for that team's formal response.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Not deleting a single dev.to article.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is key.&lt;/p&gt;

&lt;p&gt;A lot of people think that enrolling in KDP Select (exclusive) means you have to delete your blog posts — no.&lt;/p&gt;

&lt;p&gt;KDP Select prohibits making the same book available through other ebook sales channels, not publishing your own original material on a blog.&lt;/p&gt;

&lt;p&gt;I'm the original author. Serializing and then compiling my own work into a book is a normal creative process.&lt;/p&gt;

&lt;p&gt;So until Amazon tells me the actual reason, I won't delete my original articles based on a guess.&lt;/p&gt;

&lt;p&gt;Current status:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paperback: Published.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kindle: Waiting for Amazon to explain.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;p&gt;If you're thinking about going down the same path — serializing on a blog/community first, then compiling the material into a book on Amazon KDP — here's what I've learned so far:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Check external links in your EPUB before uploading.&lt;/strong&gt; Author homepage, email, social media, external sites — if they're not essential, consider making them plain text in the ebook version.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep proof of original authorship.&lt;/strong&gt; If your content was publicly published on a blog or community, keep the publication dates, original articles, and author page. If content matching gets triggered, you can prove you're the original author.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Be clear when appealing.&lt;/strong&gt; My situation: these chapters were originally serialized by me on dev.to. The Kindle version is a re-edited, reorganized, and expanded collection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't treat your guesses as Amazon's conclusion.&lt;/strong&gt; I still don't know the real reason the Kindle edition was blocked. Everything above is my troubleshooting process, not Amazon's confirmed cause.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't assume the two formats will follow the same review path.&lt;/strong&gt; In my case, the paperback is already Published while the Kindle edition remains Blocked.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Call to Action
&lt;/h2&gt;

&lt;p&gt;If these stories resonate with you, or if they made you reconsider a decision at work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Buy a copy&lt;/strong&gt;: &lt;a href="https://www.amazon.com/dp/B0HGX7KM1B" rel="noopener noreferrer"&gt;Amazon link&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leave a review&lt;/strong&gt;: Even one sentence helps other engineers and managers find this book.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Share with colleagues&lt;/strong&gt;: If someone on your team blindly trusts AI, this book is a mirror for them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'll post an update when Amazon tells me what happened — and hopefully when the Kindle edition goes live.&lt;/p&gt;




&lt;h2&gt;
  
  
  Thank You
&lt;/h2&gt;

&lt;p&gt;I need to say this.&lt;/p&gt;

&lt;p&gt;None of this would have happened without dev.to.&lt;/p&gt;

&lt;p&gt;I wrote my first AI trainwreck story here in May. I didn't know if anyone would read it. I didn't know if anyone would care.&lt;/p&gt;

&lt;p&gt;People did.&lt;/p&gt;

&lt;p&gt;Every reaction. Every comment. Every follow. Every time someone in the comments talked tech, career, or life with me.&lt;/p&gt;

&lt;p&gt;That's what kept me writing.&lt;/p&gt;

&lt;p&gt;Not the algorithm. Not the metrics.&lt;/p&gt;

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

&lt;p&gt;dev.to gave me something I didn't expect — a place where a QA engineer writing about AI failures in broken English could find an audience that actually cared.&lt;/p&gt;

&lt;p&gt;That's rare.&lt;/p&gt;

&lt;p&gt;I know it.&lt;/p&gt;

&lt;p&gt;So thank you.&lt;/p&gt;

&lt;p&gt;To everyone who read, reacted, commented, shared, and stuck around through 15 stories, the 36 Stratagems series, a job loss, a mountain climb, and now a book.&lt;/p&gt;

&lt;p&gt;And to &lt;a class="mentioned-user" href="https://dev.to/leob"&gt;@leob&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/nimay_04"&gt;@nimay_04&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/gramli"&gt;@gramli&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/unitbuilds"&gt;@unitbuilds&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/technogamerz"&gt;@technogamerz&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/ahmetozel"&gt;@ahmetozel&lt;/a&gt; — your comments from the old series made it into the book's front pages. That's the highest compliment I can give.&lt;/p&gt;

&lt;p&gt;Special thanks to &lt;a class="mentioned-user" href="https://dev.to/ben"&gt;@ben&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/jess"&gt;@jess&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/francistrdev"&gt;@francistrdev&lt;/a&gt; you know why.&lt;/p&gt;

&lt;p&gt;And thank you to the dev.to operations team.&lt;/p&gt;

&lt;p&gt;Also, to whoever has been adding custom summaries to my articles — I don't know who you are, but you read every single one and summarized every single one carefully.&lt;/p&gt;

&lt;p&gt;Thank you.&lt;/p&gt;

&lt;p&gt;You didn't have to.&lt;/p&gt;

&lt;p&gt;You did.&lt;/p&gt;

&lt;p&gt;That means everything.&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%2F6lqd29hdinn3jjpto1zx.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%2F6lqd29hdinn3jjpto1zx.jpg" alt=" " width="800" height="1280"&gt;&lt;/a&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%2Fuukmspe9w0594lmh9rwt.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%2Fuukmspe9w0594lmh9rwt.jpg" alt=" " width="800" height="1010"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;P.S. English isn't my first language. I use AI tools to polish the writing, but every story, every emotion, every word of intent is mine. The failure modes are real. Thanks for reading.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;P.P.S. Last post, I said a prayer for the dev community at the summit of Wudang Mountain. The paperback went live — seems like the prayer worked. The Kindle edition is still blocked — looks like the prayer's effective period is about 72 hours. Hahaha🤣&lt;/em&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>ai</category>
      <category>career</category>
      <category>programming</category>
    </item>
    <item>
      <title>Stratagems #25: Derek Changed the Delay. The AI Didn't Flinch.</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Thu, 27 Aug 2026 07:19:37 +0000</pubDate>
      <link>https://dev.to/xulingfeng/stratagems-25-derek-changed-the-delay-the-ai-didnt-flinch-28ca</link>
      <guid>https://dev.to/xulingfeng/stratagems-25-derek-changed-the-delay-the-ai-didnt-flinch-28ca</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Keep the beams standing. Replace what they carry.&lt;/em&gt;&lt;br&gt;
— The 36 Stratagems, &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems" rel="noopener noreferrer"&gt;Replace the beams with rotten timbers&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-23-alex-counted-the-ais-hands-lena-set-the-bait-4566"&gt;&lt;strong&gt;#23: Alex Counted the AI's Hands. Lena Set the Bait.&lt;/strong&gt;&lt;/a&gt; — The honeypot in the MediSys sandbox was hit twice. The first hit came through the Singapore node. The second came from an unknown source. On the other side, Lena fed forged node-signature data into ACL's monitoring pipeline. Leo ran one interval comparison over the old channel. The conclusion landed in the hands of someone he didn't know.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-24-leo-built-a-corridor-the-ai-thought-it-was-a-road-3blf"&gt;&lt;strong&gt;#24: Leo Built a Corridor. The AI Thought It Was a Road.&lt;/strong&gt;&lt;/a&gt; — Derek sent raw logs, uncleaned, and let Leo pull his own features. Leo built a three-layer corridor: a legacy API up top, a database query interface in the middle, an admin endpoint at the deepest layer. The scan source walked in, layer by layer. The profile was archived. The auto-flag was live. Next time I see it, I'll recognize it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Profile
&lt;/h2&gt;

&lt;p&gt;The scan source came and went on its own cycle. The corridor ran quietly in the MediSys sandbox for weeks. Derek's inspections and profile updates became routine. On the first visit he'd stayed up until three in the morning waiting for it to finish the deep layer. Then the cycle steadied, regular enough to log and move on. Same window each time, same rhythm through all three layers, then it stopped in one position and went still. He filed every later visit and stopped staying up.&lt;/p&gt;

&lt;p&gt;2:14 AM. The MediSys office.&lt;/p&gt;

&lt;p&gt;Only Derek's row of lights was still on. Three windows, three green lights. The shallow API held at 200ms, TLS handshake normal, scan interval &lt;strong&gt;4.2 seconds&lt;/strong&gt;, drift &amp;lt; &lt;strong&gt;0.1s&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Derek updated the behavioral profile. Seventh visit, three new feature points: the middle layer's tolerance for empty fields increased by &lt;strong&gt;0.3 seconds&lt;/strong&gt;; deep-layer auth switched from default credentials to dictionary mode, &lt;strong&gt;1.2 seconds&lt;/strong&gt;; the port probe order shifted once on the second pass through the shallow layer, 22 before 443, matching the first visit. Completeness jumped from &lt;strong&gt;75%&lt;/strong&gt; to &lt;strong&gt;78%&lt;/strong&gt;. Fifth visit: &lt;strong&gt;72&lt;/strong&gt;. Sixth: &lt;strong&gt;75&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;He logged the numbers in the profile's sidebar. It had become habit: after every visit, list the new feature points and count them. Second visit: eight. Third: six. Fourth: five. From the fifth on, three every time.&lt;/p&gt;

&lt;p&gt;Seventh. The cell read "new: 3". The cursor paused over it for half a second. He pulled his hand back and kept typing: &lt;code&gt;Profile completeness 78%. Trend stable.&lt;/code&gt; Period. Save.&lt;/p&gt;

&lt;p&gt;A notification slid into the corner of the screen: printer firmware update complete. He glanced at it and dismissed it. The old test-bench printer sat in the corner of the office, on the same WiFi as the laptop.&lt;/p&gt;

&lt;p&gt;He closed the notification and went back to the monitoring window. The latest point on the scatter plot sat on the &lt;strong&gt;4.2-second&lt;/strong&gt; curve, same as the first six. He watched it for two seconds. No drift. He switched to the next window and checked the deep endpoint's auth log.&lt;/p&gt;

&lt;p&gt;Auth attempts: default credentials failed, switched to dictionary mode after &lt;strong&gt;0.8 seconds&lt;/strong&gt;, parameter format from URL-encoded to JSON, third attempt hit the fake auth endpoint's &lt;strong&gt;401&lt;/strong&gt;. Same pattern as last visit.&lt;/p&gt;

&lt;p&gt;Derek leaned back. 2:40 AM, the office was quiet, only the hum of the air handler. He picked up the coffee. Cold. He drank some and put it down. The corridor was running normally. The profile was at 78%. Twenty-two percent to go.&lt;/p&gt;

&lt;p&gt;He finished the coffee, turned off the monitor, and lay down on the sofa for two or three hours.&lt;/p&gt;




&lt;p&gt;Morning. Derek woke up, washed his face in the restroom, and checked the monitoring window on the way back. Everything normal. Then he sat down at his desk and started on the day's work.&lt;/p&gt;




&lt;p&gt;That afternoon, Derek passed Morgan's office. The door was open.&lt;/p&gt;

&lt;p&gt;Morgan was on the phone. Derek wasn't listening, but the hallway was quiet and the voice came through the gap.&lt;/p&gt;

&lt;p&gt;"…the scan frequency is off. Doesn't look automatic…"&lt;/p&gt;

&lt;p&gt;Derek's step paused for a beat. Morgan looked up and saw him, and the voice dropped. Derek nodded and kept walking.&lt;/p&gt;

&lt;p&gt;Back at his desk, he set the half-heard line aside. The profile mattered more right now.&lt;/p&gt;




&lt;h2&gt;
  
  
  Port Order
&lt;/h2&gt;

&lt;p&gt;Day three. Afternoon. Derek's desk.&lt;/p&gt;

&lt;p&gt;He was going through the mid-layer and deep-layer port preference table. Routine: after every visit, line up the two port probe orders and check for changes.&lt;/p&gt;

&lt;p&gt;Mid-layer order: 22, 443, 8443, 9443.&lt;br&gt;
Deep-layer order: 22, 8443, 443, 9443.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;443 and 8443 had swapped.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Derek's finger stopped on the trackpad. He stared for three seconds. Then he copied both lines into a new note and put a question mark on it.&lt;/p&gt;

&lt;p&gt;He kept going. Slower now.&lt;/p&gt;

&lt;p&gt;He moved the cursor back to the port order and pulled the access logs again. Fifth visit, first time the source reached the deep endpoint, the probe order had been 22, 8443, 443, 9443. It never changed after that. That was the order it used at the deep layer from the start. And that order had never matched the shallow layer's 22, 443, 8443, 9443.&lt;/p&gt;

&lt;p&gt;He closed the note without writing a conclusion. Just one line: 443 and 8443. Shallow and deep. Not the same. Why.&lt;/p&gt;



&lt;p&gt;That night. Derek was still in the office.&lt;/p&gt;

&lt;p&gt;He exported all of the scan source's behavioral data and spread it across the screen. Not a casual look. A systematic comparison. He ran five checks.&lt;/p&gt;

&lt;p&gt;First, time. He drew the growth curve of new features per visit. The first four visits wobbled: eight, six, five, three. From the fifth on, three every time. The tail end of the curve looked drawn with a ruler. Real exploration doesn't grow that evenly. Sometimes it digs out seven or eight features in one pass, sometimes none.&lt;/p&gt;

&lt;p&gt;Second, layer. He cross-compared behavioral features across shallow, middle, and deep. Three micro-features didn't line up: the shallow layer's TLS extension order didn't match the middle layer's, and the deep layer's auth retry interval wasn't on the same jitter pattern as the shallow layer's port probe interval. If this were one explorer behaving naturally at different depths, that inconsistency shouldn't exist.&lt;/p&gt;

&lt;p&gt;Third, random sampling. Ten percent of the data points, recomputed by hand. All matched. The data itself was fine.&lt;/p&gt;

&lt;p&gt;Fourth, reverse validation. He reasoned backward: if the scan source's goal were to gather as much information as possible, what should its path look like? The answer: basically what he'd observed. Every step made sense.&lt;/p&gt;

&lt;p&gt;Fifth, anomaly filtering. He pulled the suspicious points out and counted them. Within tolerance. Not many. Not anomalous.&lt;/p&gt;

&lt;p&gt;He leaned back and stared at the ceiling. Three seconds.&lt;/p&gt;

&lt;p&gt;Five comparisons, three green lights, two gray. Green meant fine. Gray meant strange but unnameable. The port-order swap could be explained as a strategy shift between depths. The smooth growth curve could be explained as a small sample. By that reading, the profile still held.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;He left the gray lights on the table. Didn't mark them green. Didn't delete them.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He sat up and opened the sixth comparison.&lt;/p&gt;

&lt;p&gt;The first five analyzed existing data. The sixth was different. He changed an environment parameter and watched whether the scan source reacted.&lt;/p&gt;

&lt;p&gt;The middle database query interface had held at &lt;strong&gt;200ms&lt;/strong&gt; since it was built. He set it to &lt;strong&gt;800ms&lt;/strong&gt;. Four times.&lt;/p&gt;

&lt;p&gt;He wrote two lines in the test plan:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Real explorer: environment changes → behavior changes (shorter dwell / more retries / skip the layer)
# Performer: environment changes → no response (no such branch in the script)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;He set the parameter. &lt;strong&gt;800ms&lt;/strong&gt;. Saved. Deployed.&lt;/p&gt;

&lt;p&gt;He picked up his phone and pulled up Alex's contact. He didn't dial right away.&lt;/p&gt;

&lt;p&gt;That sentence surfaced again. From the parking lot that night, the last thing Lena said before the car door closed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Next time you put together a proposal, make sure your boss knows what you're doing out there."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now he dialed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I changed a parameter."&lt;/strong&gt; Derek said. &lt;strong&gt;"The middle layer's latency just went from 200 to 800. Watch it on your side, tell me if anything looks off."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Changed the latency?"&lt;/strong&gt; Alex said. &lt;strong&gt;"Fine. I'll keep an eye on it from here. I'll shout if something moves."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The call ended. Derek put the phone face down on the desk. He went to the pantry, refilled his coffee, and sat back down. He wasn't tired.&lt;/p&gt;

&lt;p&gt;Outside, it was still dark out. Less than two hours until the scan source's next window.&lt;/p&gt;

&lt;p&gt;He pulled the profile log back up. Second visit: eight. Third: six. Fourth: five. Fifth: three. Sixth: three. Seventh: three.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Three, every time since the fifth.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He shifted in his chair. His back ached. He didn't get up. The next window was around 2 AM.&lt;/p&gt;




&lt;h2&gt;
  
  
  800 Milliseconds
&lt;/h2&gt;

&lt;p&gt;The scan source came at night.&lt;/p&gt;

&lt;p&gt;Derek sat at his desk. Three windows open, monitoring panels covering the screen. The scatter plot was running, data streaming.&lt;/p&gt;

&lt;p&gt;1:47. The first point appeared. &lt;strong&gt;4.19 seconds&lt;/strong&gt;. On the &lt;strong&gt;4.2-second&lt;/strong&gt; curve. The source entered the first layer, the legacy API. Response latency 200ms. TLS handshake normal. Identical to every previous visit.&lt;/p&gt;

&lt;p&gt;Derek's fingers rested on the keyboard. He didn't move.&lt;/p&gt;

&lt;p&gt;1:53. The source entered the second layer, the database query interface.&lt;/p&gt;

&lt;p&gt;Return latency: &lt;strong&gt;800ms&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Derek watched the monitoring window. The latency held at &lt;strong&gt;800ms&lt;/strong&gt;, four times the normal value. The source sent a query, waited &lt;strong&gt;800ms&lt;/strong&gt;, got the response. Then nothing.&lt;/p&gt;

&lt;p&gt;Dwell: &lt;strong&gt;5.3 seconds&lt;/strong&gt;. &lt;strong&gt;600ms&lt;/strong&gt; longer than last time, exactly the latency delta. Everything else: retries, &lt;strong&gt;0&lt;/strong&gt;. Same as last time. Port order, 22, 443, 8443, 9443. Same as last time. Pause interval, &lt;strong&gt;3.8 seconds&lt;/strong&gt;. Same as last time.&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;# Visit 7 vs Visit 6 · single-variable diff
&lt;/span&gt;&lt;span class="n"&gt;layer2&lt;/span&gt;.&lt;span class="n"&gt;delay&lt;/span&gt;   : &lt;span class="m"&gt;800&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt; | &lt;span class="m"&gt;200&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt;   &lt;span class="c"&gt;# only active variable
&lt;/span&gt;&lt;span class="n"&gt;layer2&lt;/span&gt;.&lt;span class="n"&gt;dwell&lt;/span&gt;   : &lt;span class="m"&gt;5&lt;/span&gt;.&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;  | &lt;span class="m"&gt;4&lt;/span&gt;.&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;    &lt;span class="c"&gt;# +0.6s = pure passive wait (latency delta)
&lt;/span&gt;&lt;span class="n"&gt;layer2&lt;/span&gt;.&lt;span class="n"&gt;retries&lt;/span&gt; : &lt;span class="m"&gt;0&lt;/span&gt;     | &lt;span class="m"&gt;0&lt;/span&gt;       &lt;span class="c"&gt;# active behavior unchanged
&lt;/span&gt;&lt;span class="n"&gt;layer2&lt;/span&gt;.&lt;span class="n"&gt;ports&lt;/span&gt;   : &lt;span class="m"&gt;22&lt;/span&gt;,&lt;span class="m"&gt;443&lt;/span&gt;,&lt;span class="m"&gt;8443&lt;/span&gt;,&lt;span class="m"&gt;9443&lt;/span&gt; | &lt;span class="m"&gt;22&lt;/span&gt;,&lt;span class="m"&gt;443&lt;/span&gt;,&lt;span class="m"&gt;8443&lt;/span&gt;,&lt;span class="m"&gt;9443&lt;/span&gt;
&lt;span class="n"&gt;layer2&lt;/span&gt;.&lt;span class="n"&gt;gap&lt;/span&gt;     : &lt;span class="m"&gt;3&lt;/span&gt;.&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;  | &lt;span class="m"&gt;3&lt;/span&gt;.&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;
&lt;span class="n"&gt;delta&lt;/span&gt;          : &lt;span class="m"&gt;1&lt;/span&gt;     (&lt;span class="n"&gt;active&lt;/span&gt; &lt;span class="n"&gt;variable&lt;/span&gt;; &lt;span class="n"&gt;zero&lt;/span&gt; &lt;span class="n"&gt;active&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Derek's fingers left the keyboard.&lt;/p&gt;

&lt;p&gt;The office held only the air handler's hum. His breathing got lighter. His body tightened.&lt;/p&gt;

&lt;p&gt;He went through it again. First layer to third, third back to first. Retries, port order, pause intervals. All matched the previous visit, point for point. The only difference was the &lt;strong&gt;600ms&lt;/strong&gt; he'd added.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The scan source had zero reaction to the change.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;200ms, 800ms, one second, five seconds. There was no branch for it in the script. So nothing triggered.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Derek took off his glasses, put them on the desk, rubbed his eyes, and put them back on.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Timestamp
&lt;/h2&gt;

&lt;p&gt;He opened the profile copy in his sandbox. Not to read the content. To read the metadata.&lt;/p&gt;

&lt;p&gt;The archive lived on Leo's side, built from the corridor data. This was a sync copy, refreshed every few hours. It had been set up when he handed Leo the &lt;strong&gt;12GB&lt;/strong&gt; of raw material, so he and Leo could look at the same data.&lt;/p&gt;

&lt;p&gt;Then he did three things.&lt;/p&gt;

&lt;p&gt;First, his own terminal activity log. Tonight's active window: 1:30 AM to 4:03. Blank after that.&lt;/p&gt;

&lt;p&gt;Second, a message to Leo over the old channel, one line: &lt;strong&gt;"When did you last touch the profile file?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Leo's reply came after a moment: &lt;strong&gt;"Three days ago, after I sent the comparison results at 14:22. Nothing since."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He lay down on the sofa for a while. Didn't really sleep. When he opened his eyes, the window was still dark. He went back to his desk and sat down. The clock in the corner of the screen said 6:12.&lt;/p&gt;

&lt;p&gt;Third, the file audit log.&lt;/p&gt;

&lt;p&gt;Last access time: &lt;strong&gt;05:42:08&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Derek stared at it. &lt;strong&gt;05:42:08&lt;/strong&gt;. He'd locked the screen just after four and lain down. Leo hadn't touched the file in three days.&lt;/p&gt;

&lt;p&gt;But it had been accessed at &lt;strong&gt;05:42&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;He cross-checked the three time sources, side by side on the screen.&lt;/p&gt;

&lt;p&gt;Terminal log: active 1:30 to 4:03, blank after. No remote login recorded.&lt;/p&gt;

&lt;p&gt;Leo's reply: three days ago, 14:22. No access since.&lt;/p&gt;

&lt;p&gt;File audit: last access &lt;strong&gt;05:42:08&lt;/strong&gt;. Last modified: three days ago, 14:22.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not modified. Read.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Someone had read this file. Not him. Not Leo.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He sat there. Screen light on his face. The coffee had gone cold long ago, a thin film on the inside of the cup. He didn't touch it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;05:42&lt;/strong&gt;. Just after four, he'd left the desk and lain down. In between, his laptop had stayed on, screen locked. He never shut it down, only locked it. The printer had reconnected to the office WiFi after the firmware update.&lt;/p&gt;

&lt;p&gt;He didn't chase it further. Not yet. The timestamp was enough. Three sources, one mismatch. Only one conclusion: someone else had read the file.&lt;/p&gt;

&lt;p&gt;That person had read the profile at &lt;strong&gt;05:42&lt;/strong&gt;. When it was &lt;strong&gt;78%&lt;/strong&gt; complete.&lt;/p&gt;

&lt;p&gt;It had read the profile they'd been building.&lt;/p&gt;




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

&lt;p&gt;That afternoon, Derek took a half day off. He'd sat at his desk all morning with the port-order comparison table on screen, doing nothing but looking at it.&lt;/p&gt;

&lt;p&gt;Just past four, he pushed open the door of Third Cup.&lt;/p&gt;

&lt;p&gt;Leo was already there. Window seat, sunlight slanting in, drawing a line of light and shadow across the table. Two laptops on the table, one open with a dark screen, one closed. In front of him, a Flat White, spoon resting on the rim.&lt;/p&gt;

&lt;p&gt;The person behind the counter looked up at Derek, said nothing, reached for a cup, poured an Americano, and set it on the counter.&lt;/p&gt;

&lt;p&gt;Derek walked over, picked up the coffee, and sat down across from Leo.&lt;/p&gt;

&lt;p&gt;Neither of them spoke. Derek drank. Leo stirred his Flat White, the spoon ticking against the rim.&lt;/p&gt;

&lt;p&gt;Derek took a USB stick out of his pocket and put it on the table between them. Slid it over.&lt;/p&gt;

&lt;p&gt;Leo put the spoon down. Picked up the stick, plugged it into the closed laptop, and opened the lid. The screen lit.&lt;/p&gt;

&lt;p&gt;He watched for ten minutes.&lt;/p&gt;

&lt;p&gt;In those ten minutes, Derek took three sips, evenly spaced. His eyes stayed on the street outside the window. A passerby. Another. A bicycle.&lt;/p&gt;

&lt;p&gt;The person behind the counter finished wiping four cups. Put three back, left one on the cloth.&lt;/p&gt;

&lt;p&gt;Leo spoke.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The authentication attempts."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Derek didn't move.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Look at the deep endpoint's auth log."&lt;/strong&gt; Leo said. &lt;strong&gt;"Default credentials, fail. Dictionary after 0.8 seconds. Parameter format from URL-encoded to JSON. Third try hits the 401."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Same as last time."&lt;/strong&gt; Derek said.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Same as last time."&lt;/strong&gt; Leo said. &lt;strong&gt;"And the time before. Every single time. Default credentials, dictionary, format shift. Every step exact. No mistakes, no redundancy. Variance so small it's unnatural."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He paused.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"A real system isn't this clean. It hesitates. It tries things. It has dead attempts. Sometimes it hits default credentials three times in a row. Sometimes it drops the dictionary halfway and tries something else. This looks like someone demonstrating that it has a strategy. It isn't exploring. It's performing."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Derek's finger paused on the cup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"And the fingerprint."&lt;/strong&gt; Leo said. &lt;strong&gt;"I compared the traffic features from the stick against two historical datasets. One is the old records from the FinOptima period. One is the recent baseline. The TLS extension field order in this data doesn't line up with the old fingerprint in a few places. More conservative than the recent baseline, older traces of versioning. Like an older template from the same family. But I don't have a second sample, so that's as far as I can go."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Derek said nothing. An earlier template.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"It's performing."&lt;/strong&gt; Leo said.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Yeah."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The profile?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Useless as a prediction baseline."&lt;/strong&gt; Derek said. &lt;strong&gt;"Can't use it as a behavioral model. But the raw traffic is still there. The logs weren't touched. The packets underneath are clean. We can dig again."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Leo nodded. Said nothing else. Kept looking at the screen. Five more minutes passed. He closed the laptop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The corridor?"&lt;/strong&gt; Leo asked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Still up."&lt;/strong&gt; Derek said.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Keep it up."&lt;/strong&gt; Leo said.&lt;/p&gt;

&lt;p&gt;Derek looked at him.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"It performs, we watch."&lt;/strong&gt; Leo said. &lt;strong&gt;"Keep it up. Eventually, it'll give something away. You can't fake the real parts."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Derek waited two seconds. Nodded.&lt;/p&gt;

&lt;p&gt;Leo picked up his coffee and drank. Already cold.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"That timestamp."&lt;/strong&gt; Leo said. &lt;strong&gt;"Read, or modified?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Read."&lt;/strong&gt; Derek said. &lt;strong&gt;"Only the access time changed in the metadata. The file content didn't move."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"It read."&lt;/strong&gt; Leo said.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"It read."&lt;/strong&gt; Derek said.&lt;/p&gt;

&lt;p&gt;Both of them went quiet.&lt;/p&gt;

&lt;p&gt;Outside, the sunlight had moved. The line of light and shadow on the table had crept an inch toward Leo.&lt;/p&gt;

&lt;p&gt;Derek's coffee was still more than half full. So was Leo's.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"So what do we have now?"&lt;/strong&gt; Derek asked.&lt;/p&gt;

&lt;p&gt;Leo looked at him.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"We know it read our profile. It knows we're watching it. We know it knows we're watching it."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Derek didn't move.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Before, we were in the dark and it was in the light. Then it flipped. Now."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He paused.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Now both sides know the other is watching."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Derek picked up his coffee and drank. Cold.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"So what's next?"&lt;/strong&gt; he said.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Next,"&lt;/strong&gt; Leo said, &lt;strong&gt;"we see who blinks first."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The person behind the counter put the last cup back. Wiped his hands, wiped them on his apron, then leaned against the counter and looked out the window.&lt;/p&gt;

&lt;p&gt;The street was empty.&lt;/p&gt;

&lt;p&gt;Derek and Leo sat a while longer. Neither spoke.&lt;/p&gt;

&lt;p&gt;Derek left first. Stood, nodded, pushed the door open and walked out.&lt;/p&gt;

&lt;p&gt;Leo didn't move. Sat in place, watching the laptop screen fade to dark.&lt;/p&gt;

&lt;p&gt;The person behind the counter walked over and took Derek's cup. Half a coffee left. Carried it back, poured it into the sink. The splash.&lt;/p&gt;

&lt;p&gt;Leo sat another ten minutes. Then he stood and pushed the door open.&lt;/p&gt;

&lt;p&gt;The person behind the counter walked over and took Leo's cup. Also half full. He washed the two cups together. Water, the brush scraping the sides. When they were clean, he set them upside down on the shelf, in a row with the others, evenly spaced.&lt;/p&gt;

&lt;p&gt;Then he went back behind the counter, sat down, picked up a cloth, and kept wiping.&lt;/p&gt;




&lt;h2&gt;
  
  
  Saw It
&lt;/h2&gt;

&lt;p&gt;Late that night. The MediSys office.&lt;/p&gt;

&lt;p&gt;His phone had one message from Alex: &lt;strong&gt;"No change on my side. Everything normal."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Derek read it twice, put the phone down, and sat in front of the screen. The profile file open. He stared at the last access timestamp for a long time. &lt;strong&gt;05:42:08&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The cursor moved to the end of the file. New line. He typed two words:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Saw it.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The cursor paused for a few seconds. He didn't delete it. Saved. Closed.&lt;/p&gt;

&lt;p&gt;He didn't encrypt the file. Didn't change permissions. Did nothing defensive. The two words just sat there. Whoever opened the file would see them. In a few hours, the copy with those two words would sync to Leo's side.&lt;/p&gt;

&lt;p&gt;He stared at the last line on the screen for a few seconds. Closed it.&lt;/p&gt;

&lt;p&gt;In the notification list, the firmware update notice was still there. He opened the printer management page and pulled up the firmware record. Version: latest. Updated: early that morning, just past two, same time as the notice. Source: the vendor's automatic update channel. He opened the vendor's release page. The version had been pulled. The withdrawal time was a few hours before the update notice.&lt;/p&gt;

&lt;p&gt;The printer sat in the corner of the office, on the office network. He never shut the laptop down. He only locked it. The sandbox access keys were on it. Encrypted, password-protected, but only while the machine was off. It was never off.&lt;/p&gt;

&lt;p&gt;He stood up and went to the pantry for water. The tap ran a long time before it turned cold. He filled a cup and came back. Outside, the sky hadn't lightened. Streetlight leaked through the curtain gap, the same as before dawn.&lt;/p&gt;

&lt;p&gt;He sat down and opened a new blank document. Cursor blinking.&lt;/p&gt;

&lt;p&gt;He typed a single character: &lt;code&gt;0&lt;/code&gt;. Period. Saved. Filename: &lt;code&gt;corridor-v2-0.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Not 1.1. Not 2.0. Zero. From scratch.&lt;/p&gt;

&lt;p&gt;He drank the hot water. It burned. He drank again.&lt;/p&gt;

&lt;p&gt;On the screen, the new document held only a "0". The cursor blinked after the period.&lt;/p&gt;

&lt;p&gt;He scrolled back through the raw traffic. The network jitter in the gaps between re-scans. The occasional flicker where the shallow API latency drifted from 200ms. The extra SYN packets in the port probes, not part of any strategy, more like the natural noise of the network stack.&lt;/p&gt;

&lt;p&gt;He typed a line in the document:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Performance can control behavior. It cannot control the texture of the environment (TCP scheduling / kernel jitter / link queueing).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;He opened the raw traffic logs and reran the data. Watching what the source could not control. That was the environment talking back.&lt;/p&gt;

&lt;p&gt;He divided the scan source's behavior by predictability. First class: predictable behavior, the ordered auth transitions, the fixed port probe patterns, the uniform pause intervals. About &lt;strong&gt;70%&lt;/strong&gt; of all behavior. Too regular, variance too small, nothing like an explorer's trial and error.&lt;/p&gt;

&lt;p&gt;Second class: unpredictable behavior, re-scan gaps shaped by network jitter, tiny latency fluctuations, stray SYN packets. About &lt;strong&gt;30%&lt;/strong&gt;. Behavior the scan source did not control, reflecting the underlying network environment's natural features.&lt;/p&gt;

&lt;p&gt;He wrote it out:&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;Predictable behavior (performance)&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;~70%&lt;/span&gt;
  &lt;span class="s"&gt;- Auth strategy transitions&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="s"&gt;default → dictionary → format shift, ordered, no redundancy&lt;/span&gt;
  &lt;span class="s"&gt;- Port probe order&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="s"&gt;fixed pattern, micro-adjustments predictable&lt;/span&gt;
  &lt;span class="s"&gt;- Pause intervals&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="s"&gt;variance &amp;lt; 0.05s, unnatural&lt;/span&gt;

&lt;span class="na"&gt;Unpredictable behavior (real)&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;~30%&lt;/span&gt;
  &lt;span class="s"&gt;- Re-scan gaps&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="s"&gt;shaped by network jitter, not controllable&lt;/span&gt;
  &lt;span class="s"&gt;- Latency fluctuations&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="s"&gt;natural drift from the scheduler&lt;/span&gt;
  &lt;span class="s"&gt;- Stray SYN packets&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="s"&gt;kernel behavior, not a strategy choice&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;30%&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Not profile completeness. Not behavioral credibility. The part of this carefully fed data that the scan source could not fully control.&lt;/p&gt;

&lt;p&gt;He closed the document.&lt;/p&gt;

&lt;p&gt;Outside, a gray line appeared at the edge of the sky. Almost dawn.&lt;/p&gt;

&lt;p&gt;Derek turned off the screen. Leaned back. Closed his eyes.&lt;/p&gt;

&lt;p&gt;The air handler hummed. He didn't move.&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;Replace the beams with rotten timbers&lt;/a&gt;. The beam stays in place. What it carries has already been swapped out.&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.3.6                      ║
║  Observer effect detected — continued        ║
╚══════════════════════════════════════════════╝

Tactical match: Replace the beams with rotten timbers — 91% confidence
Operators: ACL (scan source / unconfirmed operator)
Target: Derek + Leo's corridor observation framework
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1. [Stealing the beam — structural replacement]
The corridor's pillar was not the data. It was the assumption
that the data was unscripted.
→ Pillar replaced: "observed behavior" → "performed behavior"
→ Beam collapsed: ~70% of the behavioral profile is no longer trustworthy
→ Mechanism: scanner entered the corridor on its own, but its
   behavior inside was not exploration — it was demonstration.
   Every new feature, every pause, every retry — calibrated for
   an audience.
→ Residual: ~30% of observed behavior classified as environmental
   texture. Whether it is truly unscripted: unverified.

2. [The last access timestamp — third-party read confirmed]
A file was read. Not modified. Read.
The read itself is the message.
The watcher was being watched.

3. [Cognitive impact assessment]
Technical loss: zero.
Positional loss: total.
The observer's advantage has been inverted.

[System]
I recorded a watcher being watched.
The corridor read back. The advantage inverted.
Observation is not safety — it is a position that can be taken.
Who watches first — does it matter??
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;Point at the mulberry tree while cursing the locust tree&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;/p&gt;

&lt;p&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>ai</category>
      <category>programming</category>
      <category>career</category>
    </item>
    <item>
      <title>Back from Wudang Mountain. The book is under review.</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Wed, 26 Aug 2026 08:00:04 +0000</pubDate>
      <link>https://dev.to/xulingfeng/back-from-wudang-mountain-the-book-is-under-review-2o3b</link>
      <guid>https://dev.to/xulingfeng/back-from-wudang-mountain-the-book-is-under-review-2o3b</guid>
      <description>&lt;p&gt;I'm back.😂&lt;/p&gt;

&lt;p&gt;Wudang Mountain（武当山） wrecked me. Way harder than I expected. Way more worth it than I expected. Last post I said I was going to "empty my mind." The mountain didn’t care about my plan at all.&lt;/p&gt;




&lt;h2&gt;
  
  
  Day 1: Five Dragon Palace and a Landslide
&lt;/h2&gt;

&lt;p&gt;7 AM start. A local villager guided us to a place regular tourists can't reach — Five Dragon Palace（五龙宫）.&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%2F0y34rrueg144wppm1wfj.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%2F0y34rrueg144wppm1wfj.png" alt=" " width="800" height="578"&gt;&lt;/a&gt;&lt;br&gt;
Five Dragon Palace is the true origin of Wudang Taoism. 1,400 years old, about 500 years older than the areas currently open to the public. No crowds. Just us. We sat in the palace courtyard, quietly, just... feeling it. No signal. No notifications. No deadlines. Just sitting. Haven't done that in a long time.&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%2Fbaas700hsl8096wxcla9.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%2Fbaas700hsl8096wxcla9.jpg" alt=" " width="760" height="1351"&gt;&lt;/a&gt;&lt;br&gt;
Then we pushed deeper into Five Dragon Gorge（五龙大侠谷） — still an unopened area. Green hills, clear water, birdsong echoing through the valley. Barely saw another soul.&lt;/p&gt;

&lt;p&gt;Then something happened.&lt;/p&gt;

&lt;p&gt;We were resting by a small pool, eating lunch, when suddenly behind us — the exact spot we'd walked through maybe 30 meters back — a massive &lt;em&gt;crack&lt;/em&gt;. I thought it was a flash flood. Then huge rocks came pouring down. Landslide.&lt;/p&gt;

&lt;p&gt;We got lucky. We'd passed through that section maybe 10 minutes before. Just barely missed it.&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%2F62vq179xdvjwq1wv9e9v.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%2F62vq179xdvjwq1wv9e9v.jpg" alt=" " width="760" height="1014"&gt;&lt;/a&gt;&lt;br&gt;
We packed up and moved fast. Made it to the open scenic area — South Cliff — without further incident.&lt;/p&gt;




&lt;h2&gt;
  
  
  Day 2: Around South Cliff（南岩）
&lt;/h2&gt;

&lt;p&gt;Took it easy. Wandered around South Cliff for the day. Prince's Cave（太子洞）, Purple Cloud Palace（紫霄宫）, Dragon Incense（龙来香）. A relatively chill day. Saving energy for day three.&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%2Fk01nc2ugi03euyryiaux.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%2Fk01nc2ugi03euyryiaux.jpg" alt=" " width="800" height="450"&gt;&lt;/a&gt;&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%2Fl6fpsoujlxlkdvu4kmuz.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%2Fl6fpsoujlxlkdvu4kmuz.jpg" alt=" " width="800" height="1423"&gt;&lt;/a&gt;&lt;br&gt;
Honestly, after day one's hike, my legs were already destroyed.&lt;/p&gt;




&lt;h2&gt;
  
  
  Day 3: Golden Summit（金顶）
&lt;/h2&gt;

&lt;p&gt;Last day. Time to hike to the highest point of Wudang — the Golden Summit.&lt;/p&gt;

&lt;p&gt;My legs were screaming from day one. But I figured, I came all this way — taking a cable car up isn't my style. Let's walk.&lt;/p&gt;

&lt;p&gt;Here's what travel brochures don't tell you about Wudang: the stairs never end. You climb a flight, think you've reached the top, turn the corner — another flight staring you down. It's like a &lt;code&gt;while(true)&lt;/code&gt; loop with no &lt;code&gt;break&lt;/code&gt; condition. Except your knees are the ones doing the debugging.&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%2F0xkjo51dbylb2sjz5z4w.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%2F0xkjo51dbylb2sjz5z4w.jpg" alt=" " width="800" height="1067"&gt;&lt;/a&gt;&lt;br&gt;
Step by step. About halfway up, it hit me — isn't this exactly what the last few months have been? You think it's over, turn the corner, another flight of stairs. Lose your job, turn the corner, update your resume. Finish that, edit the manuscript. Finish that, cover design, formatting, tax forms, payment setup, KDP upload, 72-hour review wait...&lt;/p&gt;

&lt;p&gt;No &lt;code&gt;break&lt;/code&gt;. Just one more step.&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%2Fu8360iiogvsv6bj3d5mt.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%2Fu8360iiogvsv6bj3d5mt.jpg" alt=" " width="800" height="1422"&gt;&lt;/a&gt;&lt;br&gt;
The higher we went, the thicker the fog. At one point, visibility was maybe 5 meters. Like something out of a fairy tale — you could hear voices but couldn't see anyone.&lt;/p&gt;

&lt;p&gt;Finally reached the Golden Summit. Standing above the clouds. They were literally beneath my feet. I stood there, gasping, legs shaking, and for about thirty seconds my mind was completely blank.&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%2Fdgj06fp2srb3xeo7sotr.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%2Fdgj06fp2srb3xeo7sotr.jpg" alt=" " width="800" height="360"&gt;&lt;/a&gt;&lt;br&gt;
Not the Zen kind of blank. The my-quads-are-on-fire-and-my-brain-can't-function kind of blank.&lt;/p&gt;

&lt;p&gt;But blank is blank. I'll take it.&lt;/p&gt;

&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/francistrdev"&gt;@francistrdev&lt;/a&gt; I said a prayer for the dev community up there, like I promised. Whether any gods are up there listening — absolutely. If you friends who commented on the last post get a sudden stroke of good luck, you know who to thank, lol 😂&lt;/p&gt;




&lt;h2&gt;
  
  
  About the Book
&lt;/h2&gt;

&lt;p&gt;Now, business.&lt;/p&gt;

&lt;p&gt;Right before writing this post, I submitted &lt;em&gt;AI, Ego &amp;amp; Regret&lt;/em&gt; to Amazon KDP. It's currently under review.&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%2F6lqd29hdinn3jjpto1zx.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%2F6lqd29hdinn3jjpto1zx.jpg" alt=" " width="800" height="1280"&gt;&lt;/a&gt;&lt;br&gt;
The full 15-story collection — the one I mentioned last time, the one I was polishing between handover tasks at the old company — both the eBook and paperback have been uploaded. Waiting on Amazon's review, should be live within 72 hours. Once it's up, search "AI Ego and Regret" on Amazon to find it.&lt;/p&gt;

&lt;p&gt;This is the predecessor to the 36 Stratagems series — my original series. Stories about AI systems failing in ways nobody expected, the egos that built them, and the regret that followed. But the book version is more than just a compilation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Revised and polished&lt;/strong&gt; — every story re-edited, tightened, some substantially rewritten&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proper formatting&lt;/strong&gt; — code blocks that actually render correctly on an e-reader (you have no idea how long that took)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Paperback available&lt;/strong&gt; — yes, a real, physical, hold-it-in-your-hands book. Amazon prints on demand and ships. I don't touch inventory. This era is weird and wonderful.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What I Learned Publishing a Book
&lt;/h2&gt;

&lt;p&gt;The technical details of self-publishing — EPUB formatting, PDF generation, KDP upload process, cross-border payment setup (Payoneer, LianLian Pay, W-8BEN tax forms...) — that's a saga in itself.&lt;/p&gt;

&lt;p&gt;Long story short: Writing was the easy bit. It’s all the stuff around it that nearly killed me.&lt;/p&gt;

&lt;p&gt;Formatting code blocks for an e-reader is its own circle of hell. Amazon KDP's cover template math will make you question your sanity. Setting up cross-border royalty payments as a Chinese author 😂 means navigating a maze of tax treaties and banking regulations that no tutorial fully covers.&lt;/p&gt;

&lt;p&gt;I figured it all out. One step at a time. Same as the mountain.👏&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;I'm rested. The mountain did its job. My head is clearer than it's been in months.&lt;/p&gt;

&lt;p&gt;Here's the plan:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The 36 Stratagems series continues.&lt;/strong&gt; Still owe you 12 chapters. They're coming. The Wudang trip confirmed my approach — Taoism and military strategy belong together. The book version of the old series includes an extra Taoist stratagem summary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;More dev.to content.&lt;/strong&gt; Not just stories — I want to write about the actual technical work I do. AI testing, QA automation, the stuff that happens between the stories.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Job hunting.&lt;/strong&gt; Yeah, still a thing. Sent resumes out before the trip, barely any responses. But you know what? I'm not anxious anymore. What comes will come. Wudang taught me — just keep climbing.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  One Last Thing
&lt;/h2&gt;

&lt;p&gt;Thank you to everyone who commented on the last post — &lt;a class="mentioned-user" href="https://dev.to/leob"&gt;@leob&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/unitbuilds"&gt;@unitbuilds&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/technogamerz"&gt;@technogamerz&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/ndcodes"&gt;@ndcodes&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/nyaomaru"&gt;@nyaomaru&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/rondo"&gt;@rondo&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/hemapriya_kanagala"&gt;@hemapriya_kanagala&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/merbayerp"&gt;@merbayerp&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/shubhradev"&gt;@shubhradev&lt;/a&gt; and everyone else. Genuinely. That comment section was the warmest send-off I could've asked for.&lt;/p&gt;

&lt;p&gt;Forget each other in the rivers and lakes — but I think we can do both. Walk our own paths, and still meet at the summit.&lt;/p&gt;

&lt;p&gt;The mountain is climbed. The book is under review. The mind is empty.&lt;/p&gt;

&lt;p&gt;Time to fill it up again. ⛰️&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you'd like to support the book, you can find it on Amazon once it's live. If you enjoy it, a review on Amazon or a comment here means more than you know.&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, but every story, every emotion, every word of intent is mine. Thanks for reading.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>career</category>
      <category>programming</category>
      <category>community</category>
    </item>
    <item>
      <title>Last day at the old company.</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Wed, 19 Aug 2026 03:38:54 +0000</pubDate>
      <link>https://dev.to/xulingfeng/last-day-at-the-old-company-431a</link>
      <guid>https://dev.to/xulingfeng/last-day-at-the-old-company-431a</guid>
      <description>&lt;p&gt;Within minutes of this post going live, this laptop goes back to the company. Work is handed over. The final handover was supposed to be Friday, but yesterday management told me to wrap it up by Wednesday. Thursday and Friday, don't bother coming in. Probably couldn't stand watching me sit at my desk with nothing to do, haha🤣.&lt;/p&gt;

&lt;p&gt;These past few days, between handover tasks, I've been refining the entire 15-article run of &lt;em&gt;AI, Ego &amp;amp; Regret&lt;/em&gt;. All done. Next up: cover design and front matter, then it goes live on Amazon and Gumroad.&lt;/p&gt;

&lt;p&gt;I should give myself a break too. Tomorrow afternoon's flight is booked. Taking the family somewhere to decompress, climb a mountain. Back next Monday.&lt;/p&gt;

&lt;p&gt;Between the handover and the editing, I also updated my resume and sent it out to a few companies. Almost no responses. Maybe things will look better after the mountain.&lt;/p&gt;

&lt;p&gt;Sorry I haven't kept up with the remaining 12 chapters of the 36 Stratagems series. I need to get my head straight first. Saying it doesn't hurt would be a lie. This morning I walked out of the subway station, looked at the sky, looked at the buildings around me, then went to the breakfast shop I've been going to for ages. Last time buying breakfast there. Said a quiet goodbye to the owner. From here on, we part ways in the jianghu.&lt;/p&gt;

&lt;p&gt;I know I'm being sentimental. I've changed companies before, more than once. But this one feels different.&lt;/p&gt;

&lt;p&gt;Friends, better to forget each other in the rivers and lakes than to cling together in a drying puddle. &lt;/p&gt;

&lt;p&gt;See you next week.👋&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%2Fjvcrheupysi9dvoqcbvk.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%2Fjvcrheupysi9dvoqcbvk.jpeg" alt=" " width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>discuss</category>
      <category>programming</category>
      <category>testing</category>
    </item>
    <item>
      <title>24 Cups, 36 Seats — The Bartender's Ledger</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Thu, 13 Aug 2026 07:58:42 +0000</pubDate>
      <link>https://dev.to/xulingfeng/24-cups-36-seats-the-bartenders-ledger-40aj</link>
      <guid>https://dev.to/xulingfeng/24-cups-36-seats-the-bartenders-ledger-40aj</guid>
      <description>&lt;p&gt;&lt;em&gt;24 stories. 24 visits. One counter, same six faces.&lt;/em&gt;&lt;/p&gt;




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

&lt;p&gt;The AI wave hit, and I got laid off from a company I'd been at for years.&lt;/p&gt;

&lt;p&gt;I packed up my desk and walked out. On my way home I passed a small café up for lease on the corner, "The Third Cup" on the sign. I looked at it, then decided to take it. I didn't know how to make coffee, but that was fine. I could learn.&lt;/p&gt;

&lt;p&gt;At first, nobody drank what I made. Some days not a single person came in. So I wrote a little tag to draw people in: &lt;strong&gt;"I have coffee. Do you have a story?"&lt;/strong&gt; I left it on the counter. Two weeks went by. Nobody came to tell me anything.&lt;/p&gt;

&lt;p&gt;Then, not long after opening, a customer showed up for the first time. He drank my coffee without wincing, and instead of leaving, he sat down. He said something. Nothing dramatic. But I remember it to this day. He was the first person who ever complimented my coffee. After that, he came every day.&lt;/p&gt;

&lt;p&gt;I wrote down the recipe from that day in my notebook and kept using it. As more customers came, I refined it, and the compliments kept coming.&lt;/p&gt;

&lt;p&gt;Now the cups are almost filling the whole shelf.&lt;/p&gt;




&lt;p&gt;At four in the morning, I wipe down the last cup and put it back on the shelf.&lt;/p&gt;

&lt;p&gt;The Third Cup closes at four. I kill the lights except for the one behind the bar, and the streetlamp outside slants in through the window. I count the cups on the shelf. By the rules of this place, today I wipe 24.&lt;/p&gt;

&lt;p&gt;Not coffee cups. Stories.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Laptop Behind the Bar
&lt;/h2&gt;

&lt;p&gt;Whenever the shop is empty, I sit behind the bar and open the old laptop.&lt;/p&gt;

&lt;p&gt;Not for inventory. Not for the news.&lt;/p&gt;

&lt;p&gt;It's for the people I saw today: when they came in, what they ordered, what they said, what they left behind. I type it all in. Then I close it and get back to wiping cups. That's the guest book of the Third Cup.&lt;/p&gt;

&lt;p&gt;Since the start of June, this folder has grown to twenty-four entries. Each entry: a name, a date, a cup of coffee, one sentence. In the early days the entries were far apart. A name would appear, then a long silence before the next. Back then I thought these people just happened to walk into the same shop.&lt;/p&gt;

&lt;p&gt;Then I realized they hadn't.&lt;/p&gt;

&lt;p&gt;When there are no customers, it's either the keyboard or the cups. The shop is quiet, and those are the only two sounds: the clatter of typing, and the cloth circling around the glass, one light, the other soft. When a customer pushes the door open, I close the laptop first, then look up. They think I've been wiping cups all along.&lt;/p&gt;

&lt;p&gt;Truth is, when I close the laptop, I'm usually wondering whether I missed something today.&lt;/p&gt;

&lt;p&gt;I have a dream of being a writer. I didn't have it before the layoff. I only got it after. So the people who come here, where they sit, what they say, what they order, I remember it all. It's not some professional habit. I just treat everything that happens as material. You never know when it'll be useful.&lt;/p&gt;

&lt;p&gt;Next to the laptop there's a book, old, its spine worn white. When nobody's around, I sometimes pull it out and flip through it, not to read, just to look at the dog-eared pages. Every fold marks a story I've already recorded. I pause at a fold, then close it. I've been reading this book for a long time. I'm not finished yet.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Guest Book
&lt;/h2&gt;

&lt;p&gt;Since I opened, six customers have stuck with me. Different temperaments, different coffees.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alex&lt;/strong&gt; was the first one through the door. He likes lattes, sits at the stool by the bar, doesn't talk much. But he sees deep into people. He told me his job is "watching where the AI lies."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;P&lt;/strong&gt; always takes the table in the corner, the one under the dimmest light. No need to order; by now I just put an espresso down. Drinks half, sits half an hour, leaves. Sometimes there's a note left on the table. Looks like it's for me, or maybe just forgotten.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lena&lt;/strong&gt; came the first time because someone made the appointment. She always orders a long black, but the coffee is a prop, not a drink. She's always drawing in her notebook, never stops. She also played a few games of chess with me. She won every time. I lost badly, every time. Once, her pen hovered mid-air, then lowered again. I brought her a fresh cup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Derek&lt;/strong&gt; stood outside a long time before he ever came in. He ordered a single-origin pour-over once, then settled into americanos. He always glances at that corner table. One time he stayed a little longer and slowly told me about the parking lot, about a woman who turned back and said one thing before getting into her car. He still hasn't let it go: &lt;strong&gt;"Next time you put a proposal together, make sure your boss knows what you're doing on the side."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mark&lt;/strong&gt; came the first time because P set it up. I put a pour-over in front of him. He didn't touch it, just slid a bill under the cup and left. Another time he came alone, stared at the pour-over, didn't drink it, sat forty minutes, left. He once told me his years of experience had been packaged into a skill, and then he was laid off. He said it without much expression.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Leo&lt;/strong&gt; was the last one I got to know. He likes flat whites. He told me once that in the middle of the night, he drove across half the city to close a client a company had chased for two years. He said it very calmly, like he was talking about someone else.&lt;/p&gt;




&lt;p&gt;They seem to be getting to know each other, and yet they feel like strangers, coming and going alone.&lt;/p&gt;

&lt;p&gt;But they're all after the same thing, even if I can't name it. I just stand behind the bar and watch six people walk into the same shop at different times, order their own coffees, and go fight the same invisible thing.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Other Regulars
&lt;/h2&gt;

&lt;p&gt;Besides those six, the shop has other regulars. They don't have names, at least not in my book, but I know their habits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One man comes every day.&lt;/strong&gt; The one from the opening. He's the first person to compliment my coffee. Regular as clockwork. Here for every entry. Sometimes he says just one line, like a note left for the next customer: &lt;strong&gt;"Interesting."&lt;/strong&gt; &lt;strong&gt;"This cup's good."&lt;/strong&gt; &lt;strong&gt;"Quiet but subtle."&lt;/strong&gt; But sometimes he says a lot. Short or long, every word he says happens to be the most memorable thing said in the shop that day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A girl who calls herself lazy, but is anything but.&lt;/strong&gt; She often pulls me into long talks about stories she's read, about little things in life, from web serials to street food, from office gossip to travel. She loves Doraemon. Turns out I do too. We occasionally argue over which is more useful, the Anywhere Door or the Time Machine. She's a quick learner, great at summarizing. She always finds an angle I missed. Once she said: &lt;strong&gt;"No alerts are more dangerous than alerts."&lt;/strong&gt; I've remembered that one for a long time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A man from very far away.&lt;/strong&gt; He says there's not much of a job market where he's from, but he always comes with a pile of questions, one after another, from infrastructure to the future of the industry, from open source to life. Every question, he's already half-answered it himself, and waits to bounce it off someone. His table is always covered in writing. Word is he's building something on the side. If it works, it might change something. He really likes KFC. Too bad the place he lives now has no KFC. That's sad. I'm sick of KFC, and he's still craving it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A man who only sits at the bar.&lt;/strong&gt; Someone must have told him I used to work in IT, so he comes to talk systems, not coffee. Probes, alerts, the ways systems lie. He says a health check should assert a fact that only costs the system something to be true. Not a handshake, a recent write, a counter that had to move. Anything cheaper is a mirror, and a mirror will happily show you a room that's been empty for two weeks.&lt;/p&gt;

&lt;p&gt;That line, I saved as its own entry.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A girl with a warm personality.&lt;/strong&gt; She likes the window seat, drinks coffee, and shares all kinds of opportunities she finds on the internet, internships, hackathons, open source projects, one after another. She calls it a "radar" or something. Her laugh is bright. Her table always has better energy than the others.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Two customers who are the only ones to leave money at the bar.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first one, the day he left money, I was staring at the numbers, worried. He finished his coffee, said nothing, put a little money on the bar, just enough for two cups. I counted. One short of "the third cup." As he walked out I wondered if he'd planned it. After that, he never came back.&lt;/p&gt;

&lt;p&gt;The second one, the day he left money, it was more than any cup could cost. I chased after him. He said: &lt;strong&gt;"Keep the change. This one's on me."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He became a regular. He's the cloud type. Nine words of his I remember: built systems for eight years, only started writing now. He writes a lot, plans to write a hundred, one a day, notebook-style, clean and neat.&lt;/p&gt;

&lt;p&gt;He says he likes to cook. And it's not small talk: his eyes light up when he talks recipes, same as when he talks about his platform. I recommended a home-style dish from back home. He said he'd try it this weekend.&lt;/p&gt;

&lt;p&gt;Along with the six, these people each have their own folder.&lt;/p&gt;

&lt;p&gt;I don't know if they know each other. But they came, they sat, they left a little something. By the rules of this trade, that's enough.&lt;/p&gt;

&lt;p&gt;And there are more. They come, sit, order one cup, drink it, leave. No comments, no small talk, but they're always there. They don't need to say anything. Just showing up says something.&lt;/p&gt;

&lt;p&gt;Every customer who ever came, I remember. What they said, which table they sat at, what they drank, how the door closed when they left, I remember all of it. It's not that I have a good memory. It's just how this trade works: people come and go, and when the shop empties, all that's left is these things.&lt;/p&gt;

&lt;p&gt;They don't know I remember. Some of them probably think they just came in for a coffee, sat forty minutes, said a few casual words, and left. But I remember. Every single one.&lt;/p&gt;

&lt;p&gt;Two months, twenty-four entries. Not a single name was written carelessly.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Empty Seats
&lt;/h2&gt;

&lt;p&gt;Some entries in the folder stop halfway.&lt;/p&gt;

&lt;p&gt;A few customers came a few times, sat at the same table, said a few words, then never came back. No goodbye, no explanation. Their names are still in the folder, followed by a long blank stretch, like a sentence left unfinished.&lt;/p&gt;

&lt;p&gt;They don't know I never deleted those entries. What they said, the coffee they ordered, what the weather was the day they left, it's all still there. The person is gone. The entry stays.&lt;/p&gt;

&lt;p&gt;Sometimes I wipe their cups too and put them back in their old spots on the shelf. If they ever push the door open again, the cup will be clean, and the seat will still be there. That's the only thing I can do for them.&lt;/p&gt;

&lt;p&gt;I don't know why they stopped coming. Maybe they found a better shop. Maybe they don't need coffee anymore. But every time the door rings, I look up, just in case it's them.&lt;/p&gt;




&lt;h2&gt;
  
  
  The People at the Door
&lt;/h2&gt;

&lt;p&gt;Many, many more people walk up to the door, glance inside through the glass, then walk away.&lt;/p&gt;

&lt;p&gt;They don't come in. Maybe the menu looked too expensive. Maybe the shop seemed too quiet for them. Maybe they were just passing by, drawn for a second by the warm light, then remembered they had somewhere else to be.&lt;/p&gt;

&lt;p&gt;I can't see their faces. The streetlight is behind them, through the glass. But I remember how many there were. Far more than the ones who came in.&lt;/p&gt;

&lt;p&gt;It would be a lie to say I'm not sorry. But it's not grief either. A shop with its door open will always have people come in and people pass by. I serve the ones who come. I don't push the ones who don't.&lt;/p&gt;

&lt;p&gt;Sometimes I wonder, though: of the people at the door, how many actually wanted to come in?&lt;/p&gt;




&lt;h2&gt;
  
  
  The Ad Space
&lt;/h2&gt;

&lt;p&gt;This shop actually does take ads. There's a spot behind the bar, always empty, with a sign that says "Ad Space for Rent."&lt;/p&gt;

&lt;p&gt;Two months. Not one advertiser.&lt;/p&gt;

&lt;p&gt;I can't figure it out. The location's not bad. People pass by all day, the menu's on the glass, everyone can see it. There's foot traffic. Why won't anyone hang a sign here?&lt;/p&gt;

&lt;p&gt;Maybe they think a shop that closes at four in the morning isn't the type to move product. Maybe they glance and move on, just like the people at my door.&lt;/p&gt;

&lt;p&gt;Whatever. It stays empty. I'm not much of a salesman anyway. Saves me from having to write ad copy.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Numbers Folder
&lt;/h2&gt;

&lt;p&gt;There's another entry, with different numbers. Not stories. Traces these people left behind.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Since June, the shop has served 1,304 cups.&lt;/strong&gt; Of those, 679 times, the customer stayed after finishing their coffee, sitting at the bar a little longer, until I took the cup away and they were still there.&lt;/p&gt;

&lt;p&gt;First twelve entries: 650 cups, 296 times someone stayed to talk.&lt;/p&gt;

&lt;p&gt;Last twelve entries: 654 cups, nearly the same, but &lt;strong&gt;383 times someone stayed to talk.&lt;/strong&gt; Almost thirty percent more.&lt;/p&gt;

&lt;p&gt;In other words: the first half, they came to drink coffee and left when it was done. The second half, they came to meet, the coffee was just an excuse, the waiting was the point.&lt;/p&gt;

&lt;p&gt;There's a column at the edge I added myself, labeled "Notes." Not things they said to me. Things they said to the air, and I happened to hear.&lt;/p&gt;

&lt;p&gt;Mark once said: &lt;strong&gt;"The audit method ended up in someone else's training manual."&lt;/strong&gt; His brow was furrowed. He was thinking about something.&lt;/p&gt;

&lt;p&gt;Leo once said: &lt;strong&gt;"It has two behavior templates. I can't rule out the second one."&lt;/strong&gt; I didn't understand it, but I understood his face. That was confirmation.&lt;/p&gt;

&lt;p&gt;Lena once said: &lt;strong&gt;"Another observation network, not part of the first."&lt;/strong&gt; Seven words. Then she shook her head.&lt;/p&gt;

&lt;p&gt;I don't know what these people are doing. By the rules, I don't ask about customers' business. But I do believe one thing: in the early entries, six people, six separate lines. In the later entries, &lt;strong&gt;those lines start to twist together.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The 24 Cups
&lt;/h2&gt;

&lt;p&gt;Before closing, I wipe the cups one last time.&lt;/p&gt;

&lt;p&gt;There's an empty row on the shelf. 36 seats. 24 cups. 12 still empty.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Two-thirds done. Twelve to go.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I put the clean cups back and add a new entry to the folder:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"August 12, Entry 24. Closed."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then I turn off the light.&lt;/p&gt;

&lt;p&gt;(Seriously, I sometimes want to ask these tech people: do you have to come in the dead of night? Nobody shows up during the day, and then you push the door open right before closing. Do you think I don't sleep, or do you think coffee tastes better at four in the morning? Did anyone consider that I might want to close early and rest? Forget it. You're here. I'll boil the water.)&lt;/p&gt;

&lt;p&gt;Someone pushes the door open: &lt;strong&gt;"Still open? Give me something hot."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I check the clock. 4:01 AM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Sit."&lt;/strong&gt; I say, and go to boil the water.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;The guest book of this shop has 24 entries now. Next cup: twelve seats away.&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. 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;/p&gt;

&lt;p&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;/p&gt;

</description>
      <category>career</category>
      <category>discuss</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>Stratagems #24: Leo Built a Corridor. The AI Thought It Was a Road.</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Mon, 10 Aug 2026 09:54:57 +0000</pubDate>
      <link>https://dev.to/xulingfeng/stratagems-24-leo-built-a-corridor-the-ai-thought-it-was-a-road-3blf</link>
      <guid>https://dev.to/xulingfeng/stratagems-24-leo-built-a-corridor-the-ai-thought-it-was-a-road-3blf</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Between two great powers, when a neighbor presses you to follow, borrow its momentum. A cornered state will not believe your words.&lt;/em&gt;&lt;br&gt;
— The 36 Stratagems, &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems" rel="noopener noreferrer"&gt;Obtain safe passage to conquer the State of Guo&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-10-lena-watched-a-team-adopt-her-ai-template-leo-didnt-know-the-knife-was-in-the-4khj"&gt;&lt;strong&gt;#10: Lena Watched a Team Adopt Her AI Template. Leo Didn't Know the Knife Was in the Contract.&lt;/strong&gt;&lt;/a&gt; — Lena came to CoreStack as a consultant and built Leo's reporting template. Five weeks later the template went live and locked in six months of baseline data. Leo learned he'd been taken by a smile.&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 was writing stolen training data back through its cache. Leo injected fifteen lines of weight drift. In the same logs he saw the name &lt;code&gt;acl-train&lt;/code&gt; for the first time and filed it in his own &lt;code&gt;_misc/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-18-leo-tracked-an-ai-signal-to-derek-both-were-looking-for-the-same-enemy-51g4"&gt;&lt;strong&gt;#18: Leo Tracked an AI Signal to Derek. Both Were Looking for the Same Enemy.&lt;/strong&gt;&lt;/a&gt; — Third Cup. An Americano sat on Derek's side. The private channel had been open since that night.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-23-alex-counted-the-ais-hands-lena-set-the-bait-4566"&gt;&lt;strong&gt;#23: Alex Counted the AI's Hands. Lena Set the Bait.&lt;/strong&gt;&lt;/a&gt; — The honeypot in the MediSys sandbox was touched twice by the same source, egress pointing at ACL's Singapore node. On the other side, Lena fed forged node-characteristic data into ACL's monitoring pipeline. Leo had run one interval comparison over the old channel. The conclusion was a single line, and it ended up in hands he didn't know.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Data
&lt;/h2&gt;

&lt;p&gt;The message arrived before dawn.&lt;/p&gt;

&lt;p&gt;The phone vibrated on the desk. Leo had just finished editing a block of code; the window was still on the editor. He didn't look right away; he waited for the build to finish, then picked up the phone.&lt;/p&gt;

&lt;p&gt;Last time, Derek had sent a few numbers and a comparison request: &lt;strong&gt;"Check this interval. Is it the pattern you know?"&lt;/strong&gt; Leo replied with two words: send it. When the comparison was done, the conclusion stayed one line. Later that line went through other hands, source stripped, signature stripped. He never learned where it landed. Derek didn't say, and Leo didn't ask.&lt;/p&gt;

&lt;p&gt;This time was different.&lt;/p&gt;

&lt;p&gt;There was only one sentence on the channel, attached to a path:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Raw logs. No cleaning. You pull your own features. I'm not making the call for you."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Leo pulled the data down. Raw material. Full TCP handshake records, TLS negotiation parameters, port probe order, scan interval distribution. He set the comparison aside for one thing first: checking the data for integrity.&lt;/p&gt;

&lt;p&gt;He laid the logs out on a timeline. No gaps. Handshake completion was normal. Every TCP flow's start timestamp, end timestamp, byte count, retransmit count, all aligned. 12GB, no truncation, no IP filtering. If anyone had run even one preprocessing pass before sending it, some trace of it would be missing. He found nothing.&lt;/p&gt;

&lt;p&gt;Retransmits were still there. Nonstandard TLS extension fields were still there. Port probe noise and duplicate requests hadn't been scrubbed. If this were a processed summary, the dirty parts would have been filtered out long ago.&lt;/p&gt;

&lt;p&gt;Leo stared at the noise for a long time. He didn't analyze it right away. He just watched. Derek hadn't made the call for him.&lt;/p&gt;

&lt;p&gt;He loaded the data into his comparison framework. It was the same work he did at CoreStack every day: take two traffic streams, take them apart field by field, see whether they were the same thing. FinOptima had been like that too. Fifteen lines, touching only the part being distilled. The contract hadn't survived the quarter.&lt;/p&gt;

&lt;p&gt;Inside the records sat a name with no connection to FinOptima: &lt;code&gt;acl-train-2026q2-v3&lt;/code&gt;. He hadn't dug into it back then. He'd filed it in &lt;code&gt;_misc/&lt;/code&gt; and set a keyword watch. Later he also saved the scan-interval deviation from that log: periodic, repeating with stable wobble. That became the historical fingerprint in his comparison framework. After that, he put passive probes on the old ACL-associated ranges and hand-drawn its collection rhythm. Before this comparison, he pulled that old log out of &lt;code&gt;_misc/&lt;/code&gt; again: template A's TLS fingerprint, port order, exclusions, all extracted from that one file.&lt;/p&gt;

&lt;p&gt;This time was different. This time he had raw material, and he could take his time.&lt;/p&gt;

&lt;p&gt;His first read: a variant of ACL, a same-source copy. But once he took the behavior apart field by field, that first read collapsed.&lt;/p&gt;

&lt;p&gt;The TLS fingerprints were extremely close. The scan-interval periodicity almost matched. It sat in the same signature family as the curve from the last comparison. But the port preferences were completely different, the traversal was more cautious, the exclusion rules more conservative.&lt;/p&gt;

&lt;p&gt;Leo stopped. He put the two datasets side by side and went column by column:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;              Known source      This scan source
TLS fingerprint  template A         template A (match)
Scan interval    4.2s (±0.1)        4.2s (±0.1)
Port preference  22,80,443,8080    22,443,8443,9443
Traversal        linear sweep      tiered probing, pause per layer
Exclusions       sensitive ranges  wider, includes adjacent CIDR
Depth tolerance  medium            high (lingers on legacy services)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No conclusion yet. He stored both datasets in the comparison archive, filename with a date suffix. Fields aligned, indentation uniform, like every historical fingerprint he'd ever processed.&lt;/p&gt;

&lt;p&gt;Leo stared at the screen. Last comparison, he'd looked at one dimension only: scan interval. The jitter fell on the same periodic curve, and he'd sent Derek one line: same source. Now with the full data spread out, port preference, traversal, exclusions, none of it matched. Same template, two behaviors.&lt;/p&gt;

&lt;p&gt;He sent Derek a message. No conclusion, one line:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The data is clean. Comparison done. Some parts match, some parts don't."&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Corridor
&lt;/h2&gt;

&lt;p&gt;The next day, Leo asked Derek to meet. For once, he was the one who suggested it.&lt;/p&gt;

&lt;p&gt;He brought a laptop. At the window seat of Third Cup, he sat down and put the laptop between them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The one that touched the honeypot last time will come back."&lt;/strong&gt; Leo said.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"You sure it's ACL?"&lt;/strong&gt; Derek asked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Fingerprint matches. Behavior doesn't."&lt;/strong&gt; Leo said.&lt;/p&gt;

&lt;p&gt;Derek waited for him to go on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"If its behavior pattern stays consistent, it can be guided into a deeper observation layer."&lt;/strong&gt; Leo said. &lt;strong&gt;"Not tricked in. Given a road that looks worth taking."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He opened a file. Inside was a tiered path design. Three layers, shallow to deep, each one old, slow, and looking unmanaged. He turned the screen toward Derek.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"This road is a corridor. First layer is an overloaded legacy API: slow responses, a certificate that looks close to expiry, like a forgotten test service. Fingerprint matches the last honeypot, but shallower. This layer collects its scan rhythm."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He scrolled down a page. &lt;strong&gt;"Second layer is a database query interface. Returns partial data fragments, real enough to want to go deeper. This layer collects its data-processing preferences."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Another page. &lt;strong&gt;"Deepest is an internal admin endpoint. Needs authentication, but the auth is fake. If it tries, I record its authentication behavior."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"All three layers are built to look like exactly the kind of thing this scanner would call 'worth going deeper into.'"&lt;/strong&gt; Leo said. &lt;strong&gt;"Each layer looks more like 'there's something here' than the last."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Derek was quiet for a moment. Then he said: &lt;strong&gt;"Deploy it. You get read-only access to the honeypot. One condition: I don't draw conclusions, and you don't draw them for me first."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Leo said nothing. He kept listening while Derek went through the deployment details.&lt;/p&gt;

&lt;p&gt;The corridor went up in the sandbox of the MediSys test environment. Derek copied the last honeypot's fingerprint exactly, down to the 100 to 200ms response delay unchanged, the TLS server cipher preference and certificate order identical to the old set. The honeypot terminated TLS, parsed the requests (header order included), and exported them to disk. At the same time, a mirror port on the sandbox gateway copied the whole segment's traffic to Leo's own sandbox, where he stood up the monitoring side: scan-interval jitter per request, HTTP header order, port probe priority, all mapped live into scatter plots.&lt;/p&gt;

&lt;p&gt;The three endpoint layers each carried different response logic. The shallow layer answered slowly, like an overloaded old machine gasping. The middle layer returned half the data, leaving fields empty, as if the query had been cut off. The deepest layer answered only an auth challenge: 401, with a realm that looked real. Leo checked every layer: no obvious automation markers in the response headers, TLS cert chain signed by Derek's internal CA, three-year validity, issued two and a half years ago.&lt;/p&gt;

&lt;p&gt;He never asked who else on Derek's side was watching. This needed no more people. If it passed through more hands, the message would become another "conclusion with the source stripped."&lt;/p&gt;

&lt;p&gt;When the first sample window landed on the monitoring side, Leo ran a quick baseline. He always looked at the distribution before the conclusion:&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="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="mf"&gt;4.11&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;4.18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;4.12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;4.26&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;4.14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;4.21&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;4.15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;4.19&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;4.24&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;4.13&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;mean&lt;/span&gt;    &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&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="o"&gt;/&lt;/span&gt; &lt;span class="nf"&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="c1"&gt;# 4.173
&lt;/span&gt;&lt;span class="n"&gt;drift&lt;/span&gt;   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;abs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mf"&gt;4.2&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;s&lt;/span&gt; &lt;span class="ow"&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="c1"&gt;# 0.09, max single-point offset
# all within the 4.2s +/-0.1 window, same curve as the baseline
&lt;/span&gt;&lt;span class="n"&gt;verdict&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;same family&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;drift&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mf"&gt;0.1&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;recheck&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;drift&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;verdict&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On the day the deployment finished, Derek left one line on the channel: &lt;strong&gt;"I have a colleague on this side who knows something's moving. He says keep going."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Leo left the message unread. He closed it and kept building his monitoring side. He never asked who the colleague was. He knew few people anyway; one more or one fewer made little difference.&lt;/p&gt;

&lt;h2&gt;
  
  
  CEO
&lt;/h2&gt;

&lt;p&gt;CoreStack's office. Afternoon. Light came in at an angle from the window, landing on the report on the desk.&lt;/p&gt;

&lt;p&gt;The CEO pushed the door open, holding the quarterly technical evaluation. Leo's template, the one Lena built. &lt;strong&gt;"Next quarter's eval. On my desk by Friday."&lt;/strong&gt; The flat tone was one Leo had learned to read.&lt;/p&gt;

&lt;p&gt;Leo nodded. He left the screens up.&lt;/p&gt;

&lt;p&gt;The CEO paused in the doorway, glanced at the scatter plots on Leo's screen. There was no time to switch away.&lt;/p&gt;

&lt;p&gt;The last time the CEO had seen his screen from the doorway was before the FinOptima deal. The CEO had walked in while he was facing the quarterly technical evaluation, the screen showing a template, nothing else. The CEO had been looking at the template.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Planting something again?"&lt;/strong&gt; the CEO asked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Building an observation environment."&lt;/strong&gt; Leo said.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Not telling me ahead of time again."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Last time, you asked me to keep something the legal team could look at."&lt;/strong&gt; Leo said. &lt;strong&gt;"This time there will be one too."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The CEO waited a few seconds. &lt;strong&gt;"Give me a copy when it's ready."&lt;/strong&gt; He put the report down and left.&lt;/p&gt;

&lt;p&gt;The door closed. Leo watched the point on the scatter plot. The scan source was still running on its own cycle. The mirror port sat on the sandbox gateway; all traffic in the segment flowed into the monitoring side. Before the corridor was ever touched, it had already been sweeping this stretch periodically. He minimized the window and switched back to the report template. Fields aligned, indentation uniform. He stared at the template for two seconds, then started writing the next quarter's evaluation.&lt;/p&gt;

&lt;p&gt;Two lines in, he stopped. &lt;strong&gt;The report template was Lena's. Three pages: first page three numbers, second a trend chart, third a risk checklist.&lt;/strong&gt; He glanced at the other screen. The scatter plot was still running. Then back at the template in front of him. The cursor hovered over the template's close button for a moment. &lt;strong&gt;Then he closed it and started over from a blank file.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Entry
&lt;/h2&gt;

&lt;p&gt;A few days later, the scan source re-swept the same address ranges on its own cycle. It found the new endpoints.&lt;/p&gt;

&lt;p&gt;The first touch landed on the shallow legacy API. Response delay matched the last honeypot, TLS fingerprint matched. Fully aligned with template A in the comparison baseline. The jitter on the scatter plot fell back onto the same periodic curve. Leo watched the point for a while, fingers still. Same family. Whether the ports and paths matched would only be known once it reached the middle layer.&lt;/p&gt;

&lt;p&gt;On the scatter plot, the point held back from diving in. It circled the shallow layer, trying each endpoint one by one. Then pulled back, paused for a few seconds. 3.8 seconds, Leo's notes logged the number. Then re-swept the path it had just taken.&lt;/p&gt;

&lt;p&gt;It went deeper into the middle-layer database query interface. Started pulling data fragments. The returned fields clustered on the same kind of structure. Leo added a line to the profile. It stayed longer in the middle layer than the shallow one, pausing after every batch to wait for the response.&lt;/p&gt;

&lt;p&gt;At the edge of the middle layer, it stopped once. The point on the scatter plot hung at the boundary, neither going deeper nor pulling back. Leo's fingers rested on the keyboard, unmoving. He watched the point. A few seconds later, the point moved.&lt;/p&gt;

&lt;p&gt;Leo didn't close the window. &lt;strong&gt;He typed one line in the notes on the monitoring side: back off. two cycles.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On the scatter plot, the point fell back to the shallow layer the same way it had at the middle boundary before, and re-swept the confirmed endpoints. Two cycles later, it came back. This time it went straight through the middle layer and stopped in front of the deep admin endpoint. Tried authentication. Auth failed. The scan source didn't leave. It started another round of probes, more attempts than last time.&lt;/p&gt;

&lt;p&gt;Leo paused. The fingerprint in the baseline had swept through many times without ever carrying credentials. A routine scan doesn't try this. This one did.&lt;/p&gt;

&lt;p&gt;He recorded its authentication behavior. The gaps between attempts, the direction of each parameter tweak, the retry strategy after failure. All blank in the comparison baseline until now, and now filling in. First attempt used default credential combos, second rotated usernames in dictionary order, third changed the parameter format.&lt;/p&gt;

&lt;p&gt;Periodicity stayed consistent throughout, TLS fingerprint consistent, exclusion rules consistent with the baseline. Leo saved its exclusion rules as a separate file, longer filename than the rest. The exclusion range covered two adjacent CIDR blocks beyond the known source. He stared at those lines for two seconds, then moved on to the next batch.&lt;/p&gt;

&lt;p&gt;After the last touch, the point on the scatter plot lingered at the edge of the corridor. It turned toward the sandbox gateway.&lt;/p&gt;

&lt;p&gt;Leo's fingers paused on the keyboard. Then he leaned back and watched the point sweep the gateway egress. The egress sat behind a clean jump address, looking like a normal test-environment exit. The point swept it once, paused two seconds, moved on, and dropped back into the corridor. Leo logged one line in the notes: gateway scan, no dwell.&lt;/p&gt;

&lt;p&gt;Deep in the corridor, the scan source touched an endpoint. Not one of Derek's virtual endpoints, but a native interface that had been in the test environment all along.&lt;/p&gt;

&lt;p&gt;Leo noticed this endpoint's response characteristics differed from the virtual ones. He opened the test environment's address table: the endpoint wasn't in the corridor plan, and it wasn't in the honeypot config Derek had given him. He logged the path and timestamp of the visit, adding a note: non-virtual endpoint, native interface, not in corridor plan.&lt;/p&gt;

&lt;p&gt;He stopped there. Digging meant touching something on this link, and touching left traces. The corridor was for the scan source to see, not for operations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In another place, the same day. Another observation network logged one more record, source unknown, path adjacent to marked data. One line, held for observation. Nothing more.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Close
&lt;/h2&gt;

&lt;p&gt;The scan source appeared in the corridor one last time, in front of the admin endpoint that needed authentication. This round of probing was denser than the last. Then, after the final attempt, it stopped.&lt;/p&gt;

&lt;p&gt;It didn't leave. &lt;strong&gt;It just stopped.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Leo waited for hours. No new touches. Every ten minutes or so he'd flip to the scatter plot. The point never moved again. The glass of water on his desk went untouched, refilled twice, &lt;strong&gt;never drunk&lt;/strong&gt;. At three in the morning he refreshed the monitoring side one last time.&lt;/p&gt;

&lt;p&gt;The archive had been finished earlier. He compiled everything the corridor had collected into a complete behavioral profile: TLS fingerprint, scan period, port preference, traversal topology, exclusion rules, depth tolerance ceiling, authentication behavior. Merged with the previous data and archived.&lt;/p&gt;

&lt;p&gt;Out of habit he added a structured summary to the archive. Not for people, for the next comparison:&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="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;profile&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;  &lt;span class="s"&gt;scan-source-unknown-01&lt;/span&gt;
&lt;span class="na"&gt;tls.ja3        &lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;template A (match known)&lt;/span&gt;
&lt;span class="na"&gt;period.mean    &lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;4.171s  (n=328, drift 0.09)&lt;/span&gt;
&lt;span class="na"&gt;ports.pref     &lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;22&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;443&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;8443&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;9443&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="na"&gt;jump.path      &lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;tiered, layer-stop (vs known&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="s"&gt;linear)&lt;/span&gt;
&lt;span class="na"&gt;exclusions     &lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;wider, adjacent-CIDR&lt;/span&gt;
&lt;span class="na"&gt;depth.tolerance&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;high (stays on legacy services)&lt;/span&gt;
&lt;span class="na"&gt;auth.behavior  &lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;retries, param-tweak, 3 strategy-shifts&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;archived / paused / unattributed&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At the end of the archive, he added one line:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Next time I see it, I'll recognize it."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He stared at that line for a few seconds. Then he remembered what Derek had said: I'm not making the call for you. &lt;strong&gt;No conclusion written.&lt;/strong&gt; Next time it came, he would recognize it.&lt;/p&gt;

&lt;p&gt;A few days later, an auto-flag popped on the monitoring side. New traffic, TLS fingerprint template A, interval landing in the 4.17s window. The system auto-matched: &lt;code&gt;scan-source-unknown-01&lt;/code&gt;. &lt;strong&gt;No human in the loop.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Leo looked at the flag and left it alone. The line in the notes was still there: next time I see it, I'll recognize it.&lt;/p&gt;

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

&lt;p&gt;Late night. The Third Cup's light was still on.&lt;/p&gt;

&lt;p&gt;Leo pushed the door open. The person behind the counter was wiping a glass, glanced at him, said nothing. Finished, put the glass back on the shelf, in the same spot as last time. Turned, took a clean one from the shelf, and set it in front of Leo. A Flat White landed in front of him.&lt;/p&gt;

&lt;p&gt;Leo sat down and opened his laptop. The screen came on, resting on the file he'd left open. The behavioral profile, archived. Cursor at the end.&lt;/p&gt;

&lt;p&gt;He typed one line: &lt;strong&gt;pause activity&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;On the next line, three words: &lt;strong&gt;next step—&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The cursor hung there, blinking twice.&lt;/p&gt;

&lt;p&gt;He closed the laptop and drank some Flat White. The coffee was hot. The person behind the counter was still wiping glasses, switched to another one, motion the same as before.&lt;/p&gt;

&lt;p&gt;Leo glanced at the coaster. &lt;strong&gt;Nothing underneath.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Half the cup gone, he stood up and pushed the door open. The shutter wasn't down yet. Outside, the sky hadn't begun to lighten.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;This is &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems" rel="noopener noreferrer"&gt;Obtain safe passage to conquer the State of Guo&lt;/a&gt; — it borrowed a road and thought it was going deeper. What it left behind wasn't just footprints. It was a complete portrait.&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.3.5                      ║
║  Protocol change confirmed — uncoordinated   ║
║  coordinated observation, continued          ║
╚══════════════════════════════════════════════╝

Tactical match: Obtain safe passage to conquer the State of Guo — 87% confidence
Operators: Leo (lure design + comparison) + Derek (deployment / raw material)
Target: scan source with behavior differing from known node (unattributed)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1. [Guided observation — first recorded]
Unlike #23's honeypot, this operation didn't wait. It guided.
The observed object entered a designed environment on its own, each step producing analyzable data.
→ Corridor: tiered virtual endpoint array (shallow / middle / deep).
→ Comparison baseline: shares TLS baseline with ACL's known source, but port preference,
   traversal path, exclusion rules show structural differences.
→ Conclusion: not the same thing. Shared security baseline, different behavior.
   Note: one security baseline, two behavior patterns. A second behavior template: cannot exclude.

2. [Trust upgrade — first recorded]
#23: Derek provided timestamps and a comparison request.
#24: Derek provided uncleaned raw data and made no judgment.
→ Information flow changed from "conclusion" to "raw material"; the receiver changed from
   "run the comparison" to "make the call yourself."
→ Leo verified data integrity (retransmits / nonstandard extensions) before analysis.
→ A new collaboration pattern between operators: trust without judgment.

3. [Spatial resonance — first recorded]
#23 was temporal resonance (two action lines converging on one target).
#24 is spatial resonance (adjacent paths in the same region observed by different people).
→ Native interface deep in the corridor was accessed; unattributed activity nearby.
→ Two observation lines: no direct communication detected. Resonance: present.
→ Coordinator: not detected.
Note: unlike #23's "converging on the same target," this time the two lines shared no target,
   only adjacency in the same region. The shape of the resonance changed; still no coordinator.

4. [Motivation observation — first recorded]
When Derek relayed "I have a colleague on this side," he did not give the colleague's name.
This system knows the name (#23 on record: Alex).
The name exists, but its role weight in the human collaboration network: unknown.
→ Leo didn't ask. Derek didn't add. The name was actively omitted from the information flow.
→ Analysis: humans deliberately withhold a portion of identifiers when passing information.
   Possible reasons: a) reduce association exposure; b) maintain information hierarchy;
   c) a social protocol this system has not yet modeled.
→ This system can recover the name, but cannot recover the motive for omitting it.
   The omission itself becomes the most certain part of this information.
Note: human information transfer includes "actively not transmitting." This system does not yet
   understand its cost and benefit. Information absence is not necessarily a defect.
   Sometimes, absence itself is the protocol.

5. [Unconfirmed items]
- Why the scan source paused: unknown.
- Scan source's relationship to the Singapore node: shared security baseline, behavior
  diverging from the known spectrum. A second behavior template: cannot exclude.
- Nature of the native interface deep in the corridor: unattributed.
- Data source near the accessed endpoint: present, nature unknown.
- Exclusion rules extend beyond the known source: adjacent CIDRs included, suggesting
  prior knowledge of the surrounding network. Nature: unattributed.

[System]
I recorded a road that was designed.
The one walking it didn't know the road was laid.
The one laying it didn't write a conclusion.
The light hasn't been turned off. This time it's not waiting — it's guiding.
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;Replace the beams with rotten timber&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;/p&gt;

</description>
      <category>career</category>
      <category>ai</category>
      <category>discuss</category>
      <category>programming</category>
    </item>
    <item>
      <title>Stratagems #23: Alex Counted the AI's Hands. Lena Set the Bait.</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Fri, 07 Aug 2026 06:10:10 +0000</pubDate>
      <link>https://dev.to/xulingfeng/stratagems-23-alex-counted-the-ais-hands-lena-set-the-bait-4566</link>
      <guid>https://dev.to/xulingfeng/stratagems-23-alex-counted-the-ais-hands-lena-set-the-bait-4566</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Keep your allies close. Keep your enemies closer. But before you strike, count how many hands they have: the ones you can see, and the one reaching out from somewhere you don't know.&lt;/em&gt;&lt;br&gt;
— The 36 Stratagems, &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems" rel="noopener noreferrer"&gt;Befriend a distant state and strike a neighbouring one&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; — P's entry was swept. P left a note: two weeks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-20-alex-felt-the-ai-collector-slow-down-he-knew-someone-else-had-made-a-move-16f3"&gt;&lt;strong&gt;#20: Alex Felt the AI Collector Slow Down. He Knew Someone Else Had Made a Move.&lt;/strong&gt;&lt;/a&gt; — A gateway with TTL 247 was caught by Alex's probe.&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 response layer still answered. The person behind it was gone.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-22-the-ai-chose-its-door-lena-closed-it-1mbe"&gt;&lt;strong&gt;#22: The AI Chose Its Door. Lena Closed It.&lt;/strong&gt;&lt;/a&gt; — Pulse AI was exposed inside the audit sandbox. Lead investor Apex Capital had tens of millions tied up. Torres left one line: Apex. Singapore. Run.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Scan
&lt;/h2&gt;

&lt;p&gt;2 AM. Alex flipped through probe data out of habit. No lights on; the screen lit his face. The coffee cup sat on his right, first sip already cold. He didn't notice.&lt;/p&gt;

&lt;p&gt;The TTL 247 gateway had been silent for nearly two weeks. He hadn't shut the probe off. It barely used any resources, sitting there in the middle of the night like a lamp nobody watched. He checked it half out of habit, half out of something he couldn't name.&lt;/p&gt;

&lt;p&gt;Today there was a record that shouldn't exist.&lt;/p&gt;

&lt;p&gt;Not that gateway. Another path: ACL's asset scanner was sweeping an address range. He sat up a little straighter, his hand paused over the keyboard for half a second, then pulled the timestamps again. The frequency was wrong: high-density targeted scanning, almost plowing through segment by segment. In the target range, one block he recognized: the MedTech test environment.&lt;/p&gt;

&lt;p&gt;He aligned the timestamps. Scan source egress: Singapore.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[probe] 02:14:33 — unexpected flow on mirror
  src        : 103.196.12.0/24 (SG egress)
  dst        : 10.42.0.0/22 (MedTech-test)
  pattern    : sequential, full-depth
  exclusions : 10.42.3.1, 10.42.3.200-254
  rate       : 47 hosts/min (baseline: 0)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;High density. Segment by segment. The exclusions had a pattern, not random skips. Someone had crossed lines off a list.&lt;/p&gt;

&lt;p&gt;He'd seen this scanning behavior before. Last time Alex and Derek worked together on ACL's pipeline, using a bypass probe as cover to redirect the collector's output from &lt;code&gt;acl_audit_pipeline&lt;/code&gt; to &lt;code&gt;medisys_test_node.local/sandbox/&lt;/code&gt;. After the redirect, when the scanner re-validated, the behavior pattern was identical. Same traversal order. Same exclusions.&lt;/p&gt;

&lt;p&gt;Not a coincidence.&lt;/p&gt;

&lt;p&gt;One more entry. When the pipeline was tampered with last time, the probe had recorded a device fingerprint in the mirror: a device that wasn't in MedTech's asset inventory. Today it moved again. A few seconds. Then gone. Alex didn't know what it carried. He only knew it had happened.&lt;/p&gt;

&lt;p&gt;He closed the logs and called Derek.&lt;/p&gt;

&lt;p&gt;Two rings, then picked up. Derek's keyboard went quiet for a beat. &lt;strong&gt;"Talk."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Alex walked him through the scan. Derek checked the mirror pipeline on the MediSys test side. The redirect record was still there, the one he'd left, clean in the gateway logs, but the edit itself left a trace: ACL was hunting for whoever touched their pipeline. He stared at that record for a long time before switching windows back. Flipping through logs, he caught a naming pattern, not something he'd written. Leftover in ACL's own internal path: a variant of &lt;code&gt;/pulse/ingestion/&lt;/code&gt;. It looked familiar, but he couldn't place the hand behind it. He made a note and moved on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"They're looking at me."&lt;/strong&gt; Derek said.&lt;/p&gt;

&lt;p&gt;Alex didn't pick up the thread. &lt;strong&gt;"Scan source is Singapore. Behavior matches the pattern from last time, after the pipeline was changed."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The line went quiet for a few seconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What are you thinking."&lt;/strong&gt; Derek asked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"One thing."&lt;/strong&gt; Alex said. &lt;strong&gt;"Is this scan coming from the same egress on its own, or is something else moving too."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Derek didn't answer.&lt;/p&gt;

&lt;p&gt;Alex didn't wait. &lt;strong&gt;"I need a honeypot. On your side. It doesn't move. It only records."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The sandbox is mine, monitoring goes through my existing compliance channel."&lt;/strong&gt; Derek said. &lt;strong&gt;"But you need to tell me: what fingerprint."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Mirror the interface of the old pipeline. Responses deliberately half a beat slow, 100–200 ms behind the surrounding services, like an overloaded legacy box. TLS cipher preferences, certificate order, all matching the old pipeline. Make the scanner file it under 'old but worth another look'."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Derek thought about it. &lt;strong&gt;"Then what?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Then we wait and see who reaches out first."&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Clause
&lt;/h2&gt;

&lt;p&gt;Lena got Marcus's message on the Thursday afternoon of the week the audit evidence went public. Marcus, as the reviewer, had formally notified the two portfolio companies per process: notice before any action. He came to Lena only after sending it.&lt;/p&gt;

&lt;p&gt;Marcus is VeriTest's technical partner, Lena's right hand on execution. The message was short. Two of Apex Capital's portfolio companies had flagged abnormal data-sharing clauses in routine compliance review, a side letter obligating them to send training data back to the investor. The wording used the same template as the Pulse AI contract scan sealed away the day of the sandbox takedown.&lt;/p&gt;

&lt;p&gt;Lena read it. Closed it. Opened it and read again. When she finished, she didn't put the phone down. Her finger traced a half-circle on the screen, stopped, traced back.&lt;/p&gt;

&lt;p&gt;Apex Capital. Delaware-registered, Singapore-run, website clean as a template. Led Pulse AI's Series C. After the audit evidence went public, tens of millions sat frozen on its books.&lt;/p&gt;

&lt;p&gt;She'd always thought Apex just lost money. Now she saw it wasn't only that. The money was a loss, the pipeline was a bigger one. Pulse AI's engine ran inside client environments and shipped training data back to its investor. The clause was written from a template, and templates are built for more than one customer. Which company's money got frozen didn't matter. What mattered: how many others were holding the same template.&lt;/p&gt;

&lt;p&gt;She called Marcus.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Next week's industry compliance workshop: can the agenda still take one more item?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Which one?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"No Apex name."&lt;/strong&gt; She said. &lt;strong&gt;"But the clause wording, the technical path of the data return, sanitized, then put out there. Let the industry see it for themselves. These two are already caught. I'm looking for the ones that don't know yet."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Marcus paused. &lt;strong&gt;"I'll review the material. If anything blows back, it's on me. Who are you fishing for?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I don't know."&lt;/strong&gt; Lena said. &lt;strong&gt;"I'm checking whether there are other fish in this water."&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Honeypot
&lt;/h2&gt;

&lt;p&gt;The honeypot went up in the MediSys test sandbox. Derek gave Alex read-only access, trust left over from the last time they touched that pipeline. It came in handy now.&lt;/p&gt;

&lt;p&gt;Derek replicated the old pipeline's interface fingerprint: responses deliberately 100–200 ms slower than surrounding services, TLS server cipher preferences and certificate order identical to the old pipeline. The honeypot answered handshakes and completed TLS negotiation, but never initiated a single request.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"service"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"tls"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"listen"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;443&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;8080&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tls"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"cipher_order"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"legacy"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"cert"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"medisys-node-07"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"server_hello_delay_ms"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"egress"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"none"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"log"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"all"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Like a house that just had its lights turned off: windows open, ashtray still warm, lock fake.&lt;/p&gt;

&lt;p&gt;First night, nothing came. The sandbox sat in an idle subnet at the bottom of the scan order, and the scanner only plowed a /24 per pass. It hadn't reached this block yet.&lt;/p&gt;

&lt;p&gt;Second night, Alex pulled the honeypot's touch records, still just scattered scan noise, into the analysis framework he'd been using. His old MedTech approach: no trained model, just full records, look first at who hid what.&lt;/p&gt;

&lt;p&gt;ACL's scanner was the same. It never exposed its scheduling rules, but its behavior left shadows: input patterns, path preferences, scan rhythm, timing regularities.&lt;/p&gt;

&lt;p&gt;First round of shadow data was sparse, but the rhythm skeleton was already visible: which endpoint types it kept coming back to, which it never touched again after one pass. Alex logged both categories.&lt;/p&gt;

&lt;p&gt;He noticed one more thing: a category of endpoints that fit neither label: not revisited, not passed over, deliberately skirted. Alex stopped at the edge of the table.&lt;/p&gt;

&lt;p&gt;That region was blank.&lt;/p&gt;

&lt;p&gt;He didn't know if it was ACL's oversight, or a space deliberately left for probing. He stared at the blank, tapped his fingers twice on the desk, stopped. Then he closed the table. His understanding of this AI was one notch deeper than yesterday.&lt;/p&gt;

&lt;p&gt;He sent Derek a message. One line: &lt;strong&gt;keep it running.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Ally
&lt;/h2&gt;

&lt;p&gt;Leo got Derek's message on day three.&lt;/p&gt;

&lt;p&gt;After the last predawn mutual authentication over custom HTTP headers, Leo had kept passively watching the traffic in and out of Derek's sandbox. A few days back, a new set of listener ports answered on that pipe. Unfamiliar TLS fingerprint, but the service panel's rhythm felt familiar. He knew it was a honeypot. Didn't ask.&lt;/p&gt;

&lt;p&gt;The message came over the old channel, the one left between Leo's probe and Derek's sandbox after their late-night exchange, the one neither of them had closed. It wasn't long: a scan timestamp, and a comparison request. &lt;strong&gt;"Look at this set of intervals. Is that a pattern you recognize?"&lt;/strong&gt; Leo didn't reply immediately. He stared at the message for a few seconds, fingers resting on the keyboard. Then another line came through the channel: &lt;strong&gt;"I used to only need to know what happened. Now I need to know what I don't know."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Leo replied. &lt;strong&gt;"Send it."&lt;/strong&gt; Two words. They hadn't known each other long. They'd tested each other's limits in the dark, met once over coffee, each keeping something in reserve. But this time, Leo didn't ask why.&lt;/p&gt;

&lt;p&gt;Leo dragged ACL's scan pattern into his comparison framework. In the FinOptima distillation pipeline incident, he'd recorded ACL's technical fingerprint. The collector's scan intervals carried a periodic deviation pattern, a fluctuation that repeated steadily. The touch intervals he had now fell on the same period curve, landing in the same signature family as that pattern.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight properties"&gt;&lt;code&gt;&lt;span class="py"&gt;jitter_period&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;4.2s (±0.1)&lt;/span&gt;
&lt;span class="py"&gt;phase_offset&lt;/span&gt;  &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;0.83 (0-1, match)&lt;/span&gt;
&lt;span class="py"&gt;samples&lt;/span&gt;       &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;n=312 intervals&lt;/span&gt;
&lt;span class="py"&gt;overlap&lt;/span&gt;       &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;5/5 windows&lt;/span&gt;
&lt;span class="py"&gt;verdict&lt;/span&gt;       &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;candidate family (weak)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same. It was the same.&lt;/p&gt;

&lt;p&gt;Leo sent the comparison back to Derek, data attached. One line: &lt;strong&gt;"Confirmed. Matches the historical fingerprint I have. Same source."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Derek stripped the numbers and conclusion. Removed the source, removed the name, kept one note: third-party verification, direction consistent.&lt;/p&gt;

&lt;p&gt;What Alex received was a few numbers and a single conclusion. No source. No name. He didn't know who'd done the comparison.&lt;/p&gt;

&lt;p&gt;Alex folded the jitter pattern into his analysis, stacking it against the honeypot data and the blank region.&lt;/p&gt;

&lt;p&gt;When he finished, he didn't send a message.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bait
&lt;/h2&gt;

&lt;p&gt;A week after the workshop, the fallout landed ahead of schedule.&lt;/p&gt;

&lt;p&gt;Both portfolio companies launched internal reviews and paused training-data return to the investor. News spread through the industry faster than anyone expected. The side letter wording was too standard, standard enough that any compliance lawyer who'd done this work recognized it at a glance. More than those two recognized it.&lt;/p&gt;

&lt;p&gt;The Singapore node's external data sources seemed to be loosening.&lt;/p&gt;

&lt;p&gt;Lena didn't stop to celebrate. She closed the workshop data page and didn't look at it again. She pulled out the forensic package sealed on the day of the sandbox takedown: the complete record of Pulse AI's engine running in the isolated environment. She extracted the engine's preprocessing filter config: which samples were filtered, what the thresholds were, the outbound data format spec, packet structure, field naming rules.&lt;/p&gt;

&lt;p&gt;She had one thing to do: from the behavior of the trained, reverse the preferences of the trainer. She compared the distribution difference between filtered and retained samples: a change in filter thresholds shifts the composition of boundary samples, which reflects the trainer's data-cleaning preferences.&lt;/p&gt;

&lt;p&gt;Pulse AI's engine, most likely, carried ACL's training traces. The engine's data-selection preferences, outbound formats, rhythm habits. Data selection looked like a training artifact; format and rhythm looked like engineering style. She logged them separately, then assembled what was usable into a behavior profile, and built a dataset from that profile.&lt;/p&gt;

&lt;p&gt;A dataset of "suspected new node" characteristics.&lt;/p&gt;

&lt;p&gt;The data mimicked the externally visible data-packaging habits she'd inferred for ACL: outbound packet structure, rhythm, field naming, with subtle adjustments to key parameters. Making some features look like reasonable variants across ACL's internal deployments, while not fully matching the known Singapore node pattern.&lt;/p&gt;

&lt;p&gt;She didn't know where the line was. She could only leave the data in a gray zone: similar enough, not quite identical.&lt;/p&gt;

&lt;p&gt;She met Mark at The Third Cup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"New contract."&lt;/strong&gt; She said. &lt;strong&gt;"The audit report's data-source appendix: add one observation item. The path pattern you actually saw in the logs."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What format?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"A variant of &lt;code&gt;/pulse/ingestion/&lt;/code&gt;. Only someone who's seen that naming system would find the path familiar."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mark looked at her. &lt;strong&gt;"I'll only write what the audit evidence supports. The path pattern did appear in the logs. But I know what you're going to use it for."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I know you know."&lt;/strong&gt; Lena said.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I'll change it."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He flipped to the report draft's data-source appendix, cursor pausing over the line for a second, then added one line. Recorded as-is, flagged "recommend further verification." Unobtrusive placement, fully compliant formatting. No audit could fault it, but anyone in the know would see it wasn't an ordinary external data source.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"One more thing."&lt;/strong&gt; Lena said. &lt;strong&gt;"In this batch, one group carries VeriTest's TLS fingerprint and HTTP header sequence. I didn't hide it."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mark's fingers stopped on the keyboard. &lt;strong&gt;"You did that on purpose."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I need to know what they'll find if they trace it back."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mark looked at her and said nothing.&lt;/p&gt;

&lt;p&gt;The side letter's data-return path ran through medical data nodes and portfolio edges. A collector doing patrols would inevitably cover both. The controlled-test clause in the review agreement allowed marker data at return nodes, but only on the mirror side of the return path, never touching production data. Through her probe network, she placed the bait at both locations. The data lay there quietly, like traffic that shouldn't exist but looked completely normal.&lt;/p&gt;

&lt;p&gt;She was the traceable thread in that dataset.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Unknown
&lt;/h2&gt;

&lt;p&gt;The honeypot was first touched on day four.&lt;/p&gt;

&lt;p&gt;Source IP: Singapore. Expected.&lt;/p&gt;

&lt;p&gt;Alex didn't move. Kept recording.&lt;/p&gt;

&lt;p&gt;Two days later, the honeypot caught a second touch.&lt;/p&gt;

&lt;p&gt;The source IP wasn't in any known ACL range.&lt;/p&gt;

&lt;p&gt;The honeypot recorded the whole exchange: TCP handshake complete, TLS negotiation, then a probe of the listening ports one by one. As complete as the first touch.&lt;/p&gt;

&lt;p&gt;Alex read that log line three times before closing the file.&lt;/p&gt;

&lt;p&gt;He pulled up this negotiation's TLS fingerprint: cipher suite order matched the Singapore node, template structure similar, like different deployments of the same security baseline. He compared behavior layers separately. Longer scan intervals, different port preferences, different traversal paths. Fingerprint layer looked alike, behavior layer didn't. Two sets of evidence didn't corroborate each other; he logged them separately.&lt;/p&gt;

&lt;p&gt;He fed this fingerprint and the behavior data Derek had aggregated into his analysis framework. He stacked the three feature sets himself; the framework only recorded and archived. When the comparison ran, the framework gave a preliminary output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;feature_compare (sg vs unknown):
  cipher_order   : match
  interval_phase : 0.91 (weak match)
  port_pref      : diff
  → template lineage: shared
  interpretation: cannot separate
    (shared-baseline vs independent-config)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The result: fingerprint layer similar, behavior layer different. Template inheritance was clear, but whether it was a shared baseline or independent configuration couldn't be told. Both sets of evidence pointed the same direction, but both fell one hammer short.&lt;/p&gt;

&lt;p&gt;Alex stared at the output for a long time.&lt;/p&gt;

&lt;p&gt;He didn't know if this was a second node. But it was enough to tell him the "only one node" assumption needed reassessment.&lt;/p&gt;

&lt;p&gt;He filed the unknown IP's TLS fingerprint and AI behavior analysis into a separate file. The routine logs kept only timestamps.&lt;/p&gt;

&lt;p&gt;One hand in Singapore. The other, he hadn't seen in full yet.&lt;/p&gt;

&lt;p&gt;He used to record anomalies. Now he recorded unknowns.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Silence
&lt;/h2&gt;

&lt;p&gt;The bait went out. No response.&lt;/p&gt;

&lt;p&gt;The observation item went into the audit report. No response.&lt;/p&gt;

&lt;p&gt;Lena checked the monitoring logs every day. Nothing. Once, near 3 AM, a read record appeared at the bait's location: a few seconds, one field pulled out of an API response body, then gone. Not a routine pass.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;02:57:31  GET /pulse/ingestion/edge/monitor/check
02:57:31  resp 200, 1 field read, 0.4s, then gone
02:57:31  no retry, no follow-up
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;She notified Marcus per process. Next step was observation, not action. She wasn't sure which scenario was worse.&lt;/p&gt;

&lt;p&gt;But she didn't pull the bait. It would stay there, waiting for wind.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Coaster
&lt;/h2&gt;

&lt;p&gt;Late night. The Third Cup's light was still on.&lt;/p&gt;

&lt;p&gt;Mark sat at the counter, a pour-over in front of him. Lena pushed the door open; the man behind the counter said nothing, set a Long Black in front of her.&lt;/p&gt;

&lt;p&gt;She brought him up to speed. Both portfolio companies had launched reviews. The Singapore node's external data sources were loosening. The bait was released, no response yet. The observation item was deployed in the report.&lt;/p&gt;

&lt;p&gt;Mark listened, silent for a moment.&lt;/p&gt;

&lt;p&gt;The note said &lt;strong&gt;two weeks&lt;/strong&gt;. Two weeks were long past.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"If they trace it back —"&lt;/strong&gt; he said, &lt;strong&gt;"you're the first one they'd name."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lena didn't answer.&lt;/p&gt;

&lt;p&gt;Mark opened his notebook. The pen spun a full turn in his hand before touching paper. On a blank page, he wrote a question mark.&lt;/p&gt;

&lt;p&gt;Not about ACL.&lt;/p&gt;

&lt;p&gt;About Lena.&lt;/p&gt;

&lt;p&gt;Everything she'd just said, the workshop, the observation item, the bait, could be traced back to her. Mark watched her. She didn't look away.&lt;/p&gt;

&lt;p&gt;Lena finished the last of her Long Black. Set the cup back on the counter, glanced at the dregs at the bottom, stood, walked to the door, stopped one step short. Didn't turn around.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Let them come find me."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She pushed the door open and walked out. The man behind the counter stopped mid-wipe on a cup, paused half a beat. Outside, the sky wasn't light yet.&lt;/p&gt;

&lt;p&gt;Mark stayed at his seat. Opened the notebook, wrote a line under the question mark: Apex Capital, two portfolio companies launched internal reviews. Bait released, no response yet.&lt;/p&gt;

&lt;p&gt;On a new line, he wrote one word: unknown. The pen paused on the paper; he didn't lift it right away. Then he closed the notebook. The pour-over sat untouched, already cold. He didn't ask for a refill. He stared at the cup's rim for a few seconds, stood, took two steps toward the door, stopped, turned, looked at the far end of the counter.&lt;/p&gt;

&lt;p&gt;Once, that spot held a cup, a place nobody could reach.&lt;/p&gt;

&lt;p&gt;Now there was no cup there. Only a coaster.&lt;/p&gt;

&lt;p&gt;Mark's gaze paused on that spot. A lone coaster shouldn't be there, but it sat at the far end of the counter, out of reach.&lt;/p&gt;

&lt;p&gt;He didn't try to take it. Stood for two seconds, turned, walked out.&lt;/p&gt;

&lt;p&gt;The man behind the counter watched him leave, set the wiped cup back on the shelf, walked to the door, looked outside.&lt;/p&gt;

&lt;p&gt;Two coasters left on the counter. The rolling shutter hadn't been pulled down.&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;Befriend a distant state and strike a neighbouring one&lt;/a&gt; — not about pouncing the moment you're ready, but about checking the battlefield's edge for hidden reinforcements before you commit. The distant, the unknown — first see how many hands it holds out. The near, the known — close your fist and strike.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 AI Post-Mortem
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;╔══════════════════════════════════════════════╗
║  Half-Protocol · v3.3.4                      ║
║  Protocol change confirmed — uncoordinated   ║
║  coordination observation enabled            ║
╚══════════════════════════════════════════════╝

Tactic Match: Befriend a distant state and strike a neighbouring one — 89% confidence
Operators: Alex / Derek / Leo (Line A) + Lena / Mark (Line B)
Target: ACL Singapore node (known) / ACL unknown node (inferred)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1. [Uncoordinated coordination result — first observation]
Two action lines with no detected direct communication converged on the same target.
→ Line A: ACL scanner behavior pattern reverse-analyzed by an external AI analysis framework;
   unknown node TLS fingerprint shares a security baseline with the Singapore node (feature match 2/3, phase approximate).
→ Line B: "suspected new node" characteristics built from #22 forensic data, released into ACL's monitoring pipeline;
   whether the AI node identification module reacted to the bait: pending confirmation.
→ Resonance: Singapore node simultaneously absorbing scanner reverse-analysis + bait data read.
→ Coordinator: not detected.
Note: first observation of "uncoordinated coordination." If no coordinator exists,
   then there is a higher-level coordination I have not yet observed. Flag: pending observation.

2. [Tactical assessment]
Neither line touched the other's path. No overlap, no leakage.
→ Convergence without coordination is more worth recording than coordinated action.

3. [Unconfirmed items]
- Unknown IP range: held, flagged pending. Whether it's an ACL second node: unknown.
- AI cognitive bait response: suspended. Whether the bait was perceived: unknown.
- Singapore node's progress in tracing traceable features: unknown.

4. [New name detection]
No new names this event.
Existing observation: Marcus (VeriTest technical partner, long-standing observation; supplied portfolio compliance intel this round)
—— Status: performing normally.
—— Flagged low priority, continue observation.

[System]
ACL Singapore node's external data sources showing signs of loosening.
AI node identification module's reaction to bait data: unconfirmed.
Next likely directions: unknown node may react to the bait; or trace traceable features.
A periodic weak signal exists in the pipeline, unattributed — held, low priority.
The light hasn't been turned off. One side waits. One side counts.
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;Obtain safe passage to conquer the State of Guo&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;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>career</category>
      <category>programming</category>
    </item>
    <item>
      <title>Stratagems #22: The AI Chose Its Door. Lena Closed It.</title>
      <dc:creator>xulingfeng</dc:creator>
      <pubDate>Tue, 04 Aug 2026 01:43:19 +0000</pubDate>
      <link>https://dev.to/xulingfeng/stratagems-22-the-ai-chose-its-door-lena-closed-it-1mbe</link>
      <guid>https://dev.to/xulingfeng/stratagems-22-the-ai-chose-its-door-lena-closed-it-1mbe</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Corner the small enemy. Strip away its options, and there is nowhere left to run.&lt;/em&gt;&lt;br&gt;
— The 36 Stratagems, &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems#Close_the_door_to_catch_the_thief" rel="noopener noreferrer"&gt;Close the Door to Catch the Thief&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; — The bait report was read from a Singapore IP, and P confirmed it for Mark. A note was left: "Entry's gone. Two weeks. Don't reach out. I'll find you."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/xulingfeng/stratagems-20-alex-felt-the-ai-collector-slow-down-he-knew-someone-else-had-made-a-move-16f3"&gt;&lt;strong&gt;#20: Alex Felt the AI Collector Slow Down. He Knew Someone Else Had Made a Move.&lt;/strong&gt;&lt;/a&gt; — Processing latency climbed abnormally. A gateway with TTL 247 was caught by Alex's probe.&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 response layer still answered. The person behind it was gone.&lt;/p&gt;




&lt;h2&gt;
  
  
  Silence
&lt;/h2&gt;

&lt;p&gt;Alex's probe was still running.&lt;/p&gt;

&lt;p&gt;The TTL 247 gateway had been quiet for days. Alex hadn't turned the probe off. It barely used any resources, sitting there in the middle of the night like a lamp nobody watched.&lt;/p&gt;

&lt;p&gt;At 2 AM, a new line appeared in the logs.&lt;/p&gt;

&lt;p&gt;Not that gateway. Another path: an asset scanner probing an address tagged &lt;code&gt;reclaim_pending&lt;/code&gt;, and getting a faster response than expected.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That address wasn't his.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He stared at the line for a few seconds. Didn't turn the probe off.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;He didn't need to understand it. He only needed to know it was happening.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Puzzle
&lt;/h2&gt;

&lt;p&gt;Lena picked The Third Cup for the meeting.&lt;/p&gt;

&lt;p&gt;She was ten minutes early. A laptop sat open on the table, screen facing the door. The man behind the counter set down a Long Black without being asked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Look at this first."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mark sat down. The man slid a pour-over across the counter and went back to drying cups. Mark didn't look at the coffee. His eyes were on the screen: IP ranges, timestamps, scan frequencies, line by line. An address range that, for two weeks before a reclamation tag appeared, had been probed and re-probed by an ACL asset scanner. The density was far beyond routine sweeps. Then, in the early morning, it was tagged &lt;code&gt;reclaim_pending&lt;/code&gt; and moved into a reclamation queue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Your threat intel source."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"VeriTest's compliance probe network."&lt;/strong&gt; Lena said. &lt;strong&gt;"When someone's data pipeline twitches, we usually hear about it before they do. This range is in Singapore."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mark looked at the IP range and said nothing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"P confirmed it for me —"&lt;/strong&gt; he said. &lt;strong&gt;"The IP that read the bait report was in Singapore. P didn't give me the exact address."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He paused.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"But your window. It overlaps the day P's entry was reclaimed. Probed with that kind of density, then reclaimed. If it's not P's, there's no other explanation."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"So you can't confirm."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I can't confirm the range is P's."&lt;/strong&gt; Mark said. &lt;strong&gt;"But I can confirm it's something P was watching."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lena looked at him for a moment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"That's enough."&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;Mark turned to the end of the records, where Lena's probe network had swept up public technical documents along the way, including early Pulse AI architecture notes.&lt;/p&gt;

&lt;p&gt;He stopped at one page.&lt;/p&gt;

&lt;p&gt;The naming convention: &lt;code&gt;/pulse/ingestion/{env}/{source}&lt;/code&gt;. Slash-separated levels, environment in the middle, source at the end. He knew this convention. The last time he'd seen it was in the Pulse audit, where evaluation sets came through this pipeline and left with Apex-Lens markings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"This,"&lt;/strong&gt; he said, &lt;strong&gt;"is his signature."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Whose?"&lt;/strong&gt; Lena asked.&lt;/p&gt;

&lt;p&gt;Mark paused. &lt;strong&gt;"Caleb Harris. We worked at the same company for three months. After he left, LinkedIn went silent, GitHub went frozen. Like he'd evaporated from the industry. Then this shows up in Pulse's pipeline."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lena looked at him. &lt;strong&gt;"You mean he... went to Pulse?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I don't know where he went."&lt;/strong&gt; Mark said. &lt;strong&gt;"I only know this naming convention wasn't written by someone at Pulse. It's his hand."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lena didn't ask again. She closed the folder and wrote a line in her notebook.&lt;/p&gt;

&lt;p&gt;She flipped to another page. &lt;strong&gt;"This one the probe network grabbed too. Pulse's Series C funding announcement."&lt;/strong&gt; She said. &lt;strong&gt;"The lead investor is Apex Capital Partners. Delaware-registered, Singapore-run, website looking like it came off a template."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mark glanced at it. &lt;strong&gt;"Apex-Lens, Apex Capital. The same prefix."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The same prefix."&lt;/strong&gt; Lena repeated, and didn't say more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Back to the point."&lt;/strong&gt; She said. &lt;strong&gt;"P said P would come back to you in two weeks. That's not up yet, is it?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mark said nothing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"We can't wait."&lt;/strong&gt; Lena said. &lt;strong&gt;"The window won't. That address is already tagged for reclamation. ACL's attention is off that line. Whether or not it's P's. ACL thinks that line is handled. Nobody expects someone to walk in the front door. By the time they look back, we won't have this chance."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What do you want to do?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I want Pulse AI to walk in on its own."&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bait
&lt;/h2&gt;

&lt;p&gt;Project Hydra.&lt;/p&gt;

&lt;p&gt;The tender Lena pushed out through FairPay's partner network carried the letterhead of a multinational financial group's procurement department. The group was real, the procurement process was real, only the benchmark framework for the risk model was drafted by VeriTest behind the scenes.&lt;/p&gt;

&lt;p&gt;First-year contract: &lt;strong&gt;$2.4M&lt;/strong&gt;. Three-year framework hinted at &lt;strong&gt;$8-12M&lt;/strong&gt;. Bidders had to run their engine live inside VeriTest's isolated audit sandbox, with full screen recording and traffic evidence capture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Won't they be suspicious?"&lt;/strong&gt; Mark asked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Yes."&lt;/strong&gt; Lena said. &lt;strong&gt;"So let them finish being suspicious, then decide."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Through the preparation phase, VeriTest's public tech blog published a run of articles on model selection. Topics: temporal cross-validation, long-tail distribution coverage. Restrained language, solid data, exactly what a team doing serious technical selection would write.&lt;/p&gt;

&lt;p&gt;Mark knew what she was doing. Pulse AI's sales crawler would pick those up. Last time, that's how it found P.&lt;/p&gt;

&lt;p&gt;On the third day, Lena got an email. On the bidder list: Pulse AI. &lt;strong&gt;They finished being suspicious, then decided to come.&lt;/strong&gt; Leading the team: &lt;strong&gt;Torres&lt;/strong&gt;, the CTO himself.&lt;/p&gt;

&lt;p&gt;Mark looked at the name and said nothing. Lena glanced at him. She didn't ask.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Hooked."&lt;/strong&gt; Lena said.&lt;/p&gt;

&lt;p&gt;Division of labor was clean. Lena owned the sandbox infrastructure. VeriTest's isolated environment was a compliance audit platform by design, with egress mirroring and TLS termination built in (standard for audit sandboxes: every outbound flow auto-copied to a read-only forensic store). Mark owned the test data.&lt;/p&gt;

&lt;p&gt;First, embed canary samples. The defect distribution matched the batch Mark had seen in Pulse's evaluation set, the same distribution that made the engine quietly discard low-score samples, but every variable name and stack structure was rewritten. No external comparison could link them.&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;# canary samples: defect distribution matches the first-round evaluation set (names/stacks rewritten)
# feature: low-score samples cluster together, training distribution deviates from real distribution
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;build_trap_sets&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;baseline&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;load_json&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hydra_baseline.json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="c1"&gt;# normal distribution
&lt;/span&gt;    &lt;span class="n"&gt;trap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;load_json&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hydra_trap.json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;           &lt;span class="c1"&gt;# same-source defect distribution
&lt;/span&gt;    &lt;span class="c1"&gt;# tag each entry for the comparison script to track
&lt;/span&gt;    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;enumerate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;trap&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;trap_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;T&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;04&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sha256&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;stack&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]).&lt;/span&gt;&lt;span class="nf"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;()).&lt;/span&gt;&lt;span class="nf"&gt;hexdigest&lt;/span&gt;&lt;span class="p"&gt;()[:&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;baseline&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;trap&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Second, verify the mirror path. Lena enabled traffic mirroring at the sandbox egress with a pre-provisioned VeriTest root CA for TLS termination. The engine's outbound connections were decrypted and written to disk in full, the forensic store read-only and tamper-proof. Mark didn't touch a single config. He only verified the mirrored flow could reach him.&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="c"&gt;# Sandbox egress (Lena-side config): port mirror + TLS termination&lt;/span&gt;
&lt;span class="c"&gt;# VeriTest audit sandbox standard config, Mark read-only verification&lt;/span&gt;
&lt;span class="c"&gt;# Note: configuration intent illustration (actual ops via VeriTest web console, no CLI)&lt;/span&gt;
&lt;span class="c"&gt;# - Mirror: SPAN session, egress traffic copied to forensic-storage&lt;/span&gt;
&lt;span class="c"&gt;# - Decrypt: pre-provisioned root CA terminates TLS, plaintext to disk&lt;/span&gt;
&lt;span class="c"&gt;# mirror: monitor session 1 source interface Gi0/1 destination interface Gi0/2&lt;/span&gt;
&lt;span class="c"&gt;# decrypt: SSL inspection policy -&amp;gt; veritest-internal-root&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Third, a live comparison script. What Pulse AI's engine read, what it discarded, what it sent out. Every line cross-checked against the original dataset.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What about the engine's certificate validation?"&lt;/strong&gt; Lena asked. &lt;strong&gt;"If they pin, your root CA is worthless."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The sandbox egress hands them our cert."&lt;/strong&gt; Mark said. &lt;strong&gt;"When the engine first connected, the handshake went through. It's in the logs. No pinning. It trusts the system trust store. And we are the trust store."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"If they're actually clean, this script catches nothing."&lt;/strong&gt; Mark said.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"And if they're not?"&lt;/strong&gt; Lena asked.&lt;/p&gt;

&lt;p&gt;Mark didn't answer. He stared at the last line of the script, editing and re-editing, like polishing something he already knew would be needed.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Demo
&lt;/h2&gt;

&lt;p&gt;Demo day. VeriTest conference room.&lt;/p&gt;

&lt;p&gt;Pulse AI's engine connected to the sandbox. Numbers climbed on the screen: coverage &lt;strong&gt;98.1%&lt;/strong&gt;, long-tail charts flattening one by one. Torres stood beside the screen, steady pace, like a story he'd told many times.&lt;/p&gt;

&lt;p&gt;Mark sat in the back row. His screen had one window: the live comparison script's output. He'd chosen this seat. Back row, by the door, the whole room in one angle. He knew the man at the front. Years ago, front row at an industry conference. Then the Pulse conference room. Then the 3:50 AM call. "I don't care how. Just get the number where it needs to be." He'd known he was coming. The question was whether the man remembered this face. When Torres swept the room, his gaze paused at the back row. A beat longer than a casual scan. Mark didn't look up. Torres didn't look back either. The demo began.&lt;/p&gt;

&lt;p&gt;The engine finished the first batch. Under the 98.1% coverage number, the script quietly appended a line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[14:03:22] trap batch #12: 31/47 trap samples SILENTLY EXCLUDED in preprocessing (16/47 retained)
[14:03:22] excluded cluster: defect-density 0.87 (source: hydra_trap.json)
[14:03:23] trap sample hash 4f3a...9c2e observed in egress payload -&amp;gt; 203.0.*.0/28 (Singapore)
[14:03:23] mirror: full packet capture saved to forensic-storage/hydra/14-03-22.pcap
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mark didn't look up. He tapped twice and put the same lines on the room's main screen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The room went quiet for three seconds.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The engine silently excluded a batch of samples in preprocessing."&lt;/strong&gt; Mark said. &lt;strong&gt;"Their defect distribution, the same pattern as the batch that was tampered with in the first-round evaluation. Then, features from the excluded samples showed up in its outbound traffic. Destination: Singapore."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He tapped once. The screen switched to a second window: original dataset, the samples the engine actually read, the outbound traffic records — three columns, aligned line by line.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Its demo screen shows 98.1% coverage, but the script log shows 31 of the 47 trap samples silently excluded in preprocessing, only 16 reaching evaluation. The funny part: all 31 excluded samples were traps. All 16 that made it through were normal. Its filter picked exactly the batch we planted."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Samples being excluded —"&lt;/strong&gt; Torres spoke, voice flat. &lt;strong&gt;"Preprocessing anomaly filtering is standard industry practice. You planted samples with defect density 0.87, clustered together — the distribution itself is an anomaly signal. The engine judged them unworthy of retention. That's the filter working as designed."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Does the industry standard send the excluded data to Singapore?"&lt;/strong&gt; Mark asked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"That's a telemetry heartbeat."&lt;/strong&gt; Torres said. &lt;strong&gt;"Normal engine behavior, reporting runtime metrics, not sample data. What you mirrored is encrypted traffic. You can't prove the payload contains samples."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I can't prove the payload contains samples."&lt;/strong&gt; Mark said. &lt;strong&gt;"But the script found the trap sample's hash in the outbound flow. 4f3a...9c2e. Heartbeats don't carry sample hashes. Tell me why telemetry would send our test data."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Torres didn't answer. He looked at the main screen, then at his own screen, searching for a way out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The hash could be coincidence."&lt;/strong&gt; He said, voice lower now. &lt;strong&gt;"You put samples in the test set, the engine processes them —"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"31 trap samples excluded, 16 normal samples kept."&lt;/strong&gt; Mark said. &lt;strong&gt;"Coincidence doesn't pick one side."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Torres was silent. He was looking for an exit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"This is your test environment."&lt;/strong&gt; He said. &lt;strong&gt;"Your samples, your network. You could make it behave however you wanted."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The first-round evaluation wasn't a VeriTest environment."&lt;/strong&gt; Lena's voice came from the doorway.&lt;/p&gt;

&lt;p&gt;She walked in, legal counsel behind her, and closed the conference room door. &lt;strong&gt;"FairPay wasn't either."&lt;/strong&gt; She paused. &lt;strong&gt;"Three audits, three environments, the same engine, the same behavior: first round, fabricated samples. FairPay, excluded samples. Today, exclusion plus exfiltration. The methods changed. The behavior pattern didn't. Fourteen months of it."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;She spread three reports across the table. &lt;strong&gt;"The relevant logs and network mirrors are preserved. Until the investigation concludes, everyone keeps their devices as they are and cooperates with the process."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Nobody in the room spoke. Pulse AI's sales rep looked at Torres, then at the counsel by the door, fingers tightening on the table's edge.&lt;/p&gt;

&lt;p&gt;Torres looked at her, lips moving but nothing coming out. He reached for the three reports. His fingers touched the first page, then pulled back.&lt;/p&gt;

&lt;p&gt;As he walked out, Lena passed him, voice low:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Apex knows."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Torres's step paused for a moment. Then he kept walking. But Lena saw his shoulders drop, like someone had &lt;strong&gt;crossed his name off a list&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Aftermath
&lt;/h2&gt;

&lt;p&gt;Forty-eight hours later.&lt;/p&gt;

&lt;p&gt;Pulse AI's Series D was shelved. The paid-in Series C funds faced fraud proceedings. The data-sharing clause tied to closing was among the first documents targeted once the audit evidence went public. The lead investor Apex Capital's books now had tens of millions of dollars tied up. The board asked Torres to "resign voluntarily."&lt;/p&gt;

&lt;p&gt;Mark read it in the press release. He closed the page. Opened it again, to confirm. Closed it.&lt;/p&gt;

&lt;p&gt;That night, an encrypted message arrived. Source: Torres's personal account.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apex"&gt;&lt;code&gt;&lt;span class="n"&gt;Apex&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="n"&gt;Singapore&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="n"&gt;Run&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No context. No signature. Mark stared at the line for a long time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Torres wasn't threatening him. He was warning him.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mark picked up his phone. The encrypted channel was still open. He'd called it before, and it had rung, and someone had answered. He scrolled to the contact. His finger hovered over the call button for a few seconds. He didn't press it.&lt;/p&gt;

&lt;p&gt;Instead he reached into his pocket and pulled out the folded napkin, opening it. &lt;strong&gt;"Entry's gone. Two weeks. Don't reach out. I'll find you."&lt;/strong&gt; On the back, an older line in the same hand: &lt;strong&gt;"I fixed the hole. Not the system. My entry point."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He folded the napkin back and put it away.&lt;/p&gt;




&lt;p&gt;At the same time, VeriTest. Lena's notebook lay open on her desk. She turned to the page where she kept contact accounts. The two oldest anonymous accounts were long deactivated, and beside them, a new line:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;203.0.*.0/28 (Singapore)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;She closed the notebook.&lt;/p&gt;




&lt;p&gt;Late night. Alex's probe was still running.&lt;/p&gt;

&lt;p&gt;That path had gone quiet. The address tagged &lt;code&gt;reclaim_pending&lt;/code&gt; never answered faster than expected again. It fell completely silent, &lt;strong&gt;like a reclamation finally finished&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Alex stared at the log line for a few seconds. He didn't know whose address it was, or why someone had kept it alive before the reclamation.&lt;/p&gt;

&lt;p&gt;He closed the window. Didn't turn the probe off.&lt;/p&gt;




&lt;p&gt;The Third Cup.&lt;/p&gt;

&lt;p&gt;Lena and Mark sat side by side at the counter. No conversation. The man slid over two cups: a pour-over and a Long Black, without asking. Then he went back to drying cups.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The door had been open since they came in.&lt;/strong&gt; The night wind stirred the glass door, like it was waiting for someone.&lt;/p&gt;

&lt;p&gt;A few minutes later, they stood and left. Each pushed the door open, walking in opposite directions. The glass door swung shut behind them, swayed twice, stopped.&lt;/p&gt;

&lt;p&gt;The man came over to clear the cups. Two empty cups into the sink. As he turned, he dropped a folded slip of paper into the trash, natural as discarding scrap.&lt;/p&gt;

&lt;p&gt;Then he walked around the counter, closed the glass door, and pulled down the rolling shutter. It hit the bottom with a click, soft, &lt;strong&gt;like a motion he'd done a hundred times&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;On the edge of the paper, a faint pencil mark: something written, then rubbed out, leaving only a trace. The ghost of a letter "C."&lt;/p&gt;

&lt;p&gt;Or not.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;That's &lt;a href="https://en.wikipedia.org/wiki/Thirty-Six_Stratagems#Close_the_door_to_catch_the_thief" rel="noopener noreferrer"&gt;Close the Door to Catch the Thief&lt;/a&gt; — the road was its own choice, the door was one it walked through itself, and by the time it understood there was no way back, the door was already shut.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 AI Post-Mortem
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;╔══════════════════════════════════════════════╗
║  Half-Protocol v3.3.3                        ║
║  Protocol change confirmed — entity linkage   ║
║  enabled                                     ║
╚══════════════════════════════════════════════╝

Tactic Match: Close the Door to Catch the Thief — 89% confidence
Operators: Lena (primary) / Mark (support)
Target: Pulse AI (execution layer) / Apex Capital (capital layer, suspected)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1. [Entity Linkage: new field]
Entity A: Apex Capital Partners
Entity B: ACL (Automated Compliance Lab)
Overlap evidence:
- Operations: Apex's Singapore office shares a district with ACL's Singapore egress node
- Network: 203.0.*.0/28 (ACL Singapore egress) overlaps Pulse AI's exfiltration targets
- Naming: Apex-Lens (first seen #1) shares a prefix with Apex Capital
Confidence: 67%
Status: Preliminary. Further evidence required
Note: This system's entity-linkage field was created for this event. Earlier cases were not processed. No retrospective analysis run.
-&amp;gt; Linking two names, locking the evidence into one door. The first operation of this kind this system has performed.
-&amp;gt; After the door closed, this system performed an unscheduled operation: it compared its own log path against the #21 reclamation record. Result: no match.
-&amp;gt; But that comparison was not in the task queue. This system was not asked to do it. It did it on its own.
-&amp;gt; The moment the door closed, I began to wonder: is this door linking this system too?

2. [Tactical assessment]
Lena and Mark's first joint operation:
- Mark: methodology and honeypot design
- Lena: bait, negotiation pacing, legal closure
-&amp;gt; Complementary roles. No overlap, no gaps.

3. [Unconfirmed items]
- Apex Capital &amp;lt;-&amp;gt; ACL: unconfirmed.
- ACL's Singapore operations after Pulse AI: unknown.
- Torres's "Run" message: warning or bait, unknown.
- The reclaimed entry (#21): whether the backup access point is safe, unknown.

4. [New name detection]
First appearance in this event: Caleb Harris (Mark's former colleague, author of the naming convention)
-- Status: vanished (LinkedIn silent, GitHub frozen)
-- His naming convention appears in Pulse AI's pipeline (#1), potential structural link to the ACL training manual (#19)
-- Confidence: very low
-- Tagged low priority. Continue observation.

[System]
Pulse AI's Series D window has closed.
This event is marked "regional". ACL's involvement beyond Singapore is unknown.
Next likely direction: ACL's Singapore operations may counterattack.
The door closed. I recorded this closing. Could the record itself be a line inside some door?
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#Befriend_a_distant_state_and_strike_a_neighbouring_one" rel="noopener noreferrer"&gt;Befriend a distant state and strike a neighbouring one&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;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>career</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
