Skip to content

refactor!: remove unstable_configure_command, remove unstable_ prefix from annotate_packages#1357

Open
jbedard wants to merge 1 commit into
mainfrom
not-unstable
Open

refactor!: remove unstable_configure_command, remove unstable_ prefix from annotate_packages#1357
jbedard wants to merge 1 commit into
mainfrom
not-unstable

Conversation

@jbedard

@jbedard jbedard commented Jul 20, 2026

Copy link
Copy Markdown
Member

Changes are visible to end-users: yes

  • Searched for relevant documentation and updated as needed: yes
  • Breaking change (forces users to change their own code or config): yes
  • Suggested release notes appear below: yes

BREAKING: remove unstable_configure_command, remove unstable_ prefix from annotate_packages

Test plan

  • Covered by existing test cases

@jbedard
jbedard requested a review from xangcastle July 20, 2026 07:23
@aspect-workflows

aspect-workflows Bot commented Jul 20, 2026

Copy link
Copy Markdown

✨ Aspect Workflows Tasks

📅 Mon Jul 20 08:42:14 UTC 2026

✅ 40 successful tasks

  • ✅ buildifier · ⏱ 17.2s · 🐙 GitHub Actions · ☑️ Check
    💬 Format complete (clean)
  • ✅ gazelle · ⏱ 16.5s · 🐙 GitHub Actions · ☑️ Check
    💬 Gazelle complete (clean)
  • ✅ test-e2e-bazel-8 [test] · ⏱ 2m 33s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (204/204 passed)
  • ✅ test-e2e-bazel-9 [test] · ⏱ 2m 29s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (198/198 passed)
  • ✅ test-e2e-interpreter-build-config-bazel-8 [test] · ⏱ 23s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-e2e-interpreter-build-config-bazel-9 [test] · ⏱ 47.1s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-e2e-interpreter-input-validation-bazel-8 [test] · ⏱ 16.6s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-e2e-interpreter-input-validation-bazel-9 [test] · ⏱ 38.3s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-e2e-interpreter-runtime-metadata-bazel-8 [test] · ⏱ 22.5s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (2/2 passed)
  • ✅ test-e2e-interpreter-runtime-metadata-bazel-9 [test] · ⏱ 36.8s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (2/2 passed)
  • ✅ test-e2e-interpreter-toolchain-settings-bazel-8 [test] · ⏱ 19s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-e2e-interpreter-toolchain-settings-bazel-9 [test] · ⏱ 43.1s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-e2e-rules-proto-grpc-python-bazel-8 [test] · ⏱ 1m 28s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-e2e-rules-proto-grpc-python-bazel-9 [test] · ⏱ 1m 6s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-e2e-rules-python-interop-bazel-8 [test] · ⏱ 32s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (7/7 passed)
  • ✅ test-e2e-rules-python-interop-bazel-9 [test] · ⏱ 56.6s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (7/7 passed)
  • ✅ test-examples-debugger-bazel-8 [test] · ⏱ 28.3s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed · 1 cached)
  • ✅ test-examples-debugger-bazel-9 [test] · ⏱ 1m 9s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-examples-dev_deps-bazel-8 [test] · ⏱ 26.6s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed · 1 cached)
  • ✅ test-examples-dev_deps-bazel-9 [test] · ⏱ 52.1s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-examples-django-bazel-8 [test] · ⏱ 25.7s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed · 1 cached)
  • ✅ test-examples-django-bazel-9 [test] · ⏱ 39.7s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-examples-multi_version-bazel-8 [test] · ⏱ 24.7s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (2/2 passed)
  • ✅ test-examples-multi_version-bazel-9 [test] · ⏱ 52.2s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (2/2 passed)
  • ✅ test-examples-protobuf-bazel-8 [test] · ⏱ 1m 40s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-examples-protobuf-bazel-9 [test] · ⏱ 1m 35s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-examples-py_binary-bazel-8 [test] · ⏱ 21.7s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed · 1 cached)
  • ✅ test-examples-py_binary-bazel-9 [test] · ⏱ 36.8s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-examples-py_pex_binary-bazel-8 [test] · ⏱ 24.6s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed · 1 cached)
  • ✅ test-examples-py_pex_binary-bazel-9 [test] · ⏱ 59.3s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-examples-py_venv-bazel-8 [test] · ⏱ 24.7s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (3/3 passed)
  • ✅ test-examples-py_venv-bazel-9 [test] · ⏱ 45.3s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (3/3 passed)
  • ✅ test-examples-pytest-bazel-8 [test] · ⏱ 50.4s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (9/9 passed)
  • ✅ test-examples-pytest-bazel-9 [test] · ⏱ 1m 15s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (9/9 passed)
  • ✅ test-examples-uv_pip_compile-bazel-8 [test] · ⏱ 27s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-examples-uv_pip_compile-bazel-9 [test] · ⏱ 38.8s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-examples-virtual_deps-bazel-8 [test] · ⏱ 26.3s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-examples-virtual_deps-bazel-9 [test] · ⏱ 38.5s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-root-bazel-8 [test] · ⏱ 3m 7s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (258/258 passed)
  • ✅ test-root-bazel-9 [test] · ⏱ 3m 1s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (257/257 passed)

⏱ Last updated Mon Jul 20 08:46:41 UTC 2026 · 📊 GitHub API quota 443/15,000 (3% used, resets in 55m)
🚀 Powered by Aspect CLI (v2026.28.2)  |  Aspect Build · X · LinkedIn · YouTube

@jbedard

jbedard commented Jul 20, 2026

Copy link
Copy Markdown
Member Author

@tamird can confirm if you are using these?

@github-actions

github-actions Bot commented Jul 20, 2026

Copy link
Copy Markdown

py_binary startup benchmark

Version Mean (ms) Median (ms) ± stddev vs BCR vs main Build (s)
BCR 1.11.7 (baseline) 186.557 186.385 ±6.985 36.31
HEAD main 62.266 61.842 ±2.348 -66.6% 11.30
This PR 60.644 60.535 ±1.872 -67.5% -2.6% 8.09

Measured with hyperfine --warmup 5 --runs 50 on Linux
Gate: PR vs HEAD main (threshold: 10%). BCR is shown only as a historical baseline.
Build time: cold bazel build //:bench with isolated output base, no disk cache.

sys.path quality

Version sys.path entries distinct site-packages roots duplicate realpaths
BCR 1.11.7 (baseline) 6 1 0
HEAD main 7 2 0
This PR 7 2 0

sys.path quality measured by bench_syspath inside the assembled venv. Duplicate realpaths indicate symlink redundancy; many distinct site-packages roots suggest an inefficient venv layout.

Bazel analysis benchmark

Version Mean (ms) Median (ms) ± stddev vs BCR vs main Packages Targets
BCR 2.0.0-alpha.4 (baseline) 10224.185 10213.531 ±230.133 101 301
HEAD main 9506.816 9487.917 ±160.290 -7.0% 101 301
This PR 9509.773 9535.241 ±122.620 -7.0% +0.0% 101 301

Measured with hyperfine --warmup 1 --runs 10 on Linux
Gate: PR vs HEAD main (threshold: 10%). BCR is shown only as a historical baseline.
Command: cold bazel build --nobuild //workspace/... with isolated output base, no disk cache.

Auxiliary metrics

Version Loaded packages Configured targets
BCR 2.0.0-alpha.4 (baseline) 101 301
HEAD main 101 301
This PR 101 301

tamird commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

OpenAI does not use unstable_configure_command. It does use uv.unstable_annotate_packages eight times in MODULE.bazel (the main lock and seven additional universes), so the rename will require a mechanical update in the downstream bump. The new uv.annotate_packages API covers those calls.

@tamird tamird left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The API cleanup is fine for OpenAI, but this removes the only coverage for a still-live and documented custom-BUILD/pre-build-patch path. Please either retain a focused repository-rule regression or remove that unreachable machinery and its documented contract together.

hub_name = "custom_complete_invalid_overrides",
lock = "//:uv.lock",
pyproject = "//:pyproject.toml",
# sdist_build reparses command strings from its generated repository.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This deletes the only complete-custom-BUILD fixture that proves pre-build patch context reaches configure_command and that resource_set, env, monitor_memory, and toolchains are rejected when build_file_content bypasses the generated wheel rule. The sdist_build branch and the documented constraints remain live, and #1347 extends this exact fixture/contract for explicit-empty console scripts. Could we retain or move a focused repository-rule regression, or remove the now-unreachable custom-content machinery/docs consistently?

@tamird tamird Jul 20, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code deletion now looks consistent. Two obsolete build_file_content passages remain in docs/uv-patching.md: the monitoring paragraph around lines 183-186 and the constraints bullet around lines 220-224 that still promises pre_build_patches in the configure context. Please delete both.

tamird commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

I traced reachability further: after removing uv.project(...unstable_configure_command), the UV extension can only pass the bundled detector, which never emits build_file_content, and I found no direct repository-rule consumers. The smaller option is to delete the now-dead build_file_content/configure-context branch and its documentation/validation, then drop #1347's corresponding custom-complete changes. Retaining a regression only makes sense if the lower-level hook is intended to remain supported.

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.

2 participants