{"id":"pbft-primary-skips-prepare","text":"The primary sends PRE-PREPARE but not PREPARE; `_handle_prepare` rejects PREPAREs from the primary, and the primary's code path in `_handle_pre_prepare` skips sending a PREPARE — this asymmetry is why the prepared threshold is 2f not 2f+1.","truth_value":"IN","source":"entries/2026/05/29/byzantine-fault-tolerance-pbft-_check_prepared.md","source_url":"","source_hash":"","justifications":[],"dependents":[],"metadata":{},"explanation":{"steps":[{"node":"pbft-primary-skips-prepare","truth_value":"IN","reason":"premise"}]}}