Skip to content

nmc(P1e): activation-height admission gate + 4 KATs (stacked on #189) - #190

Merged
frstrtr merged 1 commit into
nmc/p1d-share-accept-gatefrom
nmc/p1e-activation-gate
Jun 19, 2026
Merged

nmc(P1e): activation-height admission gate + 4 KATs (stacked on #189)#190
frstrtr merged 1 commit into
nmc/p1d-share-accept-gatefrom
nmc/p1e-activation-gate

Conversation

@frstrtr

@frstrtr frstrtr commented Jun 19, 2026

Copy link
Copy Markdown
Owner

Stacked on #189 (P1d gate). Factors HeaderChain::check_activation_gate(height, has_auxpow) -> AdmitResult, the height-derived merge-mining activation gate, mirroring the P1d verify_auxpow_header pattern so it is unit-testable without the still-deferred storage path.

Rules enforced:

  • below activation height: an AuxPow is PREMATURE (REJECT_PREMATURE_AUXPOW); a plain header is ADMIT
  • at/after activation (mainnet): an AuxPow is MANDATORY (REJECT_MISSING_AUXPOW); present => ADMIT
  • auxpow_activation_height still the -1 sentinel => REJECT_UNPINNED (refuses to judge off a placeholder; no consensus promotion)

+4 KATs (30 -> 34, all green local) under NmcP1eActivationGate; rides the existing build.yml-allowlisted nmc_auxpow_merkle_test target (no CMake/CI change). NMC-only under src/impl/nmc/; btc tree READ-ONLY. Production activation height/chain-id stay TO-CONFIRM unpinned.

check_activation_gate(height, has_auxpow) -> AdmitResult: below activation an AuxPow is premature, at/after activation (mainnet) it is mandatory; refuses to judge (REJECT_UNPINNED) while auxpow_activation_height stays the -1 sentinel so no verdict is rendered off a placeholder. Factored like the P1d verify_auxpow_header gate so it is unit-testable independent of the still-deferred storage path. +4 KATs (30->34), rides the existing build.yml-allowlisted nmc_auxpow_merkle_test target. NMC-only under src/impl/nmc/, btc tree READ-ONLY.
@frstrtr
frstrtr merged commit baa7ab3 into nmc/p1d-share-accept-gate Jun 19, 2026
frstrtr added a commit that referenced this pull request Jun 19, 2026
nmc(P1e): activation-height gate + in-memory storage leg (re-target #190+#192 -> master)
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