Repository navigation
Cap each guarded job's CPU where the user manager delegates cpu - #158
Merged
seathatflowsinourveins merged 2 commits intoSep 24, 2026
Merged
Conversation
ecosystem-bounded-run now adds CPUQuota to the scope when the user manager delegates the cpu controller, which is systemd's default from v252. The default is (online CPUs - 2) x 100%, and ECOSYSTEM_JOB_CPU_QUOTA overrides it. Inside the scope, the job's own cpu.max must equal the request, or the runner exits 78 before the command runs, the same way it already checks memory.max and pids.max. Without cpu delegation, for example on Ubuntu 22.04, the default quota is skipped with a note while the memory, task and runtime limits still apply. An explicit quota is refused with 78, because it could not be enforced. gitleaks-guarded unsets ECOSYSTEM_JOB_CPU_QUOTA, so every scan gets the runner default. The runner is byte-identical to the authoring host's copy, and gitleaks-guarded still differs from its source only on lines 5-6. New tests: the default and an explicit quota reach cpu.max; launchers that drop or alter CPUQuota are refused with 78; the no-delegation path skips the default and refuses an explicit quota; invalid quotas are refused. Each was checked by mutation. The README records the systemd 252 precondition, what the per-job default does not throttle (the measured 8.4-core scan), and that macOS installs neither script, so it has no CPU cap. Closes the "CPU limit in ecosystem-bounded-run" needed-now item in docs/next-host-stages.md, apart from the interactive-contention comparison that page names. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
…y timeout These are the three runner mutants that survived review of #158. Each now fails a test: - a controllers list of "cpuset memory pids" must count as no cpu delegation; - instrumented CPU counts of 1, 2 and 3 must give the one-CPU floor, and 4 must give 200%; - a stalled `systemctl --user show` must be refused with 78 inside the 5 s timeout. The README completes the mutation list, and notes that hosted runners have no user manager, so the executed containment evidence comes from a host with one. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins
deleted the
claude/bounded-run-cpu-quota-20260924
branch
September 24, 2026 04:11
seathatflowsinourveins
added a commit
that referenced
this pull request
Sep 24, 2026
* Point new machines at the attested release v2026.09.24.1 v2026.09.24.1 (tag object ec94e8a -> 81385fe) carries the working plugin-install commands (#161), the guarded-job CPU cap (#158) and the release-bound no-git archive check with release_due content-drift reporting (#163). release_due --strict reports current. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Set the manifest's updated_at to the re-pin date (Codex review) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: seathatflowsinourveins <234074349+seathatflowsinourveins@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
adoption/tools/ecosystem-bounded-runaddsCPUQuotato the scope when the user manager delegates the cpu controller, which is systemd's default from v252.ECOSYSTEM_JOB_CPU_QUOTAoverrides it.cpu.maxmust equal the request, or the runner exits 78 before the command runs. This is the same pattern as the existingmemory.maxandpids.maxchecks.gitleaks-guardedunsetsECOSYSTEM_JOB_CPU_QUOTA, so every scan gets the runner default.gitleaks-guardedstill differs from its source only on lines 5-6.ecosystem-bounded-run" needed-now item indocs/next-host-stages.md, apart from the interactive-contention comparison that page names.adoption/tools/README.md.TRUST_PATHSfile and no verdict rows (verdict-review-gatedry run:no verdict rows changed (base 8eacd8b60f1d)).v2026.09.23.2.Tests:
tests/test_adoption_guarded_runners.py,BoundedRunCpuQuotaTestsThese are local integration checks. The kernel-level quota tests are gated on a host whose user manager delegates cpu.
50%reach the job's owncpu.max.CPUQuota, run in a fresh slice so the missing-cpu.maxbranch is deterministic;37%, which hits the mismatch branch.0%,max,150,1000000%and-5%are each refused with 78.cpu.max;CPUQuotaproperty;Verification (authoring host, WSL2, systemd 255, 24 CPUs)
python3 -m unittest: 3593 tests OK (363 skipped), run in a bounded scope.tests.test_adoption_guarded_runners: 31 OK, on the containment branch.scripts/validate.pyscripts/host_receipts.py validatescripts/release_due.py --strict-if-repinned origin/main, withdue: []scripts/landscape.pyvalidate_catalogs,validate_foundationandvalidate_convergence --all-recordedbuild_verdicts,component_matrix,new_host_grand_list,gap_crosswalk,gap_wave_ledgerandbuild_ecosystem, each with--checkaudit_reports --checkzizmor --offline --persona regular --strict-collection .github/workflows: exit 0.gitleaks git --log-opts=origin/main..HEAD: no leaks.Not established
Delegate=cpu memory pidsdrop-in remedy in the README has not been run.🤖 Generated with Claude Code