What's Changed
- refactor(node): share node bootstrap between init paths by @bfish713 in #4952
- Add tokio runtime metrics by @twittner in #4978
- chore(deps): update rustls to 0.23.45 for RUSTSEC-2026-0285 by @sveitser in #4984
- Add Protobuf Config module V2 APIs by @imabdulbasit in #4912
- Bind epoch in timeout certificate commitment. by @twittner in #4928
- refactor(api): abstract the API's consensus dependency by @bfish713 in #4953
- fix(orchestrator): don't require a builder URL by @bfish713 in #4989
- Trigger fetch for missing certificate2 in light client proofs by @imabdulbasit in #4985
- Remove builder and its infra by @imabdulbasit in #4939
- Downgrade pruner logs level from warn to info by @imabdulbasit in #4988
- feat(release): misc improvements from first use by @sveitser in #4982
- fix binary upgrade tests on CI :drop the builder from the base tag compose by @imabdulbasit in #4994
- add database module v2 endpoints by @imabdulbasit in #4913
- fix: smoke test tx flake by @sveitser in #4980
- Generate the v2 API code into OUT_DIR instead of committing it by @imabdulbasit in #5003
- feat(new-protocol): upgrade mechanism and V0_7 LargeBlock upgrade by @bfish713 in #4909
- Anchor catchup at the epochs we hold by @twittner in #4945
- perf: VID and commitment optimizations for the production path by @mrain in #4910
- stop re-including transactions a node already saw in a block by @imabdulbasit in #5006
- add availability module v2 endpoints by @imabdulbasit in #4926
- feat(node): light-client follower context by @bfish713 in #4954
- fix(l1): stop proposal validation waiting on a stale local L1 view by @sveitser in #5010
- fix(release): restrict tracker commands to users with write access by @sveitser in #5028
- fix(node): follower upgrade-cert type mismatch by @sveitser in #5029
- feat(process-metrics): log CPU features and SHA-256 speed at startup by @sveitser in #5027
- fix(release): remove lock, run from main by @sveitser in #5032
- Build every block of a view from the same transactions by @twittner in #5033
- remove the hotshot-events stream and its service crate by @imabdulbasit in #5018
- Remove the legacy HotShot test harness, examples and dev-only tasks by @bfish713 in #5017
- Ah/reject non epoch root state cert by @alysiahuggins in #4970
- feat(header): propose l1_head a few blocks behind the local head by @sveitser in #5013
- fix(new-protocol): size block and message limits from the chain's max block size by @sveitser in #5022
- Prove conditional progress and deadlock freedom by @twittner in #4873
- Remove the legacy -> new-protocol cutover path by @bfish713 in #5035
- Add block and fee merklized state v2 endpoints by @imabdulbasit in #4946
- feat(node): --follower-peers runs the sequencer as a light-client follower by @bfish713 in #4955
- drop slow tests that need the removed 0.5 to 0.6 cutover by @imabdulbasit in #5060
- share the reconstructed block payload behind an arc by @imabdulbasit in #5062
- test(slow-tests): drop the 0.5 -> 0.6 cutover stake-table tests by @bfish713 in #5058
- feat(bench): simple whole network benchmark on CI by @sveitser in #5059
- skip payloads and decide events on non-query nodes by @imabdulbasit in #5055
- fix(query-service): summarize waiting callbacks in fetch dedup log by @lukaszrzasik in #5063
- delete tests that only exercise pre-0.6 protocol versions by @imabdulbasit in #5048
- fix(bench): staircase improvements by @sveitser in #5067
- test(slow-tests): run the remaining slow tests on the new protocol by @bfish713 in #5064
- Add metrics for pruned height and improve logging by @imabdulbasit in #5070
- Keep vote and proposal marks to the decide floor by @twittner in #5036
- Optimize merklized state pruning query by @imabdulbasit in #5072
- Enforce monotonic views and epochs by @twittner in #5000
- Record a Cert1 that arrives behind the current view by @twittner in #5023
- return an error when the node drops a submitted transaction by @imabdulbasit in #5077
- test(new-protocol): reproduce timeout vote split at epoch boundary by @lukaszrzasik in #4962
- Fix state pruning: stop state pruning query from rescanning older rows by @imabdulbasit in #5083
- Fix build. by @twittner in #5091
- fix(query-service): keep the state pruner behind the state loop by @lukaszrzasik in #5053
- test(new-protocol): read boundary epoch from consensus state by @lukaszrzasik in #5094
- fix(new-protocol): drop upgrade votes from inadmissible epochs by @lukaszrzasik in #5009
- Consensus pruning: check consensus storage usage every 5m off the write lock by @imabdulbasit in #5096
- chore: update rustfmt by @sveitser in #5107
- chore: rust 1.97.1 -> 1.99 by @sveitser in #5106
- feat(release): show containing tag for release branch commits by @sveitser in #5105
- test(hotshot-testing): default TestDescription to protocol 0.6 by @lukaszrzasik in #5108
- fix(explorer-api): return 404/400 instead of 500 for explorer errors by @fkrell in #5103
- keep the dedup window as long as the resend ttl by @imabdulbasit in #5078
- Add protobuf V2 state signature API by @imabdulbasit in #4996
- send each transaction to the next leaders once, resend after their turn by @imabdulbasit in #5099
- restore the anchor's cert2 on restart by @imabdulbasit in #5122
- check proto formatting and backward compatibility in CI by @imabdulbasit in #5114
- test(node): light-client follower follows the chain end-to-end by @bfish713 in #4956
- fix(reward): reuse an epoch's reward result when its boundary reapplies by @bfish713 in #5043
- feat(block): keep VID dispersal size predictable by @sveitser in #5068
- perf(types): use ARMv8 SHA-256 instructions on aarch64 by @sveitser in #5123
- Add protobuf V2 submit API by @imabdulbasit in #4997
- perf: block building benchmark by @sveitser in #5130
- Add protobuf V2 explorer API by @imabdulbasit in #4998
- fix(new-protocol): carry an obtained payload in the decide by @bfish713 in #5129
- fix(new-protocol): verify and apply timeout certs once per view by @bfish713 in #4723
- Check timeout cert on a proposal following its parent by @twittner in #5131
- keep all the stake tables in the light client database by @imabdulbasit in #5132
- ci: build bench branches by @sveitser in #5134
- test(node): run the mock-version API tests on the new protocol by @bfish713 in #5045
- Hold proposals by view and commitment by @twittner in #5046
- fix(vid): bound AvidmGf2 ns_lens by the share's shard size by @bfish713 in #5115
- fix(new-protocol): check VID ns_lens and the ns table against the payload by @bfish713 in #5121
- feat: aws benchmarks by @sveitser in #5069
- Add payload hash index for
da_proposal2andvid_share2tables by @imabdulbasit in #5139 - skip reward proofs while the state loop is below the tree height by @imabdulbasit in #5140
- refactor(request-response): typed per-caller response waiters by @bfish713 in #4643
- feat(header): drop the builder commitment from the 0.7 header by @bfish713 in #4991
- light client: Reduced Info Logging by @jjeangal in #5138
- perf: aws bench bbr3, sqlite, clients, pruning by @sveitser in #5146
- sign and relay light client states off the event loop by @imabdulbasit in #5056
- run the node, light-client and reward tests at protocol 0.6 by @imabdulbasit in #5049
- Remove unnecessarily tight constraint on sqlx version by @jbearer in #5160
- [Bot] Update AGENTS.md by @github-actions[bot] in #5163
- fix(node): state loop reads pruned leaves and snapshots from peers by @lukaszrzasik in #5089
- fix(light-client-api): rebuild header proofs for pruned roots by @sveitser in #5166
- Rework and extend lean spec. by @twittner in #5118
- chore(dev-node): always run protocol 0.6 by @bfish713 in #5171
- test(query-service): run tests on a synthetic new-protocol chain by @bfish713 in #5147
- feat(node): read a snapshot by root when its header is pruned by @lukaszrzasik in #5150
- test(types): pin the legacy leaf reference tests to 0.1 by @lukaszrzasik in #5169
- fix(new-protocol): deliver external messages on arrival by @sveitser in #5173
- chore(genesis): configure decaf 0.6 -> 0.7 upgrade (voting only) by @sveitser in #5178
Full Changelog: 0.6.3.0...0.7.0.0