# org.cairnsproto.draft.stone

> A signed claim at a site. A retrace is a stone at a site that already has one. A stone that amends another and has no result withdraws it.

- Kind: record
- Record key: tid
- Authority: draft.cairnsproto.org
- Lexicon: 1
- Published by [cairnsproto.org](https://lexicon.garden/identity/did:plc:np7ezqujtsry4bkogisaabul), the NSID's authority

## Links

- [Documentation](https://lexicon.garden/lexicon/did:plc:np7ezqujtsry4bkogisaabul/org.cairnsproto.draft.stone)
- [Schema JSON](https://lexicon.garden/lexicon/did:plc:np7ezqujtsry4bkogisaabul/org.cairnsproto.draft.stone/schema.json)
- [Analytics](https://lexicon.garden/lexicon/did:plc:np7ezqujtsry4bkogisaabul/org.cairnsproto.draft.stone/analytics)

## Record (`org.cairnsproto.draft.stone`)

Type: record · key tid

### Properties

- `amends` (ref): An earlier stone by the same author at the same site.
  - Reference: `com.atproto.repo.strongRef`
- `createdAt` (string · datetime, required)
- `draw` (ref)
  - Reference: `#draw`
- `evidence` (union)
  - One of (closed): `org.cairnsproto.draft.defs#blobPayload`, `org.cairnsproto.draft.defs#externalPayload`
- `inputs` (array): Exact input stones of a derived stone, or the segment stones of a stacked null in canonical order. The input graph is acyclic.
  - Constraints: maxLength: 10000
  - `items` (ref)
    - Reference: `com.atproto.repo.strongRef`
- `method` (ref)
  - Reference: `org.cairnsproto.draft.defs#method`
- `payload` (union): Validated against site.schema. Required unless the stone is a withdrawal.
  - One of (closed): `org.cairnsproto.draft.defs#inlinePayload`, `org.cairnsproto.draft.defs#blobPayload`, `org.cairnsproto.draft.defs#externalPayload`, `org.cairnsproto.draft.defs#sealedPayload`
- `result` (string): null only in closed-bound courses. attempt never counts as coverage. split reads the site as too large for one stone; its inline payload is an org.cairnsproto.draft.defs#split, and only a course with a composer takes one. converted reads the site's source through a transform; its inline payload is an org.cairnsproto.draft.defs#conversion, and only a site on a source takes one. Required unless the stone is a withdrawal.
  - Constraints: maxLength: 32, knownValues: found | null | attempt | split | converted
- `site` (ref, required)
  - Reference: `org.cairnsproto.draft.defs#site`
- `state` (ref)
  - Reference: `#segmentState`

## #draw (`org.cairnsproto.draft.stone#draw`)

Type: object

The draw that selected this retrace.

### Properties

- `beaconRound` (integer, required): drand quicknet round of the epoch's beacon.
  - Constraints: minimum: 1

## #segmentState (`org.cairnsproto.draft.stone#segmentState`)

Type: object

Start and end state of a computation segment, so a sampled segment can be re-run from its published start.

### Properties

- `endHash` (ref, required)
  - Reference: `org.cairnsproto.draft.defs#hash`
- `startHash` (ref, required)
  - Reference: `org.cairnsproto.draft.defs#hash`
- `urls` (array)
  - Constraints: maxLength: 32
  - `items` (string · uri)

## Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "draw": {
      "description": "The draw that selected this retrace.",
      "properties": {
        "beaconRound": {
          "description": "drand quicknet round of the epoch's beacon.",
          "minimum": 1,
          "type": "integer"
        }
      },
      "required": [
        "beaconRound"
      ],
      "type": "object"
    },
    "main": {
      "description": "A signed claim at a site. A retrace is a stone at a site that already has one. A stone that amends another and has no result withdraws it.",
      "key": "tid",
      "record": {
        "properties": {
          "amends": {
            "description": "An earlier stone by the same author at the same site.",
            "ref": "com.atproto.repo.strongRef",
            "type": "ref"
          },
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "draw": {
            "ref": "#draw",
            "type": "ref"
          },
          "evidence": {
            "closed": true,
            "refs": [
              "org.cairnsproto.draft.defs#blobPayload",
              "org.cairnsproto.draft.defs#externalPayload"
            ],
            "type": "union"
          },
          "inputs": {
            "description": "Exact input stones of a derived stone, or the segment stones of a stacked null in canonical order. The input graph is acyclic.",
            "items": {
              "ref": "com.atproto.repo.strongRef",
              "type": "ref"
            },
            "maxLength": 10000,
            "type": "array"
          },
          "method": {
            "ref": "org.cairnsproto.draft.defs#method",
            "type": "ref"
          },
          "payload": {
            "closed": true,
            "description": "Validated against site.schema. Required unless the stone is a withdrawal.",
            "refs": [
              "org.cairnsproto.draft.defs#inlinePayload",
              "org.cairnsproto.draft.defs#blobPayload",
              "org.cairnsproto.draft.defs#externalPayload",
              "org.cairnsproto.draft.defs#sealedPayload"
            ],
            "type": "union"
          },
          "result": {
            "description": "null only in closed-bound courses. attempt never counts as coverage. split reads the site as too large for one stone; its inline payload is an org.cairnsproto.draft.defs#split, and only a course with a composer takes one. converted reads the site's source through a transform; its inline payload is an org.cairnsproto.draft.defs#conversion, and only a site on a source takes one. Required unless the stone is a withdrawal.",
            "knownValues": [
              "found",
              "null",
              "attempt",
              "split",
              "converted"
            ],
            "maxLength": 32,
            "type": "string"
          },
          "site": {
            "ref": "org.cairnsproto.draft.defs#site",
            "type": "ref"
          },
          "state": {
            "ref": "#segmentState",
            "type": "ref"
          }
        },
        "required": [
          "site",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "segmentState": {
      "description": "Start and end state of a computation segment, so a sampled segment can be re-run from its published start.",
      "properties": {
        "endHash": {
          "ref": "org.cairnsproto.draft.defs#hash",
          "type": "ref"
        },
        "startHash": {
          "ref": "org.cairnsproto.draft.defs#hash",
          "type": "ref"
        },
        "urls": {
          "items": {
            "format": "uri",
            "type": "string"
          },
          "maxLength": 32,
          "type": "array"
        }
      },
      "required": [
        "startHash",
        "endHash"
      ],
      "type": "object"
    }
  },
  "id": "org.cairnsproto.draft.stone",
  "lexicon": 1
}
```
