From 5dcbf86d0988a0cdbfefa13fb41d65d37789e37a Mon Sep 17 00:00:00 2001 From: imagineer99 Date: Tue, 10 Mar 2026 20:13:34 +0000 Subject: [PATCH] fix: reject negative manual dataset slices Prevent negative Train Split Start/End values in the dataset advanced UI and sanitize payload mapping so negative slice values are never sent to the backend. Made-with: Cursor --- .../studio/sections/dataset-section.tsx | 17 +++++++++++++++-- .../src/features/training/api/mappers.ts | 2 +- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/studio/frontend/src/features/studio/sections/dataset-section.tsx b/studio/frontend/src/features/studio/sections/dataset-section.tsx index 7ff9e675ab..4f20133b5c 100644 --- a/studio/frontend/src/features/studio/sections/dataset-section.tsx +++ b/studio/frontend/src/features/studio/sections/dataset-section.tsx @@ -89,6 +89,13 @@ function formatUpdatedDate(timestamp: number | null): string { return new Date(timestamp * 1000).toLocaleDateString(); } +function normalizeSliceInput(value: string): string | null { + const trimmed = value.trim(); + if (!trimmed) return null; + if (!/^\d+$/.test(trimmed)) return null; + return trimmed; +} + export function DatasetSection() { const { dataset, @@ -783,11 +790,14 @@ export function DatasetSection() { - setDatasetSliceStart(e.target.value || null) + setDatasetSliceStart(normalizeSliceInput(e.target.value)) } /> @@ -815,11 +825,14 @@ export function DatasetSection() { - setDatasetSliceEnd(e.target.value || null) + setDatasetSliceEnd(normalizeSliceInput(e.target.value)) } /> diff --git a/studio/frontend/src/features/training/api/mappers.ts b/studio/frontend/src/features/training/api/mappers.ts index fed17a538c..53869fdd59 100644 --- a/studio/frontend/src/features/training/api/mappers.ts +++ b/studio/frontend/src/features/training/api/mappers.ts @@ -12,7 +12,7 @@ function parseSliceValue(value: string | null): number | null { const trimmed = value.trim(); if (!trimmed) return null; const num = Number(trimmed); - if (!Number.isFinite(num) || !Number.isInteger(num)) return null; + if (!Number.isFinite(num) || !Number.isInteger(num) || num < 0) return null; return num; }