diff --git a/packages/fork-choice/src/protoArray/protoArray.ts b/packages/fork-choice/src/protoArray/protoArray.ts index 5c501733fce1..570624433cb0 100644 --- a/packages/fork-choice/src/protoArray/protoArray.ts +++ b/packages/fork-choice/src/protoArray/protoArray.ts @@ -365,7 +365,12 @@ export class ProtoArray { while (nodeIndex < this.nodes.length) { const node = this.getNodeFromIndex(nodeIndex); const parent = node.parent !== undefined ? this.getNodeByIndex(node.parent) : undefined; - if (invalidateAll || parent?.executionStatus === ExecutionStatus.Invalid) { + // Only invalidate if this is post merge, and either parent is invalid or the + // concensus has failed + if ( + node.executionStatus !== ExecutionStatus.PreMerge && + (invalidateAll || parent?.executionStatus === ExecutionStatus.Invalid) + ) { node.executionStatus = ExecutionStatus.Invalid; node.bestChild = undefined; node.bestDescendant = undefined;