Skip to content

fix(deps): update all non-major dependencies - #227

Merged
Syndic merged 2 commits into
mainfrom
renovate/all-minor-patch
Aug 18, 2026
Merged

fix(deps): update all non-major dependencies#227
Syndic merged 2 commits into
mainfrom
renovate/all-minor-patch

Conversation

@renovate

@renovate renovate Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence Type Update
charset-normalizer (changelog) ==3.4.9==3.5.1 age confidence minor
ghcr.io/astral-sh/uv 0.12.30.12.5 age confidence final patch
github.com/vbauerster/mpb/v8 v8.15.1v8.15.2 age confidence require patch
github/codeql-action v4.37.6v4.37.7 age confidence action patch
go (source) 1.26.51.26.6 age confidence patch
idna (changelog) ==3.18==3.19 age confidence minor
pre-commit 4.6.14.6.2 age confidence patch
ruff (source, changelog) 0.16.20.16.3 age confidence patch
rules_go 0.62.00.63.0 age confidence bazel_dep minor
rules_python 2.2.02.3.1 age confidence bazel_dep minor
semgrep/semgrep 1.172.01.173.0 age confidence container minor
ty (changelog) 0.0.690.0.72 age confidence patch

Release Notes

jawah/charset_normalizer (charset-normalizer)

v3.5.1

Compare Source

Changed
  • Raised upper bound of setuptools to v84 (#​794)
  • Cache performance access optimization for our CharInfo struct (prebuilt only).
Fixed
  • No longer decoding large content when the noise detector output give a high entropy.
    Only impacted large content input >1M bytes.

v3.5.0

Compare Source

Added
  • Explicit support for Python 3.15
Fixed
  • Comparing a CharsetMatch to a non-alias encoding strings (#​773)
  • Return 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (#​774)
  • A file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.
  • iso2022* cases misdetected due to a flaw in our multibyte chunking logic.
Changed
  • Replaced the optional mypyc build with Cython extensions while retaining the
    pure Python fallback. The previous engine (mypyc) started to hit rough limit around
    the optimization of our noise/coherence detector while Cython allows us to
    steer the engine toward the right generated optimized sources.
    This change SHOULD not impact bundler (e.g. Pyinstaller) as the module are
    immediately discoverable (i.e. not hidden import like mypyc did).
    Moreover, a long wished distribution is the abi3 wheels, this will allow us
    to no longer rush each year when a new Python interpreter is released.
    We still distribute the interpreter specific wheels for faster performance.
  • Applied micro-optimization on several utils.
  • CharsetMatches no longer sort on each match insertion.
Misc
  • Removed an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).
astral-sh/uv (ghcr.io/astral-sh/uv)

v0.12.5

Compare Source

Released on 2026-08-14.

Python
  • Add CPython 3.10.21, 3.11.16, and 3.12.14 (#​21138)
  • Prefer newer versions and standard variants when selecting between equally prioritized Python interpreters (#​21134)
Enhancements
  • Simplify errors and hints for invalid editable requirements, and redact credentials in requirement URLs (#​21130)
Preview features
  • Allow --index and --default-index to select configured package indexes by name with the index-by-name preview feature (#​17455)
  • Include distribution artifact URLs and hashes in CycloneDX SBOM exports by default (#​21131)
  • Fall back to logical file sizes when using cache-physical-space on filesystems that do not support physical-space accounting (#​21133)
Bug fixes
  • Resolve relative package index paths in PEP 723 scripts against the script directory (#​21097)

v0.12.4

Compare Source

Released on 2026-08-13.

Enhancements
  • Prefer post-quantum key exchange and enable opt-in TLS diagnostics (#​21054)
  • Accept whitespace before versions in noncompliant wildcard comparisons such as Requires-Python: >= 3.5.* (#​21012)
  • Report a specific error when a PEP 723 closing tag contains trailing whitespace or other content (#​20944)
  • Omit source-span carets from diagnostics for empty PEP 508 requirements (#​21094)
Preview features
  • Add uv check --no-install-project and respect UV_NO_INSTALL_PROJECT to install dependencies without building or installing the project (#​21085)
  • Make the ty subprocess invoked by uv check honor uv's color and progress settings, including quiet mode (#​21086)
Performance
  • Speed up resolutions with long runs of unavailable package versions by coalescing gaps in the resolver's version ranges (#​20804)
  • Speed up Simple API parsing by deserializing PyPI and Pyx file metadata directly (#​21041)
Bug fixes
  • Use windowed pythonw.exe launchers for virtual environments created from managed Python minor-version links (#​19235)
  • Allow uv lock to proceed when .venv is an unusable project environment (#​21068)
  • Respect fork-strategy when ordering forks created from environments or existing lockfile resolution-markers (#​21000)
  • Preserve consecutive wildcard Python minor-version exclusions such as !=3.11.*, !=3.12.* in uv.lock (#​21045)
  • Preserve inline comments on the final item in dependency arrays when uv add updates it (#​21008)
  • Recover from stale base-interpreter cache metadata when an existing virtual environment exposes a version mismatch (#​21073)
  • Prevent interpreter cache reuse across different PYTHONEXECUTABLE and __PYVENV_LAUNCHER__ overrides (#​21075)
  • Show standard styling, usage guidance, and line termination for invalid uv version --bump values (#​21076)
vbauerster/mpb (github.com/vbauerster/mpb/v8)

v8.15.2

Compare Source

Full Changelog: vbauerster/mpb@v8.15.1...v8.15.2

github/codeql-action (github/codeql-action)

v4.37.7

Compare Source

golang/go (go)

v1.26.6

kjd/idna (idna)

v3.19

Compare Source

  • Restore the std3_rules option, which had no effect since changes
    to UTS #​46 processing in Unicode 16. Note that uts46_remap()
    defaults to enabling STD3 rules, so direct callers will see input
    containing non-LDH ASCII characters rejected again.
  • Performance improvements to UTS #​46 mapping, particularly for
    ASCII-only domains.
  • Test on free-threaded CPython with the GIL disabled and document
    thread safety.
  • Expose the Unicode version of the generated tables as
    idna.unicode_version, and show it in idna --version.
  • Add code, text, codepoint and position attributes to
    IDNAError so that the failed rule and the offending character can
    be identified without parsing the exception message.
  • The deprecated transitional argument to encode() and
    uts46_remap() is now completely ignored, and gives a deprecation warning
    for the latter.
  • Reject A-labels that are not the canonical Punycode encoding of
    their U-label.
  • Fix CONTEXTJ violations raising IDNAError instead of
    InvalidCodepointContext.
  • Consistently raise IDNAError for empty labels and non-ASCII bytes
    passed to label helper functions and the incremental codec.
  • Add property-based tests, extended fuzzing targets, coverage
    measurement, and CI checks that the data tables match the generator
    output.
  • Various code quality and tooling improvements.

Thanks to stefan6419846, LouieLuNZ, and Salvatore Corvaglia for
contributions to this release.

pre-commit/pre-commit (pre-commit)

v4.6.2

Compare Source

==================

Fixes
astral-sh/ruff (ruff)

v0.16.3

Compare Source

Released on 2026-08-13.

Preview features
  • [pylint] Fix false negatives on negative numbers (PLR6104) (#​27251)
  • [pyupgrade] Add rule to replace while 1 with while True (UP048) (#​27190)
Bug fixes
  • [flake8-bandit] Also check keyword arguments (S602, S603, S607, S609) (#​27687)
  • [pylint] Allow continue in finally on Python 3.8 (#​27626)
  • [pylint] Fix PLE1307 false positive with bools (#​27651)
  • [pylint] Fix false positives and negatives with %b format character (PLE1300, PLE1307) (#​27560)
  • [pylint] Improve handling of concatenated strings (PLE1300) (#​27659)
Rule changes
  • [numpy] Make np.chararray autofix backwards-compatible (NPY201) (#​27527)
Performance
  • Enable PGO for Linux x86-64 Ruff releases (#​27570)
  • Enable PGO for Linux ARM64 Ruff releases (#​27574)
  • Enable PGO for Windows x86-64 Ruff releases (#​27573)
  • Enable PGO for macOS ARM64 Ruff releases (#​27572)
  • Reduce Expr size to 64 bytes (#​27591)
CLI
  • Hyperlink rule codes in ruff check --statistics output (#​27646)
Documentation
  • [ruff] Also suggest asyncio.TaskGroup (RUF006) (#​27461)
Other changes
Contributors
bazelbuild/rules_go (rules_go)

v0.63.0

MODULE.bazel code
bazel_dep(name = "rules_go", version = "0.63.0")

go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk")
go_sdk.from_file(go_mod = "//:go.mod")
WORKSPACE code
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "io_bazel_rules_go",
    sha256 = "c3e253237109ab2e2a8d3cb075688b98a6e6fce43d849849648e8e3a84f20d6f",
    urls = [
        "https://github.com/bazel-contrib/rules_go/releases/download/v0.63.0/rules_go-v0.63.0.zip",
    ],
)

load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")

go_rules_dependencies()

go_register_toolchains(version = "1.26.6")

# Create the host platform repository transitively required by rules_go.
load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
load("@platforms//host:extension.bzl", "host_platform_repo")

maybe(
    host_platform_repo,
    name = "host_platform",
)
What's Changed
New Contributors

Full Changelog: bazel-contrib/rules_go@v0.62.0...v0.63.0

bazel-contrib/rules_python (rules_python)

v2.3.1

Compare Source

{#v2-3-1-fixed}

Fixed
  • Previous refactor that shipped with 2.3 introduced regression for the
    experimental repository cache users. This restores the previous behavior
    (#​3791).

{#v2-3-0}

v2.3.0

Compare Source

{#v2-3-0-changed}

Changed
  • (gazelle) BREAKING rules_python 1.5.0 or higher is now required. The Python
    extension selects its standard library list on is_python_3.14, which earlier
    versions do not define.

{#v2-3-0-fixed}

Fixed
  • Fixed py_binary_rule_builder() / py_test_rule_builder() (from python/api/executables.bzl)
    failing at analysis time with a visibility error when used to construct a custom rule from an
    external module.
  • (compile_pip_requirements) Add the explicit data attribute and forward it
    directly to the generated py_binary, so files passed via data can be
    referenced from extra_args using $(location ...).
  • (coverage) The warning about a missing bundled coverage.py wheel is no longer
    emitted as we are now falling back to a pure python wheel
    (#​3950).
  • (gazelle) The Python extension now uses the correct standard library module list for
    python_version 3.13 and 3.14; previously both fell back to the 3.11 list, so modules
    added or removed since then (e.g. compression.zstd, telnetlib) were misclassified. The
    fallback list for unrecognized versions is now the newest available one rather than 3.11
    (#​3978).
  • (pypi) Allow uv_lock to be specified in pip.parse without requiring
    requirements_lock (or other os-specific requirement file attributes) to be
    set.
  • (pypi) Fixed the fixed-point loop that resolves self-referencing extras
    (pkg[extra] entries in a package's own Requires-Dist). The loop compared
    the number of extras discovered in the current round against the number known
    before it, rather than against the size of the merged set. As a result it
    could stop before every extra was resolved, silently dropping dependencies
    only reachable through two or more pkg[extra] hops, and for the common case
    of a package with no self-referencing extras it never converged at all,
    running all 10000 rounds while evaluating each wheel's generated BUILD file
    (#​4039).
  • (pypi) Requirement --hash=<algo>:<digest> pins and Simple API
    #<algo>=<digest> URL fragments are now parsed for all hash algorithms
    instead of silently dropping everything except sha256. Non-sha256 pins are
    matched against the digests advertised by the index and downloads are verified
    using the corresponding Subresource Integrity value, and the pins are kept in
    the requirement line when falling back to pip
    (#​3972).
    As part of this, whl_library repos created by pip.parse now always pass
    the digest via the integrity attribute (SRI format) instead of sha256,
    and the lock file facts store digests as <algo>:<digest> values (the facts
    version was bumped, so cached index information is refreshed once).
  • (pypi) pip.parse(uv_lock = ...) no longer exposes uv workspace/root members
    that resolve to no wheel or sdist (e.g. source = { virtual = "." } or editable
    installs). Previously these source-less packages were added to the hub's
    all_requirements / all_whl_requirements with an alias to a subpackage that
    does not exist, breaking analysis for anything enumerating the full set such as
    modules_mapping(wheels = all_whl_requirements)
    (#​3934).
  • (pypi) correctly parse the index_url for each wheel so that the source registry is forwarded to
    the {obj}whl_library. This is so that the purl for package_metadata can be correctly
    constructed.
  • (pypi) fixed the URL normalization function to correctly handle local paths
    enabling wheel sources files to point to an absolute path. Currently it supports
    the file://<absolute_path> for linux and windows like paths. We also support
    envsubst for the said paths from now on.

{#v2-3-0-added}

Added
  • (bzlmod) Added MODULE.bazel flag aliases for Starlark-defined flags:
    build_python_zip, incompatible_default_to_explicit_init_py,
    python_path, and experimental_python_import_all_repositories.
  • (bzlmod) Added the {obj}explicit_init_py tag class to the `{obj}`config module extension for configuring implicit __init__.py file
    generation module-wide.
    (#​3997,
    #​2945)
  • (cc) Added experimental {obj}py_extension macro for creating C/C++ Python
    extension modules
    (#​3283).
    (cc) Added libc, platform_machine, platform_tag, soabi, and
    sys_platform attributes and info fields to {obj}py_cc_toolchain /
    {obj}PyCcToolchainInfo.
  • (pip,python) Added pyproject_toml attribute to {obj}pip.default, {obj}pip.parse and {obj}python.defaults to read the default Python version from the requires-python field of pyproject.toml.
  • (py_test) Added an opt-in safeguard against py_test targets that silently
    pass without running any tests. Set
    {obj}--@rules_python//python/config_settings:validate_test_main=enabled to
    fail the build when a test's main module only contains inert top-level
    statements (definitions, imports, assignments) and never invokes a test
    runner (#​3824).

{#v2-2-0}

astral-sh/ty (ty)

v0.0.72

Compare Source

Released on 2026-08-14.

Preview features
  • Check PEP 723 scripts in isolation (#​27462)
Library support
  • Pydantic: Accept documented boolean and fractional inputs (#​27754)
  • Pydantic: Accept enum members for lax string and integer fields (#​27751)
Diagnostics
  • Improve assignability hints for protocols and TypedDict types (#​27717)
Core type checking
  • Avoid treating augmented assignments as attribute definitions (#​27633)
  • Diagnose invalid module-level __getattr__ calls (#​27507)
  • Fix overload argument expansion with unpacked positional arguments (#​27744)
  • Fix specialization of generic TypedDict aliases (#​27760)
  • Ignore generic declaration metadata in staticness checks (#​27692)
  • Preserve tuple types containing Never (#​27580)
  • Report deprecated unary operations (#​27584)
  • Respect variance when inferring structural and callable types (#​27707)
  • Support TypeVarTuple in call binding (#​26886)
  • Treat generator-expression exceptions as eagerly evaluated (#​27735)
Performance
  • Avoid exponential narrowing of gradual string-literal unions (#​27742)
Contributors

v0.0.71

Compare Source

Released on 2026-08-12.

Library support
  • Respect third-party keyword-only fields before Python 3.10 (#​27699)
Diagnostics
  • Diagnose invalid __getattribute__ calls (#​27506)
  • Validate boolean conversion in comprehension filters (#​27641)
  • Validate unpacked callable argument shapes (#​27516)
Core type checking
  • Avoid introducing boolean literals when narrowing integers (#​27698)
  • Fix truthiness inference for subclassable known classes (#​27638)
  • Handle class objects that may be descriptors (#​26687)
  • Infer type variables through nominal type[...] parameters (#​27689)
  • Model exception flow with operation checkpoints (#​27471)
  • Preserve constrained TypeVar types when slicing (#​27645)
  • Preserve enum attributes on Self and bounded type variables (#​27644)
  • Preserve enum exhaustiveness with custom _missing_ methods (#​27700)
  • Preserve literal-string origin in comparison narrowing (#​27582)
  • Resolve generic type aliases subscripted inside type[] (#​27663)
  • Restrict equality impossibility to static bounds (#​27655)
Performance
  • Avoid deriving sequents for type variables with concrete bounds (#​27587)
Contributors

v0.0.70

Compare Source

Released on 2026-08-10.

LSP server
  • Enable and downrank auto-import completions from stub-only modules (#​27433)
  • Fix signature help at end of file (#​27622)
  • Normalize type labels in structured docstrings (#​26923)
  • Preserve typing-only completion ranking in TYPE_CHECKING blocks (#​27549)
CLI
  • Avoid deadlock when scheduling watch checks (#​27605)
Diagnostics
  • Add an opt-in unsound-return-statement lint (#​27561)
  • Add an opt-in unsound-yield lint (#​27593)
  • Diagnose invalid __getattr__ calls (#​27502)
  • Diagnose invalid descriptor __get__ calls (#​27400)
Core type checking
  • Consider object members in protocol comparisons (#​27532)
  • Exclude quantified constraints from semantic type walks (#​27613)
  • Expand Generator aliases when evaluating return, send, and yield types (#​27577)
  • Infer precise TypedDict key-membership truthiness (#​27579)
  • Infer variance through type[T] (#​27534)
  • Preserve contextual inference for declarations in loops (#​27594)
  • Recognize overlapping NewType types and their underlying values (#​27522)
  • Require ClassVar declarations for protocol members (#​27530)
  • Stabilize recursive gradual type alias materialization (#​27563)
  • Support Annotated inside type[...] (#​27629)
  • Validate augmented assignment stores (#​27545)
Contributors

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from 8127744 to 4341703 Compare August 11, 2026 01:10
@renovate renovate Bot changed the title fix(deps): update module github.com/vbauerster/mpb/v8 to v8.15.2 fix(deps): update all non-major dependencies Aug 11, 2026
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 3 times, most recently from 4787061 to 42affc9 Compare August 12, 2026 19:10
@codecov

codecov Bot commented Aug 12, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 84.45%. Comparing base (5e731a7) to head (ffc115d).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #227      +/-   ##
==========================================
+ Coverage   84.07%   84.45%   +0.37%     
==========================================
  Files          39       40       +1     
  Lines        2129     2193      +64     
  Branches       91       99       +8     
==========================================
+ Hits         1790     1852      +62     
- Misses        324      325       +1     
- Partials       15       16       +1     
Components Coverage Δ
Go 86.14% <ø> (ø)
Python 79.79% <96.92%> (+2.10%) ⬆️
Category: apps ∅ <ø> (∅)
Category: infra ∅ <ø> (∅)
Category: libs ∅ <ø> (∅)
Category: meta 79.79% <96.92%> (+2.10%) ⬆️
Category: services ∅ <ø> (∅)
Category: tools 86.14% <ø> (ø)
Project: meta/scripts 79.79% <96.92%> (+2.10%) ⬆️
Project: tools/network_infrastructure_maintenance 86.14% <ø> (ø)

Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 011a9aa...ffc115d. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 4 times, most recently from dc2729c to 2074c03 Compare August 13, 2026 22:45
Syndic added a commit that referenced this pull request Aug 14, 2026
#227 failed when github.com release assets served 503s and `bazel mod deps`
could not fetch buildozer, toml.bzl, rules_apple and pybind11_bazel. Bazel had
already retried each URL (--experimental_repository_downloader_retries defaults
to 5), so the lever is not more attempts -- it is not needing the network.

Add `external-cache: true`, which restores the materialized `external/` dir.
Measured locally on Bazel 9.2.0 with `--repository_disable_download` as an
outage simulation: with the caches warm, none of the four archives that took
#227 down needed fetching.

Two things this does NOT do, both deliberate to record:

  - It does not make the step network-free. rules_python's pip extension is
    reproducible, so it re-evaluates on every invocation and reaches
    files.pythonhosted.org no matter what is cached; under
    `--repository_disable_download` it is the one remaining failure. Different
    provider from the one that broke #227, so the correlated-failure surface
    still shrinks -- but "immune to outages" is not on offer here.
  - It does not explain #227 fully. That run restored a repository cache (key
    ...b95723c6, 471MB) and downloaded those archives anyway, which the local
    measurement says it should not have needed to. That cache entry was created
    2026-08-08 and Actions cache keys are immutable, so stale-but-hitting
    content is the leading theory. Unconfirmed.

`disk-cache` stays off: `mod deps` executes no actions, so it would be inert.
Cache state does not affect the pip `facts` refresh in either direction (see
the preceding commit).

Not yet exercised in CI: the job is gated on `github.actor == 'renovate[bot]'`,
so this runs for the first time on the next Renovate PR that moves a manifest.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Syndic added a commit that referenced this pull request Aug 14, 2026
Replaces the `external-cache` approach from the previous commit, which would not
have prevented #227: `external-cache` is keyed the same way and saved by whoever
wins the same race, so the re-derive job would have restored a partial
`external/` and downloaded the same four archives.

The defect is not stale cache content. Two GitHub behaviours compose badly:

  - setup-bazel derives the repository-cache key from MODULE.bazel/WORKSPACE
    contents, and the base key `setup-bazel-<cache-version>-<os>-<arch>` carries
    no workflow component, so every workflow shares one entry.
  - Actions cache entries are immutable per key: first writer wins, later saves
    are silent no-ops.

So the job that finishes first freezes its own repo footprint under a key every
other job then restores, and the narrowest job reliably wins. On the 2026-08-08
main run `Gazelle BUILD file check` finished 21:48:03 and wrote the entry;
`Build and test (linux_x86_64)` started 21:48:07 and logged a cache hit, so its
far richer cache was never saved. The key is MODULE.bazel-derived and that file
did not move again until 08-13, so every job restored gazelle's 471MB footprint
for four days -- including the re-derive job on #227.

Reproduced locally: priming a repository cache with exactly
`bazel run //:gazelle -- -mode=diff`, then running
`bazel mod deps --repository_disable_download` against it, fails on exactly
buildozer, pybind11_bazel, rules_apple and toml.bzl -- the four archives whose
GitHub 503s broke the job.

`cache-version` is the only lever that can fix this. It reads as a version knob
but is the base key's namespace, and unlike `disk-cache` -- which takes a
separator string of its own -- `repository-cache`'s string form names files to
hash, not a namespace. Setting it to `github.workflow` at both call sites gives
CI, Devcontainer and Renovate their own entries, each written by a job whose
footprint matches its consumer. `disk-cache` drops to `true` since the base key
now separates it.

Cost is one set of entries per workflow against the 10GB repo budget. Eviction
under pressure is graceful -- a miss downloads, which is today's behaviour. This
narrows network exposure rather than removing it: rules_python's pip extension
is reproducible, so it re-evaluates and reaches files.pythonhosted.org on every
invocation regardless of caching.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 3 times, most recently from 0d9608f to 0ee7f2e Compare August 15, 2026 09:56
Syndic added a commit that referenced this pull request Aug 16, 2026
Reworks the previous commit, which namespaced by `github.workflow` and was wrong
in three ways, all raised in review on #229 and all confirmed:

  - It does not separate the jobs the measurement came from. Gazelle, the lock
    freshness check, build-and-test and coverage are jobs of ONE workflow (CI),
    so `github.workflow` put all four back under a single key and the measured
    gazelle-vs-build-and-test race survived verbatim.
  - It made the Renovate re-derive job permanently cold. That workflow triggers
    on pull_request only; PR-run cache saves are scoped to refs/pull/N/merge, so
    a namespace no main-branch run ever writes can never be restored. The job
    went from restoring a partial entry to restoring nothing -- and re-downloaded
    bazelisk from GitHub releases too, the same asset class as the #227 outage.
  - It weakened Devcontainer, whose Bazel jobs are all gated on base-image
    changes, so its namespace would be seeded only by the rare base-touching push
    to main and evicted after 7 days.

The defect was never "workflows share a cache" -- it is a consumer restoring a
producer's mismatched footprint. So the namespace now names the footprint class:
`gazelle`, `mod`, `build`, `devcontainer-base`. `setup-bazel-remote` takes a
required `cache-namespace` input rather than deriving one, so a new call site
cannot silently inherit someone else's class.

Two rules govern the values, both recorded in .claude/CLAUDE.md: jobs sharing a
class must fetch the same repos, and every class needs a producer that runs on
main.

The re-derive job uses `mod`, seeded by ci.yml's freshness job on every push to
main. That is deliberately an imperfect fit and the docs say so: the producer
runs `bazel mod tidy`, the consumer `bazel mod deps`, which evaluates every
module extension including ones no build target needs. Measured against the four
archives whose 503s broke #227, by priming a repository cache with one command
and running `bazel mod deps --repository_disable_download` against it:

  primed by            buildozer  toml.bzl  pybind11_bazel  rules_apple
  gazelle (570M)          no        no           no             no
  mod tidy (81M)          YES       YES          no             no
  fetch //... (1.7G)      no        YES          no             no

So `mod` covers half, against none today, and no existing main-running job
covers `mod deps` fully. Closing the rest needs a main-running producer that runs
`mod deps` itself; not added here.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from 0db7d6e to 368e961 Compare August 16, 2026 21:42
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from bd7c1ff to 5089589 Compare August 18, 2026 07:16
@Syndic
Syndic merged commit 04cc512 into main Aug 18, 2026
45 checks passed
@Syndic
Syndic deleted the renovate/all-minor-patch branch August 18, 2026 20:25
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