surface_drift

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

A surface serves a call with no row, or lacks a live row.

FixFails inExit
Add the row, or render it.the brand: check prints it under every Service1

Owned by The contract: the page that explains what this gate holds.

npx services.dev check
  ✗ A surface serves a call with no row, or lacks a live row. Add the row, or render it. cli listen is service.order's command, and the CLI has none.
    https://services.dev/docs/reference/check/surface_drift
✗ 1 to fix
services/listen.ts
import { Service } from 'services.dev'

export default Service({
  name: 'Transcript',
  input: { recording: 'file', to: 'language: a BCP 47 tag, such as fr-CA' },
  output: { transcript: 'file' },
  price: 19,
})
git add -A && git diff --staged
diff --git a/services/listen.ts b/services/transcript.ts
similarity index 100%
rename from services/listen.ts
rename to services/transcript.ts
npx services.dev check
✓ ready to sell · 1 Service · AI delivers it alone · it keeps at least 80% of every job
npx services.dev check --json · the surface_drift failure
{
  "code": "surface_drift",
  "reason": "A surface serves a call with no row, or lacks a live row.",
  "next": "Add the row, or render it. cli listen is service.order's command, and the CLI has none.",
  "doc_url": "https://services.dev/docs/reference/check/surface_drift"
}
The whole document check --json prints
npx services.dev check --json
{
  "ai": {
    "cents_per_call": 42,
    "simulated": true
  },
  "mcp": {
    "tools": 13,
    "tokens": 4487,
    "sandbox": 9,
    "budget": 8000
  },
  "services": [
    {
      "path": "services/listen.ts",
      "lines": 4,
      "steps": "draft · ai → review · ai · adversarial",
      "ok": false,
      "price": "$19 per job, within 48 hours, charged on delivery.",
      "who": "AI delivers every job.",
      "agent": {