Skip to content

merge queue: embarking unstable (91456fb) and #9382 together#9409

Closed
mergify[bot] wants to merge 15 commits into
unstablefrom
mergify/merge-queue/bea609389a
Closed

merge queue: embarking unstable (91456fb) and #9382 together#9409
mergify[bot] wants to merge 15 commits into
unstablefrom
mergify/merge-queue/bea609389a

Conversation

@mergify
Copy link
Copy Markdown

@mergify mergify Bot commented Jun 4, 2026

🎉 This pull request has been checked successfully and will be merged soon. 🎉

Branch unstable (91456fb) and #9382 are embarked together for merge.

This pull request has been created by Mergify to check the mergeability of #9382.
You don't need to do anything. Mergify will close this pull request automatically when it is complete.

Required conditions of queue rule default for merge:

Required conditions to stay in the queue:

---
checking_base_sha: 91456fb2186b2557937d6db88ca244dd5586998a
previous_failed_batches: []
pull_requests:
  - number: 9382
    scopes: []
scopes: []
...

dapplion and others added 15 commits June 1, 2026 07:36
Ports the consensus lessons from the gloas-lookup-sync work to unstable:
when deciding whether a block's parent is "imported", a post-Gloas FULL
child (whose bid commits to the parent's execution payload) must also wait
for the parent's payload to be imported, not just the parent block.

- proto_array: add `Block::is_child_full(child_bid)` to test whether a
  post-Gloas child commits to this block's execution payload.
- fork_choice: add `ParentImportedStatus` and
  `is_parent_imported`/`is_parent_imported_status`, which return
  `UnimportedPayload` for a FULL child whose parent payload has not been
  received yet.
- block_verification: use these in `verify_parent_block_is_known`,
  the `ExecutionPendingBlock` parent-invalid/parent-unknown gate, and
  `load_parent` (replacing the plain `get_block`/`contains_block` checks),
  and drop the now-obsolete gloas TODO comment.
Remove redundant explanation about FULL child requirement.
Production fix:
- fork_choice: `is_parent_imported_status` no longer gates a Gloas child on
  its parent's payload when the parent is pre-Gloas. A pre-Gloas parent's
  execution payload is embedded in the block and always present, so the first
  Gloas block at the fork-transition boundary must not be rejected with
  `ParentUnknown`.

Test harness fixes (all under FORK_NAME=gloas):
- block_verification: import each block's payload envelope into fork choice
  before importing its child (process_chain_segment imports blocks only); for
  the invalid-signature tests, pre-import ancestors and assert on the segment
  suffix to avoid re-processing finalization-pruned blocks.
- store_tests: mark the weak-subjectivity checkpoint anchor's payload as
  received so the first forward-sync block (a FULL child of the anchor) is
  not rejected.
- Rename `ProtoBlock::is_child_full` -> `is_parent_full` (per review); the
  method is read from the parent's perspective.
- Reword `ParentImportedStatus` variant docs and the `is_parent_imported_status`
  doc comment to describe the condition in terms of the child's bid.

No behaviour change.
- Rename `verify_parent_block_is_known` -> `verify_parent_block_and_envelope_are_known`
  so the added parent-envelope check is visible from the call site (michaelsproul).
- Rename `is_parent_imported_status` -> `get_parent_import_status` and the
  `ParentImportedStatus` enum -> `ParentImportStatus` (michaelsproul).
- Drop the contested "in production payload envelopes are fetched separately"
  claim from the test helper doc; describe current behaviour only (eserilev).
Range sync does not import payload envelopes yet (coming in #9362), so a
multi-block segment of consecutive post-Gloas FULL blocks cannot be imported
by `process_chain_segment`. Skip the affected `block_verification` tests under
`FORK_NAME=gloas` until then, and drop the `import_chain_segment_with_envelopes`
placeholder helper and the per-test workarounds it required.
Reduce the weak-subjectivity forward-sync loop to the minimum needed to import
post-Gloas blocks: persist the payload envelope and mark it received in fork
choice. The data-column reconstruction was unnecessary (the WSS test chain has
no blobs). Placeholder until range sync imports payload envelopes (#9362).
- Remove the parent-not-known explanation in the gate match (duplicated in
  load_parent) and the invalid-parent comment (error name is self-documenting).
- Remove the stale spec-paraphrase in verify_parent_block_and_envelope_are_known.
- Shorten the get_parent_import_status / verify_parent docs and the WSS anchor
  and TODO(gloas) comments.
@cla-assistant
Copy link
Copy Markdown

cla-assistant Bot commented Jun 4, 2026

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
2 out of 3 committers have signed the CLA.

✅ michaelsproul
✅ dapplion
❌ mergify[bot]
You have signed the CLA already but the status is still pending? Let us recheck it.

@cla-assistant
Copy link
Copy Markdown

cla-assistant Bot commented Jun 4, 2026

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
2 out of 3 committers have signed the CLA.

✅ dapplion
✅ michaelsproul
❌ mergify[bot]
You have signed the CLA already but the status is still pending? Let us recheck it.

@mergify mergify Bot closed this Jun 4, 2026
@mergify mergify Bot deleted the mergify/merge-queue/bea609389a branch June 4, 2026 14:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants