* choose the straightforward candidate selection algorithm for now
* add draft implementation of candidate selection
* fix typo in summary
* more properly report misbehaving collators
* describe how CandidateSelection subsystem becomes aware of candidates
* revise candidate selection / collator protocol interaction pattern
* implement rest of candidate selection per the guide
* review: resolve nits
* start writing test suite, harness
* implement first test
* add second test
* implement third test
Co-authored-by: Bernhard Schuster <bernhard@ahoi.io>
* Do a small write-up on collation-generation
* preamble to collator protocol
* notes on protocol
* collation-generation: point to collator protocol
* fix missing bracket
* expand on collator protocol wire protocol
* add a couple more sentences
* expand on requests some more
* go higher level
* network bridge: note peerset
* note peer-set = validation for protocols
* add `ConnectToValidators` message
* use ConnectToValidators in collator protocol
* typo
* remove references to sentry nodes
* Updates guide for CandidateBacking
* Move assignment types to primitives
* Initial implementation.
* More functionality
* use assert_matches
* Changes to report misbehaviors
* Some fixes after a review
* Remove a blank line
* Update guide and some types
* Adds run_job function
* Some comments and refactorings
* Fix review
* Remove warnings
* Use summary in kicking off validation
* Parallelize requests
* Validation provides local and global validation params
* Test issued validity tracking
* Nits from review
* introduce candidatedescriptor type
* add PoVDistribution message type
* loosen bound on PoV Distribution to account for equivocations
* re-export some types from the messages module
* begin PoV Distribution subsystem
* remove redundant index from PoV distribution
* define state machine for pov distribution
* handle overseer signals
* set up control flow
* remove `ValidatorStatement` section
* implement PoV fetching
* implement distribution logic
* add missing `
* implement some network bridge event handlers
* stub for message processing, handle our view change
* control flow for handling messages
* handle `awaiting` message
* handle any incoming PoVs and redistribute
* actually provide a subsystem implementation
* remove set-builder notation
* begin testing PoV distribution
* test that we send awaiting messages only to peers with same view
* ensure we distribute awaited PoVs to peers on view changes
* test that peers can complete fetch and are rewarded
* test some reporting logic
* ensure peer is reported for flooding
* test punishing peers diverging from awaited protocol
* test that we eagerly complete peers' awaited PoVs based on what we receive
* test that we prune the awaited set after receiving
* expand pov-distribution in guide to match a change I made
* remove unneeded import