rush_uncapped
A role is paid from the buyer, its Pool's fill ladder raises the fee, and nothing caps what the buyer pays for it.
| Fix | Fails in | Exit |
|---|---|---|
| Declare policy.max_rush: the most an order lets the ladder add, in dollars. Or pay the role from the price. | services/translation.ts | 1 |
Owned by When no one claims: the page that explains what this gate holds.
✗ A role is paid from the buyer, its Pool's fill ladder raises the fee, and nothing caps what the buyer pays for it. Declare policy.max_rush: the most an order lets the ladder add, in dollars. Or pay the role from the price. translator is paid from the buyer, and the translators ladder raises the fee.
https://services.dev/docs/reference/check/rush_uncapped
✗ 1 to fiximport { Service } from 'services.dev'
import { translators } from '../pools/translators.ts'
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: { pool: translators, pay: { usd: 30, from: 'buyer' } } },
deliver: {
translate: 'ai',
harden: { review: 'adversarial', lenses: ['meaning', 'terms'] },
sign: { by: 'translator', stamp: true },
},
price: 89,
})diff --git a/services/translation.ts b/services/translation.ts
index 57aacec..0e134d3 100644
--- a/services/translation.ts
+++ b/services/translation.ts
@@ -13,5 +13,6 @@ export default Service({
harden: { review: 'adversarial', lenses: ['meaning', 'terms'] },
sign: { by: 'translator', stamp: true },
},
+ policy: { max_rush: { word: 'money', default: 10, max: 30, note: 'the most the fill ladder adds to the fee' } },
price: 89,
})✓ 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: '*', position: 'A sworn translator signs a translation filed with a registry.' },
},
},
})import { Pool } from 'services.dev'
export const translators = Pool({
name: 'translators',
roles: { translator: { credential: 'sworn translator' } },
join: { name: 'text', languages: 'language[]' },
verify: 'https://verify.example.test/translators',
fill: ['raise 10% 2h', 'widen 4h'],
}){
"code": "rush_uncapped",
"reason": "A role is paid from the buyer, its Pool's fill ladder raises the fee, and nothing caps what the buyer pays for it.",
"next": "Declare policy.max_rush: the most an order lets the ladder add, in dollars. Or pay the role from the price. translator is paid from the buyer, and the translators ladder raises the fee.",
"doc_url": "https://services.dev/docs/reference/check/rush_uncapped"
}The whole document check --json prints
{
"ai": {
"cents_per_call": 42,
"simulated": true
},
"mcp": {
"tools": 13,
"tokens": 4490,
"sandbox": 9,
"budget": 8000
},
"files": [
{
"path": "rules.ts",
"lines": 6,
"kind": "rules",
"says": "rules 2026-10 · 1 Service · 1 row"
},
{
"path": "pools/translators.ts",