dev.knotless.defs

lexicons.knotless.dev

Schema Diff

+200 -0

From

CID
bafyreifhhdt6qll...
Indexed At
2026-10-29 03:14 UTC
View this version

To

CID
bafyreic7gmox6tq...
Indexed At
2026-10-29 06:54 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

15 breaking changes, 59 non-breaking changes.

Breaking Changes (15)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#byteSlice", src: "dev.knotless.defs#byteSlice", tgt: "dev.knotless.defs#byteSlice.byteEnd", kind: "prop", name: Some("byteEnd") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#byteSlice", src: "dev.knotless.defs#byteSlice", tgt: "dev.knotless.defs#byteSlice.byteStart", kind: "prop", name: Some("byteStart") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#reviewView", src: "dev.knotless.defs#reviewView", tgt: "dev.knotless.defs#reviewView.reviewer", kind: "prop", name: Some("reviewer") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#reviewView", src: "dev.knotless.defs#reviewView", tgt: "dev.knotless.defs#reviewView.verdict", kind: "prop", name: Some("verdict") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#reviewView", src: "dev.knotless.defs#reviewView", tgt: "dev.knotless.defs#reviewView.maintainer", kind: "prop", name: Some("maintainer") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#reviewView", src: "dev.knotless.defs#reviewView", tgt: "dev.knotless.defs#reviewView.outdated", kind: "prop", name: Some("outdated") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#reviewView", src: "dev.knotless.defs#reviewView", tgt: "dev.knotless.defs#reviewView.uri", kind: "prop", name: Some("uri") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#facet", src: "dev.knotless.defs#facet", tgt: "dev.knotless.defs#facet.features", kind: "prop", name: Some("features") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#facet", src: "dev.knotless.defs#facet", tgt: "dev.knotless.defs#facet.index", kind: "prop", name: Some("index") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#mention", src: "dev.knotless.defs#mention", tgt: "dev.knotless.defs#mention.did", kind: "prop", name: Some("did") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#lineView", src: "dev.knotless.defs#lineView", tgt: "dev.knotless.defs#lineView.outdated", kind: "prop", name: Some("outdated") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#lineView", src: "dev.knotless.defs#lineView", tgt: "dev.knotless.defs#lineView.line", kind: "prop", name: Some("line") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#lineView", src: "dev.knotless.defs#lineView", tgt: "dev.knotless.defs#lineView.path", kind: "prop", name: Some("path") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#lineTextView", src: "dev.knotless.defs#lineTextView", tgt: "dev.knotless.defs#lineTextView.text", kind: "prop", name: Some("text") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#lineTextView", src: "dev.knotless.defs#lineTextView", tgt: "dev.knotless.defs#lineTextView.number", kind: "prop", name: Some("number") }
Non-Breaking Changes (59)
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#byteSlice" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#byteSlice.byteEnd" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#byteSlice.byteStart" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#changesView.head" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#commentView.commit" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#commentView.line" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#commentView.reply" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#commentView.resolved" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#commentView.review" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#facet" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#facet.features" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#facet.features:items" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#facet.features:items:variant0" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#facet.index" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#itemView.draft" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#itemView.reviewers" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#itemView.reviewers:items" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#lineTextView" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#lineTextView.number" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#lineTextView.text" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#lineView" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#lineView.line" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#lineView.lines" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#lineView.lines:items" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#lineView.outdated" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#lineView.path" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#lineView.side" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#lineView.startLine" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#mention" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#mention.did" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#reviewView" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#reviewView.commit" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#reviewView.maintainer" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#reviewView.outdated" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#reviewView.reviewer" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#reviewView.uri" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#reviewView.verdict" }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#changesView", tgt: "dev.knotless.defs#changesView.head", kind: "prop", name: Some("head") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#commentView", tgt: "dev.knotless.defs#commentView.commit", kind: "prop", name: Some("commit") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#commentView", tgt: "dev.knotless.defs#commentView.line", kind: "prop", name: Some("line") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#commentView", tgt: "dev.knotless.defs#commentView.reply", kind: "prop", name: Some("reply") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#commentView", tgt: "dev.knotless.defs#commentView.resolved", kind: "prop", name: Some("resolved") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#commentView", tgt: "dev.knotless.defs#commentView.review", kind: "prop", name: Some("review") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#commentView.line", tgt: "dev.knotless.defs#lineView", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#facet.features", tgt: "dev.knotless.defs#facet.features:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#facet.features:items", tgt: "dev.knotless.defs#facet.features:items:variant0", kind: "variant", name: Some("#mention") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#facet.features:items:variant0", tgt: "dev.knotless.defs#mention", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#facet.index", tgt: "dev.knotless.defs#byteSlice", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#itemView", tgt: "dev.knotless.defs#itemView.draft", kind: "prop", name: Some("draft") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#itemView", tgt: "dev.knotless.defs#itemView.reviewers", kind: "prop", name: Some("reviewers") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#itemView.reviewers", tgt: "dev.knotless.defs#itemView.reviewers:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#itemView.reviewers:items", tgt: "dev.knotless.defs#actorView", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#lineView", tgt: "dev.knotless.defs#lineView.lines", kind: "prop", name: Some("lines") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#lineView", tgt: "dev.knotless.defs#lineView.side", kind: "prop", name: Some("side") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#lineView", tgt: "dev.knotless.defs#lineView.startLine", kind: "prop", name: Some("startLine") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#lineView.lines", tgt: "dev.knotless.defs#lineView.lines:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#lineView.lines:items", tgt: "dev.knotless.defs#lineTextView", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#reviewView", tgt: "dev.knotless.defs#reviewView.commit", kind: "prop", name: Some("commit") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#reviewView.reviewer", tgt: "dev.knotless.defs#actorView", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "dev.knotless.defs#byteSlice" }
  • AddedVertex { vertex_id: "dev.knotless.defs#byteSlice.byteEnd" }
  • AddedVertex { vertex_id: "dev.knotless.defs#byteSlice.byteStart" }
  • AddedVertex { vertex_id: "dev.knotless.defs#changesView.head" }
  • AddedVertex { vertex_id: "dev.knotless.defs#commentView.commit" }
  • AddedVertex { vertex_id: "dev.knotless.defs#commentView.line" }
  • AddedVertex { vertex_id: "dev.knotless.defs#commentView.reply" }
  • AddedVertex { vertex_id: "dev.knotless.defs#commentView.resolved" }
  • AddedVertex { vertex_id: "dev.knotless.defs#commentView.review" }
  • AddedVertex { vertex_id: "dev.knotless.defs#facet" }
  • AddedVertex { vertex_id: "dev.knotless.defs#facet.features" }
  • AddedVertex { vertex_id: "dev.knotless.defs#facet.features:items" }
  • AddedVertex { vertex_id: "dev.knotless.defs#facet.features:items:variant0" }
  • AddedVertex { vertex_id: "dev.knotless.defs#facet.index" }
  • AddedVertex { vertex_id: "dev.knotless.defs#itemView.draft" }
  • AddedVertex { vertex_id: "dev.knotless.defs#itemView.reviewers" }
  • AddedVertex { vertex_id: "dev.knotless.defs#itemView.reviewers:items" }
  • AddedVertex { vertex_id: "dev.knotless.defs#lineTextView" }
  • AddedVertex { vertex_id: "dev.knotless.defs#lineTextView.number" }
  • AddedVertex { vertex_id: "dev.knotless.defs#lineTextView.text" }
  • AddedVertex { vertex_id: "dev.knotless.defs#lineView" }
  • AddedVertex { vertex_id: "dev.knotless.defs#lineView.line" }
  • AddedVertex { vertex_id: "dev.knotless.defs#lineView.lines" }
  • AddedVertex { vertex_id: "dev.knotless.defs#lineView.lines:items" }
  • AddedVertex { vertex_id: "dev.knotless.defs#lineView.outdated" }
  • AddedVertex { vertex_id: "dev.knotless.defs#lineView.path" }
  • AddedVertex { vertex_id: "dev.knotless.defs#lineView.side" }
  • AddedVertex { vertex_id: "dev.knotless.defs#lineView.startLine" }
  • AddedVertex { vertex_id: "dev.knotless.defs#mention" }
  • AddedVertex { vertex_id: "dev.knotless.defs#mention.did" }
  • AddedVertex { vertex_id: "dev.knotless.defs#reviewView" }
  • AddedVertex { vertex_id: "dev.knotless.defs#reviewView.commit" }
  • AddedVertex { vertex_id: "dev.knotless.defs#reviewView.maintainer" }
  • AddedVertex { vertex_id: "dev.knotless.defs#reviewView.outdated" }
  • AddedVertex { vertex_id: "dev.knotless.defs#reviewView.reviewer" }
  • AddedVertex { vertex_id: "dev.knotless.defs#reviewView.uri" }
  • AddedVertex { vertex_id: "dev.knotless.defs#reviewView.verdict" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.defs#reviewView", src: "dev.knotless.defs#reviewView", tgt: "dev.knotless.defs#reviewView.reviewer", kind: "prop", name: Some("reviewer") }
  • Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.defs#reviewView", src: "dev.knotless.defs#reviewView", tgt: "dev.knotless.defs#reviewView.verdict", kind: "prop", name: Some("verdict") }
  • Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.defs#reviewView", src: "dev.knotless.defs#reviewView", tgt: "dev.knotless.defs#reviewView.maintainer", kind: "prop", name: Some("maintainer") }
  • Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.defs#reviewView", src: "dev.knotless.defs#reviewView", tgt: "dev.knotless.defs#reviewView.outdated", kind: "prop", name: Some("outdated") }
  • Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.defs#reviewView", src: "dev.knotless.defs#reviewView", tgt: "dev.knotless.defs#reviewView.uri", kind: "prop", name: Some("uri") }
  • Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.defs#mention", src: "dev.knotless.defs#mention", tgt: "dev.knotless.defs#mention.did", kind: "prop", name: Some("did") }
  • Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.defs#byteSlice", src: "dev.knotless.defs#byteSlice", tgt: "dev.knotless.defs#byteSlice.byteEnd", kind: "prop", name: Some("byteEnd") }
  • Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.defs#byteSlice", src: "dev.knotless.defs#byteSlice", tgt: "dev.knotless.defs#byteSlice.byteStart", kind: "prop", name: Some("byteStart") }
  • Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.defs#lineView", src: "dev.knotless.defs#lineView", tgt: "dev.knotless.defs#lineView.outdated", kind: "prop", name: Some("outdated") }
  • Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.defs#lineView", src: "dev.knotless.defs#lineView", tgt: "dev.knotless.defs#lineView.line", kind: "prop", name: Some("line") }
  • Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.defs#lineView", src: "dev.knotless.defs#lineView", tgt: "dev.knotless.defs#lineView.path", kind: "prop", name: Some("path") }
  • Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.defs#facet", src: "dev.knotless.defs#facet", tgt: "dev.knotless.defs#facet.features", kind: "prop", name: Some("features") }
  • Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.defs#facet", src: "dev.knotless.defs#facet", tgt: "dev.knotless.defs#facet.index", kind: "prop", name: Some("index") }
  • Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.defs#lineTextView", src: "dev.knotless.defs#lineTextView", tgt: "dev.knotless.defs#lineTextView.text", kind: "prop", name: Some("text") }
  • Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.defs#lineTextView", src: "dev.knotless.defs#lineTextView", tgt: "dev.knotless.defs#lineTextView.number", kind: "prop", name: Some("number") }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#changesView", tgt: "dev.knotless.defs#changesView.head", kind: "prop", name: Some("head") }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#commentView", tgt: "dev.knotless.defs#commentView.commit", kind: "prop", name: Some("commit") }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#commentView", tgt: "dev.knotless.defs#commentView.line", kind: "prop", name: Some("line") }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#commentView", tgt: "dev.knotless.defs#commentView.reply", kind: "prop", name: Some("reply") }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#commentView", tgt: "dev.knotless.defs#commentView.resolved", kind: "prop", name: Some("resolved") }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#commentView", tgt: "dev.knotless.defs#commentView.review", kind: "prop", name: Some("review") }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#commentView.line", tgt: "dev.knotless.defs#lineView", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#facet.features", tgt: "dev.knotless.defs#facet.features:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#facet.features:items", tgt: "dev.knotless.defs#facet.features:items:variant0", kind: "variant", name: Some("#mention") }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#facet.features:items:variant0", tgt: "dev.knotless.defs#mention", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#facet.index", tgt: "dev.knotless.defs#byteSlice", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#itemView", tgt: "dev.knotless.defs#itemView.draft", kind: "prop", name: Some("draft") }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#itemView", tgt: "dev.knotless.defs#itemView.reviewers", kind: "prop", name: Some("reviewers") }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#itemView.reviewers", tgt: "dev.knotless.defs#itemView.reviewers:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#itemView.reviewers:items", tgt: "dev.knotless.defs#actorView", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#lineView", tgt: "dev.knotless.defs#lineView.lines", kind: "prop", name: Some("lines") }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#lineView", tgt: "dev.knotless.defs#lineView.side", kind: "prop", name: Some("side") }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#lineView", tgt: "dev.knotless.defs#lineView.startLine", kind: "prop", name: Some("startLine") }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#lineView.lines", tgt: "dev.knotless.defs#lineView.lines:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#lineView.lines:items", tgt: "dev.knotless.defs#lineTextView", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#reviewView", tgt: "dev.knotless.defs#reviewView.commit", kind: "prop", name: Some("commit") }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#reviewView.reviewer", tgt: "dev.knotless.defs#actorView", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "actorView": {
5 5
      "description": "An account, as an appview shows it beside what it did.",
6 6
      "properties": {
7 7
        "avatar": {
8 8
          "description": "The account's picture, as in dev.knotless.getProfile#profileView.",
9 9
          "format": "uri",
10 10
          "type": "string"
11 11
        },
12 12
        "did": {
13 13
          "format": "did",
14 14
          "type": "string"
15 15
        },
16 16
        "handle": {
17 17
          "description": "The handle the account claims, when it resolves back to it; else the DID.",
18 18
          "type": "string"
19 19
        }
20 20
      },
21 21
      "required": [
22 22
        "did",
23 23
        "handle"
24 24
      ],
25 25
      "type": "object"
26 26
    },
27 27
    "actorViewerState": {
28 28
      "description": "What the account asking a query has to do with an account.",
29 29
      "properties": {
30 30
        "blocking": {
31 31
          "description": "Its dev.knotless.block record keeping the account out of all its repositories, if it has one.",
32 32
          "format": "at-uri",
33 33
          "type": "string"
34 34
        },
35 35
        "following": {
36 36
          "description": "Its dev.knotless.follow record naming the account, if it follows it.",
37 37
          "format": "at-uri",
38 38
          "type": "string"
39 39
        }
40 40
      },
41 41
      "type": "object"
42 42
    },
43 +
    "byteSlice": {
44 +
      "description": "A span of a text, by its UTF-8 bytes, counted from zero: the start inclusive, the end exclusive.",
45 +
      "properties": {
46 +
        "byteEnd": {
47 +
          "minimum": 0,
48 +
          "type": "integer"
49 +
        },
50 +
        "byteStart": {
51 +
          "minimum": 0,
52 +
          "type": "integer"
53 +
        }
54 +
      },
55 +
      "required": [
56 +
        "byteStart",
57 +
        "byteEnd"
58 +
      ],
59 +
      "type": "object"
60 +
    },
43 61
    "changesView": {
44 62
      "description": "What a pull brings in: for a merged one, what its merge brought into the base; otherwise what its branch has since it left the base.",
45 63
      "properties": {
46 64
        "commits": {
47 65
          "description": "Oldest first.",
48 66
          "items": {
49 67
            "ref": "#commitView",
50 68
            "type": "ref"
51 69
          },
52 70
          "type": "array"
53 71
        },
54 72
        "files": {
55 73
          "items": {
56 74
            "ref": "#fileDiffView",
57 75
            "type": "ref"
58 76
          },
59 77
          "type": "array"
60 78
        },
79 +
        "head": {
80 +
          "description": "For an open pull, the hex object ID of the commit its branch is at: what its checks and reviews are of.",
81 +
          "type": "string"
82 +
        },
61 83
        "repo": {
62 84
          "description": "The repository whose commit pages show its commits.",
63 85
          "ref": "#repoViewBasic",
64 86
          "type": "ref"
65 87
        }
66 88
      },
67 89
      "required": [
68 90
        "repo",
69 91
        "commits",
70 92
        "files"
71 93
      ],
72 94
      "type": "object"
73 95
    },
74 96
    "checkImageView": {
75 97
      "description": "A picture a check made: screenshots of the pages a change moved, say.",
76 98
      "properties": {
77 99
        "alt": {
78 100
          "description": "What it shows.",
79 101
          "type": "string"
80 102
        },
81 103
        "url": {
82 104
          "description": "Where this appview serves it, as a path.",
83 105
          "type": "string"
84 106
        }
85 107
      },
86 108
      "required": [
87 109
        "alt",
88 110
        "url"
89 111
      ],
90 112
      "type": "object"
91 113
    },
92 114
    "checkView": {
93 115
      "description": "The newest run of a workflow, as a runner the repository names in its record reported it.",
94 116
      "properties": {
95 117
        "commit": {
96 118
          "description": "The commit it ran at, in hex.",
97 119
          "type": "string"
98 120
        },
99 121
        "error": {
100 122
          "description": "Why it could not run.",
101 123
          "type": "string"
102 124
        },
103 125
        "finishedAt": {
104 126
          "format": "datetime",
105 127
          "type": "string"
106 128
        },
107 129
        "images": {
108 130
          "description": "The pictures it made to be looked at, in order.",
109 131
          "items": {
110 132
            "ref": "#checkImageView",
111 133
            "type": "ref"
112 134
          },
113 135
          "type": "array"
114 136
        },
115 137
        "repo": {
116 138
          "description": "The repository it is of, whose pages show it.",
117 139
          "ref": "#repoViewBasic",
118 140
          "type": "ref"
119 141
        },
120 142
        "skipped": {
121 143
          "description": "For a `success` that ran nothing, as the change touched none of the paths its workflow names: why.",
122 144
          "type": "string"
123 145
        },
124 146
        "startedAt": {
125 147
          "format": "datetime",
126 148
          "type": "string"
127 149
        },
128 150
        "status": {
129 151
          "description": "`queued` is a run filed and waiting for a job on its runner, no step started yet.",
130 152
          "knownValues": [
131 153
            "queued",
132 154
            "running",
133 155
            "success",
134 156
            "failure",
135 157
            "error",
136 158
            "cancelled"
137 159
          ],
138 160
          "type": "string"
139 161
        },
140 162
        "uri": {
141 163
          "description": "Its dev.knotless.check record.",
142 164
          "format": "at-uri",
143 165
          "type": "string"
144 166
        },
145 167
        "workflow": {
146 168
          "type": "string"
147 169
        }
148 170
      },
149 171
      "required": [
150 172
        "uri",
151 173
        "repo",
152 174
        "workflow",
153 175
        "status",
154 176
        "commit",
155 177
        "startedAt",
156 178
        "images"
157 179
      ],
158 180
      "type": "object"
159 181
    },
160 182
    "commentView": {
161 183
      "description": "Something said on a pull or an issue.",
162 184
      "properties": {
163 185
        "author": {
164 186
          "ref": "#actorView",
165 187
          "type": "ref"
166 188
        },
167 189
        "body": {
168 190
          "description": "What it says, as its author wrote it, in Markdown.",
169 191
          "type": "string"
170 192
        },
193 +
        "commit": {
194 +
          "description": "For a review of a pull, the hex object ID of the head it looked at; for a comment on its lines, the commit they are in.",
195 +
          "type": "string"
196 +
        },
171 197
        "createdAt": {
172 198
          "format": "datetime",
173 199
          "type": "string"
174 200
        },
175 201
        "html": {
176 202
          "description": "What it says, its Markdown made into HTML: raw HTML shown as text, and links made relative to the repository.",
177 203
          "type": "string"
178 204
        },
205 +
        "line": {
206 +
          "description": "For a comment on a pull's lines, which, as they stand now.",
207 +
          "ref": "#lineView",
208 +
          "type": "ref"
209 +
        },
179 210
        "reactions": {
180 211
          "description": "How accounts reacted to it, by content, in the order dev.knotless.defs#reactionContent lists them. Absent when none did.",
181 212
          "items": {
182 213
            "ref": "#reactionCountView",
183 214
            "type": "ref"
184 215
          },
185 216
          "type": "array"
186 217
        },
218 +
        "reply": {
219 +
          "description": "The comment starting the thread on a pull's lines that this answers.",
220 +
          "format": "at-uri",
221 +
          "type": "string"
222 +
        },
223 +
        "resolved": {
224 +
          "description": "For a comment starting a thread on a pull's lines, whether the thread is resolved.",
225 +
          "type": "boolean"
226 +
        },
227 +
        "review": {
228 +
          "description": "The review this was sent with, as one of its line comments.",
229 +
          "format": "at-uri",
230 +
          "type": "string"
231 +
        },
187 232
        "updatedAt": {
188 233
          "description": "When its author last changed it, if they have.",
189 234
          "format": "datetime",
190 235
          "type": "string"
191 236
        },
192 237
        "uri": {
193 238
          "description": "Its dev.knotless.comment record.",
194 239
          "format": "at-uri",
195 240
          "type": "string"
196 241
        },
197 242
        "verdict": {
198 243
          "description": "For a review, what it found.",
199 244
          "knownValues": [
200 245
            "approve",
201 246
            "changes"
202 247
          ],
203 248
          "type": "string"
204 249
        }
205 250
      },
206 251
      "required": [
207 252
        "author",
208 253
        "createdAt",
209 254
        "html"
210 255
      ],
211 256
      "type": "object"
212 257
    },
213 258
    "commitAuthorView": {
214 259
      "description": "Who wrote a commit or helped to: by the name git gives, and by account when that is one of the repository's people whose address it is.",
215 260
      "properties": {
216 261
        "actor": {
217 262
          "ref": "#actorView",
218 263
          "type": "ref"
219 264
        },
220 265
        "agent": {
221 266
          "description": "The coding agent whose address it is, when it is one the pages know the face of.",
222 267
          "knownValues": [
223 268
            "claude"
224 269
          ],
225 270
          "type": "string"
226 271
        },
227 272
        "name": {
228 273
          "description": "The name git records.",
229 274
          "type": "string"
230 275
        }
231 276
      },
232 277
      "required": [
233 278
        "name"
234 279
      ],
235 280
      "type": "object"
236 281
    },
237 282
    "commitRefView": {
238 283
      "description": "A commit, by its object name.",
239 284
      "properties": {
240 285
        "sha": {
241 286
          "description": "In hex.",
242 287
          "type": "string"
243 288
        }
244 289
      },
245 290
      "required": [
246 291
        "sha"
247 292
      ],
248 293
      "type": "object"
249 294
    },
250 295
    "commitView": {
251 296
      "description": "A commit, with the accounts that wrote it where the repository's pages believe their claims (dev.knotless.emails).",
252 297
      "properties": {
253 298
        "author": {
254 299
          "ref": "#commitAuthorView",
255 300
          "type": "ref"
256 301
        },
257 302
        "coauthors": {
258 303
          "description": "Who its message's `Co-authored-by` trailers name.",
259 304
          "items": {
260 305
            "ref": "#commitAuthorView",
261 306
            "type": "ref"
262 307
          },
263 308
          "type": "array"
264 309
        },
265 310
        "committedAt": {
266 311
          "description": "When it was committed: what history runs in, as its author's date need not.",
267 312
          "format": "datetime",
268 313
          "type": "string"
269 314
        },
270 315
        "committer": {
271 316
          "description": "Who committed it, when someone other than its author did.",
272 317
          "ref": "#commitAuthorView",
273 318
          "type": "ref"
274 319
        },
275 320
        "date": {
276 321
          "description": "When its author made it, which a rebase or a squash keeps.",
277 322
          "format": "datetime",
278 323
          "type": "string"
279 324
        },
280 325
        "message": {
281 326
          "description": "Its message, less the last line naming the pull it merged, if it did.",
282 327
          "type": "string"
283 328
        },
284 329
        "parents": {
285 330
          "items": {
286 331
            "ref": "#commitRefView",
287 332
            "type": "ref"
288 333
          },
289 334
          "type": "array"
290 335
        },
291 336
        "pull": {
292 337
          "description": "The pull its message's last line names, as a squash merge records it, when that is a pull on this repository.",
293 338
          "ref": "#itemViewBasic",
294 339
          "type": "ref"
295 340
        },
296 341
        "sha": {
297 342
          "description": "Its object name, in hex.",
298 343
          "type": "string"
299 344
        }
300 345
      },
301 346
      "required": [
302 347
        "sha",
303 348
        "parents",
304 349
        "author",
305 350
        "coauthors",
306 351
        "date",
307 352
        "message"
308 353
      ],
309 354
      "type": "object"
310 355
    },
311 356
    "diffRowView": {
312 357
      "description": "One row of a file's diff: a hunk header, a note, or a line with its old and new numbers.",
313 358
      "properties": {
314 359
        "kind": {
315 360
          "description": "`h` for a hunk header, `x` for a note, `a` for a line added, `d` for one removed, or empty for context.",
316 361
          "type": "string"
317 362
        },
318 363
        "line": {
319 364
          "description": "Whether it is a line of the file.",
320 365
          "type": "boolean"
321 366
        },
322 367
        "new": {
323 368
          "description": "Its number after.",
324 369
          "minimum": 0,
325 370
          "type": "integer"
326 371
        },
327 372
        "old": {
328 373
          "description": "Its number before.",
329 374
          "minimum": 0,
330 375
          "type": "integer"
331 376
        },
332 377
        "text": {
333 378
          "type": "string"
334 379
        }
335 380
      },
336 381
      "required": [
337 382
        "kind",
338 383
        "line",
339 384
        "text"
340 385
      ],
341 386
      "type": "object"
342 387
    },
388 +
    "facet": {
389 +
      "description": "Where a text says more than its words, shaped as app.bsky.richtext.facet: the span it covers and what that span is. A pull's, an issue's or a comment's body has its own, and a pull's or an issue's title its own.",
390 +
      "properties": {
391 +
        "features": {
392 +
          "description": "What the span is. Kinds unknown to a reader are passed over.",
393 +
          "items": {
394 +
            "refs": [
395 +
              "#mention"
396 +
            ],
397 +
            "type": "union"
398 +
          },
399 +
          "maxLength": 8,
400 +
          "type": "array"
401 +
        },
402 +
        "index": {
403 +
          "ref": "#byteSlice",
404 +
          "type": "ref"
405 +
        }
406 +
      },
407 +
      "required": [
408 +
        "index",
409 +
        "features"
410 +
      ],
411 +
      "type": "object"
412 +
    },
343 413
    "fileDiffView": {
344 414
      "description": "One file of a diff, or why its rows are not shown.",
345 415
      "properties": {
346 416
        "added": {
347 417
          "description": "Lines added.",
348 418
          "minimum": 0,
349 419
          "type": "integer"
350 420
        },
351 421
        "hunkCount": {
352 422
          "description": "Of those rows, how many are hunk headers, which a page may draw taller than a line.",
353 423
          "minimum": 0,
354 424
          "type": "integer"
355 425
        },
356 426
        "new": {
357 427
          "description": "Its path after.",
358 428
          "type": "string"
359 429
        },
360 430
        "note": {
361 431
          "description": "Why its rows are not shown, when they are not.",
362 432
          "type": "string"
363 433
        },
364 434
        "old": {
365 435
          "description": "Its path before.",
366 436
          "type": "string"
367 437
        },
368 438
        "ranges": {
369 439
          "description": "The ranges its highlighting paints, encoded as the pages read them.",
370 440
          "type": "string"
371 441
        },
372 442
        "removed": {
373 443
          "description": "Lines removed.",
374 444
          "minimum": 0,
375 445
          "type": "integer"
376 446
        },
377 447
        "rowCount": {
378 448
          "description": "Where its rows are left out but would be shown, as dev.knotless.getThread's filesOnly leaves them, how many there are: the room a page keeps for them until they come.",
379 449
          "minimum": 0,
380 450
          "type": "integer"
381 451
        },
382 452
        "rows": {
383 453
          "items": {
384 454
            "ref": "#diffRowView",
385 455
            "type": "ref"
386 456
          },
387 457
          "type": "array"
388 458
        },
389 459
        "status": {
390 460
          "knownValues": [
391 461
            "added",
392 462
            "deleted",
393 463
            "renamed",
394 464
            "modified"
395 465
          ],
396 466
          "type": "string"
397 467
        }
398 468
      },
399 469
      "required": [
400 470
        "old",
401 471
        "new",
402 472
        "status",
403 473
        "added",
404 474
        "removed",
405 475
        "rows"
406 476
      ],
407 477
      "type": "object"
408 478
    },
409 479
    "followState": {
410 480
      "description": "An account's followers, as following or unfollowing it leaves them.",
411 481
      "properties": {
412 482
        "followersCount": {
413 483
          "description": "How many accounts follow it now.",
414 484
          "minimum": 0,
415 485
          "type": "integer"
416 486
        },
417 487
        "following": {
418 488
          "description": "The asker's dev.knotless.follow record naming it; absent once unfollowed.",
419 489
          "format": "at-uri",
420 490
          "type": "string"
421 491
        }
422 492
      },
423 493
      "required": [
424 494
        "followersCount"
425 495
      ],
426 496
      "type": "object"
427 497
    },
428 498
    "image": {
429 499
      "description": "A picture a pull's, an issue's or a comment's body shows, attached so its author's PDS keeps it. The body links to it on that PDS, as `com.atproto.sync.getBlob` serves it, saying what it shows as Markdown's alt text; readers may show it from elsewhere, as dev.knotless.getAttachment does.",
430 500
      "properties": {
431 501
        "image": {
432 502
          "accept": [
433 503
            "image/png",
434 504
            "image/jpeg",
435 505
            "image/webp",
436 506
            "image/gif"
437 507
          ],
438 508
          "maxSize": 1000000,
439 509
          "type": "blob"
440 510
        }
441 511
      },
442 512
      "required": [
443 513
        "image"
444 514
      ],
445 515
      "type": "object"
446 516
    },
447 517
    "itemView": {
448 518
      "description": "A pull or an issue in a list of them.",
449 519
      "properties": {
450 520
        "author": {
451 521
          "description": "Who opened it.",
452 522
          "ref": "#actorView",
453 523
          "type": "ref"
454 524
        },
455 525
        "comments": {
456 526
          "description": "How many comments are on it, its own body aside.",
457 527
          "minimum": 0,
458 528
          "type": "integer"
459 529
        },
460 530
        "createdAt": {
461 531
          "format": "datetime",
462 532
          "type": "string"
463 533
        },
534 +
        "draft": {
535 +
          "description": "A pull its author has not marked ready to merge. Not, when absent.",
536 +
          "type": "boolean"
537 +
        },
464 538
        "kind": {
465 539
          "knownValues": [
466 540
            "pull",
467 541
            "issue"
468 542
          ],
469 543
          "type": "string"
470 544
        },
471 545
        "labels": {
472 546
          "description": "The labels it carries, as the repository defines them, in the order it does. Absent when it carries none.",
473 547
          "items": {
474 548
            "ref": "dev.knotless.repo#label",
475 549
            "type": "ref"
476 550
          },
477 551
          "type": "array"
478 552
        },
553 +
        "reviewers": {
554 +
          "description": "Those a pull's author asks to review it, in the order asked. Absent when it asks no one.",
555 +
          "items": {
556 +
            "ref": "#actorView",
557 +
            "type": "ref"
558 +
          },
559 +
          "type": "array"
560 +
        },
479 561
        "state": {
480 562
          "description": "A merged pull is merged; a closed one, or an issue, closed.",
481 563
          "knownValues": [
482 564
            "open",
483 565
            "closed",
484 566
            "merged"
485 567
          ],
486 568
          "type": "string"
487 569
        },
488 570
        "title": {
489 571
          "type": "string"
490 572
        },
491 573
        "updatedAt": {
492 574
          "description": "When its author last changed its title or body, if they have.",
493 575
          "format": "datetime",
494 576
          "type": "string"
495 577
        },
496 578
        "uri": {
497 579
          "description": "Its dev.knotless.pull or dev.knotless.issue record.",
498 580
          "format": "at-uri",
499 581
          "type": "string"
500 582
        }
501 583
      },
502 584
      "required": [
503 585
        "uri",
504 586
        "kind",
505 587
        "title",
506 588
        "state",
507 589
        "author",
508 590
        "createdAt",
509 591
        "comments"
510 592
      ],
511 593
      "type": "object"
512 594
    },
513 595
    "itemViewBasic": {
514 596
      "description": "A pull or an issue, by its record and its title.",
515 597
      "properties": {
516 598
        "title": {
517 599
          "type": "string"
518 600
        },
519 601
        "uri": {
520 602
          "description": "Its dev.knotless.pull or dev.knotless.issue record.",
521 603
          "format": "at-uri",
522 604
          "type": "string"
523 605
        }
524 606
      },
525 607
      "required": [
526 608
        "uri",
527 609
        "title"
528 610
      ],
529 611
      "type": "object"
530 612
    },
531 613
    "languageView": {
532 614
      "description": "One language a repository is written in.",
533 615
      "properties": {
534 616
        "bytes": {
535 617
          "minimum": 0,
536 618
          "type": "integer"
537 619
        },
538 620
        "color": {
539 621
          "description": "Its color, as linguist has it.",
540 622
          "type": "string"
541 623
        },
542 624
        "name": {
543 625
          "description": "Its name, or `Other` for the languages each under one percent.",
544 626
          "type": "string"
545 627
        },
546 628
        "permille": {
547 629
          "description": "Its share of all the bytes counted, in tenths of a percent.",
548 630
          "maximum": 1000,
549 631
          "minimum": 0,
550 632
          "type": "integer"
551 633
        }
552 634
      },
553 635
      "required": [
554 636
        "name",
555 637
        "color",
556 638
        "bytes",
557 639
        "permille"
558 640
      ],
559 641
      "type": "object"
560 642
    },
643 +
    "lineTextView": {
644 +
      "description": "One line of a file.",
645 +
      "properties": {
646 +
        "number": {
647 +
          "description": "Counting from 1.",
648 +
          "minimum": 1,
649 +
          "type": "integer"
650 +
        },
651 +
        "text": {
652 +
          "type": "string"
653 +
        }
654 +
      },
655 +
      "required": [
656 +
        "number",
657 +
        "text"
658 +
      ],
659 +
      "type": "object"
660 +
    },
661 +
    "lineView": {
662 +
      "description": "The lines of a pull's diff a comment is on.",
663 +
      "properties": {
664 +
        "line": {
665 +
          "description": "The last line.",
666 +
          "minimum": 1,
667 +
          "type": "integer"
668 +
        },
669 +
        "lines": {
670 +
          "description": "The lines as they were at the comment's commit, and for one alone a few before it; absent when that commit can no longer be read.",
671 +
          "items": {
672 +
            "ref": "#lineTextView",
673 +
            "type": "ref"
674 +
          },
675 +
          "type": "array"
676 +
        },
677 +
        "outdated": {
678 +
          "description": "Whether that side of the file has changed since the comment's commit, so its lines may no longer be where they were.",
679 +
          "type": "boolean"
680 +
        },
681 +
        "path": {
682 +
          "description": "The file's path on that side.",
683 +
          "type": "string"
684 +
        },
685 +
        "side": {
686 +
          "description": "`old` for the side the pull leaves; absent, `new`.",
687 +
          "knownValues": [
688 +
            "old",
689 +
            "new"
690 +
          ],
691 +
          "type": "string"
692 +
        },
693 +
        "startLine": {
694 +
          "description": "The first, for more than one.",
695 +
          "minimum": 1,
696 +
          "type": "integer"
697 +
        }
698 +
      },
699 +
      "required": [
700 +
        "path",
701 +
        "line",
702 +
        "outdated"
703 +
      ],
704 +
      "type": "object"
705 +
    },
561 706
    "link": {
562 707
      "description": "A link shown on an account's profile or a repository's pages.",
563 708
      "properties": {
564 709
        "title": {
565 710
          "description": "What to call it. Readers fall back to the address's host.",
566 711
          "maxGraphemes": 40,
567 712
          "maxLength": 320,
568 713
          "type": "string"
569 714
        },
570 715
        "url": {
571 716
          "description": "Where it goes: an http or https address.",
572 717
          "format": "uri",
573 718
          "type": "string"
574 719
        }
575 720
      },
576 721
      "required": [
577 722
        "url"
578 723
      ],
579 724
      "type": "object"
580 725
    },
726 +
    "mention": {
727 +
      "description": "An account the span, `@handle` in the text, mentions: kept by DID, so it names the account still after its handle changes. The account hears of it as a notification.",
728 +
      "properties": {
729 +
        "did": {
730 +
          "format": "did",
731 +
          "type": "string"
732 +
        }
733 +
      },
734 +
      "required": [
735 +
        "did"
736 +
      ],
737 +
      "type": "object"
738 +
    },
581 739
    "minutesView": {
582 740
      "description": "The minutes a runner the repository names counts for its owner's public repositories, from its dev.knotless.minutes record.",
583 741
      "properties": {
584 742
        "allowance": {
585 743
          "description": "The minutes in 30 days it gives the owner's runs before they go one at a time. Absent when there is no limit.",
586 744
          "minimum": 1,
587 745
          "type": "integer"
588 746
        },
589 747
        "freeing": {
590 748
          "description": "When minutes counted now stop counting, soonest first.",
591 749
          "items": {
592 750
            "ref": "dev.knotless.minutes#freeing",
593 751
            "type": "ref"
594 752
          },
595 753
          "type": "array"
596 754
        },
597 755
        "minutes": {
598 756
          "description": "The minutes steps took in the 30 days up to `updatedAt`.",
599 757
          "minimum": 0,
600 758
          "type": "integer"
601 759
        },
602 760
        "runner": {
603 761
          "description": "The runner's account.",
604 762
          "ref": "#actorView",
605 763
          "type": "ref"
606 764
        },
607 765
        "updatedAt": {
608 766
          "description": "When the runner last counted.",
609 767
          "format": "datetime",
610 768
          "type": "string"
611 769
        }
612 770
      },
613 771
      "required": [
614 772
        "runner",
615 773
        "minutes",
616 774
        "updatedAt"
617 775
      ],
618 776
      "type": "object"
619 777
    },
620 778
    "packageView": {
621 779
      "description": "One package a repository publishes.",
622 780
      "properties": {
623 781
        "image": {
624 782
          "description": "True when its latest version, or its newest when none is latest, is a container image.",
625 783
          "type": "boolean"
626 784
        },
627 785
        "latest": {
628 786
          "description": "Its latest version: the highest with no pre-release part. Absent when it has only pre-releases.",
629 787
          "type": "string"
630 788
        },
631 789
        "name": {
632 790
          "description": "The package's name.",
633 791
          "type": "string"
634 792
        },
635 793
        "releaseCount": {
636 794
          "description": "How many versions of it are published.",
637 795
          "minimum": 0,
638 796
          "type": "integer"
639 797
        }
640 798
      },
641 799
      "required": [
642 800
        "name"
643 801
      ],
644 802
      "type": "object"
645 803
    },
646 804
    "pullHeadView": {
647 805
      "description": "What a pull brings in: a branch of a repository.",
648 806
      "properties": {
649 807
        "branch": {
650 808
          "type": "string"
651 809
        },
652 810
        "repo": {
653 811
          "description": "The repository the branch is on, if the index knows it.",
654 812
          "ref": "#repoViewBasic",
655 813
          "type": "ref"
656 814
        }
657 815
      },
658 816
      "required": [
659 817
        "branch"
660 818
      ],
661 819
      "type": "object"
662 820
    },
663 821
    "queueStateView": {
664 822
      "description": "Where an open pull stands in its target branch's merge queue.",
665 823
      "properties": {
666 824
        "checks": {
667 825
          "description": "While its batch is being checked or landing, the batch's checks; once ejected by checks that failed, those.",
668 826
          "items": {
669 827
            "ref": "#checkView",
670 828
            "type": "ref"
671 829
          },
672 830
          "type": "array"
673 831
        },
674 832
        "createdAt": {
675 833
          "description": "When it was queued or ejected.",
676 834
          "format": "datetime",
677 835
          "type": "string"
678 836
        },
679 837
        "reason": {
680 838
          "description": "Why it was ejected, as the runner said.",
681 839
          "type": "string"
682 840
        },
683 841
        "said": {
684 842
          "description": "Where it stands, in words: `Queued, 3rd of 5`, `In a batch of 4 being checked`, `Landing`, or why it was ejected.",
685 843
          "type": "string"
686 844
        },
687 845
        "state": {
688 846
          "knownValues": [
689 847
            "queued",
690 848
            "ejected"
691 849
          ],
692 850
          "type": "string"
693 851
        }
694 852
      },
695 853
      "required": [
696 854
        "state",
697 855
        "createdAt",
698 856
        "said",
699 857
        "checks"
700 858
      ],
701 859
      "type": "object"
702 860
    },
703 861
    "reactionContent": {
704 862
      "description": "What a reaction says, as GitHub's eight: a thumbs up, a thumbs down, a laugh, a party popper, a confused face, a heart, a rocket and eyes.",
705 863
      "knownValues": [
706 864
        "+1",
707 865
        "-1",
708 866
        "laugh",
709 867
        "hooray",
710 868
        "confused",
711 869
        "heart",
712 870
        "rocket",
713 871
        "eyes"
714 872
      ],
715 873
      "maxLength": 32,
716 874
      "type": "string"
717 875
    },
718 876
    "reactionCountView": {
719 877
      "description": "How many accounts reacted to something with one content.",
720 878
      "properties": {
721 879
        "content": {
722 880
          "ref": "#reactionContent",
723 881
          "type": "ref"
724 882
        },
725 883
        "count": {
726 884
          "description": "How many accounts reacted so, each once.",
727 885
          "minimum": 0,
728 886
          "type": "integer"
729 887
        },
730 888
        "reaction": {
731 889
          "description": "The asker's dev.knotless.reaction record of this content on it, if they reacted so.",
732 890
          "format": "at-uri",
733 891
          "type": "string"
734 892
        }
735 893
      },
736 894
      "required": [
737 895
        "content",
738 896
        "count"
739 897
      ],
740 898
      "type": "object"
741 899
    },
742 900
    "reactionState": {
743 901
      "description": "The reactions to a pull, an issue or a comment.",
744 902
      "properties": {
745 903
        "reactions": {
746 904
          "description": "By content, in the order dev.knotless.defs#reactionContent lists them; a content no account reacted with is left out.",
747 905
          "items": {
748 906
            "ref": "#reactionCountView",
749 907
            "type": "ref"
750 908
          },
751 909
          "type": "array"
752 910
        },
753 911
        "subject": {
754 912
          "description": "The pull, issue or comment.",
755 913
          "format": "at-uri",
756 914
          "type": "string"
757 915
        }
758 916
      },
759 917
      "required": [
760 918
        "subject",
761 919
        "reactions"
762 920
      ],
763 921
      "type": "object"
764 922
    },
765 923
    "releaseFileView": {
766 924
      "description": "One file of a release.",
767 925
      "properties": {
768 926
        "name": {
769 927
          "description": "Its name, as it is downloaded.",
770 928
          "type": "string"
771 929
        },
772 930
        "sha256": {
773 931
          "description": "The lowercase hex SHA-256 of the file, which a reader checks it against.",
774 932
          "type": "string"
775 933
        },
776 934
        "size": {
777 935
          "description": "Bytes in the file.",
778 936
          "minimum": 1,
779 937
          "type": "integer"
780 938
        }
781 939
      },
782 940
      "required": [
783 941
        "name",
784 942
        "size",
785 943
        "sha256"
786 944
      ],
787 945
      "type": "object"
788 946
    },
789 947
    "releaseView": {
790 948
      "description": "One version of a package a repository publishes, from its dev.knotless.release record, with its files and notes.",
791 949
      "properties": {
792 950
        "check": {
793 951
          "description": "The dev.knotless.check of the run that built it, if its record names one.",
794 952
          "format": "at-uri",
795 953
          "type": "string"
796 954
        },
797 955
        "commit": {
798 956
          "description": "The hex object ID of the commit its files were built from, if its record names one.",
799 957
          "type": "string"
800 958
        },
801 959
        "createdAt": {
802 960
          "description": "As its record says.",
803 961
          "format": "datetime",
804 962
          "type": "string"
805 963
        },
806 964
        "files": {
807 965
          "description": "What it publishes, in its record's order.",
808 966
          "items": {
809 967
            "ref": "#releaseFileView",
810 968
            "type": "ref"
811 969
          },
812 970
          "type": "array"
813 971
        },
814 972
        "html": {
815 973
          "description": "`notes` made into HTML, as dev.knotless.getThread's comments are: raw HTML shown as text, and links made relative to the repository.",
816 974
          "type": "string"
817 975
        },
818 976
        "image": {
819 977
          "description": "True when its files are a container image's OCI layout: an `index.json` beside blobs named `sha256-<hex>`, pulled by `docker pull` rather than downloaded.",
820 978
          "type": "boolean"
821 979
        },
822 980
        "latest": {
823 981
          "description": "True for its package's latest version: the highest with no pre-release part.",
824 982
          "type": "boolean"
825 983
        },
826 984
        "notes": {
827 985
          "description": "What changed since the version before, in Markdown, as its record says.",
828 986
          "type": "string"
829 987
        },
830 988
        "package": {
831 989
          "description": "The package's name.",
832 990
          "type": "string"
833 991
        },
834 992
        "uri": {
835 993
          "description": "Its dev.knotless.release record.",
836 994
          "format": "at-uri",
837 995
          "type": "string"
838 996
        },
839 997
        "version": {
840 998
          "description": "Its Semantic Versioning 2.0 version.",
841 999
          "type": "string"
842 1000
        }
843 1001
      },
844 1002
      "required": [
845 1003
        "uri",
846 1004
        "package",
847 1005
        "version",
848 1006
        "files",
849 1007
        "createdAt"
850 1008
      ],
851 1009
      "type": "object"
852 1010
    },
853 1011
    "releaseViewBasic": {
854 1012
      "description": "One version of a package a repository publishes, from its dev.knotless.release record: which, and when.",
855 1013
      "properties": {
856 1014
        "createdAt": {
857 1015
          "description": "As its record says.",
858 1016
          "format": "datetime",
859 1017
          "type": "string"
860 1018
        },
861 1019
        "image": {
862 1020
          "description": "True when its files are a container image's OCI layout, pulled by `docker pull` rather than downloaded.",
863 1021
          "type": "boolean"
864 1022
        },
865 1023
        "latest": {
866 1024
          "description": "True for its package's latest version: the highest with no pre-release part.",
867 1025
          "type": "boolean"
868 1026
        },
869 1027
        "package": {
870 1028
          "description": "The package's name.",
871 1029
          "type": "string"
872 1030
        },
873 1031
        "uri": {
874 1032
          "description": "Its dev.knotless.release record.",
875 1033
          "format": "at-uri",
876 1034
          "type": "string"
877 1035
        },
878 1036
        "version": {
879 1037
          "description": "Its Semantic Versioning 2.0 version.",
880 1038
          "type": "string"
881 1039
        }
882 1040
      },
883 1041
      "required": [
884 1042
        "uri",
885 1043
        "package",
886 1044
        "version",
887 1045
        "createdAt"
888 1046
      ],
889 1047
      "type": "object"
890 1048
    },
891 1049
    "releasesView": {
892 1050
      "description": "What a repository publishes, in brief, for its pages to show under its name.",
893 1051
      "properties": {
894 1052
        "count": {
895 1053
          "description": "How many releases it has published, of all its packages.",
896 1054
          "minimum": 0,
897 1055
          "type": "integer"
898 1056
        },
899 1057
        "packages": {
900 1058
          "description": "Each package it publishes, by name.",
901 1059
          "items": {
902 1060
            "ref": "#packageView",
903 1061
            "type": "ref"
904 1062
          },
905 1063
          "type": "array"
906 1064
        },
907 1065
        "release": {
908 1066
          "description": "The release to show for it: the latest of the package named as the repository, else the newest that is its package's latest, or the newest of all when each is a pre-release.",
909 1067
          "ref": "#releaseViewBasic",
910 1068
          "type": "ref"
911 1069
        }
912 1070
      },
913 1071
      "required": [
914 1072
        "count",
915 1073
        "release",
916 1074
        "packages"
917 1075
      ],
918 1076
      "type": "object"
919 1077
    },
920 1078
    "repoMade": {
921 1079
      "description": "A repository the pages made: created, forked, renamed or taken up.",
922 1080
      "properties": {
923 1081
        "name": {
924 1082
          "description": "Its name, the record key.",
925 1083
          "maxLength": 100,
926 1084
          "type": "string"
927 1085
        },
928 1086
        "uri": {
929 1087
          "description": "Its dev.knotless.repo record, by its owner's DID.",
930 1088
          "format": "at-uri",
931 1089
          "type": "string"
932 1090
        }
933 1091
      },
934 1092
      "required": [
935 1093
        "uri",
936 1094
        "name"
937 1095
      ],
938 1096
      "type": "object"
939 1097
    },
940 1098
    "repoRef": {
941 1099
      "description": "A repository, as another record names it. The URI's name is the one the repository had when the record was written; a rename changes it, and a later repository can take it. The owner in the URI and `key` stay the repository's own, and are what a reader matches on.",
942 1100
      "properties": {
943 1101
        "key": {
944 1102
          "description": "The repository's `key`.",
945 1103
          "format": "tid",
946 1104
          "type": "string"
947 1105
        },
948 1106
        "uri": {
949 1107
          "description": "The dev.knotless.repo record, as it was named when this was written.",
950 1108
          "format": "at-uri",
951 1109
          "type": "string"
952 1110
        }
953 1111
      },
954 1112
      "required": [
955 1113
        "uri",
956 1114
        "key"
957 1115
      ],
958 1116
      "type": "object"
959 1117
    },
960 1118
    "repoView": {
961 1119
      "description": "A repository among others, from its dev.knotless.repo record.",
962 1120
      "properties": {
963 1121
        "createdAt": {
964 1122
          "description": "As its record says.",
965 1123
          "format": "datetime",
966 1124
          "type": "string"
967 1125
        },
968 1126
        "description": {
969 1127
          "type": "string"
970 1128
        },
971 1129
        "forkCount": {
972 1130
          "description": "How many forks of it there are, as the appview has indexed. Given only where a list shows it, as an account's stars do.",
973 1131
          "minimum": 0,
974 1132
          "type": "integer"
975 1133
        },
976 1134
        "forkOf": {
977 1135
          "description": "The repository it was forked from, if the appview knows it.",
978 1136
          "ref": "#repoViewBasic",
979 1137
          "type": "ref"
980 1138
        },
981 1139
        "language": {
982 1140
          "description": "The language most of its default branch is written in, as its file listing counts them. Absent when none is counted, or the appview could not read it.",
983 1141
          "ref": "#languageView",
984 1142
          "type": "ref"
985 1143
        },
986 1144
        "name": {
987 1145
          "description": "The repository's name: its record key.",
988 1146
          "type": "string"
989 1147
        },
990 1148
        "owner": {
991 1149
          "ref": "#actorView",
992 1150
          "type": "ref"
993 1151
        },
994 1152
        "private": {
995 1153
          "description": "Whether it is private, in a space: listed only to its owner, asking.",
996 1154
          "type": "boolean"
997 1155
        },
998 1156
        "starCount": {
999 1157
          "description": "How many accounts starred it, as the appview has indexed. Given only where a list shows it, as an account's stars do.",
1000 1158
          "minimum": 0,
1001 1159
          "type": "integer"
1002 1160
        },
1003 1161
        "uri": {
1004 1162
          "description": "Its dev.knotless.repo record, under the name it has now.",
1005 1163
          "format": "at-uri",
1006 1164
          "type": "string"
1007 1165
        }
1008 1166
      },
1009 1167
      "required": [
1010 1168
        "uri",
1011 1169
        "owner",
1012 1170
        "name",
1013 1171
        "createdAt"
1014 1172
      ],
1015 1173
      "type": "object"
1016 1174
    },
1017 1175
    "repoViewBasic": {
1018 1176
      "description": "A repository, under the name it has now.",
1019 1177
      "properties": {
1020 1178
        "did": {
1021 1179
          "description": "The repository's owner.",
1022 1180
          "format": "did",
1023 1181
          "type": "string"
1024 1182
        },
1025 1183
        "handle": {
1026 1184
          "description": "The owner's handle, as in #actorView.",
1027 1185
          "type": "string"
1028 1186
        },
1029 1187
        "name": {
1030 1188
          "description": "The repository's name: its record key.",
1031 1189
          "type": "string"
1032 1190
        }
1033 1191
      },
1034 1192
      "required": [
1035 1193
        "did",
1036 1194
        "handle",
1037 1195
        "name"
1038 1196
      ],
1039 1197
      "type": "object"
1040 1198
    },
1041 1199
    "repoViewDetailed": {
1042 1200
      "description": "A repository, with what its pages show above themselves.",
1043 1201
      "properties": {
1044 1202
        "card": {
1045 1203
          "description": "The path, on this appview, of the picture a link to its pages unfurls into: a new one whenever the picture changes.",
1046 1204
          "type": "string"
1047 1205
        },
1048 1206
        "defaultBranch": {
1049 1207
          "description": "The branch its HEAD names: empty, for a repository never pushed.",
1050 1208
          "type": "string"
1051 1209
        },
1052 1210
        "description": {
1053 1211
          "type": "string"
1054 1212
        },
1055 1213
        "forkOf": {
1056 1214
          "description": "The repository it was forked from, if the appview knows it.",
1057 1215
          "ref": "#repoViewBasic",
1058 1216
          "type": "ref"
1059 1217
        },
1060 1218
        "links": {
1061 1219
          "description": "Links its pages show, in display order, as its record names them: its website first. Only http and https addresses.",
1062 1220
          "items": {
1063 1221
            "ref": "#link",
1064 1222
            "type": "ref"
1065 1223
          },
1066 1224
          "type": "array"
1067 1225
        },
1068 1226
        "name": {
1069 1227
          "description": "The repository's name: its record key.",
1070 1228
          "type": "string"
1071 1229
        },
1072 1230
        "openIssues": {
1073 1231
          "minimum": 0,
1074 1232
          "type": "integer"
1075 1233
        },
1076 1234
        "openPulls": {
1077 1235
          "minimum": 0,
1078 1236
          "type": "integer"
1079 1237
        },
1080 1238
        "owner": {
1081 1239
          "ref": "#actorView",
1082 1240
          "type": "ref"
1083 1241
        },
1084 1242
        "private": {
1085 1243
          "description": "Whether it is private, in a space: shown only to its members, each logged in to this appview.",
1086 1244
          "type": "boolean"
1087 1245
        },
1088 1246
        "releases": {
1089 1247
          "description": "What it publishes, in brief, as the appview has indexed. Absent when it has published nothing, for a private repository, which cannot publish, and from an appview that keeps no index.",
1090 1248
          "ref": "#releasesView",
1091 1249
          "type": "ref"
1092 1250
        },
1093 1251
        "starCount": {
1094 1252
          "description": "How many accounts starred it, as the appview has indexed. Absent for a private repository, which cannot be starred, and from an appview that keeps no index.",
1095 1253
          "minimum": 0,
1096 1254
          "type": "integer"
1097 1255
        },
1098 1256
        "uri": {
1099 1257
          "description": "Its dev.knotless.repo record, under the name it has now.",
1100 1258
          "format": "at-uri",
1101 1259
          "type": "string"
1102 1260
        },
1103 1261
        "viewer": {
1104 1262
          "description": "What the account asking has to do with it; absent when no one asks.",
1105 1263
          "ref": "#repoViewerState",
1106 1264
          "type": "ref"
1107 1265
        }
1108 1266
      },
1109 1267
      "required": [
1110 1268
        "uri",
1111 1269
        "owner",
1112 1270
        "name",
1113 1271
        "defaultBranch",
1114 1272
        "openPulls",
1115 1273
        "openIssues",
1116 1274
        "card"
1117 1275
      ],
1118 1276
      "type": "object"
1119 1277
    },
1120 1278
    "repoViewerState": {
1121 1279
      "description": "What the account asking a query has to do with a repository.",
1122 1280
      "properties": {
1123 1281
        "star": {
1124 1282
          "description": "Its dev.knotless.star record naming the repository, if it starred it.",
1125 1283
          "format": "at-uri",
1126 1284
          "type": "string"
1127 1285
        },
1128 1286
        "transfer": {
1129 1287
          "description": "Where the owner has offered to move the repository, when it is offered to the account asking, which can take it up (dev.knotless.acceptTransfer).",
1130 1288
          "ref": "#repoViewBasic",
1131 1289
          "type": "ref"
1132 1290
        }
1133 1291
      },
1134 1292
      "type": "object"
1135 1293
    },
1294 +
    "reviewView": {
1295 +
      "description": "Where one reviewer stands on a pull: their latest comment with a verdict. A comment without one leaves it as it was, and a pull's author reviews nothing of their own.",
1296 +
      "properties": {
1297 +
        "commit": {
1298 +
          "description": "The hex object ID of the head it looked at.",
1299 +
          "type": "string"
1300 +
        },
1301 +
        "maintainer": {
1302 +
          "description": "Whether the reviewer is the repository's owner or a collaborator.",
1303 +
          "type": "boolean"
1304 +
        },
1305 +
        "outdated": {
1306 +
          "description": "Whether the open pull has moved past the head it looked at: an approval then stands for what the pull was, not what it is.",
1307 +
          "type": "boolean"
1308 +
        },
1309 +
        "reviewer": {
1310 +
          "ref": "#actorView",
1311 +
          "type": "ref"
1312 +
        },
1313 +
        "uri": {
1314 +
          "description": "The dev.knotless.comment that reviewed it.",
1315 +
          "format": "at-uri",
1316 +
          "type": "string"
1317 +
        },
1318 +
        "verdict": {
1319 +
          "description": "`approve`, or `changes` for one that asked for changes.",
1320 +
          "knownValues": [
1321 +
            "approve",
1322 +
            "changes"
1323 +
          ],
1324 +
          "type": "string"
1325 +
        }
1326 +
      },
1327 +
      "required": [
1328 +
        "reviewer",
1329 +
        "verdict",
1330 +
        "uri",
1331 +
        "outdated",
1332 +
        "maintainer"
1333 +
      ],
1334 +
      "type": "object"
1335 +
    },
1136 1336
    "starState": {
1137 1337
      "description": "A repository's stars, as starring or unstarring it leaves them.",
1138 1338
      "properties": {
1139 1339
        "star": {
1140 1340
          "description": "The asker's dev.knotless.star record naming it; absent once unstarred.",
1141 1341
          "format": "at-uri",
1142 1342
          "type": "string"
1143 1343
        },
1144 1344
        "starCount": {
1145 1345
          "description": "How many accounts starred it now.",
1146 1346
          "minimum": 0,
1147 1347
          "type": "integer"
1148 1348
        }
1149 1349
      },
1150 1350
      "required": [
1151 1351
        "starCount"
1152 1352
      ],
1153 1353
      "type": "object"
1154 1354
    }
1155 1355
  },
1156 1356
  "description": "Definitions shared by the knotless lexicons.",
1157 1357
  "id": "dev.knotless.defs",
1158 1358
  "lexicon": 1
1159 1359
}

Compare Other Versions

Lexicon Garden

@