fix: always install dev tools in CI regardless of lock file presence#704
fix: always install dev tools in CI regardless of lock file presence#704
Conversation
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.
Automated Status SummaryHead SHA: cd966a2
Coverage Overview
Coverage Trend
Top Coverage Hotspots (lowest coverage)
Updated automatically; will refresh on subsequent CI/Docker completions. Keepalive checklistScopeNo scope information available Tasks
Acceptance criteria
|
🤖 Keepalive Loop StatusPR #704 | Agent: Codex | Iteration 0/5 Current State
🔍 Failure Classification| Error type | infrastructure | |
There was a problem hiding this comment.
Pull request overview
This PR fixes CI failures in consumer repositories that have lock files by ensuring dev tools (black, ruff, mypy, pytest, etc.) are always explicitly installed, rather than incorrectly assuming they're included in the lock file. The previous logic would mark tools as "(from lock)" for reporting purposes but never actually install them, causing "command not found" errors.
Key changes:
- Removed the conditional that skipped dev tool installation when a lock file was present
- Added explicit installation of dev tools regardless of lock file presence
- Updated all 4 job sections (format, lint, typecheck, tests) consistently
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…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: 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
After merging PR #103 (multi-agent routing infrastructure), we need to:
GITHUB_STEP_SUMMARYoutput so iteration results are visible in the Actions UIContext for Agent
Design Decisions & Constraints
<!-- keepalive-loop-summary -->| github-actions[bot] | NEW: CLI agent iteration tracking | ✅ Keep for CLI agents |<!-- keepalive-state:v1 -->| agents-workflows-bot[bot] | State tracking |<!-- keepalive-round: N -->| stranske | OLD: Instruction comment | ❌ CLI agents dont need this |agent:*label), we should have exactly one updating comment (<!-- keepalive-loop-summary -->) instead of accumulating 10+ comments per PR.Related Issues/PRs
References
Blockers & Dependencies
Tasks
Pipeline Validation
agent:codexlabelGITHUB_STEP_SUMMARY
agents-keepalive-loop.ymlafter agent runConditional Status Summary
buildStatusBlock()inagents_pr_meta_update_body.jsto acceptagentTypeparameteragentTypeis set (CLI agent): hide workflow table, hide head SHA/required checksComment Pattern Cleanup
agent:*label):<!-- gate-summary: -->comment posting (use step summary instead)<!-- keepalive-round: N -->instruction comments (task appendix replaces this)<!-- keepalive-loop-summary -->to be the single source of truthagent:*label):<!-- gate-summary: -->commentagent_typeoutput to detect job so downstream workflows know the modeagents-pr-meta.ymlto conditionally skip gate summary for CLI agent PRsAcceptance criteria
Dependencies
Head SHA: b292531
Latest Runs: ✅ success — Gate
Required: gate: ✅ success