Skip to content

fix(bench): mount /work in BenchExec containers for Fly S18 (#900) - #1067

Merged
DecisionNerd merged 13 commits into
mainfrom
cursor/900-benchexec-work-mount-5258
Sep 1, 2026
Merged

DecisionNerd merged 13 commits into
mainfrom
cursor/900-benchexec-work-mount-5258

Conversation

@DecisionNerd

@DecisionNerd DecisionNerd commented Sep 1, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Fixes Fly S18 BenchExec failures for durable progressive qualification on ext4 /work volumes.

Root causes fixed

  1. Path visibility — Relative workspace/sNN/... paths lived in BenchExec overlay, invisible on /work. Fixed by rewriting to absolute /work/workspace/sNN/... paths and --full-access-dir /work.
  2. EXDEV on commit — Import temps staged on overlay while project lived on ext4; commit failed with Invalid cross-device link (os error 18). Fixed by --read-only-dir / (only /work writable) plus TMPDIR=/work/tmp.

Evidence

  • Unit tests: tests.test_progressive_run → 20 passed
  • Fly S18 run 82d334c751de78 on 50GB volume:
    • ingest passed (publication_committed: true, 4.4M rows)
    • reopen passed, recount passed — run continuing through query/export/verify phases

Volume

Extended Fly volume vol_40od6de197mn01p4 from 10GB → 50GB for S18+S19 headroom.

Closes #900 (partial — full S18/S19 ladder evidence pending run completion)

Open in Web Open in Cursor 

View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

Note

Mount /work in BenchExec containers and raise memlimit to 16 GB for Fly S18

  • Adds provider-volume detection via _provider_volume_mounted in progressive_run.py; when /work is a mount point, staging uses it for HOME, TMPDIR, tool directory, profile paths, and benchmark XML
  • Rewrites relative workspace paths in profile.json to absolute /work/workspace/s{scale} paths and wraps staged executables in a shell script that sets TMPDIR=/work/tmp"- Raises BenchExec memory limit from 4 GB to 16 GB in provider-volume mode and configures container flags to expose /work while hiding /run and /tmp
  • Preserves raw failure artifacts by copying stage/raw to an output s{scale}-failure-raw directory on non-zero BenchExec exit or ingestion errors
  • Risk: _safe_stage now requires scale as a keyword argument; any callers not updated will raise TypeError. Evidence path in Tool.cmdline changes to /work/tmp/graphforge-certify-evidence.json when /work is mounted, which may break readers expecting evidence.json in the stage root

Macroscope summarized ae061bb.

Co-authored-by: David Spencer <DecisionNerd@users.noreply.github.com>
@coderabbitai

coderabbitai Bot commented Sep 1, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Essentials

Run ID: 7312f558-e901-43b1-ba54-ad34c6bac8ca

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption.


Comment @coderabbitai help to get the list of available commands.

cursoragent and others added 12 commits September 1, 2026 09:26
When /work is mounted, BenchExec containers need an explicit --dir for the
stage, overlay/hidden mount flags matching the admission fixture, and profile
paths rewritten to /work/workspace/sNN so generate/ingest share durable ext4
locations instead of overlay-relative workspace paths.

Co-authored-by: David Spencer <DecisionNerd@users.noreply.github.com>
Co-authored-by: David Spencer <DecisionNerd@users.noreply.github.com>
#900)

BenchExec overlay allowed gf to stage import temps off the /work ext4
volume; commit then failed with Invalid cross-device link (os error 18).
Use --read-only-dir / with --full-access-dir /work and TMPDIR=/work/tmp.

Co-authored-by: David Spencer <DecisionNerd@users.noreply.github.com>
Co-authored-by: David Spencer <DecisionNerd@users.noreply.github.com>
Co-authored-by: David Spencer <DecisionNerd@users.noreply.github.com>
Co-authored-by: David Spencer <DecisionNerd@users.noreply.github.com>
Co-authored-by: David Spencer <DecisionNerd@users.noreply.github.com>
Co-authored-by: David Spencer <DecisionNerd@users.noreply.github.com>
…on (#900)

Co-authored-by: David Spencer <DecisionNerd@users.noreply.github.com>
Co-authored-by: David Spencer <DecisionNerd@users.noreply.github.com>
Co-authored-by: David Spencer <DecisionNerd@users.noreply.github.com>
Co-authored-by: David Spencer <DecisionNerd@users.noreply.github.com>
@DecisionNerd
DecisionNerd marked this pull request as ready for review September 1, 2026 11:33
@DecisionNerd
DecisionNerd merged commit 9de222d into main Sep 1, 2026
21 checks passed
@DecisionNerd
DecisionNerd deleted the cursor/900-benchexec-work-mount-5258 branch September 1, 2026 11:33
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.

test(scale): complete the S18-S26 lifecycle ladder on OVHC-AGENCY

2 participants