Skip to content

Skip every Pass during GitHub Quota waits - #2006

Merged
JacobStephens2 merged 8 commits into
issue-1994from
issue-1996
Nov 11, 2026
Merged

JacobStephens2 merged 8 commits into
issue-1994from
issue-1996

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Nov 11, 2026 •

Copy link
Copy Markdown
Owner

Summary

Every Pass checks the machine's Quota wait and both GitHub quota reserves before remote preparation or taking a Command-limit slot.

Pass
  current Quota wait → skip
  REST core or GraphQL below 500 → record wait → skip
  non-quota probe failure → continue
  Command limit → normal work

Skips exit 0 with no stdout or Run notification. Activity reasons deduplicate per Pass kind, including alternating named Custom processes. status and the Inbox display the machine's wait until reset; open Inbox pages update at reset. The manual and hand-written pages describe skips and the quota budget shared by one GitHub user across hosts.

Closes #1996

Evidence

Execution evidence

Test seams: the CLI binary against fake gh, real Git and the email stand-in; the Console's HTTP Inbox and SSE change stream.

  • Before: cargo test --test pass_quota failed: Architect began an Architecture review during the low-quota case and returned Some(1) instead of Some(0).
    After: the quota regression matrix passes for all seven Pass kinds, both resources, recorded waits, exactly 500, reset recovery, non-quota failures and exhaustion. The same whole-file command passed: 6 passed; 0 failed; 1 ignored (the ignored case is a subprocess fixture entry point).
  • Before: cargo test --test pass_quota unchanged_quota_wait_deduplicates_alternating_custom_processes -- --exact --nocapture failed: quota line count 3, expected 1.
    After: the same command passed: 1 passed; 0 failed.
  • Before: cargo test --test pass_quota unchanged_quota_wait_deduplicates_process_names_with_spaces -- --exact --nocapture failed: quota line count 2, expected 1.
    After: the same command passed: 1 passed; 0 failed.
  • npm run docs:check --prefix site passed. cargo test --locked --test pickup_model -- --nocapture passed its claimed-dispatch checks and retained known literal-property counterexample; this does not prove the broader literal property.
  • CI then exposed unchanged quota-record writes waking the Inbox. Before: cargo test --test console github::github_issue_closure_wakes_needs_you_and_status_reuses_the_answer -- --exact failed with unchanged read woke the Inbox: event: commands. After: the same command passed, 1 passed; 0 failed; all 13 Inbox GitHub-refresh regressions also passed.
  • CI initially found old assertions that admission made no gh calls. They now permit only the required quota probe; 15 affected admission regressions pass.
  • Before: cargo test --test console github::relearning_quota_identity_without_a_wait_keeps_the_inbox_idle -- --exact failed with identity bookkeeping woke the Inbox: event: commands. After: the same command passed, and the full 13-case Inbox GitHub-refresh group passed.
  • A foreign parent XDG_CONFIG_HOME reproduced the initial-wait fixture failure. The Console fixture now uses the same isolated auth/config environment as the CLI; the entire 13-case Inbox group passes under that foreign parent environment.
  • CI timed out waiting for an existing phone Dismiss notice to expire. The exact case passed locally: node --test --test-name-pattern='^Inbox row Dismiss works in ready for review with JavaScript on a phone$' console/tests/inbox.test.cjs (1 passed; 0 failed), using the immutable binary and installed Chromium. The full local Console browser suite passed, and the failed CI Console job passed on retry. All applicable CI checks are green on 1839371c.
  • CI Rust validation passed on 1839371c: formatting, clippy, and 4,202 passed; 0 failed; 98 skipped in nextest (1,513.179 seconds for test execution, plus compilation).
  • scripts/affected-tests main passed (exit 0): Go, Python, TypeScript typecheck/tests, 68 site browser tests, 190 Console browser tests, all 4,202 Rust tests (98 skipped), and the release-generator tests. Total wall time was 3,957.03 seconds; the Rust command took 3,339.39 seconds including compilation, with 3,272.755 seconds of test execution. Local Rust used three test threads; Console browser tests used two files at a time and an immutable binary through THIRDSHIFT_BINARY. Go 1.24.5, Bun 1.4.4 and Chromium were installed for the selected checks.

Visual evidence

Inbox, 1440×900

Before

After

Inbox, 390×844

Before

After

User manual, 1440×900

Before

After

User manual, 390×844

Before

After

Review

Reviewed against refs/remotes/origin/issue-1994 (f55519a7105ebd45631dc92bdfca15b3b05a6fd3): Standards raised 2 findings, both addressed; Spec raised 1 finding, addressed with both reproducer tests retained.

Final review coverage: Standards read 25 of 30 changed files; src/logs.rs, src/github/quota/store.rs, tests/architect_run.rs, tests/pickup_run.rs and tests/process.rs remained unread on that axis. Spec covered 26 of 30 final changed files; the later amendment to src/github/quota/store.rs, tests/architect_run.rs, tests/pickup_run.rs and tests/process.rs remained unread. These amendments followed the single coverage follow-up. Later CI amendments to already-read src/console/changes.rs and tests/console/github.rs were not re-reviewed. Both axes inspected the generated manual; no generated-output exclusions.

Unaddressed findings

Standards

None.

Spec

None.

Security

None.

Security review outcome

No unaddressed introduced findings.

Merge Danger

Door: two-way

Reverting restores prior Pass admission. The shared Quota wait record format is unchanged.

Blast Radius: Passes

Admission affects every unattended or manually started Pass on the machine; quota probe failures unrelated to exhaustion preserve normal work.

Built with codex codex-cli 0.167.1 · gpt-6.1-sol · xhigh

@JacobStephens2
JacobStephens2 merged commit 14bda78 into issue-1994 Nov 11, 2026
19 of 20 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-1996 branch November 11, 2026 06:02
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.

1 participant