litellm/.github/workflows
mateo-berri 06145a7d71 feat(triage): day-7 enactment sweep + flip AGENT_SHIN_ENABLED to live-by-default
This is the second-step PR of the Agent Shin rollout: it merges 7 days
after the heads-up (#28759 + this branch) and turns the bot on for real.
Two things happen on merge:

1. A one-shot enactment sweep runs over every open external PR/issue,
   driving each through the steady-state triage logic with --close=true.
   PRs that fixed their description in the grace week get tagged
   `ready for review`; PRs/issues still failing the rubric get the
   standard 24h grace warning (or close, if they already had one and
   24h elapsed). The sweep uses the same `_agent_shin_actions` dry-run
   wrappers as the heads-up so a single boolean toggles real vs. log.

2. The four existing triage workflows (triage_pr_with_llm,
   triage_issue_with_llm, close_low_quality_prs, review_gate,
   triage_reconsider) flip from "dry-run unless AGENT_SHIN_ENABLED=true"
   to "live unless AGENT_SHIN_ENABLED=false". The variable becomes a
   kill switch instead of an opt-in. Default semantics: unset means live.

Files
-----
.github/scripts/triage_rollout_enact.py — the enactment sweep.
  * Calls review_gate(close=False, now=current_time) for PRs and
    triage(close=False) (wrapped in `_fake_now(current_time)`) for
    issues, then routes the verdict through the matching maybe_*
    wrapper. Two single-page dispatch tables (_apply_pr_result,
    _apply_issue_result) make it easy to audit which actions map to
    which mutations.
  * Time-travel dry-run: --simulate-future-hours N (default 24+1s
    when --close is not set) shifts the clock forward N hours so you
    can preview what the next daily cron will do. Implemented in
    exactly two places: review_gate's `now=` parameter for PRs, and
    a `_fake_now` context manager that patches
    `agent_shin_shared.dt.datetime.now` for issues. The context
    manager restores the original module on exit (and on exception).
  * --simulate-now ISO_TS pins the clock to a specific timestamp.
  * --close forbids the simulate flags so a real run is always at
    wall-clock time.

.github/workflows/triage_rollout_enact.yml — thin wrapper. Fires
  --close on push to litellm_internal_staging (the enactment merge)
  and offers a workflow_dispatch with dry_run + simulate_future_hours
  inputs for safe re-runs.

.github/workflows/{triage_pr_with_llm,triage_issue_with_llm,
close_low_quality_prs,review_gate,triage_reconsider}.yml — inverted:
  * `${AGENT_SHIN_ENABLED:-true}` (default live)
  * Conditional: `= "false"` enters kill-switch branch
  * OPENAI_API_KEY env: exposed unless `vars.AGENT_SHIN_ENABLED == 'false'`
  Comments updated to call out the new kill-switch semantics.

tests/test_litellm/test_github_triage_workflows.py — split the
  destructive-gate constant into PER_RUN_GATE_ENV (per-input gates
  that must still match `= "true"`) and KILL_SWITCH_WORKFLOWS (all
  five workflows, must match the inverted `= "false"` / `!= "false"`
  pattern). Updates the kill-switch test wording to describe the
  new semantics.

tests/test_litellm/test_triage_rollout_enact.py — 22 tests covering:
  * _fake_now patches and restores (including on exception)
  * Each branch of _apply_pr_result / _apply_issue_result with a
    recorder that captures the maybe_* call sequence and dry_run flag
  * _process_one skip-not-open / skip-internal-author
  * run() end-to-end: dry-run threads dry_run=True through every
    wrapper, real run threads False, current_time threads through to
    the per-item evaluators, --kind / --only-numbers restrict scope.

Local preview commands
----------------------
    # What this script would do right now (no GitHub writes):
    python3 .github/scripts/triage_rollout_enact.py --repo BerriAI/litellm

    # What the next daily cron will do (24h+1s in the future):
    python3 .github/scripts/triage_rollout_enact.py --repo BerriAI/litellm \\
        --simulate-future-hours 24

    # Pin to a specific moment:
    python3 .github/scripts/triage_rollout_enact.py --repo BerriAI/litellm \\
        --simulate-now '2026-06-02T09:00:00Z'

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-25 20:37:52 -07:00
..
_test-unit-base.yml fix(ci): flag codecov uploads, enable carryforward, close coverage gaps (#28028) 2026-05-16 10:56:32 -07:00
_test-unit-services-base.yml fix(ci): flag codecov uploads, enable carryforward, close coverage gaps (#28028) 2026-05-16 10:56:32 -07:00
auto_update_price_and_context_window.yml build: migrate packaging, CI, and Docker from Poetry to uv (#25007) 2026-04-09 11:46:23 -07:00
auto_update_price_and_context_window_file.py only add/update vercel ai gateway models 2025-08-04 17:22:36 -07:00
check-schema-sync.yml chore: fixes 2026-04-05 01:30:57 -07:00
check_duplicate_issues.yml [Infra] Flip remaining CI jobs to Python 3.12 2026-04-22 21:26:19 -07:00
close_low_quality_prs.yml feat(triage): day-7 enactment sweep + flip AGENT_SHIN_ENABLED to live-by-default 2026-05-25 20:37:52 -07:00
codeql.yml CI: copy of #25177 (OCI GenAI: embeddings, streaming/reasoning fixes, model catalog) (#28223) 2026-05-23 12:15:41 -07:00
codspeed.yml build: migrate packaging, CI, and Docker from Poetry to uv (#25007) 2026-04-09 11:46:23 -07:00
create-release-branch.yml ci(release): accept PEP 440 tag forms in create-release workflow 2026-04-28 19:33:18 -07:00
create-release.yml [Fix] Release Workflow: Detect SemVer-Style Pre-Release Dev Tags 2026-04-30 23:51:04 -07:00
create_daily_staging_branch.yml chore: fixes 2026-04-05 01:30:57 -07:00
guard-fork-dependencies.yml ci: add supply-chain guard to block fork PRs that modify dependencies 2026-04-25 18:46:50 +00:00
guard-main-branch.yml Point contributors toward litellm_oss_branch in guard error messages 2026-04-14 18:41:59 -07:00
helm_unit_test.yml chore: fixes 2026-04-05 01:30:57 -07:00
issue-keyword-labeler.yml chore: fixes 2026-04-05 01:30:57 -07:00
label-component.yml chore: fixes 2026-04-05 01:30:57 -07:00
mutation-test.yml ci: add manually-triggered mutation testing workflow (#27576) 2026-05-11 15:19:57 -07:00
review_gate.yml feat(triage): day-7 enactment sweep + flip AGENT_SHIN_ENABLED to live-by-default 2026-05-25 20:37:52 -07:00
run_llm_translation_tests.py build: migrate packaging, CI, and Docker from Poetry to uv (#25007) 2026-04-09 11:46:23 -07:00
scorecard.yml chore: fixes 2026-04-05 01:30:57 -07:00
stale.yml chore: fixes 2026-04-05 01:30:57 -07:00
sync-schema.yml chore: fixes 2026-04-05 01:30:57 -07:00
test-code-quality.yml ci: check out litellm-docs directly into docs/my-website 2026-04-24 14:21:18 -07:00
test-linting.yml [Infra] Expand CI branch filters for non-main PR targets 2026-04-15 15:39:57 -07:00
test-litellm-ui-build.yml [Infra] Expand CI branch filters for non-main PR targets 2026-04-15 15:39:57 -07:00
test-mcp.yml ci: use --cov=./litellm so coverage paths resolve unambiguously in Codecov 2026-05-14 14:01:05 -07:00
test-model-map.yaml [Infra] Expand CI branch filters for non-main PR targets 2026-04-15 15:39:57 -07:00
test-semgrep.yml [Infra] Move non-API-key CCI jobs to GitHub Actions 2026-04-22 13:38:00 -07:00
test-unit-core-utils.yml [Infra] Expand CI branch filters for non-main PR targets 2026-04-15 15:39:57 -07:00
test-unit-documentation.yml ci: check out litellm-docs directly into docs/my-website 2026-04-24 14:21:18 -07:00
test-unit-enterprise-routing.yml [Infra] Expand CI branch filters for non-main PR targets 2026-04-15 15:39:57 -07:00
test-unit-integrations.yml [Infra] Expand CI branch filters for non-main PR targets 2026-04-15 15:39:57 -07:00
test-unit-llm-providers.yml [Infra] Expand CI branch filters for non-main PR targets 2026-04-15 15:39:57 -07:00
test-unit-misc.yml [Infra] Expand CI branch filters for non-main PR targets 2026-04-15 15:39:57 -07:00
test-unit-proxy-auth.yml [Infra] Expand CI branch filters for non-main PR targets 2026-04-15 15:39:57 -07:00
test-unit-proxy-db.yml Litellm oss staging 04 21 2026 2 (#26569) 2026-05-20 21:25:19 -07:00
test-unit-proxy-endpoints.yml [Infra] Remove CCI/GHA test duplication and semantically shard proxy DB tests 2026-04-23 14:48:38 -07:00
test-unit-proxy-infra.yml [Infra] Expand CI branch filters for non-main PR targets 2026-04-15 15:39:57 -07:00
test-unit-proxy-legacy.yml Merge remote-tracking branch 'origin/litellm_internal_staging' into litellm_migration_projects 2026-04-24 12:52:10 -07:00
test-unit-proxy-mgmt-behavior.yml feat(tests): behavior-pinning harness + Key Tier-1 matrix (#28321) 2026-05-20 19:27:44 -07:00
test-unit-responses-caching-types.yml [Infra] Expand CI branch filters for non-main PR targets 2026-04-15 15:39:57 -07:00
test-unit-security.yml [Infra] Stop attaching push-only postgres workflows to a GHA environment 2026-04-23 16:32:18 -07:00
test_server_root_path.yml [Infra] Expand CI branch filters for non-main PR targets 2026-04-15 15:39:57 -07:00
triage_issue_with_llm.yml feat(triage): day-7 enactment sweep + flip AGENT_SHIN_ENABLED to live-by-default 2026-05-25 20:37:52 -07:00
triage_pr_with_llm.yml feat(triage): day-7 enactment sweep + flip AGENT_SHIN_ENABLED to live-by-default 2026-05-25 20:37:52 -07:00
triage_reconsider.yml feat(triage): day-7 enactment sweep + flip AGENT_SHIN_ENABLED to live-by-default 2026-05-25 20:37:52 -07:00
triage_rollout_enact.yml feat(triage): day-7 enactment sweep + flip AGENT_SHIN_ENABLED to live-by-default 2026-05-25 20:37:52 -07:00
triage_rollout_heads_up.yml feat(triage): add one-shot 7-day heads-up sweep for Agent Shin rollout 2026-05-25 20:27:41 -07:00
zizmor.yml chore: fixes 2026-04-05 01:30:57 -07:00