deepseek-harness/docs/core-data-structures
Tianyi Cui 5717726835 subprocess: one explicit env channel on the spawn spec
Drop SubprocessSpawnSpec.dshEnv and splitEnvChannels(); childEnv() is now
scrubbed-base + explicit entries with no namespace validation. The invariant
dropped is the reserved-namespace check on explicit entries (DSH_* rejected
from env, non-DSH_* rejected from dshEnv). Explicit-entry trust already
covers it: an explicit credential-shaped entry has always merged after the
scrub as a deliberate caller opt-in, and an explicit DSH_* entry is the same
deliberate act — the staleness invariant lives entirely in scrubbedParentEnv
dropping AMBIENT credential-shaped and DSH_* names, which stays. The
validation's only observed effect was rejecting legitimate explicit entries:
both recent CI breakages (DSH_GATE_CONCURRENCY exported into every job
crashing lsp specs, DSH_PERMISSION_MODE in acp config.env crashing the
child spawn) were this check firing on values a caller meant to pass, each
fixed by routing around the bureaucracy the seam itself imposed.

The bash seam keeps its own request/spec dshEnv field: that is bash-owned
trusted-plugin vocabulary (the ctx.bashEnv collected overlay) whose merge-last
position guarantees a caller env entry cannot displace a managed fact;
bash-local now flattens ENV_OVERRIDES -> spec.env -> spec.dshEnv into the
seam's one env map. subagent-acp and lsp-local pass their single config env
map straight through. DshEnvironment/DshEnvironmentKey/DSH_ENV_PREFIX stay on
the subprocess seam as the namespace vocabulary (bash re-exports them;
scrubbedParentEnv filters on the prefix).

Tests: the two channel-rejection specs and the splitEnvChannels partition
spec are deleted; one spawn spec now proves an explicit DSH_* env entry
reaches the child while an ambient one is scrubbed; the acp/lsp forwarding
specs keep their MOCK_ECHO_ENV / LSP_FAKE_ECHO_ENV assertions with the split
comments rewritten to merge-after-scrub. Docs (en+zh, re-recorded) and the
owning Agent Notes updated; cordis api/services catalogs regenerated.
2026-07-27 04:14:51 +08:00
..
approval.i18n.yaml docs(i18n): mirror ACP-automation edits into the zh pairs from master 2026-07-25 01:58:42 +08:00
approval.md Merge remote-tracking branch 'origin/master' into worktree/acp-automation-protocol 2026-07-24 23:43:10 +08:00
approval.zh.md docs(i18n): mirror ACP-automation edits into the zh pairs from master 2026-07-25 01:58:42 +08:00
bash.i18n.yaml subprocess: one explicit env channel on the spawn spec 2026-07-27 04:14:51 +08:00
bash.md subprocess: one explicit env channel on the spawn spec 2026-07-27 04:14:51 +08:00
bash.zh.md subprocess: one explicit env channel on the spawn spec 2026-07-27 04:14:51 +08:00
code-runtime.i18n.yaml docs(i18n): refresh core translations for latest master 2026-07-23 19:29:01 +08:00
code-runtime.md Merge branch 'worktree/pr343-retarget-latest-master' into worktree/pr344-retarget-stack 2026-07-23 19:10:25 +08:00
code-runtime.zh.md docs(i18n): refresh core translations for latest master 2026-07-23 19:29:01 +08:00
commands.i18n.yaml docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
commands.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
commands.zh.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
compaction.i18n.yaml docs(i18n): address final core-data review 2026-07-24 16:21:48 +08:00
compaction.md Merge branch 'worktree/pr343-retarget-latest-master' into worktree/pr344-retarget-stack 2026-07-23 00:19:53 +08:00
compaction.zh.md docs(i18n): address final core-data review 2026-07-24 16:21:48 +08:00
core.i18n.yaml refactor(subprocess): rename the process seam to subprocess and address review 2026-07-26 12:43:59 +08:00
core.md refactor(subprocess): rename the process seam to subprocess and address review 2026-07-26 12:43:59 +08:00
core.zh.md refactor(subprocess): rename the process seam to subprocess and address review 2026-07-26 12:43:59 +08:00
filesystem.i18n.yaml docs(i18n): refresh core translations for latest master 2026-07-23 19:29:01 +08:00
filesystem.md Merge branch 'worktree/pr343-retarget-latest-master' into worktree/pr344-retarget-stack 2026-07-23 19:10:25 +08:00
filesystem.zh.md docs(i18n): refresh core translations for latest master 2026-07-23 19:29:01 +08:00
goal.i18n.yaml docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
goal.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
goal.zh.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
llm-streaming.i18n.yaml fix: align empty-response retry with current master 2026-07-25 14:39:57 +08:00
llm-streaming.md Merge branch 'master' into feat/llm-empty-response-retry 2026-07-25 13:05:55 +08:00
llm-streaming.zh.md fix: align empty-response retry with current master 2026-07-25 14:39:57 +08:00
lsp.i18n.yaml docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
lsp.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
lsp.zh.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
persistence.i18n.yaml Merge remote-tracking branch 'origin/master' into session-query-tool 2026-07-25 15:43:45 +08:00
persistence.md Merge remote-tracking branch 'origin/master' into session-query-tool 2026-07-25 15:43:45 +08:00
persistence.zh.md fix(persistence): reconcile project session layout 2026-07-25 15:11:17 +08:00
pty.i18n.yaml docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
pty.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
pty.zh.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
sandbox.i18n.yaml docs(i18n): address core translation review 2026-07-24 14:56:48 +08:00
sandbox.md Merge refreshed docs/i18n-batch-core into docs/i18n-batch-cds-postmortem 2026-07-22 22:26:24 +08:00
sandbox.zh.md docs(i18n): address core translation review 2026-07-24 14:56:48 +08:00
scope.i18n.yaml docs(i18n): normalize core terminology 2026-07-23 18:45:56 +08:00
scope.md Merge refreshed docs/i18n-batch-core into docs/i18n-batch-cds-postmortem 2026-07-22 22:26:24 +08:00
scope.zh.md docs(i18n): normalize core terminology 2026-07-23 18:45:56 +08:00
session-query.i18n.yaml Merge remote-tracking branch 'origin/master' into session-query-tool 2026-07-25 14:17:24 +08:00
session-query.md Merge remote-tracking branch 'origin/master' into session-query-tool 2026-07-25 14:17:24 +08:00
session-query.zh.md Merge remote-tracking branch 'origin/master' into session-query-tool 2026-07-25 14:17:24 +08:00
session-reference.i18n.yaml docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
session-reference.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
session-reference.zh.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
session-title.i18n.yaml docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
session-title.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
session-title.zh.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
session.i18n.yaml docs(i18n): mirror ACP-automation edits into the zh pairs from master 2026-07-25 01:58:42 +08:00
session.md Merge remote-tracking branch 'origin/master' into worktree/acp-automation-protocol 2026-07-24 23:43:10 +08:00
session.zh.md docs(i18n): mirror ACP-automation edits into the zh pairs from master 2026-07-25 01:58:42 +08:00
skills.i18n.yaml docs(i18n): normalize core terminology 2026-07-23 18:45:56 +08:00
skills.md Merge refreshed docs/i18n-batch-core into docs/i18n-batch-cds-postmortem 2026-07-22 22:26:24 +08:00
skills.zh.md docs(i18n): normalize core terminology 2026-07-23 18:45:56 +08:00
spill.i18n.yaml docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
spill.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
spill.zh.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
subagent.i18n.yaml docs(subagent): restore refusal contract comment 2026-07-25 15:25:52 +08:00
subagent.md docs(subagent): restore refusal contract comment 2026-07-25 15:25:52 +08:00
subagent.zh.md docs(subagent): restore refusal contract comment 2026-07-25 15:25:52 +08:00
subprocess.i18n.yaml subprocess: one explicit env channel on the spawn spec 2026-07-27 04:14:51 +08:00
subprocess.md subprocess: one explicit env channel on the spawn spec 2026-07-27 04:14:51 +08:00
subprocess.zh.md subprocess: one explicit env channel on the spawn spec 2026-07-27 04:14:51 +08:00
system-prompt.i18n.yaml docs(i18n): normalize core terminology 2026-07-23 18:45:56 +08:00
system-prompt.md Merge refreshed docs/i18n-batch-core into docs/i18n-batch-cds-postmortem 2026-07-22 22:26:24 +08:00
system-prompt.zh.md docs(i18n): normalize core terminology 2026-07-23 18:45:56 +08:00
tasks.i18n.yaml docs(tasks): bring the zh side of the tasks pairs along after the master merge 2026-07-26 20:59:05 +08:00
tasks.md Merge remote-tracking branch 'origin/master' into worktree-tasks-service-seam 2026-07-26 20:28:37 +08:00
tasks.zh.md docs(tasks): bring the zh side of the tasks pairs along after the master merge 2026-07-26 20:59:05 +08:00
token-meter.i18n.yaml docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
token-meter.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
token-meter.zh.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
tools.i18n.yaml fix(tools): bound the shaped-append side channel; total error containment; recorded spill snapshot 2026-07-26 18:29:09 +08:00
tools.md fix(tools): bound the shaped-append side channel; total error containment; recorded spill snapshot 2026-07-26 18:29:09 +08:00
tools.zh.md fix(tools): bound the shaped-append side channel; total error containment; recorded spill snapshot 2026-07-26 18:29:09 +08:00
user-interaction.i18n.yaml docs(i18n): mirror ACP-automation edits into the zh pairs from master 2026-07-25 01:58:42 +08:00
user-interaction.md Merge remote-tracking branch 'origin/master' into worktree/acp-automation-protocol 2026-07-24 23:43:10 +08:00
user-interaction.zh.md Merge remote-tracking branch 'origin/master' into worktree/acp-automation-protocol 2026-07-24 23:43:10 +08:00
web.i18n.yaml docs(i18n): clarify review terminology 2026-07-24 14:21:36 +08:00
web.md Merge refreshed docs/i18n-batch-core into docs/i18n-batch-cds-postmortem 2026-07-22 22:26:24 +08:00
web.zh.md docs(i18n): clarify review terminology 2026-07-24 14:21:36 +08:00
workflow.i18n.yaml docs(i18n): normalize core terminology 2026-07-23 18:45:56 +08:00
workflow.md Merge refreshed docs/i18n-batch-core into docs/i18n-batch-cds-postmortem 2026-07-22 22:26:24 +08:00
workflow.zh.md docs(i18n): normalize core terminology 2026-07-23 18:45:56 +08:00