Every role, assignable
When something breaks, the first question is who is handling what. You can now assign every role you have defined, like Operations Lead or Communications Lead, during the incident itself, not just the Incident Lead, so anyone joining can see who owns each part of the response.
One dialog for the roster. /ff roles opens a dialog with one picker per role, each showing whoever currently holds it. Change any of them and save, and Firefight posts a single message summarising what changed. /ff lead still works for handing over just the lead.
Visible where it matters. Every assigned role appears in a Roles panel on the incident page, next to the person holding it. Role changes land on the incident timeline with the person named, so looking back you can see who took what and when.
Everywhere else. Role changes reach your own systems as role.assigned and role.unassigned webhook events, and a connected agent can manage the roster with assign_incident_role, under the same rules as in Slack: one person per role, and the lead can be handed over but never left empty.