Guard `reproducible` usage behind `bazel_features` check (#12)

This is needed for Bazel 6 compatibility with Bzlmod enabled.
diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml
index d499c80..19cc938 100644
--- a/.bazelci/presubmit.yml
+++ b/.bazelci/presubmit.yml
@@ -6,45 +6,35 @@
     - ubuntu2004
     - macos
     - windows
+  bazel:
+    - 6.5.0
+    - 7.3.2
 
 tasks:
   test_module_bzlmod:
-    name: "Test module (Bazel 7.3.2, Bzlmod)"
+    name: "Test module (Bzlmod)"
     working_directory: "tests/bcr"
-    bazel: 7.3.2
+    bazel: ${{ bazel }}
     platform: ${{ platform }}
     build_flags:
       - "--enable_bzlmod"
-      - "--noenable_workspace"
     build_targets:
       - "//..."
     test_flags:
       - "--enable_bzlmod"
-      - "--noenable_workspace"
     test_targets:
       - "//..."
   test_module_workspace:
-    name: "Test module (Bazel 7.3.2, WORKSPACE)"
+    name: "Test module (WORKSPACE)"
     working_directory: "tests/bcr"
-    bazel: 7.3.2
+    bazel: ${{ bazel }}
     platform: ${{ platform }}
     build_flags:
-      - "--noenable_bzlmod"
-      - "--enable_workspace"
+      - "--enable_bzlmod"
     build_targets:
       - "//..."
     test_flags:
-      - "--noenable_bzlmod"
-      - "--enable_workspace"
-    test_targets:
-      - "//..."
-  test_module_workspace_bazel6:
-    name: "Test module (Bazel 6.5.0, WORKSPACE)"
-    working_directory: "tests/bcr"
-    bazel: 6.5.0
-    platform: ${{ platform }}
-    build_targets:
-      - "//..."
+      - "--enable_bzlmod"
     test_targets:
       - "//..."
   test_module_head:
@@ -52,13 +42,7 @@
     working_directory: "tests/bcr"
     bazel: last_green
     platform: ${{ platform }}
-    build_flags:
-      - "--enable_bzlmod"
-      - "--noenable_workspace"
     build_targets:
       - "//..."
-    test_flags:
-      - "--enable_bzlmod"
-      - "--noenable_workspace"
     test_targets:
       - "//..."
diff --git a/MODULE.bazel b/MODULE.bazel
index 2b18051..294f5f7 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -3,8 +3,9 @@
     version = "0.0.0",
 )
 
-bazel_dep(name = "platforms", version = "0.0.10")
+bazel_dep(name = "bazel_features", version = "1.18.0")
 bazel_dep(name = "bazel_skylib", version = "1.6.1")
+bazel_dep(name = "platforms", version = "0.0.10")
 
 sh_configure = use_extension("//shell/private/extensions:sh_configure.bzl", "sh_configure")
 use_repo(sh_configure, "local_config_shell")
diff --git a/shell/private/extensions/sh_configure.bzl b/shell/private/extensions/sh_configure.bzl
index 71ff021..4b95a4c 100644
--- a/shell/private/extensions/sh_configure.bzl
+++ b/shell/private/extensions/sh_configure.bzl
@@ -14,10 +14,13 @@
 
 """The sh_configure module extension."""
 
+load("@bazel_features//:features.bzl", "bazel_features")
 load("//shell/private/repositories:sh_config.bzl", "sh_config")
 
 def _sh_configure_impl(module_ctx):
     sh_config(name = "local_config_shell")
-    return module_ctx.extension_metadata(reproducible = True)
+    if bazel_features.external_deps.extension_metadata_has_reproducible:
+        return module_ctx.extension_metadata(reproducible = True)
+    return None
 
 sh_configure = module_extension(implementation = _sh_configure_impl)