brand_credential_missing
A rules row names a credential the brand holds, and the Brand doesn't declare it.
| Fix | Fails in | Exit |
|---|---|---|
| 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.
✗ 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 fiximport { Brand } from 'services.dev'
export default Brand({
domain: 'lingua.example',
})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' } },
})✓ ready to sell · 1 Service · it keeps at least 80% of every jobimport { 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.' },
},
},
})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,
})- Brand()
- Credentials the brand holds
- Refusals and cures
- Rules: how a Service meets licensing by design
{
"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
{
"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",