node/is the Substrate entrypoint;output/collects staged binaries after make targets run.runtimes/defines FastChain and AnchorChain logic; Wasm artifacts land undertarget/release/wbuild/.pallets/hosts pallets such asspin-anchoring(SecureUpTo); shared primitives sit inprimitives/.client/consensus-spinplusprimitives/consensus-spinimplement SPIN;docs/,docker/, andzombienet/add ops tooling.
make qf-node/make qf-node-releasecompile debug or release nodes and copy binaries intooutput/.make qf-runtimerefreshes runtime Wasm artifacts before packaging, anchoring, or chain-spec work.make qf-runlaunches a dev FastChain with tmp state;make qf-run-wasmloads runtime overrides fromoutput/.make clippy,make fmt, andmake qf-testwrapcargolint, format (+nightly), and test withSKIP_WASM_BUILD.- Run
taplo format(andtaplo format --check) whenever you touch.tomlfiles. - Run
cargo +nightly fmt --allbefore committing to keep formatting consistent. - Run
cargo check,cargo clippy --all-targets, andcargo +nightly fmt -- --checkbefore review. - Run
cargo test --workspace --no-fail-fastbefore review. - Run
markdownlint-cli2 "**/*.md" "#target" --config .markdownlint.yaml --fixwhen editing Markdown.
- Use Rust defaults: 4-space indentation, snake_case modules/functions, UpperCamelCase types, SCREAMING_SNAKE constants.
- Prefix new crates with
qf-; place consensus additions underclient/orprimitives/to match the layout. - Run
make fmtandmake clippy; avoidunwrapin runtime/consensus code—prefer structured errors.
- Run
make qf-testfor the suite; co-locate integration cases in each crate’stests/folder. - Model FastChain vs AnchorChain in
zombienet/; log best/finalized/secure_up_to metrics. - When touching SecureUpTo or authority transitions, add negative, reorg, and weight-edge cases.
- Keep commit subjects imperative (e.g.,
Add spin-anchoring weight checks) and wrap bodies near 72 characters. - Branch names follow
your-handle/summary; rebase ontomainbefore submitting PRs. - PR descriptions should include motivation, tests (
make qf-test, zombienet), linked issues/specs, and telemetry/log artefacts.
- SPIN pairs FastChain liveness with AnchorChain finality; keep SecureUpTo monotonic and authenticated.
- Regenerate chain specs with
make qf-chainspecafter runtime updates and commit the JSON alongside refreshed Wasm. - Treat heights beyond SecureUpTo as probabilistic; never publish runtime keys; follow
SECURITY.mdfor disclosure.