Context
Issue #2382 removed all remaining remoteclaw.ai references from the fork (we own .org, not .ai). Without a CI gate, future PRs can silently reintroduce .ai URLs — especially during upstream sync from OpenClaw.
Scope
Add a regression gate following the existing scripts/check-no-*.mjs pattern:
- New:
scripts/check-no-remoteclaw-ai.mjs — runs git grep -n "remoteclaw\.ai" against tracked files; exits non-zero on any match
- New:
scripts/ci/remoteclaw-ai-allowlist.txt (optional) — allowlist for legitimate exceptions if any emerge (initially empty)
package.json: add lint:no-remoteclaw-ai script entry
- Wire into
check aggregator (same style as lint:tmp:no-random-messaging)
Precedent
Existing gates following this pattern:
scripts/check-no-zombie-imports.mjs
scripts/check-no-raw-channel-fetch.mjs
scripts/check-no-raw-window-open.mjs
scripts/check-no-random-messaging-tmp.mjs
scripts/ci/check-rebrand-leakage.sh + rebrand-allowlist.txt (blocks openclaw leakage; closest analogue)
Acceptance criteria
Non-goals
- Does not revisit the
openclaw leakage gate (different scope, already exists)
- Does not enforce
.org canonical form (only blocks .ai)
Out of scope
Links
Context
Issue #2382 removed all remaining
remoteclaw.aireferences from the fork (we own.org, not.ai). Without a CI gate, future PRs can silently reintroduce.aiURLs — especially during upstream sync from OpenClaw.Scope
Add a regression gate following the existing
scripts/check-no-*.mjspattern:scripts/check-no-remoteclaw-ai.mjs— runsgit grep -n "remoteclaw\.ai"against tracked files; exits non-zero on any matchscripts/ci/remoteclaw-ai-allowlist.txt(optional) — allowlist for legitimate exceptions if any emerge (initially empty)package.json: addlint:no-remoteclaw-aiscript entrycheckaggregator (same style aslint:tmp:no-random-messaging)Precedent
Existing gates following this pattern:
scripts/check-no-zombie-imports.mjsscripts/check-no-raw-channel-fetch.mjsscripts/check-no-raw-window-open.mjsscripts/check-no-random-messaging-tmp.mjsscripts/ci/check-rebrand-leakage.sh+rebrand-allowlist.txt(blocksopenclawleakage; closest analogue)Acceptance criteria
pnpm lint:no-remoteclaw-ai(or equivalent) exits 0 on currentmain(after Clean up remaining remoteclaw.ai references (fork owns .org only) #2382 merges)remoteclaw.aiURL in a non-allowlisted file causes the gate to fail in CIpnpm checkrebrand-allowlist.txtfor reference)Non-goals
openclawleakage gate (different scope, already exists).orgcanonical form (only blocks.ai)Out of scope
Links
scripts/ci/check-rebrand-leakage.sh(existing analogous gate foropenclawleakage)