Artefact Passport & Evidence Ledger
The Passport is the evidence record for one work package or one release: every check, every decision and every exception, with what each was based on. It is read from an append-only evidence ledger that the Studio writes as each thing happens, and it is read-only.
Where to find it
Anyone in the studio can read a passport. Refresh reads it again; Download JSON saves it exactly as the server assembled it. Reading it changes nothing.
What you read this way is the live view: assembled afresh each time, and not itself signed. The signed passports — the same record frozen at one moment and signed — are listed in their own section, Signed passports and sharing. See Signed passports below.
Reading it at a glance
The evidence ledger
Each work package and each release has its own ledger. An entry is added in the same moment as the thing it records — an agent’s assessment, a person’s decision, an exception, an invalidation, a release approval, a DPIA approval, the CI results read when a “reads the PR” item was assessed, the run that produced a pull request head. Nothing is filled in afterwards.
Entries cannot be edited or removed by the application. Each one carries a fingerprint of the record it came from and of the entry before it, so the entries form a chain: take one out, or change one, and the chain no longer joins up.
Reading the lines at the top
Under the identity page, a passport tells you how far to trust it.
“Saved — but its evidence could not be recorded”
Very occasionally a save succeeds and the ledger cannot be written at that moment. You see a notice saying exactly that. Your change is saved — nothing was rolled back and nothing needs doing again. The gap itself is put on record, and the missing evidence is added the next time that record changes.
The studio’s owner is also told, by a banner at the top of every Studio page. See When Evidence Is Not Recorded.
What a passport holds
A release’s passport adds its readiness check, who approved it, the DPIA it relied on, comms approvals and any rollback, and lists each work package with its approved head, CI and provenance.
These three are described in Sample Reviews, Holds and SBOMs.
The words a passport uses
| Where | Word | Meaning |
|---|---|---|
| Chain | Intact — not signed yet | No entry was dropped or altered. The live view is not signed |
| Chain | Broken | An entry is missing or was changed |
| Signed version | Signature verified | A published key signed exactly this record |
| Signed version | Signature not valid | It was not. Do not rely on it |
| Signed version | Not checked yet | Nobody has asked the verifier yet |
| Exception | In force | The item counts as waived |
| Exception | Expired | Its time ran out; the item is unmet |
| Exception | Voided | A change, a new decision or a renewal cut it short |
| Control | Satisfied, Waived, Not satisfied, Not needed, Unknown | See Controls in this article |
| Provenance | Produced by | The Studio published this head itself and knows what made it |
| Provenance | Seen | A head on the pull request the Studio did not publish |
| Anywhere | Unknown | The record does not say. It is never rounded up to a pass |
| Evidence | Recorded late; Lost | Written well after the event; or never recordable. See When Evidence Is Not Recorded |
Controls
A Definition of Ready or Done item can name the controls it is evidence for. On Work Package Checklists, open an item and use Controls: choose a framework and then a control — ISO 27001:2022 (A.8.25 to A.8.32), SOC 2 (CC8.1 and the criteria around change), NIST SSDF, SLSA build levels — or choose Custom and give your own reference. An item can name up to ten. The seed checklists come mapped already. Owners and reviewers change them, and every change is in the studio audit.
The passport then shows each control once, at the worst of the items that cite it:
Signed passports
A signed passport is the Passport frozen at one moment and signed with the platform’s key, so that someone outside the Studio can check it with the published public key alone. Approving a release issues one, in the same step. A studio owner or admin can also issue one at any time with Issue a signed passport, for a release that has been approved or for a work package — a lone owner does it alone.
.dsse, the signed file to verify; .json, the exact body that was signed; .html, the same record as a page to read.If signing did not complete when a release was approved, the approval stands. The page says no signed passport was issued for it and offers to issue one.
Verifying one outside the Studio
An auditor needs the .dsse file and the public keys, which are published. Verify one outside the Studio on the list gives the command for a small offline script; the same check is available as a public endpoint, and the file is a standard signed in-toto statement, so standard tooling reads it too. The check uses only the file and the published keys — it never asks the Studio whether the passport is real.
An exception that was in force when a passport was issued carries its expiry inside the signed record, and every check judges it against the day it is run: once the expiry has passed, the passport no longer clears, with no new version needed.
Deployments
A deployment pipeline can tell the Studio where a release went. On Repositories, the studio owner creates a deploy token for a repository: it is shown once, the Studio keeps only a hash of it, and it can report deployments of that repository’s releases, and read the signed passport of a release that carries that repository’s commits, and do nothing else — it is not the repository’s access token and cannot read the repository or the rest of the studio. The panel gives the command to run after a deploy. Each report — environment, commit, workflow run, time, or a rollback — is listed on the release and recorded in its evidence ledger. A report for a commit the release’s signed passport does not cover is refused. Reports are evidence; they do not change the release’s status.
The passport check in a pipeline
Pipelines the Studio creates (Repositories → DevOps → Create, GitHub Actions) check the passport for you. Every deploy waits for a passport-check job: it finds the release that covers the commit being deployed, fetches its signed passport and verifies it on GitHub’s runner with the published keys — the signature, that the commit is one the passport covers, that nothing is unmet, and that no exception has run out. The verifier is written into the workflow and compared with its hash before it runs; nothing is downloaded.
PW_DEPLOY_TOKEN (Settings → Secrets and variables → Actions). Without it an enforced deploy is held and a warn-only one says so.An agent override is retired as soon as the reviewer agents approve the same version themselves, and a retired override is never counted. One that has run out and is counted was what the gate stood on when the passport was issued: renew it on the gate, or reopen the gate and have the agents review again, then issue the passport again.
Setting the check up, every state the Pipelines page can show and what to do when a check does not pass are in Wire a Pipeline to the Passport.
The check sits beside branch protection, tag protection and required reviewers; it does not replace them. Whoever can change a workflow can remove the check, which is why the Studio shows where it is missing or changed.
What is not there yet
A pipeline you wrote yourself, or one outside GitHub Actions, is not held: a deployment from it is not refused because a passport is missing or does not clear, unless you add the same job. Security and dependency scan results are not recorded in a passport. Nothing deletes evidence when a retention period ends. Each agent does not act under credentials of its own: the passport names the agent and the GitHub account the commit was made as. The notice that evidence was not recorded is shown in the product and is not emailed, and there is no public log of issued passports.