A Tari-only outage never rejects workers (issue 897, option 1) — HELD FOR OPERATOR DECISION - #922
Merged
Merged
Conversation
Option 1 from issue #897: a debounced Tari outage never stops xmrig-proxy, regardless of dashboard.tari_required. monerod is the only node that can reject workers now — mining is impossible without it, but p2pool keeps mining Monero through a Tari-only outage, so kicking miners to their backup pools over Tari alone traded partial revenue for none (measured: 22 minutes of zero revenue on the bench while monerod was healthy). tari_required keeps its other two jobs unchanged: gating the initial-sync hold and the full-screen sync view. The outage still surfaces through the Tari panel and its alerts. Readmission simplifies to match: since Tari can no longer be the reason workers were rejected, the PR #881 readmission guard that let a never-reachable required Tari escape blocking readmission is now dead for Tari and is removed; only monerod's confirmed-healthy check remains (the guard itself, in NodeHealthMonitor, still protects monerod-down detection and is untouched). Updates the tier-1 rejection-decision-table tests, the tier-3 mini-stack scenarios that drove the old behavior through real containers, and the tari_required docs (dashboard.md, configuration.md, faq.md, hardware.md) to describe the new, narrower blocking behavior truthfully. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
6 tasks
… after this PR's last run) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements option 1 of #897.⚠️ Deliberately not auto-merged: the issue asks for a decision, and this PR is the decision made concrete — merge it to ratify option 1, close it to keep the present behavior (then #897 should be closed as option 3 with the cost documented).
What changes: with
dashboard.tari_required=true(the default), a debounced Tari-only outage no longer stops xmrig-proxy. monerod-down still rejects (mining is impossible); Tari-down keeps mining Monero — the measured incident was 22 minutes of zero revenue while monerod was healthy, with the hashrate donated to the rigs' backup pools, and Tari gRPC flapping again within the hour on a remote-Tari deployment.What
tari_requiredstill means: the initial-sync hold (miner waits for Tari's first sync) and the full-screen Sync-Mode takeover. The outage itself still surfaces through the Tari panel and the existing alerts.Readmission: reduces to monerod-health alone. The #881 ever-up mirror guard's Tari half is provably dead once Tari cannot cause rejection — removed, with a test pinning that Tari state (healthy, unhealthy, never-up, required or not) has zero effect on rejection or readmission.
Decision-table tests rewritten at tier 1 (monerod-down ⇒ reject; Tari-only ⇒ stay admitted; both ⇒ reject; readmit on monerod-healthy only). Mini-stack scenarios updated — not executable locally, CI runs them. Docs: config reference row + hardware note rewritten truthfully. Coverage: dashboard 96.7%, patch ≥90%.
Verifier: pass (one minor: mini-stack scenarios validated by CI, not locally). Ponytail: net-deletion core, lean.
🤖 Generated with Claude Code