fix(schema): enforce 4-digit ids

This commit is contained in:
chahinebrini 2026-06-24 23:29:32 +02:00
parent c00ec16c84
commit 2b5696de82
2 changed files with 15 additions and 3 deletions

View File

@ -8,7 +8,7 @@ export const Role = z.enum(['architect', 'implementer', 'reviewer', 'tester']);
export const DelegationMode = z.enum(['manual', 'suggest', 'auto']); export const DelegationMode = z.enum(['manual', 'suggest', 'auto']);
export const TaskSchema = z.object({ export const TaskSchema = z.object({
id: z.string().regex(/^TSK-\d+$/), id: z.string().regex(/^TSK-\d{4}$/),
title: z.string().min(1), title: z.string().min(1),
description: z.string().default(''), description: z.string().default(''),
status: TaskStatus, status: TaskStatus,
@ -24,7 +24,7 @@ export const TaskSchema = z.object({
}); });
export const HandoffSchema = z.object({ export const HandoffSchema = z.object({
id: z.string().regex(/^HOF-\d+$/), id: z.string().regex(/^HOF-\d{4}$/),
fromRole: z.string().min(1), fromRole: z.string().min(1),
toRole: z.string().min(1), toRole: z.string().min(1),
fromAgent: z.string().optional(), fromAgent: z.string().optional(),
@ -39,7 +39,7 @@ export const HandoffSchema = z.object({
}); });
export const DecisionSchema = z.object({ export const DecisionSchema = z.object({
id: z.string().regex(/^DEC-\d+$/), id: z.string().regex(/^DEC-\d{4}$/),
title: z.string().min(1), title: z.string().min(1),
status: DecisionStatus.default('accepted'), status: DecisionStatus.default('accepted'),
context: z.string().default(''), context: z.string().default(''),

View File

@ -25,4 +25,16 @@ describe('schemas', () => {
}); });
expect(result.success).toBe(false); expect(result.success).toBe(false);
}); });
it('rejects a task id without exactly 4 digits', () => {
const result = TaskSchema.safeParse({
id: 'TSK-1',
title: 'Implement DNS cache',
description: '',
status: 'open',
createdAt: '2026-06-24T10:00:00Z',
updatedAt: '2026-06-24T10:00:00Z',
});
expect(result.success).toBe(false);
});
}); });