release: v1.16.0 - #813
Merged
Merged
Conversation
procps' ps caps the CMD column at 15 characters, so the probe's grep for the 23-character 'minotari_console_wallet' could never match: the wallet container reported unhealthy forever while the wallet ran fine. Match on '[m]inotari_consol' — the truncated form ps actually prints. Closes #777 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
chore: back-merge main into develop after v1.15.0
…on-issues-74050a fix(compose): tari-wallet healthcheck pattern survives ps CMD truncation
compose up --remove-orphans never removes the container of a service whose profile just went inactive — the service is still in the compose file, so compose does not count it as an orphan. A tari local→remote switch therefore left the old minotari_node running (offline, re-syncing) against a remote-mode config; monerod local→remote had the same latent bug, and the apply-path comment claiming --remove-orphans covered it was wrong (disproven empirically against compose v2 / docker 29.0.1). compose_up_checked now reconciles from the committed .env before the up: every profile-gated service (monerod, tari, wallet-rpc, tari-wallet) whose profile token is absent gets 'compose rm -sf'. The command resolves named services regardless of active profiles and exits 0 when nothing runs, so the steady state is a no-op and a box already stuck with a stale node container heals on its next up. Closes #795 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ctivation-containers fix(cli): remove profile-deactivated containers before every compose up
The dashboard computed both halves of "am I earning what this hashrate should?" but never put them side by side: estimates lived in the Advanced-only Earnings tabs, confirmed payouts in other tabs of the same card, XvB wins in a text log — and the Simple view carried no earnings figure at all. One compact card now shows, per stream, the expectation over a trailing window beside what was actually confirmed over that SAME window: - Monero over 7d, expected from the time-weighted routed P2Pool average over the window itself (new Metrics.p2pool_7d/_30d) — not the current 1h figure, so a fleet that changed mid-week is judged against what actually ran — with a percent-of-expected; - Tari over 30d in BLOCKS (solo merge-mining pays whole blocks; each confirmed payout is one), expected = hashrate x window / difficulty, shown to two significant digits because a fraction of a block per month is the normal case; - XvB wins over 30d beside XvB's published tier estimate, deliberately with no ratio — a win pays out through ordinary small payouts the payout table cannot attribute, so an "XvB XMR earned" figure would be an invention. The card carries neither view class (card-simple/card-advanced are disjoint), making it the one earnings surface both views share. Rows degrade honestly: payout confirmation off shows the config key to set, never a zero that reads as "earned nothing"; partial windows keep the confirmed roll-up's asterisk. confirmed_payouts_summary grows per-window counts (n_24h..n_30d) to feed the Tari block count; the summary builder reuses the same build_earnings dict the Earnings card renders, so the two surfaces cannot disagree. Closes #808 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…s-actual feat(dashboard): expected-vs-actual earnings card, in both views
…iring, count trim Pre-v1.16.0 repo review riders: - Regenerate the frontend fixture (state.json) — it predated #808's earnings_summary key, so ExpectedVsActualCard's null-guard silently skipped the card in EVERY frontend render test; add four node tests covering its real branches (both views, empty-yield, stale-payload survival, percent + partial asterisk + footnote, view-key hints, two-sig-fig Tari blocks, XvB win row and its gating). - Standing drift guard: a pytest pins the fixture's top-level key set to the live build_state() contract, so a new payload key without a fixture regen fails loudly instead of silently disabling coverage. - Assert build_metrics wires p2pool_7d/p2pool_30d with their OWN windows (a 3-day-old sample is in, a 40-day-old one is out) — a wrong window constant previously passed every test. - Trim the unconsumed n_24h/n_yesterday/n_7d payload keys — n_30d (the Tari block count) is the only consumer; the sibling assertion counting confirmed sub-panels is scoped to the panel class, not tooltip prose. - testing-strategy scenario F gains the #808 catalog row; two doc wording fixes (hashrate_drop_threshold phrasing, last-win recency). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
test(dashboard): close the #808 review gaps — fixture drift, window wiring, count trim
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
chore(release): v1.16.0 prep — version bump + changelog
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.
Promote develop to main for the v1.16.0 release (tag already published; tag commit == develop tip, no post-cut commits).
🤖 Generated with Claude Code