deepseek-harness/docs
Tianyi Cui f81fcccd93 refactor(subprocess): keep terminate() as the seam's only termination verb
Delete kill(signal?) from SubprocessHandle: consumers stop a process only
through terminate()'s tree-scoped SIGTERM→graceMs→SIGKILL escalation
(idempotent, also driven by the spec's abort signal, a no-op once the tree
is gone). The single-signal verb had exactly one consumer family —
lsp-local — and what it bought there was a private re-implementation of
the same escalation. The internal kill closure stays in spawn.ts as the
dispose ladder's tier primitive; terminate() now routes through it too.

lsp-local collapses onto the seam's escalation:
- LspConnection replaces its terminate()/kill() pair with one terminate()
  that delegates to handle.terminate(). Behavior change: the
  framing-failure path terminates instead of instant SIGKILL, so a
  misbehaving server now gets SIGTERM plus the killGraceMs window to
  flush before SIGKILL.
- ConnectionSpec.pipeDrainGraceMs becomes killGraceMs: one grace, the
  spawn spec's graceMs, drives both the escalation window and post-exit
  pipe draining (the provider already passed killGraceMs for it).
- LspInstance.forceTerminate() drops its hand-rolled bounded first wait
  (LSP_KILL_GRACE) and escalateProcessTree (deleted with its export and
  unit test): the seam's escalation already commits to SIGKILL after
  killGraceMs, so only the unbounded quiescence awaits stay load-bearing.

Tests: kill()-shaped spawn specs become terminate()-shaped or fold into
the terminate() suites (group-wide delivery; the settled no-op case was
already pinned by 'terminate() after the tree died'); tree-survivor
coverage is intact. A stderr-'inherit' disposition test completes the
stdout/stderr symmetry so the scoped subprocess+lsp coverage gate stands
alone instead of leaning on subagent-acp's cross-package runs.

Docs: SubprocessHandle type-equiv block, seam/impl/group READMEs, and the
consumer-migration Agent Note lose the kill(signal?) vocabulary (zh pairs
re-recorded); cordis api/services catalogs regenerated.
2026-07-27 04:41:04 +08:00
..
cookbook docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
cordis-catalog refactor(subprocess): keep terminate() as the seam's only termination verb 2026-07-27 04:41:04 +08:00
cordis-tutorial docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
core-data-structures refactor(subprocess): keep terminate() as the seam's only termination verb 2026-07-27 04:41:04 +08:00
i18n docs: make bilingual pairing universal 2026-07-26 15:06:51 +08:00
postmortem docs(i18n): mirror ACP-automation edits into the zh pairs from master 2026-07-25 01:58:42 +08:00
user refactor(acp): reduce bridge to automation protocol 2026-07-24 01:40:25 +08:00
agent-lifecycle.md refactor(agent): align delivery method names 2026-07-24 15:08:36 +08:00
AGENTS.md docs: restore generated Cordis core API 2026-07-20 16:33:44 +08:00
architecture.i18n.yaml fix(subprocess): tree-scoped escalation and byte-exact tails (Codex round 1) 2026-07-26 16:50:36 +08:00
architecture.md fix(subprocess): tree-scoped escalation and byte-exact tails (Codex round 1) 2026-07-26 16:50:36 +08:00
architecture.zh.md fix(subprocess): tree-scoped escalation and byte-exact tails (Codex round 1) 2026-07-26 16:50:36 +08:00
capability-seams.md feat(subprocess): migrate lsp-local, subagent-acp, and the env scrubs onto the seam 2026-07-26 15:27:59 +08:00
config-catalog.md Merge branch 'master' into worktree-process-service-seam 2026-07-27 01:47:49 +08:00
cordis-primer.i18n.yaml docs(i18n): clarify Cordis and test wording 2026-07-24 14:21:15 +08:00
cordis-primer.md Merge remote-tracking branch 'origin/master' into worktree/pr343-retarget-latest-master 2026-07-23 13:40:29 +08:00
cordis-primer.zh.md docs(i18n): clarify Cordis and test wording 2026-07-24 14:21:15 +08:00
defensive-patterns.i18n.yaml Merge remote-tracking branch 'origin/master' into worktree/pr343-retarget-latest-master 2026-07-24 21:20:17 +08:00
defensive-patterns.md Merge remote-tracking branch 'origin/master' into worktree/pr343-retarget-latest-master 2026-07-24 21:20:17 +08:00
defensive-patterns.zh.md Merge remote-tracking branch 'origin/master' into worktree/pr343-retarget-latest-master 2026-07-24 21:20:17 +08:00
development.i18n.yaml docs: deduplicate paired code-block checks 2026-07-26 02:52:48 +08:00
development.md docs: deduplicate paired code-block checks 2026-07-26 02:52:48 +08:00
development.zh.md docs: deduplicate paired code-block checks 2026-07-26 02:52:48 +08:00
event-producer-consumer.md Merge branch 'code-mode-ui/live-parallel' into code-mode-ui/dispatch-spill 2026-07-26 21:35:03 +08:00
glossary.i18n.yaml docs: align Goal Round step cardinality 2026-07-24 12:10:40 +08:00
glossary.md docs: align Goal Round step cardinality 2026-07-24 12:10:40 +08:00
glossary.zh.md docs(i18n): allow zero-step Goal Rounds 2026-07-23 21:13:34 +08:00
graph-atlas.md refactor(acp): reduce bridge to automation protocol 2026-07-24 01:40:25 +08:00
module-graph.md Merge branch 'worktree-process-service-seam' into worktree-subprocess-consumers 2026-07-26 22:04:14 +08:00
persistence-catalog.md Merge branch 'master' into code-mode-ui/live-parallel 2026-07-26 21:04:03 +08:00
testing.i18n.yaml Merge remote-tracking branch 'origin/master' into web-e2e-lane 2026-07-25 14:20:19 +08:00
testing.md Merge remote-tracking branch 'origin/master' into web-e2e-lane 2026-07-25 14:20:19 +08:00
testing.zh.md Merge remote-tracking branch 'origin/master' into web-e2e-lane 2026-07-25 14:20:19 +08:00
tool-catalog.md fix: address review — staged scheduler, start-time reclassification, catalogs 2026-07-26 10:33:48 +08:00
tool-execution-pipeline.md Merge remote-tracking branch 'origin/master' into feat/send-unify 2026-07-23 22:41:45 +08:00
web-styling.i18n.yaml docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
web-styling.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
web-styling.zh.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00