Move a step to AI
A line answers one question, where a person still changes the work, and moves between its rungs on the record. A step moves down when the evidence clears a bar scaled to what a miss costs, slice by slice and tied to the model that earned it, and moves back up on its own. A reserved act never moves, and what it learns from still does.
A line answers one question: where does a person still change the work? The rungs are the places a person can stand at a step. This page is how a step moves between them: on evidence the record holds, scaled to what a miss costs, and back up the week the evidence breaks.
| From → to | What it frees | What the buyer waits for | What moves it back up |
|---|---|---|---|
| every job → a sample | the act on each job the sample skips | nothing: a sampled job ships first | a week over the bar, or an upheld send-back on a job no person saw |
| → flagged, and a sample of the rest | the sample's acts on jobs the review passed | the flagged jobs, while a person reads them | the same |
| → flagged only | every act on a job the review passes | the flagged jobs | an upheld send-back on a job the review passed |
| → AI alone | every act at the step | nothing | the first upheld send-back |
| reserved | nothing: the line is how the Service meets licensing by design | the person's act, every time | it never moved |
Inside the sample rung, the share halves each week the sampled send-backs stay under 2%, as a sample that falls runs it. That weekly rule moves the share. The bar below moves the step off the rung, so a sample can halve every week and still wait for its evidence.
human.evidence names the bar. check sets 'high' on every step that acknowledges a clock, and prints it:
| Bar | For a miss that | Jobs a person saw at this rung | Over | Upper 95% bound on changes | Also |
|---|---|---|---|---|---|
'standard', the default | the next week catches | 100 | 14 days | under 5%: one change in 100 clears it, two need 124 | — |
'high' | misses a date | 1,000 | 182 days | under 0.5%: one change in 1,000 clears it, two need 1,258 | — |
'critical' | no one can undo | 1,000 | 182 days | under 0.5% | a holdout, with no upheld send-back on a job AI shipped alone |
An object of your own, { jobs, days, under, holdout }, sets any other bar. by: [...] names the slices the bar is checked in, by the same predicate hold --where takes, so each slice clears or holds on its own.
npx services.dev line --all --liveapi.lawyer · live · 16 Nov · every step a person is still on, ranked by what moving it frees a month
step rung evidence, against its bar ready frees a month
docket-watch.ack a watcher on every ack in 7d 1,206 jobs · 182 days · 0 changes · ≤0.25% of 0.5% now $763.80
reserved 7 acts on 5 Services keep their person whatever the count says · line <service> shows what moves under each
apply npx services.dev line apply docket-watchcurl https://api.lawyer/owner/line -H "authorization: Bearer $OWNER"{
"object": "list",
"data": [{
"object": "line",
"step": "docket-watch.ack",
"rung": "always",
"next": { "rung": "sample", "human": { "sample": "25%", "floor": "5%", "by": "watcher", "evidence": "high" } },
"evidence": { "bar": "high", "jobs": 1206, "days": 182, "changes": 0, "upper": 0.0025, "under": 0.005, "model": "claude-x@2026-05-20" },
"ready_at": "2026-11-16",
"frees_usd_month": 763.80
}],
"reserved": 7
}api.lawyer's docket watch clears the high bar. A watcher acknowledges every date inside its last week, and in 26 weeks never changed the AI's read:
npx services.dev line docket-watch --liveDocket Watch · ack · watcher · an open act: rules.ts says acknowledging a date is a delivery act
rung a watcher on every ack inside 7 days of a date
bar high, as check sets it for a step that acknowledges a clock: 1,000 jobs over 182 days, upper bound under 0.5%
evidence 1,206 acks over 26 weeks · the watcher changed the AI's read on 0 · upper bound 0.25% · check pinned to claude-x@2026-05-20 throughout
ready line.ready · the next rung is a sample that falls · $3,618.00 back over the 26 weeks at its 25% start, $4,582.80 at its 5% floor
proposes services/docket-watch.ts
− deliver: { check: 'ai', ack: { by: 'watcher', when: job => job.clocks.inside('7d') } },
+ human: { sample: '25%', floor: '5%', by: 'watcher', evidence: 'high' },
+ deliver: { check: 'ai' },
apply npx services.dev line apply docket-watch writes the change; deploy --live ships it with this evidence in its notesA move down is a change to your file, so it ships through a deploy with its evidence in the version's notes. A move back up needs no deploy: the step goes back a rung for new jobs and records line.reverted.
Checked by office, the same step is ready in one slice and held in another, and a slice no job has reached starts at the top rung:
npx services.dev line docket-watch --by office --liveDocket Watch · ack · the high bar, slice by slice · evidence: { bar: 'high', by: ['office'] }
office acks changes upper the bar
USPTO 1,066 0 0.28% ready
PCT national phase 140 0 2.1% held · 140 of the 1,000 jobs it needs
EPO 0 — — none yet · its first job starts at the top rung, line.reverted { because: 'slice_new' }
proposes the sample for USPTO acks only · a watcher stays on every PCT and EPO ackA line's evidence belongs to the model that earned it. A deploy that changes an AI step's model, brief or lenses carries the evidence forward only when the newest eval shows no lens finding fewer grounds. Otherwise each line that moved on it goes back one rung for new jobs, with line.reverted { because: 'model_changed' }. The 13:55 deploy that ended an incident carried its lines on evl_3Lq7:
npx services.dev deploy --live # 30 Nov: docket-watch.check pinned to claude-x@2026-11-26api.lawyer · 2026-11-30.1 · sha256:0c5d9e27a1f84b63… · tested 11 minutes ago
checks plan, stripe, model, domain and the live suite · 0 failed
lines docket-watch.ack moved on evidence earned on claude-x@2026-05-20 · evl_3Lr1 against 2026-11-30.1: 0 dates missed of 412, as on live · the evidence carries forward
✓ live 2026-11-30.1 · version.liveThe person stays, and the work around them improves. Each change an attorney makes becomes an eval label and a lens proposal, so the next version drafts closer to what they sign:
npx services.dev line trademark-response --liveTrademark Office Action Response · respond · attorney · reserved by rules.ts to bar admission
rung the attorney signs every response · the line never moves
changes attorneys changed the AI's draft on 23 of 412 (5.6%) · each change is an eval label: evals create --label attorney-changes
lenses the changes proposed 1 lens, genericness · it shipped in 2026-11-02.1
act time p50 18m in August → 11m in November · the attorney's $175.00 is unchanged: flat pay is earned on the actA job's line is pinned to its version, so a move reaches new orders only. The Service's Site and Docs reprint who does the work on the next deploy, and a subscription hears line.moved before its next mint.
human: { holdout: '10%' } ships a random share of a line's jobs the way the next rung down would, with a person checking each after delivery, so the evidence includes what buyers do with the AI's work alone. A defect a holdout finds is redone at no charge before the buyer acts on it. check refuses a holdout on a reserved act. Holdouts run on Team.