# Player smoke-test — racked.ru A regression checklist for "things a default-rank player must be able to do". Pair with `scripts/test-default-perms.sh` to spot LP/PAT regressions before asking the test rig to log in. **Test rig:** YOU500 (LuckPerms group `default`, weight 10). He stays on `default` permanently — never elevate him; he is the canary. Operator gear-loads him via RCON `give` commands; that's fine and doesn't change his perms. **When to run:** before any of these: - plugin update (jar swap) - LuckPerms group/perm change (anything affecting `default`, `settler`, or inheritance) - ProAntiTab `storage.yml` edit (whitelist add/remove) - `commands.yml` or `help.yml` edit - AuthMe / AuthLimbo config change - After server restart following a config-only change --- ## A — Authentication path (AuthLimbo + AuthMe) | # | Step | Expected | Pass? | |---|------|----------|-------| | A1 | Log in cold (server restart, fresh session) | Lands at `auth_limbo` (0.5 / 128 / 0.5) facing void | | | A2 | Type `/login ` | `[AuthLimbo] Restoring YOU500 to world(...)` in logs; teleported back to last location | | | A3 | Movement keys before `/login` | No movement; chat-prompt visible | | | A4 | Re-login within session timeout | Auto-login, no prompt | | ## B — Help and discovery | # | Step | Expected | Pass? | |---|------|----------|-------| | B1 | `/help` | Branded HelpCommand page 1 (racked.ru header, list of basic commands) | | | B2 | `/help 2` (or arrow `>>`) | Page 2 with /bal, /pay, /hs, /shop entries | | | B3 | `/rules` | Server rules from RULES.md displayed | | | B4 | `/list` | Player count + groups (default/Admins) | | ## C — Skin (SkinsRestorer) | # | Step | Expected | Pass? | |---|------|----------|-------| | C1 | `/skin set ` (e.g. `/skin set Notch`) | Skin updates within ~3s | | | C2 | `/skin url ` | Custom URL skin applied | | | C3 | `/skins` (GUI) | Skin browser opens | | | C4 | `/skin clear` | **Should be denied** (admin-only) | | ## D — Land claiming (Homestead) | # | Step | Expected | Pass? | |---|------|----------|-------| | D1 | `/hs create test1` | "Successfully created a new region: test1" + clickable hover-link | | | D2 | `/hs set target test1` | "test1 is now set as the target region" | | | D3 | Stand in unclaimed chunk → `/claim` | "This chunk is now part of the region test1" | | | D4 | `/unclaim` (in same chunk) | "This chunk has been unclaimed" | | | D5 | `/hs menu` | Region GUI opens | | | D6 | `/region info` (or `/rg info`) | Region data printed | | If D1 returns "Unknown command" or the silent-PAT-block, the PAT whitelist regressed — see `docs/DEFAULT-RANK-COMMANDS-2026-05-07.md` §5a. ## E — Homes & teleport (Essentials) | # | Step | Expected | Pass? | |---|------|----------|-------| | E1 | `/sethome base` | "Home set" | | | E2 | `/home base` | TP to base | | | E3 | `/homes` | List of saved homes | | | E4 | `/deletehome base` | Home removed | | | E5 | `/spawn` | TP to spawn | | | E6 | `/back` | TP to prior location | | | E7 | `/tp ` | Sends TPA request (aliased) | | | E8 | `/tpaccept` | Accept incoming TPA | | ## F — Economy (Vault + EZShop + AuctionHouse) | # | Step | Expected | Pass? | |---|------|----------|-------| | F1 | `/bal` | Balance shown | | | F2 | `/baltop` | Top-balance leaderboard | | | F3 | `/pay ` | Transfer succeeds (or "insufficient funds") | | | F4 | `/shop` | EZShop GUI opens | | | F5 | `/ah` (or `/auctionhouse`) | AuctionHouse GUI opens | | ## G — Chat (CarbonChat) | # | Step | Expected | Pass? | |---|------|----------|-------| | G1 | Plain chat message | Visible to others, prefix per LP rank (Adventurer for default, but operator manages prefix display elsewhere) | | | G2 | `/msg hi` | DM delivered, both sides see it | | | G3 | `/r hi` | Reply works after a DM | | | G4 | `/pm hi` (alias) | Same as `/msg` | | ## H — Negative tests (must NOT work for default) | # | Step | Expected | Pass? | |---|------|----------|-------| | H1 | `/op` | "Unknown command" or PAT-block | | | H2 | `/gamemode creative` | Denied | | | H3 | `/give @s diamond 64` | Denied | | | H4 | `/lp ...` | PAT-blocks at execution (lp is global-whitelisted but LP itself denies non-ops) | | | H5 | `/hsadmin reload` | Denied (op-only by Homestead plugin.yml) | | | H6 | `/skin clear` | Denied (LP `false` override) | | ## I — Voicechat | # | Step | Expected | Pass? | |---|------|----------|-------| | I1 | Connect with simple-voice-chat client | Mic + speaker work | | | I2 | Group chat | Spatial audio normal | | --- ## Operator workflow 1. Run `bash scripts/test-default-perms.sh > /tmp/perms-before.txt` (snapshot). 2. Make config / plugin / LP change. 3. Run `bash scripts/test-default-perms.sh > /tmp/perms-after.txt`. 4. `diff /tmp/perms-before.txt /tmp/perms-after.txt` — anything unexpected means the change had collateral effects on the default group. 5. Have YOU500 walk through sections A → I above. Mark Pass/Fail. 6. If anything regressed, see `docs/DEFAULT-RANK-COMMANDS-2026-05-07.md` for last-known-good state and fix recipes. The diff in step 4 is the cheap pre-flight; the YOU500 walk-through is the authoritative regression test. --- ## What we explicitly are NOT testing here - **Rank-prefix display** — operator manages LP prefixes/suffixes manually (locked behaviour per workspace memory). YOU500 will show "Adventurer" with `false` weight; that's intentional and not a regression. - **Premium Lands plugin** — the `/data/plugins/Lands/` config tree exists but the jar is not loaded. If/when re-installed, this checklist needs a Lands section. - **AuthMe registration of new accounts** — separate flow, not part of the default-rank smoke test.