We do not host Knots C++ here. This page maps BIP-110’s seven rules to enforcement stages and points you at tagged source reviews. Spec status is Complete; reading the code is how you verify what a binary will do.
New scriptPubKeys above 34 bytes fail, except OP_RETURN up to 83 bytes. Wired when the deployment asks for the output-size check (including coinbase via a separate path).
Versionbits state turns on reduced-data verification flags when the deployment is ACTIVE. Mandatory signaling is checked in a narrow pre-timeout window while still STARTED.
Interpreter reuses push/witness size checks with a 256-byte reduced cap; Taproot annexes, oversized control blocks, OP_SUCCESS, and Tapscript OP_IF/OP_NOTIF fail under the flag. P2SH redeemScript push keeps a narrow exception, then remaining stack items are checked.
Per input: coins created before activation clear reduced-data flags for that input only. Same transaction can mix exempt and non-exempt inputs.
Temporary deployments record activation height, expire after active_duration, can force LOCKED_IN near max activation, and reject non-signaling headers during the must-signal window.
Limit new outputs to 34-byte scripts; OP_RETURN may use up to 83 bytes.
Cap OP_PUSHDATA / witness elements at 256 bytes (P2SH redeemScript exception).
Reject spends of undefined witness/tapleaf versions while active.
Taproot annexes fail under reduced-data rules.
Cap control-block size (depth limit for spendable leaves during the window).
Tapscripts containing OP_SUCCESS are invalid even if not executed.
Executed OP_IF / OP_NOTIF in Tapscript fail while active.
Deployment can use its own signaling threshold (55% / 1109) instead of the global default.
Grandfathering is per input, not per transaction. Script-check caches that assume one flag set for every input are bypassed when per-input overrides exist.