Commit Graph

86 Commits

Author SHA1 Message Date
imccyu
e1cb3da755 refactor(vitest): resolve every lane through the tsconfig.base.json facade
tsconfig.vitest.json is deleted; its job (a paths map applying to all
test files) is inherent in tsconfig.base.json having no include —
vite-tsconfig-paths treats that as match-all. All four vitest configs
now pin the same facade: the unit config gains a shared pathsPlugin()
helper, the web lane drops its handwritten webserver alias (apps/web
tests are covered by match-all), and the snapshot lane leaves the root
solution (which no longer carries paths) and stops resolving client
imports through package exports. tsconfig.base.json documents the
facade role and bans include/files; the CI eslint cache key hashes the
four graph tsconfigs; the eslint tests-block comment states resolution
via the solution to tsconfig.host.json.

Per missions/tsconfig-single-graph-migration.md §3.
2026-07-23 03:59:06 +08:00
Tianyi Cui
3c397e594f ci: remove critical setup variance 2026-07-22 20:29:33 +08:00
Tianyi Cui
dcf9eee3c5 ci: bound Linux gate contention 2026-07-22 20:19:56 +08:00
Tianyi Cui
9b8320cb94 ci: remove the final Linux lint tail 2026-07-22 20:06:50 +08:00
Tianyi Cui
a952aaed72 ci: trim remaining hosted setup 2026-07-22 20:00:15 +08:00
Tianyi Cui
17983d72bb ci: use process-safe coverage pools 2026-07-22 19:37:45 +08:00
Tianyi Cui
02f6d919c8 ci: remove primary setup overhead 2026-07-22 19:13:07 +08:00
Tianyi Cui
cbbef79fa3 ci: retune consolidated jobs for stacked workload 2026-07-22 19:00:55 +08:00
Tianyi Cui
da5a1fc811 ci: separate master serial and PR jobs
Skipped matrix jobs never expand matrix display values, so let GitHub use stable job identifiers. Bind optimized jobs to pull requests and the three serial references to master pushes.
2026-07-22 18:17:06 +08:00
Tianyi Cui
41609c4ce4 ci: consolidate primary checks on one larger runner 2026-07-22 17:53:01 +08:00
Tianyi Cui
8739abdbfe Merge origin/master into worktree/ci-under-minute 2026-07-22 17:15:46 +08:00
Tianyi Cui
d7e0104a72 ci: unpack bubblewrap without package transaction 2026-07-22 16:45:59 +08:00
Tianyi Cui
b63e6ee72d ci: bound coverage worker forks 2026-07-22 16:26:25 +08:00
Tianyi Cui
9d81078f2f ci: split primary cold-path budget 2026-07-22 16:10:52 +08:00
Tianyi Cui
c67ae11f78 ci: stabilize compatibility runner setup 2026-07-22 16:02:52 +08:00
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
3a82b3edd7 ci(windows): observe runtime coverage and snapshots
docs: record cross-platform gate boundaries
2026-07-18 12:40:13 +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