Workflow — producers and leads¶
What you run, and what you are expected to press. Read Team workflow in Discord first for the parts every discipline shares.
Reviewing a submit¶
Every submit posts in its discipline's channel and pings you. The post carries the author, the workspace, and the files that were added, edited or deleted. A thread opens on it with the author already pinged.
Engineering notices also carry the task code, and their threads are named after it, so every changelist for one task lands in one thread. Art and design have no task codes yet: their notices are identified by the changelist number and the author's description, and each changelist gets its own thread and its own review.
Looks good — the author is pinged in the thread with approved, no action needed, the post is stamped approved, and the thread tag becomes [APPROVED].
Needs changes — a box opens for your reason. Write something the author can act on; it is posted in the thread with them pinged, and it is what they fix against. The reason is stored, so the trail survives a redeploy.
Block — for work you are waiting on something else for, such as a rig or an asset that has not landed. A box opens for the reason, the author is pinged, and the tag becomes [BLOCKED].
Either the discipline's lead or a producer can press. The post names whoever pressed, so when Maggie approves an art submit it says Maggie, not the art lead.
A lead approving their own submit is allowed, and flagged as a self-review in the thread. Some disciplines have exactly one lead, and blocking would leave their own work permanently unreviewable.
Approving twice is refused. Approving after you asked for changes is fine — that is the fix landing.
Linking a person to a workspace¶
Volunteers share five guest logins, so Perforce cannot tell you who submitted. The workspace name is the per-person key, and /link is how it is joined to a Discord account.
Everyone links themselves. A workspace name has to serve your other projects too, so nobody is asked to rename it. Run /link, pick your workspace from the list, and press Link — your own account is filled in already. From then on your submits carry your name.
You can also skip the panel: /link workspace:<name> links it to you immediately.
Producers, admins and discipline leads can additionally link on someone else's behalf, which is what the rest of this page is for:
/link opens with three fields, and you can fill them in any order:
| Field | What it is |
|---|---|
| Discipline | Filters both lists below. Recording it also tags the link. |
| Workspace | The Perforce workspace list — a dropdown, with a Search workspaces… row when the list is long. |
| Discord user | The member list for the chosen discipline. Locked to yourself unless you manage links. |
Pick one from each, then press Link. Nothing is ever typed by hand — if the workspace you want is not in the first 25, choose Search workspaces… and type part of the name.
You can also skip the panel: /link workspace:<name> user:@someone links immediately.
- The member list is that discipline's pool: everyone holding the role, plus everyone holding no discipline role at all. Nobody is stranded because a role was never handed out. Bots are excluded.
- The workspace list is drawn from links the bot already knows, then workspaces owned by that discipline's guest logins, then every workspace seen in recent submits. Each one is labelled with its discipline hint and whether it is unlinked or linked to someone else.
- Choosing a discipline is a filter, not a permission — it narrows the lists and blocks nothing.
- You can reassign a workspace that already belongs to somebody else; the confirmation names who it came from. Somebody linking their own account cannot — they are told to ask a lead. Silently reassigning would re-attribute the previous owner's earlier submits, which is worse than leaving the workspace unlinked.
- Anyone may link or unlink their own workspace.
/unlinkrefuses to remove a link that belongs to someone else unless you manage links.
Naming a workspace rp_design_albert still gets matched to Albert automatically on his first submit, and that saves him the /link. It is a convenience, not a requirement — plenty of people keep a workspace name that serves other projects.
The matching ignores case, spaces, dots and emoji, and it checks the username, the nickname and the display name. If two people would match the same name, neither is picked — the submit posts as unlinked rather than crediting the wrong person, and /link fixes it.
/unlink <workspace> removes a link. A manual link always overrides an automatic one.
Seeing where things stand¶
/links — every workspace and who it belongs to, filterable by discipline. Automatic links are marked (auto).
/roster <discipline> — everyone in that discipline and whether they are linked yet. It marks which line is you, and prints your own status at the bottom, so anyone can check their own account without asking. Use it before a milestone to find the people whose submits will arrive anonymous.
Both reply privately to you, and both are open to everyone.
Bugs¶
/bug files into #bugs and pings the lead for the category chosen. Claim marks who is on it — a bug already claimed cannot be taken by someone else. Resolve closes it. Both are recorded on the report itself.
When something looks wrong¶
A submit landed in the wrong channel. The author's Discord role decides the channel, so check their roles first. Someone with no discipline role falls through to the folders they touched, and then to their workspace name.
A submit says "unlinked". The bot could not match the workspace. Whoever owns it should run /link and pick it from the list — they do not need you for that. Only reach for /link user:@someone when the workspace belongs to somebody who cannot run it themselves.
A submit says "no task code". The description did not start with one. This is normal for art and design, which have no task codes yet, and their notices are written for it. On an engineering submit it means the author skipped the code: the post still arrived, so ask them to lead with it next time.
You cannot tell what a thread is waiting on. The tag answers it. [NEED REVIEW] is yours, [CHANGES NEEDED] and [BLOCKED] are the author's, and [APPROVED] means nobody owes anything. Engineering threads carry the task code in the name; art and design threads carry the changelist.
Nothing is posting at all. The watcher polls Perforce every 45 seconds and skips changelists that touch only developer folders, imports or build output. If real submits are also missing, it is a bot problem — tell Gabriel.
Change history¶
- 2026-09-22 — Gabriel Li — Review tags documented; Block spelled out. Art and design notices identified by changelist and description rather than a task code.
- 2026-09-17 — Gabriel Li —
/linkopened to everyone for their own workspace; the member picker locks to the caller and a self-link cannot take a workspace that already belongs to someone else./rostershows your own status. Bots excluded from pools. - 2026-09-17 — Gabriel Li —
/linkgained separate workspace and member lists, and opened to discipline leads. - 2026-09-17 — Gabriel Li — First version: review buttons,
/link,/links,/roster, and the bug queue.