397777089e
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
23 lines
1.1 KiB
JavaScript
23 lines
1.1 KiB
JavaScript
import { describe, it, expect } from 'vitest';
|
|
import { enqueue, applyApprovalBatch, pendingCount } from './router-learning-queue.mjs';
|
|
import { proposeProbe } from './router-exploration.mjs';
|
|
|
|
const cand = (id) => ({ id, kind: 'lesson', summary: `s-${id}`, why_proposed: `w-${id}` });
|
|
|
|
describe('Машина 3-E — несущие инварианты hard-rule', () => {
|
|
it('БЕЗ явного «да» владельца НИЧЕГО не входит в фонд (no auto-fill)', () => {
|
|
let q = [];
|
|
for (let i = 0; i < 10; i++) q = enqueue(q, cand(`c${i}`));
|
|
const r = applyApprovalBatch(q, {});
|
|
expect(r.fund).toEqual([]);
|
|
expect(pendingCount(r.queue)).toBe(10);
|
|
});
|
|
it('разведка по умолчанию НЕ инициирует пробу (rate=0)', () => {
|
|
expect(proposeProbe({ rate: 0, candidates: [{ id: '#x' }] })).toBe(null);
|
|
});
|
|
it('проба, даже включённая, требует одобрения владельца (никогда авто)', () => {
|
|
const p = proposeProbe({ rate: 0.5, candidates: [{ id: '#x' }], usageCounts: {} });
|
|
expect(p.requiresOwnerApproval).toBe(true);
|
|
});
|
|
});
|