diff --git a/.github/actions/setup-sccache/action.yml b/.github/actions/setup-sccache/action.yml index 802029107..a17ae66a3 100644 --- a/.github/actions/setup-sccache/action.yml +++ b/.github/actions/setup-sccache/action.yml @@ -3,7 +3,8 @@ description: > Install sccache and select a backend. GCS on ARC when GCE metadata identity is present and an objects.list probe of evalops-prod-ci-sccache succeeds. Else local disk when the runner service exports - SCCACHE_LOCAL_DIR to an absolute writable path (WSL: + SCCACHE_LOCAL_DIR to an absolute writable path, or Borg exports its owned + BORG_CACHE_ROOT/sccache as SCCACHE_DIR (WSL: /var/cache/evalops-sccache, SCCACHE_CACHE_SIZE default 40G). GitHub Actions cache is an opt-out fallback for callers that still require it. Callers compile with RUSTC_WRAPPER=sccache. @@ -18,7 +19,7 @@ inputs: sccache storage backend. `auto` (default) probes the GCE metadata server and uses `gcs` when the runner identity answers and an objects.list probe of the sccache prefix returns HTTP 200; else - `local` when SCCACHE_LOCAL_DIR is an absolute writable directory; + `local` when SCCACHE_LOCAL_DIR or Borg's owned SCCACHE_DIR is writable; else `gha`. The GCS probe is GET .../b//o?maxResults=1&prefix=... (storage.objects.list), not buckets.get, because the runner GSA is roles/storage.objectUser. A 404 or 403 warns and falls back to diff --git a/.github/actions/setup-sccache/configure.sh b/.github/actions/setup-sccache/configure.sh index 6bb42b0bb..60e3c2434 100755 --- a/.github/actions/setup-sccache/configure.sh +++ b/.github/actions/setup-sccache/configure.sh @@ -3,8 +3,8 @@ # Precedence: GCS on ARC when GCE metadata identity is present AND an # objects.list probe against the bucket prefix succeeds; else local disk. # GCP runners never fall through to GitHub's Azure-hosted cache data plane. -# Off-GCP runners use SCCACHE_LOCAL_DIR when it is an absolute writable -# directory (WSL: /var/cache/evalops-sccache, 40G by default). GHA is only +# Off-GCP runners use SCCACHE_LOCAL_DIR or Borg's owned SCCACHE_DIR when it +# is absolute and writable (WSL: /var/cache/evalops-sccache, 40G default). GHA is only # selected when the caller explicitly permits that fallback. # Hard-fail only if GCS or local disk was selected and sccache then reports # a different Cache location. @@ -77,6 +77,12 @@ gce_identity="${gce_identity//$'\n'/}" # runner service environment. Ephemeral ARC pods do not; they keep GCS/GHA. # Default size cap 40G; override with SCCACHE_CACHE_SIZE on the host. SCCACHE_LOCAL_DIR="${SCCACHE_LOCAL_DIR:-}" +if [[ -z "${SCCACHE_LOCAL_DIR}" && -n "${BORG_CACHE_ROOT:-}" \ + && "${SCCACHE_DIR:-}" == "${BORG_CACHE_ROOT}/sccache" ]]; then + # Borg already owns and probes this persistent cache. Keep explicit local + # configuration first, and retain the existing writable/backend checks. + SCCACHE_LOCAL_DIR="${SCCACHE_DIR}" +fi SCCACHE_CACHE_SIZE="${SCCACHE_CACHE_SIZE:-40G}" local_disk_ready() { diff --git a/.repository-projection.json b/.repository-projection.json index 32af10b5e..a8322be40 100644 --- a/.repository-projection.json +++ b/.repository-projection.json @@ -3,11 +3,11 @@ "projection": "deixic-code", "projectionSchemaVersion": 1, "sourceRepository": "dx-corp/mono", - "sourceSha": "b9c1342ea2f64a75617cc18edfc77c674f24e542", + "sourceSha": "2feea8e8f1e564f1929d91a082f9040f4b87c5b7", "destinationRepository": "dx-corp/code", - "priorProjectedBase": "97792e942d877f788c43de0c0d3d48fbbc11c502", + "priorProjectedBase": "65cad020159af5708a765ef30ca18480cd913292", "definitionDigest": "cb9d429542ebb0a2de9b42a7aad60d9d8696a648ceba47c30f05c0b285ca0db7", "toolDigest": "5b23a8f676ff72aaeedce0075b6014d88b01f010343c2822ea47fd9955a98726", - "contentDigest": "ba1011690d1266129cf0e4e26b8a4c8ca458ea0d21a9602fd6beb57e40513b67", + "contentDigest": "bc5029b7d1003d5bbc74a27ff68b7a47eaaaf43bbca829be08abd47e6b798733", "publicationEligible": true } diff --git a/vendor/dex-loop/tests/scenarios.rs b/vendor/dex-loop/tests/scenarios.rs index 59e6efeb7..6ddc72c6b 100644 --- a/vendor/dex-loop/tests/scenarios.rs +++ b/vendor/dex-loop/tests/scenarios.rs @@ -66,7 +66,7 @@ async fn plain_answer_streams_text_then_final() { // 2. Three reads run as one wave: they overlap, take about one tool delay, and // their results enter history in call order although they finish in reverse. -#[tokio::test] +#[tokio::test(start_paused = true)] async fn read_only_wave_overlaps_and_keeps_call_order() { let log = FakeLog::default(); let model = FakeModel::new(vec![ @@ -85,7 +85,7 @@ async fn read_only_wave_overlaps_and_keeps_call_order() { let engine = engine(&log, &model, &tools, budget()); let mut ctx = log.start_turn("t1", "look"); - let started = Instant::now(); + let started = tokio::time::Instant::now(); let exit = engine.run(&mut ctx, &CancellationToken::new()).await; let elapsed = started.elapsed(); @@ -128,7 +128,7 @@ async fn read_only_wave_overlaps_and_keeps_call_order() { // 3. A mutation waits for the wave before it; a read after it starts a new // wave. The mutation is claimed in the ledger and its outcome recorded. -#[tokio::test] +#[tokio::test(start_paused = true)] async fn mutating_call_runs_serially_after_the_wave() { let log = FakeLog::default(); let model = FakeModel::new(vec![ diff --git a/vendor/dex-loop/tests/scenarios/capacity_controls.rs b/vendor/dex-loop/tests/scenarios/capacity_controls.rs index 1704c9d03..5d3cff6e1 100644 --- a/vendor/dex-loop/tests/scenarios/capacity_controls.rs +++ b/vendor/dex-loop/tests/scenarios/capacity_controls.rs @@ -278,7 +278,7 @@ async fn explicit_policy_controls_proactive_compaction_but_allows_hard_recovery( } } -#[tokio::test] +#[tokio::test(start_paused = true)] async fn legacy_and_disabled_policies_do_not_wait_for_unused_pressure_reads() { struct SlowPressure { inner: FakeModel,