{
  "schema_version": "1.5",
  "dao": "ENS",
  "token": "ENS",
  "slug": "ens",
  "snapshot_space": "ens.eth",
  "structure_label": "S1",
  "as_of": "2026-10-01",
  "first_scored": "2026-07-23",
  "determinations": {
    "GSA1": "near-miss",
    "GSA2": "near-miss",
    "GSA3": "fail",
    "GSA4": "fail",
    "GSA5": "near-miss",
    "GSA6": "fail",
    "GSA7": "fail",
    "GSA8": "fail"
  },
  "tier": "Tier 2",
  "tier_name": "Procedural Rights — on-chain governance, no economic rights",
  "key_finding": "Governor+Timelock with an elected Security Council veto (post-BonkDAO flash-loan defense) — procedurally strong, economically decorative; no revenue right for ENS token holders.",
  "flags": [
    "Security Council (5-of-8) veto blocks Sybil attack output but is not itself GSA-7 Sybil-resistant voting",
    "root keyholders (4-of-7 individuals) control .eth root — DAO control != control of crown jewels",
    "GSA-1 downgraded at 2026-08-31 recheck: 'Next Era of ENS DAO' executed on-chain 2026-08-11 — Endowment Safe (~$65M) signer swapped to Foundation-controlled OZ TimelockController (9-day delay); DAO holds no role on EndowmentTimelock (not owner/proposer/admin); $500K standup cap and budget bounds are prose/Cayman-law only, not code"
  ],
  "exercisability": {
    "control_cost_usd": 41782024,
    "control_cost_pct_mcap": 0.1398,
    "control_path": "purchase",
    "control_stack": "governor_checkpoints",
    "capture_feasibility": 50,
    "hard_flow_ratio": 0.144,
    "exit_premium": null
  },
  "anti_capture_flag": "none",
  "methodology": {
    "name": "Probity Institute GSA Methodology",
    "version": "0.1-frozen",
    "license": "CC-BY-4.0",
    "note": "A GSA score is a verified statement that specific governance rights are enforced by a specific smart contract at a specific block. Not a security rating, not investment advice, not a statement about team quality."
  },
  "source_dataset": {
    "file": "rights30.json",
    "sha256": "cdc9d1ac2afdb5126a10e541fdafb5eb5f5e6ef13719894a4d3b131297b6c433"
  },
  "links": {
    "token_page": "/tokens/ens.html",
    "matrix": "/rights30.html"
  },
  "freshness": {
    "as_of": "2026-10-01",
    "days_since_as_of": 28,
    "cycle": "quarterly",
    "next_review_due": "2027-01-01",
    "days_to_next_review": 64,
    "cycle_state": "current",
    "event_watch": true,
    "post_as_of_events": 4,
    "pre_as_of_events": 0,
    "max_event_impact": "may-affect",
    "events": [
      {
        "observed": "2026-10-29",
        "observed_basis": "state_as_of",
        "record_type": "disclosure_conformance_record",
        "label": "Issuer disclosure read against contract state",
        "impact": "may-affect",
        "gsa_standards": [
          "GSA5",
          "GSA2"
        ],
        "evidence": "chain-verified",
        "state_as_of": "2026-10-29T02:25:38.336445+00:00"
      },
      {
        "observed": "2026-10-28",
        "observed_basis": "state_as_of",
        "record_type": "governor_proposal_verification",
        "label": "Live governor proposal, tally verified at source",
        "impact": "may-affect",
        "gsa_standards": [
          "GSA1",
          "GSA2",
          "GSA5"
        ],
        "evidence": "chain-verified",
        "event_occurred": "2026-10-18",
        "state_as_of": "2026-10-28T02:01:42Z",
        "execution": {
          "advertised_end_state": "The DAO holds every privileged role over ENSv1 and ENSv2, ENS Labs holds none, new registrations and canonical resolution run through v2, and unnecessary broad launch roles are later removed.",
          "current_completion_state": "voted_payload_executed_2026-10-27_and_all_14_post_payload_state_checks_pass; required_operator_commitments_and_later_cleanup_vote_UNRESOLVED_unverified_in_this_run",
          "completion_condition": "All required layers are complete: the 15-call Governor/Timelock payload executed, ENS Labs published and completed the final sync and v2 role handover, the Security Council cut canonical resolution to v2, and the later DAO cleanup proposal revoked unnecessary broad roles.",
          "layers": [
            {
              "layer": 1,
              "name": "voted_payload",
              "proposal_stage": 2,
              "authority": "ENS DAO Governor and Timelock",
              "status": "executed",
              "enforcement": "atomic_onchain_payload_if_timelock_conditions_are_satisfied_and_execution_succeeds",
              "call_count": 15,
              "executable": false,
              "executed": true,
              "execution_eta": 1793080907,
              "execution_eta_iso8601_utc": "2026-10-27T06:01:47Z",
              "actions": [
                "point the v1 .eth resolver at ENSV2Resolver and authorize the two reverse-registrar adapters",
                "approve both v1 PublicResolver contracts in the v2 PublicResolverSet and approve the standalone HCA implementation",
                "remove all five remaining v1 BaseRegistrar controllers, add Graveyard and ETHRenewerV1, then transfer BaseRegistrar ownership to ETHRenewerV1",
                "route the canonical Universal Resolver through the Security Council-administered intermediate proxy, which still serves v1 immediately after this call"
              ],
              "evidence": [
                "ProposalExecuted(proposalId) decoded at block 26282117 / hash 0x9f9f5966…9d00, tx 0xed4ea910…741f, 2026-10-27T06:01:59Z — 12 seconds after the ETA",
                "governor state(uint256)=7 Executed and proposalEta(uint256)=0 at the 2026-10-28 pinned read (block 26288101)",
                "14/14 post-execution checks pass: BaseRegistrar ownership, all seven controller slots, the .eth resolver, both PublicResolverSet approvals, the HCA implementation approval, both reverse-registrar adapters and the Universal Resolver proxy implementation all read the post-payload state"
              ],
              "executed_block": 26282117,
              "executed_tx": "0xed4ea91015df1d27e2018471ea1f5961a1df57334635f8b85b0d04a2b69a741f",
              "executed_at_utc": "2026-10-27T06:01:59Z"
            },
            {
              "layer": 2,
              "name": "required_operator_commitments",
              "authority": [
                "ENS Labs",
                "ENS Security Council"
              ],
              "status": "UNRESOLVED",
              "verification_status": "unverified_in_this_run",
              "verification_note": "No fresh transaction publication, role census, migration authority or proxy implementation checks were performed in this run. No assertion is made that these actions have or have not happened. Queue evidence does not close this layer.",
              "enforcement": "proposal_text_commitment_and_privileged_operator_transactions",
              "actions": [
                "ENS Labs takes a fresh post-freeze v1 snapshot and reruns premigration",
                "ENS Labs revokes BatchRegistrar roles, enables both migration controllers, and grants ETHRegistrar registration and renewal authority",
                "ENS Labs transfers every v2 admin role it holds to the DAO timelock, renounces its own roles, transfers the .eth and .reverse root tokens to the timelock-owned Safe, and transfers the two BatchRegistrar contracts to the DAO",
                "ENS Security Council upgrades the intermediate Universal Resolver proxy to the v2 implementation after Labs completes the sync and enables migration"
              ],
              "evidence_required_to_close": [
                "published ENS Labs transaction list",
                "role-census script proving the deployer retains no role",
                "chain reads for migration-controller and ETHRegistrar authority",
                "intermediate Universal Resolver proxy implementation read after the Security Council transaction"
              ],
              "evidence": [
                "published ENS Labs transaction list",
                "role-census script proving the deployer retains no role",
                "chain reads for migration-controller and ETHRegistrar authority",
                "intermediate Universal Resolver proxy implementation read after the Security Council transaction"
              ],
              "note": "Unchanged by layer 1 executing: these are ENS Labs and Security Council transactions the DAO vote does not perform. Not verified this run; absence is not asserted."
            },
            {
              "layer": 3,
              "name": "later_cleanup_vote",
              "authority": "ENS DAO Governor and Timelock",
              "status": "UNRESOLVED",
              "verification_status": "unverified_in_this_run",
              "verification_note": "No fresh search for a separate cleanup proposal or its execution and post-execution roles was performed. Its existence or absence is not asserted in this run.",
              "enforcement": "separate_onchain_vote_and_execution",
              "actions": [
                "after v2 has run safely, revoke the deliberately broad launch and remediation roles that are unnecessary long-term, including the .eth root token's right to unregister .eth"
              ],
              "evidence_required_to_close": [
                "later ProposalCreated record naming the roles to remove",
                "successful vote, queue, and execution",
                "post-execution role reads"
              ],
              "evidence": [
                "later ProposalCreated record naming the roles to remove",
                "successful vote, queue, and execution",
                "post-execution role reads"
              ],
              "note": "Unchanged by layer 1 executing: the follow-up cleanup proposal that would revoke the deliberately broad v2 launch roles is a separate vote. Not verified this run; absence is not asserted."
            }
          ],
          "next_reads": [
            "ENS Labs final-sync, v2-registration-enablement and role-handover transactions, plus the role-census script the proposal text says Labs will publish",
            "Security Council upgrade of the UniversalResolver implementation to point at UR v2 (the proxy currently points at the managed intermediate proxy)",
            "the separate broad-role cleanup proposal: identification, queue, execution and post-execution role reads",
            "re-read BaseRegistrar owner and controllers after each operator stage, so a later stage silently reverting v1 is caught"
          ]
        }
      },
      {
        "observed": "2026-10-26",
        "observed_basis": "state_as_of",
        "record_type": "vote_composition_record",
        "label": "Vote composition read at source",
        "impact": "may-affect",
        "gsa_standards": [
          "GSA2",
          "GSA7"
        ],
        "evidence": "chain-verified",
        "state_as_of": "2026-10-26T02:03:00Z",
        "vote_composition": {
          "vote_casts": 63,
          "distinct_voters": 63,
          "by_support": {
            "for": {
              "wei": "1689763327061786872049809",
              "token": "1689763.327061786872049809"
            },
            "against": {
              "wei": "24944871129841000000",
              "token": "24.944871129841"
            },
            "abstain": {
              "wei": "0",
              "token": "0"
            }
          },
          "quorum": {
            "wei": "1000000000000000000000000",
            "token": "1000000",
            "timepoint_block": 26221945,
            "method": "quorum(proposalSnapshot), read by eth_call"
          },
          "snapshot_block": 26221945,
          "deadline_block": 26267763,
          "proposal_state_at_read": "Queued",
          "read_block": 26273746,
          "read_block_hash": "0xa0ba37a9ae6485fdc39f3ca145c5bfddd9a9a6375214799b67b5e94ad12b467d",
          "read_timestamp_utc": "2026-10-26T02:02:47Z",
          "lifecycle": {
            "state": "Queued",
            "queued": true,
            "executed": false,
            "eta_unix": 1793080907,
            "eta_utc": "2026-10-27T06:01:47Z",
            "eta_read_status": "available",
            "definition": "Queued is not executed. ETA is the earliest scheduled execution time, not proof of execution."
          },
          "concentration": {
            "top1_share_of_votes_cast": 0.118358,
            "top5_share_of_votes_cast": 0.513138,
            "top10_share_of_votes_cast": 0.764151,
            "hhi_of_votes_cast": 0.07252,
            "definition": "shares of votes actually cast, aggregated by voting address across events, not of token supply or delegated supply. Abstained voters and their weights are included; addresses that did not vote are excluded."
          },
          "latest_vote_cast": {
            "voter": "0xb352bb4e2a4f27683435f153a259f1b207218b1b",
            "token_weight": "60000",
            "weight_wei": "60000000000000000000000",
            "support": "for",
            "timestamp_utc": "2026-10-24T16:57:59.000000Z",
            "block": 26263851,
            "tx": "0x1a89d4c78f4f351fe94c096c80a086a90ef6778b642799244b79354d36d35491",
            "attribution": "address only. No person or organisation is attributed to it here; the transaction and the address are public and independently checkable."
          },
          "cross_check": {
            "agreement": true,
            "delta_for_wei": "0",
            "delta_against_wei": "0",
            "delta_abstain_wei": "0",
            "method": "the governor's own proposalVotes(uint256) tuple read by eth_call in the same run, against the sum of the weights in its VoteCast logs. Disagreement fails the run rather than shipping a partial composition."
          },
          "read_method": {
            "log_source": "https://eth.blockscout.com/api/v2/addresses/0x323A76393544d5ecca80cd6ef2A560C6a395b7E3/logs",
            "log_route": "blockscout decoded per-address logs, paginated (2 page(s) read); chosen because eth_getLogs is block-range-capped or refused on the public RPCs reachable from this host",
            "rpc": "https://ethereum-rpc.publicnode.com",
            "ua_requirement": "a browser User-Agent is required; public endpoints answer 403 to a python/curl default UA",
            "reproduce": "read decoded VoteCast logs at log_source, excluding blocks above read_block; pin every eth_call to read_block_hash with EIP-1898 requireCanonical. Read proposalVotes(uint256), state(uint256), proposalSnapshot(uint256), proposalDeadline(uint256), and quorum(uint256) with the snapshot as its argument (not its read block). For Queued proposals optionally read proposalEta(uint256), whose selector is derived with Ethereum Keccak."
          },
          "limits": [
            "Composition is per voting address, not per beneficial owner: one address can be a multi-signature wallet, a custodial omnibus, or a delegate for many tokenholders.",
            "A vote cast with a reason string is reported by weight only; reasons are not interpreted.",
            "Votes cast in the final blocks before the deadline may post-date this read; the read timestamp and the proposal state at that moment are stated above.",
            "Descriptive only: this is not a rating, not advice, and not a statement about how any holder should vote."
          ]
        }
      },
      {
        "observed": "2026-10-25",
        "observed_basis": "state_as_of",
        "record_type": "vote_composition_record",
        "label": "Vote composition read at source",
        "impact": "may-affect",
        "gsa_standards": [
          "GSA2",
          "GSA7"
        ],
        "evidence": "chain-verified",
        "state_as_of": "2026-10-25T02:06:59Z",
        "vote_composition": {
          "vote_casts": 63,
          "distinct_voters": 63,
          "by_support": {
            "for": {
              "wei": "1689763327061786872049809",
              "token": "1689763.327061786872049809"
            },
            "against": {
              "wei": "24944871129841000000",
              "token": "24.944871129841"
            },
            "abstain": {
              "wei": "0",
              "token": "0"
            }
          },
          "quorum": {
            "wei": "1000000000000000000000000",
            "token": "1000000",
            "timepoint_block": 26221945,
            "method": "quorum(proposalSnapshot), read by eth_call"
          },
          "snapshot_block": 26221945,
          "deadline_block": 26267763,
          "proposal_state_at_read": "Active",
          "read_block": null,
          "read_block_hash": null,
          "read_timestamp_utc": null,
          "lifecycle": null,
          "concentration": {
            "top1_share_of_votes_cast": 0.118358,
            "top5_share_of_votes_cast": 0.513138,
            "top10_share_of_votes_cast": 0.764151,
            "hhi_of_votes_cast": 0.07252,
            "definition": "Shares of votes cast, not of token supply or delegated supply. Abstained voters and weights are included; nonvoters are excluded. Definition corrected 2026-10-26; this historical record has zero abstentions and its figures are unchanged."
          },
          "latest_vote_cast": {
            "voter": "0xb352bb4e2a4f27683435f153a259f1b207218b1b",
            "token_weight": "60000",
            "weight_wei": "60000000000000000000000",
            "support": "for",
            "timestamp_utc": "2026-10-24T16:57:59.000000Z",
            "block": 26263851,
            "tx": "0x1a89d4c78f4f351fe94c096c80a086a90ef6778b642799244b79354d36d35491",
            "attribution": "address only. No person or organisation is attributed to it here; the transaction and the address are public and independently checkable."
          },
          "cross_check": {
            "agreement": true,
            "delta_for_wei": "0",
            "delta_against_wei": null,
            "delta_abstain_wei": null,
            "method": "the governor's own proposalVotes(uint256) tuple read by eth_call in the same run, against the sum of the weights in its VoteCast logs. Disagreement fails the run rather than shipping a partial composition."
          },
          "read_method": {
            "log_source": "https://eth.blockscout.com/api/v2/addresses/0x323A76393544d5ecca80cd6ef2A560C6a395b7E3/logs",
            "log_route": "blockscout decoded per-address logs, paginated (2 page(s) read); chosen because eth_getLogs is block-range-capped or refused on the public RPCs reachable from this host",
            "rpc": "https://ethereum-rpc.publicnode.com",
            "ua_requirement": "a browser User-Agent is required; public endpoints answer 403 to a python/curl default UA",
            "reproduce": "Historical October 25 read was not block-pinned. Read decoded VoteCast logs at log_source; proposalVotes(uint256) [0x544ffc9c], state(uint256) [0x3e4f49e6], proposalSnapshot(uint256) [0x2d63f693] and quorum(uint256) [0xf8ce560a] were evaluated at the then-current head. quorum takes the snapshot block as its function argument, not its read block. Reproduction note corrected 2026-10-26 without changing the historical figures; new records publish their pinned read block and hash."
          },
          "limits": [
            "Composition is per voting address, not per beneficial owner: one address can be a multi-signature wallet, a custodial omnibus, or a delegate for many tokenholders.",
            "A vote cast with a reason string is reported by weight only; reasons are not interpreted.",
            "Votes cast in the final blocks before the deadline may post-date this read; the read timestamp and the proposal state at that moment are stated above.",
            "Descriptive only: this is not a rating, not advice, and not a statement about how any holder should vote."
          ]
        }
      }
    ]
  }
}
