Require two materials for content schedules and scope readiness copy
The engine plans each production piece from a pair of documents, so a summary, quiz or similar schedule with one material can never plan. Approving such a plan is now blocked with a note to choose or upload another material, and the engine's refusal on an existing schedule is explained in plain language. Video and research schedules still work with one material. The engine now checks only a schedule's own material before a run, so the run error and Upload texts no longer say the whole Library or Brain is checked. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import type { ContentRule, ResearchRule } from './parse'
|
||||
import { budgetFor, canSchedule, configFor, ruleOf, VIDEO, type ExpressAgent } from './schedules'
|
||||
import { budgetFor, canSchedule, configFor, needsTwoSources, productionError, ruleOf, VIDEO, type ExpressAgent } from './schedules'
|
||||
|
||||
const rule = (kind: ContentRule['kind'], count = 2, per: ContentRule['per'] = 'week', topic = 'onboarding', language: ContentRule['language'] = 'English'): ContentRule =>
|
||||
({ type: 'content', kind, count, per, topic, language })
|
||||
@@ -108,3 +108,17 @@ describe('canSchedule', () => {
|
||||
expect(canSchedule(rule('summary', 0))).toBe(false)
|
||||
})
|
||||
})
|
||||
|
||||
describe('production sources', () => {
|
||||
it('needs two sources for planned content, not for video or research', () => {
|
||||
expect(needsTwoSources(rule('quiz'))).toBe(true)
|
||||
expect(needsTwoSources(rule('video', 1))).toBe(false)
|
||||
expect(needsTwoSources({ type: 'research', cadence: 'weekly', weekday: 2, topic: 'sales', autoApprove: false })).toBe(false)
|
||||
})
|
||||
|
||||
it("explains the engine's refusal for too few sources and passes others through", () => {
|
||||
expect(productionError('At least two ready sources with complementary evidence are required')).toMatch(/2/)
|
||||
expect(productionError('At least two ready sources with complementary evidence are required')).not.toMatch(/complementary/)
|
||||
expect(productionError('Something else')).toBe('Something else')
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user