Skip to content

dash(version-gate): route 60%/95% gate literals to named v36-native thresholds (Bucket-2 SSOT dedup) - #536

Merged
frstrtr merged 1 commit into
masterfrom
dash/version-gate-threshold-ssot
Jun 26, 2026
Merged

dash(version-gate): route 60%/95% gate literals to named v36-native thresholds (Bucket-2 SSOT dedup)#536
frstrtr merged 1 commit into
masterfrom
dash/version-gate-threshold-ssot

Conversation

@frstrtr

@frstrtr frstrtr commented Jun 26, 2026

Copy link
Copy Markdown
Owner

What

v36-migration-std sweep, pillar-5 (share-version-weighting / desired_version gate). version_negotiation.hpp re-spelled the v36-native successor-switch (60%) and v36-activation-signal (95%) percentages as bare uint288 literals at the gate call sites — even though UNIFIED_SUCCESSOR_PCT = 60 was already declared lower in the same file (used only by the 3-arg crossing overload). This is the same per-coin dialect-drift #533 removed for the donation script, now for the version gate.

This slice hoists the three threshold constants to the top of the namespace and routes both gates through them:

  • 2-arg successor_switch_allowedUNIFIED_SUCCESSOR_PCT (60)
  • v36_activeV36_SIGNAL_ACTIVATION_PCT (95, newly named)
  • CROSSING_SUCCESSOR_FLOOR_PCT (85) hoisted alongside (Bucket-3, unchanged)

Why it is safe

  • Value-invariant: 60/95/85 unchanged; uint288 exact-rational arithmetic untouched.
  • DASH-isolated: 2 files, zero core/ edit, no build.yml allowlist change (test_dash_conformance already listed).
  • New KAT DashVersionGateThresholdSSOT pins the named constants to canonical values (so a future edit cannot silently fork the gate) and re-confirms the 60/95/85 boundaries are byte-identical through the named path.
  • 49/49 test_dash_conformance green on Linux x86_64 (+2 new, non-hollow).

Classification (3-bucket)

  • The 60%/95% percentages are Bucket-2 v36-native SHARED shapes (identical across btc/dgb/dash). This slice single-sources them within DASH; a cross-coin hoist into core::version_gate (which today owns only the =36 boundary, not the percentages — btc/dgb also re-spell 60/95 as bare literals) is a coordinated follow-up flagged to decisions@, deliberately not done here to avoid colliding with the BTC/DGB lanes.
  • CROSSING_SUCCESSOR_FLOOR_PCT stays Bucket-3 (per-coin, temporary, dropped post-soak).

Oracle-conformant (frstrtr/p2pool-dash); held for integrator verify → operator tap. No self-merge.

…hresholds (Bucket-2 SSOT dedup)

version_negotiation.hpp re-spelled the v36-native successor-switch (60%) and
v36-activation-signal (95%) percentages as bare uint288 literals at the gate
call sites, even though UNIFIED_SUCCESSOR_PCT=60 was already declared (lower in
the same file, used only by the 3-arg crossing overload). Hoist the three
threshold constants to the top of the namespace and route both gates through the
named constants -- the same per-coin dialect-drift removal #533 applied to the
donation script, now for the version gate.

Value-invariant: 60/95/85 unchanged; uint288 exact-rational arithmetic
untouched; zero core/ edit; DASH-isolated; no build.yml allowlist change. New
KAT pins the named constants to canonical values and re-confirms the 60/95/85
boundaries are byte-identical through the named path. 49/49 test_dash_conformance
green on Linux x86_64.

Cross-coin hoist of these percentages into core::version_gate (which today owns
only the =36 boundary) is a coordinated follow-up flagged to decisions@; this
slice keeps DASH internally single-sourced without touching btc/dgb call sites.
@frstrtr
frstrtr merged commit 392ff0d into master Jun 26, 2026
21 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