OP_CHECKLOCKTIMEVERIFY compares a nonnegative stack argument with the spending transaction's absolute nLockTime and checks that input's nSequence. Transaction finality rules then test actual time eligibility.
nLockTime alone delays a particular transaction. CLTV in an output condition prevents bypassing that same path with another transaction having lower nLockTime; other paths must be assessed separately. [BIP 65 — OP_CHECKLOCKTIMEVERIFY] [Bitcoin Developer Reference — Transactions]
A value below 500000000 means block height; values at or above it mean a timestamp. The CLTV argument and nLockTime must have the same type; numeric comparison alone is insufficient. [BIP 65 — OP_CHECKLOCKTIMEVERIFY] [Bitcoin Core v29.0 — Script interpreter]
The argument must be nonnegative and no greater than nLockTime. CLTV does not read the computer clock or pause script execution; an unmet check fails validation. [BIP 65 — OP_CHECKLOCKTIMEVERIFY] [Bitcoin Core v29.0 — Script interpreter]
The input being checked must not have nSequence = 0xffffffff. This prevents disabling nLockTime through final sequences; CLTV does not require a particular nonzero relative delay. [BIP 65 — OP_CHECKLOCKTIMEVERIFY] [Bitcoin Core v29.0 — Script interpreter]
With nLockTime = 900000 and a nonfinal input, the earliest candidate height is 900001 because finality requires nLockTime below block height. Passing CLTV at argument equality does not move this boundary. [Bitcoin Core v29.0 — Transaction finality]
Under BIP 113 a time-based nLockTime is compared with the previous block's Median Time Past, the median of the last up to 11 block timestamps. It must be strictly lower; this is not an exact local delivery time. [BIP 113 — Median time-past lock-time calculations] [Bitcoin Core v29.0 — Transaction finality]
CLTV does not consume its argument. In <height> OP_CHECKLOCKTIMEVERIFY OP_DROP <key> OP_CHECKSIG, OP_DROP removes it; this is a condition schematic, not a ready funding recipe. [BIP 65 — OP_CHECKLOCKTIMEVERIFY] [Bitcoin Core v29.0 — Script interpreter]
A time lock alone does not authorize an owner. Signature conditions must still hold; another branch may permit earlier spending and expiry does not automatically send a payment. [BIP 65 — OP_CHECKLOCKTIMEVERIFY] [Bitcoin Developer Reference — Transactions]
CLTV sets a fixed point, not a block count since output confirmation. CSV with BIP 68 addresses an input's age; mining delays or reorganizations do not guarantee a fixed date. [Bitcoin Core v29.0 — Transaction finality] [Bitcoin Developer Reference — Transactions]
BIP 65 introduced CLTV as a soft fork replacing OP_NOP2. Before use, check the whole path, threshold type, nLockTime, nSequence and fee; an active opcode does not guarantee prompt confirmation. [BIP 65 — OP_CHECKLOCKTIMEVERIFY] [Bitcoin Core 0.11.2 — BIP 65 release notes]
For the clearest picture, read this entry together with CHECKSEQUENCEVERIFY, Bitcoin Script opcode, Timelock, Bitcoin Script. The reverse links also lead from Timelock, HTLC, Bitcoin Script opcode, CHECKSEQUENCEVERIFY.