mirror of
https://github.com/deepseek-ai/deepseek-harness
synced 2026-08-15 21:04:50 +00:00
Review fix (ds-review-bot on #623): the ACP scenario runs at deployment strength (the automation protocol has no session-scoped switch), so the assembled-app path could not detect the delegation bypass itself. The new keyless subagent-inheritance headless scenario closes that on the semantic-checkpoint precedent: a seeded parent log carrying a real sandbox/mode: read-only switch under a workspace-write deployment default is resumed through the Loader-booted cli-demo app via a resume fixture plugin and delegates through the real subagent tool; the child's real write is denied by the real dsh-fs-sandbox fence (physical ENOENT assertion), its persisted header carries the inherited baseline, and both logs pin as expected outputs. Verified red: disabling the driver's capture makes the scenario fail on the disk assertion (the child writes under the deployment default).
70 lines
1.9 KiB
YAML
70 lines
1.9 KiB
YAML
# Keyless real-Loader composition for the parent-only override inheritance
|
|
# snapshot. The deployment default stays WIDE (workspace-write) while the
|
|
# seeded parent session carries a session-scoped read-only override; the
|
|
# resumed parent delegates, and only the inheritance capture can confine the
|
|
# child — remove it and the child writes successfully under the deployment
|
|
# default, so this scenario is the assembled-app red/green anchor for the
|
|
# delegation bypass.
|
|
|
|
- id: persistence
|
|
name: '@deepseek-ai/dsh-session-persistence-jsonl'
|
|
config:
|
|
root: './.sessions'
|
|
compression: none
|
|
|
|
# file/override/childFiles all default to their DSH_SNAPSHOT_* env vars.
|
|
- id: replay
|
|
name: '@deepseek-ai/dsh-llm-replay'
|
|
|
|
- id: bash
|
|
name: '@deepseek-ai/dsh-bash-local'
|
|
config:
|
|
timeoutMs: 60000
|
|
|
|
# The confining filesystem stack: the wide deployment default lives on the
|
|
# shared policy home; the seeded parent's read-only override must beat it
|
|
# INSIDE the child for the scenario to deny.
|
|
- id: sandbox-policy
|
|
name: '@deepseek-ai/dsh-sandbox-policy'
|
|
config:
|
|
mode: workspace-write
|
|
workspaceRoot: !!js process.cwd()
|
|
|
|
- id: fs-sandbox
|
|
name: '@deepseek-ai/dsh-fs-sandbox'
|
|
|
|
- id: fs-policy
|
|
name: '@deepseek-ai/dsh-fs-policy'
|
|
|
|
- id: tool-fs
|
|
name: '@deepseek-ai/dsh-tool-fs'
|
|
|
|
- id: agent
|
|
name: '@deepseek-ai/dsh-agent-spine-demo'
|
|
config:
|
|
agents: []
|
|
workspaceContext: false
|
|
skills:
|
|
enabled: false
|
|
toolTasks: false
|
|
goals: false
|
|
|
|
- id: subagent
|
|
name: '@deepseek-ai/dsh-subagent'
|
|
|
|
- id: subagent-spawn
|
|
name: '@deepseek-ai/dsh-subagent-spawn'
|
|
config:
|
|
providerName: spawn
|
|
|
|
- id: tool-subagent
|
|
name: '@deepseek-ai/dsh-tool-subagent'
|
|
config:
|
|
provider: spawn
|
|
toolName: subagent
|
|
maxDepth: 1
|
|
|
|
# Await the persisted resume before the headless driver inspects root agents.
|
|
- id: resumed-agent
|
|
name: './tests/fixtures/subagent-inheritance-agent.ts'
|