> For the complete documentation index, see [llms.txt](https://docs.trueopen.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.trueopen.ai/protocol/v1/randomness/candidate-selection.md).

# Candidate Selection

Eligibility, handraises, snapshots, and deterministic Task assignments.

Candidate selection separates four ideas that must not be conflated:

1. An eligible Cortex Node satisfies the on-chain requirements for a Profile and duty.
2. A handraise is that node's signed willingness to accept one Task duty.
3. A candidate set is the frozen union of valid handraises.
4. A selected Worker or Verifier is an assigned participant chosen from that frozen set.

A handraise is not an assignment, a reputation score, or proof that a node failed when it did not volunteer.

## Eligibility

Common eligibility checks include:

* The Model and Profile allow new Tasks.
* The Cortex Node is not tombstoned or actively exiting.
* Its ServiceBond satisfies the Profile minimum and has capacity for Task liability.
* Its Model support declaration is fresh and matches `model_id`; the node can run the Task's exact `profile_version`.
* It declares the required inference or verification capability.
* It is not assigned both Worker and Verifier responsibility for the same Task.
* Any jail factor permits participation under the defined recovery rules.

Local benchmarks, GPU utilization, self-reported hardware, HTTP latency, heartbeats, and Builder arrival order are not consensus eligibility or weight inputs.

## Handraises

A handraise binds the chain, Task, duty, Profile, relevant Task commitment, candidate snapshot, operator, expiry, and signing domain. A Builder may collect and relay handraises but cannot edit them or turn its private ordering into protocol priority.

Valid handraises are merged monotonically into an authoritative on-chain union. A later proposal may add newly validated candidates but cannot remove previous candidates, switch order versions, or substitute a different candidate index.

## Immutable snapshots

At the selection cutoff, the protocol freezes:

* The membership mapping and candidate set
* Each candidate's stable operator identity
* Bond and support facts used for eligibility
* The candidate-weight method and inputs
* The relevant randomness height

Later stake, support, jail, or Profile changes do not rewrite that historical set. A newly disqualifying terminal condition may force the Task down a defined failure and refund path, but it cannot authorize choosing someone outside the frozen candidates.

## Worker and Verifier selection

The Worker is chosen by a weighted, unbiased draw after the Worker set freezes and a future beacon becomes available.

Verifier selection uses two future beacons. The first produces a bounded candidate window from a previously frozen eligibility source. Valid handraises are then collected and frozen. A later beacon selects the required Verifiers without replacement from that legal set.

Challenge rounds exclude participants from earlier rounds so the new result is independently produced.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.trueopen.ai/protocol/v1/randomness/candidate-selection.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
