Repository navigation
convergence F: cores_per_slot = 1 per operator ruling (CPU does not bind width) - #11746
Closed
gunbai-bot[bot] wants to merge 5 commits into
Closed
gunbai-bot[bot] wants to merge 5 commits into
gunbai-bot[bot] wants to merge 5 commits into
Conversation
…PUQuota stays unset Operator ruling, 2026-09-19, verbatim: "there is no CPU demand - the processes we run are single core - do NOT overthink it please". gunbc.runner_slot_allocation: cores_per_slot is an authored POLICY of 1 (gunbc_runner_cores_per_slot_policy), not derived from memory_max and not from a vendor price list. The memory-per-core ratio path is deleted with its refusal vocabulary (RunnerMemoryPerCoreResolution incl. the unreachable MemoryPerCoreUnresolved arm, RunnerCoresPerSlotResolution, the survey imports). The CPU axis admits 128 and stops binding; committed widths become the memory admissions: srv1 15, srv3/srv4 17. host_cpu_admitted_width and the derived width lose their unreachable unresolved arms. cpu_quota was derived from cores_per_slot and would have rendered CPUQuota=100% -- a throttle on parallel link/codegen the ruling did not ask for. RunnerSlotCpuQuota's refusing arm (no producer left) becomes SlotCpuQuotaUnbounded, the production value. The unset is affirmative so a previously installed finite quota is CLEARED, not merely no longer emitted: extdeps.systemd.unit_file gains DirectiveReset (the empty assignment that systemd.resource-control(5) documents as CPUQuota's unset) and slice_cpu_quota_unbounded(); host_converge renders the per-slot drop-in knob as `CPUQuota=` under RunnerCpuBoundary::NoCpuCeiling; fabric_cell_effect always emits six directives with `CPUQuota=` as the sixth; the fabric cell desired digest spells unbounded through extdeps.systemd's systemd_cpu_quota_unbounded_identity so a host printing `infinity` reconciles as satisfied. ci_runner_placement's boundary now follows the slot's cpu_quota rather than re-deriving from cores_per_slot. cpu_weight=100 unchanged. Witnesses migrated to the policy: the vendor-ratio rows are deleted with their subject; committed widths pin 15/17/17 == memory admission with CPU at 128; both quota arms are driven by fixture; the sudoers witness asserts `CPUQuota=` and no `%` grant. Sudoers projections regenerated through generated_artifact_gate main_wet. Pre-existing reds not introduced here: five rows of test.claim.host_allocation_conservation pin 16 GiB-era widths and FAIL identically on a clean main ancestor (7261964); outside the required gate. Supersedes #11684. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… blocked; narrow the % clause - Merge origin/main so the heal job's dag/gunbc/heal_candidate.dag entry resolves on this branch. - F-R1/F-R2: the CPUQuota= reset is a declared representation. Clearing a previously installed finite quota is EXPLICITLY BLOCKED on both paths, with cause and trigger named at gunbc.fabric_cell_effect (MemberChanged -> CellChangeNotYetRealizable; trigger: change_realization admitting a bounded resource-boundary change) and gunbc.host_converge (CPU drop-in not in the actuated managed set, no CPUQuotaPerSecUSec readback verdict; trigger: enrol + bind readback). No new apply machinery. - F-R3: only the CPU-survey refusal path is deleted; the memory-side unknown/zero conflation in gunbc_runner_slots_per_host keeps its owner and RunnerWidthResolution trigger. Reason row: 'no finite ceiling is declared; the reset is emitted'. - review 68479: the sudoers negative is a line-terminal %. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The srv4 runner-unit census is evidence about srv4's runner units; other units and the fabric boundary need their own readback, and this PR does not establish fleet-wide quota conformity. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The five retirement rows drove srv4-13 / srv1-13 as the first surplus slot while the fleet committed 12. At 17/15 those are members, so the rows were exercising membership, not retirement, and went red on the required floor. The obligation itself is derived (runner_width_transition: committed + 1 .. prior_width), so only the fixtures move: srv4-18/19, srv1-16. 36/36 PASS scoped. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
briansrls
marked this pull request as ready for review
September 19, 2026 22:46
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. |
Contributor
Author
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.
Auto-opened by session-dashboard for session
sharp-heron-93.Pushing to
session/sharp-heron-93advances this PR.Worker attestation
Before flipping this PR to ready for review, confirm each item:
npm test,cargo test) and the result.Closes #Ndirective.Summary
TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.
Test plan