diff --git a/roadmap/phase-1.png b/roadmap/phase-1.png new file mode 100644 index 000000000000..d6d272aefb09 Binary files /dev/null and b/roadmap/phase-1.png differ diff --git a/roadmap/phase-1.toml b/roadmap/phase-1.toml new file mode 100644 index 000000000000..50ef1f741fe9 --- /dev/null +++ b/roadmap/phase-1.toml @@ -0,0 +1,64 @@ +# Phase 0 + +[[group]] +name = "phase-0" +label = "Phase 0: MVP" +items = [] + +# Phase 1 + +[[group]] +name = "two-phase-inclusion" +label = "Two-phase inclusion of parachain candidates" +requires = ["phase-0"] +items = [ + { label = "Buffer submitted parachain candidate until considered available." }, + { label = "Validators submit signed bitfields re: availability of parachains" }, + { label = "relay chain fully includes candidate once considered available" } +] + +[[group]] +name = "secondary-checking" +label = "Secondary checks and self-selection by validators" +requires = ["two-phase-inclusion"] +items = [ + { label = "Extract #VCheck for all checkable candidates" }, + { label = "Maintain a frontier of candidates that are likely to be checked soon" }, + { label = "Listen for new reports on candidates and new checks to update frontier" }, +] + +[[group]] +name = "runtime-availability-validity-slashing" +label = "Availability and Validity slashing in the runtime" +requires = ["two-phase-inclusion"] +items = [ + { label = "Track all candidates within the slash period as well as their session" }, + { label = "Submit secondary checks to runtime", port = "submitsecondary", requires = ["secondary-checking"]}, + { label = "Track reports and attestatations for candidates" }, +] + +[[group]] +name = "non-direct-ancestor" +label = "Allow candidates with non-direct ancestor" +items = [ + { label = "Extend GlobalValidationData with random seed and session index"}, + { label = "Block author can provide minimally-attested candidate with older relay parent" }, + { label = "Runtime can accept and process candidates with older relay-parent" }, + { label = "Revise availability-store pruning to ensure only needed data is kept" }, +] + +[[group]] +name = "grandpa-voting-rule" +label = "GRANDPA voting rule to follow valid/available chains" +requires = ["runtime-availability-validity-slashing"] +items = [ + { label = "Add a utility to flag a block and all of its ancestors as abandoned" }, + { label = "Accept new blocks on abandoned but mark them abandoned as well." }, + { label = "Do not vote or build on abandoned chains" }, +] + +[[group]] +name = "phase-1" +label = "Phase 1: Availability and Validity" +requires = ["non-direct-ancestor", "grandpa-voting-rule", "runtime-availability-validity-slashing"] +items = [] diff --git a/roadmap/render.sh b/roadmap/render.sh new file mode 100644 index 000000000000..a54384bac459 --- /dev/null +++ b/roadmap/render.sh @@ -0,0 +1,11 @@ +# requires skill-tree: github.com/nikomatsakis/skill-tree + +render () { + echo "Rendering $1" + skill-tree $1.toml output + python3 -c "from graphviz import render; render('dot', 'png', 'output/skill-tree.dot')" + mv output/skill-tree.dot.png "$1.png" + rm -rf output +} + +render phase-1