CI (SIAX Cloud) / integration (push) Skipped
CI (SIAX Cloud) / sonar (push) Skipped
masterplan-lock / check (push) Successful in 5s
CI (SIAX Cloud) / security (push) Successful in 17s
Security Scan (SIAX Cloud) / security (push) Successful in 17s
CI (SIAX Cloud) / quality (push) Successful in 46s
CI (SIAX Cloud) / sonar (pull_request) Skipped
masterplan-lock / check (pull_request) Successful in 5s
CI (SIAX Cloud) / security (pull_request) Successful in 23s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 25s
CI (SIAX Cloud) / integration (pull_request) Successful in 45s
CI (SIAX Cloud) / quality (pull_request) Successful in 59s
The structure route ran the model with maximumCredits=1 and no reservation when credits were off, so admission returned reservation_required and the route answered 502. Admission now requires a reservation only when maximumCredits>0. Verified against the live stack: DOC0 segments -> LiteLLM/Ollama (inf0-valuation) -> evidence validation -> needs_review (no export).
34 lines
3.5 KiB
TypeScript
34 lines
3.5 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import { admitModelExecution, type ModelAdmissionRequest, type ModelBudgetReservation, type ModelExecutionPolicy } from '../../src/document-workbench/model-admission';
|
|
|
|
const request: ModelAdmissionRequest = { tenantId: 'a', projectId: 'p', jobId: 'j', modelId: 'model', dataClass: 'medium', maxInputTokens: 100, maxOutputTokens: 50, maximumCredits: 10 };
|
|
const policy: ModelExecutionPolicy = { tenantId: 'a', projectId: 'p', allowedModelIds: ['model'], allowedDataClasses: ['medium'], destination: 'external', externalTransferAllowed: true, maxInputTokens: 100, maxOutputTokens: 50 };
|
|
const hold: ModelBudgetReservation = { tenantId: 'a', projectId: 'p', jobId: 'j', status: 'reserved', credits: 10 };
|
|
describe('model execution admission', () => {
|
|
it('requires a scoped allowed model, data policy and sufficient reservation', () => {
|
|
expect(admitModelExecution(request, policy, hold)).toEqual({ allowed: true });
|
|
expect(admitModelExecution(request, { ...policy, projectId: 'other' }, hold)).toEqual({ allowed: false, reason: 'scope_mismatch' });
|
|
expect(admitModelExecution(request, { ...policy, allowedModelIds: [] }, hold)).toEqual({ allowed: false, reason: 'model_not_allowed' });
|
|
expect(admitModelExecution(request, { ...policy, allowedDataClasses: [] }, hold)).toEqual({ allowed: false, reason: 'data_class_not_allowed' });
|
|
expect(admitModelExecution(request, { ...policy, externalTransferAllowed: false }, hold)).toEqual({ allowed: false, reason: 'external_transfer_denied' });
|
|
expect(admitModelExecution({ ...request, dataClass: 'high' }, { ...policy, allowedDataClasses: ['high'] }, hold)).toEqual({ allowed: false, reason: 'external_transfer_denied' });
|
|
expect(admitModelExecution({ ...request, dataClass: 'restricted' }, { ...policy, allowedDataClasses: ['restricted'] }, hold)).toEqual({ allowed: false, reason: 'external_transfer_denied' });
|
|
expect(admitModelExecution({ ...request, maxOutputTokens: 51 }, policy, hold)).toEqual({ allowed: false, reason: 'token_limit_exceeded' });
|
|
expect(admitModelExecution(request, policy, { ...hold, credits: 9 })).toEqual({ allowed: false, reason: 'reservation_required' });
|
|
expect(admitModelExecution(request, policy, { ...hold, status: 'settled' })).toEqual({ allowed: false, reason: 'reservation_required' });
|
|
expect(admitModelExecution(request, policy, { ...hold, jobId: 'other' })).toEqual({ allowed: false, reason: 'reservation_required' });
|
|
});
|
|
it('pilot mode (maximumCredits 0) requires no reservation but still enforces every other rule', () => {
|
|
const pilot = { ...request, maximumCredits: 0 };
|
|
expect(admitModelExecution(pilot, policy, undefined)).toEqual({ allowed: true });
|
|
expect(admitModelExecution(pilot, { ...policy, allowedModelIds: [] }, undefined)).toEqual({ allowed: false, reason: 'model_not_allowed' });
|
|
expect(admitModelExecution(pilot, { ...policy, projectId: 'other' }, undefined)).toEqual({ allowed: false, reason: 'scope_mismatch' });
|
|
expect(admitModelExecution({ ...pilot, maximumCredits: -1 }, policy, undefined)).toEqual({ allowed: false, reason: 'invalid_request' });
|
|
expect(admitModelExecution(request, policy, undefined)).toEqual({ allowed: false, reason: 'reservation_required' });
|
|
});
|
|
it('rejects invalid limits and never treats an unknown destination as local', () => {
|
|
expect(admitModelExecution({ ...request, maxInputTokens: NaN }, policy, hold).allowed).toBe(false);
|
|
expect(admitModelExecution(request, { ...policy, destination: 'unknown' as never }, hold).allowed).toBe(false);
|
|
});
|
|
});
|