From 9f1a284c1577109df5056b92263e4565532e1eab Mon Sep 17 00:00:00 2001 From: ualtinok <94532+ualtinok@users.noreply.github.com> Date: Mon, 26 Oct 2026 06:53:26 +0100 Subject: [PATCH 1/5] Worker guidance: step down vCPUs on a queue-wait refusal instead of asking Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com> --- .cortexkit/WORKER.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cortexkit/WORKER.md b/.cortexkit/WORKER.md index d929a8218..2a02328c4 100644 --- a/.cortexkit/WORKER.md +++ b/.cortexkit/WORKER.md @@ -20,7 +20,7 @@ A check that prints nothing and exits 0 is not a pass unless this guide says tha ### Build server jobs (`runon`) -- **Size the job to the work.** Each vCPU you request holds one of the server's shared slots for the whole job. A mutation loop recompiles one mutant at a time, and a single test binary uses about one core, so both use `linux,2c`. A full-suite gate uses `linux,8c` with a timeout of at most 7,200 s: jobs that small may run in a cloud sandbox when the build server is full, while larger or longer jobs wait for a server slot. +- **Size the job to the work.** Each vCPU you request holds one of the server's shared slots for the whole job. A mutation loop recompiles one mutant at a time, and a single test binary uses about one core, so both use `linux,2c`. A full-suite gate uses `linux,8c` with a timeout of at most 7,200 s: jobs that small may run in a cloud sandbox when the build server is full, while larger or longer jobs wait for a server slot. If a job is refused with `queue_wait_exceeded`, resubmit it with fewer vCPUs (down to `linux,1c`) rather than waiting or asking: a smaller job compiles slower but starts. - **Commit first, then submit, in separate steps.** The job snapshots the checkout when it is accepted. A commit sent in the same parallel step can land after the snapshot. Print `git log -1` as the job's first line so the output shows what ran. - **Keep gate scripts out of ignored paths.** The job copies tracked and untracked files, but not ignored ones, so a script under `.cortexkit/` or `target/` is missing on the server. - **Write long output to a file inside the job and print a summary.** A job that streams tens of megabytes back can lose its connection and come back with an unknown result. From d1b53b10bc90f7630e2ef7dbb38a0e56b1ad4b46 Mon Sep 17 00:00:00 2001 From: ualtinok <94532+ualtinok@users.noreply.github.com> Date: Mon, 26 Oct 2026 07:13:34 +0100 Subject: [PATCH 2/5] search-quality descriptor for worker-runon-stepdown (non-ranking) Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com> --- .../slice-descriptors/land-worker-runon-stepdown.json | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 benchmarks/aft-search/slice-descriptors/land-worker-runon-stepdown.json diff --git a/benchmarks/aft-search/slice-descriptors/land-worker-runon-stepdown.json b/benchmarks/aft-search/slice-descriptors/land-worker-runon-stepdown.json new file mode 100644 index 000000000..ebd574711 --- /dev/null +++ b/benchmarks/aft-search/slice-descriptors/land-worker-runon-stepdown.json @@ -0,0 +1,8 @@ +{ + "targeted_mechanism": "none", + "kind": "harness", + "slice_class": "non_ranking", + "fixtures": [ + "harness-goldens" + ] +} From 6204e0efdb11594620d4bd18770bfd48c6d1eeac Mon Sep 17 00:00:00 2001 From: ualtinok <94532+ualtinok@users.noreply.github.com> Date: Mon, 26 Oct 2026 07:17:12 +0100 Subject: [PATCH 3/5] Worker guidance: step down only on permit waits; wait for a job holding the workspace Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com> --- .cortexkit/WORKER.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cortexkit/WORKER.md b/.cortexkit/WORKER.md index 2a02328c4..af064add4 100644 --- a/.cortexkit/WORKER.md +++ b/.cortexkit/WORKER.md @@ -20,7 +20,7 @@ A check that prints nothing and exits 0 is not a pass unless this guide says tha ### Build server jobs (`runon`) -- **Size the job to the work.** Each vCPU you request holds one of the server's shared slots for the whole job. A mutation loop recompiles one mutant at a time, and a single test binary uses about one core, so both use `linux,2c`. A full-suite gate uses `linux,8c` with a timeout of at most 7,200 s: jobs that small may run in a cloud sandbox when the build server is full, while larger or longer jobs wait for a server slot. If a job is refused with `queue_wait_exceeded`, resubmit it with fewer vCPUs (down to `linux,1c`) rather than waiting or asking: a smaller job compiles slower but starts. +- **Size the job to the work.** Each vCPU you request holds one of the server's shared slots for the whole job. A mutation loop recompiles one mutant at a time, and a single test binary uses about one core, so both use `linux,2c`. A full-suite gate uses `linux,8c` with a timeout of at most 7,200 s: jobs that small may run in a cloud sandbox when the build server is full, while larger or longer jobs wait for a server slot. If a job is refused with `queue_wait_exceeded` while waiting on permits (`waiting_on=permits`, or an older job ahead needs more free permits), resubmit it with fewer vCPUs (down to `linux,1c`) rather than waiting or asking: a smaller job compiles slower but starts. If the refusal says an earlier job still holds your workspace, fewer vCPUs won't help: wait for that job to finish, or stop it with `bash_kill` if it is yours and no longer needed. - **Commit first, then submit, in separate steps.** The job snapshots the checkout when it is accepted. A commit sent in the same parallel step can land after the snapshot. Print `git log -1` as the job's first line so the output shows what ran. - **Keep gate scripts out of ignored paths.** The job copies tracked and untracked files, but not ignored ones, so a script under `.cortexkit/` or `target/` is missing on the server. - **Write long output to a file inside the job and print a summary.** A job that streams tens of megabytes back can lose its connection and come back with an unknown result. From cb828b112c6f4ed6434ad16102755031aa3626df Mon Sep 17 00:00:00 2001 From: ualtinok <94532+ualtinok@users.noreply.github.com> Date: Mon, 26 Oct 2026 10:49:58 +0100 Subject: [PATCH 4/5] Worker guidance: test only what changed; no mutation checks or full suites from workers Workers implement, add a test for a bug fix, run the filtered tests for the code they touched and deliver. The head integrates several deliveries and runs the full suite once. Each break check recompiled the whole crate and held a shared build-server slot, which made a single delivery take hours. Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com> --- .cortexkit/WORKER.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.cortexkit/WORKER.md b/.cortexkit/WORKER.md index af064add4..fa4106623 100644 --- a/.cortexkit/WORKER.md +++ b/.cortexkit/WORKER.md @@ -20,7 +20,7 @@ A check that prints nothing and exits 0 is not a pass unless this guide says tha ### Build server jobs (`runon`) -- **Size the job to the work.** Each vCPU you request holds one of the server's shared slots for the whole job. A mutation loop recompiles one mutant at a time, and a single test binary uses about one core, so both use `linux,2c`. A full-suite gate uses `linux,8c` with a timeout of at most 7,200 s: jobs that small may run in a cloud sandbox when the build server is full, while larger or longer jobs wait for a server slot. If a job is refused with `queue_wait_exceeded` while waiting on permits (`waiting_on=permits`, or an older job ahead needs more free permits), resubmit it with fewer vCPUs (down to `linux,1c`) rather than waiting or asking: a smaller job compiles slower but starts. If the refusal says an earlier job still holds your workspace, fewer vCPUs won't help: wait for that job to finish, or stop it with `bash_kill` if it is yours and no longer needed. +- **Size the job to the work.** Each vCPU you request holds one of the server's shared slots for the whole job. A filtered test run builds and runs one test binary, which uses about one core, so it uses `linux,2c`. Workers do not run the full suite; your head runs it once when it integrates several deliveries. If a job is refused with `queue_wait_exceeded` while waiting on permits (`waiting_on=permits`, or an older job ahead needs more free permits), resubmit it with fewer vCPUs (down to `linux,1c`) rather than waiting or asking: a smaller job compiles slower but starts. If the refusal says an earlier job still holds your workspace, fewer vCPUs won't help: wait for that job to finish, or stop it with `bash_kill` if it is yours and no longer needed. - **Commit first, then submit, in separate steps.** The job snapshots the checkout when it is accepted. A commit sent in the same parallel step can land after the snapshot. Print `git log -1` as the job's first line so the output shows what ran. - **Keep gate scripts out of ignored paths.** The job copies tracked and untracked files, but not ignored ones, so a script under `.cortexkit/` or `target/` is missing on the server. - **Write long output to a file inside the job and print a summary.** A job that streams tens of megabytes back can lose its connection and come back with an unknown result. @@ -68,5 +68,5 @@ New test files go under `src/__tests__/`. A guard fails the suite on any test fi Release snapshots are automatically prepared and validated by `release.sh` and the publish workflow, outside Git. To validate a saved snapshot without regenerating it: `node scripts/release-gate-v049.mjs --snapshot-dir --candidate`. -- Show a failing test before the fix. Show a mutation check for each fix: revert the fix, name the test that fails and paste the failure, restore, and show `git diff --stat` empty. +- Test what you changed, and only that. For a bug fix, add a test that fails without the fix. Run the filtered tests for the code you touched in one job, plus the Windows compile when you changed platform-specific code. Do not run the full suite, mutation or break checks (reverting a fix to show a test fails), or repeated runs to prove stability: each one recompiles the whole crate and holds a shared build-server slot. Your head integrates several deliveries and runs the full suite once. - If a gate could not run, say which one and why. Do not report it as passed. From 80d862dec8bd5aa6e34879e6b88a139fd45e263c Mon Sep 17 00:00:00 2001 From: ualtinok <94532+ualtinok@users.noreply.github.com> Date: Mon, 26 Oct 2026 10:50:18 +0100 Subject: [PATCH 5/5] search-quality descriptor for worker-test-minimal Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com> --- .../slice-descriptors/land-worker-test-minimal.json | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 benchmarks/aft-search/slice-descriptors/land-worker-test-minimal.json diff --git a/benchmarks/aft-search/slice-descriptors/land-worker-test-minimal.json b/benchmarks/aft-search/slice-descriptors/land-worker-test-minimal.json new file mode 100644 index 000000000..ebd574711 --- /dev/null +++ b/benchmarks/aft-search/slice-descriptors/land-worker-test-minimal.json @@ -0,0 +1,8 @@ +{ + "targeted_mechanism": "none", + "kind": "harness", + "slice_class": "non_ranking", + "fixtures": [ + "harness-goldens" + ] +}