Files
deepseek-harness/scripts
Yichen Jiang 51f74910ae feat(jobs): human job kill with an unclaimed terminal report
The web task list gains a two-press stop control on running job rows, built on
one seam change: JobRegistry.kill now takes { reason?, reported? } instead of a
positional reason. reported defaults to true (the model's job_kill claims the
terminal report exactly as before); the web path passes reported: false because
a human kill has no model-visible channel, so the settlement flows through the
existing tool-jobs completion notice (wakeup/inject, budgets, truncation all
unchanged). A recorded kill reason merges into a killed settlement's detail
(producer facts first: 'signal: SIGTERM; cancelled by the user'), so the notice
and the web row both say who stopped the work.

- session-controller: session.killJob Remote beside cancel, live-only Agent
  lookup, job-not-found/jobs-unavailable rejections joined to the closed RPC
  error table; ClientSession.killJob and the ISession face carry it to the UI.
- ui-activity: arm/confirm stop button (3s disarm, pending disable, failure
  hint), rendered only on running job rows; standalone activities keep no kill
  handle and the README limitation now says so.
- The background-job-list web e2e now drives the whole human path through the
  button; goldens show the merged killed detail end to end.
- Agent Note 2026-08-26-human-job-kill records the decision against Kimi's
  suppress-own-notification precedent and Claude Code's silent-kill failure;
  the 2026-08-08 blocker note and the unified-task-list note point at it.
2026-08-26 14:15:44 +08:00
..
2026-08-13 02:29:17 +08:00
2026-08-13 01:33:31 +08:00