Adopt lint block, pin stable toolchain, cargo fmt, fix clippy
Add a rustfmt pre-commit gate
build: F5 E-gate — add pre-commit hook (frontend lint + JS tests)