From aba24b85594dc4406a0711d75352d9ff49f7f94a Mon Sep 17 00:00:00 2001 From: Mac Anderson Date: Thu, 6 Aug 2026 12:17:49 -0700 Subject: [PATCH] =?UTF-8?q?fix(stella-pipeline,make):=20unbreak=20main=20?= =?UTF-8?q?=E2=80=94=20witness-stage=20merge=20clobber=20and=20a=20duplica?= =?UTF-8?q?te=20Makefile=20target?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two of the ~20 PRs merged untested during the GitHub Actions outage collided semantically: - witness_stage.rs: the Spend-struct refactor and #1789's degradable budget-abort arms merged textually clean but never met — both Aborted arms still referenced the pre-refactor `total`/`budget` bindings (E0425 x4), so stella-pipeline stopped compiling, taking lint, test, doc-warnings and the wire-schema exporter down with it. Align the arms with their sibling Completed arms: `*spend.total` / `spend.budget.evaluate()`. - Makefile: PR #1844 and stacked PR #1881 each added the identical guard-sigpipe-test target, and make warns about the override on every invocation. Keep one. The witness for the pipeline half is the whole existing witness-stage test suite, which cannot even compile on main today; no new test is honest here (this restores intent both parents already tested). Remaining main breaks are fixed in sibling PRs: the toolset.rs god-file split + mcp rustdoc link (split PR), tracked from the gate run log. --- Makefile | 4 ---- crates/stella-pipeline/src/pipeline/witness_stage.rs | 8 ++++---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 5a36f4c63..8c7a5beae 100644 --- a/Makefile +++ b/Makefile @@ -344,10 +344,6 @@ releases-baseline-update: ## Grandfather the tags that shipped nothing and never releases-published-test: ## Test the tag/release reconciliation rule (hermetic; not part of `gate`) ./scripts/test-releases-published.sh -.PHONY: guard-sigpipe-test -guard-sigpipe-test: ## Test that the gate guards survive a reader that closes their pipe early (#1815; hermetic; not part of `gate`) - ./scripts/test-guard-sigpipe.sh - .PHONY: hooks hooks: ## Install the pre-push gate hook (runs `make gate`, scoped to the diff, on every push) git config core.hooksPath .githooks diff --git a/crates/stella-pipeline/src/pipeline/witness_stage.rs b/crates/stella-pipeline/src/pipeline/witness_stage.rs index 0b2546b12..bcd519a82 100644 --- a/crates/stella-pipeline/src/pipeline/witness_stage.rs +++ b/crates/stella-pipeline/src/pipeline/witness_stage.rs @@ -337,7 +337,7 @@ impl<'a> Pipeline<'a> { TurnOutcome::Aborted { reason, cost_usd, .. } => { - *total += cost_usd; + *spend.total += cost_usd; // A budget stop here is degradable too (#1789): the worker's // change is already complete in the candidate, and discarding // it because the SCAFFOLDING ran out of money threw away real @@ -346,7 +346,7 @@ impl<'a> Pipeline<'a> { // the next unaffordable call; what degrading buys is the // deterministically-resolvable endings (a warranted waiver, // an abstention) that need no further model spend at all. - if let Some(abort) = budget_abort(budget.evaluate()) { + if let Some(abort) = budget_abort(spend.budget.evaluate()) { return Err(WitnessAbort::degradable(format!( "witness authoring stopped by the budget ({}); the executed change \ stands unproven", @@ -433,10 +433,10 @@ impl<'a> Pipeline<'a> { TurnOutcome::Aborted { reason, cost_usd, .. } => { - *total += cost_usd; + *spend.total += cost_usd; // Degradable for the same #1789 reason as the author // turn's budget arm above. - if let Some(abort) = budget_abort(budget.evaluate()) { + if let Some(abort) = budget_abort(spend.budget.evaluate()) { return Err(WitnessAbort::degradable(format!( "witness repair stopped by the budget ({}); the executed change \ stands unproven",