* scheduler module skeleton
* update scheduler skeleton to match latest version of guide
* better session change notification
* add mock randomness and fix test compilation
* shuffle validators into groups
* finish implementing session change logic for scheduler
* tweak core assignment type to track retries of parathread
* reframe queued parathread core as offset
* implement initialzation and finalization routines
* implement parathread claim queuing
* implement core_para
* implement the group_validators routine and fix errors
* add a reason for freeing cores
* implement `schedule` function
* add some docs to the scheduled function
* implement `occupied` helper
* implement availability predicate
* fix some warnings
* integrate scheduler into initializer
* integrate scheduler into mock module
* avoid conflict with Substrate's scheduler storage
* add parathreads index to paras module
* implement parathreads map in paras module
* add is_parathread to paras
* test adding parathread claim
* test that you cannot add claims when no parathread cores exist
* check session change parathread queue pruning
* test validator shuffling
* add allow_unused to scheduler items
* add test for scheduling
* add some more tests for scheduling logic
* test core rotation
* check parathread claim pruning after retries
* add bound notes
* Apply suggestions from code review
Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
Co-authored-by: Bernhard Schuster <bernhard@ahoi.io>
* more suggestions from review
* test availability predicate, add box to please compiler
* add changes to guide
Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
Co-authored-by: Bernhard Schuster <bernhard@ahoi.io>
* file structure and initializer skeleton
* ensure session changes happen before initialization
* add a couple tests for initializer flow
* integrate with session handling
* configuration update logic
* configuration methods
* move test mock to its own module
* integrate configuration into initializer
* add note about initialization order
* integrate configuration module into mock
* add some tests for config module
* paras module storage
* implement paras session change operation
* amend past code pruning to fully cover acceptance period
* update guide again
* do pruning of historical validation code
* add weight to initialization
* integrate into mock & leave notes for next session
* clean up un-ended sentence
* alter test to account for double index in past code meta
* port over code-at logic test
* clarify checking for conflicting code upgrades
* add genesis for paras, include in mock, ensure incoming paras are processed
* note on return value of `validation_code_at`
* implement paras routines from implementor's guide
* bring over some existing tests and begin porting
* port over code upgrade tests
* test parachain registration
* test code_at with intermediate block
* fix warnings
* clean up docs and extract to separate struct
* adjust implementor's guide to include replacementtimes
* kill stray println
* rename expected_at to applied_after
* rewrite ParaPastCodeMeta to avoid reversal
* clarify and test interface of validation_code_at
* make FutureCode optional
* rename do_old_code_pruning
* add comment on Option<()> to answer FAQ
* address some more grumbles