An in-toto predicate type

capability/v1

A signed statement that a named tool read these Velaris source files, byte for byte, and reports this capability surface: the effects the program declares, the paths, hosts and modules it names, and the narrowest budget to run it under.

Predicate type: https://gowrishankar-infra.github.io/velaris-lang/capability/v1 - this page.
Schema: schema.json, JSON Schema draft 2020-12, for the predicate.
Definition: velaris-spec SPEC.md section 8.5, dedicated to the public domain under CC0.

What it is

A velaris.audit/1 document (velaris-spec section 8) names no file and carries no signature. This predicate type puts one inside an in-toto Statement v1, whose subjects are the files audited, identified by digest, so that a signed Statement says which source the audit describes, and who says so.

{
  "_type": "https://in-toto.io/Statement/v1",
  "subject": [
    {"name": "examples/effects.vel",
     "digest": {"sha256": "e483365ce74a20770a1ef503f185f4de2c16b0524797408784a235e78b6baafb"}}
  ],
  "predicateType": "https://gowrishankar-infra.github.io/velaris-lang/capability/v1",
  "predicate": {
    "producer": {"name": "velaris-lang",
                 "uri": "https://github.com/gowrishankar-infra/velaris-lang"},
    "specification": "velaris-spec 0.5",
    "auditedAt": "2026-09-11T00:00:00Z",
    "audit": {"schema": "velaris.audit/1", "velaris_version": "8.1.0",
              "ok": true, "effects": ["clock", "fs", "io", "rand"],
              "safe_command": "velaris <file> --allow clock,fs:read:report.txt,fs:write:report.txt,io,rand",
              "counts": {"fs": 2, "net": 0}, "prover": true,
              "...": "the rest of the audit"}
  }
}

Fields

FieldRequiredMeaning
subject[0]yesthe file audited: name, its path as the producer was given it, /-separated; digest.sha256 of its bytes. The files it imports should follow, one subject each.
predicate.audityesa velaris.audit/1 document produced from exactly the bytes the subjects name
predicate.produceryesname of the implementation that wrote the audit, and optionally uri; its version is the audit's velaris_version
predicate.specificationnothe velaris-spec version followed, as velaris-spec 0.5
predicate.auditedAtnowhen the audit was made, RFC 3339 in UTC, by the producer's clock
predicate.conformancenothe conformance levels the producer claims (velaris-spec CONFORMANCE.md) and the corpus it ran - a claim, not evidence

Parsing rules

In-toto's standard parsing rules apply. Ignore any field you do not know, in the predicate and in the audit. Fields may be added within v1; a change of meaning is a new type, .../capability/v2. Check that the first subject's digest is the digest of the file you mean to trust.

What it does not say

That the audit is right, that the program is safe to run, or that any runtime will enforce the budget in safe_command. When audit.ok is false, it says nothing about what the program may do. It says that the signer ran the producer on these bytes and got this audit.

A producer

velaris-lang writes Statements of this type, from 4.2:

velaris attest program.vel --output program.intoto.json

It signs none; cosign (cosign attest-blob --statement) and sigstore-python sign them, as EMBEDDING.md shows. Every release of velaris-lang carries one for an example program, signed by its release workflow and verified there; velaris-spec's example was written by velaris attest.