# Platform Verification Checklist Use this checklist to validate portability and path-handling behavior after changes. ## Linux Verification 1. Run core Node tests: ```bash node skills/clawsec-suite/test/path_resolution.test.mjs node skills/clawsec-suite/test/guarded_install.test.mjs node skills/clawsec-suite/test/advisory_suppression.test.mjs node skills/openclaw-audit-watchdog/test/suppression_config.test.mjs ``` Expected: all tests pass. 2. Verify no literal `$HOME` path acceptance: ```bash CLAWSEC_LOCAL_FEED='\$HOME/advisories/feed.json' \ node skills/clawsec-suite/scripts/guarded_skill_install.mjs --skill test-skill --dry-run ``` Expected: exits non-zero with `Unexpanded home token` error. 3. Verify `$HOME` expansion works: ```bash HOME=/tmp/clawsec-home node skills/clawsec-suite/test/path_resolution.test.mjs ``` Expected: `$HOME` expansion tests pass. ## macOS Verification 1. Run the same Node test suite as Linux. 2. Confirm OpenSSL tooling path assumptions are documented: - If using LibreSSL/OpenSSL variations, ensure checks use tested command forms from docs. 3. Verify tilde expansion in config path: ```bash OPENCLAW_AUDIT_CONFIG=~/.openclaw/security-audit.json \ node skills/openclaw-audit-watchdog/scripts/load_suppression_config.mjs --enable-suppressions ``` Expected: path resolves correctly (or clear file-not-found error at expanded location). ## Windows Verification (PowerShell) 1. Run Node tests: ```powershell node skills/clawsec-suite/test/path_resolution.test.mjs node skills/clawsec-suite/test/guarded_install.test.mjs node skills/clawsec-suite/test/advisory_suppression.test.mjs ``` Expected: all pass. 2. Verify PowerShell env path expansion behavior: ```powershell $env:CLAWSEC_LOCAL_FEED = '$env:USERPROFILE\advisories\feed.json' node skills/clawsec-suite/scripts/guarded_skill_install.mjs --skill test-skill --dry-run ``` Expected: path token is expanded/normalized or fails with a clear error if target files are missing. 3. Verify escaped literal token rejection: ```powershell $env:CLAWSEC_LOCAL_FEED = '\$HOME\advisories\feed.json' node skills/clawsec-suite/scripts/guarded_skill_install.mjs --skill test-skill --dry-run ``` Expected: `Unexpanded home token` error; no directory creation with literal `$HOME`. ## Line Endings Sanity 1. Confirm LF policy is present: ```bash test -f .gitattributes && grep -n "eol=lf" .gitattributes ``` Expected: script/config file patterns enforce LF. 2. After a CRLF-prone checkout, verify scripts still parse: ```bash bash -n scripts/populate-local-feed.sh bash -n scripts/populate-local-skills.sh ``` Expected: no `^M` shebang/parse errors. ## Explicit Bug Check: No Literal `$HOME` Directory Creation 1. Configure a path with a literal/escaped token. 2. Run setup/install command. 3. Verify command fails early with token error. 4. Confirm no `$HOME` segment directory was created under working directories. Expected outcome: **no directories containing literal `$HOME` are created by supported setup scripts.** ## Source References - .gitattributes - scripts/populate-local-feed.sh - scripts/populate-local-skills.sh - skills/clawsec-suite/test/path_resolution.test.mjs - skills/clawsec-suite/test/guarded_install.test.mjs - skills/clawsec-suite/test/advisory_suppression.test.mjs - skills/clawsec-suite/scripts/guarded_skill_install.mjs - skills/openclaw-audit-watchdog/scripts/load_suppression_config.mjs - skills/openclaw-audit-watchdog/test/suppression_config.test.mjs