{
  "spec": "rs-witness-directory/1",
  "name": "Rightshold witness directory states",
  "note": "These states are computed from the witness registry's own records at the moment this document is read — the same computation the registry list, the health read and the finality ladder use. Nothing here is stored, and nothing here is a platform verdict on any witness: a state is the output of a public process (registration, a signed declaration, a challenge window, open challenges), and the records behind it are public for anyone to judge. A state with no witnesses in it is printed with its zero. An affiliated witness never counts toward finality, however many blocks it has cosigned.",
  "funnel": {
    "registered_key_records": 2,
    "distinct_witnesses": 2,
    "states": {
      "affiliated": 2,
      "unconfirmed": 0,
      "declaration_pending": 0,
      "challenged": 0,
      "confirmed_unaffiliated": 0
    },
    "counted_toward_finality_records": 0
  },
  "quorum": {
    "confirmed_unaffiliated": 0,
    "required": 2,
    "source": "schedule",
    "schedule": [
      {
        "min_confirmed": 0,
        "required": 2
      },
      {
        "min_confirmed": 5,
        "required": 3
      },
      {
        "min_confirmed": 10,
        "required": 4
      },
      {
        "min_confirmed": 20,
        "required": 6
      },
      {
        "min_confirmed": 40,
        "required": 8
      }
    ],
    "next_step": {
      "at_confirmed": 5,
      "required": 3
    },
    "finalized_through": null,
    "anchor_confirmed_through": 6024,
    "rule": "The quorum steps up on a published schedule as confirmed-unaffiliated witnesses grow: 2 required while fewer than 5 are confirmed, 3 at 5, 4 at 10, 6 at 20, 8 at 40. Every tier's requirement sits well below the count that triggers it, so churn is weather, not a freeze; the requirement is recomputed from the live count on every read.",
    "quorum_met": false
  },
  "finality": {
    "reached": false,
    "finalized_through": null,
    "anchor_confirmed_through": 6024
  },
  "witnesses": [
    {
      "label": "W-001",
      "key_fingerprint": "fb3fb6d7",
      "funnel_state": "affiliated",
      "state_text": "affiliated — operated by Rightshold",
      "basis": "operator_key",
      "counts_toward_finality": false,
      "current": true,
      "registered_at": "2026-10-23T17:47:14.050Z",
      "last_verified_at": "2026-10-23T17:47:14.050Z",
      "cosignatures": 1,
      "declaration": null,
      "open_challenges": 0
    },
    {
      "label": "W-002",
      "key_fingerprint": "b88a4704",
      "funnel_state": "affiliated",
      "state_text": "affiliated — common ownership with Rightshold",
      "basis": "common_ownership",
      "counts_toward_finality": false,
      "current": true,
      "registered_at": "2026-11-07T00:33:43.621Z",
      "last_verified_at": "2026-11-11T06:12:53.903Z",
      "cosignatures": 1234,
      "declaration": null,
      "open_challenges": 0
    }
  ],
  "counting": {
    "funnel": "One funnel row is one registered witness key record; a domain that rotates keys holds one record per key, and only the newest is its current key. A record's state is the read-time affiliation computation: affiliated when the key fingerprint is the operator's own, the domain is the operator's own, or a sealed peer record puts the domain under common ownership with the operator — affiliation is checked first and no declaration can lift it. Otherwise: challenged while any challenge against its declaration stands open; confirmed-unaffiliated when its signed unaffiliation declaration is older than the challenge window and no challenge stands open; declaration-pending while that window still runs; unconfirmed when it has never declared. Distinct witnesses counts registrable domains, so one party holding many subdomains is one witness.",
    "quorum": "The quorum count is the count of distinct registrable domains and distinct keys among witnesses in the confirmed-unaffiliated state — two confirmed keys on one domain count once, and one key published for two domains counts once. Affiliated, unconfirmed, declaration-pending and challenged witnesses contribute nothing to it, whatever they have cosigned; their cosignatures are public evidence, never quorum. The requirement follows the published schedule (or an operator pin, when one is set) and is recomputed from the live count on every read — the same number the health read publishes and the finality ladder uses.",
    "finality": "A block is final only when its hash is confirmed in Bitcoin AND the required quorum of confirmed-unaffiliated witnesses has cosigned it or any later block — each header commits to every earlier block. finalized_through names the highest block standing in that state, recomputed on every read, and reached is true only when it names a block. A full funnel is necessary for finality, never sufficient: this directory reports the funnel and the quorum exactly as the registry computes them and confers nothing."
  },
  "generated_at": "2026-11-11T08:05:45.628Z"
}