{refreshError}
{/if} {#if actionError}{actionError}
{/if} {#if notice}{notice}
{/if} {#if editorOpen && canOperate}Target: {preview.decision.desired} running lobbies{preview.policy.mapSlug === '*' ? ' across all maps' : ''}. {preview.snapshot.keyPool.available} of {preview.snapshot.keyPool.total} game keys available. {preview.snapshot.members.length} existing or pending lobbies.
{preview.decision.action === 'wait' ? 'Wait' : `${preview.decision.action === 'create' ? 'Create' : 'Remove'} ${preview.decision.server}`}: {preview.decision.reason}
{#if preview.policy.mode === 'create-destroy'}Saving gives this policy exclusive control of the selected maps' lobby counts. Pause it before launching a competing collection or manual lifecycle action.
{/if} {#if preview.snapshot.members.length}{blocker}
{/each}No autoscaling policies. Add a policy to manage empty lobbies for a map or a whole game.
{/if} {#each report.policies as view (view.policy.id)}{view.decision.occupied} occupied · {view.decision.empty} empty and ready · {view.decision.pending} pending · {view.decision.unknown} unknown or stopped
{#if view.unsettled.length}{/if}{view.policy.mapSlug === '*' ? 'Per map: ' : ''}Minimum {view.policy.minimum} · Maximum {view.policy.maximum} · Spare target {view.policy.spares} · {view.snapshot.keyPool.available} / {view.snapshot.keyPool.total} game keys available
Current decision: {view.decision.action}{view.decision.server ? ` ${view.decision.server}` : ''}. {view.decision.reason}
Last evaluated: {view.lastEvaluatedAt ? $timeFormat.dateTime(new Date(view.lastEvaluatedAt).toISOString()) : 'Not evaluated yet'}
No registered or pending lobbies.
{/if}{#each view.snapshot.blockers as blocker}{blocker}
{/each}{view.totals.observedMinutes.toFixed(1)} observed minutes · {view.totals.emptyLobbyHours.toFixed(2)} empty lobby-hours · {view.totals.deficitMinutes.toFixed(1)} minutes below spare target · {view.totals.unknownMinutes.toFixed(1)} unknown minutes
Last 31 days: {view.operations.creates} create requests · {view.operations.removals} removal requests · {view.operations.cancelled} cancelled · {view.operations.failed} failed
{#if view.operations.readinessSamples}Request to verified readiness: mean {view.operations.readinessMeanSeconds?.toFixed(0)} seconds, maximum {view.operations.readinessMaxSeconds?.toFixed(0)} seconds across {view.operations.readinessSamples} completed creates. Includes queue time.
{/if}Up to 31 days of bounded observations; gaps are excluded. Readiness does not certify browser visibility or successful joins.