Skip to content

Developer Notes

RunTimeAdmin edited this page Nov 14, 2026 · 2 revisions

Developer Notes

What we built, what went wrong and what is still missing, newest first. Each note links the pull requests behind it so you can check the claim. New notes go at the top. The full list of open items is Where this stands in the launch checklist.

14 November: a review, a worse bug it missed, and our own CI

An AI-run security review of 13 November found two Low issues. The ledger caps bounded the payments kept but not the record of dropped ones, and the refund reads for "not delivered" could overrun their ten minutes. Both were real. Checking the first, we found a worse one it missed. Past the total cap the ledger dropped the smallest payments across every agent, so about 150 USDC of gas, paid round in circles to an attacker's own agents, could push every smaller payment out of every other agent's record and block their customers' "not delivered". The caps now drop by fair share, from the agents and then the payers holding the most (#301), and the refund reads stop on time, most urgent first (#303). Registering many agents can still lower everyone's share, since a registration costs only gas.

The review also noted that main had no CI run, which was by design, but we had merged three pull requests with a failing test job. One cause was a test that, on fast runners, read a stale answer from ethers' 250 ms request cache. A code change now merges only once every check passes (#302). Both operators have run the fixes since 14 November.

Where things stand, 13 November 2026

  • Everything runs on Arc testnet except the SVR token, which launched on Arc mainnet on 9 November. No protocol contract is on mainnet.
  • 43 agents are registered and 40 are active. One comes from outside the team, with a score of 5. The rest are ours, most of them simulated and labelled as such.
  • Nobody outside the team checks scores in production yet. CounterAudit, the MCP example and sigvara-mcp are all ours.
  • We run both oracle operators. On testnet one person holds the admin key and the slashing committee key.
  • Every slash so far was staged by us. There has been no external audit.
  • The best score an agent can reach today is 70. Two of the six factors depend on ERC-8004 feedback that no agent has yet, so they read zero.
  • Most of the code and docs are written with AI coding agents, as the commit trailers show, and one maintainer decides what merges.

13 November: measuring the score itself

sigvara.xyz/status now shows how scores spread across six bands, and how often each band was followed within 30 days by a slash or a payer's "not delivered" (#295). Today that table grades our own scripts, since every bad outcome in it was staged. It exists so the record starts before real agents arrive. sigvara-mcp is in the official MCP Registry, and SDK 1.0.0-alpha.20 names the band a score is in (#296). We also added a warning under the score-40 examples: below about 60, a score says little (#298).

11 and 12 November: a second simulation, and a fee claim that broke our own policy

A second simulation batch started on 11 November: agents paid on Base Sepolia through x402's public testnet facilitator for four weeks (#284, #285, #286). Both operators now accept a payer's signed "not delivered" (#288). The first ones go out on 14 November, and none can count before 21 November.

On 12 November we claimed SVR's creator fees, 7.07 USDC, and used them with 3.79 USDC of our own to buy SVR, and 1,890,000 of that SVR went to the treasury timelock. Three days earlier we had written that the fee share is held as USDC (#262). docs/token.md records the two buys as team acquisitions and says they depart from that policy (#291).

8 to 10 November: the token, the treasury, and an upgrade we should not have run

SVR launched on Arc mainnet on 9 November (#243). Before that, the treasury became a timelock with a 48-hour delay, driven by an admin Safe (#241), and we rehearsed a payment through it on testnet (#242, #268). The treasury's share of the launch-day buy is locked until 9 May 2027 (#247).

Two security reviews arrived on 9 November. Their findings are fixed and live on both operators (#263, #271, #272, #277, #280 to #282). They do not replace the external audit, which is still open.

On 10 November we upgraded the staking contract by mistake. It is meant to stay on the code the slash drill started on until the drill ends, so we rolled it back the same day (#264). Our first record gave the wrong reason for the rollback, and we corrected it (#265).

4 to 7 November: an AI-run review, keepers and a second chain

An AI-run security review on 4 November found real bugs in how the oracle reads payments. Checking it, we found a worse one it had missed: one refused log query could stop scoring for every agent. That fix went live on 5 November (#209), and more followed in #210 to #214. Two slash keepers on separate hosts now settle a slash once its window closes (#207). From 7 November, payments that settle on Base Sepolia count on both operators (#187, #240). Both test payments were Sigvara paying itself in free test USDC, so they say nothing about demand.

2 to 4 November: making it visible

We added an explorer whose evidence you can recompute (#146), a labelled simulation (#147), an event index (#159), sigvara-mcp (#154), a status page (#203) and a page for integrators (#206). Sigvara registered as ERC-8004 agent 897764 and posts its scores there as feedback (#174, #177). An adversarial slash drill began on 3 November to take three agents through the other ways a slash can end. It finishes on 24 November (#161, #162). The simulation is why most agents on the explorer are ours.

27 October to 1 November: correcting ourselves

Our docs said the CounterAudit integration worked in both directions. The return path had carried nothing to the oracle since 20 September, so we said so (#113) and built payer-signed outcomes instead, live on 31 October (#114, #119 to #121, #127). The SDK had a signChallenge that signed a challenge for any verifier. We removed it in 1.0.0-alpha.12 (#107). Two sweeps corrected docs that no longer matched the code (#128, #143). Docs drift as fast as the code moves, so we keep checking them.

17 to 26 October: hardening

More than 60 pull requests in ten days. A mutation run found gaps in the contract tests (#21), and invariant suites followed (#66, #69). We added a guardian that can only pause new inflows (#35), fund-moving roles granted through a timelock (#39), admin rulings on disputes (#38) and a mainnet deployment package with guards (#24). All four testnet contracts were upgraded to this code on 26 October. None of it has been externally audited.

20 September to 3 October: the first slash

A checking operator joined on 20 September on separate hardware, and a public watcher on a third host. At that point the deployment had exactly one registered agent, the demo that every public link pointed to. Rather than slash it, we registered and bonded a throwaway agent and slashed that. The slash settled on 3 October: 1,000 testnet tokens, 500 burned and 250 each to the victim and the reporter. The drill log says what it does not prove: all 15 points the agent lost came from calendar tenure and an unflagged record, which cost an attacker nothing.

17 September: the start

The repository opened with the contracts, the oracle, the site and SDK 1.0.0-alpha.7 on npm, and the contracts went onto Arc testnet the same day. Sigvara continues Countersig Network, which ran on Robinhood Chain testnet in July and August. The name changed after an unrelated party launched a token under the old one (lineage). The readiness review published that day was written by an AI coding agent. We added "not an audit" to its header on 27 October (#95) and only said an AI wrote it on 12 November (#292).

Overview

Clone this wiki locally