Commit Graph
100 Commits
Author SHA1 Message Date
Tianyi Cui e73906d06f test(web): await seeded workspace membership before selection 2026-09-08 00:28:25 +08:00
Tianyi Cui 4ac4e3d014 Merge pull request #3668 from deepseek-harness/fix/windows-subagent-teardown-ci
test(ci): synchronize Windows waiters and complete teardown
2026-09-07 15:52:01 +08:00
Tianyi Cui 5608528e14 Merge pull request #3637 from deepseek-harness/perf/frontend-scenarios
test(perf): gate long-session browser and reconnect workflows
2026-09-07 14:42:15 +08:00
Tianyi Cui b53c95e458 Merge pull request #3664 from deepseek-harness/fix/scroll-follow-pending-sample
fix(chat): preserve pinned scroll-follow across layout changes
2026-09-07 14:38:43 +08:00
Tianyi Cui 4023879df7 test(codex): finish captured cleanup after sibling failures 2026-09-07 14:30:31 +08:00
Tianyi Cui a1d11f213f test(session): observe shared waiter admission before cancellation 2026-09-07 14:30:29 +08:00
Tianyi Cui 9ef426d729 fix(chat): keep genuine near-floor scroll gestures pending 2026-09-07 13:46:30 +08:00
Tianyi Cui 421e3b075c test(subagent): preserve lane budgets and await teardown completion 2026-09-07 13:39:56 +08:00
Tianyi Cui cbdf32447e fix(benchmarks): calibrate repeated hosted browser open median 2026-09-07 13:29:38 +08:00
Tianyi Cui 1a3af89a8d fix(benchmarks): calibrate hosted paging and trajectory endpoints 2026-09-07 13:29:38 +08:00
Tianyi Cui 620c2b0b27 fix(benchmarks): calibrate hosted frontend endpoints and preserve input overlap 2026-09-07 13:29:38 +08:00
Tianyi Cui 0ac1d4d865 test(perf): align browser provisioning with hosted benchmark runner 2026-09-07 13:29:38 +08:00
Tianyi Cui c51c16cdac test(perf): respect browser failover provisioning policy 2026-09-07 13:29:38 +08:00
Tianyi Cui 00e452aa03 docs(perf): confirm repeated frontend CI calibration 2026-09-07 13:29:38 +08:00
Tianyi Cui 82cd35467a docs(perf): record first frontend CI calibration 2026-09-07 13:29:38 +08:00
Tianyi Cui 9369585872 test(perf): bound browser observers to active response 2026-09-07 13:29:38 +08:00
Tianyi Cui 2927034ffe test(perf): retain successful CI measurement output 2026-09-07 13:29:38 +08:00
Tianyi Cui 7ac5e08246 test(perf): measure real history streams and live input overlap 2026-09-07 13:29:38 +08:00
Tianyi Cui 6ad74db2e3 test(perf): gate long-session browser and active reconnect workflows 2026-09-07 13:29:38 +08:00
Tianyi Cui 843c8723e5 docs(perf): link active hosted request calibration 2026-09-07 13:29:37 +08:00
Tianyi Cui e2b81cf8bf docs(perf): distinguish hosted request and catalog budgets 2026-09-07 13:29:37 +08:00
Tianyi Cui 8e270960ed test(perf): calibrate request history on standard hosted CI 2026-09-07 13:29:37 +08:00
Tianyi Cui 73edce1ae7 perf(agent-loop): reuse proven message freezes per agent 2026-09-07 13:29:37 +08:00
Tianyi Cui 84914c316d test(perf): calibrate baseline requests for hosted CI 2026-09-07 13:29:37 +08:00
Tianyi Cui 2f0088357d test(perf): calibrate tool continuation for hosted CI 2026-09-07 13:29:37 +08:00
Tianyi Cui daa7f60630 test(perf): calibrate catalog for standard hosted CI 2026-09-07 13:29:37 +08:00
Tianyi Cui 1507f82888 docs(perf): record backend CI evidence and align workload prose 2026-09-07 13:29:37 +08:00
Tianyi Cui c599ef87c4 test(perf): baseline tool-heavy backend workflows 2026-09-07 13:29:37 +08:00
Tianyi Cui 6c4cd033e3 Merge pull request #3280 from deepseek-harness/fix/ci-node-compile-cache-data-disk
ci: redirect Node compile cache to data-volume runner temp
2026-09-07 13:24:49 +08:00
Tianyi Cui fa6bf62a98 fix(chat): settle pinned scroll deliveries before layout growth 2026-09-07 13:24:04 +08:00
Tianyi Cui ef11a4e007 Merge pull request #3644 from deepseek-harness/fix/environment-prompt-suffix
fix(system-prompt): move environment facts behind reusable instructions
2026-09-07 13:12:22 +08:00
Tianyi Cui 3d54bd6d58 Merge branch 'master' into fix/ci-node-compile-cache-data-disk 2026-09-07 13:06:30 +08:00
Tianyi Cui 403b978c6c Merge pull request #3626 from deepseek-harness/optimize/ci-compatible-selfhosted
ci: run isolated Node compatibility jobs on self-hosted Linux
2026-09-07 13:05:07 +08:00
Tianyi Cui a7ea2d74de docs: remove redundant compatibility runner guide 2026-09-07 12:42:02 +08:00
Tianyi Cui ac4fa3d6f5 docs: clarify compatibility runner scope and verification 2026-09-07 12:42:02 +08:00
Tianyi Cui a137256f80 ci: set compatibility toolcache after runner environment export 2026-09-07 12:41:23 +08:00
Tianyi Cui f7a18f49ff ci: isolate compatibility Node jobs on self-hosted Linux 2026-09-07 12:41:23 +08:00
Tianyi Cui fd9debed10 Merge branch 'master' into fix/environment-prompt-suffix 2026-09-07 12:41:16 +08:00
Tianyi Cui c379894af8 fix(ci): isolate routing test setup and correct scheduling docs 2026-09-07 12:40:40 +08:00
Tianyi Cui ab1ee99685 ci: defer macOS ARM runtime and Wine checks to master 2026-09-07 12:40:40 +08:00
Tianyi Cui 31090e240a Merge pull request #3643 from deepseek-harness/fix/ci-python-runtime-smoke-retry
fix(ci): 加固 Python runtime 构建——安装重试与凭据隔离
2026-09-07 12:29:43 +08:00
Tianyi Cui 60d3e32069 fix(test): await lazy grammar registration notifications 2026-09-07 11:54:10 +08:00
Tianyi Cui 64dfd7a425 fix(test): await Client Console subscription delivery 2026-09-07 11:35:13 +08:00
Tianyi Cui f5302b2b4d fix(test): isolate recorded Web browser timezone 2026-09-07 11:17:42 +08:00
Tianyi Cui 237b3d5edf fix(test): synchronize pwsh completion and refresh profile snapshots 2026-09-07 11:07:19 +08:00
Tianyi Cui beb23febfd Merge branch 'master' into fix/environment-prompt-suffix 2026-09-07 10:43:43 +08:00
Tianyi Cui 5c8e1b53de Merge latest master into fix/ci-node-compile-cache-data-disk 2026-09-06 21:26:37 +08:00
Tianyi Cui 40792330c0 fix(system-prompt): keep model persona prefix and place cwd in suffix 2026-09-06 20:35:42 +08:00
Tianyi Cui 1dc50c492e fix(ci): harden Python runtime builds against transient failures
Master's windows-python-console-spawn-wait fix removed the plugin-add flake
this branch previously retried, so that retry is dropped entirely; the
branch keeps the changes that remain useful.

- Retry the immutable install step up to three attempts total with a
  ten-second pause (bash on every platform): node-gyp's Node-header
  download from nodejs.org intermittently times out, as observed on the
  hosted node24-macos-x64 cell.
- Keep checkout credentials out of the build tree (persist-credentials:
  false) so dependency-install scripts cannot read the embedded token.
- Failover runbook: drop the stray leading '#' before the Dependabot
  paragraph on both sides.
- Hosted-runtime note: name the PR/commit ownership and UTC timestamps of
  the cited runs and record the constraints a future self-hosted attempt
  must satisfy; new note records the install retry decision.
2026-09-06 20:31:01 +08:00
Tianyi Cui 6ac3258390 Merge pull request #3640 from deepseek-harness/ci/benchmark-standard-runner
test(ci): move required benchmarks to standard GitHub runners
2026-09-06 20:13:05 +08:00
Tianyi Cui e28862db57 fix(system-prompt): place environment facts after reusable instructions 2026-09-06 20:08:19 +08:00
Tianyi Cui 88e4c3c235 Merge master and preserve hosted benchmark documentation 2026-09-06 19:58:19 +08:00
Tianyi Cui 6f21b112da fix: wait for the Python console runtime on Windows 2026-09-06 19:53:23 +08:00
Tianyi Cui 50b0511fe1 Merge pull request #3466 from deepseek-harness/feat/system-prompt-surface-node-notes
docs(agent-note): propose system prompt as surface node and in-history replacement
2026-09-06 11:39:05 +00:00
Tianyi Cui 86528bb8a4 Merge pull request #3642 from deepseek-harness/fix/python-runtime-hosted-windows
revert(ci): run Windows Python runtime CI on GitHub-hosted Windows
2026-09-06 19:34:47 +08:00
Tianyi Cui 083cef0aea docs(notes): record hosted Windows runtime decision, retire the proposal
The failover runbook's Windows switch scope returns to the native Windows jobs:
remove the Python runtime eligibility sentences, the pool Python prerequisite,
and the proposal links. The #3629 self-hosted Python runtime proposal is
retired (deleted as obsolete after its unmeasured-throughput run), and a new
implemented note records that the Windows x64 runtime lane stays on
GitHub-hosted Windows with the evidence and alternatives. Bilingual sidecars
re-recorded.
2026-09-06 19:18:38 +08:00
Tianyi Cui 6933eccdb0 docs(notes): record hosted Windows runtime decision, reject proposal
The failover runbook's Windows switch scope returns to the native Windows jobs:
remove the Python runtime eligibility sentences, the pool Python prerequisite,
and the links to the proposal. The self-hosted Python runtime proposal is
moved to rejected with its unmeasured-throughput verdict, and a new
implemented note records that the Windows x64 runtime lane stays on
GitHub-hosted Windows with the reasons. Bilingual sidecars re-recorded.
2026-09-06 19:17:28 +08:00
Tianyi Cui faa33c0ffa revert(ci): run Windows Python runtime CI on GitHub-hosted Windows
Windows x64 runtime builds resolve their hosted matrix.runner unconditionally
again (windows-2025 for pull-request CI). Remove the DSH_CI_FAILOVER_WINDOWS
selector, job-private Python toolchain, self-hosted dependency install and
post-step cleanup, the private setup script, and the routing spec introduced
in #3629. The Windows failover switch again covers only the native Windows
jobs in ci.yml.
2026-09-06 19:17:27 +08:00
Tianyi Cui cd5e872bed Merge branch 'master' into ci/benchmark-standard-runner 2026-09-06 18:46:12 +08:00
Tianyi Cui 3bb63f9e4e Merge pull request #3632 from deepseek-harness/perf/speed-up-skill
docs(skills): add evidence-driven performance optimization workflow
2026-09-06 18:38:27 +08:00
Tianyi Cui e29b6528c3 docs(ci): list benchmarks among fixed hosted dependencies 2026-09-06 18:35:15 +08:00
Tianyi Cui b74411d9b8 test(bench): calibrate reopen budget for standard two-CPU CI 2026-09-06 18:24:42 +08:00
Tianyi Cui f75aabcb16 test(ci): run required benchmarks on standard hosted Linux 2026-09-06 17:10:30 +08:00
Tianyi Cui ce2197aa1d docs(agent-note): propose system prompt surface and in-history updates
Consolidate the existing notes-only PR into one review baseline. Preserve the exact reviewed tree; subsequent corrections remain separate commits with their own rationale and regression evidence.
2026-09-06 16:52:38 +08:00
Tianyi Cui eece831b18 Merge pull request #3629 from deepseek-harness/optimize/python-runtime-selfhosted
ci: move Windows Python runtime CI to isolated self-hosted jobs
2026-09-06 15:56:01 +08:00
Tianyi Cui 000cd7e762 Merge master and reconcile platform failover documentation 2026-09-06 15:35:49 +08:00
Tianyi Cui d15aaee271 Merge pull request #3627 from deepseek-harness/optimize/release-rehearsal-selfhosted
ci: route trusted release rehearsals to self-hosted Linux
2026-09-06 15:22:44 +08:00
Tianyi Cui 37d3ec1681 ci: address Windows runtime routing and isolation review 2026-09-06 15:07:17 +08:00
Tianyi Cui ed183b1bd1 Merge pull request #3630 from deepseek-harness/fix/agent-message-spacing
fix(subagent): add space after agent message prefix
2026-09-06 15:03:27 +08:00
Tianyi Cui a1188bbf3f ci: contain release temporary installs and document shared routing 2026-09-06 14:57:11 +08:00
Tianyi Cui ceb3136bef ci: size PR previews on measured standard hosted runners (#3628)
* ci: measure hosted preview runner sizes [preview-sizing-benchmark]

* ci: type benchmark job keys explicitly [preview-sizing-benchmark]

* ci: size PR previews on measured standard hosted runners
2026-09-06 14:56:30 +08:00
Tianyi Cui 6cc750b006 docs(skills): route performance evidence through decision note 2026-09-06 14:50:53 +08:00
Tianyi Cui 7c3d47d4d6 test(subagent): refresh message spacing snapshots 2026-09-06 14:48:27 +08:00
Tianyi Cui 7a1cf325b8 docs(skills): add evidence-driven performance optimization workflow 2026-09-06 14:14:30 +08:00
Tianyi Cui 3a79abedec ci: use UTF-8 Python text on self-hosted Windows 2026-09-06 13:49:19 +08:00
Tianyi Cui 754a65ab2d fix(subagent): separate message prefix from body 2026-09-06 13:47:37 +08:00
Tianyi Cui 69b1e315b4 ci: use isolated self-hosted Windows Python runtime builds 2026-09-06 13:21:26 +08:00
Tianyi Cui 81dcacbb44 Merge pull request #3537 from deepseek-harness/perf/03-client-stream-fold
perf: read embedded Assistant streams per compact record
2026-09-06 13:17:51 +08:00
Tianyi Cui f66dd78ff7 ci: route trusted release rehearsals to self-hosted Linux 2026-09-06 13:01:55 +08:00
Tianyi Cui 07245b9e88 docs(llm): scope the record readers' early-exit claims; state that readers trust the static record type
Reflect the review feedback on the reader list: assistantStreamFirstTokenTime and the has-visible readers stop at the first qualifying member, while lastAssistantStreamChunk, assistantStreamChunks, and joinAssistantStreamText scan the whole stream; assembleAssistantStream feeds a BlockAssembler one joined delta per run. Record-level readers trust the static record type; expandAssistantStream is the validating path.
2026-09-06 12:46:19 +08:00
Tianyi Cui 53c2ed9916 Merge pull request #3618 from deepseek-harness/fix/session-reference-spill
fix(session-reference): spill complete truncated snapshots for retrieval
2026-09-06 12:44:37 +08:00
Tianyi Cui 165cc31eb8 perf(llm,host): read embedded Assistant streams per compact record
Session format v2 embeds each attempt's compact stream in
assistant/message and assistant/attempt, but Host and client consumers
still expanded it into per-member TimedStreamChunk arrays and did
per-member work; expandAssistantStream materializes the full array before
find/toReversed/break can answer. Session Stats (the projection phase of
every Session open), the token meter's usage and provider-assembly folds,
the subagent output fold, and the Session Controller image lookup still
paid O(members) allocation and time per settlement.

The Chat and Trajectory definitions were already settled from
message.content on master; the remaining per-member folds stay.

dsh-llm now exports record-level readers (first token, visible content,
visible text, last raw chunk of a type, raw chunks of a type, joined
text, run-aware assembly, per-run first-token/first-visible times) that
scan the compact records once with early exit. Session Stats reads
assistantStreamFirstTokenTime, the token meter reads
lastAssistantStreamChunk(stream, 'usage') and assembles through
assembleAssistantStream, the subagent output fold appends
joinAssistantStreamText, and the Session Controller scans
assistantStreamChunks(stream, 'block-end').

expandAssistantStream is deliberately not memoized: retaining expansions
costs roughly ten times the compact stream for the Session's lifetime.
It remains the validating path at durable boundaries.

Synthetic 200-turn v0 migration benchmark, median of five: first-open
projection 28.0 ms -> 5.4 ms, first-open total 76.9 -> 50.0 ms, peak RSS
137.2 -> 94.9 MB; reopen projection 17.8 -> 5.6 ms; all phase budgets and
the 128 MB heap constraint keep passing.
2026-09-06 12:41:25 +08:00
Tianyi Cui e12ca5fdf0 test(session-reference): preserve complete regression suite after rebase 2026-09-06 12:17:12 +08:00
Tianyi Cui 539b5cd93d fix: normalize JSON-escaped Windows spill locators 2026-09-06 12:17:12 +08:00
Tianyi Cui 52475cbf50 fix: spill truncated session-reference captures for retrieval 2026-09-06 12:17:12 +08:00
Tianyi Cui 72ce6964ac fix(session-reference): retain fallback for adapterless routes 2026-09-06 12:17:11 +08:00
Tianyi Cui 36a3a1188d fix(session-reference): size default budget from selected model 2026-09-06 12:17:11 +08:00
Tianyi Cui c53b0bb5ed test(perf): double the CI cost in the migration budget
The migrating first open measured 1,963 ms on the CI runner under the
128 MB heap limit; 4,000 ms keeps a 2x margin while the repeated-snapshot
implementation still fails by heap exhaustion and would need ~10 s.
2026-09-06 01:01:03 +08:00
Tianyi Cui 3285850ee5 test(perf): allow the joined-text share in the fold scaling bound
A records-proportional fold still joins 20x more text in the large window,
which measured about 2.5x the small fold; the per-delta replay measured
about 11x. A 5x bound separates the two on a noisy runner.
2026-09-06 01:01:03 +08:00
Tianyi Cui 9048e8ee11 test(perf): size the migration budget for the CI runner
The migrating first open of the synthetic log costs about 1 s on the
reference machine under the 128 MB heap limit and about twice that on the
CI runner, so 3,000 ms keeps headroom while staying far below the ~5 s
(~10 s on CI) of the repeated-snapshot implementation.
2026-09-06 01:01:03 +08:00
Tianyi Cui 74e27c97d0 test(perf): list the bench config among proxy-setup Vitest inventories
scripts/test-proxy-environment.spec.ts pins the Vitest configs that declare
setupFiles so the proxy isolation setup is never dropped; the benchmark
lane declares it too.
2026-09-06 01:01:03 +08:00
Tianyi Cui 2395f112d8 test(perf): gate opening large Sessions with synthetic CI benchmarks
Add a benchmark lane (`vitest.bench.config.ts`, `pnpm run test:bench`,
gate mode `ci-bench`) and a required `node 24 / benchmarks` CI job that
runs it alone. Benchmarks synthesize their input in-process from fixed
parameters and fail on documented budgets:

- `open-generation.bench.ts`: a 200-turn released-v0 log with 500 text
  and 125 reasoning deltas per reply (127,400 events, ~2.8 MB) encoded
  through the frozen v0 codec; the migrating first `open()` must finish
  within 2,000 ms in a child process capped at 128 MB of old space, and a
  fresh process must open the published current generation within 500 ms.
- `conversation-fold.bench.client.ts`: 200 replies whose compact streams
  hold 2,000 text + 500 reasoning deltas each, folded through every Chat
  Definition by the real assembler; the fold must finish within 150 ms
  and stay within 3x the fold of the same window with 100 deltas per
  reply.

On this commit both gates fail: the migration exhausts the 128 MB heap
(4.8 s and 696 MB peak RSS without the cap; the pre-stack decode of the
same bytes took 34 ms and 168 MB) and the fold scales 11x with the delta
count. The stacked fixes bring both paths to O(records).
2026-09-06 01:01:03 +08:00
Tianyi Cui cd4a23c5df Merge pull request #3529 from deepseek-harness/turtle/redesign-issue-pr-templates-policy
Redesign issue and pull request templates and simplify policy
2026-09-06 00:44:02 +08:00
Tianyi Cui a6e157c0a3 Merge pull request #3605 from deepseek-harness/fix/ptc-bash-cards
fix(web): show Bash terminal cards in PTC mode
2026-09-06 00:09:29 +08:00
Tianyi Cui cef72f2f27 fix(spill): publish notice through standard pure source entry 2026-09-05 23:52:59 +08:00
Tianyi Cui b25d4faaaa fix(spill): share persisted notice formatting with client recognition 2026-09-05 23:52:59 +08:00
Tianyi Cui 314cd13971 fix(web): keep spilled shell previews generic without guessing status 2026-09-05 23:52:59 +08:00
Tianyi Cui 739b38c973 docs(web): describe nested terminal details eligibility 2026-09-05 23:52:59 +08:00
Tianyi Cui 46a08db381 fix(web): render terminal cards for PTC bash subcalls 2026-09-05 23:52:59 +08:00
Tianyi Cui ce0a1e4253 Merge pull request #3368 from deepseek-harness/fix/directory-picker-win32-overread
fix(directory-picker-native): decode the Win32 picker path without a fixed 32KiB view
2026-09-05 23:51:08 +08:00