/**
* Collapsible reproducibility card: every version pin that produced this
* evaluation run (dataset, model, labels, evaluator code, metric definitions,
* thresholds, sampling config, seed, hardware).
*/
import { useState } from 'react';
import Box from '@mui/material/Box';
import Collapse from '@mui/material/Collapse';
import IconButton from '@mui/material/IconButton';
import Typography from '@mui/material/Typography';
import { ChevronDown, ChevronUp } from 'lucide-react';
import type { RunLineage } from '../../types/megaeval';
import { SectionCard } from '../labeleval/shared';
import { InfoDot } from '../help/InfoTip';
function Field({ label, value, info }: { label: string; value: string | number; info?: string }) {
return (
{label}
{info ? : null}
{value}
);
}
export default function LineageCard({ lineage }: { lineage: RunLineage }) {
const [open, setOpen] = useState(true);
return (
setOpen((o) => !o)}>
{open ? : }
}
>
Threshold config
{JSON.stringify(lineage.threshold_config, null, 2)}
Sampling config
{JSON.stringify(lineage.sampling_config, null, 2)}
Identical inputs + seed reproduce this evaluation bit-for-bit.
);
}