dev.knotless.check

lexicons.knotless.dev

Documentation

Kept in the runner's account, keyed `<owner hash>.<repo key>.<ref hash>.<commit>.<workflow>`, where each hash is the first 26 characters of the lowercase unpadded base32 SHA-256 of the owner's DID or the full ref name (for a pull's run, the pull's AT-URI), so each commit keeps its own check of each workflow, replaced only when that commit runs again. A pull's run is keyed `<owner hash>.<repo key>.<pull hash>.<commit>.<baseCommit>.<workflow>`, so a run against a newer base is a check of its own. A runner may delete checks of no more use: a batch's, a closed pull's, ones superseded by a newer run of the same workflow, and the default branch's after a while. Readers trust only a runner the repository names.

main record

Kept in the runner's account, keyed `<owner hash>.<repo key>.<ref hash>.<commit>.<workflow>`, where each hash is the first 26 characters of the lowercase unpadded base32 SHA-256 of the owner's DID or the full ref name (for a pull's run, the pull's AT-URI), so each commit keeps its own check of each workflow, replaced only when that commit runs again. A pull's run is keyed `<owner hash>.<repo key>.<pull hash>.<commit>.<baseCommit>.<workflow>`, so a run against a newer base is a check of its own. A runner may delete checks of no more use: a batch's, a closed pull's, ones superseded by a newer run of the same workflow, and the default branch's after a while. Readers trust only a runner the repository names.

Record Key any Any valid record key

Properties

baseCommit string Optional

For a pull's run, the hex object ID of the tip of the branch the pull is into that its head was merged with: the run is of that merge, as merging the pull would make it, so it is current only while both the head and the base are where they were.

maxLength: 64 bytesminLength: 40 bytes
batch array of ref #batched Optional

For a run of a merge queue's batch (dev.knotless.queue): the pulls it would land, in order, each squashed as a commit of its own onto `baseCommit`, the tip of the branch `ref` names, and `commit` the last of them. Once every run of the batch passes, the branch moves to `commit`.

maxLength: 64 items
commit string Required

The hex object ID the ref pointed at.

maxLength: 64 bytesminLength: 40 bytes
error string Optional

Why the workflow did not run: for `error`, or for a `failure` of a pull that does not merge, the paths that conflict.

maxLength: 4096 bytes
finishedAt string datetime Optional

An RFC 3339 formatted timestamp.

generation integer Optional

The ref's generation at that commit.

minimum: 1
log blob Optional

Every step's output, interleaved as it was written; the tail, when there was more.

maxSize: 1.0 MB
outputs array of union Optional

What the run made to be looked at, such as screenshots of the pages a change moved, in the order of their names. Kinds unknown to a reader are passed over.

maxLength: 32 items
Known types:
pull string at-uri Optional

The dev.knotless.pull record, for a run of the pull's head.

queue string Optional

For a pull's run, where its workflow runs in the merge queue, when not only on each batch: `first`, as the workflow's `queue: first` asks, is a pre-flight, which a queued pull must pass at its head before it goes into a batch.

maxLength: 64 bytes
Known values: first
ref string Required

The full ref name the run was for, such as refs/heads/main; for a pull's run, its head branch in the repository the pull brings it from.

maxLength: 1024 bytes
skipped string Optional

For a `success` that ran no step: why, as people read it, such as the paths its workflow names, none of which the change touched. Its steps are then each `skipped`.

maxLength: 4000 bytesmaxGraphemes: 1000 graphemes
startedAt string datetime Required

An RFC 3339 formatted timestamp.

status string Required

`queued` is a run filed and waiting for a job on its runner, no step started yet: it is filed `running` once it starts, its `startedAt` then. `failure` is a step that exited non-zero or ran out of time, or a pull's head that conflicts with its base; `error` is the runner failing to run the workflow at all; `cancelled` is a run stopped for a newer commit's run of the workflow on the same ref or pull. A `success` with `skipped` ran no step, as the change touched none of the paths the workflow names, and passes as any `success` does.

maxLength: 64 bytes
Known values: queued, running, success, failure, error, cancelled
steps array of ref #step Optional

Each step the workflow has, in order. Absent for `error`.

maxLength: 256 items
workflow string Required

The workflow's name, which is also the last part of the record key.

maxLength: 64 bytes
View raw schema
{
  "description": "Kept in the runner's account, keyed `<owner hash>.<repo key>.<ref hash>.<commit>.<workflow>`, where each hash is the first 26 characters of the lowercase unpadded base32 SHA-256 of the owner's DID or the full ref name (for a pull's run, the pull's AT-URI), so each commit keeps its own check of each workflow, replaced only when that commit runs again. A pull's run is keyed `<owner hash>.<repo key>.<pull hash>.<commit>.<baseCommit>.<workflow>`, so a run against a newer base is a check of its own. A runner may delete checks of no more use: a batch's, a closed pull's, ones superseded by a newer run of the same workflow, and the default branch's after a while. Readers trust only a runner the repository names.",
  "key": "any",
  "record": {
    "properties": {
      "baseCommit": {
        "description": "For a pull's run, the hex object ID of the tip of the branch the pull is into that its head was merged with: the run is of that merge, as merging the pull would make it, so it is current only while both the head and the base are where they were.",
        "maxLength": 64,
        "minLength": 40,
        "type": "string"
      },
      "batch": {
        "description": "For a run of a merge queue's batch (dev.knotless.queue): the pulls it would land, in order, each squashed as a commit of its own onto `baseCommit`, the tip of the branch `ref` names, and `commit` the last of them. Once every run of the batch passes, the branch moves to `commit`.",
        "items": {
          "ref": "#batched",
          "type": "ref"
        },
        "maxLength": 64,
        "type": "array"
      },
      "commit": {
        "description": "The hex object ID the ref pointed at.",
        "maxLength": 64,
        "minLength": 40,
        "type": "string"
      },
      "error": {
        "description": "Why the workflow did not run: for `error`, or for a `failure` of a pull that does not merge, the paths that conflict.",
        "maxLength": 4096,
        "type": "string"
      },
      "finishedAt": {
        "format": "datetime",
        "type": "string"
      },
      "generation": {
        "description": "The ref's generation at that commit.",
        "minimum": 1,
        "type": "integer"
      },
      "log": {
        "accept": [
          "text/plain"
        ],
        "description": "Every step's output, interleaved as it was written; the tail, when there was more.",
        "maxSize": 1000000,
        "type": "blob"
      },
      "outputs": {
        "description": "What the run made to be looked at, such as screenshots of the pages a change moved, in the order of their names. Kinds unknown to a reader are passed over.",
        "items": {
          "refs": [
            "#image"
          ],
          "type": "union"
        },
        "maxLength": 32,
        "type": "array"
      },
      "pull": {
        "description": "The dev.knotless.pull record, for a run of the pull's head.",
        "format": "at-uri",
        "type": "string"
      },
      "queue": {
        "description": "For a pull's run, where its workflow runs in the merge queue, when not only on each batch: `first`, as the workflow's `queue: first` asks, is a pre-flight, which a queued pull must pass at its head before it goes into a batch.",
        "knownValues": [
          "first"
        ],
        "maxLength": 64,
        "type": "string"
      },
      "ref": {
        "description": "The full ref name the run was for, such as refs/heads/main; for a pull's run, its head branch in the repository the pull brings it from.",
        "maxLength": 1024,
        "type": "string"
      },
      "repo": {
        "description": "The repository whose ref moved, or the target of the pull.",
        "ref": "dev.knotless.defs#repoRef",
        "type": "ref"
      },
      "skipped": {
        "description": "For a `success` that ran no step: why, as people read it, such as the paths its workflow names, none of which the change touched. Its steps are then each `skipped`.",
        "maxGraphemes": 1000,
        "maxLength": 4000,
        "type": "string"
      },
      "startedAt": {
        "format": "datetime",
        "type": "string"
      },
      "status": {
        "description": "`queued` is a run filed and waiting for a job on its runner, no step started yet: it is filed `running` once it starts, its `startedAt` then. `failure` is a step that exited non-zero or ran out of time, or a pull's head that conflicts with its base; `error` is the runner failing to run the workflow at all; `cancelled` is a run stopped for a newer commit's run of the workflow on the same ref or pull. A `success` with `skipped` ran no step, as the change touched none of the paths the workflow names, and passes as any `success` does.",
        "knownValues": [
          "queued",
          "running",
          "success",
          "failure",
          "error",
          "cancelled"
        ],
        "maxLength": 64,
        "type": "string"
      },
      "steps": {
        "description": "Each step the workflow has, in order. Absent for `error`.",
        "items": {
          "ref": "#step",
          "type": "ref"
        },
        "maxLength": 256,
        "type": "array"
      },
      "workflow": {
        "description": "The workflow's name, which is also the last part of the record key.",
        "maxLength": 64,
        "type": "string"
      }
    },
    "required": [
      "repo",
      "ref",
      "commit",
      "workflow",
      "status",
      "startedAt"
    ],
    "type": "object"
  },
  "type": "record"
}
batched object

A pull in a merge queue's batch, as the run squashed it.

Properties

commit string Required

The hex object ID of the pull's own commit in the batch.

maxLength: 64 bytesminLength: 40 bytes
head string Optional

The hex object ID of the pull's head that was squashed.

maxLength: 64 bytesminLength: 40 bytes
pull string at-uri Required

The dev.knotless.pull record.

View raw schema
{
  "description": "A pull in a merge queue's batch, as the run squashed it.",
  "properties": {
    "commit": {
      "description": "The hex object ID of the pull's own commit in the batch.",
      "maxLength": 64,
      "minLength": 40,
      "type": "string"
    },
    "head": {
      "description": "The hex object ID of the pull's head that was squashed.",
      "maxLength": 64,
      "minLength": 40,
      "type": "string"
    },
    "pull": {
      "description": "The dev.knotless.pull record.",
      "format": "at-uri",
      "type": "string"
    }
  },
  "required": [
    "pull",
    "commit"
  ],
  "type": "object"
}
image object

A picture a run made, as an output.

Properties

alt string Required

What the picture shows, from its file's name, for whoever reads it without seeing it: a person or an agent.

maxLength: 3000 bytesmaxGraphemes: 300 graphemes
image blob Required

No description available.

maxSize: 1.0 MB
View raw schema
{
  "description": "A picture a run made, as an output.",
  "properties": {
    "alt": {
      "description": "What the picture shows, from its file's name, for whoever reads it without seeing it: a person or an agent.",
      "maxGraphemes": 300,
      "maxLength": 3000,
      "type": "string"
    },
    "image": {
      "accept": [
        "image/png",
        "image/jpeg",
        "image/webp",
        "image/gif"
      ],
      "maxSize": 1000000,
      "type": "blob"
    }
  },
  "required": [
    "image",
    "alt"
  ],
  "type": "object"
}
step object

No description available.

Properties

durationMs integer Optional

How long the step ran, in milliseconds.

minimum: 0
exitCode integer Optional

Absent when the step was killed for running out of time.

name string Required

The step's name in the workflow, or `step <n>` for one with none.

maxLength: 256 bytes
status string Required

`cancelled` is the step running when its run was cancelled.

maxLength: 64 bytes
Known values: success, failure, skipped, cancelled
View raw schema
{
  "properties": {
    "durationMs": {
      "description": "How long the step ran, in milliseconds.",
      "minimum": 0,
      "type": "integer"
    },
    "exitCode": {
      "description": "Absent when the step was killed for running out of time.",
      "type": "integer"
    },
    "name": {
      "description": "The step's name in the workflow, or `step <n>` for one with none.",
      "maxLength": 256,
      "type": "string"
    },
    "status": {
      "description": "`cancelled` is the step running when its run was cancelled.",
      "knownValues": [
        "success",
        "failure",
        "skipped",
        "cancelled"
      ],
      "maxLength": 64,
      "type": "string"
    }
  },
  "required": [
    "name",
    "status"
  ],
  "type": "object"
}

Lexicon Garden

@