feat: add workflow dry-run observability
This commit is contained in:
@@ -129,6 +129,38 @@ test('orchestrator keeps a Native primary as a non-dry-run Native selection', as
|
||||
assert.equal(selected.dryRun, false);
|
||||
});
|
||||
|
||||
test('Shadow mode evaluates the Canary rollout while Native remains effective', async () => {
|
||||
const service = createOrchestratorAdminConfigService(createPool(), { env: {} });
|
||||
await service.updateAdminConfig({
|
||||
mode: 'shadow',
|
||||
serviceUrl: 'http://127.0.0.1:8093',
|
||||
rolloutPercent: 0,
|
||||
userAllowlist: ['user-preview'],
|
||||
});
|
||||
|
||||
const selected = await service.selectEngine({
|
||||
runId: 'run-preview-selected',
|
||||
userId: 'user-preview',
|
||||
workflowName: 'code-run-v1',
|
||||
});
|
||||
assert.equal(selected.engine, 'native');
|
||||
assert.equal(selected.shadowEngine, 'langgraph');
|
||||
assert.equal(selected.candidateEngine, 'langgraph');
|
||||
assert.equal(selected.candidateReason, 'user_allowlist');
|
||||
assert.equal(selected.dryRun, true);
|
||||
|
||||
const native = await service.selectEngine({
|
||||
runId: 'run-preview-native',
|
||||
userId: 'user-native',
|
||||
workflowName: 'code-run-v1',
|
||||
});
|
||||
assert.equal(native.engine, 'native');
|
||||
assert.equal(native.shadowEngine, 'langgraph');
|
||||
assert.equal(native.candidateEngine, 'native');
|
||||
assert.equal(native.candidateReason, 'canary_not_selected');
|
||||
assert.equal(native.dryRun, true);
|
||||
});
|
||||
|
||||
test('orchestrator emergency kill switch always forces native selection', async () => {
|
||||
const service = createOrchestratorAdminConfigService(createPool(), {
|
||||
env: { MEMIND_ORCHESTRATOR_KILL_SWITCH: '1' },
|
||||
|
||||
Reference in New Issue
Block a user