From 0230cf1e8f1176d7c9220cdaa464b3787089a8cf Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 18 Jun 2026 06:43:40 +0000 Subject: [PATCH] ci(build): extend debuginfo=0 + mold to linux-build (link-cliff SIGBUS) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The linux-build (stable) job in build.yml was the only job still linking the full lance+datafusion test-binary set at workflow-level debuginfo=1 and without mold — the mitigation the test (TD-CI-TEST-JOB-DEBUGINFO0) and test-with-coverage (TD-CI-COVERAGE-MOLD-1) jobs in rust-test.yml already carry. It flaked twice (#525, #528) with a hard rust-lld SIGBUS (signal 7 = object file truncated when the link partition fills mid-link; crash in llvm::parallelFor). Mirror the green sibling jobs exactly: - job-level RUSTFLAGS="-C debuginfo=0 -C target-cpu=x86-64-v3" (the load-bearing relief — shrinks per-binary link footprint ~73% so the partition can't fill) - pinned rui314/setup-mold step before the Swatinem cache Additive only (17 insertions). YAML validated. Board: TD-CI-LINUX-BUILD-DEBUGINFO0. No source/test change. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01CcpLeEC3XK8Eye53GKBVvi --- .claude/board/AGENT_LOG.md | 6 ++++++ .claude/board/TECH_DEBT.md | 15 +++++++++++++++ .github/workflows/build.yml | 17 +++++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/.claude/board/AGENT_LOG.md b/.claude/board/AGENT_LOG.md index df11bad02..4368262d0 100644 --- a/.claude/board/AGENT_LOG.md +++ b/.claude/board/AGENT_LOG.md @@ -1,3 +1,9 @@ +## 2026-06-18 — CI: extend debuginfo=0 + mold to the `linux-build` job (link-cliff flake) + +**Main thread (Opus).** Branch `claude/ci-linux-build-debuginfo0-mold`. The `linux-build (stable)` job in `build.yml` flaked twice (#525, #528) with the `rust-lld` SIGBUS link cliff (signal 7, object truncated when the partition fills mid-link, crash in `llvm::parallelFor`). It was the ONLY job still linking the full lance+datafusion test set at workflow-level `debuginfo=1` and without mold — the `test` (TD-CI-TEST-JOB-DEBUGINFO0) and `test-with-coverage` (TD-CI-COVERAGE-MOLD-1) jobs in rust-test.yml already had both mitigations and are green. + +**Fix (additive, mirrors the green jobs exactly):** job-level `RUSTFLAGS: "-C debuginfo=0 -C target-cpu=x86-64-v3"` override (the load-bearing relief — ~73% smaller per-binary link footprint per the sibling-job measurements) + the pinned `rui314/setup-mold@9c9c13bf…` step before the Swatinem cache. 17 insertions, no deletions. YAML validated. Board: TD-CI-LINUX-BUILD-DEBUGINFO0 (Paid, confirm-on-green). No source/test change. + ## 2026-06-18 — B2 resolved: witness-arc boundary documented (NO `WitnessArcEvaluator` trait) **Main thread (Opus) + 5+3 council**, branch `claude/witness-arc-boundary-doc`. The parked B2 item — "wire perturbation-sim witness arc into contract witness_table" — was put through the critical-decision protocol (5 analysts + 3 brutal critics, all read both files in full). **Unanimous verdict: do NOT build the trait.** The two "witness arc" notions are different objects (numeric `∑field·arc` standing wave vs W-slot→identity resolution); welding them is an AP6 one-impl trait + AGI-as-glove "never a new trait" violation + a CATCH-CRITICAL dep-direction inversion (zero-dep contract would gain a perturbation-sim dep). integration-lead confirmed the real wiring is downstream D-MBX-A3, gated on D-MBX-A2 (current gating gap) + OQ-11.2 + a §0 dep ruling. diff --git a/.claude/board/TECH_DEBT.md b/.claude/board/TECH_DEBT.md index 68b3e0df4..a254f8204 100644 --- a/.claude/board/TECH_DEBT.md +++ b/.claude/board/TECH_DEBT.md @@ -15,6 +15,21 @@ ## Open Debt +### TD-CI-LINUX-BUILD-DEBUGINFO0 — `linux-build` was the last job missing the link-cliff mitigation; debuginfo=0 + mold extended to it (2026-06-18) + +**Paid (this commit).** `build.yml`'s `linux-build (stable)` job linked the full +lance+datafusion test-binary set at workflow-level `debuginfo=1` and **without +mold** — the only job still missing the mitigation that `TD-CI-TEST-JOB-DEBUGINFO0` +(the `test` job) and `TD-CI-COVERAGE-MOLD-1` (`test-with-coverage`) already carry. +It flaked **twice** (#525, #528) with a hard `rust-lld` SIGBUS (signal 7, object +file truncated when the link partition fills mid-link; crash in +`llvm::parallelFor`). Fix mirrors the green sibling jobs exactly: job-level +`RUSTFLAGS: "-C debuginfo=0 -C target-cpu=x86-64-v3"` (the load-bearing relief — +shrinks per-binary link footprint ~73% so the partition can't fill) + the pinned +`rui314/setup-mold` step. Additive only; first run after this change repopulates +the job's Swatinem cache (job-level RUSTFLAGS = own cache key). **Confirm on the +next few green `linux-build` runs that the SIGBUS does not recur.** + ### TD-WITNESS-EVAL-WIRING-1 — perturbation-sim Parseval witness evaluator ↔ contract `WitnessTable` are shipped but unconnected by design (2026-06-18) **Open — intentionally deferred (5+3 council, B2).** `perturbation-sim::witness` diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0b4a9194a..b5b10f843 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,6 +24,18 @@ jobs: linux-build: runs-on: ubuntu-24.04 timeout-minutes: 30 + env: + # Override the workflow-level debuginfo=1 for this job (parity with the + # `test` + `test-with-coverage` jobs in rust-test.yml, TD-CI-TEST-JOB-DEBUGINFO0 + # / TD-CI-COVERAGE-MOLD-1). This job links the SAME full lance+datafusion + # test-binary set at the SAME disk/RSS cliff and was the one job still + # missing the mitigation — it flaked twice with a hard `rust-lld` SIGBUS + # (signal 7 = object file truncated when the link partition fills mid-link, + # crashing in llvm::parallelFor). debuginfo carries no value in CI (no + # debugger is attached); dropping it cut per-binary link footprint ~73% + # in the sibling jobs. Note: a job-level RUSTFLAGS gives this job its own + # Swatinem cache key — the first run after this change repopulates it. + RUSTFLAGS: "-C debuginfo=0 -C target-cpu=x86-64-v3" defaults: run: working-directory: lance-graph @@ -44,6 +56,11 @@ jobs: run: | rustup toolchain install ${{ matrix.toolchain }} rustup default ${{ matrix.toolchain }} + - name: Setup mold linker + # Parity with rust-test.yml: the heavy lance+datafusion build + test + # binaries hit the GNU-ld/rust-lld RSS+disk cliff at the link step + # (intermittent SIGBUS). mold links them fast + low-memory. + uses: rui314/setup-mold@9c9c13bf4c3f1adef0cc596abc155580bcb04444 # v1 - uses: Swatinem/rust-cache@v2 with: shared-key: "lance-graph-deps"