How Flow enforces honest node behaviour
Flow slashes nodes only for Byzantine acts that directly impact the security and integrity of the network and its shared execution state. Nodes are not slashed for liveness infractions. The protocol reserves slashing for maintaining the security of the protocol rather than its liveness.
You can find more details on the conditions under which a node is slashed in the Flow whitepapers.
Slashing is not currently enforced by the staking contract. It will be handled on a case-by-case basis for the foreseeable future to ensure network participants have time to participate in the testing and rollout of slashing.
When slashing is enforced, slashable protocol violations must be adjudicated by a supermajority of more than 2/3 of the staked consensus nodes in order to take effect. If a node is found guilty of committing a slashable protocol violation, the consensus nodes directly deduct a fine from the node's stake. Of course, only the remaining stake is deposited back into node's balance at the end of the unstaking period.