Repository navigation
Rust unit tests run in the clippy job, non-required until measured (step 1 of retiring rust_unit_tests_off_the_merge_path) - #12450
Conversation
…retire rust_unit_tests_off_the_merge_path Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
CI measurement 1 — run 36351584784, job 108711170756 (hosted ubuntu-24.04-arm). Lint: 1m22s. Unit-test step: release build 6m24s, then 1155 tests (101 ignored). 575 had passed after 37 min when the 45-min job timeout cancelled it. The cgroup bind held: memory.max read back 12884901888, and Six --lib tests are already red on main (they drifted while the tests were off the merge path): So the drop's retirement is not yet honest: there is no complete wall measurement, and the population is not green. Escalated to the parent for the route. |
… clippy timeout so it completes once to be measured; drop stays Standing (ruling neat-boar-16) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
CI measurement 2: the complete wall. Head 7f06993, job 108723251802, hosted ubuntu-24.04-arm (4 vCPU / 16 GiB). The lint took 1m17s. The Result: 1155 tests, 992 passed, 8 failed, 155 ignored. The step is non-required, so the job concluded success. The 8 red. Six are the ones already routed. Two are new, because the first run never reached them:
Top 20 by time. These are approximate: each figure is the gap between one test's completion line and the previous one's in the log. Tests run in parallel, so a gap is a lower bound on that test's own time, and stable cargo has no per-test report.
Almost all of these are |
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. |
… (step 36m53s); step stays NON-required until the 8 reds are green (ruling neat-boar-16) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Head a0da5bb: clippy job timeout is now 60 min, down from 120. That leaves margin over the measured 38m25s job (the unit-test step took 36m53s; the full measurement is in the earlier comment). The
|
…sts; cite the measuring run, not its numbers (review 71958) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Commit
— sent from neat-ant-823 |
…nt at the GHA field (review 71977) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Commit
— sent from neat-ant-823 |
…host effect via the bash emitter (#5828) (review 72000) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Commit
— sent from neat-ant-823 |
briansrls
left a comment
There was a problem hiding this comment.
Verdict: APPROVE ebf69a5
No blocking finding for the explicitly ruled non-required observation step. The emitted rust_unit_tests step consumes repo_self_test_command after the required lint; continue-on-error is attached to that step, not to lint or the whole job. Its wrapper retains the actual command exit and failure receipt. The shared cgroup bind sets memory.max before moving the invoking shell into the leaf, so this is a real inherited bound rather than a planning override. The heal publisher retains its original bind sequence through the shared producer. The shell dissolution condition names the capability that replaces both callers.
The source and emitted workflow agree on a 60-minute clippy job timeout, not the stale 120-minute statement in the PR body. The measured complete earlier job was 38m25s; the recorded 992 passed / 8 failed / 155 ignored result is not a green test population. The Standing rust_unit_tests_off_the_merge_path drop is correctly NOT retired here, and DESIGN names the non-required status. A future required-step promotion still owes a green population and the acceptance-path cost/runner conditions. Job-level timeout or cancellation is not neutralized by a step's continue-on-error and must not be described as such.
Evidence limitation: completion-line gaps from parallel tests are not established per-test durations, so I do not credit the approximate top-20 table as a per-test cost profile. That does not invalidate the independently reported complete step/job wall or this observation-only enrollment. Exact-head workflow 36369118298 succeeded; that success is not a claim that the optional unit tests passed. Source/recorded-evidence review, no independent local rerun.
…ool when its block ends Reproduced the CI unit-step stall under the hosted runner's exact bind (a 12 GiB memory.max cgroup leaf, 24 GB BuildBuddy runner): - 7.6 GiB of freed-but-retained heap from earlier tests' glibc arenas sat under the first claim, and the pool built on top of it was OOM-killed. trim_retained_heap (the existing malloc_trim instrument) now runs before and after each claim: 1.4 GiB under the first claim. - The ~5.2 GiB pool then outlived its block and the next test's own regen-pool index was OOM-killed on top of it. The thread now exits after LIVE_POOL_IDLE_RELEASE (2s) with no claim, dropping the pool; a later claim rebuilds it. Send and exit share one lock, so no claim is lost to the exit. New control: the_live_pool_is_released_when_its_block_of_claims_ends. Full suite under the bound: 1006 passed, 7 failed (6 on #12450's list of reds on main; the_authority_entry_resolves_from_a_non_root_cwd passed on hosted CI at 7c2d8ce and is not on this path), 529.6s, memory.events max=0 oom=0. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Operator ruling 2026-09-27; sequencing per neat-boar-16's ruling.
gunbc.compiler_gate_workflow: newrust_unit_testsstep after "Lint every target" in theclippyjob. It runsrepo_self_test_commandinside a cgroup leaf with memory.max = 12 GiB, so the regeneration-host tests read a real bound; there is no GUNBC_MEMORY_BUDGET_BYTES. The step is NON-required (continue-on-error) and the clippy job's timeout is 120 min, so the step can finish once and be measured.gunbc.ci_spec: the bind sequence is now one function,hosted_runner_memory_cgroup_bind_commands, shared with the heal publisher (heal-publish.yml byte-identical).gunbc.design_document. It now names where clippy actually runs and says the unit tests run non-required.rust_unit_tests_off_the_merge_pathstays Standing. It retires in the follow-up that makes the step required, after the 6 red tests on main are fixed (routed separately) and the full wall is measured.The brief named
required-witnesses-build/witness_floor_workflow. That job no longer exists, so the step lives ingunbc.compiler_gate_workflow'sclippyjob.Measurements: see comments (run 1 was cancelled at the old 45-min cap; the full wall + top-20 follow).
🤖 Generated with Claude Code