mirror of
https://github.com/deepseek-ai/deepseek-harness
synced 2026-08-15 21:04:50 +00:00
2ff112962b10c0f97389c065a655002e9a2029d5
Two round-3 findings: (A) The EOF-quiesce window reused the 3000ms SIGTERM grace, the SAME value as dsh-bash-local's own SIGTERM->SIGKILL grace. The child acp-agent's EOF teardown disposes its loop, which stops child-owned bash -- and a SIGTERM-trapping bash grandchild can hold that for up to ~3s before its own SIGKILL, then the child still owes a final flush. With both graces equal, the parent's SIGTERM fired exactly as the child reached its own SIGKILL+flush, cutting it off. Split the EOF grace into its own knob (disposeEofGraceMs, default 6000ms) that exceeds a single signal-grace of nested-teardown headroom. The child is an arbitrary ACP agent, so the value is a standalone generous default, NOT derived from any child's internals. Tier-1 test now uses a flush that outlasts the SIGTERM grace but fits the EOF grace, so it lands only because the EOF tier honors its own wider window (proven RED when tier 1 reuses the small SIGTERM grace). (B) The middle-tier (SIGTERM) test only asserted dispose returned in time, so an EOF->SIGKILL ladder with the rung removed would still pass. The mock's MOCK_IGNORE_EOF mode now installs a SIGTERM handler that touches an observable marker before exiting; SIGKILL is uncatchable, so removing the SIGTERM rung leaves the marker absent (proven RED). The test asserts the marker exists.
DeepSeek Harness
Monorepo for the DeepSeek Harness group.
Projects
- DeepSeek Code — DeepSeek's coding agent product.
Development
This monorepo is built on the Cordis framework (vendored as source under vendor/), microkernel-style: everything is a plugin.
pnpm install
pnpm run test # vitest
pnpm run demo:echo # runnable echo-agent example (no API key needed)
pnpm run demo:coding # the real DeepSeek coding agent (needs DEEPSEEK_API_KEY)
For humans, start with the development guide for local setup, hooks, environment variables, and quality gates, then read the architecture design before package work. Local context lives in packages/ and vendor/.
For agents, follow AGENTS.md.
Languages
TypeScript
97%
CSS
1.6%
Python
0.7%
JavaScript
0.6%