refactor(proof): always propose against finalized head, drop allow_non_finalized#3883
refactor(proof): always propose against finalized head, drop allow_non_finalized#3883xenoliss wants to merge 4 commits into
Conversation
🟡 Heimdall Review Status
|
42892aa to
eff474c
Compare
| }; | ||
|
|
||
| Some((state, safe_head)) | ||
| Some((state, finalized_head)) |
There was a problem hiding this comment.
Recovery should be bounded by finalized_head here; otherwise existing safe/non-finalized games can advance the cursor and later be used as proposal parents.
| sync_status | ||
| } | ||
|
|
||
| fn headers_for_sync_status( |
There was a problem hiding this comment.
Nit: This helper seems heavier than the test needs now that only finalized_l1 is covered.
headers_for_sync_status() builds a valid header map, but the only caller immediately overwrites that same key to force the mismatch case. I think this can shrink to an inline HashMap::from([(sync_status.finalized_l1.hash, test_l1_header(sync_status.finalized_l1.hash, sync_status.finalized_l1.number + 1))]) inside the test
Review SummaryClean refactoring that removes the Key observations
No issues to block merge. |
✅ base-std fork tests: all 616 passedbase/base is fully in sync with the base-std spec.
|
Summary
Removes the
allow_non_finalizedflag from the proposer and always selects the finalized head for both L1 and L2.Changes
allow_non_finalizedfrom CLI,ProposerConfig,DriverConfig,ProofDispatcherConfig,ProofRecoveryConfig, and all plumbing.select_l1_head_for_targetusesfinalized_l1/finalized_l2only; it errors if the target is above the finalized head, or if the finalized L1 head is below the finalized L2 origin.safe_head->finalized_head.safe_headis kept as a deprecated alias and a newfinalized_headgauge is added; both report the finalized head.safe_headis to be removed once monitors/dashboards are migrated.