# What an issuer filed, and what the chain says

A disclosure framework now asks token issuers to describe their own governance in
writing. This note describes the second read we publish beside that description: the
issuer's statement, quoted and dated, tested against contract state at a stated block.

## The two documents

**The filing.** Blockworks' Token Transparency Framework publishes issuer-authored
disclosures against a fixed question set (B1 has twelve questions, B2 has eighteen).
As of 29 October 2026 the index carried 227 filings. The publisher reviews each filing
for **completeness only**, and says so in its own words: the review covers "whether each
required disclosure is answered, not whether the answers are accurate". No score, grade
or rating appears on a filing.

Section 03, *DAO Structure*, asks for six lettered answers, the fourth of which must be
answered even where no DAO exists:

| Letter | What the filing asks for |
|---|---|
| (a) | IP ownership and control |
| (b) | Contract and admin powers: pause and upgrade roles, governance-executor authorities, and the method of authority for each |
| (c) | Locked-token rights, if any |
| (d) | Current tokenholder governance rights and economic arrangements: treasury actions, fee routing, rewards, buybacks, or other protocol-controlled resources |
| (e) | How the control model may evolve |
| (f) | Dissolution authority |

**Our record.** A determination states what a contract enforces, read at a named block,
with the call and the selector behind every figure. The filing is a statement about
intent and design at a date. The determination is a statement about state at a block.
Neither substitutes for the other, and the difference between them is measurable.

## The fields that line up

| Filing §03 | Where we answer it |
|---|---|
| (a) IP ownership | Not scored. Our structure labels (S1–S5) record whether control sits in a DAO, a foundation or an operator, which is adjacent but not the same question. |
| (b) Contract/admin powers | GSA-1 and GSA-2, plus the `control_stack` and admin-key surface in each record's exercisability block. |
| (c) Locked-token rights | GSA-2 and GSA-7; ve-locks enter the control-cost formula as a cost multiplier. |
| (d) Governance rights and economic arrangements | GSA-1, GSA-2 and GSA-3, with `hard_flow_ratio` separating flows the contract enforces from flows a multisig can redirect. |
| (e) Control surface evolution | `structure_label`, plus the re-check triggers that fire when a control transfer is proposed. |
| (f) Dissolution authority | GSA-6 and the dissolution-archetype record: who can wind the protocol down, and on what terms holders exit. |

## Coverage

29 of the 53 scored tokens carry a filing: 19 at B1 and 10 at B2, 15 issuer-filed and
14 compiled by the publisher. Four are marked complete and 25 partial. The dated index,
including each filing's version, status, filed date and source, is published at
`/data/disclosures/b2-filings.json`.

A filing's date matters more than its existence. Spark's is dated 2 November 2025 and
predates several changes to the protocol it describes; Morpho's and Rocket Pool's are
dated 18 June 2026. Read against today's contracts, an older filing is a record of what
was true then.

## A conformance read

A conformance record takes the filing's own sentences and checks the ones a contract can
answer. Each claim carries three things: the quoted sentence, the reads performed, and a
status.

- **CONFORMING** — the contracts do what the filing says, at the read block.
- **DIFFERS** — the filing states a number or a mechanism the contracts do not hold.
  Both readings are published: the filing's, quoted with its date, and the contract's,
  with the block it was read at. A difference is a difference. It is not a finding about
  intent, and the record says so.
- **NOT_CHECKABLE** — the claim cannot be settled by a state read (a negative claim about
  a function that does not exist, a description of intent, a fact about an off-chain
  entity). Recorded as unverified rather than scored either way.

## Worked example: ENS

ENS filed at B2 version 2.2, marked complete, issuer-filed on 2 September 2026 and
speaking as of 4 August 2026. Six claims in section 03 can be read against mainnet.
Five conform. One differs.

| Claim, as filed | Read | Status |
|---|---|---|
| 100,000 ENS to submit; 1% quorum; seven-day vote; two-day timelock | `proposalThreshold()` = 100,000 ENS; `quorum(block−1)` = 1,000,000 ENS against a 100,000,000 supply, exactly 1.0000%; `getMinDelay()` = 172,800 s | Conforming |
| No pause roles; no pause function in the core contracts | `paused()` reverts on all six core contracts; the string `pause` does not appear in any of their bytecode | Conforming |
| No upgrade admin keys; core contracts are not upgradeable proxies | All eighteen EIP-1967 implementation, admin and beacon slots read zero across the six contracts | Conforming |
| `wallet.ensdao.eth` is the timelock and treasury, owns the Root, which owns the Registry | `Registry.owner(root node)` = the Root contract at `0xab52…c5897`; `Root.owner()` = `0xfe89…44b7`; that address holds 8,632,326.60 ENS | Conforming |
| The DAO may mint up to 2% of supply no more than once a year; no one else may mint | `owner()` = the timelock; `mintCap()` = 200 (2%); `minimumMintInterval()` = 31,536,000 s | Conforming |
| The Security Council is a **5-of-8** multisig whose sole power is cancelling queued proposals | `getThreshold()` = **4**; `getOwners()` returns **8** owners | **Differs** |

The sixth row is the case for the second read. The signer-set size is right and the
threshold is not. The SecurityCouncil contract at `0xb8fa…3ee0` is owned by the Safe at
`0xaa5c…2cc7`, and that Safe requires four of its eight owners. ENS's own documentation
describes the body as "a 4-of-8 multi-sig", so the filed figure matches neither the
contract nor the issuer's published description. The second half of the claim, that
cancelling is the only power, holds at the contract level: the council's interface
exposes `veto(bytes32)` and no function that proposes, queues or executes.

Read at block 26,295,398, 29 October 2026 02:25 UTC. The full record, with every call and
selector, is at `/data/disclosures/ens-b2-conformance.json`.

## Limits, stated

- A conformance read tests whether the contracts do what the filing says. It does not
  test whether the filing is complete, and it does not test whether the issuer is honest.
- Negative claims are tested by absence: a reverting getter and a bytecode string scan
  for the pause case, zero storage slots for the proxy case. Neither is a source audit.
  A path outside the verified bytecode would not be caught.
- Filings age. A conforming read certifies the filing against one block, not against
  the version of the protocol that exists a quarter later. That is why every record
  carries its block and its read time.
- No address in a record is attributed to a person or an organisation beyond the role
  the contract itself states.
- Determinations are descriptive. They are not advice, not a recommendation, and not an
  assessment of a team. We do not file on an issuer's behalf, and no issuer pays us.

## Reproducing a read

Every figure above comes from a single `eth_call` against a public Ethereum node. The
selectors used in the ENS record:

- `0xb58131b0` — `proposalThreshold()`
- `0xf8ce560a` — `quorum(uint256)`, called with the block number one below the read block
- `0x02a251a3` — `votingPeriod()` (returns blocks, not seconds)
- `0xf27a0c92` — `getMinDelay()` on the timelock
- `0x5c975abb` — `paused()`
- `0x76c71ca1` — `mintCap()`, `0x515b612a` — `minimumMintInterval()`
- `0xe75235b8` — `getThreshold()` on a Safe, `0xa0e67e2b` — `getOwners()`
- `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc` — the EIP-1967
  implementation slot, with the admin and beacon slots read the same way

---

<!-- seo:begin -->
<link rel="canonical" href="https://probity-institute.pages.dev/docs/disclosure-crosswalk.md">
<meta property="og:type" content="article">
<meta property="og:site_name" content="Probity Institute">
<meta property="og:title" content="What an issuer filed, and what the chain says — Probity Institute">
<meta property="og:description" content="A disclosure framework now asks token issuers to describe their own governance in writing. This note describes the second read we publish beside that.">
<meta property="og:url" content="https://probity-institute.pages.dev/docs/disclosure-crosswalk.md">
<meta property="og:locale" content="en_GB">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="What an issuer filed, and what the chain says — Probity Institute">
<meta name="twitter:description" content="A disclosure framework now asks token issuers to describe their own governance in writing. This note describes the second read we publish beside that.">
<!-- seo:end -->
