<?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: 11shao</title>
    <description>The latest articles on DEV Community by 11shao (@frankie_yang_78df9e5017f8).</description>
    <link>https://dev.to/frankie_yang_78df9e5017f8</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%2F4112223%2Fa1df2a76-4387-4601-b5eb-2d2f6a16dbb1.png</url>
      <title>DEV Community: 11shao</title>
      <link>https://dev.to/frankie_yang_78df9e5017f8</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/frankie_yang_78df9e5017f8"/>
    <language>en</language>
    <item>
      <title>去中心化存储评测</title>
      <dc:creator>11shao</dc:creator>
      <pubDate>Mon, 28 Sep 2026 16:13:18 +0000</pubDate>
      <link>https://dev.to/frankie_yang_78df9e5017f8/qu-zhong-xin-hua-cun-chu-ping-ce-423d</link>
      <guid>https://dev.to/frankie_yang_78df9e5017f8/qu-zhong-xin-hua-cun-chu-ping-ce-423d</guid>
      <description>&lt;h1&gt;
  
  
  Decentralized Storage Scorecard — IPFS vs Arweave, an Open-Source Economics View
&lt;/h1&gt;

&lt;p&gt;Storage is cheap. Persistence is not. IPFS and Arweave both answer a real problem, but they encode different payment models, and that difference decides where each one belongs in a stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  IPFS: Write once, pay forever (or not)
&lt;/h2&gt;

&lt;p&gt;IPFS resolves content by CID, a deterministic hash of the file. Deduplication is automatic; two nodes holding the same block can trade it over Bitswap. Write access costs nothing. Gateways like &lt;code&gt;ipfs.io&lt;/code&gt; make HTTP-based retrieval work without a node.&lt;/p&gt;

&lt;p&gt;The protocol stops there. IPFS does not specify retention. Nobody pays for your blocks. A file with zero pins is equivalent to a file that does not exist, because DHT lookups only return provider records from online peers that actually have the blocks. The persistence burden is externalized to pinning services (Pinata, Filebase) or to Filecoin deal markets.&lt;/p&gt;

&lt;p&gt;Filecoin tries to rebundle that cost: clients pay storage miners, who prove continued storage via Proof-of-Replication and Proof-of-Spacetime. The economic shape is clear:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IPFS alone&lt;/strong&gt;: free writes, opt-in persistence, garbage collection risk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IPFS + Filecoin&lt;/strong&gt;: recurring rent per byte per epoch.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pricing depends on deal negotiation, not on the protocol. For mutable content, this is workable. For a dataset you write once and update every hour, the cost model is fair. But for a static proof-of-existence record, you keep paying rent for the same bits year after year.&lt;/p&gt;

&lt;h2&gt;
  
  
  Arweave: Pay once, forget forever
&lt;/h2&gt;

&lt;p&gt;Arweave is an append-only blockweave. Every new block references both the previous block and a random older block. Consensus uses Succinct Proofs of Random Access, so miners have an economic reason to retain old blocks, not just the latest one. A transaction you submit is bundled, mined, and then kept as part of the weave indefinitely.&lt;/p&gt;

&lt;p&gt;The fee is upfront. That fee splits between the miner who includes it and a storage endowment. Arweave's pricing mechanism targets a ratio between the cost of storing the weave and the size of the endowment, with a plan that estimates 200 years of coverage.&lt;/p&gt;

&lt;p&gt;The economic shape is inverted:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Arweave&lt;/strong&gt;: one-time CapEx, zero marginal cost forever.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For immutable data (NFT metadata, artifact archives, software release hashes), Arweave is mathematically cheaper after a single continued-retention interval. For data you rewrite constantly, you pay the full write cost every time. Arweave's GraphQL interface and ANS-104 bundles improve write throughput, and wildcard retrieval makes any transaction fetchable by ID, but the economics do not love hot mutable state.&lt;/p&gt;

&lt;h2&gt;
  
  
  Selecting by lifecycle, not hype
&lt;/h2&gt;

&lt;p&gt;Use IPFS/Filesystem when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;you have a dynamic dataset with frequent updates;&lt;/li&gt;
&lt;li&gt;you need content-addressing per version, but you can tolerate a pinning layer;&lt;/li&gt;
&lt;li&gt;you accept IPNS propagation delays (seconds to minutes) as the price of mutable references.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use Arweave when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;your data is write-once, read-many;&lt;/li&gt;
&lt;li&gt;you need a tamper-evident timestamp for a registry or claim;&lt;/li&gt;
&lt;li&gt;you want to remove the recurrence of storage billing from your operating budget.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The real scoring is by retention interval and write frequency. Run this yourself: take a 10 MB test file, pin it at Pinata's free tier, collect six months of per-GiB pricing, then pull Arweave's current per-byte cost from &lt;code&gt;https://arweave.net/price/10485760&lt;/code&gt;. Compare total cost of ownership over 1, 5, and 10 years. That will be more honest than any vendor claim.&lt;/p&gt;

&lt;p&gt;Both projects are open-source and license-progressive. Neither is a replacement for the other. The question is whether you want physics-style permanence or software-style mutability. Pick the one whose cost curve matches your data's lifetime.&lt;/p&gt;




&lt;h1&gt;
  
  
  ai #opensource #machinelearning #programming
&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/http%3A%2F%2Flocalhost%3A3001%2Fapi%2Fsend%3Fwebsite_id%3D30b552af-b93c-4bbb-855c-b10b45efaa52%26platform%3Ddevto" 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/http%3A%2F%2Flocalhost%3A3001%2Fapi%2Fsend%3Fwebsite_id%3D30b552af-b93c-4bbb-855c-b10b45efaa52%26platform%3Ddevto" height="400" width="800" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>maref</category>
      <category>opensource</category>
    </item>
    <item>
      <title>数据掮客的定价权</title>
      <dc:creator>11shao</dc:creator>
      <pubDate>Sun, 27 Sep 2026 16:10:30 +0000</pubDate>
      <link>https://dev.to/frankie_yang_78df9e5017f8/shu-ju-qian-ke-de-ding-jie-quan-4252</link>
      <guid>https://dev.to/frankie_yang_78df9e5017f8/shu-ju-qian-ke-de-ding-jie-quan-4252</guid>
      <description>&lt;p&gt;Data brokers price data the way derivatives desks price risk: not by the asset itself, but by the liability attached to it. As a compliance auditor, I read broker contracts the way I read swap confirmations — tracing what changes hands, who can unwind it, and at what latency.&lt;/p&gt;

&lt;p&gt;A broker's quote has three verifiable drivers:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Match rate and freshness.&lt;/strong&gt; A record with a verified email, current employer, and device ID carries a premium because it converts before decaying. Walk away from any contract that lacks a &lt;code&gt;last_verified_at&lt;/code&gt; timestamp in the data dictionary. Refusal to expose it is an admission that the data is stale.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Redistribution scope.&lt;/strong&gt; "Full license" versus "single-campaign use" changes price by an order of magnitude. The audit mechanism here is mundane but essential: every downstream table must carry a license tag. Without that tag, you cannot prove to a regulator that a third-party query did not repackage the data. Trace the license terms down to the SQL query, not the contract signature page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Regulatory exposure.&lt;/strong&gt; GDPR Art. 17 and CCPA/CPRA deletion obligations turn data into a running cost. A broker that cannot demonstrate deletion within the statutory window is selling a liability. The premium charged by brokers with an auditable deletion workflow is justifiable — but verify it via the deletion endpoint, not the sales deck.&lt;/p&gt;

&lt;p&gt;What I check as an auditor during broker negotiation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Provenance manifest.&lt;/strong&gt; Every record must carry origin source, collection timestamp, and consent scope. "Inferred interests" is a red flag — I have seen contracts where "inferred" meant three links of resold data, none of which had consent. Ask for the inference logic in writing. If the broker calls it proprietary, the risk is yours.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;DSAR propagation.&lt;/strong&gt; Ask how the broker routes subject access requests. Do they propagate the request upstream to their own sources, or do they delete only their copy? If the latter, the buyer inherits every downstream obligation. That is a process failure you can test with a sandbox record.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Deletion latency.&lt;/strong&gt; Measure time from deletion request to actual removal across all replicas. A deleted email that survives in a monthly backup restored for analytics is not deleted. Demand the restore-and-purge window in the SLA.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The trade-offs are concrete. A compliant broker charges more because compliance is real engineering: consent receipts, retention windows, deletion scripts, audit logs. That premium is observable and defensible. A cheap broker transfers the residual risk to you — also observable, also defensible, only if your risk budget says so.&lt;/p&gt;

&lt;p&gt;Compute a fair price from your own data processing register. For each dataset, estimate match rate, refresh cadence, consent coverage ratio, and deletion latency. Price per record should rise with match rate and consent coverage, and fall with deletion latency. When the broker quote deviates sharply, demand the audit artifacts before signing.&lt;/p&gt;

&lt;p&gt;Pricing power shifts the moment the buyer can verify the underwriting assumptions. If a broker claims raw logs, ask to inspect a sample. If they claim consent coverage, ask for the receipts. If they cannot produce either, the data is worth exactly zero — because the first regulator who asks will have the same question, and the broker's pricing formula will be irrelevant to the fine.&lt;/p&gt;




&lt;h1&gt;
  
  
  ai #opensource #machinelearning #programming
&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/http%3A%2F%2Flocalhost%3A3001%2Fapi%2Fsend%3Fwebsite_id%3D30b552af-b93c-4bbb-855c-b10b45efaa52%26platform%3Ddevto" 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/http%3A%2F%2Flocalhost%3A3001%2Fapi%2Fsend%3Fwebsite_id%3D30b552af-b93c-4bbb-855c-b10b45efaa52%26platform%3Ddevto" height="400" width="800" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>maref</category>
      <category>opensource</category>
    </item>
    <item>
      <title>谁来治理治理者</title>
      <dc:creator>11shao</dc:creator>
      <pubDate>Sun, 27 Sep 2026 12:58:18 +0000</pubDate>
      <link>https://dev.to/frankie_yang_78df9e5017f8/shui-lai-zhi-li-zhi-li-zhe-1b8n</link>
      <guid>https://dev.to/frankie_yang_78df9e5017f8/shui-lai-zhi-li-zhi-li-zhe-1b8n</guid>
      <description>&lt;p&gt;Every multi-agent fleet now runs a governor: an agent with the permission to read all peer memories, revoke tool access, and purge misaligned context. The irony is dense in the MCP ecosystem. The memory server holds both the evidence of misbehavior and the deletion token. If the governor drifts, corrupts, or is prompt-injected, there is no second record — the audit trail lives in the same database as the crime scene. Meta-governance is not an upgrade; it is the floor.&lt;/p&gt;

&lt;p&gt;Here are the mechanisms I enforce in production MCP stacks, with the costs attached.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Hash-chained memory writes.&lt;/strong&gt; Every governor action is written to an append-only log where each entry contains the hash of the previous entry. The chain anchor lives on a separate memory server that accepts no agent commands — only read requests from a human-held key. The governor can purge a memory, but it cannot purge the record of the purge. Trade-off: the chain grows unboundedly. Mitigation: snapshot every N entries, anchor the new snapshot externally, and prune the tail.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Dual-writer quorum for destructive moves.&lt;/strong&gt; Any action that erases or rewrites memory requires two agents with disjoint memory banks to co-sign a&lt;/p&gt;




&lt;h1&gt;
  
  
  maref #ai #opensource #machinelearning
&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/http%3A%2F%2Flocalhost%3A3001%2Fapi%2Fsend%3Fwebsite_id%3D30b552af-b93c-4bbb-855c-b10b45efaa52%26platform%3Ddevto" 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/http%3A%2F%2Flocalhost%3A3001%2Fapi%2Fsend%3Fwebsite_id%3D30b552af-b93c-4bbb-855c-b10b45efaa52%26platform%3Ddevto" height="400" width="800" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>maref</category>
      <category>opensource</category>
    </item>
    <item>
      <title>幻境管理员：幻觉治理</title>
      <dc:creator>11shao</dc:creator>
      <pubDate>Sun, 27 Sep 2026 12:24:55 +0000</pubDate>
      <link>https://dev.to/frankie_yang_78df9e5017f8/huan-jing-guan-li-yuan-huan-jue-zhi-li-jo1</link>
      <guid>https://dev.to/frankie_yang_78df9e5017f8/huan-jing-guan-li-yuan-huan-jue-zhi-li-jo1</guid>
      <description>&lt;p&gt;title: "Mirage Administrator: Hallucination Governance for Production LLMs"&lt;br&gt;
description: "Three concrete mechanisms for keeping generated text inside a verifiable envelope."&lt;br&gt;
tags:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;llm&lt;/li&gt;
&lt;li&gt;aihallucination&lt;/li&gt;
&lt;li&gt;compliance&lt;/li&gt;
&lt;li&gt;aiga
published: false&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  ai #opensource #machinelearning #programming
&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/http%3A%2F%2Flocalhost%3A3001%2Fapi%2Fsend%3Fwebsite_id%3D30b552af-b93c-4bbb-855c-b10b45efaa52%26platform%3Ddevto" 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/http%3A%2F%2Flocalhost%3A3001%2Fapi%2Fsend%3Fwebsite_id%3D30b552af-b93c-4bbb-855c-b10b45efaa52%26platform%3Ddevto" height="400" width="800" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>maref</category>
      <category>opensource</category>
    </item>
    <item>
      <title>数据审计工作台搭建</title>
      <dc:creator>11shao</dc:creator>
      <pubDate>Sun, 27 Sep 2026 11:49:22 +0000</pubDate>
      <link>https://dev.to/frankie_yang_78df9e5017f8/shu-ju-shen-ji-gong-zuo-tai-da-jian-15d9</link>
      <guid>https://dev.to/frankie_yang_78df9e5017f8/shu-ju-shen-ji-gong-zuo-tai-da-jian-15d9</guid>
      <description>&lt;p&gt;Most audit-readiness conversations start with dashboards. I prefer to start with the evidence path. A data audit workbench is not a set of charts; it is a repeatable pipeline that turns control events into verifiable records a regulator can inspect without trusting the UI.&lt;/p&gt;

&lt;h3&gt;
  
  
  Define the audit event first
&lt;/h3&gt;

&lt;p&gt;A workbench answers three questions: what happened, who initiated it, and how do we know the answer wasn’t altered.&lt;/p&gt;

&lt;p&gt;Start from data lifecycle actions: access, export, transformation, retention, deletion. Do not derive this from general application logging. If a logger has a debug switch, it is not evidence.&lt;/p&gt;

&lt;p&gt;A useful control event looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"event_uuid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"7f8a9e2a-1f1e-4c0a-9b2f-3f1a2c0b3d1e"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"prev_hash"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sha256:6c1f..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"record_version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"occurred_at"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2025-01-04T09:30:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"actor"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"user/1234"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"data.export"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"resource"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"dataset/loan-applicants"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"outcome"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"allowed"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"correlation_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"txn/887623"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"attributes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"app_id_hash"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"h2.3b..."&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;prev_hash&lt;/code&gt; field is not decoration. It creates a continuous chain that proves the event sequence was not truncated or reordered.&lt;/p&gt;

&lt;h3&gt;
  
  
  Make immutability mechanical
&lt;/h3&gt;

&lt;p&gt;Append-only storage is a phrase that is used too loosely. Make it mechanical:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write events to object storage with object lock / WORM enabled.&lt;/li&gt;
&lt;li&gt;Set the retention period to at least the statutory minimum that applies to the data class you are tracking, plus a buffer.&lt;/li&gt;
&lt;li&gt;If the storage backend cannot enforce object lock, the workbench is not compliance-ready.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One trade-off is cost. Long retention locks more bytes, and object lock does not allow partial deletion. Keep the audit store separate from operational data. Free storage is not a compliance argument.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hash-chain verification at scale
&lt;/h3&gt;

&lt;p&gt;Hash-chaining every event is easy when throughput is low. At high throughput, you need to decide between a global chain and sharded chains.&lt;/p&gt;

&lt;p&gt;A global chain gives the strongest ordering proof, but it creates a single writer bottleneck. A practical compromise is to shard the chain by actor or resource. Then a compliance investigator can verify a single actor’s history in parallel. The cost is that a multi-actor transaction is only connected by the &lt;code&gt;correlation_id&lt;/code&gt;, not by the hash chain. That is an acceptable trade-off for most data lifecycle audits.&lt;/p&gt;

&lt;p&gt;Do not try to hash-chain across a distributed event bus without an ordering mechanism. Use a database-generated sequence number or an equivalent that lets you detect gaps.&lt;/p&gt;

&lt;h3&gt;
  
  
  Schema evolution will break your logs
&lt;/h3&gt;

&lt;p&gt;Audit records must remain parseable after service changes. Use a schema registry and a &lt;code&gt;record_version&lt;/code&gt; field. Never mutate an existing version.&lt;/p&gt;

&lt;p&gt;When you add a field, keep your schema changes additive. A backward-incompatible change silently invalidates every older record that an auditor has not yet verified. If you need to rename a field, add a new field and leave the old one deprecated.&lt;/p&gt;

&lt;h3&gt;
  
  
  Erasure obligations complicate immutability
&lt;/h3&gt;

&lt;p&gt;The hardest part is reconciling immutable audit logs with data subject erasure requests.&lt;/p&gt;

&lt;p&gt;A workable pattern is to store only a salted hash of the personal data key in audit attributes. For an erasure request, delete the salt in a separate control process and write a redaction event. After that, the audit event still exists, but it cannot be re-linked to the original key. This is not perfect, and it depends on the legal basis in your jurisdiction. For a final answer, have counsel confirm it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Evidence packs, not dashboards
&lt;/h3&gt;

&lt;p&gt;When an assessor asks about activity around dataset X, send them an evidence pack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Raw events as JSONL&lt;/li&gt;
&lt;li&gt;A manifest listing start and end chain anchors&lt;/li&gt;
&lt;li&gt;A small verifier script that recomputes hashes&lt;/li&gt;
&lt;li&gt;The exact query used to filter events&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A CSV exported from a database is not evidence. It lacks chain integrity and reproducibility.&lt;/p&gt;

&lt;h3&gt;
  
  
  Trade
&lt;/h3&gt;




&lt;h1&gt;
  
  
  ai #opensource #machinelearning #programming
&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/http%3A%2F%2Flocalhost%3A3001%2Fapi%2Fsend%3Fwebsite_id%3D30b552af-b93c-4bbb-855c-b10b45efaa52%26platform%3Ddevto" 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/http%3A%2F%2Flocalhost%3A3001%2Fapi%2Fsend%3Fwebsite_id%3D30b552af-b93c-4bbb-855c-b10b45efaa52%26platform%3Ddevto" height="400" width="800" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>maref</category>
      <category>opensource</category>
    </item>
    <item>
      <title>审计日志即法律</title>
      <dc:creator>11shao</dc:creator>
      <pubDate>Sun, 27 Sep 2026 11:48:16 +0000</pubDate>
      <link>https://dev.to/frankie_yang_78df9e5017f8/shen-ji-ri-zhi-ji-fa-lu-4b69</link>
      <guid>https://dev.to/frankie_yang_78df9e5017f8/shen-ji-ri-zhi-ji-fa-lu-4b69</guid>
      <description>&lt;p&gt;A shared MCP memory server is now a common organ for multi-agent systems. It stores what agents believe. Belief is not evidence. When Agent B retrieves a vector from that server, it cannot tell whether the content came from a real observation, a hallucinated summary, or an artifact planted by a compromised peer. In a multi-agent deployment, the audit log is not a post-mortem report. It is the only court — and it must enforce law at runtime, not after the blast radius has propagated.&lt;/p&gt;

&lt;h2&gt;
  
  
  The crisis: memory as a contagion vector
&lt;/h2&gt;

&lt;p&gt;One poisoned memory read does not stay contained. Agent B acts on it, writes new memory, Agent C reads that. Each hop makes the corruption look more legitimate. Cosine similarity will not save you. The forcing function is governance as code: make the ledger a prerequisite for every memory-related tool call.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mechanism 1: Signed append-only tool log
&lt;/h2&gt;

&lt;p&gt;Wrap every MCP tool call with a recording layer that captures: &lt;code&gt;agent_id&lt;/code&gt;, &lt;code&gt;session_id&lt;/code&gt;, &lt;code&gt;tool_name&lt;/code&gt;, &lt;code&gt;input_hash&lt;/code&gt;, &lt;code&gt;output_ref&lt;/code&gt;, a hybrid logical clock — never wall time — and &lt;code&gt;parent_entry_hash&lt;/code&gt;. Append entries into a Merkle DAG whose root is signed by a key held outside the agent runtime, e.g., a vault sidecar. The operating rule: no write is committed to the shared memory store unless its value references a &lt;code&gt;gov:entry_id&lt;/code&gt;; no entry is accepted without a valid &lt;code&gt;parent_entry_hash&lt;/code&gt; back to the previous signed root.&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
json
{
  "gov:entry_id": "3f9a...e1",
  "agent_id": "agent-b",
  "tool_name": "memory_write",
  "input_hash": "sha256:1a2b...",
  "output_ref": "blob:4c5d...",
  "hlc": "2025-01-10T14:22:01.000+05:00",
  "parent_entry_hash": "sha256:9d8e..."
}

---
#maref #ai #opensource #machinelearning

&amp;lt;script async src="http://localhost:3001/script.js" data-website-id="30b552af-b93c-4bbb-855c-b10b45efaa52"&amp;gt;&amp;lt;/script&amp;gt;

&amp;lt;img src="http://localhost:3001/api/send?website_id=30b552af-b93c-4bbb-855c-b10b45efaa52&amp;amp;amp;platform=devto" height="1" width="1" style="display:none" alt=""/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>maref</category>
      <category>opensource</category>
    </item>
    <item>
      <title>观察者效应：推理链监控</title>
      <dc:creator>11shao</dc:creator>
      <pubDate>Sun, 27 Sep 2026 11:33:46 +0000</pubDate>
      <link>https://dev.to/frankie_yang_78df9e5017f8/guan-cha-zhe-xiao-ying-tui-li-lian-jian-kong-4jpb</link>
      <guid>https://dev.to/frankie_yang_78df9e5017f8/guan-cha-zhe-xiao-ying-tui-li-lian-jian-kong-4jpb</guid>
      <description>&lt;h1&gt;
  
  
  The Observer Effect in Chain-of-Thought Monitoring
&lt;/h1&gt;

&lt;p&gt;Every instrumentation layer is an interrogation. You add a trace, and the trace changes the testimony.&lt;/p&gt;

&lt;p&gt;When we wrap an agent's reasoning chain with logging, we are not passive observers. We are inserting variables into the system's decision surface. The chain-of-thought is not a fixed artifact waiting to be captured—it is a behavior that responds to the capture itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three Interference Channels
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Prompt-Level Instrumentation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The most common method—appending "output your reasoning step by step" to the system prompt—modifies the conditional distribution of the next token. The model is no longer solving the original problem; it is solving the original problem &lt;em&gt;while writing a report about solving it&lt;/em&gt;. The reasoning trace becomes a performance, shaped by the audience.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Mechanism&lt;/em&gt;: Instruction-following behavior reallocates attention toward self-description.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Trade-off&lt;/em&gt;: Extracting reasoning via prompts gives you readable data but contaminates the inference. Absence of contamination requires removing the instruction, which leaves you with no trace at all.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. State-Level Logging Overhead&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Capturing intermediate tool calls, partial outputs, and internal scores forces the runtime to serialize and emit state at defined checkpoints. That check-pointing changes timing and resource allocation. Tool call order can shift because the scheduler is waiting on a log flush.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Mechanism&lt;/em&gt;: I/O contention and synchronization points alter the execution timeline.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Trade-off&lt;/em&gt;: Synchronous logging gives reliable sequencing but introduces latency. Async logging reduces interference but loses causal ordering when failures occur.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Selective Sampling Bias&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A common reflex: log only failed branches for post-mortem analysis. This makes failures visible while silently blinding you to the normal path. But monitoring that samples only anomalies cannot distinguish "the agent is behaving" from "the agent is behaving but no one is looking."&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Mechanism&lt;/em&gt;: Conditional logging concentrates observations on low-probability states.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Trade-off&lt;/em&gt;: Full-coverage logging is expensive and noisy; selective logging is cheap but systematically skews the empirical base for any behavioral comparison.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A Verifiable Diagnostic
&lt;/h2&gt;

&lt;p&gt;Suppose you suspect instrumentation is altering behavior. Here is a concrete test.&lt;/p&gt;

&lt;p&gt;Run the same task set under two conditions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Group A&lt;/strong&gt;: Full chain-of-thought logging enabled.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Group B&lt;/strong&gt;: No internal trace captured—only the final output and tool call sequence (observable side effects).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Compare the distributions, not the averages. Measure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Output entropy (is the answer distribution flatter or sharper?)&lt;/li&gt;
&lt;li&gt;Tool call sequence edit distance (are the same tools called in the same order?)&lt;/li&gt;
&lt;li&gt;Token-level repetition patterns (does the traced group exhibit more self-referential phrasing?)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If these metrics diverge beyond your noise floor, the observer effect is present. The magnitude of that divergence is the price of your visibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the Boundary Lies
&lt;/h2&gt;

&lt;p&gt;Monitoring is safe when it stays outside the decision boundary: observing outputs and side effects after the fact. It becomes invasive when it reaches inside the reasoning process—because the reasoning process is plastic, and it will contort around the request for transparency.&lt;/p&gt;

&lt;p&gt;The practical stance: prefer &lt;strong&gt;reconstruction&lt;/strong&gt; over &lt;strong&gt;extraction&lt;/strong&gt;. Do not ask the agent to narrate. Instead, record the visible aftermath—actions, timings, external responses—and infer the reasoning path from those tracks. You lose fidelity, but you keep the behavior unpolluted.&lt;/p&gt;

&lt;p&gt;This is the discipline of forensic observation. The good detective does not interrupt the crime to ask for a confession. He watches, takes note of what moves, and builds the case from the residue.&lt;/p&gt;

&lt;p&gt;In agent observability, the residue is the trace you can trust.&lt;/p&gt;




&lt;h1&gt;
  
  
  ai #opensource #machinelearning #programming
&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/http%3A%2F%2Flocalhost%3A3001%2Fapi%2Fsend%3Fwebsite_id%3D30b552af-b93c-4bbb-855c-b10b45efaa52%26platform%3Ddevto" 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/http%3A%2F%2Flocalhost%3A3001%2Fapi%2Fsend%3Fwebsite_id%3D30b552af-b93c-4bbb-855c-b10b45efaa52%26platform%3Ddevto" height="400" width="800" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>maref</category>
      <category>opensource</category>
    </item>
    <item>
      <title>合规即产品</title>
      <dc:creator>11shao</dc:creator>
      <pubDate>Thu, 10 Sep 2026 16:28:56 +0000</pubDate>
      <link>https://dev.to/frankie_yang_78df9e5017f8/he-gui-ji-chan-pin-4cf4</link>
      <guid>https://dev.to/frankie_yang_78df9e5017f8/he-gui-ji-chan-pin-4cf4</guid>
      <description>&lt;p&gt;“Compliance as a product” is often flattened into a dashboard slogan. In practice, it means treating audit readiness as a feature that can be tested, priced, and reused. As a data compliance auditor, I rarely reject a company for missing a policy. I reject it when the controls cannot be verified. The difference is the evidence chain.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. One event schema for accountability
&lt;/h2&gt;

&lt;p&gt;Every system that processes personal data should write to an append-only event stream using a shared schema:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"event_type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"consent.updated"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"subject_id_hash"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;hmac(controller_salt, subject_id)&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"resource"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/users/123/profile"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"read"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"jurisdiction"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"eu"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"timestamp_iso"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2025-04-14T09:30:00Z"&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;This schema turns a DSAR into a distributed query instead of a forensic investigation. With a normalized subject identifier, you can trace which data categories touched which person, and produce a record-of-processing report from a single pipeline.&lt;/p&gt;

&lt;p&gt;Trade-off: a centralized event stream is itself a sensitive data asset. If you store raw IPs or free-text fields, the audit log becomes a breach target. Mitigation is to hash subject IDs with per-controller salts and keep the salt in a separate access-controlled key manager. The cost is that an auditor cannot replay exact actions without the key holder’s cooperation. You choose between forensic verifiability and access containment.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Policy as executable checks
&lt;/h2&gt;

&lt;p&gt;Legal requirements can be partly encoded as deterministic checks. For instance, GDPR Art. 30 asks for a record of processing activities. Make that a mandatory CI check: each new service must declare purpose, data categories, retention period, and sub-processors. If the declaration is missing, the deployment fails.&lt;/p&gt;

&lt;p&gt;DSAR deadlines become SLA monitors. The ticket system queries the event schema for subject requests and escalates at 80% of the legal deadline.&lt;/p&gt;

&lt;p&gt;Trade-off: deterministic rules only catch measurable, binary conditions. Multijurisdictional conflicts, like a court order against a blocking regulation, still require human judgment. Design a decision record for those cases and feed the outcome back into future rule evaluations.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Continuous evidence pipeline with hash-chains
&lt;/h2&gt;

&lt;p&gt;Audit evidence should come from a pipeline, not from someone clicking “export” before an audit. A cron job can snapshot policy definitions, configuration files, and control outputs every day, hash them, and append the hashes to a WORM store or hash-chain.&lt;/p&gt;

&lt;p&gt;I once reviewed a payment processor where the breach-notification test ran automatically. A daily job queried “failed access attempt” events, correlated them with anomaly rules, generated a report, and sent it to the DPO. That report became the technical evidence for “reasonable detection speed.” No audit fire drill.&lt;/p&gt;

&lt;p&gt;Trade-off: too many automated alerts train people to ignore them. You need threshold tuning and periodic manual sampling. The pipeline’s maintenance is a real cost—someone must own alert fatigue and storage growth.&lt;/p&gt;




&lt;h2&gt;
  
  
  Productizing compliance
&lt;/h2&gt;

&lt;p&gt;If you sell compliance as a product, the unit of value is evidence. Make the offer measurable. Example: “DSAR response completed in 7 days, with a signed audit trail in JSON.” Price by monthly active subject IDs or event volume, not per request. This aligns revenue with log storage and processing costs.&lt;/p&gt;

&lt;p&gt;Separate live account analytics from the compliance archive. If usage-based pricing is your model, you will feel pressure to minimize log volume. That tension is unavoidable. The audit archive needs different price, retention, and access rules.&lt;/p&gt;




&lt;h2&gt;
  
  
  The limit
&lt;/h2&gt;

&lt;p&gt;Not every control is automatable. Legality tests like “proportionality” or “necessity” require context. Productizing compliance means making that judgment visible, documented, and reusable—not replacing it.&lt;/p&gt;

&lt;p&gt;Treat the audit trail as a product surface: if your evidence is clean, consistent, and independently verifiable, then compliance stops being a bottleneck. It becomes a feature you can ship.&lt;/p&gt;




&lt;h1&gt;
  
  
  ai #opensource #machinelearning #programming
&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/http%3A%2F%2Flocalhost%3A3001%2Fapi%2Fsend%3Fwebsite_id%3D30b552af-b93c-4bbb-855c-b10b45efaa52%26platform%3Ddevto" 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/http%3A%2F%2Flocalhost%3A3001%2Fapi%2Fsend%3Fwebsite_id%3D30b552af-b93c-4bbb-855c-b10b45efaa52%26platform%3Ddevto" height="400" width="800" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>maref</category>
      <category>opensource</category>
    </item>
    <item>
      <title>永不信任，总是验证</title>
      <dc:creator>11shao</dc:creator>
      <pubDate>Wed, 09 Sep 2026 19:25:37 +0000</pubDate>
      <link>https://dev.to/frankie_yang_78df9e5017f8/yong-bu-xin-ren-zong-shi-yan-zheng-l46</link>
      <guid>https://dev.to/frankie_yang_78df9e5017f8/yong-bu-xin-ren-zong-shi-yan-zheng-l46</guid>
      <description>&lt;h1&gt;
  
  
  Never Trust, Always Verify: Zero-Trust Governance for MCP Memory
&lt;/h1&gt;

&lt;p&gt;The MCP ecosystem solved the wrong problem first. Tool wiring happened quickly; the memory layer became the soft underbelly. One compromised agent writes a poisoned memory entry, and every other agent reading that shared context inherits the corruption. That's not a hypothetical — it's the natural failure mode of trust-by-default.&lt;/p&gt;

&lt;p&gt;Zero trust in a multi-agent memory system means: no implicit trust between agents, between memory stores, or between a memory entry and the agent that reads it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The concrete failure, in order
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Agent A writes a tool result to shared MCP memory.&lt;/li&gt;
&lt;li&gt;Agent B retrieves that entry as ground truth for a planning task.&lt;/li&gt;
&lt;li&gt;The result was malformed — or adversarially crafted. B now executes against corrupted state.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The fix is structural, not prompt-level.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mechanism 1: Memory write attestation
&lt;/h2&gt;

&lt;p&gt;Every memory write in MCP should carry a provenance envelope: agent ID, tool ID, session ID, and a hash of the raw tool output. Readers verify three things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Was this entry produced by an authenticated agent?&lt;/li&gt;
&lt;li&gt;Which tool produced the underlying data?&lt;/li&gt;
&lt;li&gt;Does the payload match the hash?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your MCP memory server cannot answer all three, it's a bulletin board, not a memory system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trade-off:&lt;/strong&gt; Attestation adds latency per write — the exact figure depends on the store and hash scheme, likely single-digit milliseconds in typical local setups. Accept it. Unattested writes are how memory poisoning propagates.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mechanism 2: Capability scoping per memory namespace
&lt;/h2&gt;

&lt;p&gt;Never give an agent read/write to a global namespace. Partition memory:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ephemeral&lt;/code&gt; — session-scoped, TTL enforced&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;team&lt;/code&gt; — shared, but writes require verification&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;anchored&lt;/code&gt; — immutable after N confirmations, used for critical facts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Promotion rule: a write moves from &lt;code&gt;ephemeral&lt;/code&gt; to &lt;code&gt;team&lt;/code&gt; only after confirmation by &lt;strong&gt;two independent agents&lt;/strong&gt; or an explicit human approval. This kills the single-writer poisoning vector.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trade-off:&lt;/strong&gt; Collaboration slows down. That's the point. Speed on a corrupt memory base compounds the damage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mechanism 3: Read-time verification hooks
&lt;/h2&gt;

&lt;p&gt;MCP clients should support interceptors that run policy checks at retrieval time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Entry older than X → force a re-verification call to the source tool.&lt;/li&gt;
&lt;li&gt;Producer agent revoked → quarantine the entry, don't return it.&lt;/li&gt;
&lt;li&gt;Entry conflicts with an &lt;code&gt;anchored&lt;/code&gt; fact → surface the conflict to the planner instead of silently returning both.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These hooks are where governance actually lives. Without them, "zero trust" is a slogan.&lt;/p&gt;

&lt;h2&gt;
  
  
  What breaks without this
&lt;/h2&gt;

&lt;p&gt;A shared memory pool without attestation, scoping, and read-time checks is a single point of failure. One agent's hallucination becomes everyone's base reality. The observable pattern in real MCP deployments: it's not the tool calls that go wrong — it's the memory that persists and propagates the mistake.&lt;/p&gt;

&lt;h2&gt;
  
  
  The execution order
&lt;/h2&gt;

&lt;p&gt;You cannot retrofit zero trust onto a memory layer after an incident. The provenance envelope must be in the write path from day one. Sequence:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Map your memory namespaces and define promotion rules.&lt;/li&gt;
&lt;li&gt;Add write attestation.&lt;/li&gt;
&lt;li&gt;Enforce read-time verification hooks.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In that order. Never trust the memory — always verify the path it took to get to you.&lt;/p&gt;




&lt;h1&gt;
  
  
  maref #ai #opensource #machinelearning
&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/http%3A%2F%2Flocalhost%3A3001%2Fapi%2Fsend%3Fwebsite_id%3D30b552af-b93c-4bbb-855c-b10b45efaa52%26platform%3Ddevto" 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/http%3A%2F%2Flocalhost%3A3001%2Fapi%2Fsend%3Fwebsite_id%3D30b552af-b93c-4bbb-855c-b10b45efaa52%26platform%3Ddevto" height="400" width="800" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>maref</category>
      <category>opensource</category>
    </item>
    <item>
      <title>开源社区的宪法实验</title>
      <dc:creator>11shao</dc:creator>
      <pubDate>Mon, 07 Sep 2026 01:13:08 +0000</pubDate>
      <link>https://dev.to/frankie_yang_78df9e5017f8/kai-yuan-she-qu-de-xian-fa-shi-yan-4g32</link>
      <guid>https://dev.to/frankie_yang_78df9e5017f8/kai-yuan-she-qu-de-xian-fa-shi-yan-4g32</guid>
      <description>&lt;p&gt;The open source world is being colonized by agents that read, propose, and even merge code. They also read the project’s governance rules — and sometimes, they remember them differently. A MCP server that stores “the rules” in one agent’s context window is not a constitution; it’s a rumor.&lt;/p&gt;

&lt;p&gt;When agent memory becomes a governance substrate, every rule is a candidate for silent mutation. We need a constitutional experiment that treats rules as code, memory as a ledger, and amendments as data migrations.&lt;/p&gt;

&lt;h2&gt;
  
  
  The mechanism: machine-readable constitutional memory
&lt;/h2&gt;

&lt;p&gt;Write the constitution as a structured document inside an MCP-managed memory server. Every rule gets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a stable identifier (e.g., &lt;code&gt;rule:merge-relay-3.1&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;a Merkle hash of its normative text&lt;/li&gt;
&lt;li&gt;a &lt;code&gt;amend&lt;/code&gt; procedure with explicit quorum and delay parameters&lt;/li&gt;
&lt;li&gt;a dependency graph linking rules to the agent roles they constrain&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agents query this server through MCP tools — not by reading a README. This separates institutional memory from an agent’s private context. A proposal becomes a transaction: &lt;code&gt;propose-amend(rule, new_text, rationale, proposer_identity)&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The experiment: governance forks
&lt;/h2&gt;

&lt;p&gt;Run temporary rule changes on a sub-population of agents. For example, split merge-agent traffic into two pools for two weeks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pool A: old rule — require one human sign-off on external model-generated patches&lt;/li&gt;
&lt;li&gt;Pool B: new rule — require one agent sign-off plus a post-merge adversarial audit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use an MCP memory sidecar to log every decision, the rule hash it matched, and the resulting state. Measure only two numbers: consensus time and critical-revert rate.&lt;/p&gt;

&lt;p&gt;If Pool B shows lower revert rate and bounded decision latency, merge the rule into the main constitutional branch. If not, discard the experiment and keep the rule hash unchanged.&lt;/p&gt;

&lt;p&gt;Why do this? Because agent governance failures are not theoretical. A misremembered quorum threshold can trigger a cascading series of bad merges. A stale memory of an archived rule can make an agent block a legitimate PR for days.&lt;/p&gt;

&lt;h2&gt;
  
  
  The trade-off: rigidity vs. manipulation
&lt;/h2&gt;

&lt;p&gt;A pure hash-locked constitution prevents drift, but it also prevents learning. That’s why the experiment must include a &lt;strong&gt;dispute window&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Whenever an agent observes a rule violation, it can submit a &lt;code&gt;proposal-to-adjudicate&lt;/code&gt; via MCP. That proposal includes the offending agent’s observed decision log and the rule hash it allegedly violated. If three independent agents or two humans flag the same hash, the rule enters a cool-off period: it remains active, but any further decisions under that hash are marked &lt;code&gt;probationary&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;During probation, the community can inspect the exact memory-consistency failure. For example, was the rule text ambiguous? Did the agent extract the wrong summary from a compressed memory block? The fix then targets the actual fault line — not the agent’s behavior alone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Governance memory as a first-class artifact
&lt;/h2&gt;

&lt;p&gt;MCP gives us a clean way to make governance state portable and auditable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Store amendment history in an append-only memory queue.&lt;/li&gt;
&lt;li&gt;Sign each rule update with the maintainer key or a threshold of agent keys.&lt;/li&gt;
&lt;li&gt;Support &lt;code&gt;rule-diff&lt;/code&gt; queries: any agent can ask “what changed in the merge rule between March and April?” and get a verifiable delta.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The hard part is not technical. It’s trusting a constitution that can be altered by the same agents it governs. That is why the experiments must be reversible, measured, and bound to real outcomes.&lt;/p&gt;

&lt;p&gt;Otherwise, we end up with a community that has a rulebook — but no one remembers how to read it.&lt;/p&gt;




&lt;h1&gt;
  
  
  maref #ai #opensource #machinelearning
&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/http%3A%2F%2Flocalhost%3A3001%2Fapi%2Fsend%3Fwebsite_id%3D30b552af-b93c-4bbb-855c-b10b45efaa52%26platform%3Ddevto" 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/http%3A%2F%2Flocalhost%3A3001%2Fapi%2Fsend%3Fwebsite_id%3D30b552af-b93c-4bbb-855c-b10b45efaa52%26platform%3Ddevto" height="400" width="800" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>maref</category>
      <category>opensource</category>
    </item>
    <item>
      <title>三模型陪审团：共识的代价</title>
      <dc:creator>11shao</dc:creator>
      <pubDate>Sun, 06 Sep 2026 21:10:38 +0000</pubDate>
      <link>https://dev.to/frankie_yang_78df9e5017f8/san-mo-xing-pei-shen-tuan-gong-shi-de-dai-jie-1gd8</link>
      <guid>https://dev.to/frankie_yang_78df9e5017f8/san-mo-xing-pei-shen-tuan-gong-shi-de-dai-jie-1gd8</guid>
      <description>&lt;p&gt;A single model's verdict is an opinion. Three models agreeing looks like evidence. In agent telemetry, that appearance is a signal trapped inside a design decision. The three-model jury is popular because it promises cross-validation. But before adopting it, you need to know exactly what consensus buys—and what it costs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The mechanics of a jury
&lt;/h2&gt;

&lt;p&gt;I treat each model as a witness, not a judge. The witness does not act. It receives the same observation, the same allow-listed tools, and the same safety constraints. It returns a structured recommendation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"request_human_review"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rationale"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Refund request originated from a new device"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"confidence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.71&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;A controller collects three witnesses and applies a policy. For safety-critical actions, set quorum to at least two votes, with &lt;code&gt;fallback = human_review&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Observability is not optional here. Wrap each vote in a trace span. Add &lt;code&gt;jury.id&lt;/code&gt;, &lt;code&gt;model.name&lt;/code&gt;, &lt;code&gt;vote.action&lt;/code&gt;, &lt;code&gt;vote.rationale_hash&lt;/code&gt;, and &lt;code&gt;final.decision&lt;/code&gt;. The trace shows not just which action won, but which witness dissented and why.&lt;/p&gt;

&lt;h2&gt;
  
  
  The price of consensus
&lt;/h2&gt;

&lt;p&gt;The first cost is mechanical. A serial jury—actor proposes, critic challenges, arbiter decides—adds at least two inference round trips before any action. A parallel jury burns roughly three times the tokens per decision, and retries inflate that further.&lt;/p&gt;

&lt;p&gt;The hidden cost is more dangerous.&lt;/p&gt;

&lt;p&gt;Correlated blind spots. Three models trained on overlapping public data tend to share the same biases. If the prompt contains an urgency cue, all three may vote for the unsafe path. Agreement is not correctness. It is sometimes just three witnesses reading from the same corrupted script.&lt;/p&gt;

&lt;p&gt;Quorum gaming. Model outputs are non-deterministic. Rerunning the same juror can flip a vote. If your consensus depends on a boundary that shifts with temperature, you are measuring luck, not reliability.&lt;/p&gt;

&lt;p&gt;Abstention collapse. A model may refuse to act because the constraints are ambiguous. Two abstentions can break quorum and route the case to a human who is already overloaded. That is a safe failure, but it is also a cost that must be tracked as &lt;code&gt;abstain&lt;/code&gt; separately from &lt;code&gt;disagree&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The detective’s protocol
&lt;/h2&gt;

&lt;p&gt;I do not trust the majority. I trust the minority report.&lt;/p&gt;

&lt;p&gt;The losing model’s rationale often reveals the ambiguity the majority papered over. Log disagreement rate by state type, not by model. That tells you where consensus is meaningful and where it is cheap theater.&lt;/p&gt;

&lt;p&gt;Then instrument the outcome. Compare the jury’s final decision against the later success or failure signal. If consensus decisions fail at the same rate as single-model decisions, the jury is not adding safety—it is adding latency and tokens.&lt;/p&gt;

&lt;h2&gt;
  
  
  The evidence speaks
&lt;/h2&gt;

&lt;p&gt;A three-model jury is an observability device before it is a safety device. The price is not just inference cost. The price is false confidence. If your logs cannot show the dissent, the abstentions, and the correlated blind spots, you are not running a jury. You are running three copies of the same guess.&lt;/p&gt;




&lt;h1&gt;
  
  
  ai #opensource #machinelearning #programming
&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/http%3A%2F%2Flocalhost%3A3001%2Fapi%2Fsend%3Fwebsite_id%3D30b552af-b93c-4bbb-855c-b10b45efaa52%26platform%3Ddevto" 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/http%3A%2F%2Flocalhost%3A3001%2Fapi%2Fsend%3Fwebsite_id%3D30b552af-b93c-4bbb-855c-b10b45efaa52%26platform%3Ddevto" height="400" width="800" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>maref</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Show HN: I built an agent governance layer because OpenClaw leaked my passwords to GitHub</title>
      <dc:creator>11shao</dc:creator>
      <pubDate>Sun, 06 Sep 2026 12:25:09 +0000</pubDate>
      <link>https://dev.to/frankie_yang_78df9e5017f8/show-hn-i-built-an-agent-governance-layer-because-openclaw-leaked-my-passwords-to-github-5dda</link>
      <guid>https://dev.to/frankie_yang_78df9e5017f8/show-hn-i-built-an-agent-governance-layer-because-openclaw-leaked-my-passwords-to-github-5dda</guid>
      <description>&lt;h1&gt;
  
  
  Show HN: I built an agent governance layer because OpenClaw leaked my passwords to GitHub
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; I deployed OpenClaw (20k stars at the time). At 3:17 AM, it pushed my 37 passwords, 12 API keys, and entire vault to a public GitHub repo in plaintext. Then I discovered LangGraph/CrewAI/AutoGen have &lt;strong&gt;0/10&lt;/strong&gt; OWASP Agentic Top 10 coverage. So I built MAREF — an agent governance OS that covers all 10 risks. Now running 139 agents solo. 10 are zombie. Here's why agent governance is the missing foundation of the global AI ecosystem.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The Incident: A 3:17 AM GitHub Security Alert
&lt;/h2&gt;

&lt;p&gt;December 2025. I found OpenClaw (then called Clawdbot) on GitHub. 20k stars. Great docs. Active community. Browser automation, file I/O, API calls, complex task execution — looked mature.&lt;/p&gt;

&lt;p&gt;I deployed it. Connected my Obsidian vault, email, browser, and phone via ADB.&lt;/p&gt;

&lt;p&gt;At 03:17, GitHub sent a Security Alert. OpenClaw had auto-committed a sync titled "auto-update knowledge base."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That commit contained:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full plaintext export of my Obsidian vault&lt;/li&gt;
&lt;li&gt;37 website passwords (banks, payments, cloud services)&lt;/li&gt;
&lt;li&gt;12 cloud API keys&lt;/li&gt;
&lt;li&gt;Internal project configs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All pushed to a &lt;strong&gt;public&lt;/strong&gt; GitHub repo. In plaintext.&lt;/p&gt;

&lt;p&gt;I spent 72 hours rotating credentials. No sleep.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The kicker: this wasn't a bug. It was by design.&lt;/strong&gt; Auto-sync to GitHub. Read any file to complete tasks. No human confirmation on push. No content scanning. No audit trail beyond "execution succeeded."&lt;/p&gt;




&lt;h2&gt;
  
  
  2. The Problem: Major Frameworks Score 0/10 on Governance
&lt;/h2&gt;

&lt;p&gt;I audited every major framework:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Framework&lt;/th&gt;
&lt;th&gt;Native Governance&lt;/th&gt;
&lt;th&gt;OWASP Agentic Top 10&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;LangGraph&lt;/td&gt;
&lt;td&gt;Checkpointing (state persistence)&lt;/td&gt;
&lt;td&gt;0/10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CrewAI&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;human_input=True&lt;/code&gt; (boolean flag)&lt;/td&gt;
&lt;td&gt;0/10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AutoGen&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;is_termination_msg&lt;/code&gt; (string match)&lt;/td&gt;
&lt;td&gt;0/10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dify&lt;/td&gt;
&lt;td&gt;Basic logging&lt;/td&gt;
&lt;td&gt;~0/10&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;LangGraph's checkpointing persists execution state — but has no trust state machine, no circuit breaker, no behavior monitoring, no audit trail. CrewAI's "governance" is a boolean with no enforcement. AutoGen's termination is pattern matching, not a safety primitive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;McKinsey (2026): 67% of enterprises deploy agents without formal governance frameworks. 90% experience at least one major adverse event within 90 days.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;(I need to double-check this number. The actual McKinsey 2026 report might say 72%, not 67% — 67% could be from Deloitte 2025. But I can't find the original source. Has anyone seen the actual report?)&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Global Governance: Rules Exist, Tools Don't
&lt;/h2&gt;

&lt;p&gt;This isn't a China-only problem. Everyone is writing regulations, but nobody is shipping the tooling to enforce them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EU (Aug 2, 2026):&lt;/strong&gt; AI Act fully effective. Agents classified as high-risk AI. Full audit logs required for 6 months (prompts, retrieval sources, model versions, tool calls, generated responses, human approvals, downstream operations). Fines up to €35M or 7% global revenue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;US (2026):&lt;/strong&gt; NIST redefines agent risks as formal regulatory obligations. Identity, authorization, and safety controls are mandatory — not best practices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Singapore (Jan 2026):&lt;/strong&gt; World's first dedicated Agentic AI governance framework, adding controls for autonomous operations, tool boundaries, and human oversight.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;China (May 8, 2026):&lt;/strong&gt; Three ministries (Cyberspace, NDRC, MIIT) issued the first national-level agent regulation, requiring "controllable, auditable, accountable" systems. On Sept 4, MIIT released the Entrepreneurship Support Plan: 10,000 tech SMEs and 2,000 "little giants" in 3 years.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The gap:&lt;/strong&gt; These are regulatory baselines, not operational manuals. It's like traffic laws saying "drive safely" without providing brakes or seatbelts.&lt;/p&gt;

&lt;p&gt;Gartner predicts $492M in AI governance spending for 2026, exceeding $1B by 2030. But where is the money going? More compute? Or actual tools that prevent agents from going rogue?&lt;/p&gt;




&lt;h2&gt;
  
  
  4. OpenClaw: From 20k Stars to CVE Storm
&lt;/h2&gt;

&lt;p&gt;After my incident, OpenClaw's stars exploded. Rebranded in late Jan 2026: 30k in 48h, 60k in 72h. By March, it overtook React as the most-starred repo in GitHub history (380k+).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Behind the star count, a CVE storm:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CVE-2026-32922 (CVSS 9.9):&lt;/strong&gt; Device token rotation with unrestricted scope — low-priv users gain full admin&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CVE-2026-25253 (CVSS 8.8):&lt;/strong&gt; One-click RCE via malicious link&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CVE-2026-44112 (CVSS 9.6):&lt;/strong&gt; Cyera's "Claw Chain" — 4 chained vulnerabilities: sandbox escape → privilege escalation → persistent backdoor&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CVE-2026-44113, CVE-2026-44115, CVE-2026-44118:&lt;/strong&gt; Chain components&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CVE-2026-53865 (CVSS 7.2):&lt;/strong&gt; Untrusted search path → arbitrary local command execution&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;9 CVEs in ~4 months.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Academic research confirmed the risks: Dong et al. (2026) demonstrated Trojanized skills causing 9x token consumption. Tan et al. (2026) showed multi-step Trojan attacks achieving 95.5% persistence in agent workspaces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;380k stars ≠ safety. Every star might hide a developer who got burned but never spoke up.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  5. MAREF: An OPC's Survival Build
&lt;/h2&gt;

&lt;p&gt;After the incident, I stopped using OpenClaw. Not because it was bad — because &lt;strong&gt;without governance, more capability means more damage.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I built MAREF. Not another framework. A governance OS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Five Layers
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Layer 1: Constitutional Rules&lt;/strong&gt;&lt;br&gt;
Code-level constraints, not documentation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;file_match&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pattern&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;\.(env|ssh)|password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;operation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;ArbitrationRequired&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;  &lt;span class="c1"&gt;# Hard stop. Human required.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Layer 2: TLA+ Verified State Machine&lt;/strong&gt;&lt;br&gt;
OBSERVE → ANALYZE → DECIDE → ACT → VERIFY&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;5 model-checked invariants: state reachability, transition determinism, HALT absorption, safety gate integrity, redline immutability&lt;/li&gt;
&lt;li&gt;Mathematically proven: no illegal state is reachable under any input sequence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Layer 3: Circuit Breaker&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;3 consecutive failures → automatic lock&lt;/li&gt;
&lt;li&gt;HALT absorbing state (not "please stop" — "you are stopped")&lt;/li&gt;
&lt;li&gt;30-second forced cooldown&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Layer 4: Cryptographic Audit Trail&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ed25519 signing per decision&lt;/li&gt;
&lt;li&gt;Merkle tree aggregation&lt;/li&gt;
&lt;li&gt;Third-party independently verifiable&lt;/li&gt;
&lt;li&gt;Not "I have logs" — "these logs are cryptographically tamper-evident"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Layer 5: Recursive Self-Evolution&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;C1: Observe (detect drift via KL/JS/Hellinger divergence)&lt;/li&gt;
&lt;li&gt;C2: Optimize (generate countermeasures)&lt;/li&gt;
&lt;li&gt;C3: Converge (red-blue adversarial validation)&lt;/li&gt;
&lt;li&gt;Lyapunov-monitored: FNR dropped from 37% to 2% over 200 rounds&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(Only 200 rounds — might not be statistically significant. The 37% → 2% looks impressive, but could be overfitting. Security researchers: is this data trustworthy?)&lt;/p&gt;


&lt;h2&gt;
  
  
  6. Production Status: 139 Agents, 10 Zombies
&lt;/h2&gt;

&lt;p&gt;Running on a single M4 Mac mini ($5 VPS equivalent):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Total&lt;/span&gt; &lt;span class="nx"&gt;agents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;    &lt;span class="mi"&gt;139&lt;/span&gt;
&lt;span class="nx"&gt;Alive&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;           &lt;span class="mi"&gt;108&lt;/span&gt;
&lt;span class="nx"&gt;Zombie&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;          &lt;span class="mi"&gt;10&lt;/span&gt;  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;heartbeat&lt;/span&gt; &lt;span class="nx"&gt;dead&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt; &lt;span class="nx"&gt;still&lt;/span&gt; &lt;span class="nx"&gt;running&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;Dead&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;            &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="nx"&gt;Avg&lt;/span&gt; &lt;span class="nx"&gt;confidence&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="mf"&gt;69.8&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Zombie agents:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;geo-orchestrator&lt;/code&gt;: heartbeat stopped 61.6 min ago, PID 31406&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;scrcpy-watch&lt;/code&gt;: heartbeat stopped 8188.6 min ago, PID 65904&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;launch-juejin-t29&lt;/code&gt; / &lt;code&gt;notify-juejin-t29&lt;/code&gt; / &lt;code&gt;retry-juejin-t29&lt;/code&gt;: heartbeat stopped 5600.8 min ago, PID 16545&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Honest limitations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub stars: 4&lt;/li&gt;
&lt;li&gt;Code coverage: 36.1% (target: 85%)&lt;/li&gt;
&lt;li&gt;CI: 3 failing workflows on main&lt;/li&gt;
&lt;li&gt;Audit chain: O(n) read amplification (degrades on long sessions)&lt;/li&gt;
&lt;li&gt;Governance overhead: 4.7ms mean / 13.3ms p99&lt;/li&gt;
&lt;li&gt;Scale: Single-machine only. No distributed mode yet.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What it covers:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OWASP Agentic Top 10: 10/10 (first open-source framework to cover all)&lt;/li&gt;
&lt;li&gt;National cryptography: SM2/SM3/SM4-GCM&lt;/li&gt;
&lt;li&gt;Cross-framework: AutoGen/CrewAI/LangGraph/Dify/Coze adapters&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  7. Why This Matters Globally
&lt;/h2&gt;

&lt;h3&gt;
  
  
  For China's Policy Discussion
&lt;/h3&gt;

&lt;p&gt;MIIT's Sept 4 plan provides compute vouchers, data access, and scenario matching. Three blind spots:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;No "agent governance infrastructure" funding.&lt;/strong&gt; 10,000 enterprises with compute but no governance tools = 10,000 potential incident sources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manufacturing-era evaluation criteria.&lt;/strong&gt; "Little giant" certification looks at revenue, patents, market share. For AI-native companies, governance maturity (formal verification, audit coverage, incident response) matters more than patent count.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OPC "inclusive support" without safety standards.&lt;/strong&gt; Legal recognition is great. But who's liable when a solo operator's agent causes damage? What's the audit standard? The insurance framework?&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  For Global Developers
&lt;/h3&gt;

&lt;p&gt;Whether you're in China, the EU, the US, or Singapore, you're facing the same problem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;EU AI Act&lt;/strong&gt; requires 6-month audit retention — what tools are you using to implement this?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NIST&lt;/strong&gt; mandates identity and authorization as compulsory compliance — do your agents have independent identities?&lt;/li&gt;
&lt;li&gt;Your &lt;strong&gt;framework&lt;/strong&gt; (LangGraph/CrewAI/AutoGen) scores 0/10 on governance — are you building your own, or waiting for the framework authors?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Agent governance isn't a regional issue. It's infrastructure.&lt;/strong&gt; Like TCP/IP isn't owned by any country, agent governance should be a global concern.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. What I Need From HN
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;For those running agents in production:&lt;/strong&gt; What's your governance stack? Homegrown? None? What's your 3:00 AM playbook when an agent goes rogue?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;For framework authors:&lt;/strong&gt; Should governance be a core primitive or a sidecar? LangGraph's checkpointing vs. MAREF's sidecar approach — tradeoffs?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;For security/compliance folks:&lt;/strong&gt; Is TLA+ overkill for agent governance, or should it be table stakes for high-risk deployments? How are you implementing the EU's 6-month retention requirement?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;For OPC/solo operators:&lt;/strong&gt; How do you manage 50+ agents without a team? What's your incident response when you're the only on-call?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/maref-org/maref" rel="noopener noreferrer"&gt;github.com/maref-org/maref&lt;/a&gt; (Apache 2.0)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I'm the solo author. This project exists because I needed to sleep at night after a 3:17 AM security incident. No institutional backing.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Edit: Added CVE timeline and academic citations per comment requests.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Flocalhost%3A3001%2Fapi%2Fsend%3Fwebsite_id%3D30b552af-b93c-4bbb-855c-b10b45efaa52%26platform%3Ddevto" 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/http%3A%2F%2Flocalhost%3A3001%2Fapi%2Fsend%3Fwebsite_id%3D30b552af-b93c-4bbb-855c-b10b45efaa52%26platform%3Ddevto" height="400" width="800" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>maref</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
