> ## Documentation Index
> Fetch the complete documentation index at: https://reshot.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Treat a Journey, Run, Decision, Rendition, Publication, and Release Book as distinct lifecycle objects.
> Never describe imported or customer-attested material as independently verified evidence without a complete hosted custody chain.

# Certified Targets

> The stricter release gate for apps that need deterministic readiness and explicit target contracts.

Certified Targets are the narrow, stricter promise for teams that need more
than generic capture support. The goal is not to say every app is certified on
first contact. The goal is to make the release gate explicit and repeatable.

![Review queue](https://files.reshot.dev/docs/platform-cli-commits-review/step-0-list/9541071e099531be1139fcb22f737fe2.png)

*A certified target run flows into the same Review queue — every capture waits for an explicit decision before it becomes the baseline.*

## What certified means

A certified target passes the same end-to-end path teams are expected to trust:

1. Route audit
2. Readiness audit
3. Capture run
4. Publish
5. Pull or export verification
6. Hosted delivery verification
7. Live-auth smoke where required

If one of those stages fails, certification fails.

## Target contract

Add a top-level `target` block to `reshot.config.json`:

```json theme={null}
{
  "target": {
    "key": "my-app",
    "displayName": "My App",
    "tier": "certified",
    "owner": "Acme",
    "baseUrl": "http://localhost:3000",
    "captureSafe": false,
    "supportedLocalCommand": "npm run build && npm run start",
    "defaultAuthMode": "live-auth",
    "fixture": {
      "command": "node scripts/prepare-docs-fixture.mjs",
      "healthUrl": "/api/health"
    },
    "requiredEnv": ["PROJECT_ID"],
    "certificationScenarioKeys": ["playground-workflow", "dashboard-overview"]
  }
}
```

Each scenario can also declare its own contract:

```json theme={null}
{
  "key": "playground-workflow",
  "name": "Playground Workflow",
  "url": "/playground",
  "steps": [
    { "action": "wait", "ms": 1000 },
    { "action": "screenshot", "key": "editor-loaded" }
  ],
  "requiredRoutes": ["/playground", "/api/playground"],
  "requiredSelectors": ["[data-testid='playground-page']"],
  "expectedArtifacts": ["editor-loaded", "preview-slide1"],
  "publishPolicy": "required"
}
```

## Readiness rules

Certified targets need app-owned readiness signals. Sleeps can exist, but they
cannot be the only readiness mechanism.

At minimum, a certified scenario should have one of:

* `ready.selector`
* `ready.expression`
* a `waitForSelector` step backed by an app-owned selector

## Commands

```bash theme={null}
reshot doctor target
```

Reports are written to `.reshot/reports/certification.json`.

## When to use this

Use Certified Targets when:

* the capture path is already working
* the app needs a tighter release gate
* readiness, auth, and delivery need deterministic verification

For everyone else, the normal local-first and CI flow is still the right
starting point.
