
node -e "new Function(js)". Must pass clean before deploying../deploy.sh. Never hand-copy individual files. deploy.sh syncs: index.html, changelog.html, color-guide.html, getting-started.html, marker-guide.html, working-with-juliet.html, JULIET_LAWS.md, CHANGELOG.md, markers/.curl -o /dev/null -w "%{http_code}" https://lncommand.com/ must return 200, not 302 or 500.git push origin dev confirmed.curl http://localhost:3456/health must return ok:true.pageshow. Must exist as window.addEventListener('pageshow', function(e) { if (e.persisted) window.location.reload(true); }) — without it, iOS/Safari serves stale page from memory and users see no changes after deploys.PictureMarkerSymbol. Every waypoint icon instance must be width: 14, height: 14. If it says anything else, revert immediately before deploying./?v=timestamp) — they break auth flows<script> block — getElementById returns null and crashes all auth codeexec background:true for Claude Code — it sends stray messages to Telegramgit log first — uncommitted work gets wipedAlways use ./deploy.sh from the dev workspace. Never hand-copy files.
dev.lncommand.com first — login, maps, Juliet, help popupschangelog.html with today’s date (deploy.sh checks for it)cd /Users/project_koa/.openclaw/workspace/leadnav-command ./deploy.sh
Script syncs all required files, restarts proxy if server.js or any file in juliet-proxy/tools/ changed, runs health check. Node.js caches require() — tool file changes need a proxy restart or they silently have no effect.
curl https://lncommand.com/ returns 200Cache-Control: no-store, no-cache, must-revalidate HTTP headers for all HTML. This is the real fix — not meta tags, not version redirects, not client-side localStorage clearing. Server headers only.Full spec: /leadnav-command/JULIET_LAWS.md in the dev workspace.
A Law is a code gate only. If it can’t be enforced by code, it’s not a Law.
cacheBust() function that cleared Supabase localStorage, logging all users out on every deploy. Also added a /?v=timestamp redirect loop that broke auth flows.<script> block. getElementById returned null, crashed all auth code, broke login again.juliet-proxy/tools/road-route-builder.js to strip filler words from marker names. Deployed. Fix had no effect — proxy was still running the old cached version of the file because Node.js require() caches modules at startup.server.js changed, not tool files. The fix was live on disk but dead in memory.juliet-proxy/tools/ and restarts proxy when any tool file changes.exec background:true for Claude Code sends stray completion wake messages to Telegram. Happened multiple times despite being documented in MEMORY.md.sessions_spawn runtime:subagent or run Claude Code foreground.~/.openclaw/bin/serve-lncommand-dev.js~/.openclaw/bin/serve-lncommand-prod.js/workspace/leadnav-command/juliet-proxy/server.js/Users/project_koa/.openclaw/workspace/leadnav-command//Users/project_koa/.openclaw/workspace-prod/leadnav-command/curl http://localhost:3456/health
curl -o /dev/null -w "%{http_code}" https://lncommand.com/
curl -o /dev/null -w "%{http_code}" https://dev.lncommand.com/