Commit Graph

70 Commits

Author SHA1 Message Date
Tianyi Cui
cd19f87c3f ci: name split Linux lane precisely 2026-07-22 15:57:32 +08:00
Tianyi Cui
0f57eafc36 ci: collapse cold setup waves 2026-07-22 15:44:11 +08:00
Tianyi Cui
990f82b85c ci: tune consolidated runner concurrency 2026-07-22 15:17:17 +08:00
Tianyi Cui
3db0b71f91 ci: consolidate gates on large runners 2026-07-22 15:04:24 +08:00
Tianyi Cui
03348aa382 ci: parallelize aggregate lint 2026-07-22 14:53:46 +08:00
Tianyi Cui
e65ea9bdbc ci: benchmark consolidated hosted gates 2026-07-22 14:42:43 +08:00
Tianyi Cui
95abe24cb7 ci: give snapshot lanes eight cores 2026-07-22 14:28:32 +08:00
Tianyi Cui
da1bee87c7 ci: use four-core hosted runners 2026-07-22 14:13:49 +08:00
Tianyi Cui
753d168bb1 ci: benchmark larger hosted runners 2026-07-22 13:55:51 +08:00
Tianyi Cui
ab1c24301a ci: rebalance hosted concurrency budget 2026-07-22 00:44:48 +08:00
Tianyi Cui
5bb594c400 ci: avoid hosted runner setup saturation 2026-07-22 00:39:58 +08:00
Tianyi Cui
109224af5d ci: quarter cold-cache lint lanes 2026-07-22 00:31:25 +08:00
Tianyi Cui
070d23d663 ci: keep cold-cache lanes bounded 2026-07-22 00:22:06 +08:00
Tianyi Cui
624d71aea6 ci: harden runner preparation caches 2026-07-22 00:11:48 +08:00
Tianyi Cui
710f062586 ci: add snapshot lane headroom 2026-07-21 23:56:53 +08:00
Tianyi Cui
e887c0f7c0 ci: assign session title coverage 2026-07-21 23:36:35 +08:00
Tianyi Cui
efba4c259b ci: split model and integration coverage 2026-07-21 23:25:52 +08:00
Tianyi Cui
9568f9ee27 ci: split Windows build and site validation 2026-07-21 23:18:49 +08:00
Tianyi Cui
06f3b246b5 ci: add serial cross-platform reference runs 2026-07-21 23:03:52 +08:00
Tianyi Cui
e4c56b35e8 ci: add tail-lane headroom 2026-07-21 22:00:34 +08:00
Tianyi Cui
311cbe1e4c ci: rebalance final boundary lanes 2026-07-21 21:49:35 +08:00
Tianyi Cui
89add445fe ci: split boundary lanes 2026-07-21 21:39:51 +08:00
Tianyi Cui
ca0c9a7c48 ci: restore hosted lane headroom 2026-07-21 21:28:49 +08:00
Tianyi Cui
7813dbcf0f ci: bound hosted fanout 2026-07-21 21:14:55 +08:00
Tianyi Cui
25f9035ecd ci: split remaining one-minute lanes 2026-07-21 21:05:39 +08:00
Tianyi Cui
3d96508244 ci: restore hosted-run headroom 2026-07-21 20:51:28 +08:00
Tianyi Cui
91bd51c23a ci: add coverage lane headroom 2026-07-21 20:32:57 +08:00
Tianyi Cui
f1202d0dd8 ci: enforce bounded build lanes 2026-07-21 20:15:09 +08:00
imccyu
47858df1ef ci(windows): defer coverage lane 2026-07-15 19:58:34 +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
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
Yichen Jiang
cdd11ac587 ci: validate and publish Python runtime wheels 2026-07-13 16:34:16 +08:00
kingwl
ca39fd89b0 feat(example): sandbox-acp-agent — the live composition; RFCs to implemented
The three-entry cordis.yml (dsh-sandbox-local + dsh-bash-sandbox at a
read-only default + dsh-approval) served over ACP: the first live approval
composition. Recorded snapshot scenarios pin the wire end to end —
config-options advertisement, the mode-switching arc as the suite pinned
header (both switches, the prompt-section delta, one changed-by-the-user
notice per knob, a confined write landing under the switched mode), and
both escalation branches over scripted permissionAnswers (a grant runs
confined under workspace-write; a rejection executes nothing and pins the
fail-closed text). The with-key escalation e2e drives a real model +
real runner + the real bridge answerer, world-verified; ci.yml snapshot
lane and e2e.yml install bubblewrap so the confined replays actually
execute.

Both RFCs move to implemented/ (Decision/Consequences form, deferred
phases tracked in their own sections), with every cross-reference flipped.
2026-07-10 15:44:38 +08:00
Tianyi Cui
2be0b9266c ci: add all-checks-passed aggregate job for branch protection
A single stable required check that needs every other job in ci.yml, so
branch protection no longer enumerates matrix leg names that change as
lanes and node versions evolve. if: always() keeps the job running when
a dependency fails (a skipped required check would count as passing);
any non-success result — failure, cancelled, or skipped — fails it.
2026-07-08 10:57:25 +08:00
imccyu
92b5eccc96 build: upgrade to 22.19 for deps 2026-07-07 17:39:04 +08:00
imccyu
f33e14ff19 build: lower the Node engines floor to 22.18 2026-07-07 17:15:41 +08:00
Tianyi Cui
1b9408268b ci: cache eslint lane 2026-07-06 03:07:35 +08:00
Tianyi Cui
d71c96a44c ci: keep lint lane serial 2026-07-06 02:59:50 +08:00
Tianyi Cui
09326fd84a ci: split lint lane internally 2026-07-06 02:56:23 +08:00
Tianyi Cui
133be74b15 ci: tune static lane concurrency 2026-07-06 02:46:58 +08:00
Tianyi Cui
5efc449af0 ci: keep static lane source-only 2026-07-06 02:43:42 +08:00
Tianyi Cui
2d80d868be ci: isolate lint and tune coverage lane 2026-07-06 02:39:26 +08:00
Tianyi Cui
7cd4868056 ci: split primary gates into broad lanes 2026-07-06 02:22:22 +08:00
Tianyi Cui
0452261b5b Merge parallel pre-push gates into CI scheduler 2026-07-06 01:47:13 +08:00
Tianyi Cui
08e09217bf docs(rfc): record parallel GitHub CI gates 2026-07-06 01:04:06 +08:00
Tianyi Cui
80358aed9f ci: parallelize github workflows 2026-07-06 00:15:19 +08:00
Tianyi Cui
8caf923196 docs(graphs): verify mermaid syntax 2026-07-03 01:32:01 +08:00