)
* fix: bypass rate-limit-only Gate cancellations - continue work immediately
Rate limits are infrastructure noise, not code quality issues. When Gate
is cancelled only due to API rate limits (not actual test failures),
the keepalive loop should proceed with work immediately rather than
deferring or waiting.
This change:
- Detects when Gate cancellation was due to rate limits only
- Immediately continues with 'run' action instead of 'defer'
- Sets reason as 'bypass-rate-limit-gate' for tracking
- Preserves the defer fallback only for non-rate-limit cancellations
This prevents PRs from getting stuck in 'defer' state waiting for
scheduled retry workflows when the underlying issue is just
temporary rate limiting from GitHub APIs.
Affected PRs (examples):
- #696, #698, #699 were stuck with 'gate-cancelled-rate-limit-transient'
* Update .github/scripts/keepalive_loop.js
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix: always install dev tools in CI regardless of lock file presence (#704)
The reusable CI workflow had a bug where it assumed dev tools (black,
ruff, mypy, pytest, etc.) were included in consumer repos' lock files.
This caused CI failures with 'black: command not found' errors.
Root cause: When has_lock_file=true, the workflow only recorded tools
as 'from lock' for reporting but didn't actually install them. Consumer
repos' lock files only contain runtime dependencies, not dev tools.
This fix:
- Always installs dev tools (black, ruff, mypy, pytest, etc.)
- Removes the has_lock_file conditional for tool installation
- Lock files still work for runtime dependencies
- Affects all 4 CI jobs: lint-format, lint-ruff, typecheck-mypy, tests
Impact: Fixes CI failures in Travel-Plan-Permission, Template,
trip-planner, Collab-Admin and all other consumer repos with lock files.
* fix: Update tests to expect rate limit bypass behavior
Tests now expect action='run' with reason='bypass-rate-limit-gate' instead
of action='defer' with reason='gate-cancelled-rate-limit'.
Rate limits are infrastructure noise, not code quality issues. Work
should proceed automatically when Gate cancellation is due to rate limits.
Rate limit bypass takes precedence over forceRetry since:
1. Rate limit bypass is automatic infrastructure handling
2. forceRetry is still honored for non-rate-limit cases (cancelled, failed)
* fix: Update Python rate limit test to expect bypass behavior
Aligns with JS test updates - rate limits are infrastructure noise
that should be bypassed immediately rather than causing deferrals.
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Automated Status Summary
Scope
Part of Phase 3 workflow rollout validation per langchain-post-code-rollout.md.
Context for Agent
Design Decisions & Constraints
Related Issues/PRs
References
Blockers & Dependencies
Tasks
Acceptance criteria