fix: clear remaining master CI test failures - #1793
Conversation
A Codex catch-up yields after one rollout. Treating that yield as a failure retry inserted a 250ms backoff between every window, so a 33-rollout import never reached Complete inside its 30s deadline. Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Text seating keeps reconcile_in_progress after it drops the scheduler mutex, and a follow-up pass can still hold the only admission permit. Both reads then look like a source refresh that the test did not start. Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a9c8bffc7b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| let available = global_admission.available_permits(); | ||
| if available == 1 { | ||
| break publication; |
There was a problem hiding this comment.
Ensure the request owns the observed admission permit
When a background Notify permit remains after clear_pending_wake_for_scope, the worker can wake after this check, acquire the sole semaphore permit, and block on the held publication gate. The later wait for available_permits() == 0 then succeeds even though request_task has not acquired admission, because the mount worker acquires admission before the publication lock and only sets reconcile_in_progress afterward. Thus the test can falsely pass for the ordering regression it is meant to detect; synchronize on the request's acquisition or otherwise distinguish the permit owner.
AGENTS.md reference: AGENTS.md:L165-L167
Useful? React with 👍 / 👎.
Keeps #1793's history-worker continuation (a progressing window no longer pays the no-progress backoff) and takes this branch's versions of the two reconcile tests it also touched: the lane's fencing burns the banked wake permit and waits for the pass tail, which is the hole Codex's review flagged on #1793's variant. Its unused helper is dropped with it. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Summary
Completeinside its 30s deadline.reconcile_in_progressor the only background permit. Both reads are fail-if-flaky, so one lost race failed the runtime job.Motivation
Master tip
babfb9b67c(after #1789 and #1790) is red on CI run 35402148043. Failed jobs: Test Linux root-transport, Test Linux runtime, Test Linux aggregator. This does not touch prove MCP tool PRs or.github/workflows/ci.yml.What was wrong
completed_session_import_immediately_searches_canonical_messagepanicked withsession import completion deadline: Elapsed(())on both retries. Project Codex catch-up yields after one rollout, and the history worker treated everyPending { made_progress: true }window as a failure retry (250ms). Thirty-three windows do not finish before the import deadline, so status stayedaccepted/joineduntil the test's equal 30s timeout. A pass that admitted nothing still uses that backoff.dashboard_progress_does_not_wait_for_the_scheduler_mutexfailed then passed, and CI treats that as a failure (flaky-result = fail). The assertion wasSome(Verifying)vsSome(Fresh). Text seating keepsreconcile_in_progressafter it releases the scheduler mutex, so the sample attributed a live pass to the test's unrelated holder.ignored_dependency_waits_for_global_admission_before_publication_gatethe same way (available_permits0 vs 1).drain_clone_backfilldrops the permit, and the following pass can still own it when setup locks the publication gate.Changes
session_temporal_refresh_scheduler/worker.rs: continue a progressing history window immediately; keep the 250ms backoff for no-progress and retryable passes.Test plan
cargo test -p tracedecay --features test-transport --test mcp_suite completed_session_import_immediately_searches_canonical_message -- --exact— 1 passed in 20.40s (was a 30s timeout on CI, both retries)scripts/require-exact-test.sh cargo test -p tracedecay-session-runtime --lib ...a_progressing_history_window_continues_without_the_retry_backoff -- --exact— 1 passeddashboard_progress_does_not_wait_for_the_scheduler_mutexandignored_dependency_waits_for_global_admission_before_publication_gate— each passed once, then 5/5 repeats, fail count 0Checklist
.envfiles includedCHANGELOG.mdupdated — not a user-facing release note