Commit Graph
16521 Commits
Author SHA1 Message Date
Turtle b576419a4c Merge branch 'master' into turtle/master-ci-browser-realpath 2026-09-11 13:03:10 +08:00
Turtle f93cea5734 Merge pull request #3983 from deepseek-harness/turtle/master-ci-windows-store
fix(ci): derive Windows standby store from workspace volume
2026-09-11 13:01:36 +08:00
Ziya 1f56a2c0e0 Merge pull request #3970 from deepseek-harness/copy/ask-user-skip-20260910
fix(web): 简化提问卡片的中英文跳过文案
2026-09-11 11:54:51 +08:00
ZiyaZhang 91da8a4ecf Merge master and retain its Python coverage fix 2026-09-10 20:38:00 -07:00
turtle1999 e46cb49103 fix(ci): derive Windows standby store from workspace volume 2026-09-10 23:02:21 +08:00
Yichen Jiang c291e7961a Merge pull request #3977 from deepseek-harness/worktree/release-0.1.5-sync-master
feat(web): sync feedback and file refinements from release
2026-09-10 22:17:09 +08:00
Turtle e570e74705 Merge pull request #3962 from deepseek-harness/turtle/ci-smoke-20260910-1820
test(python): make stray-output sealing coverage deterministic
2026-09-10 22:01:34 +08:00
Yichen Jiang 59f2e3be33 Merge release/dsh-0.1.5 version 0.1.5-rc.2 into master sync branch 2026-09-10 21:53:53 +08:00
Yichen Jiang fb2c4b9e69 Merge pull request #3978 from deepseek-harness/worktree/release-dsh-0.1.5-rc.2
release(dsh): 0.1.5-rc.2
dsh-v0.1.5-rc.2
2026-09-10 21:50:19 +08:00
Yichen Jiang a305303422 release(dsh): 0.1.5-rc.2 2026-09-10 21:38:20 +08:00
Yichen Jiang 3bfcebe15e Merge master into worktree/release-0.1.5-sync-master 2026-09-10 21:23:11 +08:00
Yichen Jiang 2107e4697e Merge pull request #3973 from deepseek-harness/worktree/release-0.1.5-backport-feedback-deliverables
feat(web): backport feedback and file refinements to 0.1.5
2026-09-10 21:09:45 +08:00
yixiangihsiangandLegGasai 060323d8e2 feat(web): backport feedback and file refinements to 0.1.5
Backport the selected changes from PR #3928 and PR #3902 onto dsh-v0.1.5-rc.1, retaining baseline session recordings and excluding newer master commits.

Refs #3927
Refs #3903

Co-authored-by: LegGasai <[email protected]>
2026-09-10 20:51:46 +08:00
ZiyaZhang 884485e7e6 test(python): restore concat through its spy 2026-09-10 05:40:50 -07:00
ZiyaZhang 7bce0c26f5 test(python): make stray fragment coverage deterministic 2026-09-10 05:35:32 -07:00
ZiyaZhang 69db89f848 fix(web): shorten English question skip label 2026-09-10 05:06:14 -07:00
ZiyaZhang 2eed93628c fix(web): shorten Chinese question skip label 2026-09-10 05:00:38 -07:00
turtle1999 464e1cce49 fix(ci): canonicalize browser dependency scan roots 2026-09-10 19:01:00 +08:00
turtle1999 0963bdd7d3 test(python): control stray-output fragments for sealing coverage 2026-09-10 18:29:04 +08:00
turtle1999 3b5daf10be test(ci): verify current master on PR runners 2026-09-10 18:16:47 +08:00
Turtle 060ae6f336 Merge pull request #3957 from deepseek-harness/fix/subprocess-linux-scope-empty-range
fix(ci): resolve Blacksmith scope teardown and hosted test failures
2026-09-10 18:11:48 +08:00
_Kerman 42b50bd377 Merge pull request #3828 from deepseek-harness/xtr/deprecate-session-event-readers
docs(session): deprecate synchronous event-history reads
2026-09-10 18:03:54 +08:00
Chinesezjc 1050091d82 Merge pull request #3926 from deepseek-harness/ci/blacksmith-hosted-image-fixes
test/ci: remove the host-paced assumptions the hosted coverage lanes hit
2026-09-10 18:01:54 +08:00
turtle1999 989b3d4390 Merge hosted-image test fixes for Blacksmith CI 2026-09-10 17:53:36 +08:00
07akioni 69005cb956 Merge pull request #3860 from deepseek-harness/fix/parallel-macos-notarization
perf(desktop): 并行 macOS 公证并记录上传加速说明
2026-09-10 17:52:40 +08:00
Chinesezjc 0377049465 ci: give the Linux coverage lane the hosted image's teardown budget
The managed-scope disposal cases in subprocess-local and bash-sandbox run past
the 5000ms default when this lane's four partitions, six workers per gate, and
sibling gates share one host. The same commit stays inside the budget on the
in-house pool: the hosted image exceeded it (run 34449848541) and the lane is
green with 90000 (run 34457655892). The Windows coverage lane already grants
the same budget for the same class of teardown.

(cherry picked from commit bf3468adf0947a51f09d4a1aaae2865f3e50a2f2)
2026-09-10 17:47:27 +08:00
Chinesezjc 114e8c9b09 test: drop two host-paced assumptions the hosted image exposes
The ACP plugin-config case drove a real dispose with 150ms graces. On the hosted
image the SIGKILL escalation landed while the managed scope could not take the
signal — systemctl failed the kill ("Failed to send signal SIGKILL to auxiliary
processes: Invalid argument") — so the run reported a teardown failure the
configuration never asked for. The case asserts that config graces reach the
real run, so the values only need to clear the host's scope handling. Its mock
refuses stdin EOF and SIGTERM by design, so the case waits out both graces and
carries its own budget for that fixed cost.

Both illegal-UTF-8 residual cases relied on a plain sched_yield leaving each
write as its own read chunk. A starved reader coalesces hundreds of bytes into
one chunk, which inflates the measured peak for correct accounting too: the
hosted image measured 2563 against the 2048 bound. Pace with a real sleep so
each byte is its own chunk everywhere, and keep each payload above the bound
(3200 bytes; 1100 CESU-8 sequences) so a raw-byte undercount still flushes past
it instead of only at EOF.

(cherry picked from commit 30e0c3ff0415befe3652a55611df8a18d82c18bb)
2026-09-10 17:47:27 +08:00
Chinesezjc c4c2d16308 test(subprocess): align the teardown race with the settlement contract
`disposal contains a spawn-failure rejection that races teardown` asserted one
winner of the race. A bootstrap that publishes its pre-exec failure rejects with
that failure, and a teardown that stops the bootstrap first settles as the
requested termination — the recorded failure only outranks the stop when it was
published before the stop landed. Assert the contract instead: a rejection
carries the failure, a stop carries SIGTERM, which only the Linux scope records
because the win32 job owner and the fallback launcher both reject the start.

The two terminal cases that drive a mocked PTY exit state why they pin
`internals.platform`: under the host's native scope the mocked exit races the
scope bootstrap and fails as `terminal scope exited before its bootstrap
consumed the launch request`.

(cherry picked from commit fee113eb9a5632555304858d2bf6355588a3aaf0)
2026-09-10 17:47:27 +08:00
Turtle def3f88bf5 Merge pull request #3943 from deepseek-harness/fix/master-ci-corpus-css-pin
fix(ci): admit any `.css` refusal for the dockkit corpus exemption
2026-09-10 17:44:34 +08:00
Turtle 3ece27847c Merge pull request #3925 from deepseek-harness/turtle/dsh-cache-path
feat(attachment-local): use shared cache for request images
2026-09-10 17:38:26 +08:00
Chinesezjc 87f32dc8ca docs(notes): record the hosted-image assumptions the coverage suite names
The failover leg runs this suite on pools this repository does not own, and the
coverage lanes failed there on host properties their cases never named: the
containment a mocked PTY exit raced, the grace a managed scope needs before it
can take a SIGKILL, reader coalescing in the illegal-UTF-8 residual cases, and
a Windows image that refuses the folder dialog class. Record what each case
pins now, what was rejected, and the runs that measured it, so the next pool
change starts from those host dependencies instead of re-diagnosing them.
2026-09-10 17:36:16 +08:00
Chinesezjc 45c10ed2ce ci: give the Linux coverage lane the hosted image's teardown budget
The managed-scope disposal cases in subprocess-local and bash-sandbox run past
the 5000ms default when this lane's four partitions, six workers per gate, and
sibling gates share one host. The same commit stays inside the budget on the
in-house pool: the hosted image exceeded it (run 34449848541) and the lane is
green with 90000 (run 34457655892). The Windows coverage lane already grants
the same budget for the same class of teardown.
2026-09-10 17:36:16 +08:00
Chinesezjc f45ca2d9ac test: drop two host-paced assumptions the hosted image exposes
The ACP plugin-config case drove a real dispose with 150ms graces. On the hosted
image the SIGKILL escalation landed while the managed scope could not take the
signal — systemctl failed the kill ("Failed to send signal SIGKILL to auxiliary
processes: Invalid argument") — so the run reported a teardown failure the
configuration never asked for. The case asserts that config graces reach the
real run, so the values only need to clear the host's scope handling. Its mock
refuses stdin EOF and SIGTERM by design, so the case waits out both graces and
carries its own budget for that fixed cost.

Both illegal-UTF-8 residual cases relied on a plain sched_yield leaving each
write as its own read chunk. A starved reader coalesces hundreds of bytes into
one chunk, which inflates the measured peak for correct accounting too: the
hosted image measured 2563 against the 2048 bound. Pace with a real sleep so
each byte is its own chunk everywhere, and keep each payload above the bound
(3200 bytes; 1100 CESU-8 sequences) so a raw-byte undercount still flushes past
it instead of only at EOF.
2026-09-10 17:36:15 +08:00
Chinesezjc df709f442c test(subprocess): align the teardown race with the settlement contract
`disposal contains a spawn-failure rejection that races teardown` asserted one
winner of the race. A bootstrap that publishes its pre-exec failure rejects with
that failure, and a teardown that stops the bootstrap first settles as the
requested termination — the recorded failure only outranks the stop when it was
published before the stop landed. Assert the contract instead: a rejection
carries the failure, a stop carries SIGTERM, which only the Linux scope records
because the win32 job owner and the fallback launcher both reject the start.

The two terminal cases that drive a mocked PTY exit state why they pin
`internals.platform`: under the host's native scope the mocked exit races the
scope bootstrap and fails as `terminal scope exited before its bootstrap
consumed the launch request`.
2026-09-10 17:36:14 +08:00
Chinesezjc ac5f851095 test(directory-picker): probe the folder dialog class instead of the platform
A Windows Server image can answer CoCreateInstance(CLSID_FileOpenDialog)
with CLASS_E_CLASSNOTAVAILABLE, so the win32 COM smoke has no dialog to
open and the POSIX rejection expectation is the only proof that image can
produce. Gate the pair on a PowerShell activation probe taken outside the
code under test, so a GUID or vtable regression in src still fails the
smoke instead of skipping it.
2026-09-10 17:36:13 +08:00
turtle1999 aaa02a3970 fix(subprocess): settle a Linux scope left active with no processes
Range observation waited for an active transient scope to leave `active`
before it would prove the managed range empty. systemd ends a scope only when
it observes the populated-to-empty transition, so a payload killed before the
manager placed it in the scope's cgroup leaves the unit active with an empty
cgroup forever. `waitForExit()` then polled a unit that could not change, and
`LocalSubprocessRuntime.disposeManagedProcesses()` awaited it without bound —
teardown hung for any command cancelled immediately after spawn.

Each state query now also reads the unit's process count. Once termination was
requested and the launcher has exited, a still-active unit reporting no
processes is the empty range: the launcher forked every process it will ever
fork, so nothing later joins that cgroup. The owner stops the leftover unit so
transient units cannot accumulate, and an unreported or `[not set]` count
stays unknown and keeps waiting.

The race needs a live user-systemd manager, so it stayed dormant wherever the
native scope path was unavailable and surfaced once CI routed lanes onto the
Blacksmith hosted image, whose runners accept that path. Ten repetitions of
`local.spec.ts > disposal kills still-running processes and awaits their exit`
in a Linux container with a user manager failed seven times before the change
and passed ten times after it.
2026-09-10 17:27:52 +08:00
_Kerman 0989a5cffc Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-3828 2026-09-10 17:17:09 +08:00
07akioni 42123ef019 fix(desktop): tighten parallel notarization checks 2026-09-10 17:12:45 +08:00
07akioni ce94430e16 Merge master into fix/parallel-macos-notarization 2026-09-10 17:00:35 +08:00
imccyu 25d554d46e Merge pull request #3650 from deepseek-harness/worktree-feqatest
feat(test-support): whole-client test tier over an endpoint-named Remote mock
2026-09-10 16:58:13 +08:00
07akioni 6fc0064b70 Merge pull request #3914 from deepseek-harness/fix/bundle-speed
perf(desktop): 优化运行时打包、启动及错误恢复
2026-09-10 16:54:32 +08:00
turtle1999 5a88e5c4b9 docs(ci): state the full admitted failure class for the dockkit exemption
The package README and the Agent Note named an extension or error code but
omitted the unrelated-message case the classifier also rejects, and the note
loosened "Node's unknown-`.css`-extension refusal" to any non-`.css` failure.
2026-09-10 16:50:43 +08:00
_Kerman 632d42ee11 Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-3828 2026-09-10 16:42:45 +08:00
imccyu f74ca1e266 fix(remote-mock): abort stream handle on consumer return 2026-09-10 16:34:32 +08:00
imccyu 4ffc774e5c test(settings): exercise settings through the whole-client fixture 2026-09-10 16:34:31 +08:00
imccyu d58c5455dd test(api): migrate Session and Workspace specs to assembled clients 2026-09-10 16:34:30 +08:00
imccyu 627c0f741e feat(test-support): assemble real clients with native test fixtures 2026-09-10 16:34:29 +08:00
imccyu 48d83eca66 refactor(client): share boot and transport integration points 2026-09-10 16:34:28 +08:00
imccyu 3d6fa12a6d feat(remote-mock): expose typed native mocks and controlled streams 2026-09-10 16:34:27 +08:00
imccyu 0718711886 docs(testing): define the native-mock client assembly tier 2026-09-10 16:34:27 +08:00