Skip to main content
Every command on this page also takes --url <url> and --app-id <id>. Their defaults are in Credential resolution. Each exits 0 on success and 1 with the reason on stderr otherwise. In CI, set the credential variables instead of running login. See In CI.

outerlayer emit (a named check)

Record one named check’s outcome on a work item.
The name starts with a lowercase letter, then lowercase letters, digits, ., - or _, up to 64 characters. A fail needs --link or a body. A pass needs neither. The command prints the recorded check’s id.
Inside a recorded session, the check is stored as the session’s. A session cannot record over a person’s fail. A session not launched with OUTERLAYER_WORK is refused. A person’s own pass or fail on one criterion’s proof goes on that criterion’s thread instead: see outerlayer work comment in Work commands. Exit codes: 0 recorded, 1 refused or invalid. See also: Record a check.

outerlayer emit artifact

Upload a proof artifact with a caption.
More on --test:
  • --test needs --for and an .xml file. Without either, the command exits 1.
  • A name several tests share binds all of them, with a warning.
  • <name>=<path>:<line> gives the test’s location when the runner’s file does not carry it, as in --test "renders the banner=src/login.test.ts:42".
  • The command exits 1 on a name the file does not hold, or on a location that is absolute or leaves the repository.
The kind comes from the file type: see the table in Attach evidence. Files cap at 8 MiB. A .xml file whose root is <testsuites> or <testsuite> is a test artifact. With --for, the command reads the XML first and exits 1 on a malformed file before sending anything. Without --for, the CLI sends an .xml file without checking it. The command prints the artifact’s id, for a later --replaces. Inside a recorded session, the artifact is queued and uploads on the next outerlayer sync. A session not launched with OUTERLAYER_WORK is refused. Outside a session, it uploads at once, anchored to --pr, CI’s pull request, or the current git checkout. With nothing to attach it to, it is refused. A --replaces target already uploaded is hidden everywhere. One target still in the local queue is cancelled, so it never uploads. If you name several ids and one is still queued, the command is refused: run outerlayer sync first, then retry. Exit codes: 0 recorded or queued, 1 refused or invalid. See also: Attach evidence.

outerlayer emit finding

Record one problem you hit in the factory.
A refused finding names the field to fix. The old flags --subject, --kind, --severity, --verdict, --fixed and --source are refused by name. Use --category instead. Exit codes: 0 recorded, 1 refused or invalid. See also: Findings.

outerlayer emit findings

Record a batch of findings from a JSON file.
The file holds "schemaVersion": 2, optional headSha and contextSourceSha, and 1 to 500 findings with the same fields and rules as emit finding. - reads standard input. The whole batch is checked before anything is sent. A schemaVersion: 1 file is refused. Give each finding a category and set schemaVersion: 2. Exit codes: 0 recorded, 1 refused or invalid. See also: Findings.

outerlayer emit criteria

Record a work item’s acceptance criteria as one list. The Criteria tab, its count and the item’s status read this list. Nothing reads criteria out of the issue.
The file is JSON. - reads standard input.
The list holds 1 to 200 criteria. The command checks the file before it sends anything, and names the id or value it refuses. Every list you record is kept, with who recorded it and when. The newest is the item’s current list. Only a person can replace a recorded list. Anyone with the permission, an agent session included, can record an item’s first list. After that, a replacement from an agent session, or from a factory key that belongs to no person (such as a CI or host key), is refused with 409 and the command exits 1. Run the command outside the session, with your own login. To let agent sessions replace a list too, set criteria.replace: anyone in .outerlayer/policy.yaml. See Policy and validators. Recording a list asks for a new evaluation of the item’s linked pull requests. An item with no linked pull request gets none, but its Criteria tab shows the list at once. An item with no recorded list shows no criteria. Exit codes: 0 recorded, 1 refused or invalid. See also: Review the work, Attach evidence.