Skip to the content
Docs

Staff Guide

On this page8

How to use the panel to settle a dispute, and the handful of rules that keep staff decisions defensible.

Open it: /recognition:admin, or /recognition:admin 12 34 to land straight on a pair.

The panel at a glance

The panel looks like a tablet. The icon bar on the left has one page each:

PageWhat it is for
OverviewLive numbers: players online, scans running, proofs in the last 24 h, open deaths, things to do
PairWhat two players know about each other, both ways
LookupFind one character and see everything about them
TimelineOne player's history, day by day
DeathsNew Life Rule cases: keep or wipe memories
ClothingWhat each clothing item hides, and Auto-scan (classifier level)
AuditEvery admin action, with its reason, and Restore
SettingsChange config.lua values live (settings level)

Pages and buttons you do not have the level for are hidden, and a small chip at the top says Full access, Limited access or View only. Hover any (i) for a short explanation.

Finding a player

Type into Find a player (top right, or the Lookup page). Matches show up as you type. You can search by:

Search byExample
NameCharacter or account name
Server id12
Char keyThe stored character key, or its first letters
DeviceA device serial: HC-, VC- or MS-
ReportA report id: RC-, WS- or DS-

Offline characters are found too.

Lookup with live suggestions
Start typing: online players, offline characters, device owners and report authors show up as you type.

The character card shows who they remember, who remembers them, their proofs of the last 7 days (and how many were below the act line), their identity (face number, implants, next implant) and their devices. Each memory row opens the pair view, and the Timeline button jumps to their history. The Danger zone at the bottom holds Reset face and Implant wait (identity level only).

Judging a metagaming report

This is what the panel exists for. The usual report reads "he knew my name and we've never met" or "I was masked and he called me by name".

1. Open the pair

/recognition:admin <accuser id> <accused id>, or the Pair page: pick A (the one who looks) and B (the one being looked at). The swap button turns them around.

You get both directions side by side. Read the one that matters, accused → accuser:

Part of the cardThe question it answers
% ring and the four cue barsWhat could they reach on the other one right now? A running scan, a live result, or an estimate from memory
Best memoryDid their character have a memory of this person at all? How strong, and how long is it still valid?
FamiliarityHow often they have recognized this person before
Last scanWhen did they last actually look at them, and what did it produce?
Trend · Memories · ProofsHow the number moved over time, every memory with its source, and what they did
The pair view
Both directions side by side: ring, cue bars, best memory, familiarity and the last scan.

Small chips add detail: CAMERA (a hidden-camera scan), VOICE CHANGER, DISGUISE (learned behind a mask), MERGED (a disguise memory folded back into the real one), and LIVE while the pair view updates live.

2. Read both numbers

Every proof carries two numbers:

Killed · Then 54 % · Now 20 % · Below 80%

  • Then 54 % is what their character genuinely remembered.
  • Now 20 % is what a fresh look at the victim at that second could have reached, for example because the victim was masked.

Both are always stored. The pair tells you the story:

PatternWhat it usually means
High first number, high secondThey knew them and could see them. Fine
High first, low secondThey knew them from before, but had no in-game way of knowing it was them right then. This is the metagaming shape
Low first, any secondThey acted on somebody they did not know. Not necessarily metagaming: could just be bad roleplay
No memory at all, and they used a nameLook outside the script: Discord, stream, a friend telling them

3. Check for a disguise memory

If the accused has a memory badged DISGUISE, they legitimately knew "the masked guy" without knowing who was under it. That is the system working, not a violation.

A player who calls the masked guy by his real name while holding only a disguise memory is the case you are looking for.

4. Use the timeline

Timeline → pick the accused. You get a day-by-day list with one short line per event. Click a line for its details.

  • Pick the window: 24 h, 7 d or 30 d.
  • Filter by kind: Scans, Proofs, Papers, Deaths, Admin, Other.
  • The Below 80% chip shows only acts below the act line.
  • Proofs that happened together show as one Incident with … line, so a whole shooting reads as one entry rather than forty aim records.

The timeline also carries their scans, deaths, identity changes and lab results, so "when did they last actually look at this person" is one glance.

5. Export it

Export to Discord on the pair view sends the whole thing to your staff channel: both characters, every memory, the last scans, a short trend line and, if your server allows it, an attached file with the full data. That is your paper trail for an appeal.

Disguise memories are only included when you tick Include disguise rows. Licence identifiers are left out by default.

Fixing things

Editing a memory

Pair → Memories tab → the pencil on the row.

Four sliders, a "valid until" field, the introduced name, and a reason (required, 3–255 characters).

  • The label and the source cannot be changed.
  • Setting "valid until" into the past expires it right now.
  • If your change makes the memory invalid, that pair's live result ends immediately.

Deleting one

The bin icon on the row, with a reason, and an optional switch to reset that pair's familiarity at the same time.

Undoing yourself

Audit → find the row → Restore. It puts back exactly what was there. It refuses if a newer memory of that source exists, if the character's identity changed since, or if the original expiry has already passed.

Deciding a death

The Deaths page explains itself at the top. The rule: when someone dies and respawns, they forget the people who saw it; the witnesses keep their own memories. Revived = remembered, Respawned = forgotten.

It opens on Active now. Pick a status (Down now, Waiting, Respawned, Revived, Expired, Kept by admin, Wiped by admin) to see past cases. Each card shows how they died, the killer and the witnesses, with two buttons:

ButtonWhat it does
Keep memoriesNobody forgets anything for this death. After a wipe it reads Restore memories and brings the wiped memories back
Wipe memoriesThe person who died forgets the witnesses now

The buttons need the edit level. Every choice needs a reason and is logged.

Changing settings in game

Settings page. Almost every value in config.lua is here, live, with no restart. Settings are sorted into groups with plain names (Scanning, Memory, Face implant, Police, reports and MDT and so on), and there is a search box.

Each row has a plain title and an (i) with a short explanation and the config.lua path it belongs to.

On a rowMeaning
A coloured dotChanged in game, or changed but not saved yet
File: …What config.lua says, shown when the live value differs
PadlockCannot be changed here: config file only, or it needs a higher admin level
Restart iconSaved now, used after the next restart
Reset to filePuts the config.lua value back

Use the Changed filter to see at a glance what has drifted from the file.

The rules

  • Everything is clamped. If you type a value outside the safe range, the server stores the clamped value and shows you what it really saved. If it is plainly invalid, that one row is rejected and the rest of your change still applies.
  • Related values are checked against each other: a memory tier cannot cross the one below it, and the minimum to save cannot exceed the act line.
  • Rows marked After restart are saved but not applied until the next restart.
  • Everything is logged with before-and-after, and posted to your admin Discord channel. "Who lowered the implant price" is always answerable.
  • Reset all to file defaults is the safe way out of a bad experiment.

What you cannot change here

LockedWhy
Webhook URLs, the secret, photo keys and everything else in config_server.luaSecrets never leave the server. They are not even shown, masked or otherwise
Framework, inventory, voice, death, MDT and every other integration selectorSwapping an adapter mid-session is not safe. Config file and a restart
Every permission settingThe settings page can never widen its own access

The new-clothing-items notice

After a restart you may see one line in the console and a banner in the panel:

New clothing items: 312 new clothing and prop items were found since the last check.

That means somebody installed an EUP or addon clothing pack, or the game updated. Until those items are classified:

  • an unknown mask counts as covering the whole face;
  • an unknown top counts as long sleeves;
  • an unknown hat or helmet behaves like a cap: face mostly visible, hair hidden;
  • an unknown arms item (gloves slot) leaves the hands bare.

Three buttons:

ButtonWhat it does
Run Auto-scanClassify them properly. It runs on your game, so keep the window open; the panel shows how long is left
Accept countsStore the new numbers without scanning. The items stay unknown
DismissHide the notice until the numbers change again

Nothing is ever scanned automatically. See Clothing Classifier & Auto-scan.

Rules for staff

  • You cannot look at your own pairs. By default the panel refuses any pair or player where your own character is involved (it shows This is you). Otherwise you would learn in character who remembers you. The server console is exempt. If your server turns this off (Config.Admin.BlockSelfView), every self-view is posted to the admin channel.
  • Every edit needs a reason. It is stored and shown in the Audit log.
  • The logs are tamper-evident. Proofs and the audit log cannot be changed quietly. Run /recognition:verifyproofs if you ever need to show that nothing was edited after the fact.
  • Grant the smallest level that does the job. view for moderators, edit for senior staff, settings for the people you would trust with the config file.

Useful commands

CommandLevel
/recognition:admin [idA] [idB]view
/recognition:check <idA> <idB>view: prints both directions to the console
/recognition:verifyproofs [fromId]view: checks that no proof or audit row was changed
/recognition:statusview: running scans, caches, detected integrations
/recognition:selftestview: the installation check
/recognition:export <idA> <idB> [note]export
/recognition:tags [id]classifier
/recognition:resetidentity <id|charKey> <reason>identity
/recognition:freeimplant <id> <reason>identity
/recognition:implantcooldown <id|charKey> <days> <reason>identity
/recognition:prunesettings
/recognition:debugsettings

Full list with syntax: Commands.