Commit Graph
159 Commits
Author SHA1 Message Date
Tianyi Cui 9e9a95f8dc perf(ci): start runtime checks within the existing job ceiling 2026-10-05 18:21:54 +08:00
Tianyi Cui bbbe372f53 fix(ci): validate Python closure before artifact builds 2026-10-05 15:12:53 +08:00
Tianyi Cui fc072c7a5d perf(ci): bound worker job overlap without extending the critical path 2026-10-05 13:24:31 +08:00
Tianyi Cui 536aaef0b3 fix(ci): preserve workflow concurrency and portable artifact checks 2026-10-05 12:53:52 +08:00
Tianyi Cui 853ad0bb9f perf(ci): remove repeated aggregate compilation and gate work 2026-10-05 12:07:57 +08:00
Tianyi Cui 185b9c59e7 feat(release): support isolated npm channels 2026-10-03 09:20:13 +08:00
Tianyi Cui c7f66d13a6 docs(notes): prune redundant active decision records 2026-09-30 23:20:22 +08:00
Turtle e5a010be64 Merge pull request #5403 from deepseek-harness/perf/session-corpus-benchmarks
test(bench): measure Session list, search, and fork over large corpora
2026-09-30 11:13:47 +08:00
Tianyi Cui f4d8115b4a merge: master into lane-budget-inline-projects
Resolves the semantic conflict with #5331: its ci-unit gate spread
coverageTestTimeoutArgs, which this branch retires; the gate is now a
plain vitest run and the darwin lane budget reaches vitest.config.ts
through the inherited DSH_COVERAGE_TEST_TIMEOUT_MS. The ci-unit spec
cases pin that shape under both budget values.
2026-09-28 23:25:21 +08:00
turtle1999 bfcd447963 test(bench): fit Session corpus benchmark within five minutes
Keep each case at its hardest setting that fits five minutes of hosted CI:
search and fork stay at 1,000 Sessions with the longest fork sampled once,
the list runs 3 samples over 3,000 Sessions, and seeding validates authored
bodies in memory instead of a separate verification pass. The file's last
case asserts the limit; the benchmark job timeout becomes 20 minutes.
2026-09-28 23:08:19 +08:00
turtle1999 e806d9cb97 test(bench): calibrate Session corpus budgets on hosted CI
Standard two-CPU hosted runs are 2.4-3.4 times the reference machine, above
the shared reference scale, so the budgets use rounded hosted medians with
the shared 1.25 headroom. The benchmark job took 14.4 minutes with these
cases; its timeout becomes 25 minutes.
2026-09-28 22:18:58 +08:00
turtle1999 d70efffb63 test(bench): measure Session list, search, and fork over large corpora
Add a required benchmark over synthetic corpora whose per-Session length
distribution is at least a measured local DSH corpus: list at 1,000 and
5,000 Sessions, cold and built content search and stratified forks at
1,000 Sessions, all through the real SessionController on built plain-Node
workers. Raise the benchmark job timeout to 30 minutes for the added cases.
2026-09-28 21:08:18 +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
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 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 CuiandLegGasai 766e6f9176 test(ci): reject prunable Ubuntu bubblewrap URLs
The merged dependency repair in #4589 uses a recorded Launchpad build,
but #4591 also requires a regression guard against restoring the live
Ubuntu package pool. Those pool URLs disappear when versions are
superseded, even when the content digest is pinned.

Adapt LegGasai's URL guard from closed PR #4590 to the build-specific
endpoint that landed in #4589. Check the endpoint structure without
copying the current build number, version, or checksum into the test,
and reject Ubuntu pool downloads anywhere in the script so adding a
pool fallback cannot bypass the guard.

Negative controls restore the original archive URL and inject security
and ports pool fallback URLs; each fails the new guard. The original
script is restored byte-for-byte before all 44 workflow tests pass.
This adds only a static regression test, with no network calls or
changes to the download script or CI execution behavior.

Co-authored-by: LegGasai <[email protected]>
2026-09-19 12:08:11 +08:00
Yichen Jiang ed50586256 refactor(ci): remove unused Windows observational entry 2026-09-18 14:27:45 +08:00
Yichen Jiang 235db2a031 Merge remote-tracking branch 'origin/master' into worktree/windows-observational-reuse
# Conflicts:
#	.github/workflows/ci.yml
2026-09-18 14:13:26 +08:00
Turtle 5459be6656 ci: halve core-seconds in static and Windows observational lanes (#4521)
* ci: trial smaller Blacksmith static and observational runners

* ci: measure the 16-vCPU control for runner sizing

* ci: use 4-vCPU static and 8-vCPU observational runners

* ci: retain 8-vCPU static runner for completion time
2026-09-18 14:01:46 +08:00
Yichen Jiang a116bf73c6 Merge master and name combined Windows checks 2026-09-18 13:41:06 +08:00
Turtle 9d5fc30632 ci: adapt concurrency to available runner CPUs (#4518)
* ci: adapt worker pools to available runner CPUs

* ci: preserve local snapshot worker defaults

* test: isolate CI worker overrides in gate fixtures

* docs: clarify shared Windows worker limits
2026-09-18 13:17:34 +08:00
Yichen Jiang 46f7ab097f refactor(ci): reuse Windows builds for observational checks 2026-09-18 13:14:35 +08:00
Turtle 3164e3c616 ci: right-size Blacksmith runners by workload (#4489)
* ci: right-size Blacksmith runners by workload

* ci: retain static runner capacity supported by utilization

* ci: retain observational runner for peak CPU and memory demand

* ci: restore Windows build to 16 vCPU after runtime regression

* ci: trial 4-vCPU runtime packaging to reduce CPU time allocation

* ci: trial 2-vCPU Linux packaging and serial Windows tests

* ci: include Windows packaging in 2-vCPU trial
2026-09-18 12:28:51 +08:00
Turtle 3e9b6ad94e fix: authenticate and reconcile approval delegations 2026-09-15 22:12:41 +08:00
Turtle e2ae9411cb feat: support weighted approval delegation 2026-09-15 20:51:47 +08:00
Turtle 794b658401 fix(ci): address production blame approval review 2026-09-15 16:14:37 +08:00
Turtle 9cee793b90 Merge branch 'master' into turtle/blame-weighted-approval 2026-09-15 14:08:57 +08:00
Tianyi Cui aef56a3108 test(ci): align external-agent and workflow endpoint fixtures 2026-09-13 20:36:50 +08:00
Tianyi Cui 34f80b8e6e fix(workflow): close lifecycle and CI integration gaps 2026-09-13 14:47:56 +08:00
Tianyi Cui 35af8698c2 fix(workflow): execute orchestration in the sandboxed PTC runtime 2026-09-13 14:47:56 +08:00
Tianyi Cui 663a534d1f Merge pull request #3688 from deepseek-harness/policy-ci/policy-modules
refactor(ci): 分离 Issue policy 规则、GitHub IO 与生命周期
2026-09-12 13:31:13 +08:00
Turtle a0e1e11a86 Merge pull request #3996 from deepseek-harness/turtle/blacksmith-runtime-llm-e2e
ci: enable Blacksmith failover for runtime and DeepSeek e2e
2026-09-11 23:37:51 +08:00
Tianyi Cui 2eeab3e65f fix(ci): preserve trusted legacy policy during preflight rollout 2026-09-11 22:42:46 +08:00
Tianyi Cui 108c87008b fix(ci): avoid unnecessary issue policy Project reads and lifecycle runs 2026-09-11 22:42:46 +08:00
Tianyi Cui c49db8bc8c refactor(e2b): retire remote execution providers 2026-09-11 22:12:55 +08:00
turtle1999 fd0dce2f20 ci: route runtime and LLM e2e through Blacksmith failover 2026-09-11 14:51:15 +08:00
turtle1999 cef92ed40b feat(ci): weight approvals by production blame ownership 2026-09-11 14:16:24 +08:00
turtle1999 e46cb49103 fix(ci): derive Windows standby store from workspace volume 2026-09-10 23:02:21 +08:00
Chinesezjc 360354e38b Merge remote-tracking branch 'origin/master' into ci/failover-canary-leg 2026-09-09 20:04:23 +08:00
Chinesezjc 9bae613128 ci: add an opt-in canary value to the CI pool failover switches
The per-platform failover repository variables (DSH_CI_FAILOVER_LINUX and
DSH_CI_FAILOVER_WINDOWS) accept a third value alongside the existing
selfhosted routing. Set by a repository writer, the value retargets the
always-on pull-request and master lanes onto the matching hosted-runner
labels (16-core pools map to the 16-vCPU tier, standard legs to 4-vCPU);
unset or any other value keeps today's runners, so the leg is dormant until
a writer opts in - a canary path for capacity fallback, never the default.

Participating jobs: the three enterprise Linux workers, the node-compat
legs, the four Windows lanes, and the all-checks-passed verdict in ci.yml;
expected-filenames; the sandbox bwrap leg; and the two manual benchmark
matrices (4-32 vCPU tiers map to equivalents; 64/96-core rows keep the
fleet labels). Everything pinned to its own runner by spec, credential, or
host capability keeps it under every value, and the release-shaped chains
stay entirely hosted. request-review.yml was retired on master while this
work was in flight and the branch takes the deletion.

Specs pin the new branches: ci-workflow.spec.ts asserts the labels appear
in the extended selectors, and ci-compatible-selfhosted.spec.ts evaluates
the routing mode.
2026-09-09 19:02:10 +08:00
Tianyi Cui 3c4c6c3d7b fix(ci): cancel superseded PR and master validation 2026-09-09 18:20:01 +08:00
turtle1999 0d44848ba6 Rename weighted approval publisher job 2026-09-09 15:58:21 +08:00
turtle1999 1eaba2809b Remove cyborg wording from weighted approval 2026-09-09 14:28:10 +08:00
Turtle d6ed693f23 ci: remove automatic review requests 2026-09-09 12:56:06 +08:00
Turtle c4855581c3 fix: preserve weighted approval review semantics 2026-09-08 20:19:29 +08:00
Turtle 4550bb6e69 feat: enforce weighted pull request approvals 2026-09-08 19:08:08 +08:00
Turtle fe834c7f92 fix: reconcile automated review requests 2026-09-08 14:15:41 +08:00
Turtle 06c01ce2e8 Merge pull request #3684 from deepseek-harness/turtle/custom-review-ownership
chore: automate changed-file review ownership
2026-09-08 13:47:15 +08:00
Turtle e970408acd chore: automate static review ownership 2026-09-08 11:37:58 +08:00
Tianyi Cui 153d54a2f2 ci: retain shared persistent npm cache 2026-09-07 18:14:33 +08:00