{#snippet isolationToggle()}
A workspace with a parent, and every fork (including a fork whose parent was deleted), counts
as a dev workspace, unless forks of non-dev workspaces are left out below. Every job is
covered: runs, previews, schedules, triggers, flow steps, AI agent tools and dependency jobs,
and inline runs are refused on workers not serving dev workspaces. A job whose tag no serving
worker listens to stays queued: it never falls back to the other worker groups. Dedicated
workers keep their own tags.
python3, gpu
Dev workspaces and forks
{effectiveSuffix}:
{:else}
Once on, worker groups serving dev workspaces, on suffixed tags:
{/if}
{withDevSuffix('python3', effectiveSuffix)},
{withDevSuffix('gpu', effectiveSuffix)}
{s.tag} ({s.waiting} waiting)
{/each}. These tags carry the {effectiveSuffix} suffix of dev workspace jobs: add
the unsuffixed tag to a worker group flagged as serving dev workspaces, or flag a group that
already lists it.
{t}{/each}
{/each}. Jobs of dev workspaces and forks run on these tags, so this group runs them next to
root workspace jobs. Remove the tags, or flag the group as serving dev workspaces.
{#each devWorkspaces as w (w.id)}
{/if}
{/if}
python3-$workspace-fork becomes
{withDevSuffix('python3-$workspace-fork', effectiveSuffix)}. Changing it
moves the worker groups serving dev workspaces to the new suffix right away, while jobs
already queued keep the old one: change it when no dev job is waiting. A dev job whose
tag would exceed 50 characters once suffixed is refused.