diff --git a/check-linuxcnc-browser-app-source-map.sh b/check-linuxcnc-browser-app-source-map.sh
new file mode 100755
index 0000000..bb54b39
--- /dev/null
+++ b/check-linuxcnc-browser-app-source-map.sh
@@ -0,0 +1,102 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+cd "$(dirname "$0")"
+
+# LinuxCNC source basis: this guard ties the browser app entry point to
+# LinuxCNC RS274 parameter-file defaults, rs274ngc_pre.cc restore/save/read
+# file semantics, and the existing OPFS-backed wasm-core bridge. It validates
+# app integration policy only; it does not add CNC behavior or expand smoke
+# parsing.
+linuxcnc_root=${LINUXCNC_ROOT:-../linuxcnc}
+linuxcnc_root=$(cd "$linuxcnc_root" && pwd)
+
+grep -F '#define RS274NGC_PARAMETER_FILE_NAME_DEFAULT "rs274ngc.var"' \
+ "$linuxcnc_root/src/emc/rs274ngc/interp_internal.hh" >/dev/null
+grep -F '#define RS274NGC_PARAMETER_FILE_BACKUP_SUFFIX ".bak"' \
+ "$linuxcnc_root/src/emc/rs274ngc/interp_internal.hh" >/dev/null
+grep -F 'int Interp::restore_parameters(const char *filename)' \
+ "$linuxcnc_root/src/emc/rs274ngc/rs274ngc_pre.cc" >/dev/null
+grep -F 'int Interp::save_parameters(const char *filename,' \
+ "$linuxcnc_root/src/emc/rs274ngc/rs274ngc_pre.cc" >/dev/null
+grep -F 'std::string tempfile = std::string(filename) + ".new";' \
+ "$linuxcnc_root/src/emc/rs274ngc/rs274ngc_pre.cc" >/dev/null
+grep -F '+ RS274NGC_PARAMETER_FILE_BACKUP_SUFFIX;' \
+ "$linuxcnc_root/src/emc/rs274ngc/rs274ngc_pre.cc" >/dev/null
+grep -F 'read_text(command, _setup.file_pointer, _setup.linetext,' \
+ "$linuxcnc_root/src/emc/rs274ngc/rs274ngc_pre.cc" >/dev/null
+
+grep -F 'LinuxCNC browser app source map' docs/linuxcnc-browser-app-source-map.md >/dev/null
+grep -F 'must not add CNC behavior' docs/linuxcnc-browser-app-source-map.md >/dev/null
+grep -F 'must not expand the temporary smoke parser' docs/linuxcnc-browser-app-source-map.md >/dev/null
+grep -F '`RS274NGC_PARAMETER_FILE_NAME_DEFAULT` as `rs274ngc.var`' \
+ docs/linuxcnc-browser-app-source-map.md >/dev/null
+grep -F '`parseFileWithParameterFile(programPath, parameterPath, "linuxcnc", ...)`' \
+ docs/linuxcnc-browser-app-source-map.md >/dev/null
+
+grep -F '' web/index.html >/dev/null
+grep -F '' web/index.html >/dev/null
+if [[ "$(grep -Fc '