Before starting work, choose the documentation track:
- Legacy stack setup/runbook:
docs/wap-test-environment/README.md - Browser emulator build track:
docs/browser-emulator/README.md
Quick bootstrap:
./scripts/init-refresh.shCanonical prerequisite reference:
docs/development-prerequisites.md
- Clone repository and install required tools:
- Docker + Docker Compose
- Node 20.19+ (or 22.12+). Repo pin:
.nvmrc - pnpm 10+ (for Node workspace scripts)
- Rust toolchain + wasm-pack (for
engine-wasm) pre-commit(for git hooks)
- Start legacy stack:
make up
make status- Build WASM engine package:
cd engine-wasm/engine
wasm-pack build --target web --out-dir ../pkg- Install git hooks:
make hooks-installHook behavior:
pre-commithook runslint-stagedon staged files only:- Prettier for
browser/frontendandengine-wasm/host-sample rustfmtfor staged Rust files inengine-wasm/engine,browser/src-tauri, andtransport-rust- Frontend typecheck (
pnpm --dir browser/frontend exec tsc --noEmit) when staged changes touchbrowser/contracts/*orbrowser/frontend/*
- Prettier for
pre-pushhook runs strict checks viapre-commit(rust fmt --check,cargo clippy -D warnings,cargo testwhere configured, and configured non-mutating checks).
- Follow
.editorconfig. - Keep cross-layer contracts synchronized with implementation changes.
- Add/update docs for any setup, command, or interface change.
- Legacy smoke test:
make smoke- WASM engine tests:
cd engine-wasm/engine
cargo test- Repo-wide CI-equivalent checks:
make ci-localNode checks are disabled by default in make to avoid blocking environments without stable pnpm/corepack setup. Enable them explicitly when needed:
ENABLE_NODE_CHECKS=1 make ci-localPre-push node hooks are opt-in:
WAP_ENABLE_NODE_HOOKS=1 pre-commit run --all-files- Local hooks are wired from
.githooks/(git config core.hooksPath .githooks). .githooks/pre-commitrunslint-stagedand.githooks/pre-pushruns.pre-commit-config.yamlchecks.- CI runs in GitHub Actions:
.github/workflows/ci.yml(required PR/push checks).github/workflows/transport-wap-smoke.yml(manual WAP smoke against Kannel stack)
- Branch protection required-check policy:
docs/ci/REQUIRED_CHECKS.md - Some layer checks are intentionally disabled until those layers are bootstrapped:
electron-applint/test/build- Node package lint/test scripts where not yet defined
- Code builds/tests pass locally for touched components
- Docs updated for setup/contract changes
- No generated artifacts committed unless intentionally required