Commit Graph
5165 Commits
Author SHA1 Message Date
Tianyi Cui 4094b8622e Merge pull request #5299 from deepseek-harness/test/oxlint-contract-fix-retry-budget-20260927
test(lint): bound every process-spawning oxlint contract case at 90s
2026-09-28 18:03:54 +08:00
Huanqi Cao eb1a903a45 Merge pull request #5203 from deepseek-harness/windows-sandbox-acl-diagnosis
feat(sandbox-windows-acl): ship a diagnosis skill for ACL denials
2026-09-28 17:58:46 +08:00
turtle1999 7ded036fdb feat(web): add Session Log upload preference in General settings (#5337) 2026-09-28 17:55:03 +08:00
creatixchu 15332e42e6 refactor(cua): keep manual provider and application consent in base layer 2026-09-28 16:53:29 +08:00
Chinesezjc 30a9770a58 docs(ci): correct the budget note's measurements and derive the hang guard
Fixes the review findings on the work-budget change:

- unify the measured npm time range to 137-205 s in the note's problem
  statement, which had carried the older 153-190 s range
- correct the peer-edge share to about three quarters (1874 of 2524),
  which the sentence had called two thirds
- state the ratchet threshold as the packages-times-edges product, about
  12% in packages and edges together
- derive NPM_HANG_GUARD_MS from MAX_RESOLUTION_WORK_UNITS so a raised
  budget cannot shrink the guard's headroom, and state the guard's
  guarantee as covering a runner four times slower than the measured host
- name the cost side of the hang guard in the note's consequences
2026-09-28 16:18:09 +08:00
Chinesezjc f45693fbe5 fix(ci): decide the dual-release install layout by graph scale
The Dependency layout lane failed whenever the npm child process exceeded
a hardcoded 300 s deadline. That deadline measured the runner rather than
the graph: the same layout resolves in 137-205 s on an idle developer host
and exceeded 300 s on CI while the placement assertion reported no error,
so the failure carried no information about what had grown.

The gate now bounds the verified graph by resolution work units,
dshPackagesPerVersion * checkedDshEdges against MAX_RESOLUTION_WORK_UNITS,
and keeps the wall clock only as a hang guard derived from that budget.
Growth fails with the graph's own measured counts on any runner.

The resolution cost itself is unchanged. Measurement attributed 99.3% of
it to npm's peer-conflict placement, and cache reuse, graph splitting and
the placement flags were measured and rejected.
2026-09-28 16:04:06 +08:00
creatixchu 810fd8601f Merge PTC cleanup and refresh CUA dependency graph 2026-09-28 15:42:37 +08:00
creatixchu 3a0c2ae3bb test: drop the retired desktop keyboard cleanup patch 2026-09-28 15:42:08 +08:00
creatixchu 51000b5283 Merge updated PTC base into CUA 2026-09-28 15:35:59 +08:00
creatixchu 21e3950519 Merge master into PTC execution-mode change 2026-09-28 15:34:26 +08:00
creatixchu f38f025726 feat(cua): enable retained PTC through executionMode 2026-09-28 15:31:12 +08:00
creatixchu 30b193b38a feat(ptc): select Node state retention through executionMode 2026-09-28 15:27:39 +08:00
Tianyi Cui 3e38e2118c test(vitest): make the lane-budget regression load-independent and own its resources
The fixture's poll case counts attempts instead of reading a clock, so a host
stall cannot turn a budget-ended poll into a pass; the control case reads the
poll's reported duration, which the 1000 ms default bounds from below. The
spawning spec acquires its temporary config in beforeAll, bounds the child
with a timeout and asserts no signal ended it, and counts the polled values it
inspects. CoverageTestTimeoutOptions is Vitest's own TestUserConfig members;
the rule's reach has one home in its JSDoc, which the config, gate, spec, and
note comments reference.
2026-09-28 14:18:03 +08:00
Huanqi Cao 17877121ba Merge remote-tracking branch 'origin/master' into windows-sandbox-acl-diagnosis
# Conflicts:
#	packages/sandbox/sandbox-windows-acl/package.json
2026-09-28 13:51:41 +08:00
Tianyi Cui 333d7e75d2 test(vitest): apply the lane test budget inside every inline project
DSH_COVERAGE_TEST_TIMEOUT_MS expanded to --testTimeout, --hookTimeout, and
--expect.poll.timeout on the coverage and serial lanes, but Vitest forwards
only a fixed list of CLI overrides into inline projects and neither
hookTimeout nor expect is on it, so under the root config's two projects the
hook and expect.poll budgets stayed at Vitest's defaults on every lane.

vitest.config.ts now reads the variable through coverageTestTimeoutOptions and
spreads the three budgets into both projects; run-gates and the partition
coordinator pass no timeout flags, leaving one owner for the rule. A new spec
spawns vitest on the root config with a 200 ms budget and proves all three
waits end inside both projects, that unset keeps the defaults, and that a
malformed value fails at config load.

Fixes #5335
Related to #5325
2026-09-28 13:37:20 +08:00
Tianyi Cui 0976d15122 test(run-gates): own the coverage-gate environment in the spec and pin ci-unit to the test script
run-gates.spec.ts clears DSH_COVERAGE_PARTITIONS and DSH_COVERAGE_MAX_WORKERS
before each case, so the coverage gates it builds take their shape from the
case, not from a partitioned lane that exports the variables to every child.
The ci-unit case derives its two gates from the `test` package script's
segments. The serial-reference note keeps only the lane fact; the mechanism
fact about inline-project inheritance is owned by the fix that changes it.
2026-09-28 13:28:31 +08:00
Chinesezjc 8d7ba898f8 Merge origin/master into feat/preset-scoped-schedule-tools
master now ships the reminder stack as the optional
`@deepseek-ai/dsh-experimental-schedule-bundle`, which inserts the rows the
Web composition leaves out. This branch keeps the preset-level ownership
beside it.

Resolutions:
- The bundle inserts `schedule` and `ui-schedule` only. It no longer inserts
  `time-context`: the clock belongs to the `standard`, `cordis`, and `ptc`
  presets, and a Host row for the same package would mount it in two scopes
  and append two readings per step.
- `packages/bundle/web-app/package.json` declares `@deepseek-ai/dsh-time-context`
  again: the presets reference it by bare name, so `verify-cordis-config`
  requires the dependency.
- The bundle's patch spec, locale, package, README pair, the optional-bundle
  composition spec, the plugin-manager component list, and the
  `schedule-after` roster assertions describe the two-row bundle and the
  preset-owned clock and tools.
- Documentation and Agent Notes follow the same split; the note master
  archived stays frozen with its manifest hashes.
2026-09-28 13:04:51 +08:00
Tianyi Cui 9ab3f2c990 ci(sandbox): grant the darwin unit parity job the coverage lanes' test budget
The unit-darwin job ran the whole unit inventory at Vitest's 5000 ms default
on a shared 3-vCPU macos-latest runner; the first two master runs after #5292
each timed out a different set of cases that pass in under a second on a quiet
host. Every other whole-inventory lane raises the budget through
DSH_COVERAGE_TEST_TIMEOUT_MS=90000.

The job now sets that variable and runs `pnpm run check:ci:unit`, a run-gates
aggregate that is `pnpm run test` (native build, then `vitest run`) through the
path that consumes it. ci-unit receives no CI worker settings, so the inventory
inherits the environment `pnpm run test` finds: on a 3-CPU host the defaults
would inject DSH_COVERAGE_PARTITIONS=2, which run-gates.spec.ts reads as a
partitioned coverage lane.

Fixes #5325
2026-09-28 12:58:10 +08:00
Tianyi Cui 41c10a62c2 Merge branch 'master' into cleanup/compact-persistence-schema 2026-09-28 10:31:37 +08:00
Tianyi Cui b01a926d44 test(lint): bound every process-spawning oxlint contract case at 90s
Five cases in scripts/oxlint-contract.spec.ts spawned oxlint or the
repository lint entrypoint on vitest's 5000 ms default while their nine
siblings carried the 90_000 ceiling from the Windows spawn-budget
alignment. The first darwin parity run on master (Sandbox run
36332053320) ran the file 2.2x slower than the passing run and timed out
`prints only the final diagnostics when a fix retry still fails` at
6309 ms. Give the five cases the same per-case ceiling and record the
decision in an Agent Note.

Fixes #2581
Related to #2677
2026-09-28 00:58:56 +08:00
Huanqi Cao 79d8910f2d Merge origin/master into windows-sandbox-acl-diagnosis 2026-09-28 00:23:56 +08:00
Huanqi Cao 5bab07157f fix(sandbox): repair inherited ACL entries within normalized roots 2026-09-28 00:18:06 +08:00
Dudu-0223 acb2849495 chore(subagent): remove incidental snapshot generation changes 2026-09-27 15:42:32 +08:00
Dudu-0223 9a8a6d1c78 fix(subagent): align cross-platform snapshots after master sync 2026-09-27 15:36:25 +08:00
Dudu-0223 3254ed611d Merge master and preserve catalog-recursive subagent discovery 2026-09-27 15:23:31 +08:00
Dudu-0223 e0f52ae912 Merge remote-tracking branch 'origin/master' into codex/pr-5247-worktree
# Conflicts:
#	packages/client/ui-chat/tests/turn-trigger.client.spec.tsx
2026-09-27 15:04:29 +08:00
Dudu-0223 a5098110cf refactor(agent-team): stop delivering historical mailbox records
Historical team/message/queued and team/message/delivered records remain
decodable and projected, but Team no longer drains or acknowledges them
after restart. Remove the compatibility dispatcher, its disposal wait,
and its tests, and document that historical pending mail stays undelivered.
2026-09-27 15:01:00 +08:00
Yif eb9efc6265 fix(plugins): restore registry group, own opaque material, hold refresh spinner
The install registry picker used MenuSurface and overrode the theme-owned
menu material tokens, which the shared-menu-material gate rejects. Return
the picker to a fieldset (its native group role) and paint an opaque
bg-layer-2 surface so the form controls stay readable without touching
menu tokens. This also restores the group's radios to the accessible tree.

Align plugin-install-registry.e2e and its snapshots with the PR's visible
text: registry option names drop the parentheses around the host, the
custom address field is no longer disabled, and the custom hint spells out
http(s) and ~/.npmrc.

Hold the manual-refresh spinner to a 400ms minimum so a fast read does not
flash it, clearing to idle (or the failure toast) only after the minimum,
and dropping a refresh that settles after disposal.

Prune the retired no-unknown-casts baseline entry for browser-plugin.client.spec.
2026-09-27 09:46:15 +08:00
Dudu-0223 a98efc7115 Merge latest master documentation into Agent Team delivery 2026-09-27 06:45:46 +08:00
zhc b43d52ef45 merge: reconcile desktop analytics with latest master 2026-09-26 22:56:57 +08:00
Dudu-0223 6e369b4479 Merge origin/master into Agent Team direct delivery 2026-09-26 22:36:55 +08:00
Dudu-0223 8cae58aea8 fix(agent-team): close direct delivery review gaps 2026-09-26 22:35:08 +08:00
Tianyi Cui 67f648cf0c Merge pull request #4595 from deepseek-harness/worktree/fix-tool-failure-history-6967
fix(agent-loop): settle pending tool results before failed steps close
2026-09-26 22:01:39 +08:00
Ziya 88967ce80a Merge pull request #5207 from deepseek-harness/ux/automation-tasks-plugin-row
fix(schedule-bundle): name the Plugins row Automation tasks with an alarm clock icon
2026-09-26 06:57:49 -07:00
Yichen Jiang 50117a144e Merge pull request #5190 from deepseek-harness/worktree/scoped-events-heap-budget
fix(docs): align publication runner and scoped-event heap budgets
2026-09-26 21:46:55 +08:00
ZiyaZhang 9626323fc4 Merge remote-tracking branch 'upstream/master' into ux/automation-tasks-plugin-row 2026-09-26 06:10:21 -07:00
Tianyi Cui c40b1fabd1 Merge remote-tracking branch 'origin/master' into worktree/fix-tool-failure-history-6967 2026-09-26 20:18:49 +08:00
Dudu-0223 c772c85c17 refactor(agent-team): send directly through Agent inbox steering 2026-09-26 16:52:54 +08:00
ZiyaZhang b90695ee7a Merge remote-tracking branch 'upstream/master' into ux/automation-tasks-plugin-row 2026-09-25 22:31:25 -07:00
creatixchu be7ab6a17c Merge branch 'feat/persistent-ptc' into feat/experimental-dsh-cua 2026-09-26 12:34:16 +08:00
creatixchu 1c8683c47b test: preserve config reader binding in cleaner fixture 2026-09-26 12:33:53 +08:00
creatixchu 5f9d8a7467 Merge branch 'feat/persistent-ptc' into feat/experimental-dsh-cua 2026-09-26 12:12:32 +08:00
creatixchu b9e461b144 fix(build): make desktop keyboard output safe to clean 2026-09-26 12:11:56 +08:00
creatixchu 5e6524bca4 test(hooks): match the installer canonical worktree path 2026-09-26 12:09:58 +08:00
creatixchu dde252235d Merge branch 'feat/persistent-ptc' into feat/experimental-dsh-cua
# Conflicts:
#	.agents/notes/implemented/architecture/2026-09-21-experimental-capabilities-as-optional-bundles.i18n.yaml
#	.agents/notes/implemented/architecture/2026-09-21-experimental-capabilities-as-optional-bundles.md
#	.agents/notes/implemented/architecture/2026-09-21-experimental-capabilities-as-optional-bundles.zh.md
2026-09-26 11:32:58 +08:00
creatixchu 683e42a3b0 Merge remote-tracking branch 'origin/master' into feat/persistent-ptc 2026-09-26 11:30:25 +08:00
creatixchu f22177a1f9 refactor(cua): keep native preparation internal and remove duplicate checks 2026-09-26 11:25:04 +08:00
Chinesezjc 2edc6705b5 Merge origin/master into feat/preset-scoped-schedule-tools
Resolutions:
- `python/sdk-runtime/package.json` and `pnpm-lock.yaml` keep both sides'
  additions (`@deepseek-ai/dsh-otel` beside the schedule packages).
- The generated graph pages are re-emitted from the merged sources.
2026-09-26 10:14:10 +08:00
Tianyi Cui b73a702587 test(ci): canonicalize the Lefthook fixture common directory
Reading Git's path text verbatim to keep trailing whitespace duplicated the
line-terminator helper that scripts/change-scope.ts already owns, which the
duplication gate rejects. Canonicalizing the fixture-side common directory
with realpathSync.native removes the text parsing entirely: short names,
junctions, and directory symlinks all collapse onto the physical directory
the installer resolves, and the injected path stays exact.

Drops the trailing-space case: with no text trimming left in the
derivation, that path already matched the installer before this change, so
the case could not fail and proved nothing.
2026-09-26 01:46:03 +08:00
Chinesezjc fd53e83125 Merge origin/master into feat/preset-scoped-schedule-tools
master now ships the reminder stack as the optional
`@deepseek-ai/dsh-experimental-schedule-bundle`; this branch keeps the
preset-level ownership beside it.

Resolutions:
- The Host rows keep master's `disabled: true`. The optional bundle switches
  `schedule` and `ui-schedule` on and no longer `time-context`: the clock row
  is preset-level, so flipping the Host row as well would mount the plugin in
  two scopes and write two readings per step.
- `standard`, `cordis`, and `ptc` declare `preset-time-context` and
  `tool-schedule`; `minimal` declares neither.
- `tool-schedule` injects `tools` and resolves `schedule` per scope through
  `ctx.inject`, so the row stays valid but produces no tools while the service
  is off, and produces them once the bundle mounts it.
- The assembled-Web Schedule spec keeps master's bundle overlay and restates
  the shipped `preset-standard` row instead of the deleted fixture, because a
  top-level patch cannot reach a plugin a preset declares.
- Documentation and Agent Notes describe both layers; the note master archived
  stays frozen with its manifest hashes.
2026-09-26 01:12:54 +08:00