Skip to content

Commit 1e60dc2

Browse files
forkwrightCody Kickertz
andauthored
fix(ci): pre-stage forge-CI memory caps for Phase 05e cutover (#108)
Ship the same .kanon-ci.toml that landed in forkwright/kanon as commit 1046068b ("fix(ci,stoa): cap CI concurrency + stop env-leaking embedding into tests") — caps cargo --jobs / --build-jobs / --test-threads to 8 so a full-workspace forge CI run stays under ~25GB peak RSS instead of peaking over 100GB and OOM-killing kanon-server.service. Why now: this repo is not yet cut over to forge-native PRs, so .kanon-ci.toml is a no-op until Phase 05e brings forge CI online for forkwright/akroasis. Staging the caps ahead of cutover avoids the first post-cutover push OOMing menos (see dianoia inbox note 2026-04-19-kanon-server-oom-cascade.md and kanon#7). Config is copied verbatim from kanon's version — default Rust gate (fmt → check → clippy → nextest → lint), concurrency capped at 8 per stage, no akroasis-specific divergence. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Gate-Passed: kanon 0.1.0 Co-authored-by: Cody Kickertz <cody@forkwright.com>
1 parent 72566c1 commit 1e60dc2

1 file changed

Lines changed: 36 additions & 0 deletions

File tree

.kanon-ci.toml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Forge CI pipeline for forkwright/akroasis.
2+
#
3+
# Mirrors the hardcoded default Rust gate (fmt → check → clippy → nextest
4+
# → lint) but pins per-stage build + test concurrency to 8. Without this
5+
# cap, cargo defaults to num_cpus (64 on this Threadripper) and parallel
6+
# rustc + nextest processes peak well over 100GB of RSS — enough to OOM
7+
# menos when any other fleet work is running. 8 is the budget that keeps
8+
# a single CI run under ~25GB peak, low enough that serial drains don't
9+
# OOM even with aletheia.service and the dispatch fleet resident.
10+
#
11+
# Keep in sync with `crates/archeion/src/ci_config.rs::default_rust_gate`
12+
# when the upstream default changes — only the `--jobs` / `--test-threads`
13+
# flags should differ.
14+
15+
[pipeline]
16+
stages = ["cargo fmt", "cargo check", "cargo clippy", "cargo nextest", "kanon lint"]
17+
18+
[stages."cargo fmt"]
19+
cmd = "cargo fmt --all -- --check"
20+
timeout_secs = 300
21+
22+
[stages."cargo check"]
23+
cmd = "cargo check --workspace --all-targets --jobs 8"
24+
timeout_secs = 900
25+
26+
[stages."cargo clippy"]
27+
cmd = "cargo clippy --workspace --all-targets --jobs 8 -- -D warnings"
28+
timeout_secs = 900
29+
30+
[stages."cargo nextest"]
31+
cmd = "cargo nextest run --workspace --build-jobs 8 --test-threads 8"
32+
timeout_secs = 1800
33+
34+
[stages."kanon lint"]
35+
cmd = "kanon lint . --summary"
36+
timeout_secs = 600

0 commit comments

Comments
 (0)