dev.knotless.claim

lexicons.knotless.dev

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Keyed `<repo key>.<ref hash>.<generation moved from>`. Two writers that read the same generation both try to create the same key, and the PDS accepts only the first; the dev.knotless.ref update travelling with it in the same applyWrites is refused along with it. Never updated.",
      "key": "any",
      "record": {
        "properties": {
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "from": {
            "description": "The hex object ID the ref pointed at before; absent when the ref is new.",
            "maxLength": 64,
            "minLength": 40,
            "type": "string"
          },
          "generation": {
            "description": "The generation the ref moved from.",
            "minimum": 0,
            "type": "integer"
          },
          "name": {
            "description": "The full ref name, such as refs/heads/main.",
            "maxLength": 1024,
            "type": "string"
          },
          "pack": {
            "description": "The record key of the dev.knotless.pack written with the move, if any.",
            "format": "record-key",
            "type": "string"
          },
          "pusher": {
            "description": "The account that moved the ref, when not the repository's owner: a collaborator or runner pushing through the gateway, which sets it from the caller's verified service token. Readers credit it only while the repository names it among its collaborators or runners.",
            "format": "did",
            "type": "string"
          },
          "repo": {
            "description": "The `key` of the dev.knotless.repo the ref belongs to.",
            "format": "tid",
            "type": "string"
          },
          "to": {
            "description": "The hex object ID the ref points at after; absent when the ref is deleted.",
            "maxLength": 64,
            "minLength": 40,
            "type": "string"
          }
        },
        "required": [
          "repo",
          "name",
          "generation",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "description": "The move of a ref off one generation: its key is the compare-and-swap, its body the reflog entry.",
  "id": "dev.knotless.claim",
  "lexicon": 1
}

Validate Record

Validate a record against dev.knotless.claim

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:yqsg7znbbhfmj3a2nrpnaerk
CID
bafyreiaqquubg4u7h2wnsbsk6yghcfzx4dh5coijf4emfmpdro6q4yr4oe
Indexed At
2026-10-28 21:21 UTC
AT-URI
at://did:plc:yqsg7znbbhfmj3a2nrpnaerk/com.atproto.lexicon.schema/dev.knotless.claim

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • One git ref of a repository.

  • Pushes to a repository through a gateway its owner has delegated writes to: the gateway checks the caller is the owner or a collaborator, then writes the pack and ref updates as the owner. Requires a service token from …

  • A did-git ref stored in an AT Protocol repository. Each record maps a repository name and ref name (e.g. refs/heads/main) to the hex SHA-256 object ID it points to.

  • Left under a repository's old name when it is renamed, so clone URLs, remotes and links that use the old name still reach it.

Lexicon Garden

@