Skip to content

test(uv): multi-version preference#1229

Draft
xangcastle wants to merge 4 commits into
1.xfrom
xangcastle/multi-version-preference
Draft

test(uv): multi-version preference#1229
xangcastle wants to merge 4 commits into
1.xfrom
xangcastle/multi-version-preference

adding test case to reproduce the issue

58208cd
Select commit
Loading
Failed to load commit list.
Aspect Workflows / aspect / test (test-e2e-bazel-8) succeeded Jul 4, 2026 in 35m 43s

✅ test //... · Tests passed

✅ Succeeded · 📅 Sat Jul 4 16:46:04 UTC 2026 · ⏱ 35m 44s — 🔧 Setup 4.7s · 🧪 Test 35m 39s
👤 runner · 🖥 runnervmjbsos · 💎 aspect-cli v2026.22.44
📦 206 targets · ⚡ 83,001 of 170,697 actions executed (51% cached) · 🧪 63 of 63 tests executed (0% cached) · 🔧 bazel v8.7.0 test · 🎯 k8 · ⚙️ fastbuild
🐙 GitHub Actions

💬 Last update: test task complete

Details

🎯 Bazel targets (206)

✅ 63 Tests Passed
Label                                                                     | Target Type                           | Duration
--------------------------------------------------------------------------+---------------------------------------+---------
//cases/cross-repo-610:test                                               | _py_venv_test                         | 169ms   
//cases/firebase-admin-import:test                                        | py_test                               | 3.9s    
//cases/firebase-admin-import:test_exec                                   | _empty_test                           | 93ms    
//cases/freethreaded-805:test                                             | platform_transition_test              | 8.5s    
//cases/interpreter-features-836:test                                     | container_structure_test              | 15.6s   
//cases/interpreter-provisioning:test                                     | _py_venv_test                         | 428ms   
//cases/interpreter-version-541:test_3_10_classic                         | py_test                               | 785ms   
//cases/interpreter-version-541:test_3_10_venv                            | _py_venv_test                         | 640ms   
//cases/interpreter-version-541:test_3_11_classic                         | py_test                               | 591ms   
//cases/interpreter-version-541:test_3_11_venv                            | _py_venv_test                         | 576ms   
//cases/interpreter-version-541:test_3_9_classic                          | py_test                               | 1s      
//cases/interpreter-version-541:test_3_9_venv                             | _py_venv_test                         | 416ms   
//cases/pth-namespace-547:test                                            | _py_venv_test                         | 538ms   
//cases/pth-namespace-547:test_legacy                                     | py_test                               | 388ms   
//cases/py-library-defaultinfo-891:default_info_no_transitive_srcs_test   | _default_info_no_transitive_srcs_test | 71ms    
//cases/pytest-main-867:test_collection_check                             | py_test                               | 5.7s    
//cases/pytest-main-867:test_direct_pytest_main                           | py_test                               | 2.7s    
//cases/pytest-main-867:test_example                                      | py_test                               | 2.7s    
//cases/pytest-main-867:test_multi_src                                    | py_test                               | 3s      
//cases/pytest-main-867:test_naming_regression                            | py_test                               | 2.5s    
//cases/pytest-mock-530:test_mock_py_test                                 | py_test                               | 3s      
//cases/pytest-mock-530:test_mock_py_venv_test                            | _py_venv_test                         | 3.9s    
//cases/pytest-subdir-imports:test_subdir_import                          | py_test                               | 928ms   
//cases/pytest-xdist-integration:test_xdist                               | py_test                               | 6.9s    
//cases/repository-rule-deps-299:all_direct                               | py_test                               | 596ms   
//cases/repository-rule-deps-299:test                                     | py_test                               | 1.1s    
//cases/root-dir-paths-538:test_root_dir                                  | sh_test                               | 177ms   
//cases/root-dir-paths-538:test_root_dir_venv                             | sh_test                               | 428ms   
//cases/unconstrained-dependencies:get_python_package_version_humble_test | py_test                               | 3.4s    
//cases/unconstrained-dependencies:get_python_package_version_main_test   | py_test                               | 2.5s    
//cases/uv-abi3-compat-853:test_import                                    | _py_venv_test                         | 286ms   
//cases/uv-conflict-817:test_a                                            | _py_venv_test                         | 466ms   
//cases/uv-conflict-817:test_b                                            | _py_venv_test                         | 623ms   
//cases/uv-conflict-gte:test_a                                            | _py_venv_test                         | 384ms   
//cases/uv-conflict-gte:test_b                                            | _py_venv_test                         | 461ms   
//cases/uv-conflict-max-863:test_a                                        | _py_venv_test                         | 429ms   
//cases/uv-conflict-max-863:test_b                                        | _py_venv_test                         | 576ms   
//cases/uv-conflict-tilde-856:test_a                                      | _py_venv_test                         | 446ms   
//cases/uv-conflict-tilde-856:test_b                                      | _py_venv_test                         | 88ms    
//cases/uv-console-script-binary:test                                     | sh_test                               | 3.2s    
//cases/uv-dep-hashes:test_import                                         | _py_venv_test                         | 756ms   
//cases/uv-dep-hashes:test_lockfile_hashless                              | sh_test                               | 87ms    
//cases/uv-deps-650/airflow:airflow                                       | _py_venv_test                         | 893ms   
//cases/uv-deps-650/crossbuild:exec_toolchain_resolution_test             | sh_test                               | 142ms   
//cases/uv-deps-650/extras:extras                                         | _py_venv_test                         | 1.2s    
//cases/uv-deps-650/say:say                                               | _py_venv_test                         | 181ms   
//cases/uv-include-group-versions:include_group_versions_build            | _py_venv_test                         | 563ms   
//cases/uv-include-group-versions:include_group_versions_test             | _py_venv_test                         | 732ms   
//cases/uv-include-group:include_group                                    | _py_venv_test                         | 2.4s    
//cases/uv-legacy-deps-750:googlemaps                                     | _py_venv_test                         | 1.4s    
//cases/uv-no-sdist-754:test                                              | sh_test                               | 90ms    
//cases/uv-patching-829:test                                              | _py_venv_test                         | 743ms   
//cases/uv-platform-filter-844:test                                       | sh_test                               | 91ms    
//cases/uv-plus-version:test                                              | _py_venv_test                         | 1.7s    
//cases/uv-toolchain:test                                                 | sh_test                               | 88ms    
//cases/uv-whl-install-output-group:test                                  | _py_venv_test                         | 1.1s    
//cases/uv-workspace-789:test                                             | _py_venv_test                         | 2.3s    
//cases/venv-bin-scripts-423:test                                         | _py_venv_test                         | 521ms   
//cases/venv-conflict-608:test_no_venv_conflict                           | _empty_test                           | 158ms   
//cases/venv-internal-symlinks:test_internal_symlinks                     | _py_venv_test                         | 551ms   
//cases/venv-internal-symlinks:test_internal_symlinks_legacy              | py_test                               | 491ms   
//cases/venv-isolated-mode-703:test                                       | _py_venv_test                         | 1s      
//cases/windows-crossbuild-837:test                                       | sh_test                               | 92ms    
✅ 73 Targets Built
Label                                                                                  | Target Type                  
---------------------------------------------------------------------------------------+------------------------------
//cases/cross-repo-610/subrepo_a:foo                                                   | py_library                   
//cases/cross-repo-610/subrepo_b:bar                                                   | py_library                   
//cases/firebase-admin-import:firebase_importer                                        | py_binary                    
//cases/firebase-admin-import:run_in_exec                                              | genrule                      
//cases/interpreter-features-836:amd64_image                                           | platform_transition_filegroup
//cases/interpreter-features-836:amd64_layers                                          | platform_transition_filegroup
//cases/interpreter-features-836:image                                                 | oci_image                    
//cases/interpreter-features-836:image.digest                                          | jq_rule                      
//cases/interpreter-features-836:image_index_json                                      | directory_path               
//cases/interpreter-features-836:image_index_json_cp                                   | _copy_file                   
//cases/interpreter-features-836:image_write_entrypoint                                | _write_file                  
//cases/interpreter-features-836:layers                                                | filegroup                    
//cases/interpreter-features-836:layers.manifest                                       | mtree_spec                   
//cases/interpreter-features-836:layers_default                                        | tar                          
//cases/interpreter-features-836:layers_interpreter                                    | tar                          
//cases/interpreter-features-836:layers_manifests                                      | genrule                      
//cases/interpreter-features-836:layers_packages                                       | tar                          
//cases/interpreter-version-541:expanded_test_3_10.py                                  | expand_template              
//cases/interpreter-version-541:expanded_test_3_11.py                                  | expand_template              
//cases/interpreter-version-541:expanded_test_3_9.py                                   | expand_template              
//cases/oci/py_image_layer/branding:branding                                           | py_library                   
//cases/oci/py_image_layer:image_load_write_tags                                       | _write_file                  
//cases/oci/py_image_layer:image_write_entrypoint                                      | _write_file                  
//cases/oci/py_venv_image_layer:image_load_write_tags                                  | _write_file                  
//cases/oci/py_venv_image_layer:image_write_entrypoint                                 | _write_file                  
//cases/pytest-main-867:test_collection_check.pytest_paths                             | pytest_paths                 
//cases/pytest-main-867:test_example.pytest_paths                                      | pytest_paths                 
//cases/pytest-main-867:test_multi_src.pytest_paths                                    | pytest_paths                 
//cases/pytest-main-867:test_naming_regression.pytest_paths                            | pytest_paths                 
//cases/pytest-mock-530:test_mock_py_test.pytest_paths                                 | pytest_paths                 
//cases/pytest-subdir-imports:lib                                                      | py_library                   
//cases/pytest-subdir-imports:test_subdir_import.pytest_paths                          | pytest_paths                 
//cases/pytest-xdist-integration:test_xdist.pytest_paths                               | pytest_paths                 
//cases/repository-rule-deps-299/direct/directmod:directmod                            | py_library                   
//cases/repository-rule-deps-299/imported/flat:flat                                    | py_library                   
//cases/repository-rule-deps-299/imported:subdir                                       | py_library                   
//cases/repository-rule-deps-299/toplevel:toplevel                                     | py_library                   
//cases/root-dir-paths-538:check_paths_bin                                             | py_binary                    
//cases/root-dir-paths-538:check_paths_venv_bin                                        | _py_venv_binary              
//cases/unconstrained-dependencies:get_python_package_version_humble_test.pytest_paths | pytest_paths                 
//cases/unconstrained-dependencies:get_python_package_version_main_test.pytest_paths   | pytest_paths                 
//cases/unconstrained-dependencies:print_python_package_version_humble                 | py_binary                    
//cases/unconstrained-dependencies:print_python_package_version_main                   | py_binary                    
//cases/uv-console-script-binary:_mkdocs_search                                        | genrule                      
//cases/uv-console-script-binary:_mkdocs_search_binary                                 | _py_venv_binary              
//cases/uv-console-script-binary:_whoowns_explicit_search                              | genrule                      
//cases/uv-console-script-binary:_whoowns_explicit_search_binary                       | _py_venv_binary              
//cases/uv-console-script-binary:_whoowns_search                                       | genrule                      
//cases/uv-console-script-binary:_whoowns_search_binary                                | _py_venv_binary              
//cases/uv-console-script-binary:mkdocs                                                | _py_venv_binary              
//cases/uv-console-script-binary:whoowns                                               | _py_venv_binary              
//cases/uv-console-script-binary:whoowns_explicit                                      | _py_venv_binary              
//cases/uv-deps-650/crossbuild:image_write_entrypoint                                  | _write_file                  
//cases/uv-deps-650/crossbuild:unpack_path                                             | unpack_toolchain_path        
//cases/uv-deps-650/crossbuild:unpack_path_for_arm64                                   | unpack_toolchain_path        
//cases/uv-deps-650/crossbuild:unpack_path_for_arm64_transition                        | platform_transition_filegroup
//cases/uv-deps-650/third_party/cowsay:cowsay                                          | py_library                   
//cases/uv-gazelle-778:_gazelle_python_manifest_pypi_airflow_whls                      | platform_transition_filegroup
//cases/uv-gazelle-778:_gazelle_python_manifest_pypi_crossbuild_whls                   | platform_transition_filegroup
//cases/uv-gazelle-778:_gazelle_python_manifest_pypi_extras_whls                       | platform_transition_filegroup
//cases/uv-gazelle-778:_gazelle_python_manifest_pypi_say_whls                          | platform_transition_filegroup
//cases/uv-gazelle-778:gazelle_python_manifest                                         | _modules_mapping             
//cases/uv-gazelle-778:gazelle_python_manifest.update                                  | sh_binary                    
//cases/uv-no-sdist-754:pywin32_targets                                                | genquery                     
//cases/uv-platform-filter-844:watchdog_targets                                        | genquery                     
//cases/uv-toolchain:uv_bazel_fork_version                                             | genrule                      
//cases/uv-toolchain:uv_custom_version                                                 | genrule                      
//cases/uv-toolchain:uv_legacy_version                                                 | genrule                      
//cases/uv-toolchain:uv_mirror_version                                                 | genrule                      
//cases/uv-toolchain:uv_version                                                        | genrule                      
//cases/venv-conflict-608:app                                                          | py_binary                    
//cases/windows-crossbuild-837:windows_arm64_toolchain_deps                            | genquery                     
//cases/windows-crossbuild-837:windows_x64_toolchain_deps                              | genquery                     
⤵️ 70 Targets Skipped
Label                                                         | Target Type                  
--------------------------------------------------------------+------------------------------
//cases/oci/py_image_layer:amd64_image                        | platform_transition_filegroup
//cases/oci/py_image_layer:image                              | oci_image                    
//cases/oci/py_image_layer:image.digest                       | jq_rule                      
//cases/oci/py_image_layer:image_index_json                   | directory_path               
//cases/oci/py_image_layer:image_index_json_cp                | _copy_file                   
//cases/oci/py_image_layer:image_load                         | oci_load                     
//cases/oci/py_image_layer:my_app_bin                         | py_binary                    
//cases/oci/py_image_layer:my_app_layers                      | filegroup                    
//cases/oci/py_image_layer:my_app_layers.manifest             | mtree_spec                   
//cases/oci/py_image_layer:my_app_layers_default              | tar                          
//cases/oci/py_image_layer:my_app_layers_interpreter          | tar                          
//cases/oci/py_image_layer:my_app_layers_manifests            | genrule                      
//cases/oci/py_image_layer:my_app_layers_packages             | tar                          
//cases/oci/py_image_layer:my_app_layers_test                 | _write_source_file           
//cases/oci/py_image_layer:my_app_layers_test_listing         | genrule                      
//cases/oci/py_image_layer:my_app_layers_test_test            | _diff_test                   
//cases/oci/py_image_layer:platform_image                     | platform_transition_filegroup
//cases/oci/py_image_layer:platform_layers                    | platform_transition_filegroup
//cases/oci/py_image_layer:py_image_test                      | container_structure_test     
//cases/oci/py_venv_image_layer:amd64_image                   | platform_transition_filegroup
//cases/oci/py_venv_image_layer:amd64_layers                  | platform_transition_filegroup
//cases/oci/py_venv_image_layer:arm64_image                   | platform_transition_filegroup
//cases/oci/py_venv_image_layer:arm64_layers                  | platform_transition_filegroup
//cases/oci/py_venv_image_layer:image                         | oci_image                    
//cases/oci/py_venv_image_layer:image.digest                  | jq_rule                      
//cases/oci/py_venv_image_layer:image_index_json              | directory_path               
//cases/oci/py_venv_image_layer:image_index_json_cp           | _copy_file                   
//cases/oci/py_venv_image_layer:image_load                    | oci_load                     
//cases/oci/py_venv_image_layer:my_app_amd64_layers           | _write_source_file           
//cases/oci/py_venv_image_layer:my_app_amd64_layers_listing   | genrule                      
//cases/oci/py_venv_image_layer:my_app_amd64_layers_test      | _diff_test                   
//cases/oci/py_venv_image_layer:my_app_arm64_layers           | _write_source_file           
//cases/oci/py_venv_image_layer:my_app_arm64_layers_listing   | genrule                      
//cases/oci/py_venv_image_layer:my_app_arm64_layers_test      | _diff_test                   
//cases/oci/py_venv_image_layer:my_app_layers                 | filegroup                    
//cases/oci/py_venv_image_layer:my_app_layers.manifest        | mtree_spec                   
//cases/oci/py_venv_image_layer:my_app_layers_default         | tar                          
//cases/oci/py_venv_image_layer:my_app_layers_interpreter     | tar                          
//cases/oci/py_venv_image_layer:my_app_layers_manifests       | genrule                      
//cases/oci/py_venv_image_layer:my_app_layers_packages        | tar                          
//cases/oci/py_venv_image_layer:platform_image                | platform_transition_filegroup
//cases/oci/py_venv_image_layer:py_amd64_image_command_test   | container_structure_test     
//cases/oci/py_venv_image_layer:py_amd64_image_content_test   | container_structure_test     
//cases/oci/py_venv_image_layer:py_arm64_image_command_test   | container_structure_test     
//cases/oci/py_venv_image_layer:py_arm64_image_content_test   | container_structure_test     
//cases/unconstrained-dependencies:get_python_package_version | py_library                   
//cases/uv-deps-650/crossbuild:amd64_image                    | platform_transition_filegroup
//cases/uv-deps-650/crossbuild:amd64_layers                   | platform_transition_filegroup
//cases/uv-deps-650/crossbuild:app_bin                        | _py_venv_binary              
//cases/uv-deps-650/crossbuild:app_layers                     | filegroup                    
//cases/uv-deps-650/crossbuild:app_layers.manifest            | mtree_spec                   
//cases/uv-deps-650/crossbuild:app_layers_default             | tar                          
//cases/uv-deps-650/crossbuild:app_layers_interpreter         | tar                          
//cases/uv-deps-650/crossbuild:app_layers_manifests           | genrule                      
//cases/uv-deps-650/crossbuild:app_layers_packages            | tar                          
//cases/uv-deps-650/crossbuild:arm64_image                    | platform_transition_filegroup
//cases/uv-deps-650/crossbuild:arm64_layers                   | platform_transition_filegroup
//cases/uv-deps-650/crossbuild:crossbuild_compile_pyc_test    | sh_test                      
//cases/uv-deps-650/crossbuild:image                          | oci_image                    
//cases/uv-deps-650/crossbuild:image.digest                   | jq_rule                      
//cases/uv-deps-650/crossbuild:image_index                    | oci_image_index              
//cases/uv-deps-650/crossbuild:image_index.digest             | jq_rule                      
//cases/uv-deps-650/crossbuild:image_index_index_json         | directory_path               
//cases/uv-deps-650/crossbuild:image_index_index_json_cp      | _copy_file                   
//cases/uv-deps-650/crossbuild:image_index_json               | directory_path               
//cases/uv-deps-650/crossbuild:image_index_json_cp            | _copy_file                   
//cases/uv-sdist-native-build:test                            | _py_venv_test                
//cases/uv-whl-install-output-group:iniconfig_install_dir     | filegroup                    
//cases/uv-workspace-789/packages/foo:foo                     | py_library                   
//cases/uv-workspace-789/packages/pi:pi                       | py_library                   

🔁 Reproduce

aspect test -- //...
# without Aspect CLI
bazel test -- //...

Install aspect: docs.aspect.build/cli/install

📎 Artifacts

Artifacts · Profile · BEP

⏱️ Task timing

Phase | Description                  | Duration
------+------------------------------+---------
Setup | Prepare the task environment | 4.7s    
Test  | Run bazel tests              | 35m 39s 
------+------------------------------+---------
Total |                              | 35m 44s 

🧮 Bazel details

📟 Command line · bazel test //...
bazel test \
  --experimental_output_paths=strip \
  --disk_cache=/home/runner/.cache/bazel-disk \
  --test_tag_filters=-skip-on-bazel8 \
  --generate_json_trace_profile=1 \
  --experimental_profile_include_target_label \
  --profile=/tmp/37e29b6c-3bf6-40cf-aafe-91027e7d2775.profile.gz \
  --color=yes \
  --build_metadata=ASPECT_TASK_NAME=Test \
  --build_metadata=ASPECT_TASK_ID=test-e2e-bazel-8 \
  --build_event_publish_all_actions \
  --build_event_binary_file_upload_mode=fully_async \
  --build_event_binary_file=/tmp/build-event-out-7f8d09c4-9b89-4393-b14d-8bf3b44835ca.bin \
  -- \
  //...
ℹ️ Invocation details
  • Invocation ID: 2eea3522-4d95-46e2-bffa-7ed120218359
  • Command: test
  • Bazel version: 8.7.0
  • Start time: Sat Jul 4 16:46:04 UTC 2026
  • End time: Sat Jul 4 17:21:32 UTC 2026
  • User: runner
  • Host name: runnervmjbsos
  • CPU Target: k8
  • Mode: fastbuild
  • Working directory: /home/runner/work/rules_py/rules_py/e2e
  • Workspace directory: /home/runner/work/rules_py/rules_py/e2e
  • Server PID: 2832
⏱ Timing
  • Elapsed time: 35m 28s
  • Analysis time: 38.7s
  • Execution time: 35m 21s
  • Bazel server time: 2 cpu-hours
  • Executed Tests Time: 1.6 cpu-minutes
📦 Build graph
  • Targets: 206 targets (2,254,221 configured, 6,524 aspect applications)
  • Actions: 83,001 actions (170,697 created)
  • Packages: 1,343 packages loaded
💾 Cache stats
  • Actions: 87,696 of 170,697 cached (51%)
  • Tests: 0 of 63 cached (0%)
⚡ Actions by mnemonic (20)
Mnemonic              | Count  | %    
----------------------+--------+------
CppCompile            | 39,153 | 47.1%
Rustc                 | 17,304 | 20.8%
Symlink               | 9,324  | 11.2%
FileWrite             | 2,959  | 3.5% 
ExecutableSymlink     | 2,276  | 2.7% 
CppArchive            | 1,842  | 2.2% 
RepoMappingManifest   | 1,686  | 2.0% 
SourceSymlinkManifest | 1,684  | 2.0% 
CargoBuildScriptRun   | 1,563  | 1.8% 
CppLink               | 975    | 1.1% 
CopyToDirectory       | 821    | 0.9% 
CppModuleMap          | 768    | 0.9% 
CcStage0Compile       | 585    | 0.7% 
CppTransitiveArchive  | 585    | 0.7% 
RunBinary             | 468    | 0.5% 
…5 more (968 actions)
🏃 Actions by runner (4)
Runner                  | Count  | %    
------------------------+--------+------
linux-sandbox · Local   | 63,304 | 76.2%
internal                | 18,941 | 22.8%
disk cache hit · Remote | 743    | 0.8% 
deduplicated · Remote   | 13     | 0.0% 
🏠 Workspace status (4)
  • BUILD_HOST: runnervmjbsos
  • BUILD_TIMESTAMP: 1783183570
  • BUILD_USER: runner
  • FORMATTED_DATE: 2026 Jul 04 16 46 10 Sat
🏷️ Build metadata (2)
  • ASPECT_TASK_ID: test-e2e-bazel-8
  • ASPECT_TASK_NAME: Test
🎛️ Startup options (12)
--connect_timeout_secs=30
--failure_detail_out=/home/runner/.cache/bazel/_bazel_runner/ea5a46adc4ace432824f7d10087e1393/failure_detail.rawproto
--idle_server_tasks
--max_idle_secs=10800
--noclient_debug
--nofatal_event_bus_exceptions
--noshutdown_on_low_sys_mem
--nowatchfs
--nowindows_enable_symlinks
--output_base=/home/runner/.cache/bazel/_bazel_runner/ea5a46adc4ace432824f7d10087e1393
--output_user_root=/home/runner/.cache/bazel/_bazel_runner
--write_command_log
🎛️ Command options (22)
--build_event_binary_file=/tmp/build-event-out-7f8d09c4-9b89-4393-b14d-8bf3b44835ca.bin
--build_event_binary_file_upload_mode=fully_async
--build_event_publish_all_actions
--build_metadata=ASPECT_TASK_ID=test-e2e-bazel-8
--build_metadata=ASPECT_TASK_NAME=Test
--color=yes
--disk_cache=/home/runner/.cache/bazel-disk
--enable_platform_specific_config
--experimental_output_paths=strip
--experimental_profile_include_target_label
--generate_json_trace_profile=1
--host_platform=//:linux_gnu
--incompatible_enable_cc_toolchain_resolution
--lockfile_mode=off
--nobuild_runfile_links
--platforms=//:linux_gnu
--profile=/tmp/37e29b6c-3bf6-40cf-aafe-91027e7d2775.profile.gz
--remote_download_outputs=minimal
--repo_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1
--repo_env=BAZEL_NO_APPLE_CPP_TOOLCHAIN=1
--repository_cache=/home/runner/.cache/bazel-repo
--test_tag_filters=-skip-on-bazel8

⏱ Last updated Sat Jul 4 17:21:38 UTC 2026 · 📊 GitHub API quota 1,461/15,000 (10% used, resets in 40m, throttle 3×)
🚀 Powered by Aspect CLI (v2026.22.44)  |  Aspect Build · X · LinkedIn · YouTube