Skip to content

Check Starlark contracts in the fork - #1

Draft
tamird wants to merge 61 commits into
mainfrom
type-contracts
Draft

tamird wants to merge 61 commits into
mainfrom
type-contracts

Conversation

@tamird

@tamird tamird commented Oct 18, 2026

Copy link
Copy Markdown
Owner

Run the existing pull-request workflows for the Starlark contracts proposed upstream 1. This fork PR provides CI results while upstream workflows await approval.

Prepared by OpenAI's Codex on behalf of @tamird.

keith and others added 18 commits September 24, 2026 12:39
We don't want to block on env differences from buildkite to github
actions. This makes sure the commit the release being cut from is green.

Closes bazelbuild#898

COPYBARA_INTEGRATE_REVIEW=bazelbuild#898 from keith:ks/remove-release-tests-add-check-for-green-commit 2c6c094
PiperOrigin-RevId: 987685459
Change-Id: I85ab425de0d086b49a8410ad224b079b7859aa13
Renames INTERNAL_VISIBILITY to better clarify the intent of the variable, and communicate to both Bazel and Google-internal users what this variable implies. Also restricts the visibilty of the visibility.bzl file to hopefully prevent hyrum's law from taking too strong a hold on this non-private file.

Closes bazelbuild#910

COPYBARA_INTEGRATE_REVIEW=bazelbuild#910 from armandomontanez:armando/add-visibility-comment 2d87d58
PiperOrigin-RevId: 990112200
Change-Id: I55c5a5acf45634125d2e5e6cede0b6efc8704d7c
…ild#909)

rules_python switched to using --enable_runfiles on windows which
revealed a bug that we weren't copying dependent dylibs for
cc_shared_library as we do for cc_binary.

Closes bazelbuild#909

COPYBARA_INTEGRATE_REVIEW=bazelbuild#909 from keith:ks/fix-cc_shared_library-locations-with-rules_python-on-windows 674b125
PiperOrigin-RevId: 990763525
Change-Id: I8fe763ae5623bf54e0cc90d78a002110c6b2383b
This temporarily works around a bazel bug where windows bwtb produces invalid results bazelbuild/bazel#31423

Closes bazelbuild#915

COPYBARA_INTEGRATE_REVIEW=bazelbuild#915 from keith:ks/use-remote_download_all-on-windows 7606258
PiperOrigin-RevId: 991211475
Change-Id: I27559e370ba55834abd365983375b299780a1ee5
We switched the default toolchain to a rules based one moving forward. This also required
a integration test change since previously the rules based toolchain files weren't in
the integration test inputs, but now they are required.

Closes bazelbuild#903

COPYBARA_INTEGRATE_REVIEW=bazelbuild#903 from keith:ks/bump-apple_support-dep 5541504
PiperOrigin-RevId: 991449012
Change-Id: I54fbdb4a8e726e03186340f4ec27e33a9ac8aad3
Having actions for these is relatively new.

Closes bazelbuild#904

COPYBARA_INTEGRATE_REVIEW=bazelbuild#904 from keith:ks/set-coverage_files-from-rules-based-toolchains 4af2175
PiperOrigin-RevId: 991450972
Change-Id: I18d5c2b4a58822e90893b7539619e42c320b1afc
Replace `_map_to_list` with `dict.items()` in `cc_helper.bzl` and `objc_compilation_support.bzl`. Starlark's `dict.items()` already returns a list of key-value tuples in insertion order, so the helpers unnecessarily iterate over that list and recreate each tuple. Remove both helpers and return `artifact_label_map.items()` at all five call sites.

Closes bazelbuild#900

COPYBARA_INTEGRATE_REVIEW=bazelbuild#900 from dzbarsky:codex/use-dict-items bef7e1e
PiperOrigin-RevId: 991615000
Change-Id: I281e1f5634a85fff7e0a079e79d13a02b3b3f22a
Replace the Java-backed `cc_common.empty_variables()` call with `_cc_internal.cc_toolchain_variables(vars = {})`. Both implementations construct the same empty `CcToolchainVariables` representation, preserving compile, link, FDO, and toolchain feature expansion.

Validation: `buildifier -mode=check cc/private/cc_common.bzl` and 66 passing C++ common, compile-variable, link-variable, and FDO analysis tests.

Closes bazelbuild#806

COPYBARA_INTEGRATE_REVIEW=bazelbuild#806 from dzbarsky:codex/starlarkify-empty-variables 33dcb2f
PiperOrigin-RevId: 991757889
Change-Id: Ifec667bdd7fbd5b7c852258e69d7f0198d2df1bd
Enable cc_copts_policy to enforce disallowed flags on command-line compiler options (--copt, --cxxopt, --conlyopt) via verify_command_line = True.

Taken over from unknown commit by trybka@.

Startblock:
  * // Put other blockers before this line to avoid churning.
  * has lgtm
  * is approved
  * and then
  * all comments are resolved
  * and then
  *[] allows unknown commit
PiperOrigin-RevId: 991964690
Change-Id: I04934ce74c252ad3a4c049ddcc6dad9b4463eb4d
This is the default in the toolchains now, this flag was invalid for
windows so CI warned

Closes bazelbuild#918

COPYBARA_INTEGRATE_REVIEW=bazelbuild#918 from keith:ks/remove-std-c-17-from-bazelrc 0829b78
PiperOrigin-RevId: 992301854
Change-Id: I2364dc05bc0963edd8a23368af0da64ef46baeda
There's references to this from bazel https://github.com/bazelbuild/bazel/blob/5604b553b2a54152e5e4f41ef4b01a416b7bfd44/tools/cpp/BUILD.tools#L44

We should remove both but in the meantime some rulesets reference this

Closes bazelbuild#888

COPYBARA_INTEGRATE_REVIEW=bazelbuild#888 from keith:ks/add-back-grep-includes-alias ebc21b3
PiperOrigin-RevId: 992413533
Change-Id: Iaeaf5a245db5a7a8a5fc891d4c70324a4b57f868
PiperOrigin-RevId: 993739069
Change-Id: I6fd5884126ba600529ff1904d8aac0438ca13e00
Closes bazelbuild#906

COPYBARA_INTEGRATE_REVIEW=bazelbuild#906 from keith:ks/use-named-arguments-instead-of-comments a5169cb
PiperOrigin-RevId: 993754957
Change-Id: I8963cdc410859edd985730f4d5bc1d35316a0acf
Closes bazelbuild#920

COPYBARA_INTEGRATE_REVIEW=bazelbuild#920 from keith:ks/add-docs-for-skip_virtual_includes 0e834a4
PiperOrigin-RevId: 994315342
Change-Id: Iab7ea501f9c35ad434a11cec1ff31c73ce566222
Provide a `dwo_files` output group for debug builds with fission enabled so that separate DWARF (`.dwo`) files can be requested on-demand in build modes where intermediate compilation outputs are not materialized by default.

PiperOrigin-RevId: 996578913
Change-Id: Iea1798051051edf66fa30f25417796d742c8dad2
…zelbuild#901)

`_compute_tool_paths` prefixes every relative tool path with the package of the `cc_toolchain`, which turns exec-cfg paths into non-existent ones. With apple_support 2.8.4, which Bazel@HEAD now bundles and thus selects by default on macOS, `$(CC)` expands to the nonsensical

```
external/apple_support++apple_cc_configure_extension+local_config_apple_cc/bazel-out/darwin_arm64-opt-exec-ST-<hash>/bin/external/apple_support+/crosstool/wrapped_clang
```

instead of

```
bazel-out/darwin_arm64-opt-exec-ST-<hash>/bin/external/apple_support+/crosstool/wrapped_clang
```

This PR keeps tool paths that start with the output directory as they are.

Closes bazelbuild#901

COPYBARA_INTEGRATE_REVIEW=bazelbuild#901 from fmeum:generated-tool-paths 103fab8
PiperOrigin-RevId: 996808000
Change-Id: Ice1f696166553d98f893dd6c430a769f3b9e691e
This just fixes minor incompatibilities

Closes bazelbuild#924

COPYBARA_INTEGRATE_REVIEW=bazelbuild#924 from keith:ks/enable-cc_integration_test-on-macos 3f48e22
PiperOrigin-RevId: 998012310
Change-Id: I41cd53581c97e9455208d5a1c63c585eebfcd843
Startblock:
PiperOrigin-RevId: 1000590878
Change-Id: Iae8805f45f22d773b39697d676886f1b9e1258de
_verify_no_disallowed_copts runs for every C++ target, once per copts, conlyopts and cxxopts attribute. It used to call allowlist.contains(ctx.label) first, for every policy. PackageGroupContents.containsPackage uses a hash set for exact //pkg entries but scans //pkg/... entries one by one, so a large prefix allowlist made the check expensive for every target, including the vast majority that use no disallowed flag.

The flags are now matched first, and the allowlist is consulted only when a flag matched, at most once per policy. Violations and their messages are unchanged.

This is needed before registering the -g0 debug info policy, whose allowlist has about 8k //pkg/... entries.

Startblock:
  * // Put other blockers before this line to avoid churning.
  * has lgtm
  * is approved
  * and then
  * all comments are resolved
  * and then
  *[] allows unknown commit
PiperOrigin-RevId: 1002043792
Change-Id: I68f80519dad93d597669a6aadfc71ef53f297719
fmeum and others added 5 commits October 19, 2026 21:19
`%package(...)%` resolved relative to rules_cc itself, not the location where the `cc_toolchain` was defined. For `cc_shared_library`, the existing initializer did resolve labels correctly, but failed to do so for `select` expressions.

Closes bazelbuild#896

COPYBARA_INTEGRATE_REVIEW=bazelbuild#896 from fmeum:claude/package-paths-bzlmod-toolchain-w8lcdu 0468ba0
PiperOrigin-RevId: 1002808922
Change-Id: Iea958478b558c0a5f80e6edd84bc13f20d6a9b98
…allowed copts policies.

Implement the design changes specified in design_banned_warnings.md and
design_modular_copts_policies.md:
- Update CcDisallowedCoptsInfo to provide package_allowlist, target_allowlist, and policy_label.
- Update cc_copts_policy to accept package_allowlist and target_allowlist.
- Update tools/cpp/policy/banned_warnings/BUILD to use package_allowlist.
- Update third_party/crosstool/v18/stable/crosstool_configuration.bzl and third_party/apple_crosstool/crosstool.bzl to forward package_allowlist, target_allowlist, and policy_label.
- Update cc_helper.bzl to exempt targets matching entries in package_allowlist and target_allowlist, and emit "disallowed by '<policy_label>'" in violation messages.
- Add and update unit tests in tools/cpp/policy/ and third_party/bazel_rules/rules_cc/tests/cc/common/.

Startblock:
  - BTRGuardian allows unknown commit

Startblock:
  * // Put other blockers before this line to avoid churning.
  * has lgtm
  * is approved
  * and then
  * all comments are resolved
  * and then
  *[] allows unknown commit
PiperOrigin-RevId: 1002924230
Change-Id: I35d1aefd0e0ecc47c81fa45c62481d534ca95a3f
This silences noise that encourages us to bump our MVS dep versions
which would affect users and we should only bump if we really need to

Closes bazelbuild#917

COPYBARA_INTEGRATE_REVIEW=bazelbuild#917 from keith:ks/add-check_direct_dependencies-off-to-bazelrc d525a7d
PiperOrigin-RevId: 1003300828
Change-Id: I3f7cce6f2988e426dcd819b797b0a1a731fae4ea
Closes bazelbuild#912

COPYBARA_INTEGRATE_REVIEW=bazelbuild#912 from PikachuHyA:msvc_support b3056e0
PiperOrigin-RevId: 1003457743
Change-Id: Ic6e1b559130a00b43c7b4c770abbc0f17ea2c8bc
Buildifier warns about this now

Closes bazelbuild#891

COPYBARA_INTEGRATE_REVIEW=bazelbuild#891 from keith:ks/update-location-to-execpath e0d7ca9
PiperOrigin-RevId: 1003826865
Change-Id: I8de712ba8d978a26bccb0cc74bc9d8faab78daab
@tamird
tamird force-pushed the type-contracts branch 3 times, most recently from 749ce49 to 1b8a555 Compare October 22, 2026 02:42
Combining `--features=cpp_modules` with either `--features=parse_headers` or `--compilation_mode opt` was broken, this seems to fix it. This adds an early exit copied from `_create_cc_compile_actions` that was missing in `_create_cc_compile_actions_with_cpp20_module_helper`:

https://github.com/bazelbuild/rules_cc/blob/c1ba7a0d5a5f51f6539eb94f32ef8d9fedd0250d/cc/private/compile/compile.bzl#L1249-L1254

I tested the changes in [my personal monorepo](https://github.com/rdong8/monorepo) + added a test for `parse_headers`.

This was found with the help of an LLM

Closes bazelbuild#876

COPYBARA_INTEGRATE_REVIEW=bazelbuild#876 from rdong8:cpp-modules-fixes 77b47b7
PiperOrigin-RevId: 1004479640
Change-Id: I2d1d38ce1c85bf027d3749a78bb4b11eb531b80b
fmeum and others added 7 commits October 28, 2026 11:08
bazelbuild#950)

`cc_shared_library` generates its DEF file (with `windows_export_all_symbols` or a toolchain-provided `generate_def_file` action) with a `LIBRARY` statement that is the target name. The linker records that name in the import library, so for a target `foo_shared` with `shared_lib_name = "foo1.dll"`, dependents import `foo_shared.dll`, which doesn't exist at runtime. The same happens without `shared_lib_name` on toolchains whose DLL name pattern adds a prefix, e.g. `libfoo_shared.dll` on MinGW.

This passes the actual output file name instead, which is what `cc_binary(linkshared = True)` already does.

Checked with lld-link: a DEF file with `LIBRARY foo_shared` linked with `/out:foo1.dll` yields an import library whose members reference `foo_shared.dll`, while a DEF file with the matching name (or without `LIBRARY`) yields references to `foo1.dll`. With this change, the `DefParser` action for the example above receives `foo1.dll` instead of `foo_shared_named`.

Found while looking into bazelbuild/bazel#31951.

Closes bazelbuild#950

COPYBARA_INTEGRATE_REVIEW=bazelbuild#950 from fmeum:csl-def-library-name 1a70761
PiperOrigin-RevId: 1009039396
Change-Id: I6405d69e0b6158b9f3f445c6eadeb878ef57110b
The MinGW toolchain config only overrides the name pattern for executables, so dynamic libraries (`cc_shared_library` outputs and `cc_library`'s own DLLs) fall back to `lib<name>.so`. lld in MinGW mode doesn't search for `.so` files when resolving `-l<name>`, so linking anything against such a library fails with `unable to find library -l<name>`.

With a `lib` + `.dll` pattern, which is MinGW's naming convention, `-l<name>` resolves directly to the DLL.

Closes bazelbuild#951

COPYBARA_INTEGRATE_REVIEW=bazelbuild#951 from fmeum:mingw-dll-artifact-name 86c9c24
PiperOrigin-RevId: 1009255440
Change-Id: Ibd47bd0ddf38eecc3ff9ebe9b3643bba1139bacc
Fixes bazelbuild#553

Closes bazelbuild#887

COPYBARA_INTEGRATE_REVIEW=bazelbuild#887 from keith:ks/fallback-to-finding-clang-scan-deps-on-path c867918
PiperOrigin-RevId: 1009256727
Change-Id: Ia8f5499e00e2eab199ab69ce5c82414482902508
`_get_public_hdrs` now checks `extensions.DISALLOWED_HDRS_FILES` through a dictionary, avoiding repeated linear membership scans. `_check_file_extension` calls `is_versioned_shared_library_extension_valid` only when `file.extension` begins with a digit, as required by versioned `.so` and `.dylib` names.

Validation: `buildifier -mode=check cc/common/cc_helper.bzl`; `bazel test //tests/cc/common:cc_library_configured_target_tests //tests/cc/common:cc_import_configured_target_tests` (19 tests passed).

Closes bazelbuild#871

COPYBARA_INTEGRATE_REVIEW=bazelbuild#871 from dzbarsky:codex/filter-versioned-extension-checks 6a42930
PiperOrigin-RevId: 1009305857
Change-Id: If70e16a8d9cfd1c99299d5390658887e6f2f3b94
*** Reason for rollback ***

Pure rollback

*** Original change description ***

Starlarkify _cc_internal.create_cc_compile_action_template().

Replace _cc_internal.create_cc_compile_action_template() with ctx.actions.map_directory() and _cc_internal.create_cc_compile_action().

PiperOrigin-RevId: 1009396286
Change-Id: I9ca9ca710f2eb1a6f091ea108abca2a88859a2c6
unknown commit updates `cc_shared_library` to pass the output DLL's basename to `DefParser` when generating a Windows DEF file, but does not include automated tests for the default toolchain naming or `shared_lib_name` overrides.

Expose a `dynamic_library_pattern` build setting flag on the mock C++ toolchain configuration so analysis tests can override the `dynamic_library` artifact name prefix and extension. Add Starlark analysis tests verifying that `DefParser` receives the expected DLL basename and that `CppLink` consumes the generated `.gen.def` file across the default toolchain pattern, MinGW and MSVC `dynamic_library` patterns, an explicit `shared_lib_name` override, and a `shared_lib_name` containing a subdirectory path.

PiperOrigin-RevId: 1009544025
Change-Id: I404f52ac101d8ffd6baf163caf1ca275b4d67d15
…runfiles collection

`_collect_runfiles` previously flattened the transitive `linker_inputs` depset of every direct `deps` target twice—returning an empty list when linking statically without LCOV coverage—while `ctx.runfiles(collect_default = True)` already merges `default_runfiles` from `deps`, `data`, and C++ runtimes. Skipping static `deps` `linker_inputs` traversal when coverage is disabled, deduplicating `data` dynamic library collection, and keeping runtime library artifacts as depsets avoids quadratic `direct_deps * transitive_deps` Starlark iteration and list allocations during `cc_binary` analysis.

PiperOrigin-RevId: 1009656955
Change-Id: I107c0e3d1bf25e9186f84dcf8d3363a77513f044
@tamird
tamird force-pushed the type-contracts branch 2 times, most recently from 7055eae to f351ef1 Compare October 29, 2026 17:19
jke-jumptrading and others added 6 commits October 29, 2026 14:29
)

From the bazel documentation:

> The resulting static library contains the object files of the targets listed in deps as well as their transitive dependencies, with preference given to PIC objects.

This is currently not true as cc_static_archive will archive both the -fPIC and non -fPIC artifacts, leading to duplicate symbol errors.  This proposes a fix to match the specification again.

Closes bazelbuild#930

COPYBARA_INTEGRATE_REVIEW=bazelbuild#930 from jke-jumptrading:fix-static-lib-pic-dedup eeb58e0
PiperOrigin-RevId: 1009967005
Change-Id: I24cba3a97048f0f25d34156180574d1d02ecdf2d
PiperOrigin-RevId: 1010161975
Change-Id: I8cbbc519fa3a1b4bd30dd4c60af37170e58b5813
*** Reason for rollback ***

Breaks Google Beam builds, for example:
```
dev_config_cli: error while loading shared libraries: libsystemd.so: cannot open shared object file: No such file or directory
```

*** Original change description ***

Avoid redundant `linker_inputs` depset flattening during `cc_binary` runfiles collection

`_collect_runfiles` previously flattened the transitive `linker_inputs` depset of every direct `deps` target twice—returning an empty list when linking statically without LCOV coverage—while `ctx.runfiles(collect_default = True)` already merges `default_runfiles` from `deps`, `data`, and C++ runtimes. Skipping static `deps` `linker_inputs` traversal when coverage is disabled, deduplicating `data` dynami...

***

Startblock:
  * // Put other blockers before this line to avoid churning.
  * has lgtm
  * is approved
  * and then
  * all comments are resolved
  * and then
  *[] allows unknown commit
PiperOrigin-RevId: 1010209277
Change-Id: I24eaf238ba592d1ec2b9541f6f4e3934dabbe56b
See individual commits for details.

Closes bazelbuild#938

COPYBARA_INTEGRATE_REVIEW=bazelbuild#938 from sin-ack:linkopts-docs-fix c414826
PiperOrigin-RevId: 1010244192
Change-Id: I218ccf5d06eb27572777533609e89b18d76c06c3
Validate extra link-time library callbacks with `ctx.actions.args().add_all([], map_each = callback)` immediately before invocation. `Args.add_all` performs the same top-level-function check as `_cc_internal.check_toplevel`, so the C++ Java helper is no longer needed.

Validation: 88 C++ common and binary analysis tests passed, including new tests for top-level and nested callbacks.

Closes bazelbuild#827

COPYBARA_INTEGRATE_REVIEW=bazelbuild#827 from dzbarsky:codex/starlarkify-check-toplevel 73c8487
PiperOrigin-RevId: 1011439742
Change-Id: Id543c4e4dd18385b288e1129be95641b70d2560c
When Clang is the compiler, the autoconfigured toolchain passes the linker's absolute path through `-fuse-ld=`, e.g.
`-fuse-ld=/usr/bin/ld.lld`. Clang 12 deprecated `-fuse-ld=<path>` in favor of `--ld-path=` (https://reviews.llvm.org/D83015) because the `-fuse-ld=` value is the linker flavor, which a path loses. For example, on Darwin `-fuse-ld=/path/to/ld64.lld` makes the driver pass ld64's version-dependent options to lld.

Pass `-fuse-ld=lld --ld-path=/usr/bin/ld.lld` (or the gold equivalent) when Clang accepts `--ld-path=`, and fall back to `-fuse-ld=<path>` otherwise.

Fixes bazelbuild#934

Closes bazelbuild#935

COPYBARA_INTEGRATE_REVIEW=bazelbuild#935 from MaskRay:ld-path 4245e78
PiperOrigin-RevId: 1012001045
Change-Id: I59ab45762d04dd9be202c2515135b60d21519ef4
@tamird
tamird force-pushed the type-contracts branch 2 times, most recently from c5a056a to bd32755 Compare November 3, 2026 15:15
Since f042218, `_find_linker_flags` returns compiler flags, but `configure_unix_toolchain` still reads `gold_or_lld_linker_path` to find the linker directory. Bazel rejects the undefined name when it loads `@local_config_cc`.

Return the linker name or path alongside its flags. Use the name to find the directory for `-B` and pass the flags to the compiler.

Prepared by Codex on behalf of @tamird.

Closes bazelbuild#971

COPYBARA_INTEGRATE_REVIEW=bazelbuild#971 from tamird:fix-autoconfigured-linker-path 80a7dad
PiperOrigin-RevId: 1013101108
Change-Id: I0a2874f0aaef98a58cc9c4da24df72e0dbcf1cb4
fmeum and others added 10 commits November 3, 2026 10:27
`cc_configure` resolved all of its labels with `repository_ctx.path` up front (`resolve_labels`) to avoid expensive restarts of the repo rule. Since Bazel 7.1, repo rules run on worker threads by default (`--experimental_worker_for_repo_fetching=auto`), so missing dependencies no longer restart them.

Resolving a label to a path makes the repo containing the file available on disk. With Bazel's `--experimental_remote_repo_contents_cache`, `rules_cc` is otherwise only kept in memory, so this downloads all of its files before the C++ toolchain can be configured (bazelbuild/bazel#31005). In Bazel's own CI with the cache enabled (bazelbuild/bazel#31755), this took 0.8 s per job on Linux and 2.1 s on Windows arm64, on the critical path of every build.

This change:
* passes templates to `repository_ctx.template` by label, which only reads the template itself with bazelbuild/bazel#31493,
* copies the toolchain config `.bzl` files (and the BSD `BUILD` file and the MSYS error script) into the generated repo instead of symlinking them, so that they keep their names (e.g. `@local_config_cc//:cc_toolchain_config.bzl`, which is loaded by other projects) without requiring `rules_cc` on disk,
* copies `generate_system_module_map.sh` into the generated repo before running it and deletes it afterwards.

`resolve_labels` is no longer used, but is kept since `lib_cc_configure.bzl` is loaded by other projects.

Closes bazelbuild#944

COPYBARA_INTEGRATE_REVIEW=bazelbuild#944 from fmeum:cc-configure-no-eager-paths 2a44513
PiperOrigin-RevId: 1013118324
Change-Id: I340540da6e7404ecbb404058fffca9a65caf59a5
Give toolchain configuration, provider collectors and rule helpers typed
inputs and results. Keep simple signatures in their implementations;
represent provider fields and generic functions in companion interfaces.
Export the interfaces for dependent repositories. Run sty on the
implementations and report findings across the remaining Starlark files.
Move four companion declarations into the implementations they describe.
Keep the same strict sources and let the shared action select the
complete advisory inventory.
Declare each macro's inputs at its definition. Derive the directory
tool's forwarded keywords from cc_tool so both macros share one
contract. Check the repository rule at its implementation.

Remove four companion interfaces and their registrations. Document
which generic binders and cross-module types the others require.
Link the three wrapper signatures to the Bazel proposal for deriving
keyword arguments from a wrapped rule.
Identify the native types each exceptional comment needs. Document
the language boundary beside its use.
Follow the repository’s release-tag convention for external actions.
Use the same checkout and checker revisions as the previous workflow.
Set one severity for the eleven strict diagnostics. Let the pinned
checker define the group so an upgrade can extend it without edits to
the project configuration.
Since 60dc620, the root module replaces Skylib with a fork to get
type information. Bazel also uses that fork for ordinary builds.

Declare the build macro, path helpers and two providers against Skylib
1.9.0. Check their signatures against the installed sources. Report
incomplete types in three files from the release while checking their
contracts and callers as errors.
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.