feat(orchestrator): enforce Page Data validation gate
This commit is contained in:
@@ -331,6 +331,11 @@ export function bootstrapPortalGatewayServices({
|
||||
observeWorkflowRun: workflowShadowObserver,
|
||||
observeWorkflowValidation:
|
||||
workflowShadowObserver?.observeValidation ?? null,
|
||||
enforcePageDataWorkflowValidation:
|
||||
workflowShadowEnabled
|
||||
&& isEnabledFlag(
|
||||
env.MEMIND_ORCHESTRATOR_PAGE_DATA_VALIDATION_GATE_ENABLED,
|
||||
),
|
||||
observePersonalMemoryOnSuccess: async ({
|
||||
userId,
|
||||
sessionId,
|
||||
|
||||
@@ -168,6 +168,7 @@ test('preserves Proxy, Tool, and Agent gateway wiring', () => {
|
||||
assert.equal(captured.agentOptions.runTimeoutMs, 9000);
|
||||
assert.equal(captured.agentOptions.observeWorkflowRun, null);
|
||||
assert.equal(captured.agentOptions.observeWorkflowValidation, null);
|
||||
assert.equal(captured.agentOptions.enforcePageDataWorkflowValidation, false);
|
||||
assert.equal(captured.agentOptions.maxConcurrentShadowObservations, 2);
|
||||
assert.equal(captured.agentOptions.maxQueuedShadowObservations, 100);
|
||||
});
|
||||
@@ -184,6 +185,7 @@ test('wires Shadow observation only behind the explicit environment gate', () =>
|
||||
MEMIND_ORCHESTRATOR_SERVICE_TOKEN: 'shadow-token',
|
||||
MEMIND_ORCHESTRATOR_SHADOW_MAX_CONCURRENCY: '4',
|
||||
MEMIND_ORCHESTRATOR_SHADOW_MAX_QUEUE: '25',
|
||||
MEMIND_ORCHESTRATOR_PAGE_DATA_VALIDATION_GATE_ENABLED: '1',
|
||||
},
|
||||
createOrchestratorAdminConfigServiceFn(receivedPool) {
|
||||
assert.equal(receivedPool, setup.pool);
|
||||
@@ -201,10 +203,25 @@ test('wires Shadow observation only behind the explicit environment gate', () =>
|
||||
assert.equal(receivedObserverOptions.serviceToken, 'shadow-token');
|
||||
assert.equal(agentOptions.observeWorkflowRun, observer);
|
||||
assert.equal(agentOptions.observeWorkflowValidation, validationObserver);
|
||||
assert.equal(agentOptions.enforcePageDataWorkflowValidation, true);
|
||||
assert.equal(agentOptions.maxConcurrentShadowObservations, 4);
|
||||
assert.equal(agentOptions.maxQueuedShadowObservations, 25);
|
||||
});
|
||||
|
||||
test('keeps the Page Data validation gate disabled without Shadow wiring', () => {
|
||||
const setup = createSetup({
|
||||
env: {
|
||||
MEMIND_ORCHESTRATOR_PAGE_DATA_VALIDATION_GATE_ENABLED: '1',
|
||||
},
|
||||
});
|
||||
|
||||
bootstrapPortalGatewayServices(setup.options);
|
||||
|
||||
const { agentOptions } = setup.getCaptured();
|
||||
assert.equal(agentOptions.observeWorkflowValidation, null);
|
||||
assert.equal(agentOptions.enforcePageDataWorkflowValidation, false);
|
||||
});
|
||||
|
||||
test('preserves local asset reads and optional asset absence', async () => {
|
||||
const setup = createSetup();
|
||||
bootstrapPortalGatewayServices(setup.options);
|
||||
|
||||
Reference in New Issue
Block a user