Armorer Guard v0.3.1 aligns the public release with the crates.io package and the local learning v2 runtime.\n\nHighlights:\n- Rust runtime package version is now 0.3.1.\n- Learning version is local-learning-v2.\n- Reviewed can_train=true feedback updates an installation-local online weight overlay synchronously.\n- Local feedback storage now includes feedback/online_weights.json alongside events and exemplars.\n- Docs and smoke tests were updated for the 0.3.1 Python/Node package metadata.\n\nValidation run before release:\n- cargo test --locked: 65 passed\n- cargo build --release --locked\n- scripts/smoke.sh\n- npm test --prefix npm/armorer-guard with ARMORER_GUARD_BIN=target/release/armorer-guard\n\nRegistry status at release time:\n- crates.io: 0.3.1 live\n- PyPI: 0.3.0 still live; 0.3.1 upload is pending PyPI token/package permission fix\n- npm @armorerlabs/guard: 0.3.0 still live; 0.3.1 publish is pending npm token/login refresh