Skip to content

fix: clear remaining master CI test failures - #1793

Merged
ScriptedAlchemy merged 2 commits into
masterfrom
cursor/fix-master-ci-test-failures-ad74
Sep 19, 2026
Merged

ScriptedAlchemy merged 2 commits into
masterfrom
cursor/fix-master-ci-test-failures-ad74

Conversation

@ScriptedAlchemy

Copy link
Copy Markdown
Owner

Summary

  • A progressing Codex history window was scheduled with the no-progress retry backoff, so a 33-rollout import never reached Complete inside its 30s deadline.
  • Dashboard freshness and ignored-dependency admission were sampled while a real owner pass still held reconcile_in_progress or 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

  1. completed_session_import_immediately_searches_canonical_message panicked with session import completion deadline: Elapsed(()) on both retries. Project Codex catch-up yields after one rollout, and the history worker treated every Pending { made_progress: true } window as a failure retry (250ms). Thirty-three windows do not finish before the import deadline, so status stayed accepted/joined until the test's equal 30s timeout. A pass that admitted nothing still uses that backoff.
  2. dashboard_progress_does_not_wait_for_the_scheduler_mutex failed then passed, and CI treats that as a failure (flaky-result = fail). The assertion was Some(Verifying) vs Some(Fresh). Text seating keeps reconcile_in_progress after it releases the scheduler mutex, so the sample attributed a live pass to the test's unrelated holder.
  3. The runtime job also failed ignored_dependency_waits_for_global_admission_before_publication_gate the same way (available_permits 0 vs 1). drain_clone_backfill drops 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.
  • Code-index tests: hold background admission only after the owner and pending wake are clear before the freshness sample, and wait until the single permit is free (dropping the publication gate if a worker is blocked on it) before the ignored-dependency assertion.

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 passed
  • dashboard_progress_does_not_wait_for_the_scheduler_mutex and ignored_dependency_waits_for_global_admission_before_publication_gate — each passed once, then 5/5 repeats, fail count 0
  • Full Linux CI (workflow_dispatch on master; this branch does not restore pull_request triggers)

Checklist

  • No secrets, credentials, or .env files included
  • CHANGELOG.md updated — not a user-facing release note
  • No breaking changes
Open in Web Open in Cursor 

cursoragent and others added 2 commits September 19, 2026 00:06
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>
@changeset-bot

changeset-bot Bot commented Sep 19, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: a9c8bff

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 19, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-19T00:10:10.846452Z a9c8bff PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment on lines +2924 to +2926
let available = global_admission.available_permits();
if available == 1 {
break publication;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

@ScriptedAlchemy
ScriptedAlchemy merged commit bc2ced4 into master Sep 19, 2026
25 checks passed
ScriptedAlchemy added a commit that referenced this pull request Sep 19, 2026
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants