Commit Graph

5779 Commits

Author SHA1 Message Date
Tianyi Cui
7b9eceff53 fix(ci): make local Wine gate portable on macOS 2026-07-27 18:43:00 +08:00
_Kerman
7c2cf5f0b3 test(workspace-context): align typed baseline fixtures 2026-07-27 18:39:22 +08:00
Tianyi Cui
1665ab9884 ci: preserve stores across pnpm action setup
Keep restore-only and self-hosted stores outside pnpm/action-setup's replaceable install directory, resolving the configured path for every paired cache. Pin Yarn 4 for the generated-project e2e so runner images without Corepack do not fall back to Yarn Classic, and update the bilingual decision record.
2026-07-27 18:39:20 +08:00
kingwl
6adb14b56d feat(telemetry): adopt from the construction boundary — constructor seeds never re-export
A cursor-less adoption (process restart + resume, fork, seam-module
reload) replayed the session's full log from seq 0, re-exporting
history that already left the process — a resume re-billed its entire
stored log on every restart, and a fork re-shipped the parent's prefix
under the child's id, doubling query-time counts on OTLP backends with
no native ingest dedupe.

dsh-session now exposes the fact the constructor already validated but
discarded: Session.firstLiveSeq, the constructor-seed length — the
first seq appended in this process. header.seedLength cannot serve
here: it is the durable fork-lineage boundary, and a resumed session's
constructor seed is its full stored log while the header keeps the
original fork value (llm-replay and session-query-sqlite depend on
that meaning). Constructor seeds also never publish on the
session/event firehose, so adoption replaying them was inconsistent
with the system's own publication semantics.

Adoption's cursor-less fallback starts at firstLiveSeq; seed events
still feed the chunk projection, so mid-step continuations re-drop
after a resume. Fork streams are no longer self-contained: records now
carry session.seed_length (with the existing session.parent_id) so
receivers stitch the child's stream onto the parent's. Accepted cost,
consistent with at-most-once delivery and recorded in the revival
Agent Note: a resume no longer backfills records a previous process
failed to deliver — a deployment with that requirement needs the
deferred outbox, not replay.

Pinned red-first: seeded adoption exports nothing (assertion reversed
from the prior seed-readback test, obsolete behavior changed with its
test), resume-shaped seed rebuilds the projection without exporting,
and fork records carry the stitch attributes.
2026-07-27 18:35:03 +08:00
_Kerman
6af8a2e1d8 Merge remote-tracking branch 'origin/xtr/agent-loop-message-machine' into xtr/agent-loop-message-machine 2026-07-27 18:33:22 +08:00
_Kerman
98238ceace fix(agent-loop): settle rejected admission context 2026-07-27 18:32:07 +08:00
_Kerman
5d10074839 test(workspace-context): cover unsized dynamic probe 2026-07-27 18:31:50 +08:00
Chinesezjc
4f2068ff27 Merge remote-tracking branch 'origin/master' into fix/pty-raw-ready-wait 2026-07-27 18:31:46 +08:00
_Kerman
cda482b555 Merge branch 'master' into xtr/agent-loop-message-machine 2026-07-27 18:31:16 +08:00
Chinesezjc
45c7fe4ebe docs(pty): re-record the note pair after the master merge 2026-07-27 18:29:52 +08:00
_Kerman
376bf7f365 fix(workspace-context): rearm compacted baseline 2026-07-27 18:27:39 +08:00
Tianyi Cui
6c8bf0a522 fix: address human review — default providerName dsh-sdk; raise composition-e2e deadline
- subagent-sdk: the default registry name becomes `dsh-sdk` (the bare
  `sdk` read ambiguously in configs); READMEs, config catalog, fixture,
  and suites follow. The Loader fixture now omits providerName to exercise
  the shipped default end to end.
- loader-composition.e2e: two full harness runtimes boot in sequence, so
  the default 30s loader-smoke window times out under host load; raise the
  subprocess deadline to 120s with matching vitest headroom (the
  real-model.e2e precedent).
2026-07-27 18:25:18 +08:00
Tianyi Cui
2421179702 Merge origin/master into worktree/pr675-retarget-20260727 2026-07-27 18:22:22 +08:00
Tianyi Cui
d23621f922 Merge pull request #682 from deepseek-harness/nih-imp-execa
test: adopt execa/parseArgs/vi.waitFor for hand-rolled test subprocess plumbing
2026-07-27 18:16:00 +08:00
Chinesezjc
1927d347cd Merge remote-tracking branch 'origin/master' into fix/pty-raw-ready-wait
master already stabilized the raw-mode SIGINT scenario in 65e0ffe03 and
3be090f1d with wider scenario-owned bounds and deliberately delayed child
readiness, so the merge takes master's test implementation. What this branch
keeps is the contract that explains why those bounds are required: the note
paragraph on the settle boundary in PtySendOperation.append, and the
waitForOutput comment recording that raising its deadline alone cannot
recover output the send never collected.
2026-07-27 18:15:47 +08:00
_Kerman
cf49101d9a Merge remote-tracking branch 'origin/master' into xtr/agent-loop-message-machine
# Conflicts:
#	.agents/notes/implemented/feature/2026-07-06-sandbox.i18n.yaml
2026-07-27 18:12:38 +08:00
_Kerman
ff7792b17c docs(agent): document next-step acceptance window 2026-07-27 18:07:51 +08:00
_Kerman
f63d937496 fix(tui): route prompts by next-step capability 2026-07-27 18:05:43 +08:00
Tianyi Cui
194ea6bdf0 docs(test): correct execa process-tree claims 2026-07-27 18:03:21 +08:00
Tianyi Cui
4e32f838b3 Merge branch 'master' into wine-local-gate 2026-07-27 18:00:55 +08:00
Tianyi Cui
d897dcc7ea Merge remote-tracking branch 'origin/master' into worktree/pr682-retarget-20260727
# Conflicts:
#	.agents/notes/rejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.i18n.yaml
2026-07-27 17:55:56 +08:00
_Kerman
a59ce0367c fix(agent-loop): route next-step input during admission 2026-07-27 17:55:55 +08:00
Tianyi Cui
d270c285ab fix(review): portable checksum verifier and full provisioning wait
sha256sum-or-shasum selection happens in preflight (macOS ships shasum,
not GNU coreutils) with a clear missing-tool hint; provisioning now waits
for every child and reports each named status before exiting, so a fast
failure can neither hand the EXIT trap a scratch tree that a still-running
install is writing into nor bury the root cause behind a downstream
symptom.
2026-07-27 17:49:11 +08:00
Tianyi Cui
ab927038c4 Merge remote-tracking branch 'origin/master' into worktree-process-service-seam 2026-07-27 17:48:51 +08:00
Tianyi Cui
cf2b9e211d fix(sdk-client): address ds-review-bot findings
- api: resolve a relative workspace cwd to absolute before the handshake —
  the child spawns relative to the parent cwd, but the wire cwd is resolved
  again inside the child, so a relative value double-resolved
  (worker -> worker/worker).
- api: make the documented handshake retry real — HarnessClient.close() is
  permanent, so a failed initialize now reaps the runtime and swaps in a
  fresh client; DeepSeekHarness.close() is terminal and stops the respawns.
- api: validate session.event envelopes, assistant/message content, and
  session.finished reasons at the wire boundary — a malformed runtime
  surfaces as SdkProtocolError instead of type-invalid TurnResult data or a
  TypeError out of finalResponse.
- client: a throwing subscribe() filter fails and detaches only its own
  subscription (normalized to Error); sibling fan-out and the transport read
  loop are undisturbed.
- client: NotificationSubscription.close() drops its queued notifications,
  matching its documented contract; runtime-death fail() still leaves
  already-delivered items drainable.
- client: subscribe() after close()/runtime death returns a born-failed
  subscription so next() rejects instead of parking forever.
- client/transport: bounded requests abandon via AbortSignal — the transport
  drops the pending entry at timeout, so repeated bounded calls against a
  hung method retain no per-call state.

One test per finding; per-file coverage stays 100% on both packages.
2026-07-27 17:48:07 +08:00
Turtle
ac1431e4f5 fix(session-title): improve prompt
bad case:
when i start the session with a skill reference, llm returns XML
2026-07-27 17:47:48 +08:00
Tianyi Cui
c59ea13c2e Merge pull request #671 from deepseek-harness/nih-imp-landstrip-xlink
docs: reject the landstrip evaluation for the win32 sandbox rung
2026-07-27 17:43:48 +08:00
_Kerman
52174e32cb refactor(agent): clarify turn lifecycle event names 2026-07-27 17:38:42 +08:00
Tianyi Cui
94d5816142 Merge remote-tracking branch 'origin/master' into worktree-process-service-seam 2026-07-27 17:38:01 +08:00
Tianyi Cui
431d99224e Merge remote-tracking branch 'refs/remotes/origin/master' into worktree/pr671-retarget-20260727 2026-07-27 17:37:47 +08:00
Tianyi Cui
bde9854621 Merge remote-tracking branch 'refs/remotes/origin/master' into worktree/pr671-retarget-20260727
# Conflicts:
#	.agents/notes/rejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.i18n.yaml
2026-07-27 17:36:44 +08:00
Tianyi Cui
ec383a5fdf Merge pull request #745 from deepseek-harness/fix/remove-orig
fix: remove orig
2026-07-27 17:31:28 +08:00
imccyu
5cae7874f6 git: add .orig to gitignore 2026-07-27 17:27:41 +08:00
_Kerman
7d5cc498d3 docs(agent): call agent step an extension point 2026-07-27 17:24:20 +08:00
Tianyi Cui
1ee8029bc6 Merge remote-tracking branch 'origin/master' into worktree-process-service-seam 2026-07-27 17:24:20 +08:00
imccyu
67ad0eb887 Merge branch 'master' into fix/remove-orig 2026-07-27 17:23:03 +08:00
imccyu
e8cbf6cc72 fix: remove orig 2026-07-27 17:22:01 +08:00
_Kerman
e3a7836e4b test(headless): isolate goal replay from live adapter 2026-07-27 17:21:40 +08:00
Chinesezjc
e7bf303827 Merge pull request #592 from deepseek-harness/ci/offload-coverage-to-vm-backup
ci: hot-standby lane + admin-only failover to the in-house pool
2026-07-27 17:20:10 +08:00
_Kerman
db16732101 Merge remote-tracking branch 'origin/master' into xtr/agent-loop-message-machine 2026-07-27 17:18:12 +08:00
_Kerman
b6bc4f9f08 test(agent-loop): cover listener-owned stream routes 2026-07-27 17:17:58 +08:00
Tianyi Cui
dfa4a2aefc Merge branch 'master' into ci/offload-coverage-to-vm-backup 2026-07-27 17:16:52 +08:00
Tianyi Cui
8be70e72d2 docs: scope the local Wine gate to Windows-failure diagnosis only
AGENTS.md and the Wine Agent Note pair state the run policy: CI owns the
everyday win32 signal; run check:windows-wine only while investigating a
known Windows-related failure, and pre-push selection never includes it.
2026-07-27 17:15:37 +08:00
_Kerman
1ffaa5bb10 cleanup(agent-loop): simplify request construction 2026-07-27 17:12:28 +08:00
Tianyi Cui
625094905d Merge remote-tracking branch 'origin/master' into wine-local-gate 2026-07-27 17:11:39 +08:00
imccyu
d8ce036295 Merge pull request #738 from deepseek-harness/feature/delete-workspace
feat(web): delete workspace registrations
2026-07-27 17:08:48 +08:00
Chinesezjc
68a92e2032 Merge branch 'master' of /data_local/ci/mirror/deepseek-harness into ci/offload-coverage-to-vm-backup 2026-07-27 17:07:41 +08:00
_Kerman
749927ecd8 fix: reconcile agent loop merge integration 2026-07-27 17:04:22 +08:00
Tianyi Cui
f12ea986cb ci: share one Wine Windows gate script between CI and an optional local gate
scripts/wine-windows-gates.sh owns the whole lane — workspace snapshot,
concurrent Node/wineboot/install provisioning, entrypoint resolution, the
vue link, smoke, and the two concurrent blocking gates — so the ci.yml
windows job shrinks to runner provisioning plus one script call, and
pnpm run check:windows-wine runs the identical script locally. The local
path never mutates the working tree, persists the Wine prefix and the
checksum-verified Windows Node zip under .cache/wine-windows/, and falls
back to the cached zip offline. AGENTS.md ceiling 1680 -> 1695 for the
one-line command entry.
2026-07-27 17:04:05 +08:00
Tianyi Cui
24d2384294 Merge branch 'master' into sdk/ts-client-and-subagent 2026-07-27 17:01:20 +08:00