PageSourceSearch

http://www.modality.org/assets/js/0a2245b0.87943a62.js

js modality.org collected 2026-10-08 05:21:52 UTC 8,848 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkdocs_site=globalThis.webpackChunkdocs_site||[]).push([[9377],{15058(e,n,t){t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"roadmaps/roadmap","title":"Network implementation checklist","description":"This is a checklist of public implementation and evidence, not a claim that","source":"@site/docs/roadmaps/roadmap.md","sourceDirName":"roadmaps","slug":"/roadmaps/roadmap","permalink":"/docs/roadmaps/roadmap","draft":false,"unlisted":false,"editUrl":"https://github.com/modality-org/modality/tree/main/docs/docs/roadmaps/roadmap.md","tags":[],"version":"current","frontMatter":{}}');var i=t(74848),a=t(28453);const o={},r="Network implementation checklist",c={},d=[{value:"Join and boot",id:"join-and-boot",level:2},{value:"Mining, ordering, and verification",id:"mining-ordering-and-verification",level:2},{value:"Contracts, observation, and MOD",id:"contracts-observation-and-mod",level:2},{value:"Reproduce and update this checklist",id:"reproduce-and-update-this-checklist",level:2}];function l(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",input:"input",li:"li",p:"p",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"network-implementation-checklist",children:"Network implementation checklist"})}),"\n",(0,i.jsxs)(n.p,{children:["This is a checklist of ",(0,i.jsx)(n.strong,{children:"public implementation and evidence"}),", not a claim that\nmainnet is ready. A checked item means the linked implementation, configuration,\ndocumentation, or test exists in this repository. It does not establish that\nthe public hosts are healthy today.\nFor live access, start with ",(0,i.jsx)(n.a,{href:"/docs/cli/join-testnet",children:"Join the public testnet"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"join-and-boot",children:"Join and boot"}),"\n",(0,i.jsxs)(n.ul,{className:"contains-task-list",children:["\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",checked:!0,disabled:!0})," The bundled ",(0,i.jsx)(n.a,{href:"../../rust/modality-networks/networks/testnet/info.json",children:"testnet network config"}),"\nnames three bootstrap peers, a named bootstrap validator set, predicate theory\n",(0,i.jsx)(n.code,{children:"v3"}),", and development MOD issuance. This is not the mainnet schedule or an\nindependent validator set."]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",checked:!0,disabled:!0})," ",(0,i.jsx)(n.code,{children:"modal node create --testnet"})," creates a fresh joiner identity; the\n",(0,i.jsx)(n.a,{href:"/docs/cli/join-testnet",children:"join guide"})," covers miner and hybrid startup and\nsecond-directory ping."]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",checked:!0,disabled:!0})," Node creation uses ",(0,i.jsx)(n.code,{children:"node.modal_passfile"}),", as documented under\n",(0,i.jsx)(n.a,{href:"/docs/cli/node-commands",children:"Node Commands"}),"; the numbered\n",(0,i.jsx)(n.a,{href:"../../tests/network/01-ping-node/test.sh",children:"ping test"})," checks that filename."]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," A fresh external operator has published a dated successful join, ping,\nand mined-block trace using the current release. Configuration and local\ntests alone do not prove public reachability."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"mining-ordering-and-verification",children:"Mining, ordering, and verification"}),"\n",(0,i.jsxs)(n.ul,{className:"contains-task-list",children:["\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",checked:!0,disabled:!0})," The Rust workspace contains the\n",(0,i.jsx)(n.a,{href:"../../rust/modality-miner/",children:"miner"}),",\n",(0,i.jsx)(n.a,{href:"../../rust/modality-node/",children:"node"}),",\n",(0,i.jsx)(n.a,{href:"../../rust/modality-sequencer/",children:"sequencer"}),", and\n",(0,i.jsx)(n.a,{href:"../../rust/modality-validator/",children:"val
1idator"})," crates. ",(0,i.jsx)(n.code,{children:"run-sequencer"})," orders;\n",(0,i.jsx)(n.code,{children:"run-validator"})," performs the separate prefix-certificate role."]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",checked:!0,disabled:!0})," The ",(0,i.jsx)(n.a,{href:"../../.github/workflows/ci.yml",children:"CI workflow"})," runs workspace\n",(0,i.jsx)(n.code,{children:"cargo check --all"}),", ",(0,i.jsx)(n.code,{children:"cargo check --all --tests --examples"}),", ",(0,i.jsx)(n.code,{children:"cargo test --all"}),",\nand workspace Clippy. These cover network crates as workspace members. CI also\nbuilds ",(0,i.jsx)(n.code,{children:"modal"})," and runs the numbered ",(0,i.jsx)(n.code,{children:"01-ping-node"})," and\n",(0,i.jsx)(n.code,{children:"02-run-devnet1"})," scenarios: the first boots and pings from a second node,\nand the second certifies a local static-sequencer round. The remaining\nnumbered scenarios are not yet CI gates."]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",checked:!0,disabled:!0})," A small ",(0,i.jsx)(n.a,{href:"../../experiments/hybrid-consensus/README.md",children:"hybrid consensus experiment"}),"\ncontains TLA+ and Lean artifacts. It is not a proof of the entire deployed\nprotocol."]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," Publish a repeatable multi-node run showing block propagation,\nepoch-based sequencer nomination, finality, and recovery after a peer loss."]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," Demonstrate independent mining operators and non-pool nodes on the\npublic network; Foundation bootstrappers alone do not establish this."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"contracts-observation-and-mod",children:"Contracts, observation, and MOD"}),"\n",(0,i.jsxs)(n.ul,{className:"contains-task-list",children:["\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",checked:!0,disabled:!0})," The ",(0,i.jsx)(n.a,{href:"/docs/tutorials/on-the-testnet",children:"testnet tutorial"})," and\n",(0,i.jsx)(n.a,{href:"/docs/cli/join-testnet",children:"join guide"})," describe posting a contract through a\nsequencer. The ",(0,i.jsx)(n.a,{href:"/docs/reference/verifier-rejections",children:"verifier rejection reference"}),"\ndescribes checks that can reject a modeled commit."]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",checked:!0,disabled:!0})," The public ",(0,i.jsx)(n.a,{href:"/docs/cli/join-testnet",children:"observer/explorer instructions"}),"\nidentify the node0 instance and say another observer can serve the same HTTP\ninterface. A documented endpoint is not an uptime guarantee."]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",checked:!0,disabled:!0})," The ",(0,i.jsx)(n.a,{href:"/docs/cli/wallet-commands",children:"wallet commands"})," document creating a\nwallet, receiving mined MOD, querying balance, and taking testnet faucet MOD."]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," Publish a dated end-to-end trace from an external node: mine or faucet,\nreceive and query MOD, post a governed contract, and inspect its history from\nan independently running observer."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"reproduce-and-update-this-checklist",children:"Reproduce and update this checklist"}),"\n",(0,i.jsxs)(n.p,{children:["From ",(0,i.jsx)(n.code,{children:"rust/"}),", run the commands in ",(0,i.jsx)(n.a,{href:"../../.github/workflows/ci.yml",children:"the CI workflow"}),".\nUse ",(0,i.jsx)(n.a,{href:"../../tests/network/",children:"the numbered network scenarios"})," for local boot\nand propagation checks. Mark an open item complete only with a linked run\nartifact or reproducible automated test; update claims when the network\nconfiguration or release changes."]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},28453(e,n,t){t.d(n,{R:()=>o,x:()=>r});var s=t(96540);const i={},a=s.createContext(i);function o(e){const n=s.useContext(a);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(a.Provider,{value:n},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.