Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit fc73777. Configure here.
| // Skip slots where either half is incomplete: first-half columns are required for | ||
| // reconstruction, and archiving extension columns without them would make the archived | ||
| // data irrecoverable. | ||
| if (extensionKeys.size() != halfColumns || firstHalfCount != halfColumns) { |
There was a problem hiding this comment.
Archive completeness ignores block root
Medium Severity
archiveSidecarsProofs groups identifiers and checks half-completeness by slot only, while sidecars are keyed by (slot, blockRoot, columnIndex) and proofs are stored per slot. Canonical storage can hold columns from more than one root at the same slot (onNewSidecar does not evict others). Extra leftovers make both halves look over-complete and the slot is skipped, so a fully populated canonical set is never archived. Complementary halves from two roots can still pass the halfColumns checks, persist mixed proofs, and delete extension columns that reconstruction cannot recover.
Reviewed by Cursor Bugbot for commit fc73777. Configure here.
There was a problem hiding this comment.
the feature works only for finalized sidecars
it's impossible to finalize several roots for one slot


PR Description
Another part of #10132
No activation yet, just methods that will be called later + tests.
Fixed Issue(s)
Documentation
doc-change-requiredlabel to this PR if updates are required.Changelog
Note
Medium Risk
Changes persisted blob/column storage and pruning behavior for Fulu data; incorrect completeness checks or prune/proof cleanup could make extension columns unrecoverable or leave stale proof entries.
Overview
Adds
archiveSidecarsProofsonDatabase/KvStoreDatabaseto shrink Fulu storage: for each slot in a range with a complete first and extension half of data columns, it stores extension-column KZG proofs, deletes extension sidecars, and leaves the first-half columns for later reconstruction. Slots with any missing column in either half are skipped so archived data stays recoverable.Canonical
pruneAllSidecarsnow also removes archived proofs for pruned slots (with debug logging), keeping proof metadata aligned with sidecar pruning.Includes integration coverage in
DatabaseTest, serializer edge-case tests, andCombinedChainDataClienttests for reading stored proofs.NoOpDatabasestub added; wiring through the pruner is left for follow-up (not activated in this PR).Reviewed by Cursor Bugbot for commit c2f5360. Bugbot is set up for automated code reviews on this repo. Configure here.