Commit Graph

1880 Commits

Author SHA1 Message Date
Tianyi Cui
ece33b9876 Merge branch 'codex/simp-shared-acp-test-launcher' into codex/simp-trim-hook-snapshot-noise 2026-07-15 20:59:34 +08:00
Tianyi Cui
65fb93b666 Merge branch 'codex/simp-snapshot-fixture-inventory' into codex/simp-shared-acp-test-launcher 2026-07-15 20:59:33 +08:00
Tianyi Cui
60f33b03f1 Merge branch 'codex/simp-session-log-representation' into codex/simp-snapshot-fixture-inventory 2026-07-15 20:59:33 +08:00
Tianyi Cui
791e038644 Merge remote-tracking branch 'origin/master' into codex/simp-session-log-representation 2026-07-15 20:59:33 +08:00
Tianyi Cui
b045b553a9 Merge pull request #315 from deepseek-harness/codex/fix-pr172-review-findings
fix(i18n): enforce translation prompt and pairing contracts
2026-07-15 20:54:51 +08:00
Tianyi Cui
04fb43c5bd Merge branch 'codex/simp-shared-acp-test-launcher' into codex/simp-trim-hook-snapshot-noise 2026-07-15 20:50:50 +08:00
Tianyi Cui
ac6e397336 Merge branch 'codex/simp-snapshot-fixture-inventory' into codex/simp-shared-acp-test-launcher 2026-07-15 20:50:50 +08:00
Tianyi Cui
f56f39cb0f Merge branch 'codex/simp-session-log-representation' into codex/simp-snapshot-fixture-inventory 2026-07-15 20:50:49 +08:00
Tianyi Cui
1c3bb4f8a8 Merge remote-tracking branch 'origin/master' into codex/simp-session-log-representation 2026-07-15 20:50:40 +08:00
Tianyi Cui
3383c20c63 fix(i18n): refine Chinese prose and prompt validation 2026-07-15 20:39:24 +08:00
Tianyi Cui
168a3b9fe7 Merge remote-tracking branch 'origin/master' into HEAD
# Conflicts:
#	scripts/verify-translation-pairing.ts
2026-07-15 20:24:23 +08:00
Tianyi Cui
47fa26d2a0 Merge pull request #334 from deepseek-harness/worktree-windows-gates
ci: add native Windows gate lanes
2026-07-15 20:13:15 +08:00
imccyu
32cfd6c513 fix: normalize remaining Windows gate paths 2026-07-15 19:59:00 +08:00
imccyu
47858df1ef ci(windows): defer coverage lane 2026-07-15 19:58:34 +08:00
imccyu
82794c5681 ci(windows): exclude runtime smoke from static gates 2026-07-15 19:24:30 +08:00
Huanqi Cao
30a209aab5 fix(e2e): reach child quiescence before temp-dir cleanup in built-bin smokes
The acp built-bin smoke killed its child and immediately rm'd the temp
consumer dir; POSIX tolerates unlinking a live process's cwd, Windows fails
EBUSY while the child still holds its cwd and session-log handles (the CI
windows job's only red step). Await the child's exit after SIGKILL and give
both smokes' rm a brief retry for the OS handle-release lag.
2026-07-15 19:13:05 +08:00
Huanqi Cao
ae8aedb2fd fix: normalize glob paths with split(sep).join('/') on Windows
glob/globSync returns host-separator paths on Windows. Nine scripts that consume these paths for split('/'), manifest-key comparison, startsWith/includes exclusion checks, or committed-output rendering now normalize with .map(s => s.split(sep).join('/')) at ingestion. This replaces the previous replaceAll('\\\\', '/') with an explicit, self-documenting OS-separator-to-POSIX conversion.
2026-07-15 19:11:20 +08:00
imccyu
ae7b132f62 fix: launch pnpm gates without a Windows shell 2026-07-15 18:11:24 +08:00
Huanqi Cao
be4a441ecd ci(windows): non-blocking via continue-on-error; drop the warning wrapper and the demo test
The ::warning:: wrapper kept the lane job green on failure — honest
about not gating merges, but a Windows regression was visible only as
an annotation buried in the run summary. GitHub has no yellow job
state, so the choice is green+annotation (too hidden) or a red X on a
non-required job (visible, still non-blocking). Take the red X:
job-level continue-on-error, plain 'Run gates' step, one less wrapper.
The step stays on the runner's native pwsh — never shell: bash — per
the MSYS-parent leak recorded in the windows-support RFC.

Also remove the temporary Windows-only failing demo test that
exercised the wrapper's annotation path (REVERT ME commit a496b9ae).
2026-07-15 18:11:03 +08:00
Huanqi Cao
cb69ca80d6 ci(windows): run the observational gate wrapper in pwsh — an MSYS parent leaks into the suite
The lane-split merge moved the Run gates step to `shell: bash`, which
broke it twice over. First, GHA's bash shell runs with -e, so a failing
gate aborted the step before the ::warning::/exit 0 lines — the lane
went red X instead of the intended yellow warning. Second, and worse,
Git Bash as the PARENT of the gate run leaks MSYS environment into the
suite itself, producing 8 real test failures the pwsh-launched runs
(and the DSec VM runs) never saw:

- bash exports PWD; the MSYS runtime rewrites it to Windows form for
  native children, dsh-bash-local's adaptEnv passes it through, and the
  executor's MSYS bash adopts it — `pwd` prints `D:/a/...` where the
  tests (and the executor's MSYS dialect) expect `/d/a/...` (7 tests).
- cygwin enables SeBackupPrivilege on the runner's admin token; children
  inherit the enabled state, and libuv's FILE_FLAG_BACKUP_SEMANTICS read
  opens then pierce the dwShareMode=0 lock the jsonl EBUSY test holds —
  loadLive resolves instead of rejecting (1 test).

Evidence: run 28918325498 (pwsh step, pre-merge) failed only the two
hooks dispose tests since fixed by f8fd8c00; run 28921741006 (bash
step) fixed those and failed exactly the 8 above, with zero relevant
source diff between them.

Fix: run the wrapper in pwsh — a native command's failure doesn't abort
pwsh, so $LASTEXITCODE capture + ::warning:: + exit 0 works without an
errexit dance, and the gates start from a native Windows shell as they
do everywhere else Windows CI has been validated.

Docs: the windows-support RFC drops the stale continue-on-error wording
(replaced by the warning wrapper) and records the launch-environment
limitation — native shell required today; making an MSYS parent a
supported launch environment (PWD scrub in adaptEnv, privilege-explicit
tests) is a future improvement direction.
2026-07-15 18:09:38 +08:00
Huanqi Cao
007001677d ci(windows): split the Windows lane to mirror Linux's lane structure
The Windows CI was a single job running the full ci-windows inventory
(check:ci:windows), while Linux splits into 5 lanes (static/lint/coverage/
snapshot/artifacts) per the parallel-gates RFC. The single-job shape was a
transitional artifact from when Windows CI was added as a non-required
observation lane; its rationale ('keep gate parallelism modest so coverage
is not starved') conflated run-gates intra-job concurrency
(DSH_GATE_CONCURRENCY) with GitHub job fan-out — orthogonal concerns.

Split Windows into 4 lanes mirroring Linux (snapshot absent: its goldens
are Linux-recorded and self-skip on Windows). Each lane is a separate
GitHub job so a Windows regression is attributable to one lane, not
buried in one job's log. Concurrency is NOT throttled versus Linux: the
lane is non-blocking (continue-on-error), and the observational stance
is to actively expose Windows-arm issues rather than hide them behind
reduced parallelism.

- scripts/run-gates.ts: add ci-windows:static/lint/coverage/artifacts
  modes; ci-windows (full inventory) is retained as the local one-process
  entry, symmetric with Linux's ci-primary.
- .github/workflows/ci.yml: windows job becomes a matrix over the 4 lanes.
- package.json: check:ci:windows:{static,lint,coverage,artifacts} scripts.
- AGENTS.md + windows-support RFC: document the per-lane, non-blocking,
  unthrottled stance.

Verified: scripts/caohuanqi-private/run-ci.py --windows (full
check:ci:windows) — all gates green except the known hooks-claude
bridge.spec waitFor timeout (pre-existing Windows subprocess-timing
flake, unrelated).
2026-07-15 18:08:33 +08:00
Huanqi Cao
fd5931752c ci: add Windows test job (windows-2025)
Add a Windows CI job alongside the existing Linux checks.  Runs the full
test suite (without the Linux-only coverage gate) plus typecheck, lint,
doc-sync, build, hygiene, and demo smoke under PowerShell.  Developer
Mode is enabled via registry for symlink support (fs-local tests,
verify-node-next-types).

Per the windows-support RFC transition plan: step (2) — non-required
Windows CI job to observe stability.
2026-07-15 18:06:26 +08:00
Tianyi Cui
cf5d6ddf59 Merge branch 'codex/simp-shared-acp-test-launcher' into codex/simp-trim-hook-snapshot-noise 2026-07-15 17:55:06 +08:00
Tianyi Cui
0b585e1d27 Merge branch 'codex/simp-snapshot-fixture-inventory' into codex/simp-shared-acp-test-launcher 2026-07-15 17:55:06 +08:00
Tianyi Cui
e2c9048c16 Merge branch 'codex/simp-session-log-representation' into codex/simp-snapshot-fixture-inventory 2026-07-15 17:55:05 +08:00
Tianyi Cui
25a5dc35ba Refresh Cordis event API summaries 2026-07-15 17:53:51 +08:00
Tianyi Cui
a15ac13a74 Merge branch 'codex/simp-shared-acp-test-launcher' into codex/simp-trim-hook-snapshot-noise 2026-07-15 17:09:32 +08:00
Tianyi Cui
8e7cf8cc10 Update ACP launcher example path 2026-07-15 17:09:18 +08:00
Tianyi Cui
ba4b802d17 Merge branch 'codex/simp-shared-acp-test-launcher' into codex/simp-trim-hook-snapshot-noise 2026-07-15 16:57:38 +08:00
Tianyi Cui
d4bb9ce2c3 Merge branch 'codex/simp-snapshot-fixture-inventory' into codex/simp-shared-acp-test-launcher
# Conflicts:
#	examples/acp-agent/tests/acp.e2e.ts
#	examples/acp-agent/tests/escalation.e2e.ts
#	examples/acp-agent/tests/hooks.e2e.ts
#	packages/support/README.md
#	packages/support/acp-snapshot/src/harness.ts
2026-07-15 16:57:26 +08:00
Tianyi Cui
9530a4ccfc Merge remote-tracking branch 'origin/master' into HEAD 2026-07-15 16:56:19 +08:00
Tianyi Cui
53fadcce8a docs(i18n): preserve modal emphasis across pair 2026-07-15 16:56:15 +08:00
Tianyi Cui
c6731b4db3 Merge branch 'codex/simp-session-log-representation' into codex/simp-snapshot-fixture-inventory 2026-07-15 16:56:14 +08:00
Tianyi Cui
7d4fd14a1c Merge remote-tracking branch 'origin/master' into codex/simp-session-log-representation
# Conflicts:
#	docs/rfc/implemented/feature/2026-07-14-time-context-plugin.i18n.yaml
2026-07-15 16:56:04 +08:00
Tianyi Cui
5ee9217146 Merge pull request #325 from deepseek-harness/worktree-demo-move
refactor: relocate demo app bundles to packages/examples/*-demo
2026-07-15 16:49:41 +08:00
Tianyi Cui
125586625d Merge branch 'codex/simp-shared-acp-test-launcher' into codex/simp-trim-hook-snapshot-noise 2026-07-15 16:49:07 +08:00
Tianyi Cui
a6f64f559d Merge branch 'codex/simp-snapshot-fixture-inventory' into codex/simp-shared-acp-test-launcher 2026-07-15 16:49:07 +08:00
Tianyi Cui
d724992a4c Merge branch 'codex/simp-session-log-representation' into codex/simp-snapshot-fixture-inventory 2026-07-15 16:49:07 +08:00
Tianyi Cui
c7a16a1bbd Merge remote-tracking branch 'origin/master' into codex/simp-session-log-representation 2026-07-15 16:49:07 +08:00
imccyu
6c2b86b5f2 fix: point node-mode launcher at the renamed dsh-jsonrpc-demo package
_node_launch_args builds the launcher path from segments, so the package
rename to dsh-jsonrpc-demo did not reach it via the path sweep. A freshly
deployed node closure ships @deepseek-ai/dsh-jsonrpc-demo, so node mode
raised FileNotFoundError. The docstring and exe ENTRY_BIN already use the
new name.
2026-07-15 16:46:05 +08:00
imccyu
6dde9f70f0 fix: satisfy doc gates after the examples/ relocation
Repair cross-group README links whose targets changed groups
(ui/jsonrpc, ui/app-boot -> examples; examples/* -> ui seams),
re-record the bilingual-pair consistency hashes for the docs the
rename touched on both language sides, and condense the AGENTS.md and
packages/README.md group entries. The packages/README ceiling rises
710 -> 760 for the mandated new examples/ hierarchy row (5% headroom).
2026-07-15 16:46:05 +08:00
imccyu
e4691a2f79 fix: register the examples/ group in the tsconfig paths map
The @deepseek-ai/dsh-* wildcard maps each package name to its group's
src; the new packages/examples/ group needs its own glob, or the four
moved packages fall back to unbuilt lib/ and vitest cannot resolve them.
Also update the moved specs' plugin export-name assertions (acp-agent ->
acp-demo, stdio-agent -> stdio-demo, agent-core -> agent-spine-demo).
2026-07-15 16:46:05 +08:00
imccyu
2a48b31306 docs: rewrite group maps for the examples/ relocation
Add the packages/examples/ group README, drop the moved packages from the
core/ and ui/ group READMEs, and add the examples/ row to the packages
hierarchy table and the repo-layout in AGENTS.md.
2026-07-15 16:46:05 +08:00
imccyu
6f77da4c8c refactor: relocate demo app bundles to packages/examples/*-demo
Move the agent-spine bundle and the stdio/ACP/JSON-RPC app packages out of
core/ and ui/ into a new packages/examples/ group, renamed with a -demo
suffix so the npm name marks them as non-product surface:

  core/agent-core   -> examples/agent-spine-demo  (dsh-agent-spine-demo)
  ui/stdio-agent    -> examples/stdio-demo        (dsh-stdio-demo)
  ui/acp-agent      -> examples/acp-demo          (dsh-acp-demo)
  ui/jsonrpc-agent  -> examples/jsonrpc-demo      (dsh-jsonrpc-demo)

Update every code/config/test reference and reference-only doc mentions, and
regenerate module-graph, config-catalog, and doc-graphs. The jsonrpc bin
(dsh-jsonrpc-agent) and single-file exe (dsh-jsonrpc-agent-pkg) keep their
names; the SDK runtime-startup surface is reconciled separately.
2026-07-15 16:46:05 +08:00
Tianyi Cui
c2a0ca1927 Merge pull request #324 from deepseek-harness/worktree-windows-support
Fix: Windows build-path bootstrap: LF checkout, .cmd shims, tsc via node
2026-07-15 16:45:41 +08:00
Tianyi Cui
ad18165668 Merge remote-tracking branch 'origin/master' into HEAD
# Conflicts:
#	package.json
2026-07-15 16:40:54 +08:00
imccyu
e6e587b97d ci: add a native-Windows build lane (install + build)
Runs `pnpm install` + `pnpm run build` (tsc -b + tsdown) on windows-2025,
and is listed in all-checks-passed `needs` so a Windows build regression
cannot land silently. Windows path/shell support is still partial, so this
lane covers the build surface only; tests and gates are not run here yet.
2026-07-15 16:38:22 +08:00
imccyu
7b0310cac4 fix(scripts): run publint/tsc via node JS entry, not a shell .cmd shim
shell:true space-joins the executable and args UNESCAPED (Node DEP0190), so
an absolute .cmd path breaks whenever the repo path contains spaces and
`pnpm run hygiene` fails. Invoke publint's (`node_modules/publint/src/cli.js`)
and tsc's (`node_modules/typescript/bin/tsc`) JS entry through process.execPath
instead — no shell, extension-agnostic, identical on every platform, matching
the pattern already used by doc-typecheck.ts.

Addresses ds-review-bot on #324.
2026-07-15 16:38:22 +08:00
Huanqi Cao
65d07a490f fix(scripts): handle .cmd bin shims on Windows (CVE-2024-27980)
execFileSync on a .cmd shim returns EINVAL on recent Node without shell:true. Same bug class as install-lefthook.mjs. Affected publint-all.ts and verify-node-next-types.ts.

(cherry picked from commit 5ae40bee1c840fbbdd197ee15907aa660a343c52)
2026-07-15 16:09:12 +08:00
Huanqi Cao
4cbd722074 Declare LF and final-newline conventions in .editorconfig
Pairs with .gitattributes: eol=lf pins what git produces at checkout;
.editorconfig pins what editors write to disk - the one CRLF vector
git's filters cannot reach (git never rewrites the working tree, so an
editor-written CRLF file would persist with a clean status while the
doc gates misbehave on it). insert_final_newline declares the existing
one-trailing-newline policy (AGENTS.md, gated by git diff --check) at
the editor layer too.

(cherry picked from commit 7a09602fd76efff81a0875fb177289004c3dfc9b)
2026-07-15 16:09:12 +08:00