Verify Plutonium revisions during provisioning
This commit is contained in:
@@ -81,6 +81,36 @@ describe('provisioning outcome and evidence presentation', () => {
|
||||
expect(provisioningGroups(detail).flatMap(group => group.steps).find(step => step.key === 'verify-game')).toMatchObject({ state: 'unknown', at: '2026-09-28T12:01:00Z' });
|
||||
});
|
||||
|
||||
it.each(['create', 'rebuild'] as const)('shows %s Plutonium verification from runtime evidence, separately from the release manifest', action => {
|
||||
const detail = fixture();
|
||||
detail.deployment.action = action;
|
||||
detail.progress = progress({ phase: 'verify-plutonium',
|
||||
checks: [
|
||||
{ key: 'plutonium-release', label: 'Production Plutonium release', result: 'pass', source: 'manifest', checkedAt: at, receivedAt: at, expected: null, actual: 5200, message: null },
|
||||
{ key: 'plutonium-version', label: 'Running Plutonium revision', result: 'unknown', source: 'rcon', checkedAt: at, receivedAt: null, expected: 5200, actual: null, message: 'Waiting for a runtime revision' }
|
||||
] });
|
||||
expect(isProvisioningDetail(detail, detail.deployment.id)).toBe(true);
|
||||
for (const [result, state] of [['unknown', 'unknown'], ['waiting', 'waiting'], ['fail', 'failed'], ['pass', 'done']] as const) {
|
||||
detail.progress.checks[1].result = result;
|
||||
const steps = provisioningGroups(detail).find(group => group.key === 'verify')!.steps;
|
||||
expect(steps.at(-1)).toMatchObject({ key: 'verify-plutonium', label: 'Verify Plutonium revision', state, at });
|
||||
}
|
||||
});
|
||||
|
||||
it.each(['start', 'restart', 'stop', 'destroy'] as const)('does not add Plutonium verification to %s', action => {
|
||||
const detail = fixture();
|
||||
detail.deployment.action = action;
|
||||
expect(provisioningGroups(detail).flatMap(group => group.steps).some(step => step.key === 'verify-plutonium')).toBe(false);
|
||||
});
|
||||
|
||||
it('does not claim historical creations verified Plutonium without evidence', () => {
|
||||
const detail = fixture();
|
||||
detail.deployment.state = 'done';
|
||||
detail.progress = progress({ checkpoints: [{ key: 'verify-map', label: 'Selected map verified', at, phase: 'verify-map' }] });
|
||||
expect(provisioningGroups(detail).flatMap(group => group.steps).find(step => step.key === 'verify-plutonium'))
|
||||
.toMatchObject({ state: 'unknown', at: null });
|
||||
});
|
||||
|
||||
it('preserves the failed request when later recovery checks pass', () => {
|
||||
const detail = fixture();
|
||||
detail.deployment.action = 'restart'; detail.deployment.state = 'failed';
|
||||
|
||||
Reference in New Issue
Block a user