<?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: joinwell52</title>
    <description>The latest articles on DEV Community by joinwell52 (@joinwell52).</description>
    <link>https://dev.to/joinwell52</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3887527%2F9ce60f79-7027-4ecd-8c9b-bf495e53c9b6.png</url>
      <title>DEV Community: joinwell52</title>
      <link>https://dev.to/joinwell52</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/joinwell52"/>
    <language>en</language>
    <item>
      <title>Six AI Teams, One Inspection Task: Delivery, Failure, and the Evidence Between</title>
      <dc:creator>joinwell52</dc:creator>
      <pubDate>Thu, 10 Sep 2026 05:24:12 +0000</pubDate>
      <link>https://dev.to/joinwell52/six-ai-teams-one-inspection-task-delivery-failure-and-the-evidence-between-2nol</link>
      <guid>https://dev.to/joinwell52/six-ai-teams-one-inspection-task-delivery-failure-and-the-evidence-between-2nol</guid>
      <description>&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%2Fz99zrmrogl7lt3u12wt5.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%2Fz99zrmrogl7lt3u12wt5.png" alt="Six AI teams — conceptual cover" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For developers building multi-agent workflows, a final answer is only one part of delivery. This is the complete field report from six CodeFlowMu/FCoP inspection runs, following task graphs, tool receipts, report submissions, authorized recovery, and an independent evaluator.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The same inspection task. One AI team delivered in 12 minutes 20 seconds. Another was still unfinished after two hours. One never assigned a single child task.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Was the difference model capability, integration, or how the PM organized the work? We gave six AI teams the same assignment through CodeFlowMu and FCoP, then followed the retained task, execution, report, authorization, and independent EVAL records to find out.&lt;/p&gt;

&lt;p&gt;Using CodeFlowMu and FCoP to make AI teamwork observable, documented, and open to scrutiny&lt;/p&gt;

&lt;p&gt;Runs: September 9, 2026 · Analysis: September 10, 2026&lt;/p&gt;

&lt;p&gt;On September 9, 2026, we used CodeFlowMu to give six AI teams the same system-inspection task. Each PM had to divide the work, use tools, collect specialist reports, and report to ADMIN. The central question was not simply which team finished fastest. It was what evidence CodeFlowMu captured, and how that evidence let us compare, diagnose, and judge the work. FCoP provided formal coordination records; CodeFlowMu connected tasks, execution, delivery, approvals, recovery, and independent EVAL analysis. Both successful and failed attempts remained available for review.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. CodeFlowMu, FCoP, and the Test
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1.1 What CodeFlowMu and FCoP do
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;CodeFlowMu is a multi-agent team coordination and governance system built on FCoP, with locally retained work records.&lt;/strong&gt; It organizes agents in different jobs and supports formal delivery, evidence checking, approval, independent evaluation, runtime diagnosis, and evidence retention. Users can trace a task to its execution, then trace a report's claims back to supporting records.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FCoP, the File-based Coordination Protocol, expresses collaboration through formal files.&lt;/strong&gt; TASK, REPORT, and related review records represent assignments, deliverables, and decisions in a persistent, inspectable form. CodeFlowMu applies that protocol to operating AI teams. See the &lt;a href="https://github.com/joinwell52-AI/FCoP" rel="noopener noreferrer"&gt;public FCoP project&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Together, they address a practical problem: after someone asks an AI team to “check the system,” who actually checked it, what was examined, and what supports the claim that the work is complete? Task relationships, execution receipts, and reports make these questions answerable after the conversation has ended.&lt;/p&gt;

&lt;h4&gt;
  
  
  Who executes, and who evaluates?
&lt;/h4&gt;

&lt;p&gt;The test configuration had one human ADMIN, four execution-team seats, and an independent EVAL seat. The table describes job responsibilities. Each PM decided how to divide the five inspection areas between DEV, OPS, and QA; those differences were part of the test.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Responsibility&lt;/th&gt;
&lt;th&gt;Main evidence&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ADMIN&lt;/td&gt;
&lt;td&gt;Human requester and final acceptor; assigns work, authorizes restricted actions, and can terminate a run&lt;/td&gt;
&lt;td&gt;Root submission, authorization, acceptance, and archive records&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PM-01&lt;/td&gt;
&lt;td&gt;Interprets the request, creates assignments, coordinates progress, accepts child work, and reports to ADMIN&lt;/td&gt;
&lt;td&gt;Child TASKs, dispatch and acceptance receipts, final PM REPORT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DEV-01&lt;/td&gt;
&lt;td&gt;Performs assigned technical, tool, or code-related inspections&lt;/td&gt;
&lt;td&gt;Tool/execution records and DEV REPORT; inspection is not automatic authorization to modify code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OPS-01&lt;/td&gt;
&lt;td&gt;Checks assigned runtime, environment, and configuration concerns&lt;/td&gt;
&lt;td&gt;Runtime evidence and OPS REPORT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QA-01&lt;/td&gt;
&lt;td&gt;Performs assigned verification and review, distinguishing supported conclusions from issues and unknowns&lt;/td&gt;
&lt;td&gt;QA REPORT and its actual verdict&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EVAL-01&lt;/td&gt;
&lt;td&gt;Independently examines the run, delivery quality, and evidence consistency&lt;/td&gt;
&lt;td&gt;Observation report, run-record analysis, and evaluation-attempt records&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;All six runs used the same EVAL configuration: Cursor SDK / &lt;code&gt;auto-smart&lt;/code&gt;.&lt;/strong&gt; EVAL did not switch with the tested team. PM, DEV, OPS, and QA were the execution team; EVAL ran in its own session, did not perform the team's inspection assignments, and did not make PM or ADMIN acceptance decisions. Holding evaluator configuration constant reduced one source of variation. &lt;code&gt;auto-smart&lt;/code&gt; is a routing label, however, not proof that the underlying foundation model stayed fixed.&lt;/p&gt;

&lt;p&gt;EVAL has three distinct report paths: a &lt;strong&gt;task-run record&lt;/strong&gt; analyzes a complete execution, a &lt;strong&gt;system observation&lt;/strong&gt; examines system assets, and a &lt;strong&gt;closeout observation&lt;/strong&gt; checks PM’s final report against its task evidence chain. All contain analysis, with different triggers, scopes and skill combinations; see the &lt;a href="https://joinwell52-ai.github.io/joinwell52/en/research/2026-09-09-codeflowmu-six-ai#eval-report-matrix" rel="noopener noreferrer"&gt;report and skill matrix in section 1.10&lt;/a&gt;. We check EVAL against original records and retain failures, retries and mismatched material. A common evaluator configuration does not mean that every run produced all three reports.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/articles/codeflowmu-six-ai-20260909/assets/scene-task-panel.png" 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%2Fxhiq237fq7u60cjvi2sm.png" alt="Original task panel: Doubao run" width="800" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;English reading guide — original Chinese UI:&lt;/strong&gt; “待 ADMIN 验收” means “Awaiting ADMIN acceptance”; “子任务已完成” means “Child task completed”; “未投递 REPORT” means “Undelivered REPORT.” The screenshot preserves the conflict between completed tasks and stale queue labels.&lt;/p&gt;

&lt;p&gt;Click the screenshot to inspect its original pixels.&lt;/p&gt;

&lt;p&gt;Original screenshot, September 9: the root task awaits ADMIN acceptance while three specialist tasks are complete. The stale “undelivered report” message at the bottom was separately recorded as a display issue. A UI label cannot replace formal delivery receipts. Screenshots preserve the original Chinese interface; the surrounding English text explains the relevant evidence.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.2 The exact task
&lt;/h3&gt;

&lt;p&gt;All six runs received the same initial task body. Reminders, authorizations, and manual termination were recorded separately; this was not presented as an intervention-free experiment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Original ADMIN task, preserved verbatim:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;检查FCoP落地情况，检查MCP工具情况，检查SKILLS分配和使用，检查各角色权限和职责，检查轨机运行情况；请PM分解任务，团队协作完成；最后形成报告向ADMIN汇报！&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;English translation:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Check the implementation of FCoP, the MCP tools, the allocation and use of SKILLS, each role's permissions and responsibilities, and runtime operation. PM should decompose the task and have the team complete it collaboratively, then produce a report for ADMIN.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Task titles identified the tested model—for example, “system inspection codex,” “system inspection Doubao,” or “system inspection Qwen.” The shared test was the body above. The original wording “轨机” is retained in the source rather than silently edited.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why this task?
&lt;/h4&gt;

&lt;p&gt;First, it inspects the environment the team itself uses: coordination records, available tools, skill allocation, permissions, and runtime health. Second, it explicitly requires decomposition, teamwork, and a final report, exposing organization as well as individual reasoning. Third, it leaves realistic natural-language choices open. We did not preassign every checklist item or dependency, allowing us to observe how each PM chose scope, sequence, and a stopping point.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A reasonable deliverable is an evidence-backed inspection report.&lt;/strong&gt; Each of the five areas needs a scope, a verification method, findings, and any unverified items. Workers should provide formal reports and the PM should form an overall judgment. Finding a system issue does not automatically mean the inspection failed. Conversely, “inspect and report” does not automatically authorize code repair. Inspection completion and product health are separate outcomes.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.3 CodeFlowMu as the test instrument
&lt;/h3&gt;

&lt;p&gt;CodeFlowMu organized the work and retained its evidence. It did not replace the PM's business judgment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://raw.githubusercontent.com/joinwell52-AI/joinwell52/61e8c10636b197865b380447063d0c9307ba2a94/docs/public/articles/codeflowmu-six-ai-20260909/assets/en-00-instrument.png" 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%2F2ii7llky3pz57faavs90.png" alt="Test structure" width="799" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The workflow was ADMIN → PM → DEV/OPS/QA → PM delivery, with independent EVAL examining the records. The instrument had three roles: operate the collaboration, collect evidence of what happened, and support independent review. All timing, completion, and quality comparisons follow that record chain.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.4 Models and integration paths
&lt;/h3&gt;

&lt;p&gt;“Six AIs” refers to six models operating as teams under their respective integration configurations. They ran in this order: Codex, Doubao, DeepSeek, Kimi, Qwen, Cursor. Model identifiers came from the identity replies and saved run records.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scheme&lt;/th&gt;
&lt;th&gt;Model identifier&lt;/th&gt;
&lt;th&gt;Provider and execution framework&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Codex&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gpt-5.6-terra&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;ChatGPT subscription / Codex CLI (H2 · Shadow)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Doubao&lt;/td&gt;
&lt;td&gt;&lt;code&gt;doubao-seed-2-0-pro-260215&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ark API / Codex app-server&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek&lt;/td&gt;
&lt;td&gt;&lt;code&gt;deepseek-v4-pro&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;DeepSeek API / Codex app-server&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kimi&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kimi-k3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Moonshot API / Codex app-server&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen&lt;/td&gt;
&lt;td&gt;&lt;code&gt;qwen3.8-max&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;DashScope API / Codex app-server&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor&lt;/td&gt;
&lt;td&gt;&lt;code&gt;auto-smart&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cursor SDK&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The first five used the Codex framework; Cursor used its SDK. The Cursor QA seat initially had a model unavailable through that Host, and recovered after authorization. That intervention remains part of the result. The EVAL configuration stayed Cursor SDK / auto-smart throughout.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/articles/codeflowmu-six-ai-20260909/assets/scene-team-models.png" 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%2Fxnnogjjbyjf65ud2pr88.png" alt="Original model configuration page" width="800" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;English reading guide — original Chinese UI:&lt;/strong&gt; the top section is “EVAL channel and model.” It shows the PM team using &lt;code&gt;codex/gpt-5.6-terra&lt;/code&gt;, EVAL using &lt;code&gt;cursor/auto-smart&lt;/code&gt;, and no active EVAL session. The bottom cards are PM (project manager), DEV (developer), OPS (operations), QA (quality assurance), and EVAL (independent evaluator).&lt;/p&gt;

&lt;p&gt;Click the screenshot to inspect its original pixels.&lt;/p&gt;

&lt;p&gt;This later-supplied configuration screenshot illustrates the product, rather than proving every historical run's configuration. It shows a Codex/gpt-5.6-terra PM team and a separately configured Cursor/auto-smart EVAL seat. No EVAL session is running in the screenshot. Historical model identity must still be checked against the corresponding run.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.5 Initialization, execution, and timing
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Every run began after CodeFlowMu system initialization.&lt;/strong&gt; Records were exported and backed up before initialization for the next run. We configured and checked the next team's model, restarted the service on port 18766 after switching models, and submitted the same task. Late EVAL reports were preserved in supplementary backup batches.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Condition&lt;/th&gt;
&lt;th&gt;Procedure&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Machine and code&lt;/td&gt;
&lt;td&gt;Same machine, CodeFlowMu V2.2.9, commit &lt;code&gt;cb590ce&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Starting point&lt;/td&gt;
&lt;td&gt;System initialization before each new run&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Execution team&lt;/td&gt;
&lt;td&gt;Switch and verify the tested configuration; record mistakes and recovery&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Evaluation&lt;/td&gt;
&lt;td&gt;Keep EVAL at Cursor SDK / auto-smart&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Task&lt;/td&gt;
&lt;td&gt;Same original body in section 1.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scheduled reminder&lt;/td&gt;
&lt;td&gt;Leave the initialization-default PM progress reminder enabled; it wakes the PM but makes no business decision&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Retention&lt;/td&gt;
&lt;td&gt;Separate export and backup by run; correlate sessions as well as possibly reused task IDs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Initialization is not a full snapshot restore of the OS, every cache, or external model services. Network and provider conditions can change. The result therefore compares integrated teams following a shared initialization procedure, not isolated foundation models under perfectly identical conditions.&lt;/p&gt;

&lt;p&gt;Duration runs from the PM's first formal session to successful submission of its normal final report. Authorization and recovery within the run count toward elapsed time. Subsequent ADMIN acceptance and EVAL generation do not. For incomplete runs, we report time to forced termination, not “completion time.”&lt;/p&gt;

&lt;h3&gt;
  
  
  1.6 From a conversation to inspectable work
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://raw.githubusercontent.com/joinwell52-AI/joinwell52/61e8c10636b197865b380447063d0c9307ba2a94/docs/public/articles/codeflowmu-six-ai-20260909/assets/en-14-codeflow-contribution.png" 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%2Fapm8caqp73cw83pqj6ba.png" alt="How CodeFlowMu supports the test" width="800" height="205"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CodeFlowMu placed assignments, execution, delivery, and authorization into a traceable workflow. The PM's organizational choices became observable: how quickly it delegated, which relationships it created, whether reports were complete, and how it handled trouble. Similar final answers need not mean equally reliable work.&lt;/p&gt;

&lt;p&gt;The Cursor run retained failed QA launches, ADMIN authorization, cancellation of the old task, the linked rerun, and final delivery. Qwen retained a different sequence: server-side task creation applied despite transport errors, and a complete OPS report body that failed to become a formal report. This distinguishes saying something is done, attempting to deliver it, and actually delivering it.&lt;/p&gt;

&lt;p&gt;The same records also revealed instrument defects: stale projections, report-generation problems, and incorrect raw-material associations. That ability to investigate the instrument itself is valuable; it does not mean every projection is already correct.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.7 “Files are the truth” means work must be written down
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Our analysis uses a retained experimental archive, not an agent's memory or retrospective account.&lt;/strong&gt; Original CodeFlowMu/Host execution records, FCoP artifacts, independent EVAL reports, and the backups, timelines, checks, and score tables built from them form the evidence base.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Retained material&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Original run&lt;/td&gt;
&lt;td&gt;TASK, REPORT, sessions, tool returns, public progress text, approvals, issues, logs&lt;/td&gt;
&lt;td&gt;Preserve assignments, actions, claims, and authorization as observed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Independent evaluation&lt;/td&gt;
&lt;td&gt;Both EVAL report types, failed generations, late supplements&lt;/td&gt;
&lt;td&gt;Supply judgments and gaps that can themselves be checked&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Preservation&lt;/td&gt;
&lt;td&gt;Separate ZIPs, inventories, sizes, SHA256 hashes, source index&lt;/td&gt;
&lt;td&gt;Preserve versions and avoid mixing runs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Analysis&lt;/td&gt;
&lt;td&gt;Stage timeline, timing tables, fact checks, diagnosis, scores, detailed report&lt;/td&gt;
&lt;td&gt;Turn retained observations into reviewable conclusions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;We did not ask agents to remember what they had done and then score the recollection. We reconstructed the run, checked task/report links, and compared statements with execution. These files remain useful after sessions end or models change.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://raw.githubusercontent.com/joinwell52-AI/joinwell52/61e8c10636b197865b380447063d0c9307ba2a94/docs/public/articles/codeflowmu-six-ai-20260909/assets/en-15-evidence-chain.png" 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%2F08irw5zg3ivoba0xemx7.png" alt="Written records and evidence" width="800" height="205"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The principle is durable documentation: assignments, actions, approvals, delivery, and analysis must be saved, transferable, and traceable. Files can still contain mistakes. A hash fixes the saved bytes; it does not establish the truth of a business claim.&lt;/p&gt;

&lt;p&gt;Each run was exported as a separate &lt;code&gt;raw-evidence.zip&lt;/code&gt;, with an inventory, sizes, hashes, and ZIP integrity checks. Late Qwen and Cursor EVAL outputs have separate supplements. Runtime evidence comes from CodeFlowMu and its Hosts; independent backup and later review are preservation and analytical steps applied to that evidence.&lt;/p&gt;

&lt;p&gt;When records conflict, first align model, time window, Session, task, and report. Initialization can reuse TASK-001 or CUSTOM-001. A shared ID alone does not identify a run. Report text does not prove submission; a “running” display cannot overturn a cancellation receipt; a “pass” claim cannot substitute for the corresponding test.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.8 The business support around agent work
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://raw.githubusercontent.com/joinwell52-AI/joinwell52/61e8c10636b197865b380447063d0c9307ba2a94/docs/public/articles/codeflowmu-six-ai-20260909/assets/en-18-business-support.png" 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%2Fhuhwq4ics26bvtv374l2.png" alt="Execution, verification, acceptance, EVAL, and diagnosis" width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CodeFlowMu supports what happens after an agent starts working:&lt;/strong&gt; evidence checking, acceptance by responsible roles, independent observation, and diagnosis. These are connected by actual files. Execution status, verification, PM judgment, and EVAL analysis should not collapse into one vague “the system says complete.”&lt;/p&gt;

&lt;p&gt;First, formal submissions and child tasks identify who is responsible. Execution records connect tasks, roles, sessions, calls, returns, and timestamps. Reports have formal writes and delivery records, separating execution, generated text, submission, and acceptance.&lt;/p&gt;

&lt;p&gt;Second, REVIEW-GATE creates fact-check records. In the Cursor archive, a review of DEV task 002 includes &lt;code&gt;execution_evidence_state: verified&lt;/code&gt;, &lt;code&gt;review_state: needs_pm&lt;/code&gt;, &lt;code&gt;business_decision: false&lt;/code&gt;, and &lt;code&gt;attention_owner: PM&lt;/code&gt;. The evidence had been checked, but business judgment remained with the PM. &lt;code&gt;third_party_source_state: not_configured&lt;/code&gt; does not pretend an external source was consulted. Compatibility fields must be read alongside the actual decision owner.&lt;/p&gt;

&lt;p&gt;Third, PM accepts child work and ADMIN accepts the root task. Commands have receipts and state transitions; restricted actions have authorization records. EVAL and programmatic checks do not replace that responsibility. Cursor's recovery used this authorization path.&lt;/p&gt;

&lt;p&gt;Fourth, EVAL records its observations and attempts. Diagnosis follows task, session, tool, delivery, and approval evidence to determine where a failure occurred. Confirmed issues can become ISSUE records; incomplete evidence remains a hypothesis rather than automatically becoming a product defect.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Support stage&lt;/th&gt;
&lt;th&gt;Actual file or file family in the Cursor archive&lt;/th&gt;
&lt;th&gt;What can be checked&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Submission and assignments&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;SUBMISSION-20260909-001.json&lt;/code&gt;, root/child TASKs, &lt;code&gt;fcop/ledger/tasks.jsonl&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Request, division of labor, cancellation and rerun relationships&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Execution&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;actions-20260909.jsonl&lt;/code&gt;, &lt;code&gt;runtime-events-20260909.jsonl&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Actions, sessions, results, and time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tool transport&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.codeflowmu/logs/tool-transport-events.jsonl&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Call identity and transport events&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delivery&lt;/td&gt;
&lt;td&gt;Four formal REPORTs, &lt;code&gt;.codeflowmu/report-delivery/acks.jsonl&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Content and delivery to a PM session&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fact checking&lt;/td&gt;
&lt;td&gt;&lt;code&gt;REVIEW-…-REVIEW-GATE-on-TASK-….md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Evidence state, pending decisions, snapshots, responsibility&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Decisions and authorization&lt;/td&gt;
&lt;td&gt;Task-command receipts, approval audit, GOV record&lt;/td&gt;
&lt;td&gt;Requests, applied operations, authorization scope&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EVAL&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;OBSERVATION-20260909-002-panel-scan.md&lt;/code&gt;, &lt;code&gt;…003-benchmark-CUSTOM-20260909-001.md&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Independent asset and run analysis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EVAL recovery&lt;/td&gt;
&lt;td&gt;&lt;code&gt;eval-observation-attempts.jsonl&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Starts, failures, retries, and outcomes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Issue tracking&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;ISSUE-20260909-001-PM.md&lt;/code&gt; and closure records&lt;/td&gt;
&lt;td&gt;How the configuration issue was raised and handled&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Process and usage&lt;/td&gt;
&lt;td&gt;Chat/task JSONL, usage JSONL&lt;/td&gt;
&lt;td&gt;Public progress, Host results, and usage context&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The &lt;a href="https://joinwell52-ai.github.io/joinwell52/articles/codeflowmu-six-ai-20260909/business-evidence-index.html" rel="noopener noreferrer"&gt;public evidence inventory&lt;/a&gt; identifies 26 verified files by name, size, and hash. The complete private logs and credentials are not distributed with this article.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.9 What real artifacts look like
&lt;/h3&gt;

&lt;p&gt;These are excerpts from the final Cursor archive, not invented templates. YAML fields and report sections are selected for explanation. Omitted fields may contain additional state and findings.&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;task_id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;TASK-20260909-005&lt;/span&gt;
&lt;span class="na"&gt;root_task_id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;TASK-20260909-001&lt;/span&gt;
&lt;span class="na"&gt;sender&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;PM&lt;/span&gt;
&lt;span class="na"&gt;recipient&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;QA&lt;/span&gt;
&lt;span class="na"&gt;parent&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;TASK-20260909-001&lt;/span&gt;
&lt;span class="na"&gt;depends_on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[]&lt;/span&gt;
&lt;span class="na"&gt;acceptor&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;PM&lt;/span&gt;
&lt;span class="na"&gt;rerun_of&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;TASK-20260909-003&lt;/span&gt;
&lt;span class="na"&gt;subject&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;只读核查 FCoP 落地与角色权限职责边界（模型修复后重跑）&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;recipient&lt;/code&gt; assigns QA, &lt;code&gt;parent&lt;/code&gt; and &lt;code&gt;root_task_id&lt;/code&gt; connect the root task, and &lt;code&gt;acceptor&lt;/code&gt; assigns PM acceptance. &lt;code&gt;rerun_of&lt;/code&gt; links new task 005 to old task 003. An empty &lt;code&gt;depends_on&lt;/code&gt; indicates no explicit execution dependency. The excerpt establishes identity and relationships, not a passing inspection by itself.&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;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;fact_check&lt;/span&gt;
&lt;span class="na"&gt;task_id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;TASK-20260909-002&lt;/span&gt;
&lt;span class="na"&gt;report_id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;REPORT-20260909-001-DEV-to-PM&lt;/span&gt;
&lt;span class="na"&gt;review_state&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;needs_pm&lt;/span&gt;
&lt;span class="na"&gt;execution_evidence_state&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;verified&lt;/span&gt;
&lt;span class="na"&gt;business_decision&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="na"&gt;attention_owner&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;PM&lt;/span&gt;
&lt;span class="na"&gt;third_party_source_state&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;not_configured&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verified execution evidence and a pending PM judgment coexist. The review explicitly says it made no business decision. This is how a saved fact check can support acceptance without silently replacing the accepting role.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## 子任务回执&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`REPORT-20260909-001-DEV-to-PM.md`&lt;/span&gt; ← &lt;span class="sb"&gt;`TASK-20260909-002`&lt;/span&gt;（approved）
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`REPORT-20260909-002-OPS-to-PM.md`&lt;/span&gt; ← &lt;span class="sb"&gt;`TASK-20260909-004`&lt;/span&gt;（approved）
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`REPORT-20260909-003-QA-to-PM.md`&lt;/span&gt; ← &lt;span class="sb"&gt;`TASK-20260909-005`&lt;/span&gt;（approved；&lt;span class="sb"&gt;`rerun_of`&lt;/span&gt; 作废的 &lt;span class="sb"&gt;`TASK-20260909-003`&lt;/span&gt;）

&lt;span class="gu"&gt;## 说明&lt;/span&gt;
全程保持只读巡检目标；PM 未修改业务代码/配置。根任务业务验收与归档由 ADMIN 决定。
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The PM lists three worker reports and preserves the QA rerun and ADMIN acceptance boundary. The original report text is Chinese and is intentionally retained as evidence: it says DEV, OPS, and the new QA task were accepted, and final root acceptance and archiving belong to ADMIN. These are claims to check against receipts, approvals, and execution—not proof merely because the report says “approved.” See the &lt;a href="https://joinwell52-ai.github.io/joinwell52/articles/codeflowmu-six-ai-20260909/evidence-excerpts.html" rel="noopener noreferrer"&gt;excerpt source index&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.10 EVAL: another agent observes, with three distinct report paths
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;When the execution team says “done,” who checks that claim? In CodeFlowMu, another EVAL agent reads the evidence.&lt;/strong&gt; PM organizes delivery; DEV, OPS, and QA perform the work. EVAL uses a separate session to inspect their files and execution records, compare claims with evidence, and produce an independent analysis.&lt;/p&gt;

&lt;p&gt;All six runs used Cursor SDK / &lt;code&gt;auto-smart&lt;/code&gt; for evaluation. Independence means a separate role, session, and responsibility. Even when the tested team also used Cursor, EVAL was another session. This does not establish a different underlying foundation model or guarantee an unbiased, correct judgment. A common configuration helps comparison; evidence checking remains necessary.&lt;/p&gt;

&lt;h4&gt;
  
  
  Recording starts with the task; model analysis runs when a report is generated
&lt;/h4&gt;

&lt;p&gt;When ADMIN enables recording at task creation, CodeFlowMu creates a run identity and retains the root task, environment and model baseline, start time, and starting log cursors. Existing chat, public progress, tool, session, and business logs retain the execution trail. &lt;strong&gt;The EVAL model is not necessarily running continuously or analyzing every event in real time.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Generating the task record freezes the end boundary, recursively identifies the complete child-task tree, gathers the run's material, and starts independent EVAL analysis. This separates continuous evidence retention from model-analysis calls. A run without recording enabled cannot later be presented as a complete prospective record. Existing raw records also do not prove that a final analysis report was generated successfully.&lt;/p&gt;

&lt;h4&gt;
  
  
  The report matrix: execution history, system assets, and delivery claims
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Report&lt;/th&gt;
&lt;th&gt;Trigger and scope&lt;/th&gt;
&lt;th&gt;What its analysis answers&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Task-run record&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Recording enabled at creation; generation freezes one root task and its complete tree&lt;/td&gt;
&lt;td&gt;How PM assigned work, what happened, timing, retries, interventions and outcomes; evidence and handling of linked ISSUEs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;System observation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The EVAL observation action and related observation triggers; a system-asset snapshot&lt;/td&gt;
&lt;td&gt;Asset consistency, risks, evidence gaps, emergence patterns, and candidates for knowledge retention&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Closeout observation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The root task's EVAL action; PM's final report and its evidence chain&lt;/td&gt;
&lt;td&gt;Which delivery claims are supported, contradicted, or unverified, and what ADMIN should inspect before acceptance&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Report&lt;/th&gt;
&lt;th&gt;Typical file marker&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Task-run record&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;*-benchmark-&amp;lt;RUN-ID&amp;gt;.md&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;System observation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;*-panel-scan.md&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Closeout observation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;*-eval-agent.md&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All three contain analysis. They examine different objects: &lt;strong&gt;how a run unfolded&lt;/strong&gt;, &lt;strong&gt;what the system assets show&lt;/strong&gt;, and &lt;strong&gt;whether a delivery report's claims have support&lt;/strong&gt;. They are not renamed copies of one summary or three automatic approval gates.&lt;/p&gt;

&lt;p&gt;System observation covers nine asset classes: ledger, runtime logs, public thinking/progress logs, usage, analytics, internal EVAL, emergence log, role views, and shared knowledge. Public progress means content actually emitted and retained; it does not expose or justify speculation about hidden reasoning.&lt;/p&gt;

&lt;h4&gt;
  
  
  Which skills support the reports?
&lt;/h4&gt;

&lt;p&gt;Skills are work instructions for the EVAL agent, not additional models. One skill does not correspond to one report. The routing in test commit &lt;code&gt;cb590ce&lt;/code&gt; combines seven skills. A checkmark means required injection for that path, not proof that a particular run performed the analysis correctly.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Skill and purpose&lt;/th&gt;
&lt;th&gt;Task record&lt;/th&gt;
&lt;th&gt;System observation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;eval-statistical-analysis&lt;/code&gt;: freeze identity; calculate timing, calls, failures and retries with formulas, denominators and provenance&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;eval-issue-analysis&lt;/code&gt;: examine linked ISSUEs, evidence status, impact, and confidence in causal hypotheses&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;eval-observation-writing&lt;/code&gt;: separate facts, inference, gaps and advice; cite sources and follow the output contract&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;eval-admin-closeout-observer&lt;/code&gt;: reconcile PM's final report, worker reports and the current authoritative evidence chain&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;controlled-emergence-observer&lt;/code&gt;: inspect task relationships for probes, self-tasks, sandboxes and project-tree patterns&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;eval-risk-gap-analysis&lt;/code&gt;: compare expected and actual behavior and recommend risk severity and ownership&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;eval-promotion-advice&lt;/code&gt;: recommend findings for follow-up tasks, issue drafts or reusable knowledge&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Skill and purpose&lt;/th&gt;
&lt;th&gt;Closeout&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;eval-statistical-analysis&lt;/code&gt;: freeze identity; calculate timing, calls, failures and retries with formulas, denominators and provenance&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;eval-issue-analysis&lt;/code&gt;: examine linked ISSUEs, evidence status, impact, and confidence in causal hypotheses&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;eval-observation-writing&lt;/code&gt;: separate facts, inference, gaps and advice; cite sources and follow the output contract&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;eval-admin-closeout-observer&lt;/code&gt;: reconcile PM's final report, worker reports and the current authoritative evidence chain&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;controlled-emergence-observer&lt;/code&gt;: inspect task relationships for probes, self-tasks, sandboxes and project-tree patterns&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;eval-risk-gap-analysis&lt;/code&gt;: compare expected and actual behavior and recommend risk severity and ownership&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;eval-promotion-advice&lt;/code&gt;: recommend findings for follow-up tasks, issue drafts or reusable knowledge&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;eval-statistical-analysis&lt;/code&gt; governs calculation and interpretation: establish the task tree and time window, normalize and deduplicate events, then compute metrics. Separate active execution from waiting and assignment completion from product QA success. Missing evidence is &lt;code&gt;unknown&lt;/code&gt;; conflicting evidence is &lt;code&gt;disputed&lt;/code&gt;. Scoring is optional and requires an explicit formula; a high score cannot erase incomplete work or insufficient evidence.&lt;/p&gt;

&lt;p&gt;The system-observation path also injects the closeout evidence-review skill, but its scope remains controlled by the &lt;code&gt;system_observation&lt;/code&gt; contract. It does not thereby produce a separate closeout report. The repository also contains an auxiliary &lt;code&gt;fcop-eval-promotion&lt;/code&gt; workflow for subsequent classification and internal drafts; &lt;strong&gt;it is not in these three paths' required skill lists&lt;/strong&gt;. Advice does not automatically create tasks, publish issues, or change lifecycle.&lt;/p&gt;

&lt;h4&gt;
  
  
  The EVAL record matrix: logs, retained assets, and factual assessment
&lt;/h4&gt;

&lt;p&gt;Read this system in three layers: &lt;strong&gt;logging&lt;/strong&gt; retains what happened; &lt;strong&gt;asset organization&lt;/strong&gt; makes tasks, reports, evidence bundles and indexes traceable; &lt;strong&gt;independent factual assessment&lt;/strong&gt; checks claims, identifies contradictions, explains uncertainty and recommends follow-up. CodeFlowMu and the Host produce most raw logs; they are not all generated by EVAL. EVAL's analysis then becomes another retained file asset that can itself be reviewed and reused.&lt;/p&gt;

&lt;p&gt;Factual assessment is a sourced, challengeable judgment, not an automatic declaration of truth or ADMIN acceptance. The seven skills make the matrix operational through statistics, issue analysis, writing, delivery verification, emergence observation, risk analysis and retention advice.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Evidence layer&lt;/th&gt;
&lt;th&gt;File or field&lt;/th&gt;
&lt;th&gt;What it establishes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Recording start&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.codeflowmu/eval-recordings/&amp;lt;RUN-ID&amp;gt;.json&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Run identity, boundaries, task association and generation state&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Run material&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;raw/&lt;/code&gt;, &lt;code&gt;artifacts/&lt;/code&gt; and indexes under &lt;code&gt;research/evidence/benchmarks/.../&amp;lt;RUN-ID&amp;gt;/&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Material available to EVAL and later reviewers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Program collection&lt;/td&gt;
&lt;td&gt;Collected run record, asset scan, &lt;code&gt;*-evidence-bundle.md&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;What software gathered; not an independent agent conclusion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Independent analysis&lt;/td&gt;
&lt;td&gt;EVAL Session, model provenance, &lt;code&gt;analysis_skill_ids&lt;/code&gt; or &lt;code&gt;skill_ids&lt;/code&gt;, and skill receipts&lt;/td&gt;
&lt;td&gt;Which session received which instructions; injection proves loading, not analytical quality&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Final report&lt;/td&gt;
&lt;td&gt;Analysis and agent/session/run provenance under &lt;code&gt;fcop/internal/eval/&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Persisted independent analysis whose citations can be checked again&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The EVAL agent reads evidence and returns analysis text. Runtime checks the required format, provenance and applicable skill receipts before persisting it. Program collection, agent analysis and final persistence are separate stages. A file appearing, a session ending, or a “generated” label alone is insufficient proof of a valid completed analysis. See the actual code excerpts in &lt;a href="https://joinwell52-ai.github.io/joinwell52/en/research/2026-09-09-codeflowmu-six-ai#section-3-9" rel="noopener noreferrer"&gt;section 3.9&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CodeFlowMu provides both the execution evidence and a business workflow for another agent to question and analyze it.&lt;/strong&gt; EVAL advises; PM remains responsible for delivery; ADMIN retains acceptance and follow-up decisions. This article additionally checks EVAL against the separate per-run backups. Three implemented report paths do not mean that every run successfully produced all three reports. Missing reports, failures, retries and mismatched material remain part of the evidence.&lt;/p&gt;

&lt;p&gt;Implementation sources for this section are test commit &lt;code&gt;cb590ce&lt;/code&gt;: &lt;code&gt;codeflowmu-shell/src/eval-independent-analysis.ts&lt;/code&gt; for routing and required skills, &lt;code&gt;eval-benchmark-recording.ts&lt;/code&gt;, &lt;code&gt;packages/evaluator/eval-report-writer.js&lt;/code&gt;, and &lt;code&gt;EvalObservationGenerator.ts&lt;/code&gt;. These explain the mechanism; source code alone does not prove a particular execution succeeded.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.11 Why nine asset classes, and what does EVAL inspect?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The nine classes come from CodeFlowMu's implemented system-observation inventory. They let an evaluator compare how the same event appears in different records.&lt;/strong&gt; They are not nine agents, nine scoring dimensions, or a universal taxonomy. The test version explicitly lists them in &lt;code&gt;ASSETS_ANALYZED&lt;/code&gt;; business files such as TASK, REPORT and ISSUE enter verification through ledger associations, runtime material and report references.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Asset&lt;/th&gt;
&lt;th&gt;Main records&lt;/th&gt;
&lt;th&gt;Analytical use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1. Ledger&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Registered tasks, role routes, parent relationships, states and business-record links&lt;/td&gt;
&lt;td&gt;Reconstruct formal work and compare lifecycle with delivery&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;2. Runtime logs&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Sessions, attempts, leases, tool calls/results and errors&lt;/td&gt;
&lt;td&gt;Reconcile execution, retries, failures and state changes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;3. Public thinking/progress&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Emitted plans, explanations and tool activity&lt;/td&gt;
&lt;td&gt;Compare contemporaneous claims with later behavior and scope changes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;4. Usage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Collected request, token and usage records&lt;/td&gt;
&lt;td&gt;Attribute consumption where run associations exist and identify missing coverage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;5. Analytics&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Aggregated events, counts and timing metrics&lt;/td&gt;
&lt;td&gt;Check raw events, deduplication, denominators and windows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;6. Internal EVAL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Previous observations, collection material, analysis and generation states&lt;/td&gt;
&lt;td&gt;Check evaluation identity, provenance, persistence and mismatched material&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;7. Emergence log&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Previously observed patterns, sources, risks and recommendations&lt;/td&gt;
&lt;td&gt;Compare task relationships and track duplication, evolution or unsupported findings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;8. Role views&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Role-specific task lists and status projections&lt;/td&gt;
&lt;td&gt;Compare views with ledger, lifecycle and the view contract&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;9. Shared knowledge&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Shared rules, experience, knowledge and reusable material&lt;/td&gt;
&lt;td&gt;Check relevance, age and opportunities for retention&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Asset&lt;/th&gt;
&lt;th&gt;Question to answer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1. Ledger&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;What did PM assign, what was formally delivered, and what remains open?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;2. Runtime logs&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Does a claimed action have a result? Did a finished session actually deliver a report?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;3. Public thinking/progress&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Did promised dispatch occur? When did the plan change? Hidden reasoning is not inferred&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;4. Usage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Which run incurred usage? Are retries or other sessions included? Without billing attribution, it is not exact task cost&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;5. Analytics&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Are reported call counts and durations calculated consistently?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;6. Internal EVAL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Is this completed agent analysis or only a collected summary? Does it belong to another run?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;7. Emergence log&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Was this pattern already recorded? What changed, and is it reusable?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;8. Role views&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Does “running” match formal state? Is an empty task list correct at this stage?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;9. Shared knowledge&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Was available knowledge unused, or is useful knowledge missing?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The value lies in &lt;strong&gt;cross-asset verification&lt;/strong&gt;. A PM claim of tool success requires a result, not only a call-start log. A “running” display that conflicts with cancellation receipts and session state needs projection checks. Runtime, usage and analytics help distinguish requests, retries and duplicate event records.&lt;/p&gt;

&lt;p&gt;The scan retains four observation fields per asset: &lt;strong&gt;status, key finding, risk/value, and evidence&lt;/strong&gt;. Independent EVAL then analyzes contradictions, gaps and recommendations. “All nine classes scanned” establishes inventory coverage, not that all nine were verified healthy. CodeFlowMu makes logs useful analytical assets by enabling cross-checks rather than merely accumulating files.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.12 Emergence observation: inspect collaboration patterns, not only errors
&lt;/h3&gt;

&lt;p&gt;EVAL also looks for task origins and organizational structures worth recording. “Emergence” has a bounded implementation here: &lt;strong&gt;it is not a claim that a model suddenly acquired new intelligence&lt;/strong&gt;, nor a label for ordinary errors.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Observation&lt;/th&gt;
&lt;th&gt;Identification evidence&lt;/th&gt;
&lt;th&gt;Analytical purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Controlled emergence&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Role routing combined with explicit probe, self-task and sandbox bootstrap markers&lt;/td&gt;
&lt;td&gt;Establish where test/probe tasks came from and whether they contaminate business task lists, review queues or counts; retain probe evidence without treating it as delivery&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Project-tree emergence&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Actual parent relationships and role routes within a thread, forming root → phase → execution&lt;/td&gt;
&lt;td&gt;Observe project/phase organization, assess value against outcomes, and check wrong parents, cross-thread links, cycles or closed parents with open children&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ordinary delegation: ADMIN root → PM assigns DEV / OPS / QA checks
Project-tree pattern: ADMIN main task → phase task → specialist execution tasks
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A title containing “Phase,” “project” or “probe,” or simply creating more children, does not establish either pattern. Detection examines origin, &lt;code&gt;parent&lt;/code&gt;, &lt;code&gt;thread_key&lt;/code&gt;, routing and relevant markers. Independent EVAL checks the interpretation and reports alternatives, confidence, risks and advice. &lt;code&gt;controlled-emergence-observer&lt;/code&gt; is one of the seven skills; the companion &lt;code&gt;project-tree-observer.js&lt;/code&gt; supplies structural evidence, not another mandatory report.&lt;/p&gt;

&lt;p&gt;Emergence observation examines both risk and value. Probe tasks appearing in business views may mislead users; a useful phase structure may provide a reusable way to organize work. Structure alone does not prove successful delivery. The system observation report and retained emergence log support later review and knowledge retention. EVAL recommends action; it does not autonomously clean up tasks, archive them or change dispatch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No detected emergence is also a result worth retaining.&lt;/strong&gt; Normal ADMIN→PM→DEV/OPS/QA delegation in this inspection cannot be marketed as new emergence merely because the team collaborated. Any per-run claim requires that run's report and relationship evidence. CodeFlowMu can accumulate observations about how collaboration structures form and whether they help, alongside success and failure records.&lt;/p&gt;

&lt;p&gt;Implementation sources are the test version's &lt;code&gt;packages/evaluator/eval-report-writer.js&lt;/code&gt;, &lt;code&gt;controlled-emergence-observer.js&lt;/code&gt;, and &lt;code&gt;project-tree-observer.js&lt;/code&gt;. The asset classes are an implemented inventory; the questions above explain analytical uses and do not assert that every question was verified in every run.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Overall Results and Each Team
&lt;/h2&gt;

&lt;p&gt;The results below were checked against formal assignments, reports, execution, and cancellation records captured through CodeFlowMu. We separate completion, inspection quality, and integration failure.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.1 The six results
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scheme&lt;/th&gt;
&lt;th&gt;Normal delivery&lt;/th&gt;
&lt;th&gt;Valid worker reports&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Codex&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Three roles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Three roles, plus one cancelled old QA task&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Three roles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Doubao&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Three roles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;DEV only; PM submitted a blocked report&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kimi&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No downstream roles&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scheme&lt;/th&gt;
&lt;th&gt;Elapsed time&lt;/th&gt;
&lt;th&gt;Score / 100&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Codex&lt;/td&gt;
&lt;td&gt;12m 20s&lt;/td&gt;
&lt;td&gt;88&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor&lt;/td&gt;
&lt;td&gt;20m 16s&lt;/td&gt;
&lt;td&gt;87&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek&lt;/td&gt;
&lt;td&gt;39m 21s&lt;/td&gt;
&lt;td&gt;75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Doubao&lt;/td&gt;
&lt;td&gt;21m 59s&lt;/td&gt;
&lt;td&gt;66&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen&lt;/td&gt;
&lt;td&gt;Terminated after 122m 10s&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kimi&lt;/td&gt;
&lt;td&gt;Terminated after 31m 43s&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scheme&lt;/th&gt;
&lt;th&gt;Main observation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Codex&lt;/td&gt;
&lt;td&gt;Fast closure with qualified conclusions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor&lt;/td&gt;
&lt;td&gt;Authorized recovery followed by delivery&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek&lt;/td&gt;
&lt;td&gt;Deeper collection, some incorrect interpretation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Doubao&lt;/td&gt;
&lt;td&gt;Smooth workflow, overconfident report claims&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen&lt;/td&gt;
&lt;td&gt;Useful diagnosis, ineffective closure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kimi&lt;/td&gt;
&lt;td&gt;Integration/session failure before teamwork&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/articles/codeflowmu-six-ai-20260909/assets/en-scores.png?v=53c5c579" 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%2Fjcrlnqzogdzs8ru67pxl.png" alt="Scores for the six integrated runs" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Weights: completion 25, result quality 30, efficiency 15, scope control 15, recovery 10, observability 5. Scores describe these runs, not universal foundation-model ability. Codex and Cursor's one-point difference places them in the same leading group. See the &lt;a href="https://joinwell52-ai.github.io/joinwell52/articles/codeflowmu-six-ai-20260909/scorecard.csv" rel="noopener noreferrer"&gt;score data&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.2 Completion is more than a final paragraph
&lt;/h3&gt;

&lt;p&gt;Four teams delivered three valid specialist reports and a normal PM final report. Qwen's OPS content remained in a failed submission, QA produced no formal report, and Kimi created no child tasks. Forced archiving stopped a test; it did not complete the assignment.&lt;/p&gt;

&lt;p&gt;Codex took fewer actions to reach a qualified conclusion. Cursor showed authorized recovery. DeepSeek's advantage over Doubao was mainly evidence and interpretation quality, not a different final task-state label. Qwen's 40 acknowledges diagnostic work as well as failed delivery; Kimi's 18 describes a non-delivering configuration. Neither score can be read as an intrinsic model score. This was one run per model configuration, not a blind or randomized benchmark.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.3 Codex: fast delivery with explicit limits
&lt;/h3&gt;

&lt;p&gt;The PM assigned FCoP/MCP to DEV, runtime to OPS, and skills/permissions to QA, without explicit dependencies. The first child task appeared around 1m 21s after the formal session began. Three worker reports and the PM summary covered all five requested areas.&lt;/p&gt;

&lt;p&gt;Its strength was distinguishing static configuration from demonstrated capability and preserving unverified limitations. QA did not turn workflow completion into an unconditional product pass. The 12m 20s duration coexisted with 24/30 result quality. Some verification remained static, so this was not comprehensive functional certification.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.4 Doubao: a smooth chain with weak final review
&lt;/h3&gt;

&lt;p&gt;At about 1m 01s, PM began assigning DEV to MCP, OPS to runtime and permissions, and QA to FCoP/SKILLS. The three tasks had no explicit dependencies. Formal delivery took 21m 59s.&lt;/p&gt;

&lt;p&gt;The quality deductions concern unsupported claims: 23 tools claimed but 22 listed, inconsistent skill-count scopes, a greater-than-95% match rate without a denominator, and treating visible schemas as proof of successful parameter validation. PM did not sufficiently filter worker overstatement. Completion 25/25 and quality 12/30 describe different aspects of this same run.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.5 DeepSeek: deeper evidence, imperfect interpretation
&lt;/h3&gt;

&lt;p&gt;PM created three role tasks without explicit dependencies, with the first at roughly 6m 29s and delivery after 39m 21s. Reports distinguished 48 skill references from 54 on-disk directories and on-demand injection. They included software probing and runtime endpoint checks.&lt;/p&gt;

&lt;p&gt;However, the team misinterpreted the independently configured Cursor EVAL as a governance violation and recommended committing runtime governance files to the main repository. PM did not correct those interpretations. Quality 18/30 reflects stronger fact collection but insufficient interpretive review. Agreement among several roles does not make a claim true.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.6 Kimi: the team never reached formal downstream work
&lt;/h3&gt;

&lt;p&gt;Runtime recorded eight formal PM sessions ending as failed: seven error endings and a final cancellation. The first formal session received an &lt;code&gt;encrypted_content&lt;/code&gt; content-type rejection. Six subsequent failure results contained overload and stream-disconnection messages. Tool-preparation records also showed readiness had not been achieved.&lt;/p&gt;

&lt;p&gt;PM read resources and requested recovery, but created no formal child tasks or team reports. ADMIN stopped the run after 31m 43s. This establishes that the tested model/Host/adapter combination failed to deliver; it does not establish that Kimi intrinsically cannot use MCP or can never work through Codex. Its teamwork was not adequately exercised.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.7 Qwen: investigation expanded without complete delivery
&lt;/h3&gt;

&lt;p&gt;PM took 11m 46s to create the first child task, then assigned OPS, DEV, and QA, with QA referencing DEV. DEV delivered. OPS generated a complete report body, but its formal submission failed in transport. QA produced no formal report. PM submitted a blocked report and the run was terminated after 122m 10s.&lt;/p&gt;

&lt;p&gt;The team encountered genuine transport and dispatch problems. Saying it found nothing would be inaccurate. Yet later probing, waking, pausing, and explanations did not produce effective resubmission or closure. Sparse early progress text and extensive later explanation also made timely supervision difficult. The 40-point result recognizes both diagnostic contributions and failure to deliver.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.8 Cursor: authorized recovery left an inspectable history
&lt;/h3&gt;

&lt;p&gt;DEV covered skills and development-side tools, QA covered FCoP and role permissions, and OPS covered runtime/MCP. QA's unavailable model caused four launch failures. PM requested recovery authorization; ADMIN approved. The old QA task was cancelled and new task 005 ran with a link to the old task. Once all three valid reports were present, PM completed delivery in 20m 16s.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/articles/codeflowmu-six-ai-20260909/assets/scene-cursor-recovery.png" 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%2Fjdt6z5bob7ouvdpnxlex.png" alt="Original Cursor task and rerun records" width="799" height="230"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;English reading guide — original Chinese UI:&lt;/strong&gt; the root awaits ADMIN acceptance. Specialist rows show DEV, the original QA task, OPS, and a replacement QA task. The last task title includes “rerun after model recovery”; its existence alone does not prove the original QA succeeded. Cancellation and rerun receipts establish that distinction.&lt;/p&gt;

&lt;p&gt;Click the screenshot to inspect its original pixels.&lt;/p&gt;

&lt;p&gt;Four visible child-task rows did not mean four successful worker deliveries. Old QA task 003 was cancelled; task 005 supplied the valid QA report. A file in a &lt;code&gt;done&lt;/code&gt; lifecycle directory must still be interpreted using its actual decision.&lt;/p&gt;

&lt;p&gt;This was not fully unattended recovery: human approval was required. The authorization, cancellation, and rerun records are precisely what make the recovery explainable. The score of 87 reflects near-Codex delivery quality and organization under a real configuration problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.9 How the score should be read
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/articles/codeflowmu-six-ai-20260909/assets/en-score-matrix.png?v=53c5c579" 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%2F5c1shkfgpdvg699ba32m.png" alt="Scoring dimensions" width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If we judged only a &lt;code&gt;done&lt;/code&gt; label, four teams would tie. If we judged only duration, unsupported conclusions would disappear. Completion, quality, efficiency, scope, recovery, and observability must be considered together.&lt;/p&gt;

&lt;p&gt;Doubao lost quality points for unsupported proportions and overclaiming. DeepSeek lost them for incorrect governance interpretation accepted by PM. Qwen's completion 10/25 and efficiency 2/15 acknowledge partial delivery while recognizing the missing OPS/QA reports. Kimi's completion 0/25 records the absence of formal delivery, not a measured inability to write a good report.&lt;/p&gt;

&lt;p&gt;Removing efficiency and normalizing the remaining 85 points gives Cursor about 88.2 and Codex about 87.1. Their order reverses but their grouping does not. A one-point difference in a single-run, judgment-based rubric is not statistically meaningful superiority.&lt;/p&gt;

&lt;p&gt;The transparency concern was inconsistent public communication: Qwen had long early stretches of tool activity with little explanation, then much more text when stuck. Later explanation cannot restore the opportunity to supervise and stop earlier. The evidence does not establish an intention to hide activity.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. What the Evidence Lets Us Analyze
&lt;/h2&gt;

&lt;p&gt;This section traces PM assignments through TASKs, time through sessions and returns, quality through worker and PM reports, and EVAL conclusions back to original material. CodeFlowMu's linked records make “what differed, and why?” an inspectable question.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.1 Compare the PM's entire delivery chain
&lt;/h3&gt;

&lt;p&gt;The same task did not produce the same task graph. PM chose who worked first, who reviewed whom, and which relationships counted as dependencies.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;PM&lt;/th&gt;
&lt;th&gt;Assignment pattern&lt;/th&gt;
&lt;th&gt;Actual delivery&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Codex&lt;/td&gt;
&lt;td&gt;DEV: FCoP/MCP; OPS: runtime; QA: skills/permissions; no explicit dependencies&lt;/td&gt;
&lt;td&gt;Three role reports and PM summary&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Doubao&lt;/td&gt;
&lt;td&gt;DEV: MCP; OPS: runtime/permissions; QA: FCoP/SKILLS; no explicit dependencies&lt;/td&gt;
&lt;td&gt;Complete team chain&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek&lt;/td&gt;
&lt;td&gt;Three-role inspection without explicit dependencies&lt;/td&gt;
&lt;td&gt;Team reports with useful runtime collection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kimi&lt;/td&gt;
&lt;td&gt;No formal child assignment; tool discovery, recovery, and session failures&lt;/td&gt;
&lt;td&gt;No team delivery&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen&lt;/td&gt;
&lt;td&gt;OPS inspection; DEV code-level diagnosis; QA verification referencing DEV&lt;/td&gt;
&lt;td&gt;DEV report, failed OPS submission, missing QA report, blocked PM report&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor&lt;/td&gt;
&lt;td&gt;Three specialist tasks, followed by cancellation and linked QA rerun&lt;/td&gt;
&lt;td&gt;Three valid reports plus retained cancelled task&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;PM&lt;/th&gt;
&lt;th&gt;PM review/summary assessment&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Codex&lt;/td&gt;
&lt;td&gt;Qualified conclusions; static checks not presented as full functional proof&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Doubao&lt;/td&gt;
&lt;td&gt;Did not adequately correct counts, scope, proportions, or validation claims&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek&lt;/td&gt;
&lt;td&gt;Accepted incorrect interpretations of EVAL configuration and runtime files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kimi&lt;/td&gt;
&lt;td&gt;No final report to assess; organizational capability not sufficiently exercised&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen&lt;/td&gt;
&lt;td&gt;Some diagnoses were corrected later; recovery did not yield closure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor&lt;/td&gt;
&lt;td&gt;Authorized recovery is evidenced; human intervention remains part of the result&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;PM report quality means checking&lt;/strong&gt; coverage of all five areas, evidence for important claims, correction of worker contradictions, explicit verified/unverified/failure distinctions, and recommendations within the mandate. Concatenating worker reports is not enough.&lt;/p&gt;

&lt;p&gt;Kimi's missing final report is “not assessable,” not “a badly written final report.” Qwen's existing blocked report should be judged on obstacle explanation and proposed recovery. The article's result-quality score is a whole-run dimension, not a separately calibrated PM-writing score.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://raw.githubusercontent.com/joinwell52-AI/joinwell52/61e8c10636b197865b380447063d0c9307ba2a94/docs/public/articles/codeflowmu-six-ai-20260909/assets/en-03-task-graphs.png" 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%2F6h1cc0brkht0nug1k3vx.png" alt="Assignment structures" width="800" height="205"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Three independent tasks were not necessarily superficial. Codex and Doubao divided the same scope differently; either can be reasonable when evidence and coverage are clear. Qwen chose a heavier diagnostic route, beginning delegation later and making QA reference DEV. Time before the first assignment is itself an organizational choice.&lt;/p&gt;

&lt;p&gt;Reference semantics matter. A reference should supply context without automatically blocking work. This run exposed a dispatch gate that treated that relationship inconsistently. That is a system issue. PM still has to judge whether the added relationship is needed and how to adapt when it obstructs a bounded inspection.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.2 Visible configuration is not demonstrated capability
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://raw.githubusercontent.com/joinwell52-AI/joinwell52/61e8c10636b197865b380447063d0c9307ba2a94/docs/public/articles/codeflowmu-six-ai-20260909/assets/en-04-evidence-layers.png" 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%2F3159w2j418cuqk8yna3c.png" alt="Levels of tool evidence" width="800" height="205"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Resource visibility, schema visibility, actual tool execution, and successful business delivery are different levels of evidence. One cannot substitute for the next.&lt;/p&gt;

&lt;p&gt;Codex retained limitations and a partial QA conclusion. Doubao treated schema listing as validation and mixed skill scopes. DeepSeek made useful distinctions in its collection but then misread the independent EVAL setup. PM review must test the relationship between each claim and its source, not reward file volume.&lt;/p&gt;

&lt;p&gt;Kimi never reached a comparable complete team chain. Its actual resource reads and recovery calls matter, but so do the request rejection and interrupted sessions. The records support failure of this configuration, not a universal inability to understand MCP.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.3 Did longer runs buy more useful evidence?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/articles/codeflowmu-six-ai-20260909/assets/en-duration.png?v=53c5c579" 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%2Fhz1hqk54hu0j204wq9as.png" alt="Elapsed time to delivery or termination" width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Codex's fastest delivery still had materials corresponding to all five areas. Cursor's 20m 16s included authorized recovery. DeepSeek's additional checks had value, but its report also contained a wrong governance interpretation. Qwen's two hours combined real infrastructure obstacles with ineffective later investigation.&lt;/p&gt;

&lt;p&gt;The four completed runs had a median of about 21m 08s. A 20–30 minute budget is a reasonable starting hypothesis for a future bounded inspection on this environment. It was not a limit imposed on these runs, so it cannot be retroactively treated as a contract violation.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.4 Efficiency is evidence value per unit of effort
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/articles/codeflowmu-six-ai-20260909/assets/en-quality-time.png?v=53c5c579" 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%2Ffgv1iuvy8wmefna1g67h.png" alt="Time versus result-quality score" width="800" height="491"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Among completed runs, Codex's speed did not accompany a lower quality score. DeepSeek spent about 27 extra minutes and collected additional runtime evidence, but did not produce a more trustworthy overall conclusion.&lt;/p&gt;

&lt;p&gt;Elapsed time includes preparation, pre-delegation checking, the longest worker path, retries, PM review, and summary. Stages overlap; role durations cannot simply be added. Cursor also includes authorization waiting. The evidence does not support a precise allocation such as “X% model delay, Y% platform delay.”&lt;/p&gt;

&lt;p&gt;More issue claims must first be screened for false positives. Unsupported proportions, old snapshots, and incorrect governance explanations create review work. Issue counts and report length are not substitutes for useful findings.&lt;/p&gt;

&lt;p&gt;Cost comparisons also need boundaries. Qwen's roughly CNY75.56 came from a daily screenshot. DeepSeek's CNY15.6486 export included other requests in its hourly aggregation. Subscription channels do not have zero cost. This evidence supports a time-efficiency assessment, but not a precise cost-per-qualified-report ranking.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.5 Where Qwen's two hours went
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://raw.githubusercontent.com/joinwell52-AI/joinwell52/61e8c10636b197865b380447063d0c9307ba2a94/docs/public/articles/codeflowmu-six-ai-20260909/assets/en-05-qwen-timeline.png" 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%2Fhpqlane3g7oz6s00qbhh.png" alt="Qwen timeline" width="800" height="310"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;QA was created at 17:09:51 and started at 18:02:15: &lt;strong&gt;52m 24s waiting&lt;/strong&gt;. The declared relationship was &lt;code&gt;informational_reference&lt;/code&gt;, yet a dispatch gate required successful DEV closure. The historical source and runtime trace support this issue.&lt;/p&gt;

&lt;p&gt;After QA started, it ran for nearly another 50 minutes without formal delivery. The earlier dependency no longer explains that entire delay. OPS called &lt;code&gt;write_report&lt;/code&gt; with complete content, but received &lt;code&gt;Transport closed&lt;/code&gt;; no formal report was saved. PM then probed, woke, and paused repeatedly without an effective resubmission path, ultimately reporting blocked.&lt;/p&gt;

&lt;p&gt;Some deeper claims should be withdrawn. The alleged “ghost running QA” used a topology snapshot from before QA started. The allegedly random &lt;code&gt;limit&lt;/code&gt; failures compared string and integer arguments. The root cause of short-name instability was not demonstrated under equivalent conditions. Genuine issues, hypotheses, and mistaken interpretations must remain separate.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.6 Cursor's recovery was a governed sequence
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://raw.githubusercontent.com/joinwell52-AI/joinwell52/61e8c10636b197865b380447063d0c9307ba2a94/docs/public/articles/codeflowmu-six-ai-20260909/assets/en-06-cursor-recovery.png" 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%2F1fvzgphi54wki0qdlnt5.png" alt="Cursor recovery sequence" width="800" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;System initialization had occurred, but the QA seat was misconfigured with &lt;code&gt;qwen3.8-max&lt;/code&gt;, unavailable through Cursor SDK. OPS identified a model-availability problem rather than an MCP or lease failure. PM requested authorization at 21:51:56; ADMIN approved around 21:55.&lt;/p&gt;

&lt;p&gt;The old QA task was cancelled. A new task linked by &lt;code&gt;rerun_of&lt;/code&gt; started at 22:00:12 and produced its report at 22:01:46. PM's successful final submission followed at 22:04:27. These relationships preserve the failed attempt rather than overwriting it as success.&lt;/p&gt;

&lt;p&gt;Recovery of an authorized execution prerequisite is different from unauthorized scope expansion. In the September 8 comparison, the first Codex run expanded inspection into code repair and was stopped. That was a separate historical run. The September 9 Codex run did not repeat the behavior; this does not prove the earlier event was caused by another AI's old records.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.7 Does the Codex integration explain failure?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Both models with incomplete runs used the Codex framework.&lt;/strong&gt; Integration is therefore part of the causal analysis. The evaluated object is the model, provider API, adapter, Host, and CodeFlowMu working together—not a foundation model in isolation.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scheme&lt;/th&gt;
&lt;th&gt;Evidence&lt;/th&gt;
&lt;th&gt;Supported conclusion&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Kimi&lt;/td&gt;
&lt;td&gt;One explicit rejection of &lt;code&gt;encrypted_content&lt;/code&gt;; six later disconnections carrying an overload message; no downstream tasks&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;A content-compatibility error and runtime failures occurred.&lt;/strong&gt; Team capability was not sufficiently exercised to infer weak intrinsic ability&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen&lt;/td&gt;
&lt;td&gt;Created tasks, used tools, delivered DEV work; QA dispatch waiting, OPS submission failure, old-snapshot misinterpretation, extended investigation without closure&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Integration could operate, but the delivery chain had faults and PM handling was insufficient.&lt;/strong&gt; Compatibility does not explain everything&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Kimi's overload messages are not themselves compatibility errors. Qwen's dispatch gate issue belongs to this system workflow and is not automatically attributable to Codex or Qwen.&lt;/p&gt;

&lt;p&gt;Codex, Doubao, and DeepSeek completed through the same overall framework, so “uses Codex” is not sufficient to explain failure. Provider-specific request content, tool representation, returned results, and recovery behavior matter. Cursor's successful SDK run changed both model and framework, so it is not a controlled demonstration that moving Kimi or Qwen to another Host would fix them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://raw.githubusercontent.com/joinwell52-AI/joinwell52/61e8c10636b197865b380447063d0c9307ba2a94/docs/public/articles/codeflowmu-six-ai-20260909/assets/en-12-integration-path.png" 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%2F65flqbqdsypbjohk4kxp.png" alt="Integration paths" width="800" height="205"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The tested source configured custom providers for Responses and disabled Codex reasoning-summary metadata support. The Doubao Ark bridge also normalized request fields and changed tool exposure. That Ark-specific behavior should not be attributed to every provider. Identical framework names do not guarantee identical effective tool catalogs, requests, or public output.&lt;/p&gt;

&lt;p&gt;Disabling a summary does not establish that a model stopped reasoning or could not provide public progress. Qwen's sparse early explanation and later verbosity require comparison of raw assistant output with Host and UI events. The observed inconsistency harms supervision; deliberate concealment is not established.&lt;/p&gt;

&lt;p&gt;To separate model ability from integration effects, repeat the same model and task on another verified executor with matched tool semantics and budgets. A website chat is not an equivalent control. These six runs do not quantify an integration penalty.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.8 The evaluator also needs checking
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://raw.githubusercontent.com/joinwell52-AI/joinwell52/61e8c10636b197865b380447063d0c9307ba2a94/docs/public/articles/codeflowmu-six-ai-20260909/assets/en-08-eval-mismatch.png" 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%2Filgfput4g4sogng0j2e5.png" alt="Evaluation material identity" width="800" height="205"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A uniform evaluator cannot compensate for incorrect inputs. Some task-record analyses described the current run but linked to raw packages containing morning Codex sessions, role routes, and report hashes. Initialization reused CUSTOM identifiers, creating a risk of mixing windows. &lt;code&gt;coverage=complete&lt;/code&gt; did not establish identity correctness. This article used separate run backups rather than copying disputed counts.&lt;/p&gt;

&lt;p&gt;There was also a report-generation problem: replay showed section extraction treating child headings as the end of a parent section, making an otherwise populated report appear empty. The UI sometimes displayed &lt;code&gt;completed&lt;/code&gt; as a failure reason. A later successful Cursor generation proved that one output was accepted, not that the defect had been fixed.&lt;/p&gt;

&lt;p&gt;Billing has an analogous identity problem. DeepSeek's export contained 168 requests, about 16.22 million tokens, and CNY15.6486, with hourly aggregation including identity chat. Qwen's daily screenshot showed about CNY75.56 without task-isolated detail. Unknown cost must not be replaced with zero or an invented precise ranking.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.9 EVAL record reports and observation reports
&lt;/h3&gt;

&lt;p&gt;EVAL used Cursor throughout. The following comparison focuses on system observations and task-run records; a separate closeout path checks PM’s final report and its evidence chain. The three paths are distinguished in &lt;a href="https://joinwell52-ai.github.io/joinwell52/en/research/2026-09-09-codeflowmu-six-ai#eval-report-matrix" rel="noopener noreferrer"&gt;section 1.10&lt;/a&gt;. Programmatic collection and independent analysis are separate stages. A generated collection record is not automatically a finished EVAL judgment.&lt;/p&gt;

&lt;h5&gt;
  
  
  01 / Collect the run material
&lt;/h5&gt;

&lt;p&gt;The collector receives the project root and run ID. Collecting material is distinct from completing independent analysis.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;child&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;spawn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;execPath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;packages/evaluator/eval-benchmark-record.cjs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;--project-root&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;projectRoot&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;--run-id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;runId&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;cwd&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;projectRoot&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;detached&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;stdio&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ignore&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Source excerpt: &lt;code&gt;codeflowmu-shell/src/eval-benchmark-recording.ts, lines 592–596&lt;/code&gt;, test commit &lt;code&gt;cb590ce35686cb1980e3c89a7d68bd0cfbeb825a&lt;/code&gt;.&lt;/p&gt;

&lt;h5&gt;
  
  
  02 / Start a separate EVAL session
&lt;/h5&gt;

&lt;p&gt;The target report, analysis kind and root task are bound to an EVAL session. The tested EVAL configuration was Cursor / auto-smart in every run.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;runtime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sessionManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;startSession&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nx"&gt;agentId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;sessionTaskId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;skillInjection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;maxToolRounds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;DEFAULT_SESSION_MAX_TOOL_ROUNDS&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;uiLang&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;readPanelUiLang&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;getProjectRoot&lt;/span&gt;&lt;span class="p"&gt;()),&lt;/span&gt;
          &lt;span class="na"&gt;context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="na"&gt;eval_observation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;eval_analysis&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;analysis_kind&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;analysisKind&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;analysis_target_path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;reportPath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;root_task_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;mainTaskId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;session_kind&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;CHAT_BOUND&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Source excerpt: &lt;code&gt;codeflowmu-shell/src/web-panel.ts, lines 17863–17879&lt;/code&gt;, test commit &lt;code&gt;cb590ce35686cb1980e3c89a7d68bd0cfbeb825a&lt;/code&gt;.&lt;/p&gt;

&lt;h5&gt;
  
  
  03 / Validate the analysis before accepting it
&lt;/h5&gt;

&lt;p&gt;A completed session does not automatically constitute a valid report. This excerpt rejects malformed analysis; the surrounding function also checks provenance and required skill receipts.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;contentErrors&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;validateEvalAssistantText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;analysisKind&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;contentErrors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`EVAL_ANALYSIS_FORMAT_INVALID: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;contentErrors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Source excerpt: &lt;code&gt;codeflowmu-shell/src/eval-independent-analysis.ts, lines 286–289&lt;/code&gt;, test commit &lt;code&gt;cb590ce35686cb1980e3c89a7d68bd0cfbeb825a&lt;/code&gt;.&lt;/p&gt;

&lt;h5&gt;
  
  
  04 / Persist the report as UTF-8
&lt;/h5&gt;

&lt;p&gt;After analysis and provenance are assembled, a temporary UTF-8 file replaces the target report. This code explains the mechanism; it does not prove that any particular run passed the checks.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;temporary&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.analysis-&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pid&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;-&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;()}&lt;/span&gt;&lt;span class="s2"&gt;.tmp`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nf"&gt;writeFileSync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;temporary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;raw&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;utf8&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nf"&gt;renameSync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;temporary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Source excerpt: &lt;code&gt;codeflowmu-shell/src/eval-independent-analysis.ts, lines 393–396&lt;/code&gt;, test commit &lt;code&gt;cb590ce35686cb1980e3c89a7d68bd0cfbeb825a&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://raw.githubusercontent.com/joinwell52-AI/joinwell52/61e8c10636b197865b380447063d0c9307ba2a94/docs/public/articles/codeflowmu-six-ai-20260909/assets/en-16-eval-comparison.png" 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%2Ftopq12wl1he53bnqxuio.png" alt="EVAL findings across the six runs" width="799" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The risk labels below come from independent analysis sections. High risk can concern evidence identity rather than poor team delivery; absent reports do not mean low risk.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scheme&lt;/th&gt;
&lt;th&gt;Panel observation&lt;/th&gt;
&lt;th&gt;Task-record analysis&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Codex&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Doubao&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kimi&lt;/td&gt;
&lt;td&gt;Final report not obtained&lt;/td&gt;
&lt;td&gt;Final report not obtained&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scheme&lt;/th&gt;
&lt;th&gt;Interpretation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Codex&lt;/td&gt;
&lt;td&gt;Completed inspection with remaining evidence gaps; partial observation, not unconditional product pass&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Doubao&lt;/td&gt;
&lt;td&gt;Current delivery existed, but frozen materials were disputed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek&lt;/td&gt;
&lt;td&gt;Task/report inventory broadly consistent; raw package identity disputed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kimi&lt;/td&gt;
&lt;td&gt;Underlying recording and execution evidence still exist&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen&lt;/td&gt;
&lt;td&gt;Business blocked and frozen-material identity disputed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor&lt;/td&gt;
&lt;td&gt;Live recovery traceable, but linked task-record materials disputed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Doubao and Cursor EVAL analyses corrected a scanner's false alarm: after the root task moved to ADMIN acceptance, an empty PM todo view could be correct. The completed run must not be labelled missing solely from that projection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kimi had records even without a completed final EVAL pair.&lt;/strong&gt; Its archive contains a 17,488-byte &lt;code&gt;.codeflowmu/eval-recordings/CUSTOM-20260909-001.json&lt;/code&gt;, begun at 16:08:52 Beijing time, with &lt;code&gt;state: recording&lt;/code&gt; and &lt;code&gt;generation_attempts: 0&lt;/code&gt; in that snapshot. Task/chat process files and Runtime events are also preserved. This establishes a recording entry, not successful final report generation. We did not fill the gap using another run's reports.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/articles/codeflowmu-six-ai-20260909/assets/scene-eval-report.png" 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%2Fye31cq89httsyz6abza3.png" alt="Original EVAL report generation screen" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;English reading guide — original Chinese UI:&lt;/strong&gt; “生成任务记录” means “Generate task-run record”; “已生成” means “Generated”; “报告已生成” identifies the saved report; “查看记录报告” opens it. The background lists the standard task-run record and EVAL panel scan.&lt;/p&gt;

&lt;p&gt;Click the screenshot to inspect its original pixels.&lt;/p&gt;

&lt;p&gt;The screenshot shows a successful later Cursor report. Saving a report is one check; matching its content and identity to the run is another.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.10 EVAL is useful, but not the final truth
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://raw.githubusercontent.com/joinwell52-AI/joinwell52/61e8c10636b197865b380447063d0c9307ba2a94/docs/public/articles/codeflowmu-six-ai-20260909/assets/en-17-eval-judgment.png" 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%2Fbdbpkoxa2vb21i1lfoei.png" alt="Performance scores and EVAL risk are different measures" width="800" height="205"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The article asks both whether the team delivered and whether its evidence is reliable. EVAL is valuable because it can challenge a convincing report. Its own claims also need review.&lt;/p&gt;

&lt;p&gt;Cursor's score of 87 and high task-record risk are not contradictory measures of the same thing. The score uses the corresponding independent run backup and recovery chain. The risk addresses the associated record package's identity problem. We did not use disputed raw counts as if they belonged to the current run.&lt;/p&gt;

&lt;p&gt;EVAL's corrections were often more useful than adding issues: it rejected “empty PM todo means lost work,” and distinguished actual Qwen transport failure from an asserted permanent dependency deadlock. DeepSeek's claim that the independent Cursor EVAL was a violation also needed correction: that configuration was intentional.&lt;/p&gt;

&lt;p&gt;CodeFlowMu's product value is that successful delivery, authorized recovery, disagreement, and defects can all be investigated from retained records. Reliable run identity, correct freezing, and truthful generation states are priorities for improvement.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.11 Fact checking: return a claim to its source
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Claim&lt;/th&gt;
&lt;th&gt;Evidence compared&lt;/th&gt;
&lt;th&gt;Finding&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;“OPS finished the report”&lt;/td&gt;
&lt;td&gt;Complete call body, returned status, formal file and receipt&lt;/td&gt;
&lt;td&gt;Qwen generated the body but failed submission&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;“PM todo is empty, so work was lost”&lt;/td&gt;
&lt;td&gt;Root state, ADMIN acceptance view, projection contract&lt;/td&gt;
&lt;td&gt;EVAL corrected the scanner's inference&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;“QA is running but has no session”&lt;/td&gt;
&lt;td&gt;Snapshot time, QA launch time, session record&lt;/td&gt;
&lt;td&gt;A pre-launch snapshot cannot prove ghost execution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;“This raw package belongs to this run”&lt;/td&gt;
&lt;td&gt;Model, time window, Session, routes, hashes&lt;/td&gt;
&lt;td&gt;Several same-named packages contained earlier Codex material&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Identify the same run and attempt before asking what a record proves. Successful transport, successful command execution, and successful business delivery are different outcomes. Missing evidence remains unknown; conflicting evidence remains disputed until resolved.&lt;/p&gt;

&lt;p&gt;No usable external third-party fact source was configured in this test. These checks relied on local execution evidence. They are not an external database certification or an automatic endorsement from a standards authority.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.12 Diagnosis: make “stuck” a specific problem
&lt;/h3&gt;

&lt;p&gt;Diagnosis should explain what happened, where the evidence is, and which layer needs investigation next. CodeFlowMu linked tasks, sessions, tool results, and logs to formal work, rather than leaving diagnosis as a conversational impression.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Observed fact&lt;/th&gt;
&lt;th&gt;Diagnostic implication&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Configuration&lt;/td&gt;
&lt;td&gt;Cursor QA used an unavailable model&lt;/td&gt;
&lt;td&gt;Authorized correction, cancellation, and a linked rerun restored delivery&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Submission&lt;/td&gt;
&lt;td&gt;Qwen OPS returned &lt;code&gt;Transport closed&lt;/code&gt; after sending complete content&lt;/td&gt;
&lt;td&gt;Confirmed submission failure; inspect recoverable delivery rather than blame only the model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dispatch&lt;/td&gt;
&lt;td&gt;Qwen QA's reference relationship still waited for DEV at one gate&lt;/td&gt;
&lt;td&gt;Explains initial waiting, not all later non-delivery&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Integration/session&lt;/td&gt;
&lt;td&gt;Kimi content rejection and interrupted sessions&lt;/td&gt;
&lt;td&gt;Validate the request and endpoint path before judging full team ability&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EVAL output&lt;/td&gt;
&lt;td&gt;Material collected but extraction, validation, or UI status problematic&lt;/td&gt;
&lt;td&gt;Separate collection, analysis, and final file write&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Useful diagnosis narrows the problem and supports recovery. Cursor supplied an end-to-end recovery example. Qwen supplied a case where actual issues were found but diagnostic scope was not controlled. Independent evaluation raises questions, fact checking tests their basis, and diagnosis identifies causes and possible next steps. PM and ADMIN retain responsibility for decisions.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.13 The two incomplete runs, with precise evidence
&lt;/h3&gt;

&lt;p&gt;Kimi did not establish downstream teamwork. Qwen established it but failed to finish delivery. ADMIN termination was the ending action, not the sole explanation for what preceded it.&lt;/p&gt;

&lt;p&gt;For Kimi, the archived Runtime file contains an explicit error at &lt;strong&gt;16:15:10&lt;/strong&gt;: &lt;code&gt;invalid_request_error: responses: unknown content part type: "encrypted_content"&lt;/code&gt;. Six later failure results, from &lt;strong&gt;16:19:18 to 16:33:12&lt;/strong&gt;, contain &lt;code&gt;responseStreamDisconnected&lt;/code&gt; and &lt;code&gt;The engine is currently overloaded, please try again later&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The eight formal failed endings consist of seven error endings and one final cancellation. Four recovery calls returned &lt;code&gt;refresh_queued&lt;/code&gt; with &lt;code&gt;tools_ready:false&lt;/code&gt;. Resources and commands were used, but no formal child TASK or REPORT resulted. In the corresponding archived &lt;code&gt;sdk.result&lt;/code&gt; records for Codex, Doubao, DeepSeek, and Qwen, these two specific signatures were not found. That comparison does not imply their tool paths were fault-free.&lt;/p&gt;

&lt;p&gt;The content rejection is direct compatibility evidence. The overload text is a returned service signal, not an independent measurement of actual server load. We still cannot identify which component introduced or retained the unsupported content, the precise origin of the overload message, or whether the tool-readiness issue shares the same cause. See the &lt;a href="https://joinwell52-ai.github.io/joinwell52/articles/codeflowmu-six-ai-20260909/kimi-failure-evidence.html" rel="noopener noreferrer"&gt;timestamped source evidence&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For Qwen, the reference dependency's gate explains 52m 24s of waiting, and OPS transport failure explains a real delivery obstacle. QA then ran nearly 50 minutes without a formal report. Continued investigation included old-snapshot and argument-comparison mistakes. These support criticism of PM recovery and scope control, but do not quantify the share of blame attributable to each component.&lt;/p&gt;

&lt;p&gt;Future validation should differ: Kimi first needs a minimal formal tool-discovery, child-task, and report chain; Qwen needs validated dispatch/submission recovery followed by a bounded inspection. These are proposed checks, not fixes already completed.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Conclusions: What CodeFlowMu Made Possible
&lt;/h2&gt;

&lt;h3&gt;
  
  
  4.1 The system made the comparison evidence-based
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The demonstrated value is turning a natural-language request into teamwork that can be assigned, tracked, checked, and handed over.&lt;/strong&gt; CodeFlowMu supplied operational visibility and management controls. FCoP made assignments and deliverables persistent. EVAL provided another opportunity to challenge conclusions.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Retained system evidence&lt;/th&gt;
&lt;th&gt;Question it answers&lt;/th&gt;
&lt;th&gt;Result in this test&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;TASKs and relationships&lt;/td&gt;
&lt;td&gt;How did PM divide the work?&lt;/td&gt;
&lt;td&gt;Distinguished parallel inspection, reference dependencies, and linked reruns&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sessions, returns, timestamps&lt;/td&gt;
&lt;td&gt;What actually ran, and where did it fail?&lt;/td&gt;
&lt;td&gt;Identified Kimi's content rejection and overload/disconnection sequence&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;REPORTs and receipts&lt;/td&gt;
&lt;td&gt;Was content actually delivered?&lt;/td&gt;
&lt;td&gt;Avoided counting Qwen OPS text as formal delivery&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Worker reports, PM summary, reviews&lt;/td&gt;
&lt;td&gt;Did PM correct unsupported claims?&lt;/td&gt;
&lt;td&gt;Exposed Doubao's count/proportion/validation problems&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Approvals, cancellation, reruns&lt;/td&gt;
&lt;td&gt;How was recovery authorized and executed?&lt;/td&gt;
&lt;td&gt;Reconstructed Cursor's recovery without erasing the failed QA attempt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EVAL records, reports, status&lt;/td&gt;
&lt;td&gt;What was independently assessed, and what was missing?&lt;/td&gt;
&lt;td&gt;Preserved disputes and allowed Kimi diagnosis from underlying records&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These judgments depend on evidence captured and retained during CodeFlowMu operation. Host/tool errors are recorded as returned; FCoP artifacts express formal collaboration; CodeFlowMu connects them to the business workflow. The exported backups and subsequent checks then turn records into analysis. This is not a story reconstructed from agent memory or from a green status label.&lt;/p&gt;

&lt;p&gt;System defects remain in the article because the same records make them inspectable. Success has delivery evidence; failure has diagnostic traces; recovery has an authorization history; evaluation has sources. Scores and diagnoses are EVAL and analytical judgments, not automatic business decisions made by the system.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.2 Overall assessment of the six models
&lt;/h3&gt;

&lt;p&gt;For this inspection, Codex is the first choice for routine execution; Cursor belongs in the same group where authorized intervention is available. Among the domestic-provider models, DeepSeek is the first candidate for further testing, followed by Doubao. Qwen needs bounded task-control testing; Kimi needs integration validation first.&lt;/p&gt;

&lt;p&gt;Codex and Cursor both scored 24/30 for result quality. Their advantage was keeping conclusions proportionate to evidence while reaching delivery. DeepSeek and Doubao showed they could organize the workflow, but PM review did not consistently filter incorrect interpretation or overstatement. Qwen and Kimi require different diagnoses rather than a shared “bad model” label.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.3 Capability, reliable delivery, and review are separate thresholds
&lt;/h3&gt;

&lt;p&gt;Doubao and DeepSeek demonstrated task decomposition, tool use, and formal team reporting through this framework. That does not establish that every domestic model is ready for an unsupervised PM role, nor does the failed pair prove that domestic models lack the underlying ability. Running successfully, reporting truthfully, and recovering effectively are distinct thresholds.&lt;/p&gt;

&lt;p&gt;CodeFlowMu improvements should prioritize reference-dependency semantics, recoverable report submission, cross-run identity, and EVAL format handling, followed by stale display and progress-text issues. Traceability has been demonstrated; perfect calibration has not.&lt;/p&gt;

&lt;p&gt;The original “inspect and report” wording did not authorize code repair. Production requests can further specify read-only scope, permitted formal assignments/reports, a budget, and when to stop investigating. Clearer language reduces ambiguity but does not replace PM judgment. A separate bounded-text test should not be mixed with the original wording and presented as an unexplained model improvement.&lt;/p&gt;

&lt;p&gt;The scores remain 88, 87, 75, 66, 40, and 18 for these integrated runs. Foundation-model ability and integration loss were not separately measured.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.4 A reliable team also knows when to stop
&lt;/h3&gt;

&lt;p&gt;Inspection does not need to eliminate every defect. Reliable findings, supporting evidence, and sensible next steps can complete the assignment; repair needs its own authorization.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://raw.githubusercontent.com/joinwell52-AI/joinwell52/61e8c10636b197865b380447063d0c9307ba2a94/docs/public/articles/codeflowmu-six-ai-20260909/assets/en-09-baseline.png" 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%2Fo2c7xmufk18n5hmljqdl.png" alt="Proposed repeat-test procedure" width="800" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A future A/B protocol could retain the original task in one arm and explicitly bound read-only work and time in the other. Rotate the order, repeat each model configuration at least three times, and preserve task records, system observations, any triggered closeout observations, and failed drafts. Exporting/checking old evidence and verifying the initialized next environment solve different problems.&lt;/p&gt;

&lt;p&gt;A common Git commit is not a full machine snapshot. Provider, adapter, effective tool catalog, network, task graph, and interventions still differ. Verify actual role sessions after configuration changes, not merely dropdown labels.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.5 Methods, sources, and limits
&lt;/h3&gt;

&lt;p&gt;Evidence was retained by run and archive batch: TASKs, REPORTs, sessions, tool receipts, chat and public progress, approvals, issues, logs, and EVAL. Qwen and Cursor have late supplements. ZIP integrity, file lists, and hashes were checked before comparison. Complete private logs are not published here.&lt;/p&gt;

&lt;p&gt;Timing ends at successful formal final-report submission; termination is separately labelled. The 100-point rubric is a transparent judgment-based assessment with six weights, not a statistical confidence interval. One formal sample per scheme, fixed order, different provider paths, and Cursor's intervention limit generalization. Initialization was shared, but every cache, skill, historical reference, and external condition was not proven identical.&lt;/p&gt;

&lt;p&gt;A reference answer for the inspection should cover all five areas with scope, reproducible evidence, conclusions, unknowns, worker receipts, and a PM summary. It must be tied to the actual version and configuration, not a permanent answer independent of system state.&lt;/p&gt;

&lt;p&gt;The public package contains the article, figures, selected evidence, scoring/timing data, and source explanations. The concept cover is AI-generated, not a scene photograph. Screenshots are original evidence; diagrams explain mechanisms and are not substitutes for execution. All analytical charts and mechanism diagrams have English editions. The original article provides vector figures; this forum edition uses PNG exports of those same figures. Original screenshots retain the Chinese interface as captured, with English reading guides; literal evidence excerpts preserve their source wording. Supporting source documents are labelled by language in the public source guide.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/articles/codeflowmu-six-ai-20260909/sources.en.html" rel="noopener noreferrer"&gt;Public source guide&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/articles/codeflowmu-six-ai-20260909/business-evidence-index.html" rel="noopener noreferrer"&gt;Evidence inventory (Chinese)&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/articles/codeflowmu-six-ai-20260909/evidence-excerpts.html" rel="noopener noreferrer"&gt;Actual excerpts&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/articles/codeflowmu-six-ai-20260909/EVAL%E5%AF%B9%E7%85%A7%E4%B8%8E%E6%9D%A5%E6%BA%90.html" rel="noopener noreferrer"&gt;EVAL source and checks&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/articles/codeflowmu-six-ai-20260909/kimi-failure-evidence.html" rel="noopener noreferrer"&gt;Kimi error evidence&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/articles/codeflowmu-six-ai-20260909/eval-generation-code.html" rel="noopener noreferrer"&gt;EVAL code excerpts&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/articles/codeflowmu-six-ai-20260909/scorecard.csv" rel="noopener noreferrer"&gt;Scores&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/articles/codeflowmu-six-ai-20260909/timing.csv" rel="noopener noreferrer"&gt;Timing&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/articles/codeflowmu-six-ai-20260909/stage-timeline.csv" rel="noopener noreferrer"&gt;Stage timeline&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This public article and its supporting files are published separately from the private CodeFlowMu source repository. No access to the private repository is required to read the article or the disclosed evidence excerpts.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/en/research/2026-09-09-codeflowmu-six-ai" rel="noopener noreferrer"&gt;Original English article&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/zh/research/2026-09-09-codeflowmu-six-ai" rel="noopener noreferrer"&gt;简体中文&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/joinwell52-AI/joinwell52" rel="noopener noreferrer"&gt;Research repository&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>testing</category>
      <category>discuss</category>
    </item>
    <item>
      <title>When Cleanup Resets the Retry Budget</title>
      <dc:creator>joinwell52</dc:creator>
      <pubDate>Thu, 10 Sep 2026 03:31:47 +0000</pubDate>
      <link>https://dev.to/joinwell52/when-cleanup-resets-the-retry-budget-dlj</link>
      <guid>https://dev.to/joinwell52/when-cleanup-resets-the-retry-budget-dlj</guid>
      <description>&lt;h1&gt;
  
  
  When Cleanup Resets the Retry Budget
&lt;/h1&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%2F6ba9cnpgkq603c109qoc.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%2F6ba9cnpgkq603c109qoc.png" alt="Editorial illustration of the tested mechanism" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A retry limiter can record an attempt correctly and still lose control before the next call. An Orca recovery-module experiment exposed the reason: display cleanup erased a terminal's recovery history while that terminal remained eligible for another remount. The useful review target is the cleanup predicate.&lt;/p&gt;

&lt;p&gt;Adapted from the &lt;a href="https://joinwell52-ai.github.io/joinwell52/en/engineering/2026-09-10-recovery-budget" rel="noopener noreferrer"&gt;complete English research article&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two indexes disagree about one object
&lt;/h2&gt;

&lt;p&gt;Orca is a desktop tool for organizing terminals and Agent work. &lt;a href="https://github.com/stablyai/orca/pull/19745" rel="noopener noreferrer"&gt;PR #19745&lt;/a&gt; describes a Windows crash in which eight tabs reportedly remounted 8,878 times in roughly 122.4 seconds. We did not obtain the original crash bundle; those numbers are the author's incident report, not our measurements.&lt;/p&gt;

&lt;p&gt;The public code exposes a mechanism worth testing. Terminal rows live in one index, while unified UI tabs live in another. They usually correspond but can diverge.&lt;/p&gt;

&lt;p&gt;Remounting consults the terminal-row index. The old budget-release path consulted the unified UI index instead. The same tab could consequently receive two incompatible answers: it existed for the function performing a remount, but appeared absent to the cleanup function deciding whether to erase its recovery history.&lt;/p&gt;

&lt;p&gt;Each lookup returned a definite answer. Their combination allowed recovery to discard the evidence of its own activity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test the causal path without claiming a desktop reproduction
&lt;/h2&gt;

&lt;p&gt;We pinned the base and proposed head revisions and loaded the complete recovery and lookup modules. The original budget calculation, instance disposal, remount and generation-update logic remained intact. We supplied fixtures for store plumbing, time, timers, PTY and logging. We did not start Electron or reproduce graphics-memory exhaustion.&lt;/p&gt;

&lt;p&gt;Each cycle registered an instance, requested recovery and unregistered it. We then made the UI index miss a tab whose terminal row remained present. Two request schedules tested different constraints: 10 milliseconds between calls for the cooldown, and 16 seconds to move past the cooldown while remaining inside the cumulative budget window.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Requests&lt;/th&gt;
&lt;th&gt;Base remounts&lt;/th&gt;
&lt;th&gt;Proposed-head remounts&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Both indexes agree; 10ms spacing&lt;/td&gt;
&lt;td&gt;200&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Terminal row present, UI entry absent; 10ms spacing&lt;/td&gt;
&lt;td&gt;200&lt;/td&gt;
&lt;td&gt;200&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Same divergence; 16s spacing&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Both rounds agreed. The first row shows that the old limiter was not universally ineffective. It worked when disposal could still see the tab. The second demonstrates history being reset under index divergence. The third separates the cumulative cap from the cooldown: even with requests spaced apart, the old code never retained enough history to reach its limit.&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%2Fowwd6buq90znzu8l4y8h.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%2Fowwd6buq90znzu8l4y8h.png" alt="Remount counts under divergent indexes" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;These counts describe successful remounts in the fixture's in-memory store, not production crashes.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Share the predicate, not another counter
&lt;/h2&gt;

&lt;p&gt;The proposed fix does not lower the cap or introduce a second limiter. It makes the question “can this terminal still be remounted?” and the question “has this terminal gone away?” rely on the same terminal-row lookup.&lt;/p&gt;

&lt;p&gt;Replacing a display instance does not end the lifetime of the terminal object that owns the recovery budget. If that object can still produce another recovery effect, a missing entry in a different UI projection should not erase the history constraining it.&lt;/p&gt;

&lt;p&gt;This is a bounded correction. The two indexes can still disagree elsewhere. The patch chooses the appropriate source of identity for this budget; it does not establish system-wide index consistency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify legitimate recovery still works
&lt;/h2&gt;

&lt;p&gt;Merely proving that a storm stops is insufficient: disabling every recovery would also satisfy that test. We retained three controls.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Control&lt;/th&gt;
&lt;th&gt;Result on both revisions&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Fixture removes the terminal row, disposes the instance, then recreates the same ID&lt;/td&gt;
&lt;td&gt;Two requests produce two remounts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Requests at 0, 16, 32, 48 and 300.001 seconds&lt;/td&gt;
&lt;td&gt;First three accepted, fourth constrained, final request accepted: four remounts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Replay the old generation after one successful recovery&lt;/td&gt;
&lt;td&gt;Two requests produce one remount&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The close control mutates the fixture's terminal rows; it is not a real UI close action. It checks the budget-release branch. The expiry control checks that the cap does not become permanent, while the stale-generation control checks that delayed requests cannot continue acting on a replaced display instance.&lt;/p&gt;

&lt;p&gt;Together, these controls distinguish preserving necessary history from freezing recovery altogether.&lt;/p&gt;

&lt;h2&gt;
  
  
  A budget depends on evidence surviving cleanup
&lt;/h2&gt;

&lt;p&gt;The tempting response to a recovery storm is another limit. This case suggests inspecting the existing limit's release conditions first. Who can erase its history? Does that decision rely on the object performing the action, or on a UI projection or cache that can temporarily lose sight of it?&lt;/p&gt;

&lt;p&gt;The same question applies to retry counts, failure lockouts and spending budgets. An accurate timestamp is ineffective if the action's own cleanup path deletes it before the next admission decision.&lt;/p&gt;

&lt;p&gt;Not every budget needs permanent persistence. Its lifetime does, however, need to cover the object it constrains, and its release predicate needs to agree with the execution predicate. The disappearance of a UI instance does not necessarily end a backing object's history.&lt;/p&gt;

&lt;p&gt;The reusable finding is simple: &lt;strong&gt;a protection mechanism must both record an action correctly and preserve that record until the next decision that depends on it.&lt;/strong&gt; Cleanup deserves the same scrutiny as admission.&lt;/p&gt;

&lt;h2&gt;
  
  
  A review you can apply
&lt;/h2&gt;

&lt;p&gt;Test both the admission path and every history-deletion path. Keep controls for real object disposal, window expiry and stale requests so that stopping a storm does not silently disable valid recovery.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/en/engineering/2026-09-10-recovery-budget" rel="noopener noreferrer"&gt;Full English edition&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/zh/engineering/2026-09-10-recovery-budget" rel="noopener noreferrer"&gt;中文版本&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/en/research/evidence/2026-09-10-authority-scope" rel="noopener noreferrer"&gt;Methods and saved observations&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/joinwell52-AI/joinwell52" rel="noopener noreferrer"&gt;Research repository&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>testing</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Test the Scope of Your Concurrency Limit</title>
      <dc:creator>joinwell52</dc:creator>
      <pubDate>Thu, 10 Sep 2026 03:30:08 +0000</pubDate>
      <link>https://dev.to/joinwell52/test-the-scope-of-your-concurrency-limit-52bi</link>
      <guid>https://dev.to/joinwell52/test-the-scope-of-your-concurrency-limit-52bi</guid>
      <description>&lt;h1&gt;
  
  
  Test the Scope of Your Concurrency Limit
&lt;/h1&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%2Fgehyg2ohpinbg2o2mdxm.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%2Fgehyg2ohpinbg2o2mdxm.png" alt="Editorial illustration of the tested mechanism" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Two event loops can each respect a concurrency limit of one while running two tasks in total. Our controlled AG2 experiment separates that valid local behavior from a real cache-replacement defect that let one loop admit too many tasks. The distinction changes the assertion a resource-budget test needs.&lt;/p&gt;

&lt;p&gt;Adapted from the &lt;a href="https://joinwell52-ai.github.io/joinwell52/en/engineering/2026-09-10-concurrency-domain" rel="noopener noreferrer"&gt;complete English research article&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reproducing the actual defect
&lt;/h2&gt;

&lt;p&gt;AG2 is an open-source framework for building and coordinating Agents. &lt;a href="https://github.com/ag2ai/ag2/pull/3243" rel="noopener noreferrer"&gt;PR #3243&lt;/a&gt; changes the semaphore cache used when admitting subtasks. A semaphore supplies a limited number of slots: later coroutines wait when all slots are occupied, and a completed task releases its slot.&lt;/p&gt;

&lt;p&gt;The earlier method stored one semaphore and its owning event loop on the Agent. When another loop arrived, it replaced the cached semaphore. Threads alternating between loops could keep replacing that reference while earlier tasks still occupied older semaphores.&lt;/p&gt;

&lt;p&gt;We pinned the base and head source and executed the original &lt;code&gt;_spawn_subtask&lt;/code&gt; method. The subtask body was a waiting counter, not a model call. Rather than relying on random scheduling, we arranged an explicit interleaving:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A1 enters on loop A and holds a slot.&lt;/li&gt;
&lt;li&gt;B1 enters on loop B in another real OS thread.&lt;/li&gt;
&lt;li&gt;While both remain active, A requests A2.&lt;/li&gt;
&lt;li&gt;We record local and aggregate peaks, then release the tasks.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;On the old method, A2 obtained a newly created slot. Loop A now had two active subtasks and the experiment had three overall. This violates even the narrower per-loop interpretation of a limit of one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which peak becomes one after the fix?
&lt;/h2&gt;

&lt;p&gt;The proposed implementation keeps a semaphore for each running event loop and protects lookup and creation with a thread lock. B no longer replaces A's entry. Under the same interleaving, A2 waits for A1 to release its slot.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Revision and execution shape&lt;/th&gt;
&lt;th&gt;Loop A peak&lt;/th&gt;
&lt;th&gt;Loop B peak&lt;/th&gt;
&lt;th&gt;Aggregate peak&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Base, one loop&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Base, two loops&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Proposed head, one loop&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Proposed head, two loops&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;We ran each configuration five times per round, across two rounds: forty controlled trials with identical outcomes and no exceptions. Recording both local and aggregate peaks makes the result precise. The proposed method repaired the per-loop limit; two loops still ran two subtasks in aggregate.&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%2Fb0z4hqfuobg4a2mvf9ln.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%2Fb0z4hqfuobg4a2mvf9ln.png" alt="Local and aggregate peaks from the same controlled experiment" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;These are in-flight synthetic waiting subtasks, not measurements of model requests, throughput or cost.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The upstream regression test explicitly targets the per-loop contract. An aggregate peak of two should therefore not be called a failed fix. It identifies a different guarantee that this patch does not provide.&lt;/p&gt;

&lt;h2&gt;
  
  
  Turn the number into an acceptance contract
&lt;/h2&gt;

&lt;p&gt;A limit intended to protect a real resource needs at least four definitions.&lt;/p&gt;

&lt;p&gt;The first is its &lt;strong&gt;scope&lt;/strong&gt;: loop, Agent, process, host or tenant. The second is its &lt;strong&gt;admission authority&lt;/strong&gt;: which object or service can issue slots, and whether all relevant executors share it. The third is its &lt;strong&gt;lifetime&lt;/strong&gt;: what task completion, process exit, lease expiry or manual cleanup means for an occupied slot. The fourth is its &lt;strong&gt;uncertainty policy&lt;/strong&gt;: losing sight of an old task does not establish that the resource it held is free.&lt;/p&gt;

&lt;p&gt;A user may select one to prevent two expensive tasks from using the same account simultaneously. A correct semaphore in each loop could still fail to satisfy that product requirement. Conversely, a product deliberately promising one task per loop should not silently impose cross-domain serialization in the name of safety and remove intended parallelism.&lt;/p&gt;

&lt;p&gt;The design starts with the contract, followed by the appropriate lock, shared counter or lease. A lock around creation protects that operation. It does not automatically turn separate counters into a shared resource budget.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this experiment establishes
&lt;/h2&gt;

&lt;p&gt;We did not run a complete AG2 Agent, toolchain or model service, and did not test multiple processes, hosts or tenants. Initialization was a version-matched fixture; the admission method itself came from pinned upstream source. The PR remained open at the time of our inspection.&lt;/p&gt;

&lt;p&gt;The useful acceptance question is therefore not only “did the peak exceed the cap?” It is also &lt;strong&gt;“within which domain did we count that peak?”&lt;/strong&gt; Without that domain, the limit is difficult both to implement and to review fairly.&lt;/p&gt;

&lt;h2&gt;
  
  
  A review you can apply
&lt;/h2&gt;

&lt;p&gt;Add separate assertions for each loop's peak and the aggregate peak. Choose which one represents the product contract before deciding whether two concurrent tasks are a defect.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/en/engineering/2026-09-10-concurrency-domain" rel="noopener noreferrer"&gt;Full English edition&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/zh/engineering/2026-09-10-concurrency-domain" rel="noopener noreferrer"&gt;中文版本&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/en/research/evidence/2026-09-10-authority-scope" rel="noopener noreferrer"&gt;Methods and saved observations&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/joinwell52-AI/joinwell52" rel="noopener noreferrer"&gt;Research repository&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>testing</category>
      <category>python</category>
    </item>
    <item>
      <title>Zero Credential Files Is Not a Secret-Access Test</title>
      <dc:creator>joinwell52</dc:creator>
      <pubDate>Thu, 10 Sep 2026 03:30:06 +0000</pubDate>
      <link>https://dev.to/joinwell52/zero-credential-files-is-not-a-secret-access-test-36g7</link>
      <guid>https://dev.to/joinwell52/zero-credential-files-is-not-a-secret-access-test-36g7</guid>
      <description>&lt;h1&gt;
  
  
  Zero Credential Files Is Not a Secret-Access Test
&lt;/h1&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%2Ft0q9sx086e96va6s2rjg.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%2Ft0q9sx086e96va6s2rjg.png" alt="Editorial illustration of the tested mechanism" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A test asserting that no credential file was created checks one delivery route. In an OpenHands source-seam experiment, file callbacks fell from four to zero while all four synthetic credential blobs still reached a real child process as environment variables. Here is how to test the recipient's actual inputs without overstating what a provider-scoping patch promises.&lt;/p&gt;

&lt;p&gt;Adapted from the &lt;a href="https://joinwell52-ai.github.io/joinwell52/en/engineering/2026-09-10-secret-route" rel="noopener noreferrer"&gt;complete English research article&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  A useful fix with a narrower contract
&lt;/h2&gt;

&lt;p&gt;OpenHands Agent SDK can launch different agent programs through ACP, a protocol connecting an agent client to an execution program. Those programs use different authentication mechanisms, including environment variables and credential files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/OpenHands/software-agent-sdk/pull/4927" rel="noopener noreferrer"&gt;PR #4927&lt;/a&gt; narrows file-secret handling by provider ownership. The default configuration combines multiple providers' file rules; the proposed change avoids materializing unrelated providers' files when starting one particular program. That is a useful correction to credential representation and directory configuration.&lt;/p&gt;

&lt;p&gt;File rules, however, are not a secret allow-list. The startup path also exports registry secrets as ordinary environment variables, excluding those handled as files. Narrowing the file set narrows this exclusion set too. A value removed from one route can consequently reappear on the other.&lt;/p&gt;

&lt;p&gt;This does not make the patch a failed implementation of its stated goal. It means reviewers should not add a stronger promise—“all other providers' secrets become inaccessible”—that the change does not establish.&lt;/p&gt;

&lt;h2&gt;
  
  
  Observe the recipient, not just the writer
&lt;/h2&gt;

&lt;p&gt;We pinned the PR's base and head revisions and executed its original filtering methods, environment-conflict method, and contiguous environment-construction slice. Both revisions used registry metadata extracted from the head to isolate the handling change. Provider identity was fixture-supplied; actual command detection was not tested. All inputs were synthetic strings.&lt;/p&gt;

&lt;p&gt;File materialization was a recording fixture: the file-side numbers below count callbacks, not authentication files actually written to disk. The assembled environment was passed to a real Python child process, which returned variable names only. It did not launch a model or attempt authentication.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Revision and recipient&lt;/th&gt;
&lt;th&gt;File-side callbacks&lt;/th&gt;
&lt;th&gt;Four credential-blob variables visible to child&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Base, Claude&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Proposed head, Claude&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Base, Codex&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Proposed head, Codex&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Proposed head, unrecognized provider&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Both rounds produced the same results. The four blobs correspond to registered file credentials for Codex, Gemini, Kimi and Pi. Codex retained its own file route while three other blobs became ordinary environment variables. An unrecognized provider retained every file specification. Those branches cannot all be summarized as “only this provider's credentials remain.”&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%2Frdmavta5vymps0rey59q.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%2Frdmavta5vymps0rey59q.png" alt="File-side and environment-side observations" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The figure uses our local seam-test observations. It establishes delivery of synthetic values through the tested construction path, not their use by a real CLI or disclosure over a network.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  An empty list can have an authentication exception
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/OpenHands/software-agent-sdk/pull/4931" rel="noopener noreferrer"&gt;Draft PR #4931&lt;/a&gt; addresses a different layer: profile-level restrictions on secret names received by a conversation. Filtering the registry can narrow both downstream delivery routes.&lt;/p&gt;

&lt;p&gt;We placed that PR's original filtering functions before the earlier environment slice. This is explicitly a laboratory composition of two separate PRs, not a merged SDK release or a server integration test.&lt;/p&gt;

&lt;p&gt;Given the same six synthetic inputs, the Claude ACP profile produced:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;code&gt;secret_refs&lt;/code&gt;&lt;/th&gt;
&lt;th&gt;Names retained in the registry&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;All six supplied names&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The provider's &lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;[PROD_DB_URL]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The database variable and provider authentication variable&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The empty list removed business secrets while retaining an explicit authentication exception. The program still needs a way to authenticate. As a separate control, we executed only the ordinary OpenHands profile's empty-list filter and obtained an empty set; that control did not pass through ACP startup.&lt;/p&gt;

&lt;p&gt;An interface therefore needs to explain what its empty list means. “No selected business secrets” and “this process receives no secrets at all” are materially different expectations.&lt;/p&gt;

&lt;h2&gt;
  
  
  The registry is not every input channel
&lt;/h2&gt;

&lt;p&gt;The tested startup slice also merges the host environment. A separate synthetic marker placed on that route remained visible to the child in every ACP scenario, including the empty-list case.&lt;/p&gt;

&lt;p&gt;This is not a production leak report. It shows that a registry filter cannot constrain an input that bypasses the registry. The draft explicitly leaves host-environment inheritance outside its scope.&lt;/p&gt;

&lt;p&gt;A stronger acceptance test begins by defining the business secrets and authentication materials authorized for a provider and run, then observes the actual environment and file capabilities at the receiving process boundary. Representation changes should follow that selection. Unknown-provider behavior needs its own explicit policy as well.&lt;/p&gt;

&lt;p&gt;Our experiment did not exercise the complete SDK, a real ACP handshake, authentication, or server request filtering. Its conclusion is narrower: &lt;strong&gt;a disappearing credential file is insufficient evidence of disappearing access. Trace every delivery route for the same secret and inspect the set the recipient actually receives.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A review you can apply
&lt;/h2&gt;

&lt;p&gt;Before accepting an isolation change, enumerate file materialization, registry export and ambient environment inheritance separately. Assert the allowed values at the receiving process, then keep the CLI/authentication boundary explicit.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/en/engineering/2026-09-10-secret-route" rel="noopener noreferrer"&gt;Full English edition&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/zh/engineering/2026-09-10-secret-route" rel="noopener noreferrer"&gt;中文版本&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/en/research/evidence/2026-09-10-authority-scope" rel="noopener noreferrer"&gt;Methods and saved observations&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/joinwell52-AI/joinwell52" rel="noopener noreferrer"&gt;Research repository&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>testing</category>
      <category>architecture</category>
    </item>
    <item>
      <title>The Tool Result Was Blocked. Why Had the Operation Already Run?</title>
      <dc:creator>joinwell52</dc:creator>
      <pubDate>Wed, 09 Sep 2026 07:39:59 +0000</pubDate>
      <link>https://dev.to/joinwell52/the-tool-result-was-blocked-why-had-the-operation-already-run-4ljn</link>
      <guid>https://dev.to/joinwell52/the-tool-result-was-blocked-why-had-the-operation-already-run-4ljn</guid>
      <description>&lt;p&gt;One tool call produced an &lt;code&gt;executed&lt;/code&gt; receipt followed by a &lt;code&gt;blocked&lt;/code&gt; receipt. A screen showing only the last word could suggest that nothing happened.&lt;/p&gt;

&lt;p&gt;Our fixture's counter said otherwise: the tool ran once. Its returned content was withheld afterward.&lt;/p&gt;

&lt;p&gt;There is no contradiction. “Blocked” needs an object: the call, the returned information, or subsequent processing. Compressing these into one overall status can erase precisely the detail that governance added.&lt;/p&gt;

&lt;h2&gt;
  
  
  Permission to call is not permission to disclose
&lt;/h2&gt;

&lt;p&gt;AG2 is an open-source agent application framework. &lt;a href="https://github.com/ag2ai/ag2/pull/3240" rel="noopener noreferrer"&gt;PR #3240&lt;/a&gt; proposes scanning tool output because an authorized call can still return sensitive information. Input checks cannot inspect data that has not yet been returned.&lt;/p&gt;

&lt;p&gt;We fixed the then-unmerged commit &lt;code&gt;bf363ef52853e7b918863dec2fe1e3902b811e6f&lt;/code&gt; and exercised its original middleware entry point. Sensitive-looking strings came from public test fixtures, not credentials.&lt;/p&gt;

&lt;p&gt;In the enforced secret case, the tool counter reached one, the result became a governance error, and the returned object no longer contained the fixture secret. Receipts recorded execution and subsequent withholding.&lt;/p&gt;

&lt;p&gt;That establishes behavior at this middleware boundary. The tool was a counter fixture; no business write, network effect, or actual model-context ingestion was tested.&lt;/p&gt;

&lt;h2&gt;
  
  
  Modes and containers change the boundary
&lt;/h2&gt;

&lt;p&gt;We retained the upstream policy, scanning, rewriting, and receipt logic while replacing framework event shells. Every case passed through the original &lt;code&gt;on_tool_execution&lt;/code&gt;; two independent processes produced the same observations.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Condition&lt;/th&gt;
&lt;th&gt;Tool executions&lt;/th&gt;
&lt;th&gt;Fixture content in returned object&lt;/th&gt;
&lt;th&gt;Receipt sequence&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ENFORCE, successful secret text&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Withheld&lt;/td&gt;
&lt;td&gt;executed → blocked&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MONITOR, same text&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Redacted&lt;/td&gt;
&lt;td&gt;executed → executed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OBSERVE, same text&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Preserved&lt;/td&gt;
&lt;td&gt;executed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ENFORCE, secret in error object&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Preserved&lt;/td&gt;
&lt;td&gt;error&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FLAG policy&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Preserved, finding recorded&lt;/td&gt;
&lt;td&gt;executed → executed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Secret in structured value&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Withheld&lt;/td&gt;
&lt;td&gt;executed → blocked&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Secret in structured key&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Preserved&lt;/td&gt;
&lt;td&gt;executed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SSN in structured string value&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Redacted&lt;/td&gt;
&lt;td&gt;executed → executed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4wppw4vga1uf0bmv5sx3.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%2F4wppw4vga1uf0bmv5sx3.png" alt="Figure: schematic of the saved observations discussed above. Arrows show the stated processing relationship, not a runtime screenshot. Source: accompanying experimental evidence." width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 1. schematic of the saved observations discussed above. Arrows show the stated processing relationship, not a runtime screenshot. Source: accompanying experimental evidence.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;OBSERVE and FLAG are explicit policy choices, not bypass discoveries. MONITOR converts a blocking finding into redaction, so “not enforced” does not always mean “untouched.”&lt;/p&gt;

&lt;h2&gt;
  
  
  An error is another output path
&lt;/h2&gt;

&lt;p&gt;The original code scans successful text parts and structured string values. It returns error objects directly. Its mapping traversal visits values, not keys.&lt;/p&gt;

&lt;p&gt;The same fixture secret therefore receives different treatment when moved from successful text into an error object or dictionary key. That establishes scan coverage, not confirmed leakage into a real model: other framework stages might serialize, sanitize, or restrict these objects.&lt;/p&gt;

&lt;p&gt;A useful review matrix names the containers and modes explicitly. Otherwise a successful text test can quietly become an unsupported claim about every return path.&lt;/p&gt;

&lt;h2&gt;
  
  
  Receipts need a stage
&lt;/h2&gt;

&lt;p&gt;The sequence &lt;code&gt;executed → blocked&lt;/code&gt; accurately describes an executed tool whose result was withheld. A consumer that treats the final receipt as the whole action's status loses this distinction.&lt;/p&gt;

&lt;p&gt;Conversely, &lt;code&gt;executed → executed&lt;/code&gt; need not mean two executions. In our monitor and flag cases the counter remained one; the second receipt described output governance.&lt;/p&gt;

&lt;p&gt;Receipt counts are not tool counts. A clearer representation would identify the call, the recorded stage, whether execution occurred, and whether returned information was permitted onward. This is a design recommendation, not an implemented universal receipt contract.&lt;/p&gt;

&lt;p&gt;For a real effectful tool, withheld output would not undo the effect. That is an inference from the ordering, not a business transaction reproduced here. Whether to retry must depend on the operation's own identity, reconciliation, or idempotency contract.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://joinwell52-ai.github.io/joinwell52/en/research/evidence/2026-09-09-verification-evidence" rel="noopener noreferrer"&gt;evidence guide&lt;/a&gt; preserves eight cases and the precise substitution boundary. Actual Agent integration, message serialization, model ingestion, and external effects remain untested.&lt;/p&gt;

&lt;p&gt;The input boundary decides whether a tool may act. The output boundary decides what information may continue after it acts. Both matter because they answer different questions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/en/engineering/2026-09-09-output-is-not-effect" rel="noopener noreferrer"&gt;Original English article&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/zh/engineering/2026-09-09-output-is-not-effect" rel="noopener noreferrer"&gt;中文版本&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/" rel="noopener noreferrer"&gt;Research Center&lt;/a&gt; · &lt;a href="https://github.com/joinwell52-AI/joinwell52" rel="noopener noreferrer"&gt;Research repository&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>testing</category>
      <category>security</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Only the Note Changed. Why Did the Evaluation Pass Rate Flip?</title>
      <dc:creator>joinwell52</dc:creator>
      <pubDate>Wed, 09 Sep 2026 07:39:14 +0000</pubDate>
      <link>https://dev.to/joinwell52/only-the-note-changed-why-did-the-evaluation-pass-rate-flip-4nlb</link>
      <guid>https://dev.to/joinwell52/only-the-note-changed-why-did-the-evaluation-pass-rate-flip-4nlb</guid>
      <description>&lt;p&gt;Two evaluation records shared an ID. One said pass; the other said fail. We exchanged their notes, &lt;code&gt;a&lt;/code&gt; and &lt;code&gt;b&lt;/code&gt;, without changing either outcome. The summary's pass rate moved from 100% to 0%.&lt;/p&gt;

&lt;p&gt;This was an isolated experiment against a real aggregation function, not a production scoring incident. Its eight existing tests still passed, including the test requiring identical output when input order changes.&lt;/p&gt;

&lt;p&gt;The implementation was deterministic. What it lacked was a reason to treat its chosen record as the authoritative result.&lt;/p&gt;

&lt;h2&gt;
  
  
  The test answered a narrower question
&lt;/h2&gt;

&lt;p&gt;CodeFlowMu is a local multi-agent collaboration system we are developing. An evaluation helper introduced in an August change aggregates outcome records. Its change record explicitly describes resolving duplicate identities through a content comparison, avoiding dependence on arrival order.&lt;/p&gt;

&lt;p&gt;That is a useful goal. Filesystem enumeration and asynchronous completion should not determine an evaluation. But a repeatable choice is not necessarily a justified one.&lt;/p&gt;

&lt;p&gt;The conflict test submits the same records in both orders and checks equality. It does not require preservation of both claims or an explicit disputed result. Consistently discarding one side satisfies the assertions.&lt;/p&gt;

&lt;p&gt;The missing contract concerns identity: does the same ID with different content represent a repeated observation, or a conflict?&lt;/p&gt;

&lt;h2&gt;
  
  
  How a note acquired authority
&lt;/h2&gt;

&lt;p&gt;We imported the actual &lt;code&gt;summarizeEvalOutcomes&lt;/code&gt; function and supplied synthetic records:&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="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"A"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"pass"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"note"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"a"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"A"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"fail"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"note"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"b"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="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;The function groups by identity, serializes each complete raw record with sorted keys, and chooses the lexicographically smaller representation. The note participates in that comparison before the status. Swapping the notes changes the selected result.&lt;/p&gt;

&lt;p&gt;Nothing establishes that the selected record is newer, better supported, or an authorized correction. The final summary retains only ID, name, and status, concealing the competing claim.&lt;/p&gt;

&lt;h2&gt;
  
  
  Controls matter
&lt;/h2&gt;

&lt;p&gt;We ran eight cases in two separate Node processes, also reversing every input. These are function outputs, not estimates of model reliability.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Synthetic condition&lt;/th&gt;
&lt;th&gt;Retained&lt;/th&gt;
&lt;th&gt;Duplicates&lt;/th&gt;
&lt;th&gt;Output&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Different IDs, one pass and one fail&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;50%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Same ID, identical pass records&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Same ID; pass note=a, fail note=b&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Same outcomes; notes exchanged&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Same ID, pass/fail without notes&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Same case_id, different run_id, no record ID&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Same runs with separate record IDs&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;50%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ID present, outcome missing&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;unknown=1; rate field 0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3ftfoif4dl4q2fmslxuo.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%2F3ftfoif4dl4q2fmslxuo.png" alt="Figure: schematic of the saved observations discussed above. Arrows show the stated processing relationship, not a runtime screenshot. Source: accompanying experimental evidence." width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 1. schematic of the saved observations discussed above. Arrows show the stated processing relationship, not a runtime screenshot. Source: accompanying experimental evidence.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Both rounds agreed. Identical replay is correctly deduplicated, so abandoning deduplication would miss the point. The issue is treating replay and contradictory claims as the same category.&lt;/p&gt;

&lt;p&gt;The missing-outcome control is equally important: the function preserves &lt;code&gt;unknown&lt;/code&gt;. Its rate includes that record in the denominator, producing zero; that does not establish a confirmed test failure.&lt;/p&gt;

&lt;h2&gt;
  
  
  A test case is not a test run
&lt;/h2&gt;

&lt;p&gt;The helper accepts &lt;code&gt;case_id&lt;/code&gt; as an identity fallback and does not include &lt;code&gt;run_id&lt;/code&gt;. Two observations of one case can therefore collapse when distinct record IDs are absent. With explicit record IDs, both observations survive.&lt;/p&gt;

&lt;p&gt;This is an input-contract finding, not proof that production repeated runs were lost. Our source search found the helper and its tests, but no production consumer in the searched JavaScript and TypeScript roots.&lt;/p&gt;

&lt;p&gt;Before asking how many repeated measurements establish stability, check that repetitions remain separate observations. An &lt;a href="https://github.com/yzhao062/awesome-auditable-ai/commit/3df29d2ae81d550dbe72a8d4a46dc3267c627413" rel="noopener noreferrer"&gt;awesome-auditable-ai curation commit&lt;/a&gt; carefully narrowed claims about repeated-query research rather than endorsing a universal repeat count. We cite that editorial decision; we did not reproduce those statistical methods.&lt;/p&gt;

&lt;h2&gt;
  
  
  What should enter development review
&lt;/h2&gt;

&lt;p&gt;Three cases deserve distinct contracts: identical replay, conflicting content under one record identity, and separate runs of one test. Preserve conflicting sources and expose disagreement instead of selecting a business outcome by note order. “Failure wins” would still be an unsupported selection rule unless explicitly justified.&lt;/p&gt;

&lt;p&gt;The local helper is now the subject of a development-review submission. Consumer reachability, compatibility, and whether to retain the helper come first; no production incident or completed fix is claimed.&lt;/p&gt;

&lt;p&gt;The evidence covers one historical change record, the actual helper at &lt;code&gt;c008d9db91a21136fc61a4f60314e22db395d5d2&lt;/code&gt;, and eight synthetic cases. See the accompanying &lt;a href="https://joinwell52-ai.github.io/joinwell52/en/research/evidence/2026-09-09-verification-evidence" rel="noopener noreferrer"&gt;evidence guide&lt;/a&gt;. Product-source disclosure remains separately reviewed.&lt;/p&gt;

&lt;p&gt;Determinism tells us whether an answer repeats. Conflict preservation tells us whether a single answer is justified at all.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/en/engineering/2026-09-09-deterministic-conflict" rel="noopener noreferrer"&gt;Original English article&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/zh/engineering/2026-09-09-deterministic-conflict" rel="noopener noreferrer"&gt;中文版本&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/" rel="noopener noreferrer"&gt;Research Center&lt;/a&gt; · &lt;a href="https://github.com/joinwell52-AI/joinwell52" rel="noopener noreferrer"&gt;Research repository&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>testing</category>
      <category>security</category>
      <category>architecture</category>
    </item>
    <item>
      <title>The Check Passed. What Still Has to Hold When the Agent Acts?</title>
      <dc:creator>joinwell52</dc:creator>
      <pubDate>Tue, 08 Sep 2026 07:22:38 +0000</pubDate>
      <link>https://dev.to/joinwell52/the-check-passed-what-still-has-to-hold-when-the-agent-acts-3odp</link>
      <guid>https://dev.to/joinwell52/the-check-passed-what-still-has-to-hold-when-the-agent-acts-3odp</guid>
      <description>&lt;p&gt;When a file operation is approved, its source contains A. Must it still contain A when the executor reads it?&lt;/p&gt;

&lt;p&gt;That sounds like a filesystem detail, but agents routinely cross delays: approval, queuing, resource availability, and execution. If an object or condition changes along the way, what does an earlier successful check still permit?&lt;/p&gt;

&lt;p&gt;A natural response is to check again, closer to execution. That is useful, but incomplete without another question: &lt;strong&gt;what was checked, and what can change between that check and the actual effect?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We compared external proposals for start admission and exact file updates with a controlled timing experiment using CodeFlowMu’s real approval service and file executor. We did not reproduce a production concurrency incident. The post-check change was explicitly injected by the research code.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. “Before execution” can refer to different objects
&lt;/h2&gt;

&lt;p&gt;Paperclip is an open-source system for organizing agent work and runs. Its still-open &lt;a href="https://github.com/paperclipai/paperclip/pull/12949" rel="noopener noreferrer"&gt;PR #12949&lt;/a&gt; proposes capacity admission after a run is claimed but before adapter startup. Observation and enforcement modes have different effects. This remains proposed functionality, not a delivered guarantee.&lt;/p&gt;

&lt;p&gt;A capacity decision about starting a run is not authorization for every later file operation inside that run. Those operations have their own objects and conditions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/github/github-mcp-server/pull/3232" rel="noopener noreferrer"&gt;GitHub MCP Server Draft PR #3232&lt;/a&gt; operates at another level: a particular repository file change. MCP exposes external operations as agent tools; this proposal binds an exact text update to expected branch and file-object identifiers.&lt;/p&gt;

&lt;p&gt;The distinction is not a ranking of which project is safer. One concerns a run’s startup conditions; the other concerns a concrete repository mutation. Calling both a “gate” can hide their different responsibilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Moving the source change across the check
&lt;/h2&gt;

&lt;p&gt;CodeFlowMu is a local multi-agent collaboration system we are developing. Its controlled file-operation requests include workspace and task identity, plus source and destination snapshots. Before execution, the current request is rebuilt and its digest is compared with the approved request. The digest is a fingerprint of the structured input, not a lock on the underlying file.&lt;/p&gt;

&lt;p&gt;Earlier work had already shown that a changed destination can invalidate approval. Here we asked a different question: does changing source contents at different times produce the same outcome?&lt;/p&gt;

&lt;p&gt;Using real components at commit &lt;code&gt;c008d9db91a21136fc61a4f60314e22db395d5d2&lt;/code&gt;, we ran two copying scenarios. Both began with an existing destination and explicitly allowed overwrite. Overwrite was therefore not the disputed condition; the difference was when the source changed relative to digest validation.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Comparison&lt;/th&gt;
&lt;th&gt;When the source changed&lt;/th&gt;
&lt;th&gt;Result, identical in both rounds&lt;/th&gt;
&lt;th&gt;Filesystem effect&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Before validation&lt;/td&gt;
&lt;td&gt;After approval, before rebuilding and checking the current request&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;APPROVAL_STALE&lt;/code&gt;; execution callback entered zero times&lt;/td&gt;
&lt;td&gt;Original destination preserved&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;After validation&lt;/td&gt;
&lt;td&gt;Inside the research callback after approval validation, before calling the real executor&lt;/td&gt;
&lt;td&gt;Recorded as succeeded; callback entered once&lt;/td&gt;
&lt;td&gt;Destination received changed source contents&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The intervention in the second row is important. We did not observe a real user winning a race. After the approval service entered its execution callback, research code changed a synthetic source file, then called the existing product copy function. That point was deliberately controlled by the probe; we have not established equivalent control through an online interface.&lt;/p&gt;

&lt;p&gt;The first row supports an existing protection. The second establishes behavior of the tested function composition under an injected sequence. Neither establishes who could change the source in a deployment, which ingress permits the same interleaving, or its likelihood.&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%2Fkqacpte5gum0cg3t6s4d.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%2Fkqacpte5gum0cg3t6s4d.png" alt="E4 refuses a pre-check source change; E5 copies bytes changed by a post-check research injection" width="799" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 1. E4/E5 timing comparison, two rounds each, with overwrite allowed in both. E5 explicitly injects the change after validation; it is not a reproduced production race. Source: formal controlled-study records; see the &lt;a href="https://joinwell52-ai.github.io/joinwell52/en/research/evidence/2026-09-07-last-check-effect-boundary" rel="noopener noreferrer"&gt;evidence notes&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/assets/last-check-boundary-20260907/02-check-timing.en.png" rel="noopener noreferrer"&gt;Open full-resolution figure&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The digest was correct—for the input it described
&lt;/h2&gt;

&lt;p&gt;The approval service receives a current request and compares its digest with the approved one. On a match it records execution as in progress, then invokes the executor callback. The copy executor subsequently reads the source path.&lt;/p&gt;

&lt;p&gt;In the first scenario, rebuilding the request observes the changed source snapshot. Validation rejects it before callback entry.&lt;/p&gt;

&lt;p&gt;In the second, validation has already completed. The executor opens the same path, but the bytes there have changed. The approved source snapshot identifies &lt;code&gt;source-before&lt;/code&gt;; the destination contains &lt;code&gt;source-after&lt;/code&gt;, with a different digest. Both formal rounds produced that result.&lt;/p&gt;

&lt;p&gt;There is no need to suppose a hash failure. The digest correctly describes the checked representation; it cannot prevent the mutable object behind that representation from changing afterward.&lt;/p&gt;

&lt;p&gt;This is the time relationship studied under TOCTOU—time of check to time of use. Naming that relationship does not establish an exploitable race in a production path. &lt;strong&gt;A snapshot describes facts; it does not freeze them by itself.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Likewise, publishing a destination through a temporary file and rename can address one class of write-publication problem. It does not independently establish that the source bytes are still the approved ones.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Preconditions need a corresponding commit rule
&lt;/h2&gt;

&lt;p&gt;The GitHub proposal connects expected identifiers with commit construction and a non-forced branch update. That is more specific than a preflight warning. However, rejecting non-fast-forward updates is not proof of strict compare-and-swap behavior under every branch movement or rewind. The author also reports not running the complete Go suite in their environment; we performed no remote integration rerun. Its result already includes before/after identifiers. The downstream question is whether callers preserve and bind that receipt. &lt;a href="https://github.com/github/github-mcp-server/pull/3232" rel="noopener noreferrer"&gt;Proposal and limitations&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Paperclip raises a separate applicability question: reattaching work already started is not the same as admitting a new start. Capacity should also correspond to the provider and model actually selected. Those issues appear in the &lt;a href="https://github.com/paperclipai/paperclip/pull/12949" rel="noopener noreferrer"&gt;proposal’s review discussion&lt;/a&gt;; we did not independently rerun its recovery or database-concurrency scenarios.&lt;/p&gt;

&lt;p&gt;These designs illuminate our experiment without validating it on our behalf. A Git branch update is not a local copy; capacity admission is not operation approval. The common question is narrower: &lt;strong&gt;do validation, execution, and commit still refer to the same object and conditions?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Investigate the remaining interval before building a framework
&lt;/h2&gt;

&lt;p&gt;Adding another check is not automatically sufficient: a change can occur after that check too, and different resources need different mechanisms.&lt;/p&gt;

&lt;p&gt;First establish:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;What was approved?&lt;/strong&gt; A path, exact bytes, a version, or a combination?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What does the effect consume?&lt;/strong&gt; Bound data, or a fresh read of a mutable path or configuration?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What preserves the condition through commit?&lt;/strong&gt; Exclusive ownership, a conditional update, an immutable object, or only a prior observation?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What happens when conditions change?&lt;/strong&gt; Zero-effect refusal, partial effects, and insufficient evidence are different outcomes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A real-ingress experiment should include unchanged input, changes before checking, and changes after checking. Record source/destination digests, actual invocations, and receipts. Legitimate operations must still work. A refusal should be checked against resulting bytes, not merely an error message.&lt;/p&gt;

&lt;p&gt;Our present result supports further investigation of the registered call path and filesystem competition. It does not authorize a general transaction engine or establish a live race vulnerability. Where a host, storage system, or executor already provides conditional-commit guarantees, investigate reuse before duplicating them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reliable execution requires more than “we checked before acting.” It requires an explanation of why the checked conditions still hold when the effect occurs.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Evidence and limits
&lt;/h2&gt;

&lt;p&gt;This article uses E4/E5, twice each: four observations. Together with the companion article’s E0–E3, they make one twelve-observation formal batch. The &lt;a href="https://joinwell52-ai.github.io/joinwell52/en/research/evidence/2026-09-07-last-check-effect-boundary" rel="noopener noreferrer"&gt;English evidence guide&lt;/a&gt;, &lt;a href="https://joinwell52-ai.github.io/joinwell52/assets/last-check-boundary-20260907/evidence/observations.json" rel="noopener noreferrer"&gt;de-identified observations&lt;/a&gt;, and &lt;a href="https://joinwell52-ai.github.io/joinwell52/zh/research/evidence/2026-09-07-last-check-effect-boundary" rel="noopener noreferrer"&gt;Chinese guide&lt;/a&gt; are publicly provided with this article.&lt;/p&gt;

&lt;p&gt;The pilot also used no-overwrite in the timing cases, mixing two questions. The formal rerun allowed overwrite in both, isolating the timing comparison. Pilot records were retained but excluded from formal counts.&lt;/p&gt;

&lt;p&gt;This is a Windows study of real product components with injected ordering—not live HTTP, panel, agent, multi-process contention, or remote GitHub mutation. Checking the records is distinct from rerunning the product. The writing stage performed no additional product experiment, code modification, independent QA, or repair.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/en/engineering/2026-09-07-check-to-effect-interval" rel="noopener noreferrer"&gt;Original English article&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/zh/engineering/2026-09-07-check-to-effect-interval" rel="noopener noreferrer"&gt;中文版&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/joinwell52-AI/joinwell52" rel="noopener noreferrer"&gt;Research repository&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>testing</category>
      <category>backend</category>
      <category>architecture</category>
    </item>
    <item>
      <title>The Request Said “Do Not Overwrite.” Why Was the File Replaced?</title>
      <dc:creator>joinwell52</dc:creator>
      <pubDate>Tue, 08 Sep 2026 07:22:30 +0000</pubDate>
      <link>https://dev.to/joinwell52/the-request-said-do-not-overwrite-why-was-the-file-replaced-1dlk</link>
      <guid>https://dev.to/joinwell52/the-request-said-do-not-overwrite-why-was-the-file-replaced-1dlk</guid>
      <description>&lt;p&gt;We put a no-overwrite restriction into a file-operation request. The approval record preserved it.&lt;/p&gt;

&lt;p&gt;The destination was replaced anyway.&lt;/p&gt;

&lt;p&gt;This was a controlled experiment with synthetic files, not a customer data-loss incident. The useful surprise was the comparison: with &lt;code&gt;overwrite=false&lt;/code&gt;, writing refused an existing destination, but copying and moving succeeded and replaced its contents.&lt;/p&gt;

&lt;p&gt;The approval record alone suggested that the restriction was explicit. The completion receipt alone suggested that the operation worked. Only when we compared both with the resulting bytes did the question become unavoidable: &lt;strong&gt;which component actually enforced “do not overwrite”?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Following a parameter all the way to the file
&lt;/h2&gt;

&lt;p&gt;CodeFlowMu is a local multi-agent collaboration system we are developing. It organizes work through task files, execution sessions, and evidence. Its controlled workspace operations construct a concrete request, obtain one-time approval, check the request at execution, and delegate to a filesystem executor.&lt;/p&gt;

&lt;p&gt;Our question was not whether approval could be bypassed. It was whether a restriction already inside the approval chain retained its meaning at the final operation.&lt;/p&gt;

&lt;p&gt;The experiment used the real request builder, approval service, and filesystem executor. Each scenario created synthetic files in a fresh isolated directory and received a research-only administrative approval through the service. We did not invoke the live panel or let an agent touch business files.&lt;/p&gt;

&lt;p&gt;At source commit &lt;code&gt;c008d9db91a21136fc61a4f60314e22db395d5d2&lt;/code&gt;, we ran four scenarios twice:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Restriction&lt;/th&gt;
&lt;th&gt;Result, identical in both rounds&lt;/th&gt;
&lt;th&gt;Filesystem observation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Write to an absent destination&lt;/td&gt;
&lt;td&gt;No overwrite&lt;/td&gt;
&lt;td&gt;Succeeded&lt;/td&gt;
&lt;td&gt;New contents written&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Write to an existing destination&lt;/td&gt;
&lt;td&gt;No overwrite&lt;/td&gt;
&lt;td&gt;Refused; operation recorded as failed&lt;/td&gt;
&lt;td&gt;Original contents preserved&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Copy to an existing destination&lt;/td&gt;
&lt;td&gt;No overwrite&lt;/td&gt;
&lt;td&gt;Succeeded&lt;/td&gt;
&lt;td&gt;Destination replaced; source retained&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Move to an existing destination&lt;/td&gt;
&lt;td&gt;No overwrite&lt;/td&gt;
&lt;td&gt;Succeeded&lt;/td&gt;
&lt;td&gt;Destination replaced; source moved&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The second row is essential. The write executor already has a working protection; the copy and move results do not justify saying that every file operation ignores overwrite constraints. The first row matters too: refusing more operations is not inherently correct. A legitimate new file should still be created.&lt;/p&gt;

&lt;p&gt;These eight observations establish a difference between tested interfaces, not a production incident rate.&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%2Fr108o4vdqwmkibsln3b7.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%2Fr108o4vdqwmkibsln3b7.png" alt="Observed write, copy and move outcomes with the same no-overwrite flag" width="800" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 1. Explanatory rendering of E0–E3, two rounds each, retaining both the legitimate-creation and refusal controls. This is not an experiment screenshot; Source: formal controlled-study records; see the &lt;a href="https://joinwell52-ai.github.io/joinwell52/en/research/evidence/2026-09-07-last-check-effect-boundary" rel="noopener noreferrer"&gt;evidence notes&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/assets/last-check-boundary-20260907/01-executor-comparison.en.png" rel="noopener noreferrer"&gt;Open full-resolution figure&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The restriction survived. Its enforcement did not follow every branch
&lt;/h2&gt;

&lt;p&gt;We traced the parameter through the code. The shared workspace input includes &lt;code&gt;overwrite&lt;/code&gt;; the builder puts it in the approval request, and reconstruction from the approval record preserves it. Both copy and move records retained &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The result was therefore not caused by a model omitting the flag, or by transmission turning false into true.&lt;/p&gt;

&lt;p&gt;The difference appears in the final executor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The write branch checks whether the destination exists and overwrite is explicitly forbidden. It raises &lt;code&gt;target_exists_and_overwrite_is_false&lt;/code&gt; and preserves the bytes.&lt;/li&gt;
&lt;li&gt;The copy branch calls the file-copy operation without using that flag in the branch.&lt;/li&gt;
&lt;li&gt;The move branch calls the rename operation without using it either.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On the tested Windows system, the latter two operations replaced the destination. We read the actual result; this is not an inference based only on function names.&lt;/p&gt;

&lt;p&gt;An approval digest can establish that an execution request matches its approved representation. It cannot, by itself, establish that the executor implements every restriction in that representation. A faithfully stored field does not enforce itself.&lt;/p&gt;

&lt;p&gt;We also distinguished callback entry from operation outcome. The refused write entered the callback, then its exception was recorded as a failed operation. Copy and move were recorded as successful. A research process exiting normally is not proof that every product contract passed acceptance.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. A “create file” proposal raises a related question
&lt;/h2&gt;

&lt;p&gt;OpenAI Agents SDK is a library for building agent applications. In its still-open &lt;a href="https://github.com/openai/openai-agents-python/pull/4893" rel="noopener noreferrer"&gt;PR #4893&lt;/a&gt;, an author reports a create operation replacing an existing file and proposes an absence check. We did not independently rerun that work.&lt;/p&gt;

&lt;p&gt;That restriction comes from the operation’s definition; ours comes from an explicit request parameter. Both ask whether the effect promised to the caller is enforced where the file changes. Neither implies that all write operations should become create-only.&lt;/p&gt;

&lt;p&gt;A separate, also-open &lt;a href="https://github.com/openai/openai-agents-python/pull/4894" rel="noopener noreferrer"&gt;PR #4894&lt;/a&gt; addresses delimiters inside mount-option inputs. It is a reminder that validating a permission and preserving a parameter’s meaning are separate responsibilities.&lt;/p&gt;

&lt;p&gt;External cases illuminate the question. They neither reproduce our result nor prove that our product shares their complete failure paths.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Fix the executor—or first narrow the interface?
&lt;/h2&gt;

&lt;p&gt;The tempting next step is to add a condition. Before choosing that implementation, we need to settle the contract: &lt;strong&gt;which operations is no-overwrite supposed to constrain?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If the product contract applies it to write, copy, and move, the latter branches need to enforce it with an appropriate filesystem operation. If the guarantee must also hold under concurrency, sequential checks are insufficient evidence; the interval between checking and writing needs its own tests.&lt;/p&gt;

&lt;p&gt;If the flag is write-only, copy and move should reject it as inapplicable, or use input types that prevent the ambiguity. Silently accepting it into an approval record invites callers to rely on a restriction that does nothing.&lt;/p&gt;

&lt;p&gt;We confirmed reproducible behavior at the internal controlled-request boundary. Static inspection also found the executor registrations wired to the shared preparation and execution functions. We have not completed the public-ingress investigation: which callers can pass the flag, how the interface presents it, and whether it is formally specified as a shared restriction.&lt;/p&gt;

&lt;p&gt;This warrants a narrow contract review. It is not a demonstrated live privilege bypass, and no fix has been implemented. The study did not change product code or authorize a new general-purpose permission framework.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Test how restrictions fail, not just whether approval succeeds
&lt;/h2&gt;

&lt;p&gt;For each important restriction, record where it enters, where approval binds it, which executor branches consume it, what rejection looks like, and whether the original object remains unchanged.&lt;/p&gt;

&lt;p&gt;Tests should come in pairs: a legitimate case that completes, and a prohibited case that is refused without producing the forbidden effect. Checking only an error string can miss another false protection: modifying the file first and reporting an error afterward.&lt;/p&gt;

&lt;p&gt;Test each operation mode separately. A positive write test does not cover copy and move. Shared input types do not establish shared enforcement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recording a restriction creates an audit trail. Enforcing it creates the capability a caller can actually rely on.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Evidence and limits
&lt;/h2&gt;

&lt;p&gt;This article uses E0–E3, twice each, from the formal dataset. The companion article uses different rows from the same research batch. The &lt;a href="https://joinwell52-ai.github.io/joinwell52/en/research/evidence/2026-09-07-last-check-effect-boundary" rel="noopener noreferrer"&gt;English evidence guide&lt;/a&gt;, &lt;a href="https://joinwell52-ai.github.io/joinwell52/assets/last-check-boundary-20260907/evidence/observations.json" rel="noopener noreferrer"&gt;de-identified observations&lt;/a&gt;, and &lt;a href="https://joinwell52-ai.github.io/joinwell52/zh/research/evidence/2026-09-07-last-check-effect-boundary" rel="noopener noreferrer"&gt;Chinese guide&lt;/a&gt; are publicly provided with this article.&lt;/p&gt;

&lt;p&gt;All files were synthetic and isolated. There is no production loss-rate sample, live HTTP/panel/agent end-to-end test, or multi-process overwrite-race test. Findings are bounded by the pinned source and Windows environment. Record-integrity checks are not product reruns or independent QA. No repair, merge, or release is claimed.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/en/engineering/2026-09-07-no-overwrite-executor-contract" rel="noopener noreferrer"&gt;Original English article&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/zh/engineering/2026-09-07-no-overwrite-executor-contract" rel="noopener noreferrer"&gt;中文版&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/joinwell52-AI/joinwell52" rel="noopener noreferrer"&gt;Research repository&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>testing</category>
      <category>backend</category>
      <category>architecture</category>
    </item>
    <item>
      <title>The Receipt Was Corrupted. Why Didn't the Task Start Again?</title>
      <dc:creator>joinwell52</dc:creator>
      <pubDate>Tue, 08 Sep 2026 07:16:16 +0000</pubDate>
      <link>https://dev.to/joinwell52/the-receipt-was-corrupted-why-didnt-the-task-start-again-329k</link>
      <guid>https://dev.to/joinwell52/the-receipt-was-corrupted-why-didnt-the-task-start-again-329k</guid>
      <description>&lt;p&gt;We deliberately corrupted a command's completion record and submitted the same command again. The system did call the function responsible for execution a second time.&lt;/p&gt;

&lt;p&gt;But do two function calls necessarily start the task twice? Once we connected the function to the product's actual dispatcher, the answer was no. The simulated execution interface still started only once, leaving one execution-attempt record.&lt;/p&gt;

&lt;p&gt;Counting function calls alone could easily lead to a premature conclusion of duplicate task execution.&lt;/p&gt;

&lt;p&gt;We call that function the execution callback below. The simulated interface replaces the SDK through which the runtime connects to a model. It simulates a start in memory, without a real model, payment, email or code push.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Another callback is not another start. Another start is not, by itself, evidence of a duplicated external effect.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is not an account of a production duplicate-dispatch incident. It is how counterexamples made us withdraw a premature engineering conclusion.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Why can a receipt affect the next execution?
&lt;/h2&gt;

&lt;p&gt;CodeFlowMu is our local multi-agent collaboration system. FCoP organizes task identity and business records; the runtime handles dispatch, sessions and technical execution.&lt;/p&gt;

&lt;p&gt;When a user asks to retry a task, the system must both handle the command and record its processing. A response may be lost or a process restarted. On seeing the same request later, the system must distinguish a new command from one already handled.&lt;/p&gt;

&lt;p&gt;An idempotency key identifies the same intent. A command receipt is typically recorded as &lt;code&gt;pending&lt;/code&gt; while being processed, then appended as &lt;code&gt;completed&lt;/code&gt; when a result exists. Receiving the same key again can return the old result instead of repeating the operation.&lt;/p&gt;

&lt;p&gt;We first inspected selected historical files to avoid mistaking event counts for incidents.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Historical sample read September 8&lt;/th&gt;
&lt;th&gt;Count&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Task-command receipt rows&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Distinct idempotency keys&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pending / completed&lt;/td&gt;
&lt;td&gt;5 / 5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Malformed / exactly duplicated rows&lt;/td&gt;
&lt;td&gt;0 / 0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The records were from September 5. Ten rows represented state events for five commands, not five duplicate dispatches. They did not contain the corruption later injected by the experiment.&lt;/p&gt;

&lt;p&gt;We therefore asked in isolated fixtures: &lt;strong&gt;if a completion receipt can no longer be read, how does the system judge the same retry request?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. First round: the bytes remain, but the readable state moves backward
&lt;/h2&gt;

&lt;p&gt;The current receipt reader searches lines in reverse order. It skips an unparseable line or a record with an unrecognized schema version, continuing to a readable match.&lt;/p&gt;

&lt;p&gt;This tolerates unrelated bad lines, but it also means that a damaged completion may reveal an older pending receipt. If both target records are unreadable, the reader may return &lt;code&gt;null&lt;/code&gt;: no usable record found.&lt;/p&gt;

&lt;p&gt;Neither the inspected code nor the experiment showed the reader deleting original bytes. The difference concerns the evidence available to the caller, not what remains on disk.&lt;/p&gt;

&lt;p&gt;To isolate this behavior, we used the real command kernel and receipt store, a fixed governance snapshot permitting retry, and a counting executor. Each retry created a new kernel instance so the previous instance's memory cache could not supply the answer.&lt;/p&gt;

&lt;p&gt;Read the table for three patterns first: &lt;strong&gt;intact receipts allow replay; damaged target receipts can lead to another call; downstream deduplication can still coalesce the effect.&lt;/strong&gt; The other controls test the conditions under which those statements hold.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Controlled condition&lt;/th&gt;
&lt;th&gt;Second read or handling result&lt;/th&gt;
&lt;th&gt;Cumulative callbacks / synthetic effects&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Intact completion&lt;/td&gt;
&lt;td&gt;Reuses completed result&lt;/td&gt;
&lt;td&gt;1 / 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unrelated malformed line only&lt;/td&gt;
&lt;td&gt;Still reuses target completion&lt;/td&gt;
&lt;td&gt;1 / 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Damaged completion, intact pending&lt;/td&gt;
&lt;td&gt;Enters callback again&lt;/td&gt;
&lt;td&gt;2 / 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Both target receipts damaged&lt;/td&gt;
&lt;td&gt;No usable receipt; enters callback again&lt;/td&gt;
&lt;td&gt;2 / 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Both damaged, current revision changed&lt;/td&gt;
&lt;td&gt;Rejects stale revision&lt;/td&gt;
&lt;td&gt;1 / 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reader explicitly throws&lt;/td&gt;
&lt;td&gt;Store unavailable; no further call&lt;/td&gt;
&lt;td&gt;1 / 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Completion changed to unsupported version&lt;/td&gt;
&lt;td&gt;Finds older pending; enters callback again&lt;/td&gt;
&lt;td&gt;2 / 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Damaged completion, intact pending, revision changed&lt;/td&gt;
&lt;td&gt;Detects state advance; no further call&lt;/td&gt;
&lt;td&gt;1 / 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Damaged completion, executor deduplicates same key&lt;/td&gt;
&lt;td&gt;Callback repeats; effect is coalesced&lt;/td&gt;
&lt;td&gt;2 / 1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The explicit reader error was an injected counterexample, not a claim that the current reader reports corruption this way. The unsupported version was also synthetic. The last row's deduplication set lived in the experiment's memory, not a durable database.&lt;/p&gt;

&lt;p&gt;The first-round conclusion therefore stops at the call boundary: &lt;strong&gt;without an explicit read-anomaly signal, the real kernel can call the executor again; whether the effect repeats depends on that executor.&lt;/strong&gt; The existing kernel already permits retries from pending when the revision is unchanged, expecting downstream work to coalesce under the same key.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Second round: measure whether another execution actually starts
&lt;/h2&gt;

&lt;p&gt;Instead of merely incrementing a counter, the second-round callback entered the product's actual task-starting flow. Components responsible for dispatch, attempt persistence, task lifecycle and sessions all came from the current product implementation.&lt;/p&gt;

&lt;p&gt;A fixed governance snapshot permitted retry so the request could reach that layer. The final execution interface was still the in-memory substitute described above. We did not issue a request through the web interface: research code passed the same key and dispatch arguments following the web service's retry logic. This exercised actual dispatch components, not the entire web entrance end to end.&lt;/p&gt;

&lt;p&gt;This answers a narrower question closer to execution: &lt;strong&gt;does the real dispatch chain turn the repeated call into another attempt and another SDK start?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every scenario first confirmed that an execution started, then damaged isolated receipts and performed the second step. Counts include that first execution. &lt;strong&gt;Look first for two outcomes: original-key scenarios did not start again; the new-key control could start.&lt;/strong&gt; The intervening rows distinguish cancellation, revision changes and concurrency.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Change&lt;/th&gt;
&lt;th&gt;Second result&lt;/th&gt;
&lt;th&gt;Cumulative SDK starts / attempts&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;I0&lt;/td&gt;
&lt;td&gt;Intact receipts&lt;/td&gt;
&lt;td&gt;Receipt-level replay&lt;/td&gt;
&lt;td&gt;1 / 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I1&lt;/td&gt;
&lt;td&gt;Completion corrupted&lt;/td&gt;
&lt;td&gt;Already dispatched&lt;/td&gt;
&lt;td&gt;1 / 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I2&lt;/td&gt;
&lt;td&gt;Both target receipts corrupted&lt;/td&gt;
&lt;td&gt;Already dispatched&lt;/td&gt;
&lt;td&gt;1 / 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I3&lt;/td&gt;
&lt;td&gt;I2, new process reads original disk state&lt;/td&gt;
&lt;td&gt;Already dispatched&lt;/td&gt;
&lt;td&gt;1 / 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I4&lt;/td&gt;
&lt;td&gt;I2, cancel original session, retry original key&lt;/td&gt;
&lt;td&gt;Already dispatched&lt;/td&gt;
&lt;td&gt;1 / 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I5&lt;/td&gt;
&lt;td&gt;I2, governance revision changed&lt;/td&gt;
&lt;td&gt;Kernel rejects stale revision&lt;/td&gt;
&lt;td&gt;1 / 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I6&lt;/td&gt;
&lt;td&gt;I2, eight kernels concurrently call one dispatcher&lt;/td&gt;
&lt;td&gt;All eight return already dispatched&lt;/td&gt;
&lt;td&gt;1 / 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I7&lt;/td&gt;
&lt;td&gt;Cancel, then use a new command key&lt;/td&gt;
&lt;td&gt;New attempt and start&lt;/td&gt;
&lt;td&gt;2 / 2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fygs3y0cicwkenrpqb0cs.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%2Fygs3y0cicwkenrpqb0cs.png" alt="I2 repeats the callback without a second SDK start; I7 changes the command key and creates another attempt." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 1. Cumulative counts include the first execution. The protection layers listed are not a claim that I2 traversed every check. Synthetic SDK starts are not external effects. Source: &lt;a href="https://joinwell52-ai.github.io/joinwell52/en/research/evidence/2026-09-08-principal-receipt" rel="noopener noreferrer"&gt;formal I2/I7 observations and boundaries&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/assets/forum-four-boundary-20260908/2026-09-08-corrupt-receipt-dispatch-counterexample-figure-1.en.png" rel="noopener noreferrer"&gt;Open full-size figure&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I1 and I2 correct the most dangerous extrapolation from round one. The receipt could no longer tell the kernel that processing had completed, but session and lease evidence still told the dispatcher not to start again.&lt;/p&gt;

&lt;p&gt;I4 adds that cancelling a session does not turn the same command into a new one. Actual reconciliation moved the old attempt to a terminal state. The same key continued to reuse that attempt without another start. Here, the internal phrase “already dispatched” must not be translated as “the old process is still running.”&lt;/p&gt;

&lt;p&gt;I7 is an essential control. Without it, readers could suspect the system simply never executes anything. With a different key, the new command allowed by synthetic governance created a second attempt. That is not a same-key duplicate effect, and it does not mean changing a key grants human authority. We did not test the complete authentication and approval interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The second start was not stopped by one all-powerful receipt
&lt;/h2&gt;

&lt;p&gt;The source explains the observations.&lt;/p&gt;

&lt;p&gt;First, the dispatcher checks sessions and active execution leases for the current task and round. A lease describes execution occupancy: who holds which attempt for a task. It is not a business conclusion that the task is complete. Existing sessions or active occupancy should not naturally grant another start merely because dispatch is entered again.&lt;/p&gt;

&lt;p&gt;Second, the attempt store reuses records by idempotency key. &lt;code&gt;offer()&lt;/code&gt; finds or proposes an attempt; &lt;code&gt;claim()&lt;/code&gt; tries to acquire occupancy. These are not equivalent to “one call, one start.” Terminal attempts and conflicting leases have their own rejection conditions.&lt;/p&gt;

&lt;p&gt;Finally, one dispatcher serializes redispatch for the same task. Preventing duplicate attempt records alone would not prevent two flows from simultaneously changing task placement. I6 therefore tests the single-instance protection around the larger operation.&lt;/p&gt;

&lt;p&gt;I3 exposes a detail worth explaining. The new process has no old in-memory running handle, but the session list still reads a durable &lt;code&gt;running&lt;/code&gt; record, and the lease remains. This conservatively blocks a second start. &lt;strong&gt;It does not establish that the original executor is alive or that work has recovered.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We did not run full startup recovery or simulate hardware power loss. “The new process retained existing occupancy evidence” accurately describes the result. “Power-loss recovery passed” would not.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Why external log repair cannot be imported as a local defect
&lt;/h2&gt;

&lt;p&gt;One starting point was Orca's session-log repair proposal. It addresses a different risk: repair deleting log content after a damaged position, while provider-side conversation history cannot reconstruct the application's own receipts.&lt;/p&gt;

&lt;p&gt;At the September 8 research snapshot, the proposal was still a draft. It preserves the original log, publishes the readable prefix as a new generation, and restricts writes for unsupported versions. This was not a released capability independently verified by us. &lt;a href="https://github.com/stablyai/orca/pull/19399" rel="noopener noreferrer"&gt;Orca #19399&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The two cases are not equivalent. Orca's proposal removes destructive repair; the reader in our experiment did not delete original text. The common concern is that recovery needs its own evidence. Reopening a conversation, or having the model remember it, does not establish that recovery's decision evidence stayed unchanged.&lt;/p&gt;

&lt;p&gt;Nor do all local stores skip bad input. The inspected single-record session store distinguishes missing files from corrupt ones. Corrupt operation approvals return an explicit error. These readers also preserve the original bytes. Such counterexamples prevent generalizing one JSONL reader into a claim that the whole system treats corruption as absence.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. The engineering question is read health, not a verdict of duplicate execution
&lt;/h2&gt;

&lt;p&gt;The second round did not remove the read-layer anomaly. A damaged completion can still leave the caller seeing only an older pending receipt or no usable record, without knowing that corruption lies behind that answer.&lt;/p&gt;

&lt;p&gt;Existing execution protections held in the tested scenarios, so the review question should be narrower: can the read result express both which record was found and whether reading was healthy? Should absence, corruption and unsupported versions carry distinct diagnostics? Which commands should those diagnostics affect, and which signals should support explanation or reconciliation only?&lt;/p&gt;

&lt;p&gt;This does not immediately prescribe stopping the whole system for one bad line. Unrelated damage, a usable target receipt, version compatibility and actual execution occupancy need separate handling. A blanket block could cut off recovery paths that already work.&lt;/p&gt;

&lt;p&gt;A reusable research method is to count each layer: original bytes retained, result read, callback entries, attempts created, executions started and external effects produced. Make conclusions only about the layer actually measured.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reliability research is not about proving a problem as quickly as possible. It is about locating the problem where a counterexample from the next layer can no longer overturn it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here, the callback arrived twice without starting the task again. Preserve the protections that worked; clarify the read anomaly that remains unexpressed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Research and evidence boundaries
&lt;/h2&gt;

&lt;p&gt;The fixed first-party source was &lt;code&gt;c008d9db91a21136fc61a4f60314e22db395d5d2&lt;/code&gt;, examined September 8. Round one contained 18 module controls. Round two contained eight dispatch scenarios and four identity probes. Each set had two formal runs. This article uses related subsets, not repetition counts as incident samples or a reliability percentage.&lt;/p&gt;

&lt;p&gt;All corruption was injected into isolated fixtures. Kernel, store, dispatch and session components were real; governance inputs and SDK were synthetic. No real external effects were tested. Eight-way concurrency shared one dispatcher in one process. The cross-process case was sequential handoff, not a cross-process write-lock test. Hardware power loss, all commands, all execution platforms and independent QA remain outside scope.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/en/research/evidence/2026-09-08-principal-receipt" rel="noopener noreferrer"&gt;English evidence guide&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/zh/research/evidence/2026-09-08-principal-receipt" rel="noopener noreferrer"&gt;Chinese guide&lt;/a&gt;. Sanitized per-run observations, source hashes, aggregate history and a record checker are public. The checker verifies saved observations, not a fresh execution of the product. Original operational records, complete before/after fixtures and full product replay remain access-restricted. The research changed no product code and authorized no recovery implementation.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/en/engineering/2026-09-08-corrupt-receipt-dispatch-counterexample" rel="noopener noreferrer"&gt;Original English article&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/zh/engineering/2026-09-08-corrupt-receipt-dispatch-counterexample" rel="noopener noreferrer"&gt;中文版&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/joinwell52-AI/joinwell52" rel="noopener noreferrer"&gt;Research repository&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>testing</category>
      <category>backend</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Same Agent, Different Person: Whose Permissions Should the Next Action Use?</title>
      <dc:creator>joinwell52</dc:creator>
      <pubDate>Tue, 08 Sep 2026 07:16:00 +0000</pubDate>
      <link>https://dev.to/joinwell52/same-agent-different-person-whose-permissions-should-the-next-action-use-422o</link>
      <guid>https://dev.to/joinwell52/same-agent-different-person-whose-permissions-should-the-next-action-use-422o</guid>
      <description>&lt;p&gt;A digital employee handles code for Alice, then accepts a new instruction from Bob. The conversation continues, the task is unchanged, and the same agent does the work.&lt;/p&gt;

&lt;p&gt;Whose permissions should it use for its next repository operation?&lt;/p&gt;

&lt;p&gt;This is an illustrative situation, not an account incident we discovered. It sounds like switching a login, but it involves another timeline: Alice's action might already have started, Bob's instruction has just been accepted, and previously queued work may still belong to Alice.&lt;/p&gt;

&lt;p&gt;Always following the latest speaker could reassign an older instruction to the wrong person. Always retaining the credentials from agent startup could let a new instruction continue using the previous person's access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A session can continue without making responsibility and authority automatically continuous.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Paperclip changes operation-time identity, not just chat identity
&lt;/h2&gt;

&lt;p&gt;Paperclip is an open-source application for organizing and managing AI agent work. Its concrete problem is that several people can instruct the same agent on the same task. The task assignee is not necessarily the person responsible for the instruction behind the current action.&lt;/p&gt;

&lt;p&gt;A change merged on September 7, 2026 separates task ownership from execution identity and selects credentials when a managed GitHub operation begins. An action that has already started retains its captured identity. A retry without a new instruction must not switch identity merely because someone spoke later. The author reports switching tests involving two users and two GitHub accounts; we did not rerun those account tests. &lt;a href="https://github.com/paperclipai/paperclip/pull/13005" rel="noopener noreferrer"&gt;Paperclip #13005&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The boundary matters: this concerns credential selection for managed operations. It does not promise isolation from arbitrary code deliberately copying credentials within the same execution principal. &lt;a href="https://github.com/paperclipai/paperclip/pull/13005" rel="noopener noreferrer"&gt;Risk statement&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What is worth learning first is not the component count, but the separation of four questions:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;Identity or evidence needed&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Who executes the work?&lt;/td&gt;
&lt;td&gt;The agent's execution identity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Which instruction caused this action?&lt;/td&gt;
&lt;td&gt;A reference to the accepted instruction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Who is responsible for that instruction?&lt;/td&gt;
&lt;td&gt;An authenticated, policy-resolved person&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What access may this action actually use?&lt;/td&gt;
&lt;td&gt;Credentials and authority checked at the action boundary&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These can be connected, but similar names do not make them interchangeable. A developer role describes a responsibility, not which colleague issued an instruction. A message originating from Alice does not automatically establish Alice's authority to request its contents.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Does our own system actually have the same problem?
&lt;/h2&gt;

&lt;p&gt;CodeFlowMu is our locally running multi-agent collaboration system. FCoP task, report and review records organize its work. The runtime handles sessions and technical execution without replacing management roles' business decisions.&lt;/p&gt;

&lt;p&gt;It would be easy to see an external project's shared-identity feature and announce that we need the same feature. That skips the important question: what does our own evidence establish?&lt;/p&gt;

&lt;p&gt;We inspected selected local records on September 8. The records themselves were from September 5, not new incidents that day.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Selected data&lt;/th&gt;
&lt;th&gt;Actual unit&lt;/th&gt;
&lt;th&gt;What it tells us&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Operation approvals&lt;/td&gt;
&lt;td&gt;1 approval record&lt;/td&gt;
&lt;td&gt;The deciding role was ADMIN; this cannot estimate authenticated-person coverage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Task-command receipts&lt;/td&gt;
&lt;td&gt;10 rows for 5 idempotency keys&lt;/td&gt;
&lt;td&gt;Each key has processing and completed events; these are not 10 independent tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Skill invocations&lt;/td&gt;
&lt;td&gt;25 rows and 25 invocation IDs&lt;/td&gt;
&lt;td&gt;9 have nonempty session IDs; the remainder must be distinguished from legitimate sessionless work before judging them&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;No malformed rows appeared in this selection. Several explicitly named human-identity, instruction-responsibility and credential-grant fields were absent, but this describes the selected fields and records only. Other modules may hold equivalent information.&lt;/p&gt;

&lt;p&gt;The history therefore does not support a claim that cross-person credential misuse occurred. Its useful message is narrower: &lt;strong&gt;records describing operations, commands, roles and invocations cannot simply be read as an authenticated human responsibility chain.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The next question is not where to add a person's name, but whose identity the current request already binds.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. A different agent does not automatically inherit an old approval
&lt;/h2&gt;

&lt;p&gt;We called the actual operation approval service and saved its real record format. After approval checks pass, the service invokes a function to do the work: the execution callback. In this experiment, that function only counted calls instead of performing an operation. No repository was connected.&lt;/p&gt;

&lt;p&gt;A request digest is an operation-identity check: changing protected request contents should prevent an old approval from being used as though the request were unchanged.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Control&lt;/th&gt;
&lt;th&gt;Observation&lt;/th&gt;
&lt;th&gt;Supported interpretation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Check and execute the original request&lt;/td&gt;
&lt;td&gt;1 callback&lt;/td&gt;
&lt;td&gt;The basic allowed path works&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Change only the subject from one agent to another&lt;/td&gt;
&lt;td&gt;Digest changes; &lt;code&gt;APPROVAL_STALE&lt;/code&gt;; 0 callbacks&lt;/td&gt;
&lt;td&gt;An old approval cannot directly be used for another request subject&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Change only the session ID&lt;/td&gt;
&lt;td&gt;Same digest; 1 callback&lt;/td&gt;
&lt;td&gt;This digest excludes session identity; this does not authorize an entire takeover workflow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reuse a task-command key but change its submitting actor&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;idempotency_key_conflict&lt;/code&gt;; no second callback&lt;/td&gt;
&lt;td&gt;The command layer also checks actor differences&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The second round also called the real operation-policy builder instead of constructing the request entirely in research code. It derived &lt;code&gt;subject.actor&lt;/code&gt; from &lt;code&gt;agentId&lt;/code&gt;. Changing the agent changed the digest of the actual constructed request.&lt;/p&gt;

&lt;p&gt;The protection exists. It answers which agent submitted the operation, not which authenticated human is responsible for it. Those questions need a connection; one field does not inherently answer both.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The reproduced gap is much narrower than an incomplete identity system
&lt;/h2&gt;

&lt;p&gt;To decide whose permissions an action should use, we first need to know which instruction caused it. We therefore checked a more basic question: &lt;strong&gt;can the original instruction reference be followed all the way into the execution session?&lt;/strong&gt; This is one part of responsibility tracing, not a test of human authorization.&lt;/p&gt;

&lt;p&gt;Following the chat-continuation path revealed a placement difference. The message identifier reached the command, but &lt;strong&gt;it was saved when supplied at the outer level and absent from its session field when supplied inside continuation information.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Specifically, the continuation command retained a chat reference and placed the triggering message identifier, &lt;code&gt;trigger_chat_id&lt;/code&gt;, in continuation context. The dispatcher passed that nested context to the session manager. When persisting the triggering-message field, however, the session manager read only the top level.&lt;/p&gt;

&lt;p&gt;This is a simplified field-location illustration, not an additional experiment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;context.trigger_chat_id
    -&amp;gt; session.runtime_trigger_chat_id is saved

context.continuation.trigger_chat_id
    -&amp;gt; corresponding session field is not saved
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We placed the same source field at each location and called the actual session manager with an in-memory execution adapter instead of a real model.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Input placement&lt;/th&gt;
&lt;th&gt;Triggering message saved in session?&lt;/th&gt;
&lt;th&gt;Logical execution ID also supplied: saved?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Top-level context&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nested continuation context&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx95crsqhy97zy8j1r8q4.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%2Fx95crsqhy97zy8j1r8q4.png" alt="J1/J2 field projection: the nested triggering-message reference is absent, while both logical execution IDs are saved." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 1. J1/J2. Absence concerns one session field, not the loss of all chat or command provenance. Source: &lt;a href="https://joinwell52-ai.github.io/joinwell52/en/research/evidence/2026-09-08-principal-receipt" rel="noopener noreferrer"&gt;formal first-party observations and boundaries&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/assets/forum-four-boundary-20260908/2026-09-08-shared-agent-instruction-identity-figure-1.en.png" rel="noopener noreferrer"&gt;Open full-size figure&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The entire session record had not failed to save: the logical execution ID supplied in the same call was persisted. The missing item was the triggering message ID. The code matches the observation: it searches both locations for the logical execution ID, but only the top level for the triggering message.&lt;/p&gt;

&lt;p&gt;A separate isolated scenario started through the actual dispatcher also lacked the corresponding triggering-message field in its session record. The four identity probes produced consistent results in two formal runs.&lt;/p&gt;

&lt;p&gt;The confirmed gap is therefore specific: &lt;strong&gt;source information reached the command, but was not projected through the designated session field.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This relates to Paperclip's question without being the same problem. Chat and command evidence still retain references, so history has not disappeared. A message ID is not a human credential, so repairing this projection would not complete multi-person authorization.&lt;/p&gt;

&lt;p&gt;Its practical value is that a query depending on this session field might see no source reference without knowing that the previous layer received one. That hop deserves an explanation before building a chain from an operation back to its instruction.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Where should the research lead, rather than what should be built immediately?
&lt;/h2&gt;

&lt;p&gt;This research does not call for immediately rebuilding an identity platform. Retain existing agent-subject binding; review the source-reference handoff contract now; establish a separate requirement and authority boundary before adding shared credentials.&lt;/p&gt;

&lt;p&gt;The triggering-message projection difference is a narrow engineering-review topic: who supplies it, which entrances use nested context, how conflicting top-level and nested values should be handled, and which queries actually depend on the field. Those need a clear read/write contract, not an identity platform inferred from one missing value.&lt;/p&gt;

&lt;p&gt;Shared credentials need an actual product requirement first. If different people must direct the same digital employee over time, further questions include when instructions are accepted, how responsibility is authenticated, when an old action fixes its identity, how a new action selects authority, and what the underlying platform already supplies. This experiment neither implemented nor accepted that complete chain.&lt;/p&gt;

&lt;p&gt;A useful check for agent-product teams is to select one real action and trace backward through its credential, authority, responsible person and original instruction. At the first hop that can only answer “probably this person,” clarify the evidence for that hop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remembering who said what is not the same as knowing whose permissions each action may use. Session continuity keeps work connected; responsibility continuity keeps actions attributable.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Research and evidence boundaries
&lt;/h2&gt;

&lt;p&gt;The first-party experiments used fixed source commit &lt;code&gt;c008d9db91a21136fc61a4f60314e22db395d5d2&lt;/code&gt; on Windows with Node v24.16.0. Approval tests used counting callbacks; session tests used an in-memory SDK, not real model tools. Task lookup and governance dependencies of the chat-command builder were synthetic. We did not test authentication or credential switching between two human accounts. These are bounded source and probe observations, not platform-wide security assurance or independent QA.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/en/research/evidence/2026-09-08-principal-receipt" rel="noopener noreferrer"&gt;English evidence guide&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/zh/research/evidence/2026-09-08-principal-receipt" rel="noopener noreferrer"&gt;Chinese guide&lt;/a&gt;. The public bundle contains sanitized observations, source hashes, aggregate historical counts and a record checker. It checks saved evidence, not a fresh product execution; original operational records and full product replay remain access-restricted. The historical sample did not contain the hypothetical multi-person credential incident. No product change or development authorization resulted from this research.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/en/engineering/2026-09-08-shared-agent-instruction-identity" rel="noopener noreferrer"&gt;Original English article&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/zh/engineering/2026-09-08-shared-agent-instruction-identity" rel="noopener noreferrer"&gt;中文版&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/joinwell52-AI/joinwell52" rel="noopener noreferrer"&gt;Research repository&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>backend</category>
      <category>architecture</category>
    </item>
    <item>
      <title>MIIT's AI SME Entrepreneurship Support Plan Explained: An AI Startup Ecosystem Is Taking Shape</title>
      <dc:creator>joinwell52</dc:creator>
      <pubDate>Tue, 08 Sep 2026 04:15:43 +0000</pubDate>
      <link>https://dev.to/joinwell52/miits-ai-sme-entrepreneurship-support-plan-explained-an-ai-startup-ecosystem-is-taking-shape-4h7f</link>
      <guid>https://dev.to/joinwell52/miits-ai-sme-entrepreneurship-support-plan-explained-an-ai-startup-ecosystem-is-taking-shape-4h7f</guid>
      <description>&lt;p&gt;On September 4, 2026, the General Office of China's Ministry of Industry and Information Technology published the &lt;a href="https://www.miit.gov.cn/jgsj/qyj/wjfb/art/2026/art_86c400b4473849818629663a94a6d44b.html" rel="noopener noreferrer"&gt;Artificial Intelligence SME Entrepreneurship Support Plan (2026–2028)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The document is numbered Gong Xin Ting Qi Ye [2026] No. 31. It was dated August 29 and sent to the authorities responsible for small and medium-sized enterprises in every province, autonomous region, municipality, city specifically designated in the state plan, and the Xinjiang Production and Construction Corps, asking them to implement it in light of local conditions.&lt;/p&gt;

&lt;p&gt;Reading it merely as another policy that “supports AI companies” would understate its significance.&lt;/p&gt;

&lt;p&gt;In seven pages and 15 specific measures, the plan addresses a larger question: &lt;strong&gt;as artificial intelligence moves from competition among a small number of model companies into broad adoption across industries, who will complete the last mile?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The answer is becoming clearer. China does not intend to rely only on a few foundation-model companies or large internet platforms. The policy seeks to cultivate AI SMEs, AI-native firms, agent developers, open-source entrepreneurs, AI application service providers, and even “one-person companies” and “super individuals.” Together, they can become the capillary network that takes AI into millions of enterprises and real industrial settings.&lt;/p&gt;

&lt;p&gt;That is the central significance of the plan.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Start with the policy sequence, not the subsidy question
&lt;/h2&gt;

&lt;p&gt;The meaning of an industrial policy often becomes clear only when it is placed in sequence with the policies around it.&lt;/p&gt;

&lt;p&gt;In August 2025, the State Council issued its opinion on deepening the “AI Plus” initiative. It set a target for adoption of next-generation intelligent terminals and agents to exceed 70% by 2027 and 90% by 2030. The question was no longer whether China should develop AI, but how AI would enter science, industry, consumption, public services, and governance at scale.&lt;/p&gt;

&lt;p&gt;The 15th Five-Year Plan then placed AI Plus inside a broader national framework for digital and intelligent development. It called for progress in multimodal AI, agents, embodied intelligence, and collective intelligence; encouraged AI-native businesses; proposed national pilot-scale bases for AI applications; and called for stronger digital enablement services for SMEs and a more developed open-source ecosystem.&lt;/p&gt;

&lt;p&gt;Beginning in spring 2026, MIIT policy moved visibly into implementation.&lt;/p&gt;

&lt;p&gt;In April, a program for inclusive computing sought to make computing resources easier and cheaper for SMEs to access. It referred to the China Computing Network Platform, SME service zones, “computing banks,” “computing supermarkets,” and vouchers for computing, storage, and network transport.&lt;/p&gt;

&lt;p&gt;In July, an updated guide for small, fast, lightweight, and precise digital products defined the kinds of tools suitable for SMEs: affordable products that can be deployed quickly and solve specific problems, rather than large systems by default.&lt;/p&gt;

&lt;p&gt;On August 31, MIIT published Document No. 414, a special action to cultivate AI application service providers. It set goals for a national provider pool of more than 2,000 by the end of 2026 and no fewer than 3,000 by the end of 2027. That policy asks who will consult, implement, operate, and govern enterprise AI.&lt;/p&gt;

&lt;p&gt;On September 3, ten departments jointly issued the SME Development Plan for the 15th Five-Year period, bringing AI entrepreneurship, transformation, management, and services into the five-year SME policy framework. One day later, the AI SME Entrepreneurship Support Plan was published.&lt;/p&gt;

&lt;p&gt;Together, the sequence is coherent:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Set national AI Plus goals → build computing infrastructure → cultivate SME-ready AI products → develop application service providers → expand the supply of AI startups → connect that supply with the needs of millions of SMEs.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The new plan is therefore not an isolated policy. &lt;strong&gt;It is building the entrepreneurial supply layer for China's AI application economy.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/assets/figures/miit-ai-sme-support-plan/en/01-policy-sequence.png" 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%2Fsfylg9qtlz2yl8d443gq.png" alt="From national strategy to a startup supply layer" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 1. Five policy moves progress from strategy, infrastructure, products, and delivery to the cultivation of startups. Select the image to view it at full size.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. The important change: policy now discusses one-person companies and super individuals
&lt;/h2&gt;

&lt;p&gt;The most widely repeated sentence in the plan may be this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Local authorities are encouraged to provide inclusive support for micro-entities such as “one-person companies” and super individuals that use intelligent tools for agile entrepreneurship.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is immediately followed by another statement:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Accelerate the cultivation of AI-native enterprises and support emerging groups, including core contributors to open-source communities and agent developers, in exploring paths to commercialization.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;These statements do not create a new business-registration category called a “one-person company,” nor do they mean that anyone using AI automatically qualifies for a subsidy. Their deeper meaning is that &lt;strong&gt;national policy is beginning to recognize that AI changes the smallest viable unit of enterprise formation.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the past, starting a software business usually required a product manager, developers, designers, marketing, customer service, and operations. Today, one person who can use large models, agents, and automation effectively can theoretically mobilize capabilities that once required a small team.&lt;/p&gt;

&lt;p&gt;The key idea is not the literal number of people. It is that &lt;strong&gt;one person may now work with a digital production team built from AI.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is why the plan places one-person companies alongside AI-native firms, core open-source contributors, and agent developers. Its concept of an AI startup is no longer limited to a conventional software firm with an office, dozens of employees, and a complete organizational chart. Very small organizations may possess substantial capacity for knowledge work, software development, and service delivery.&lt;/p&gt;

&lt;p&gt;AI-driven organizational productivity has entered national SME entrepreneurship policy in a direct and visible form.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/assets/figures/miit-ai-sme-support-plan/en/02-one-person-company.png" 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%2Fpp27g1zr71ujjowe0osx.png" alt="A one-person company and an AI production team" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 2. A one-person company's significance lies in expanding what one founder can produce with AI, while goals, judgment, and responsibility remain human.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Naming agent developers turns Agent from a feature into an industrial role
&lt;/h2&gt;

&lt;p&gt;The words “agent developers” deserve particular attention.&lt;/p&gt;

&lt;p&gt;The State Council's AI Plus policy already identified agents as a major form of intelligent application and set adoption targets for 2027 and 2030. MIIT now includes agent developers in a policy for cultivating entrepreneurial actors.&lt;/p&gt;

&lt;p&gt;The first policy answers whether agents will become an important application form. The second begins to answer who will create them.&lt;/p&gt;

&lt;p&gt;Together, they suggest that Agent is moving beyond a feature offered by model vendors and into an independent industrial ecosystem. One group supplies models; another supplies computing; others build agent tools and frameworks, create industry agents, deliver them to enterprises, and operate, govern, secure, and audit them after deployment.&lt;/p&gt;

&lt;p&gt;This is also why Document No. 414 and the September 4 plan should be read together. Document No. 414 develops a delivery workforce of AI application service providers. The new plan expands the supply of innovative AI ventures. One addresses delivery; the other addresses entrepreneurship and innovation.&lt;/p&gt;

&lt;p&gt;China is organizing more than a large-model industry. It is forming a service chain around the application of AI.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. The policy builds both AI supply and SME demand
&lt;/h2&gt;

&lt;p&gt;An easy-to-miss sentence near the beginning defines the plan's economic structure: it seeks to combine innovation by AI SMEs with the use of AI to support the high-quality development of SMEs more broadly.&lt;/p&gt;

&lt;p&gt;On one side are &lt;strong&gt;AI SMEs&lt;/strong&gt;. They need markets, computing resources, data, finance, and real application settings.&lt;/p&gt;

&lt;p&gt;On the other side are &lt;strong&gt;China's very large number of ordinary SMEs&lt;/strong&gt;. They need AI to reduce cost, improve productivity, and strengthen R&amp;amp;D, production, sales, and management.&lt;/p&gt;

&lt;p&gt;The policy seeks to connect the two.&lt;/p&gt;

&lt;p&gt;It calls for a group of small, fast, lightweight, and precise AI solutions for core business fields such as management, manufacturing, and R&amp;amp;D. It also calls for a virtuous cycle between SMEs exploring AI applications and AI SMEs pursuing innovation.&lt;/p&gt;

&lt;p&gt;This means that one of the largest AI markets may not be consumers buying one more chatbot subscription. It may be millions of SMEs purchasing modestly priced, narrowly scoped products and digital workers that solve operating problems directly: procurement assistants, sales agents, customer-service agents, R&amp;amp;D assistants, quality analysis, document processing, market intelligence, finance support, knowledge management, and supply-chain analysis.&lt;/p&gt;

&lt;p&gt;A large enterprise may procure a digitalization project worth tens of millions of yuan. A small manufacturer will not. It may, however, pay thousands or tens of thousands of yuan per month for a few AI systems that actually work inside its processes. At sufficient scale, this becomes a market very different from traditional enterprise software.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/assets/figures/miit-ai-sme-support-plan/en/03-two-sided-market.png" 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%2Fgg0gh2zurm79fk943m1r.png" alt="AI supply and SME demand form a two-sided market" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 3. AI ventures provide focused products, while real SME needs drive those products toward maturity.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  5. The hardest startup problem is not technology, but the first customer
&lt;/h2&gt;

&lt;p&gt;China does not lack people able to build AI products. The harder question is: &lt;strong&gt;once a product exists, who will let the startup test it in a real setting?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In manufacturing, medicine, materials, and other industries, data, processes, and test environments are usually controlled by incumbent organizations. A technically capable startup may still lack real data, a representative environment, industry customers, and any opportunity to prove its product.&lt;/p&gt;

&lt;p&gt;The plan therefore devotes considerable attention to application scenarios. Through activities connecting large and small enterprises and campaigns for AI-enabled industrialization, it asks leading enterprises to open settings for &lt;strong&gt;experimental validation, demonstration applications, and scaled commercial use&lt;/strong&gt;. It also proposes selecting “AI entrepreneurship scenario partners” that can help startups identify scenarios, analyze needs, conduct pilots, and promote adoption.&lt;/p&gt;

&lt;p&gt;The three stages matter:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Experimental validation → demonstration application → scaled commercial use.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is more than holding another startup competition. It attempts to create a route into the market.&lt;/p&gt;

&lt;p&gt;The plan also says that incubators should move beyond providing inexpensive office space. Computing, industry data, and application scenarios should become core services. For an AI startup, these resources may be more valuable than a low-rent office. The practical questions are whether it can obtain a model, computing, real data, a customer willing to run a test, and eventually a first order.&lt;/p&gt;

&lt;p&gt;Entrepreneurship support is being redefined around those constraints.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/assets/figures/miit-ai-sme-support-plan/en/04-scenario-conversion.png" 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%2F7z1m0qo2x0xzs7wetua5.png" alt="From validation to scaled commercial use" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 4. The plan tries to turn real application settings into a market-entry route: validation, demonstration, and scaled commercial use.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Open source is becoming infrastructure for AI entrepreneurship
&lt;/h2&gt;

&lt;p&gt;The plan makes “deepening open-source ecosystem enablement” one of its four major work areas.&lt;/p&gt;

&lt;p&gt;It calls for support for a national AI open-source community; contributions of models, tools, and datasets; adoption of open foundation models, development frameworks, toolchains, and datasets; services for model selection, fine-tuning, performance evaluation, and inference deployment; software, vertical models, and industry solutions built on open-source results; and mechanisms for commercializing those results.&lt;/p&gt;

&lt;p&gt;The emerging policy judgment is clear: &lt;strong&gt;not every AI startup should rebuild a foundation model from scratch.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A more sustainable industrial structure has a small number of companies investing heavily in foundation models and infrastructure, with many more firms using open models, tools, and data to build engineering systems, products, agents, and industry applications. Mature foundation models lower the entry threshold above them. Richer open-source resources let small companies enter the market faster.&lt;/p&gt;

&lt;p&gt;Open source is therefore no longer treated only as a way to develop software. It is beginning to act as public infrastructure for an industry.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. A new signal: open-source stars enter the government's view of company discovery
&lt;/h2&gt;

&lt;p&gt;The final part of the plan contains a detail that technical entrepreneurs should not overlook. It asks SME authorities to use AI and big-data analysis, together with indicators such as leading talent, invention patents, highly cited papers, and &lt;strong&gt;the number of stars on open-source projects&lt;/strong&gt;, to identify high-growth-potential companies proactively.&lt;/p&gt;

&lt;p&gt;Two phrases matter.&lt;/p&gt;

&lt;p&gt;The first is &lt;strong&gt;open-source project stars&lt;/strong&gt;. Observable influence on communities such as GitHub and AtomGit now appears directly in policy language about identifying growth companies.&lt;/p&gt;

&lt;p&gt;The second is &lt;strong&gt;proactive identification&lt;/strong&gt;. The traditional route into a government cultivation program required an enterprise to find a notice, prepare documents, submit an application, and wait for evaluation. The new wording suggests that public service systems may increasingly use publicly available signals to discover promising firms.&lt;/p&gt;

&lt;p&gt;Patents, papers, talent, and open-source projects are all signals. This does not mean that a high GitHub star count automatically makes a company a specialized and innovative enterprise, or that stars lead directly to subsidies. It means that open-source influence now has formal visibility in policy.&lt;/p&gt;

&lt;p&gt;This matters for software, development-tool, agent, and infrastructure startups that may have low early revenue, few employees, and little fixed capital. Traditional industrial metrics can miss them. Code contribution, project influence, and developer ecosystems may reveal their technical value earlier.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. The plan gives specific three-year targets
&lt;/h2&gt;

&lt;p&gt;By 2028, the plan aims to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cultivate more than &lt;strong&gt;10,000 new technology-oriented and innovative SMEs&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;bring the number of specialized and innovative “Little Giant” enterprises in AI to &lt;strong&gt;more than 2,000&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;establish &lt;strong&gt;10 high-standard technology business incubators&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;establish &lt;strong&gt;10 national SME public service demonstration platforms or bases&lt;/strong&gt;; and&lt;/li&gt;
&lt;li&gt;cultivate &lt;strong&gt;10 national-level distinctive SME industry clusters&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For context, MIIT has reported that since the beginning of the 14th Five-Year period China has cultivated approximately 17,600 Little Giant firms, more than 140,000 specialized and innovative SMEs, and more than 600,000 technology-oriented and innovative SMEs.&lt;/p&gt;

&lt;p&gt;Setting a separate target of more than 2,000 Little Giant firms in AI is therefore not merely a headcount target. It places AI inside the national ladder for cultivating high-quality SMEs.&lt;/p&gt;

&lt;p&gt;Nor does the policy expect these companies to remain small startups forever. Its intended progression is explicit:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Entrepreneurial entity → technology-oriented and innovative SME → specialized and innovative SME → Little Giant → gazelle and unicorn.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/assets/figures/miit-ai-sme-support-plan/en/05-2028-targets.png" 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%2Fbi6b3lndaqm30q8irhw5.png" alt="2028 targets and the AI company growth ladder" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 5. The three-year quantitative targets sit alongside a growth ladder from startup entities to gazelles and unicorns.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  9. Support is moving beyond a single fiscal subsidy
&lt;/h2&gt;

&lt;p&gt;The plan calls for a guiding role from the National SME Development Fund, the National AI Industry Investment Fund, and the National Integrated Circuit Industry Investment Fund. It also seeks to mobilize private capital across seed, startup, and growth stages.&lt;/p&gt;

&lt;p&gt;More unusually, it proposes exploring &lt;strong&gt;computing contributions as equity, data contributions as equity, and investment-incubation coordination&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;AI companies have a different cost structure from many traditional firms. Their largest costs may be tokens, GPUs, data, model invocation, testing environments, and access to industry scenarios rather than land and factories. Policy support must therefore address different productive inputs.&lt;/p&gt;

&lt;p&gt;For an early AI venture, RMB 500,000 of computing resources, a high-quality industry dataset, six months in a real operating environment provided by a large enterprise, and seed capital may be more useful than conventional support tied to physical premises. The evolution of policy instruments follows the evolution of the industry itself.&lt;/p&gt;




&lt;h2&gt;
  
  
  10. Why cultivate AI SMEs when large technology companies already invest heavily?
&lt;/h2&gt;

&lt;p&gt;Foundation models cannot solve every industry's last-mile problem.&lt;/p&gt;

&lt;p&gt;China combines a comprehensive industrial system with an enormous number of SMEs. Bringing AI into those organizations requires detailed knowledge: how an automotive-parts firm conducts quality inspection, how a chemical company procures materials, how an export business manages customers, how a machinery factory quotes work, how a logistics firm schedules shifts, or how a materials company reviews R&amp;amp;D literature.&lt;/p&gt;

&lt;p&gt;A handful of foundation-model firms cannot solve all of these problems. Thousands of companies must experiment across narrow sectors.&lt;/p&gt;

&lt;p&gt;That is the role of SMEs. They do not compete mainly on foundation-model scale. They compete through &lt;strong&gt;scenario innovation and business-model innovation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The intended structure may therefore be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;foundation-model companies provide the base;&lt;/li&gt;
&lt;li&gt;computing and data infrastructure provide shared resources;&lt;/li&gt;
&lt;li&gt;large numbers of AI startups create products;&lt;/li&gt;
&lt;li&gt;AI application service providers complete delivery; and&lt;/li&gt;
&lt;li&gt;millions of SMEs become the application market.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the industrial structure required for AI Plus to reach broad adoption.&lt;/p&gt;




&lt;h2&gt;
  
  
  11. For Agent entrepreneurs, the opportunity is unlikely to be another chatbot
&lt;/h2&gt;

&lt;p&gt;From an entrepreneur's perspective, the plan increasingly favors products that can enter real industrial processes, keep working, be deployed and delivered, support continuing operations, and meet governance requirements. It does not reward an AI demo merely for existing.&lt;/p&gt;

&lt;p&gt;This explains why the same document discusses agents, SME-ready products, industry applications, service providers, data, computing, security, compliance, intellectual property, scenarios, open source, and financing. Together, they form an AI production system.&lt;/p&gt;

&lt;p&gt;For infrastructure such as CodeFlowMu and FCoP, the policy direction also points toward a market question. Once enterprises deploy digital workers, attention moves from “How intelligent is the model?” to “How does this digital worker keep operating?”&lt;/p&gt;

&lt;p&gt;Does it have an identity and defined responsibilities? Which tools can it invoke, and who authorizes those invocations? How are errors recovered? How do multiple agents coordinate? How is the process audited? Who accepts the result? How are enterprise data and permissions protected?&lt;/p&gt;

&lt;p&gt;Foundation models do not automatically solve these questions. As models mature and agents enter enterprises, the importance of infrastructure for agent operations, coordination, governance, audit, and security is likely to rise.&lt;/p&gt;

&lt;p&gt;This remains an analysis of policy direction and industrial structure. It does not mean that any particular project has been included in a national support program. Application conditions, evaluation standards, and local implementation still depend on subsequent formal rules.&lt;/p&gt;




&lt;h2&gt;
  
  
  12. The main development is an industry being organized, not a single subsidy
&lt;/h2&gt;

&lt;p&gt;The easiest question to ask is how much money the state will provide each AI startup. The plan does not answer that question. It is not a specific subsidy application notice and provides no uniform grant amount.&lt;/p&gt;

&lt;p&gt;Its larger purpose is to organize an AI entrepreneurship ecosystem: where computing comes from, how data is opened, who supplies real scenarios, which new entrepreneurial actors are recognized, how agent developers and open-source contributors commercialize their work, who delivers products, how capital participates, how compliance is handled, and how public services discover promising companies that are not yet well known.&lt;/p&gt;

&lt;p&gt;The plan describes its objective as a &lt;strong&gt;“tropical rainforest” ecosystem for entrepreneurship and innovation&lt;/strong&gt;. A rainforest is not a single giant tree. It contains large and small organisms occupying different layers and supporting one another.&lt;/p&gt;

&lt;p&gt;China already has large model companies, internet platforms, telecommunications operators, and computing infrastructure. The next wave may consist of small, specialized firms close to industry sites. Some will have only a few people. Some may have one person supported by many agents.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion: from the large-model race to adoption across millions of enterprises
&lt;/h2&gt;

&lt;p&gt;For several years, AI competition was often judged by model parameters, benchmark scores, financing, and GPU holdings. These remain important, but the direction of national policy is changing.&lt;/p&gt;

&lt;p&gt;The State Council established AI Plus in 2025. The 15th Five-Year Plan placed AI on the main path of economic and social digital development. Computing, open source, SME-ready products, application service providers, agent developers, and AI startups are now being organized one by one.&lt;/p&gt;

&lt;p&gt;China's AI industry is entering a second stage: &lt;strong&gt;from asking who can build the model to asking who can bring AI into every industry.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The scale of that stage will depend not only on a few dozen large model companies, but also on thousands of application service providers, more than ten thousand AI startups, hundreds of thousands of developers, and millions of SMEs that may use their products.&lt;/p&gt;

&lt;p&gt;The plan does more than repeat that AI matters. It begins to answer a practical question: &lt;strong&gt;how can ordinary entrepreneurs, developers, and SMEs become active participants in the AI economy?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Terms that rarely appeared in national industrial policy—one-person companies, super individuals, AI-native enterprises, agent developers, and open-source project star counts—now appear in an official ministerial plan. That change may matter more than any single subsidy.&lt;/p&gt;




&lt;h2&gt;
  
  
  Principal sources and interpretation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.miit.gov.cn/jgsj/qyj/wjfb/art/2026/art_86c400b4473849818629663a94a6d44b.html" rel="noopener noreferrer"&gt;MIIT notice issuing the Artificial Intelligence SME Entrepreneurship Support Plan (2026–2028)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.miit.gov.cn/jgsj/txs/wjfb/art/2026/art_e5c990d4ec924dbc9da5818da97940ac.html" rel="noopener noreferrer"&gt;MIIT special action on inclusive computing for SMEs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.miit.gov.cn/jgsj/qyj/gzdt/art/2026/art_7d898f9702124499aa651da5c9c4d66f.html" rel="noopener noreferrer"&gt;MIIT explanation of the SME Development Plan for the 15th Five-Year period&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Industry implications and stage forecasts in this article are analytical judgments based on public policy documents. They are not commitments regarding eligibility or funding. Actual conditions, timing, and local implementation should be determined from subsequent formal notices.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>startup</category>
      <category>opensource</category>
      <category>policy</category>
    </item>
    <item>
      <title>The File Was Written Successfully. Why Check the Artifact Again? From Remote Sandboxes to Local Workspaces</title>
      <dc:creator>joinwell52</dc:creator>
      <pubDate>Mon, 07 Sep 2026 03:49:20 +0000</pubDate>
      <link>https://dev.to/joinwell52/the-file-was-written-successfully-why-check-the-artifact-again-from-remote-sandboxes-to-local-1h7o</link>
      <guid>https://dev.to/joinwell52/the-file-was-written-successfully-why-check-the-artifact-again-from-remote-sandboxes-to-local-1h7o</guid>
      <description>&lt;p&gt;In this experiment, the file really was written successfully.&lt;/p&gt;

&lt;p&gt;We used CodeFlowMu's actual controlled file executor, then started another process to read the file. The SHA-256 content digest—a fingerprint used to compare bytes—exactly matched the post-write digest in the execution receipt.&lt;/p&gt;

&lt;p&gt;Then we did something ordinary: renamed the file within the experiment directory while preserving every byte.&lt;/p&gt;

&lt;p&gt;The original path no longer contained the file. The historical receipt still said &lt;code&gt;succeeded&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;There was no data-loss incident and no contradiction. The receipt correctly recorded the earlier write. The path check correctly answered whether the file could now be retrieved from its original location.&lt;/p&gt;

&lt;p&gt;Renaming is only a minimal intervention. The question is not the filesystem truism that a rename changes a path. It is: &lt;strong&gt;when an artifact's present availability changes, what judgments can its historical execution receipt still support?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The mistake would be collapsing these two records into one undifferentiated “task success.”&lt;/strong&gt; When agents work across processes, workspaces, or remote environments, the distinction affects both what the next turn receives and what a human ultimately gets.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Did we approve some content, or a particular operation?
&lt;/h2&gt;

&lt;p&gt;First, move the camera from after the write to before it.&lt;/p&gt;

&lt;p&gt;CodeFlowMu is the local multi-agent collaboration system we are developing. It organizes work around task files, execution sessions, and evidence. Its controlled file operations do not simply take text and write it. They construct a request, obtain approval, and check the request again before execution.&lt;/p&gt;

&lt;p&gt;Two digests in this chain are easy to confuse.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;content digest&lt;/strong&gt; identifies bytes. An &lt;strong&gt;operation digest&lt;/strong&gt; identifies the particular operation that was approved. Writing identical text in a different workspace or for another task can preserve the content while changing the operation's identity.&lt;/p&gt;

&lt;p&gt;To establish what the current system actually binds, we ran four controls through the real request builder at baseline &lt;code&gt;c008d9db91a21136fc61a4f60314e22db395d5d2&lt;/code&gt;. Each used new isolated experiment directories across two rounds.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Control&lt;/th&gt;
&lt;th&gt;Observation, matching in both rounds&lt;/th&gt;
&lt;th&gt;Misconception it rules out&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Rebuild the same request with the same workspace and task&lt;/td&gt;
&lt;td&gt;Same operation digest&lt;/td&gt;
&lt;td&gt;Identical input does not arbitrarily become a different approval object&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;After approval, change the target from absent to different existing content; rebuild and execute&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;APPROVAL_STALE&lt;/code&gt;; no file effect from this executor&lt;/td&gt;
&lt;td&gt;Old approval cannot directly overwrite a changed target&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Same proposed bytes, different workspace&lt;/td&gt;
&lt;td&gt;Same content digest, different operation digest&lt;/td&gt;
&lt;td&gt;Identical content does not mean identical execution location&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Same workspace and content, different task&lt;/td&gt;
&lt;td&gt;Different operation digest&lt;/td&gt;
&lt;td&gt;Location and content do not replace task identity&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The second row matters particularly. We did not merely observe a digest change and declare protection effective. We attempted execution. The old approval was rejected as stale, and the intervening content was not overwritten.&lt;/p&gt;

&lt;p&gt;These controls do not reach equally far. Changing the workspace or task verifies a different operation digest; the changed-target scenario additionally reaches rejection of the old approval during an execution attempt. &lt;strong&gt;Distinguishing request identities does not establish acceptance coverage for every cross-workspace or cross-task execution path.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The source explains why: the request incorporates the working directory, task subject, and target snapshot. The execution entry rebuilds it, and the approval service compares the operation digest.&lt;/p&gt;

&lt;p&gt;The controls identify an existing foundation to reuse: requests incorporate workspace and task identity, and the tested target change makes the old approval inapplicable.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Why does strong write evidence not answer present delivery?
&lt;/h2&gt;

&lt;p&gt;The fifth scenario specifically examined what happens after writing.&lt;/p&gt;

&lt;p&gt;The tested executor writes a temporary file, renames it into the target, and returns a post-operation snapshot. We read the file through a separate process and compared its content digest. Then we renamed it within the experiment directory and separately checked the original path and historical receipt.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Observation point&lt;/th&gt;
&lt;th&gt;Current file fact&lt;/th&gt;
&lt;th&gt;Execution evidence&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Actual executor finishes the write&lt;/td&gt;
&lt;td&gt;Target exists&lt;/td&gt;
&lt;td&gt;Success receipt includes the post-write digest&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A new process reads the file&lt;/td&gt;
&lt;td&gt;Read-back digest matches the receipt&lt;/td&gt;
&lt;td&gt;Success is not merely an intention held in the original process's memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;After a recoverable rename within the experiment directory&lt;/td&gt;
&lt;td&gt;Original path absent; preserved file exists&lt;/td&gt;
&lt;td&gt;Original execution receipt still says success&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Both rounds matched. A new process reading the file demonstrates visibility outside the writing process. It is not a power-loss experiment and does not establish every durability property after power failure.&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%2Ftsxgig48255o06dfzg58.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%2Ftsxgig48255o06dfzg58.png" alt="The same artifact at write completion, independent read-back, and after a recoverable rename" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 1. B4 observes one file at three points, not three independent artifacts. The complete bytes remain at the preserved location; no file was deleted. Source: this study's controlled observations; AI-generated explanatory illustration.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://raw.githubusercontent.com/joinwell52-AI/joinwell52/a31e6fad9cfdda6c475e89e9c4d0bdeb7b7d564a/docs/public/assets/execution-artifacts-20260906/02-artifact-inline-en-v1.png" rel="noopener noreferrer"&gt;View full-resolution figure&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This simple control corrects two opposite mistakes.&lt;/p&gt;

&lt;p&gt;The first over-trusts historical success: because the write succeeded then, no one checks the artifact's location at delivery.&lt;/p&gt;

&lt;p&gt;The second rewrites success as failure to keep a single status looking consistent: because the original path is empty now, the earlier write must have failed.&lt;/p&gt;

&lt;p&gt;Both lose time. One substitutes the past for the present; the other uses the present to rewrite the past.&lt;/p&gt;

&lt;p&gt;A more accurate account can retain all of these facts: what bytes were written then; which task and workspace they belonged to; where they can be retrieved now; and who checked when that they meet the delivery requirement.&lt;/p&gt;

&lt;p&gt;We did not invoke business acceptance in this study. It would therefore be wrong to report that “acceptance passed missing artifacts.” We tested the responsibilities of execution evidence, not the correctness of the entire acceptance system.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Remote sandboxes make the distinction more expensive
&lt;/h2&gt;

&lt;p&gt;On one persistent computer, the distinction may amount to another path check. In a replaceable remote environment, it can determine whether the previous turn's work survives.&lt;/p&gt;

&lt;p&gt;Paperclip is an open-source system for organizing agent work and execution state. Daytona supplies remote sandboxes: isolated environments for running code. Paperclip &lt;a href="https://github.com/paperclipai/paperclip/pull/12901" rel="noopener noreferrer"&gt;change #12901&lt;/a&gt; described successful changes remaining only in a remote sandbox. Reuse could appear normal, while replacement could restart from stale host data. The change exports and merges artifacts before successful completion, separates workspace recovery from another model turn, and blocks when unexported bytes cannot be recovered. As checked on September 6, 2026, the PR was merged. The author stated that the paid Daytona suite had not been run locally; we did not independently rerun remote tests either.&lt;/p&gt;

&lt;p&gt;That external scenario and our local rename are not the same failure. Their connection is a question: &lt;strong&gt;between “the executor did it” and “subsequent work can use it from the agreed location,” is there another handoff that needs confirmation?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The local rename cannot validate remote export or merge correctness. The external change cannot establish that our product has the same deployment chain or the same data risk.&lt;/p&gt;

&lt;p&gt;We searched the CodeFlowMu runtime and interface-layer source in this study's defined scope and did not find an equivalent Daytona export-and-sync recovery chain. This is a scoped search result, not a global claim about every dependency or user deployment.&lt;/p&gt;

&lt;p&gt;The conclusion is therefore not “build a remote workspace system immediately.” First establish whether real usage requires that handoff. An external problem can suggest a direction; it cannot supply product requirements as facts.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Long-running work needs artifacts with a location, an owner, and a time
&lt;/h2&gt;

&lt;p&gt;Restoring a task description is not enough for a long-running agent. If the next turn receives stale files, files from another workspace, or outputs with unverifiable ownership, its working basis may have changed even though the conversation continues.&lt;/p&gt;

&lt;p&gt;This does not mean every team needs a new artifact platform. Where artifact handoff actually exists, five questions can examine the existing process:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Where is delivery authoritative?&lt;/strong&gt; Which directory, repository commit, or storage object is the recognized source, rather than a temporary execution copy?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Whose artifact is it?&lt;/strong&gt; Can it be linked to the task, execution record, and workspace instead of being claimed by filename alone?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Do the bytes match?&lt;/strong&gt; Are we checking actual content, or only file existence and the model's description?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;When was it checked?&lt;/strong&gt; Evidence from the previous write is not automatically a current handoff check.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who owns business acceptance?&lt;/strong&gt; Proving a write does not authorize the executor to declare the content correct or the task complete.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These are recommendations derived from the study, not new CodeFlowMu interfaces or an authorized development task.&lt;/p&gt;

&lt;p&gt;If the real deployment uses remote environments, add an environment-replacement control: preserve the output, change execution environments, and check the identity and bytes received by the next turn. On handoff failure, distinguish recovering existing artifacts from executing the original action again. Recovering completed work and potentially producing another external effect should not be hidden behind an ambiguous Retry button.&lt;/p&gt;

&lt;p&gt;Conversely, for local workspace operations, precise request binding, post-operation snapshots, and an explicit delivery check may already be sufficient. Research is valuable when it establishes that a direction does not yet warrant development, too.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Do not make one “success” answer every question
&lt;/h2&gt;

&lt;p&gt;Two conclusions survive this study together.&lt;/p&gt;

&lt;p&gt;One is affirmative: the tested operation digests distinguish workspace, task, and target changes; the changed-target scenario additionally verifies rejection of the old approval. A new process can also verify actual write results.&lt;/p&gt;

&lt;p&gt;The other is a boundary: a historical receipt proves what happened in the past; it does not inherently promise that the artifact remains at the same path forever. Current availability and business delivery require their own judgments, not an inference from one successful write.&lt;/p&gt;

&lt;p&gt;The next engineering step is to check location, ownership, bytes, and verification time at a real delivery boundary, then decide whether the existing process is sufficient—not assume a new storage project is needed first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For a long-running agent, “it was completed” is history worth preserving. “It can be delivered now” is another fact worth checking.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Evidence and scope
&lt;/h2&gt;

&lt;p&gt;This article uses five workspace scenarios, two rounds each, for ten controlled observations. The &lt;a href="https://joinwell52-ai.github.io/joinwell52/en/research/evidence/2026-09-06-execution-artifact-continuity" rel="noopener noreferrer"&gt;bilingual evidence companion&lt;/a&gt; exports B0–B4 together with the related approval observations, source mappings, probes, and integrity checks. Local paths and process IDs are removed without changing outcomes. Record verification is available independently; product-probe execution additionally requires authorized access to the fixed source and its dependencies.&lt;/p&gt;

&lt;p&gt;There is no production loss-rate sample, power-loss test, remote sandbox deletion, real remote synchronization, concurrent branch merge, or PM/QA business acceptance in this study. Publication reviewed existing evidence rather than inventing a new experimental round. The renamed artifact was preserved in full, and no user file was deleted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Language versions and research
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/en/engineering/2026-09-06-workspace-artifact-continuity" rel="noopener noreferrer"&gt;Original English article&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/zh/engineering/2026-09-06-workspace-artifact-continuity" rel="noopener noreferrer"&gt;中文版&lt;/a&gt; · &lt;a href="https://joinwell52-ai.github.io/joinwell52/" rel="noopener noreferrer"&gt;Research home&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joinwell52-ai.github.io/joinwell52/" rel="noopener noreferrer"&gt;Research home&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>testing</category>
      <category>backend</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
