[ ] Add detailed documentation as comments on top of every Chain and Client function.
[ ] Split Client
[ ] Improve the composability of testing utils, such as TestEnv and the intimidating setup_mock_all_validators, so we can write more granular tests and be more precise about how tests are set up.
[ ] Export more debugging info for partial encoded chunks handling
[ ] Have a clearer API for working with the chain topology (e.g. no "head", "header_head", "head_header" business); fix issues related to incorrect/inaccurate use of chain topology (#8154). Have a isolated component just to manage topology.
[x] Finish ShardsManager refactoring to move it onto separate actix (#7662)
General theme: split chain into logical components; have testing for each logical component.
Some items we have come up with so far (many of these need further brainstorming)
For those who have access: link to the VC where we discussed this issue