Every change that moved a published figure or changed what it counts, dated, with what a reader who used the old one needs to know. Corrections are in the same list as everything else and are not marked more quietly.
A rendering fix, a new page or a faster query is not here however much work it was. What belongs is the small number of changes where the same question asked last month and today gives a different answer.
Each lineage block on the API reports the methodology version it was built at. Current: aspern-0.5.
The ERC-8004 assessment document carries its OWN version, because it is inside a hash and the stamp above is not. It is currently aspern-0.4, and this build can still produce aspern-0.4, aspern-0.3, aspern-0.2. That list never shrinks, a published hash is a commitment, and it can only be re-derived if the version that produced it still builds.
For the larger Morpho vaults, a withdrawal is now tried by simulation: the vault runs its own withdraw at one block on behalf of its largest depositor, for a small size, a tenth of the vault, the venue’s withdrawable figure and that holder’s whole position, and nothing is sent. The page and the report say which sizes would have gone through and why the others would not.
What it means for a figure you already have. A way out is no longer only what the readings imply; it is also what the vault would have done at that block, for one holder, before anybody else took the same liquidity.
the vault page, the API vault check and every due diligence report
The largest depositor’s share is taken over the larger of the vault’s own size and the sum of the depositor list. Where the two disagree the reading says “at least”, because the share is then a lower bound. Over the vault’s size alone, a vault with one depositor read a little over the whole and was refused, so its concentration and its band changed between runs with nothing about the vault changing.
What it means for a figure you already have. Concentration readings on vaults whose list and size disagree may read slightly lower and are marked as a lower bound; a share over the whole is still refused.
the vault page, the API and every due diligence report
The daily not-lent series is named for what each point is: the vault’s own figure for what it has not lent, over what it has lent plus that figure, which is its whole book. It had been described as the share of supplied capital that no borrower held, and on a vault with money in no market we read the two differ by that money, which the old words counted as supplied and not borrowed.
What it means for a figure you already have. The figures are unchanged; read the series as a share of the book, and the capital account beside it for the split between supplied-and-not-borrowed and money in no market we read.
the vault page, the sample reports and every due diligence report
A fully borrowed Morpho market is now read over its history: supplied, borrowed and the rate model’s rate at target at blocks about thirty days apart, and when anyone last borrowed, repaid or was liquidated, from the venue’s transaction index. On 1337 USDC’s market it showed full borrowing at the rate ceiling at every reading since 5 January 2026 and no repayment since 2 December 2025.
What it means for a figure you already have. Where a vault’s share price grows at the rate ceiling, the report now says whether any of it has been paid in. The score is unchanged: the anomalous input stays withheld.
the vault page, /v1/vaults/{slug}/check (marketHistory) and every due diligence report
Shared exposure (crowding) is scored by the size of the crowd. It had scored the share of a vault’s lending that sits in a market the tracked vaults dominate, whoever held the rest of it, so a vault that was most of a market by itself read as crowded by others. It is now that share times the part of the market the OTHER tracked vaults hold, in full from half the market and proportionally below. Score model risk-2, part crowding-2.
What it means for a figure you already have. Measured on the day across all 1,000 scored vaults: 52 had their shared exposure scaled down and 21, holding $2.37bn, moved down a band (10 moderate to low, 6 high to moderate, 4 severe to high, one severe to moderate). A score from before 1 November is not comparable with one after it: the change across the day is the model’s, not the vault’s.
the risk score on every vault page, /v1/vaults/{slug}/check, and every due diligence report
An input marked as an unresolved data anomaly is withheld from the score rather than counted as read. A share-price series that grows at an implausible rate reads a worst fall of zero, and counting that zero lowered the score of exactly the vaults whose data was least trustworthy. The score is computed over the remaining inputs, the band says it is affected by the anomaly, and the score with the input counted is printed beside it as a sensitivity. Score model risk-2, part anomaly-1.
What it means for a figure you already have. 17 vaults holding $1.46bn carried such a series on the day. The methodology version moves from aspern-0.3 to aspern-0.5 for both changes; it skips 0.4, which is the assessment document’s number.
the risk score, the due diligence report, and meta.methodologyVersion on every endpoint
The attested assessment document scored liquidity from a share it first clamped to 100%, and then wrote the clamped figure into its own sentence. One vault read 222.6% of itself, which is impossible: it is a disagreement between two of our own readings rather than a fact about the vault. It was attested as “100.0% of this vault could be withdrawn”, inside a hash. The impossible figure is now withheld from every version of the document, and from aspern-0.4 the document records WHY, as a refusal with the figure in it, instead of simply carrying no liquidity dimension.
What it means for a figure you already have. Measured across the open vaults whose share is readable at all: 62 of them, holding $300,179,473, read over 100% and had been scored full marks for liquidity. They now carry no liquidity grade and a named refusal. The aspern-0.2 and aspern-0.3 BUILDERS are unchanged; their INPUT is not, because the impossible share is withheld before any version is built. So for these 62 vaults a 0.2 or 0.3 document built today has no liquidity dimension, and a hash issued under those versions before 21 October describes the reading of its own day and cannot be re-derived from today’s. For every other vault the same input gives the same bytes.
/v1/vaults/{slug}/assessment, and the ERC-8004 document it serves
The version stamped on every API answer and the version of the attested document are now two separate numbers. They had been one constant, which meant correcting a single dimension inside the hashed document would have moved the methodology version on every response the API serves.
What it means for a figure you already have. Nothing a reader sees changed today: `meta.methodologyVersion` still reads aspern-0.3, because no figure on the site changed meaning. The assessment document moved to aspern-0.4 on its own. A reader comparing the two numbers should expect them to drift apart from here, and neither is a typo.
meta.methodologyVersion on every endpoint, and the assessment document
Hyperliquid’s capital was overstated by $139.6m. HLP is a PARENT vault and its figure contains seven child vaults, which we also held as rows of their own, so that capital was counted twice. The venue’s own list marks the relationship and names the children; the parent now carries its own capital, $42.3m, which two independent readings confirm.
What it means for a figure you already have. Hyperliquid totalled $421.4m here and totals about $281.5m. Any figure that summed vaults on that venue, including the site-wide capital total, was that much too high. Nothing else moved.
/networks/hyperliquid, and every total that includes it
Exit readings now cover far more of the capital here. Vaults whose contracts answer ERC-4626 are read directly for the cash they hold, and Hyperliquid vaults carry the venue’s own statement of what can be distributed now.
What it means for a figure you already have. Capital with no exit reading of any kind fell from $2.93bn to $827m. A vault that now shows a cash figure of nothing is one we READ as holding none, which is not the same as one we could not read: Concrete holds $1m of cash against $1.25bn of capital because its money is deployed, and that is a reading rather than a gap.
/liquidity, and each vault page
Three things a vault page could not say before: which lending markets it supplies into and the ceiling on each, who can halt it, and whether any market it lends in has been liquidated with debt left unrecovered.
What it means for a figure you already have. Nothing that was published changed. A cap of zero means the curator permits no more money in and a dash means no cap was published, and those are opposite facts rather than two ways of saying nothing. The same applies to a pause: false means a pause exists and is off, and an absent answer means neither of the two functions replied.
each vault page, and /risk
Seven chains were invisible to the capital proof because it asked the log and archive endpoint tables, and a totalAssets() call at the head needs neither. It now asks the plain RPC list as well.
What it means for a figure you already have. Capital on plasma, world, katana, arbitrum, linea, robinhood and stable was reported as "no endpoint configured" while an endpoint for each sat in the same file. The figures were never wrong; the REASON we published for not proving them named the wrong thing as missing.
/evidence, /v1/proof
BoringVaults, ether.fi Liquid and every Veda vault, are now proven through the accountant contract they name. The vault answers hook() with its teller, the teller answers accountant(), and the accountant publishes the rate and the token it is quoted in.
What it means for a figure you already have. $463m moves from "we do not discover that contract" into the proven column or into a stated disagreement. Three of the five reproduce our published figure to under 0.6%; two sit about 2.5% out and are published as disagreements. The gap statement had been a to-do written as a fact about the world.
/evidence, /v1/proof
The withdrawable disagreements now carry the age of our own reading. Chasing them into the reader found that cash() and totalAssets() − totalBorrows() agree to the last wei on every vault that fired.
What it means for a figure you already have. The two routes measure the same quantity, so what differed was WHEN. Our figure is written on a schedule and the contract is asked now, and a lending vault’s cash moves several per cent in hours. One small vault moved 12%. The gap is real for anyone reading the exit register and its fix is a refresh rate, not a formula. It had read as thirteen vaults contradicting their own contracts.
/evidence, /v1/proof
The payments proof covers the ACP rail as well as x402, kept as a separate figure.
What it means for a figure you already have. Nothing moved. The two rails rest on different inferences (x402 on two logs paired inside one transaction, ACP on a payment joined to a job through a memo) and summing them into one "payments confirmed" number would hide which one was checked. ACP jobs carry the transaction that CREATED the job, not the one that paid it; the payments carry their own, and those are what is read.
/evidence
The one remaining share-price disagreement with Lagoon was chased to the chain. Our series is confirmed at four historical blocks to eight decimal places.
What it means for a figure you already have. Nothing moved, and a suspicion was closed. Twenty-four days of an identical share price looked like a backfill writing one reading across many dates; the vault is async, so its price is genuinely flat between settlements, and the fall at settlement is a fee a holder paid. The venue publishing +2.01% a year where the contract gives −1.20% is most likely gross against net, which is the distinction this platform exists to draw.
/coverage
X Layer added to the ERC-8004 registry read: 12,998 registrations, the fifth-largest chain in the registry and larger than celo, gnosis and arbitrum together.
What it means for a figure you already have. Registry totals rise by about 13,000. Any figure quoted before this date is short by that much. It had been recorded for a day as deployed-and-unreadable, which was true of the two endpoints we had and not of the chain.
/identity, /v1/agents/claims
Thirteen vaults publish a withdrawable figure their own contract contradicts. An Euler vault with no borrows at all held 5,899 USDC on chain while we published $15,816 as both its capital and its withdrawable.
What it means for a figure you already have. The figures are unchanged, this check corrects nothing, and the disagreements are now published on the evidence page with the overstating direction marked. An overstated withdrawable makes stuck capital look free, which is the direction that costs a reader money, so treat the exit register for those vaults as unconfirmed until the gap is closed.
/evidence, /v1/proof
Prices are keyed on the token address where one exists, rather than on its ticker, and yield-bearing wrappers are priced from the redemption rate their own contract publishes.
What it means for a figure you already have. Several figures moved by a few per cent and two moved a great deal: vaults denominated in tickers shared by more than one asset had been priced from the wrong one. Provable capital rose from $3.20bn to $4.62bn, which is a change in what we can DEMONSTRATE rather than in what we hold.
/evidence
The API answered `depositAsset` with whatever the source called the pool, which for Concrete and Lagoon vaults is the vault’s own share token: "CTDELTAWEETH" is the receipt, not the deposit.
What it means for a figure you already have. It now answers with what a depositor actually put in, read from the vault’s own asset(). The aggregator’s label is kept as `sourceAssetLabel` and the token address is published, so nothing has to price by ticker. Anything keyed on the old value for a Concrete or Lagoon vault was keying on a token nobody holds outside the vault that issued it.
/v1/vaults, /v1/vaults/{slug}
Scroll, Shape and Tempo added to the ERC-8004 registry read.
What it means for a figure you already have. Registration totals rose by 2,495 across 3 chains, Shape alone carries 2,098, more than Scroll, Taiko, Linea, Metis and Mantle together. Any registry figure quoted before this date is short by that much. X Layer is deployed and still unread: no public endpoint will serve the query.
/identity, /v1/agents/claims
Every measurement endpoint now carries a `lineage` block: source, chain, block, when it was observed, when it was computed, the methodology version, what it covers and what it does not.
What it means for a figure you already have. Nothing moved. Several fields are null on purpose, a vault read from a venue HTTP API has no block number, and writing the chain head there would invent a provenance.
/v1/lineage
The identity page led with pointers and unreadable cards summed into one figure: "63% carry no card anyone can read on chain".
What it means for a figure you already have. Now stated as three shares, 37% on chain, 49% a URI we choose not to follow, 14% neither. The summed figure was literally true and read as "63% have no metadata", when most of that is a pointer that very likely resolves.
/identity
The crowding event study published a control leg of 215,700%. One vault’s share-price series carried a bad point and a cross-sectional MEAN carried it into the published figure.
What it means for a figure you already have. The statistic is a median across vaults, an impossible cumulative return is refused, and every row publishes how many readings it refused. The answer changed from a spurious cost to “not distinguishable from noise”, which is what the data supports.
/crowding?view=cost
Two pages divided by the wrong denominator: agent-managed capital was reported against every vault we track, and survivorship counts from one venue sat beside all-platform capital.
What it means for a figure you already have. Agent-managed capital is about a sixth of the tracked total. Any share quoted from those pages before this date was too small by roughly that factor.
/money, /survivorship
The paywall became one switch with per-surface row limits, replacing two settings that disagreed.
What it means for a figure you already have. Some figures that had been reachable without a plan no longer are. Nothing that was published became wrong; less of it is free.
/pricing
A price matched to a denomination by TICKER matched an unrelated asset: a $74M vault denominated in vUSD was valued at $4.34.
What it means for a figure you already have. Such prices are refused rather than published, on the page and in the change feed, which would otherwise have announced the collapse of a stablecoin that never moved.
/assets
The registry sweep found the contract deployed on eighteen chains where the code claimed eleven and ingest read three.
What it means for a figure you already have. One unread chain held more registrations than every read chain combined. Every ERC-8004 figure published before this date was a fraction of an unknown denominator.
/identity
Vault denominations are read from the vault’s own asset() and the token’s own symbol(), rather than from an aggregator’s label.
What it means for a figure you already have. Stored from this date. The API kept serving the aggregator’s label until 5 September, which is the correction at the top of this page.
This page is what we changed. Us against other sources is where our figures sit beside the ones other people publish, with the reason each differs, including the one we cannot yet explain.