1052326311/dsh-goal-quiescence ↗★ 0
dsh-goal-quiescence
Completion evidence gate for DeepSeek Harness goal-mode subagents
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:1052326311/dsh-goal-quiescence说明文档
阅读完整 README ↗dsh-goal-quiescence
Do not complete a Harness goal while observed subagent evidence is still running or has not been explicitly returned to the goal agent.
dsh-goal-quiescence is a community plugin for DeepSeek Harness. It addresses
the goal-mode failure reported in DeepSeek Harness Discussion #284: a parent can call
update_goal(action=complete) while background reviewers are still running,
after which their result can arrive too late to affect the completed goal.
What it enforces
For every subagent run observed after the plugin has loaded under an active
goal, the plugin records the public subagent/start and subagent/end
lifecycle pair. It then denies update_goal(action=complete) until:
- Every observed child run has settled.
- The goal agent calls
goal_quiescence_ackfor every settled run. That tool returns the run's terminal assistant output as its own tool result, making the evidence visible in the parent agent's current context.
goal_quiescence_status gives a bounded list of the runs that still block
completion. The plugin does not schedule, cancel, or retry children, and it
does not replace Harness goal mode.
Install
pnpm install
pnpm pack
dsh plugin --profile web add ./dsh-goal-quiescence-.tgz
The bundled patch enables the plugin. It requires the normal Harness goal,
subagent, and tools services provided by the Web profile.
Completion flow
- Work normally in goal mode and delegate background reviews as needed.
- If goal completion is denied, call
goal_quiescence_status. - Wait for each
runningrun to settle. - Call
goal_quiescence_ackwith each returnedrunId; inspect the terminal output it returns. - Resolve any reported finding, then call
update_goal(action=complete).
Guarantees and boundaries
The gate is a process-local lifecycle policy. It covers runs that begin after
the plugin is loaded and completion attempts made through the model-facing
update_goal tool. The policy deliberately does not claim to be an atomic core
transaction: direct service calls, a process restart, or a child that began
before plugin activation are outside its observable boundary. A core lifecycle
permit would be needed for an end-to-end atomic guarantee.