diff --git a/.github/workflows/maint-51-dependency-refresh.yml b/.github/workflows/maint-51-dependency-refresh.yml deleted file mode 100644 index 4c31e3d55..000000000 --- a/.github/workflows/maint-51-dependency-refresh.yml +++ /dev/null @@ -1,184 +0,0 @@ -name: Maint 51 Dependency Refresh - -on: - schedule: - - cron: '0 4 1,15 * *' # 1st and 15th of each month at 04:00 UTC - workflow_dispatch: - inputs: - dry-run: - description: 'Preview only (do not open a pull request)' - required: false - default: 'false' - -permissions: - contents: write - pull-requests: write - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - refresh: - name: Refresh dependency pins - runs-on: ubuntu-latest - env: - DRY_RUN: >- - ${{ - github.event_name == 'workflow_dispatch' && - github.event.inputs.dry-run || - 'false' - }} - BASE_BRANCH: ${{ github.event.repository.default_branch }} - steps: - - name: Checkout default branch - uses: actions/checkout@v6 - with: - ref: ${{ env.BASE_BRANCH }} - fetch-depth: 0 - - - name: Setup Python - uses: actions/setup-python@v6 - with: - python-version: '3.14' - - - name: Cache uv binary - id: cache-uv - uses: actions/cache@v5 - with: - path: ~/.local/bin/uv - key: uv-binary-${{ runner.os }}-latest - - - name: Install uv - if: steps.cache-uv.outputs.cache-hit != 'true' - run: | - set -euo pipefail - curl -LsSf https://astral.sh/uv/install.sh | sh - - - name: Add uv to PATH - run: echo "$HOME/.local/bin" >> "$GITHUB_PATH" - - - name: Refresh requirements.lock - run: | - set -euo pipefail - uv pip compile --python-version=3.12 --upgrade --extra=dev --extra=langchain --universal --output-file=requirements.lock pyproject.toml requirements.txt - - - name: Verify lockfile aligns with current compile - env: - TREND_FORCE_DEP_LOCK_CHECK: "1" - run: | - set -euo pipefail - python - <<'PY' - import re - import subprocess - from pathlib import Path - - def normalize(content: str) -> str: - lines: list[str] = [] - for line in content.splitlines(): - stripped = line.strip() - if not stripped: - continue - if stripped.startswith('#'): - if re.match(r'^#.*autogenerated.*by.*', stripped, re.IGNORECASE): - continue - if re.match(r'^#\s*uv pip compile.*', stripped): - lines.append( - '# uv pip compile --python-version=3.12 --extra=dev ' - '--extra=langchain --universal --output-file=requirements.lock ' - 'pyproject.toml requirements.txt' - ) - continue - if ( - re.search(r'\d{4}-\d{2}-\d{2}', stripped) - or re.search(r'\d{2}:\d{2}', stripped) - ): - continue - if ( - stripped == '# via' - or stripped.startswith('# ') - or re.match(r'^#\s+via\s+\w', stripped) - ): - continue - lines.append(stripped) - else: - lines.append(stripped) - return '\n'.join(lines) + ('\n' if lines else '') - - compiled_proc = subprocess.run( - [ - 'uv', - 'pip', - 'compile', - '--python-version', - '3.12', - 'pyproject.toml', - '--extra', - 'dev', - '--extra', - 'langchain', - 'requirements.txt', - '--universal', - ], - check=True, - capture_output=True, - text=True, - ) - compiled = normalize(compiled_proc.stdout) - lock_path = Path('requirements.lock') - existing = normalize(lock_path.read_text()) - if compiled != existing: - raise SystemExit( - 'requirements.lock is out of date; run the scheduled refresh workflow ' - 'to update it.' - ) - PY - - - name: Verify tool pins remain aligned - run: python -m scripts.sync_tool_versions --check - - - name: Detect changes - id: diff - run: | - set -euo pipefail - if git diff --stat --exit-code >/dev/null; then - echo "changed=false" >> "$GITHUB_OUTPUT" - echo "No dependency updates detected." - else - echo "changed=true" >> "$GITHUB_OUTPUT" - echo "Dependency updates detected:" >> "$GITHUB_STEP_SUMMARY" - git status --short | sed 's/^/ /' - fi - - - name: Run dependency verification - if: steps.diff.outputs.changed == 'true' - run: | - set -euo pipefail - python scripts/sync_test_dependencies.py --verify - - - name: Create dependency refresh PR - if: steps.diff.outputs.changed == 'true' && env.DRY_RUN != 'true' - uses: peter-evans/create-pull-request@v8 - with: - branch: maintenance/dependency-refresh/${{ github.run_id }} - base: ${{ env.BASE_BRANCH }} - commit-message: "chore(deps): refresh dependency snapshot" - title: "chore(deps): refresh dependency snapshot" - body: | - ## Dependency snapshot refresh - - * Workflow run: ${{ github.run_id }} - * Trigger: ${{ github.event_name }} - - Changes produced by `Maint 51 Dependency Refresh`. - labels: maintenance,dependencies - - - name: Dry-run summary - if: steps.diff.outputs.changed == 'true' && env.DRY_RUN == 'true' - run: | - message="Dry run requested. Pending changes were detected but no PR was opened." - echo "$message" >> "$GITHUB_STEP_SUMMARY" - - - name: No-op summary - if: steps.diff.outputs.changed != 'true' - run: echo "Dependency snapshot already up to date." >> "$GITHUB_STEP_SUMMARY" diff --git a/DEPENDENCY_TESTING.md b/DEPENDENCY_TESTING.md index 40ebc9651..23658e236 100644 --- a/DEPENDENCY_TESTING.md +++ b/DEPENDENCY_TESTING.md @@ -17,7 +17,7 @@ The `requirements.lock` file **must** include ALL optional dependency groups: - `dev` - Development tools (black, mypy, pytest) - `langchain` - LangChain integration for LLM-enhanced task analysis -**Workflow**: `.github/workflows/maint-51-dependency-refresh.yml` automatically regenerates the lock file when dependencies need updating: +**Lock regeneration**: Renovate's `pip-compile` manager keeps `requirements.lock` fresh. On any source-dependency bump it regenerates the lock in the same PR by re-running the command recorded in the lock header, and its `lockFileMaintenance` (enabled by default for this manager, branch topic `pip-compile-refresh`) periodically recompiles the lock from scratch. `.github/workflows/maint-dependabot-auto-lock.yml` is a Workflows-only backstop that re-runs the same header command on `dependabot[bot]`/`renovate[bot]` PR branches. The recorded compile command is: ```yaml uv pip compile pyproject.toml \ diff --git a/docs/WORKFLOW_GUIDE.md b/docs/WORKFLOW_GUIDE.md index 476eed168..7c7ab7f0d 100644 --- a/docs/WORKFLOW_GUIDE.md +++ b/docs/WORKFLOW_GUIDE.md @@ -18,7 +18,7 @@ operational detail for the kept set. | Prefix | Purpose | Active Examples | | ------ | ------- | ---------------- | | `pr-` | Pull-request CI wrappers | `pr-00-gate.yml`, `pr-11-ci-smoke.yml` | -| `maint-` | Post-CI maintenance and self-tests | `maint-45-cosmetic-repair.yml`, `maint-46-post-ci.yml`, `maint-47-disable-legacy-workflows.yml`, `maint-50-tool-version-check.yml`, `maint-51-dependency-refresh.yml`, `maint-52-validate-workflows.yml`, `maint-60-release.yml`, `maint-61-release-please.yml`, `maint-coverage-guard.yml` | +| `maint-` | Post-CI maintenance and self-tests | `maint-45-cosmetic-repair.yml`, `maint-46-post-ci.yml`, `maint-47-disable-legacy-workflows.yml`, `maint-50-tool-version-check.yml`, `maint-52-validate-workflows.yml`, `maint-60-release.yml`, `maint-61-release-please.yml`, `maint-coverage-guard.yml` | | `health-` | Repository health & policy checks | `health-40-sweep.yml`, `health-40-repo-selfcheck.yml`, `health-41-repo-health.yml`, `health-42-actionlint.yml`, `health-43-ci-signature-guard.yml`, `health-44-gate-branch-protection.yml`, `health-50-security-scan.yml` | | `agents-` | Agent orchestration entry points | `agents-63-issue-intake.yml`, `agents-64-verify-agent-assignment.yml`, `agents-70-orchestrator.yml`, `agents-71-codex-belt-dispatcher.yml`, `agents-72-codex-belt-worker.yml`, `agents-73-codex-belt-conveyor.yml`, `agents-80-pr-event-hub.yml`, `agents-81-gate-followups.yml`, `agents-guard.yml`, `agents-pr-meta.yml`, `agents-moderate-connector.yml`, `agents-keepalive-*.yml`, `agents-debug-issue-event.yml` | | `reusable-` | Reusable composites invoked by other workflows | `reusable-10-ci-python.yml`, `reusable-12-ci-docker.yml`, `reusable-13-cross-repo-smoke.yml`, `reusable-16-agents.yml`, `reusable-18-autofix.yml`, `reusable-agents-issue-bridge.yml` | @@ -51,7 +51,6 @@ _Inline Gate helper_ - **`maint-46-post-ci.yml`** — Post-CI recovery watcher triggered by `workflow_run` on Gate completion. It inspects the Gate summary job before touching the repo, and only checks out helpers / installs the token-balanced API client when the summary leg actually failed, keeping the default token pool free unless recovery is required. - **`maint-47-disable-legacy-workflows.yml`** — Manual dispatch utility to disable retired workflows that still appear in the Actions UI (with a dry-run preview + allowlist overrides); now relies solely on the default workflow token because the helper script never leaves the repository. - **`maint-50-tool-version-check.yml`** — Weekly/manual tool-version audit that reads `autofix-versions.env`, hits PyPI to detect drifts, and files/refreshes the maintenance issue via the default token + load-balanced helper (no extra App mint). -- **`maint-51-dependency-refresh.yml`** — Twice-monthly/manual dependency snapshot refresh that compiles `requirements.lock`, verifies tool pins, and opens a helper PR using the default workflow token (no extra App mint). - **`maint-52-sync-dev-versions.yml`** — Fans out to each registered consumer repo (or a supplied subset), reports `autofix-versions.env` freshness for visibility, then syncs the dev-dependency pins using the PAT provided via `REPO_TOKEN`; now reuses `scripts/list_registered_consumer_repos.py` and avoids redundant GitHub App token mints. - **`maint-52-validate-workflows.yml`** — PR/push workflow that dry-parses every workflow file with `yq`, runs actionlint with the repo allowlist, and caches both binaries; no extra GitHub App token is minted because the job never leaves the repository. - **`maint-60-release.yml`** — Tag-triggered release workflow that publishes notes with `softprops/action-gh-release` when a `v*` tag is pushed; only the default workflow token is needed, so no extra App mint runs. (Retains a legacy floating-`v1` tag step for any `v1.*` push, but consumers ride `@main` — the single supported pin — so the floating tag is no longer part of normal operation.) diff --git a/docs/ci/WORKFLOWS.md b/docs/ci/WORKFLOWS.md index 92f50fedd..c3d8447f2 100644 --- a/docs/ci/WORKFLOWS.md +++ b/docs/ci/WORKFLOWS.md @@ -115,7 +115,6 @@ The gate uses the shared `.github/scripts/detect-changes.js` helper to decide wh * [`maint-47-disable-legacy-workflows.yml`](../../.github/workflows/maint-47-disable-legacy-workflows.yml) sweeps the repository to make sure archived GitHub workflows remain disabled in the Actions UI. * [`maint-sync-action-versions.yml`](../../.github/workflows/maint-sync-action-versions.yml) syncs action version pins from `.github/workflows` into the workflow templates after Dependabot updates land. * [`maint-50-tool-version-check.yml`](../../.github/workflows/maint-50-tool-version-check.yml) checks PyPI weekly for new versions of CI/autofix tools (black, ruff, mypy, pytest) and creates an issue when updates are available. -* [`maint-51-dependency-refresh.yml`](../../.github/workflows/maint-51-dependency-refresh.yml) regenerates `requirements.lock` using `uv pip compile`, validates tool-pin alignment, and opens a refresh pull request when dependency updates are detected (dry-run friendly). * [`maint-39-test-llm-providers.yml`](../../.github/workflows/maint-39-test-llm-providers.yml) verifies LLM provider API keys (GitHub Models, OpenAI) are configured correctly for task completion analysis. * [`maint-sync-env-from-pyproject.yml`](../../.github/workflows/maint-sync-env-from-pyproject.yml) syncs `pyproject.toml`, templates, and direct `requirements.lock` pins from the canonical `autofix-versions.env` file after source pin changes land. * [`maint-52-validate-workflows.yml`](../../.github/workflows/maint-52-validate-workflows.yml) dry-parses every workflow with `yq`, runs `actionlint` with the repository allowlist, and fails fast when malformed YAML or unapproved actionlint findings slip in. diff --git a/docs/ci/WORKFLOW_SYSTEM.md b/docs/ci/WORKFLOW_SYSTEM.md index c4e095d77..3d1df472e 100644 --- a/docs/ci/WORKFLOW_SYSTEM.md +++ b/docs/ci/WORKFLOW_SYSTEM.md @@ -354,7 +354,7 @@ fires where” without diving into the full tables: - **Maintenance & repo health** - **Primary workflows.** Gate summary job inside `pr-00-gate.yml`, `maint-46-post-ci.yml`, `maint-coverage-guard.yml`, - `maint-51-dependency-refresh.yml`, `maint-45-cosmetic-repair.yml`, + `maint-45-cosmetic-repair.yml`, and the health guardrails (`health-40` through `health-44`). - **Triggers.** Combination of the Gate summary job running after Gate, recurring schedules (health guardrails), and manual dispatch for @@ -363,7 +363,6 @@ fires where” without diving into the full tables: and enforce branch-protection expectations without waiting for the next PR. - **Where to inspect logs.** Gate summary job: [Gate workflow history](https://github.com/stranske/Workflows/actions/workflows/pr-00-gate.yml). Maint 46: [workflow history](https://github.com/stranske/Workflows/actions/workflows/maint-46-post-ci.yml). - Maint 51: [dependency refresh runs](https://github.com/stranske/Workflows/actions/workflows/maint-51-dependency-refresh.yml). Maint 45: [workflow history](https://github.com/stranske/Workflows/actions/workflows/maint-45-cosmetic-repair.yml). Health guardrails: the [Health 40–44 dashboards](https://github.com/stranske/Workflows/actions?query=workflow%3AHealth+40+repo+OR+workflow%3AHealth+41+repo+OR+workflow%3AHealth+42+Actionlint+OR+workflow%3AHealth+43+CI+Signature+Guard+OR+workflow%3AHealth+44+Gate+Branch+Protection). - **Issue / agents automation** @@ -465,7 +464,7 @@ status updates: | Bucket | Where it runs | YAML entry points | Why it exists | | --- | --- | --- | --- | | PR checks | Every pull request event (including `pull_request_target` for fork visibility) | `pr-00-gate.yml` | Keep the default branch green by running the gating matrix before reviewers waste time. | -| Maintenance & repo health | Daily/weekly schedules plus manual dispatch | Gate summary job in `pr-00-gate.yml`, `maint-46-post-ci.yml`, `maint-45-cosmetic-repair.yml`, `maint-51-dependency-refresh.yml`, `maint-62-integration-consumer.yml`, `maint-63-ensure-environments.yml`, `maint-65-sync-label-docs.yml`, `maint-66-monthly-audit.yml`, `health-4x-*.yml` | Scrub lingering CI debt, enforce branch protection, and surface drift before it breaks contributor workflows. | +| Maintenance & repo health | Daily/weekly schedules plus manual dispatch | Gate summary job in `pr-00-gate.yml`, `maint-46-post-ci.yml`, `maint-45-cosmetic-repair.yml`, `maint-62-integration-consumer.yml`, `maint-63-ensure-environments.yml`, `maint-65-sync-label-docs.yml`, `maint-66-monthly-audit.yml`, `health-4x-*.yml` | Scrub lingering CI debt, enforce branch protection, and surface drift before it breaks contributor workflows. | | Issue / agents automation | Orchestrator dispatch (`workflow_dispatch`, `workflow_call`, `issues`), belt conveyor (`repository_dispatch`, `workflow_run`) | `agents-70-orchestrator.yml`, `agents-71-codex-belt-dispatcher.yml`, `agents-72-codex-belt-worker-dispatch.yml`, `agents-72-codex-belt-worker.yml`, `agents-73-codex-belt-conveyor.yml`, `agents-moderate-connector.yml`, `agents-autofix-dispatcher.yml`, `agents-autofix-loop.yml`, `agents-keepalive-loop.yml`, `agents-keepalive-sweep.yml`, `agents-keepalive-loop-reporter.yml`, `agents-keepalive-branch-sync.yml`, `agents-keepalive-dispatch-handler.yml`, `agents-74-pr-body-writer.yml`, `agents-63-*.yml`, `agents-64-pr-comment-commands.yml`, `agents-64-verify-agent-assignment.yml`, `agents-issue-optimizer.yml`, `agents-guard.yml` | Translate labelled issues into automated work while keeping the protected agents surface locked behind guardrails. | | Error checking, linting, and testing topology | Reusable fan-out invoked by Gate, Gate summary job, and manual triggers | `reusable-10-ci-python.yml`, `reusable-12-ci-docker.yml`, `reusable-13-cross-repo-smoke.yml`, `reusable-16-agents.yml`, `reusable-18-autofix.yml`, `reusable-20-pr-meta.yml`, `reusable-70-orchestrator-init.yml`, `reusable-70-orchestrator-main.yml`, `selftest-reusable-ci.yml` | Provide a single source of truth for lint/type/test/container jobs so every caller runs the same matrix with consistent tooling. | @@ -525,11 +524,6 @@ Keep this table handy when you are triaging automation: it confirms which workfl - **Maint 50 Tool Version Check** – `.github/workflows/maint-50-tool-version-check.yml` runs weekly (Mondays 8:00 AM UTC) to check PyPI for new versions of CI/autofix tools (black, ruff, mypy, pytest, etc.) and creates an issue when updates are available. -- **Maint 51 Dependency Refresh** – `.github/workflows/maint-51-dependency-refresh.yml` - runs on the 1st and 15th of each month (04:00 UTC) or on manual dispatch to - regenerate `requirements.lock` via `uv pip compile`, verify tooling pin - alignment, and open a refresh pull request when upgrades are detected (dry-run - friendly by default). - **Maint 39 Test LLM Providers** – `.github/workflows/maint-39-test-llm-providers.yml` is a manual workflow that verifies LLM provider API keys (GitHub Models, OpenAI) are configured correctly. Used to test the task completion analysis fallback chain. @@ -701,7 +695,6 @@ Keep this table handy when you are triaging automation: it confirms which workfl | **PR 11 - Minimal invariant CI** (`pr-11-ci-smoke.yml`, PR checks bucket) | `push` (`main`), `pull_request` (`main`), `workflow_dispatch` | Fast YAML + scripts syntax sanity check on Python 3.12 for early warning on workflow/script regressions. | ⚪ Automatic on push/PR | [Minimal invariant CI runs](https://github.com/stranske/Workflows/actions/workflows/pr-11-ci-smoke.yml) | | **Maint 47 Disable Legacy Workflows** (`maint-47-disable-legacy-workflows.yml`, maintenance bucket) | `workflow_dispatch` | Run `tools/disable_legacy_workflows.py` to disable archived workflows that still appear in Actions. | ⚪ Manual | [Maint 47 dispatch](https://github.com/stranske/Workflows/actions/workflows/maint-47-disable-legacy-workflows.yml) | | **Maint 50 Tool Version Check** (`maint-50-tool-version-check.yml`, maintenance bucket) | `schedule` (Mondays 8:00 AM UTC), `workflow_dispatch` | Check PyPI for new versions of CI/autofix tools and create/update an issue when updates are available. | ⚪ Scheduled | [Maint 50 version checks](https://github.com/stranske/Workflows/actions/workflows/maint-50-tool-version-check.yml) | -| **Maint 51 Dependency Refresh** (`maint-51-dependency-refresh.yml`, maintenance bucket) | `schedule` (1st & 15th at 04:00 UTC), `workflow_dispatch` | Regenerate `requirements.lock` with `uv pip compile`, verify tool-pin alignment, and open a refresh PR when dependency updates are detected (supports dry-run previews). | ⚪ Scheduled | [Maint 51 dependency refresh](https://github.com/stranske/Workflows/actions/workflows/maint-51-dependency-refresh.yml) | | **Auto-label dependency PRs** (`maint-auto-label-dep-prs.yml`, maintenance bucket) | `pull_request_target` (`opened`) | Apply the `agents:allow-change` label to dependency-bot PRs (Dependabot + Renovate) so protected-workflow changes can be reviewed without manual label work. | ⚪ Automatic on PR open | [Auto-label runs](https://github.com/stranske/Workflows/actions/workflows/maint-auto-label-dep-prs.yml) | | **Dependabot Auto-Lock** (`maint-dependabot-auto-lock.yml`, maintenance bucket) | `pull_request` (Dependabot branches, `pyproject.toml` changes) | Regenerate `requirements.lock` when Dependabot updates `pyproject.toml`, commit the updated lockfile back to the Dependabot PR branch, and keep dependency pins in sync. | ⚪ Automatic on Dependabot PRs | [Dependabot auto-lock runs](https://github.com/stranske/Workflows/actions/workflows/maint-dependabot-auto-lock.yml) | | **Dependabot Weekly Sweep (Consumers)** (`maint-dependabot-weekly-sweep.yml`, maintenance bucket) | `schedule` (Mondays 09:00 UTC), `workflow_dispatch` | Sweep registered consumer repos weekly to enable Dependabot auto-merge and merge eligible PRs when checks are green. | ⚪ Scheduled/manual | [Dependabot weekly sweep runs](https://github.com/stranske/Workflows/actions/workflows/maint-dependabot-weekly-sweep.yml) | @@ -824,7 +817,7 @@ snapshots for audit trails. ## Final topology (keep vs retire) - **Keep.** `pr-00-gate.yml`, `maint-45-cosmetic-repair.yml`, - `maint-51-dependency-refresh.yml`, the Gate summary job (inline), + the Gate summary job (inline), `maint-coverage-guard.yml`, health 40/41/42/43/44, agents 70/63, `agents-moderate-connector.yml`, `agents-debug-issue-event.yml`, `agents-guard.yml`, reusable 10/12/16/18, and `maint-auto-label-dep-prs.yml`, `maint-dependabot-auto-lock.yml`, and `selftest-reusable-ci.yml`. diff --git a/renovate.json b/renovate.json index 655ebe2ab..a1f55e1b5 100644 --- a/renovate.json +++ b/renovate.json @@ -1,6 +1,6 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "description": "Workflows Renovate config — extends the stranske fleet-shared preset (renovate-presets/fleet.json), the single source of truth for grouping, automerge-on-green, dev-tool exclusions, and the vendored-minimatch cascade. Workflows dogfoods the same preset every consumer repo extends. CANARY (do not promote to the fleet preset until proven here): the pip-compile manager block regenerates requirements.lock (a `uv pip compile` output) in-PR, because Renovate does NOT touch uv-pip-compile locks by default and the reusable Python CI installs `-r requirements.lock`. Renovate parses the lock header to find the source files + command — it requires `--python-version=3.12` (equals form) in the header. requirements.txt is a pip-compile source, so pip_requirements is disabled for it (Renovate docs: avoid double-managing source files); tools/requirements-llm.txt stays on pip_requirements (standalone LLM pins, not a lock source).", + "description": "Workflows Renovate config — extends the stranske fleet-shared preset (renovate-presets/fleet.json), the single source of truth for grouping, automerge-on-green, dev-tool exclusions, and the vendored-minimatch cascade. Workflows dogfoods the same preset every consumer repo extends. CANARY (do not promote to the fleet preset until proven here): the pip-compile manager block regenerates requirements.lock (a `uv pip compile` output) in-PR, because Renovate does NOT touch uv-pip-compile locks by default and the reusable Python CI installs `-r requirements.lock`. Renovate parses the lock header to find the source files + command — it requires `--python-version=3.12` (equals form) in the header. requirements.txt is a pip-compile source, so pip_requirements is disabled for it (Renovate docs: avoid double-managing source files); tools/requirements-llm.txt stays on pip_requirements (standalone LLM pins, not a lock source). The pip-compile manager enables lockFileMaintenance by default (branchTopic `pip-compile-refresh`), recompiling the lock from scratch on a schedule — this OWNS the periodic refresh and replaces the retired maint-51-dependency-refresh.yml, so do NOT reintroduce a scheduled `uv pip compile --upgrade` workflow. (`--upgrade` is a one-time action flag uv omits from the lock header, and Renovate's pip-compile parser would throw `Option --upgrade not supported (yet)` if it ever appeared there; Renovate scopes its own per-dep bumps with `--upgrade-package`.)", "extends": ["github>stranske/Workflows//renovate-presets/fleet"], "pip-compile": { "managerFilePatterns": ["/(^|/)requirements\\.lock$/"] diff --git a/tests/workflows/test_workflow_naming.py b/tests/workflows/test_workflow_naming.py index 4435fc028..8713e179d 100644 --- a/tests/workflows/test_workflow_naming.py +++ b/tests/workflows/test_workflow_naming.py @@ -243,7 +243,6 @@ def test_workflow_display_names_are_unique(): "maint-47-disable-legacy-workflows.yml": "Maint 47 Disable Legacy Workflows", "maint-48-docs-drift-audit.yml": "Maint 48 Docs Drift Audit", "maint-50-tool-version-check.yml": "Maint 50 Tool Version Check", - "maint-51-dependency-refresh.yml": "Maint 51 Dependency Refresh", "maint-sync-action-versions.yml": "Maint Sync Action Versions", "maint-sync-env-from-pyproject.yml": "Maint - Sync pyproject from versions.env", "maint-52-validate-workflows.yml": "Maint 52 Validate Workflows",