Skip to content

A Tari-only outage never rejects workers (issue 897, option 1) — HELD FOR OPERATOR DECISION - #922

Merged
VijitSingh97 merged 2 commits into
develop-v2from
fix/897-tari-outage-keeps-mining
Aug 14, 2026
Merged

A Tari-only outage never rejects workers (issue 897, option 1) — HELD FOR OPERATOR DECISION#922
VijitSingh97 merged 2 commits into
develop-v2from
fix/897-tari-outage-keeps-mining

Conversation

@VijitSingh97

Copy link
Copy Markdown
Collaborator

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_required still 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

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>
… after this PR's last run)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@VijitSingh97
VijitSingh97 merged commit 840f83c into develop-v2 Aug 14, 2026
16 checks passed
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.

1 participant