Test results

{coverageSummary(test.plan)} · Every requirement must pass on each qualifying server.

{#if !closed} {#if !hasDeletedServers}
{#if test.outcome === 'paused' && !expired}{/if} {#if ['active','passed'].includes(test.outcome)}{/if} {#if ['paused','failed'].includes(test.outcome) && !expired}{/if}
{/if} {#if retryBlocked && ['paused','failed'].includes(test.outcome)}

{retryBlocked}

{/if} {#if expired}

The testing window ended. Roll back this beta first, then choose “Reuse files and test plan” to open a new beta with a longer window.

{:else if test.outcome === 'paused' && !hasDeletedServers}

Resume retains completed milestones; continuous health and in-progress timing intervals start fresh. Pausing does not extend the deadline.

{/if} {/if} {#if error}{/if} {#if message}

{message}

{/if} {#if !test.servers.length}

{hasDeletedServers ? 'No test run was recorded before a participating server was deleted.' : 'Waiting for the first server restart. Evidence collection begins with that run. The testing window is already running.'}

{/if} {#each ranked as server (server.server)}
{server.progress.filter(p=>p.passed).length} / {server.progress.length} checks passed{#if test.plan.requirements.some(r=>r.kind==='recovery')}Recovery cycles: {server.phase}{/if} {#if test.plan.requirements.some(needsGameTelemetry)}

{#if server.observation?.lastGameplayAt}Latest gameplay: {server.observation.lastEvent?.replaceAll('_',' ')} · · {server.observation.players ?? 'Unknown'} players{#if server.observation.round !== null} · Round {server.observation.round}{/if}{:else}No gameplay reports in this attempt yet.{/if} {#if !server.server_deleted_at}Telemetry diagnostics{/if}

{/if} {#each server.progress as progress (progress.id)} {@const requirement = test.plan.requirements.find(r=>r.id===progress.id)} {#if requirement}
{progress.passed ? 'Passed' : progress.failed ? 'Failed' : 'Waiting'} {requirementSummary(requirement)}{progress.detail}
{#if !progress.passed && !closed && !hasDeletedServers}

{betaWaitingCondition(requirement,server.observation)}

{/if} {#if !['manual','failure-budget'].includes(requirement.kind)}{/if} {#if requirement.kind === 'manual' && !progress.passed && !closed && !hasDeletedServers} {#if canSign && server.observingAt}
{:else if canSign}

Waiting for this server's restart and health verification to finish before tester sign-off.

{:else}

Sign-off is unavailable while this test is {test.outcome}. {test.outcome === 'paused' ? 'Resume testing first.' : 'Use the recovery instructions above.'}

{/if} {/if}
{/if} {/each}
{/each}
Test policy

{test.plan.waveSize ? `${test.plan.waveSize} servers per wave.` : 'All selected servers deployed together.'} {test.plan.failureAction === 'rollback' ? 'Failed checks trigger automatic rollback.' : test.plan.failureAction === 'pause' ? 'Failed checks pause testing for investigation.' : 'Failed checks hold testing for review.'} {test.plan.rollbackRestart === 'when-empty' ? 'Rollback restarts wait for empty servers.' : 'Rollback restores files; restart servers manually.'} Health checks continue after passing until promotion.

Evidence ({test.evidence.length}{test.evidence.length===200 ? ' most recent' : ''}) {#if evidenceOpen}

Newest first. Includes retained evidence from earlier attempts and recovery cycles; current progress uses only the current attempt.

{#each filteredEvidence.slice(0,evidenceLimit) as event(event.id)}

{betaEvidenceSummary(event)}

Raw payload · {event.kind}
{event.payload}
{/each} {#if !filteredEvidence.length}

{test.evidence.length ? 'No evidence matches these filters.' : 'No evidence recorded yet. Check deployment progress and telemetry diagnostics.'}

{/if} {/if}