Vals-Smith

/ AppliedIntuition / bazel-remote

Updated 7/16/2026

A remote cache for Bazel

21 Branches 2140 Commits 44 Contributors 47 Tasks

Key Takeaways

Cost / Test vs. Accuracy

GPT-5.6 Luna is the clearest value result: it resolves 41 of 47 tasks for $0.29 per test, one task behind the two leaders.

Latency vs. Accuracy

Grok 4.5 reaches the same 41-of-47 tier in 267 seconds, making it the fastest near-leading model by a wide margin.

Average token use / test

Input
Output
Reasoning
Cache read
Cache write
Claude Sonnet 5
7.7M
Claude Opus 4.7
4.3M
Gemini 3.5 Flash
3.6M
Claude Fable 5
2.3M
Claude Opus 4.8
2.3M
Claude Haiku 4.5 (Nonthinking)
1.9M
Muse Spark 1.1
1.7M
GLM 5.2
1.5M
GPT 5.5
1.2M
GPT-5.6 Sol
958K
Gemini 3.1 Pro Preview (02/26)
956K
GPT-5.6 Luna
946K
Grok 4.5
553K
GPT-5.6 Terra
424K

Tasks with failures

PassedFailed
Model093b5980dd43ed11d575b1bcb7fa25792ea4d17ff550ab229527a9a25afaf8b6b640108a93ff795beb3c98f22279f9567aaac4506ad2ded8af08f8ab013593b600499d9d93cae6330d3f10d8f2f5d834bf7f9c9df9efcfe
GPT 5.5
Claude Fable 5
GPT-5.6 Luna
Grok 4.5
Muse Spark 1.1
GPT-5.6 Sol
Claude Opus 4.8
Claude Sonnet 5
GPT-5.6 Terra
GLM 5.2
Claude Opus 4.7
Gemini 3.1 Pro Preview (02/26)
Claude Haiku 4.5 (Nonthinking)
Gemini 3.5 Flash

Task detail

093b598754b1

Issue statement

Add a flag to disable access logging

bazel-remote writes an access log line for every request it handles. In deployments that serve a very large number of requests, this access logging is noisy and unwanted, and there is currently no way to turn it off.

Add a new configuration option, access_log_level, that controls the verbosity of the access logger. It should be configurable both via the YAML config file (key access_log_level) and, ideally, via a corresponding command-line flag / environment variable.

Requirements:

  • The option accepts exactly two values: "all" and "none".
    • "all" (the default) enables full access logging, matching today's behavior.
    • "none" disables access logging.
  • When access_log_level is omitted from the configuration, it must default to "all".
  • The value must be validated when the configuration is loaded. Any value other than "all" or "none" must cause configuration loading to fail with an error whose message mentions access_log_level.

The parsed configuration should expose the selected value so the rest of the server can honor it.

Hidden tests
diff --git a/config/config_test.go b/config/config_test.goindex fc8d14b..1689d24 100644--- a/config/config_test.go+++ b/config/config_test.go@@ -24,6 +24,7 @@ enable_endpoint_metrics: true experimental_remote_asset_api: true http_read_timeout: 5s http_write_timeout: 10s+access_log_level: none `  	config, err := newFromYaml([]byte(yaml))@@ -50,6 +51,7 @@ http_write_timeout: 10s 		NumUploaders:                100, 		MaxQueuedUploads:            1000000, 		MetricsDurationBuckets:      []float64{.5, 1, 2.5, 5, 10, 20, 40, 80, 160, 320},+		AccessLogLevel:              "none", 	}  	if !reflect.DeepEqual(config, expectedConfig) {@@ -88,6 +90,7 @@ gcs_proxy: 		NumUploaders:           100, 		MaxQueuedUploads:       1000000, 		MetricsDurationBuckets: []float64{.5, 1, 2.5, 5, 10, 20, 40, 80, 160, 320},+		AccessLogLevel:         "all", 	}  	if !cmp.Equal(config, expectedConfig) {@@ -123,6 +126,7 @@ http_proxy: 		NumUploaders:           100, 		MaxQueuedUploads:       1000000, 		MetricsDurationBuckets: []float64{.5, 1, 2.5, 5, 10, 20, 40, 80, 160, 320},+		AccessLogLevel:         "all", 	}  	if !cmp.Equal(config, expectedConfig) {@@ -195,6 +199,7 @@ s3_proxy: 		NumUploaders:           100, 		MaxQueuedUploads:       1000000, 		MetricsDurationBuckets: []float64{.5, 1, 2.5, 5, 10, 20, 40, 80, 160, 320},+		AccessLogLevel:         "all", 	}  	if !cmp.Equal(config, expectedConfig) {@@ -225,6 +230,7 @@ profile_port: 7070 		NumUploaders:           100, 		MaxQueuedUploads:       1000000, 		MetricsDurationBuckets: []float64{.5, 1, 2.5, 5, 10, 20, 40, 80, 160, 320},+		AccessLogLevel:         "all", 	}  	if !cmp.Equal(config, expectedConfig) {@@ -268,6 +274,7 @@ endpoint_metrics_duration_buckets: [.005, .1, 5] 		NumUploaders:           100, 		MaxQueuedUploads:       1000000, 		MetricsDurationBuckets: []float64{0.005, 0.1, 5},+		AccessLogLevel:         "all", 	}  	if !cmp.Equal(config, expectedConfig) {@@ -352,3 +359,19 @@ storage_mode: gzip 		} 	} }++func TestInvalidAccessLogLevel(t *testing.T) {+	yaml := `host: localhost+port: 1234+dir: /opt/cache-dir+max_size: 42+access_log_level: verbose+`+	_, err := newFromYaml([]byte(yaml))+	if err == nil {+		t.Fatal("Expected an error because 'access_log_level' was invalid")+	}+	if !strings.Contains(err.Error(), "access_log_level") {+		t.Fatal("Expected the error message to mention the invalid 'access_log_level' key/flag")+	}+} 

Head-to-head

VS

Accuracy

89.36%

89.36%

Cost / test

$1.50Δ $4.10

$5.60

Latency

888s

718sΔ 171s

Cost distribution

$0.00$8.47$16.94

Latency distribution

0s1252s2505s

Input token distribution

0109.6K219.3K

Output token distribution

053.3K106.6K

Task outcomes

47 tasks

Both
A only
B only
Neither