From 97e2d67648084a468072feae14afc15d924b0cd2 Mon Sep 17 00:00:00 2001 From: Michael Gilardi <11632652+mgilardi@users.noreply.github.com> Date: Mon, 9 Nov 2026 04:53:01 -0700 Subject: [PATCH] Add the first test audit and the ops kit The audit puts children's privacy and failing closed first: who receives a share, HouseRules filtering, sharing off with an older HouseRules, and old permission names that still deny. All were already tested with 0.2.0; no new gaps. The ops starter files are added with this repo's real area. Co-Authored-By: Claude Opus 5.5 --- CLAUDE.md | 9 +++++++++ docs/test-audit.md | 25 +++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 CLAUDE.md create mode 100644 docs/test-audit.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..3f79932 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,9 @@ +# BlueMinimap + +Registered in the owner's ops process (`~/Code/ops`). Area: `minecraft-plugins` (lead: Minecraft: Plugins Lead). Added 2026-11-09 from the ops starter kit; the repo itself dates from 2026-11-07 (as BlueMapHUD). + +**Before doing anything here, run `~/Code/ops/scripts/repo-context`.** It shows who leads this repo, whether that session is active, what's pending, and which briefs apply. If it says the repo has no active owner, tell the director ("Helm") before starting work. + +Then follow `~/Code/CLAUDE.md` (the standards) and `~/Code/ops/README.md` (how sessions work). For GitHub status checks use `~/Code/ops/scripts/gh-status`, never polling. + +This repo's own decisions go in `docs/decisions.md`, dated. diff --git a/docs/test-audit.md b/docs/test-audit.md new file mode 100644 index 0000000..9a6b079 --- /dev/null +++ b/docs/test-audit.md @@ -0,0 +1,25 @@ +# Test audit + +Kept by this repo's owning session (Minecraft: Plugins Lead), per `~/Code/CLAUDE.md`, "Test self-audits". Newest first. + +## 2026-11-09: first full audit (at 0.2.0) + +The README's Testing section already lists what the live suite covers, check by check, so this audit starts from the promises that matter most for children's safety and privacy and for failing closed, then confirms the rest map to the Testing list. + +| Promise | Covered by | +| --- | --- | +| **Shares reach only players in the sender's world group who can see the sender, have `blueminimap.share.receive`, and haven't turned shares off** | live `suite.js` share group: one person, world group with the Nether, another world excluded, shares off, receive and send permissions, players hidden from the sender | +| **A rules plugin (HouseRules) can remove recipients or cancel a share** | live share group (stand-in rules plugin); live `houserules.js` with the real HouseRules 0.2.0: shares stay inside circles, a no-circle sender in a circle-only world sends nothing | +| **Fail closed with an older HouseRules: sharing off, admin told** | live `houserules.js` with the real HouseRules 0.1.1; unit `HouseRulesGuardTest` (including an unreadable version) | +| **A server's "no" under an old permission name still stops sharing** | live share group "An old bluemaphud.share.receive/send false still stops…"; unit `PermsTest` (deny wins, admin grant wins, no noise when the old name changed nothing) | +| Sharing limits: cooldown, console log, `share.enabled: false` | live share group | +| Other players hidden by vanish, `hidePlayer`, spectator, invisibility, BlueMap, radius, other dimensions, `blueminimap.seeplayers` | live players group | +| Players keep their HUD settings across the rename | unit `PlayerSettingsTest` (settings saved under the original keys still load) | +| Upgrade from BlueMapHUD: folder copied, never overwritten | unit `MigrationTest` | +| Everything else in the README (map accuracy, icons, clock, themes, one boss bar, updates, pack handling, life cycle, bad data, other setups) | the README's Testing list, check by check, in `test/live/suite.js`, `packurl.js`, `storage.js` and `backoff.js` | + +**Gaps added this audit:** none new. The old-name deny checks, the HouseRules joint test and the guard tests were added with 0.2.0 earlier the same day, and all passed on Paper 26.1.2, 26.2 and 26.3. + +**Skipped, with reasons:** +- Pressing the buttons in the `/hud share` dialog: the bot's protocol library can't click a dialog button. The buttons call the same code `/hud share ` and `/hud share everyone` test. +- How it looks in a real game client: the README's status line says so; it's on the real-client list.