brand_credential_missing

The running jobjob_7Hq2 · delivered · document.fr-CA.pdf · $49.00 charged

A rules row names a credential the brand holds, and the Brand doesn't declare it.

FixFails inExit
Declare it in brand.ts, under Brand({ credentials }), with the verifier that keeps it fresh.brand.ts · brand.credentials['registry account']1

Owned by Brand(): the page that explains what this gate holds.

npx services.dev check
  ✗ A rules row names a credential the brand holds, and the Brand doesn't declare it. Declare it in brand.ts, under Brand({ credentials }), with the verifier that keeps it fresh. The sign row names the brand credential registry account, and brand.ts declares no credential by that name.
    at brand.ts · brand.credentials['registry account']
✗ 1 to fix
brand.ts
import { Brand } from 'services.dev'

export default Brand({
  domain: 'lingua.example',
})
git add -A && git diff --staged
diff --git a/brand.ts b/brand.ts
index 851f6c0..2fc16eb 100644
--- a/brand.ts
+++ b/brand.ts
@@ -2,4 +2,5 @@ import { Brand } from 'services.dev'
 
 export default Brand({
   domain: 'lingua.example',
+  credentials: { 'registry account': { verify: 'https://verify.example.test/registry' } },
 })
npx services.dev check
✓ ready to sell · 1 Service · it keeps at least 80% of every job
rules.ts
import { Rules } from 'services.dev'

export default Rules({
  version: '2026-10',
  services: {
    translation: {
      sign: { reserved: 'sworn translator', where: '*', and: { brand: 'registry account' }, position: 'A sworn translator signs a translation filed with a registry.' },
    },
  },
})
services/translation.ts
import { Service } from 'services.dev'
import rules from '../rules.ts'

export default Service({
  name: 'Translation',
  input: { document: 'file', to: 'language: a BCP 47 tag, such as fr-CA' },
  output: { document: 'file' },
  rules,
  roles: { translator: { credential: 'sworn translator' } },
  deliver: {
    translate: 'ai',
    harden: { review: 'adversarial', lenses: ['meaning', 'terms'] },
    sign: { by: 'translator', stamp: true },
  },
  price: 89,
})
npx services.dev check --json · the brand_credential_missing failure
{
  "code": "brand_credential_missing",
  "reason": "A rules row names a credential the brand holds, and the Brand doesn't declare it.",
  "next": "Declare it in brand.ts, under Brand({ credentials }), with the verifier that keeps it fresh. The sign row names the brand credential registry account, and brand.ts declares no credential by that name.",
  "doc_url": "https://services.dev/docs/reference/check/brand_credential_missing",
  "file": "brand.ts",
  "path": "brand.credentials['registry account']"
}
The whole document check --json prints
npx services.dev check --json
{
  "ai": {
    "cents_per_call": 42,
    "simulated": true
  },
  "mcp": {
    "tools": 13,
    "tokens": 4494,
    "sandbox": 9,
    "budget": 8000
  },
  "files": [
    {
      "path": "brand.ts",
      "lines": 1,
      "kind": "brand",
      "says": "lingua · lingua.example"
    },
    {
      "path": "rules.ts",