btc: F10/(b) complete — delete residual flat-count version-punish - #365
Merged
Conversation
Removes the non-canonical 95%-flat-count version-obsolescence punish that the gap-audit found half-applied on the BTC twin (share_check.hpp already carried the F10/(b) marker; the punish path itself was still live). - delete ShareTracker::should_punish_version (share_tracker.hpp) and its live head-decoration call (formerly :1198, reason=1); head-scoring now punishes only naughty heads, matching canonical Phase-4 tip selection - delete dead AutoRatchet::validate_version_switch (auto_ratchet.hpp; zero callers in src/impl/btc/) — the version gate is the check() 60% PPLNS-weighted switch rule in share_check step 2 - mirrors the landed LTC (share_tracker.hpp:2670) / DGB (:2651) removal, with the same F10/(b) removal marker - new f10b_version_punish_removal_test.cpp (3 KATs) locks the accept-gate vs head-selection invariant on the version axis; full btc_share_test 9/9 Scope: src/impl/btc/ only. Consensus-bearing (tip selection) — hold for operator merge.
frstrtr
added a commit
that referenced
this pull request
Jun 23, 2026
Removes the non-canonical 95%-flat-count version-obsolescence punish that the gap-audit found half-applied on the BTC twin (share_check.hpp already carried the F10/(b) marker; the punish path itself was still live). - delete ShareTracker::should_punish_version (share_tracker.hpp) and its live head-decoration call (formerly :1198, reason=1); head-scoring now punishes only naughty heads, matching canonical Phase-4 tip selection - delete dead AutoRatchet::validate_version_switch (auto_ratchet.hpp; zero callers in src/impl/btc/) — the version gate is the check() 60% PPLNS-weighted switch rule in share_check step 2 - mirrors the landed LTC (share_tracker.hpp:2670) / DGB (:2651) removal, with the same F10/(b) removal marker - new f10b_version_punish_removal_test.cpp (3 KATs) locks the accept-gate vs head-selection invariant on the version axis; full btc_share_test 9/9 Scope: src/impl/btc/ only. Consensus-bearing (tip selection) — hold for operator merge. Co-authored-by: frstrtr <frstrtr@users.noreply.github.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.
Standalone F10/(b)-completion for the BTC twin, per integrator dispatch. Kept SEPARATE from btc/f11-donation-exclude (different consensus axis).
What
Deletes the non-canonical 95%-flat-count version-obsolescence punish that the gap-audit found HALF-APPLIED on BTC (share_check.hpp:1751 already carried the F10/(b) marker; the punish path itself was still live).
ShareTracker::should_punish_version(share_tracker.hpp:2689) + its live head-decoration call (share_tracker.hpp:1198, reason=1) — head-scoring now punishes only naughty headsAutoRatchet::validate_version_switch(auto_ratchet.hpp:279; zero callers in src/impl/btc/)Acceptance vs dispatch
One intentional marker divergence from LTC (flagging for byte-parity re-verify)
The removal marker clause describing BTC own ratchet reads "AutoRatchet (work-weighted, per #290)" where LTC reads "count-based AutoRatchet". This is deliberate: BTC ratchet IS work-weighted post-#290; LTC is count-based. The deleted code + call-site removal are pattern-identical; only this one factual clause differs. Making it byte-identical would put a wrong comment on BTC.
Head SHA: 80c8281