File size: 4,437 Bytes
d70f132
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
import clsx from "clsx";
import Badge from "@/components/ui/Badge";

type TrackStatus = "live" | "config-ready" | "roadmap";

const STATUS: Record<
  TrackStatus,
  { label: string; variant: "accent" | "outline" | "ghost" }
> = {
  live: { label: "Live", variant: "accent" },
  "config-ready": { label: "Config-ready", variant: "outline" },
  roadmap: { label: "Roadmap", variant: "ghost" },
};

const TRACKS: ReadonlyArray<{
  id: string;
  name: string;
  rule: string;
  status: TrackStatus;
}> = [
  {
    id: "A",
    name: "Zero-shot",
    rule: "The model exactly as released. No dataset-specific signal of any kind — no prompts, no bias lists, no weight updates.",
    status: "live",
  },
  {
    id: "B",
    name: "Contextual biasing",
    rule: "Bias lists (medical-term hotwords or prompts) allowed at decode time. No weight updates; the bias list is recorded in the run manifest.",
    status: "live",
  },
  {
    id: "C",
    name: "Adapted",
    rule: "Weights updated using the dataset's frozen Train split only; Valid for tuning. No other in-domain data of any kind.",
    status: "live",
  },
  {
    id: "D",
    name: "Open",
    rule: "Any external data or method, fully disclosed. The anything-goes track.",
    status: "roadmap",
  },
  {
    id: "E",
    name: "Efficiency",
    rule: "Deployment-realistic constraints: under 1B parameters, CPU decode, under 8GB VRAM.",
    status: "config-ready",
  },
  {
    id: "F",
    name: "Conversational",
    rule: "WER + DER on multi-speaker dialogue. Requires conversational corpora (VietMed, clinic data) — the track closest to production.",
    status: "roadmap",
  },
];

/** Tracks A–F: what each track allows, with launch-status chips. */
export default function TracksTable() {
  return (
    <div className="hairline spotlight-row depth-1 overflow-x-auto rounded-sm bg-surface">
      <table className="w-full min-w-[640px] border-collapse text-sm">
        <caption className="sr-only">
          Evaluation tracks A through F with their rules and launch status
        </caption>
        <thead>
          <tr className="hairline-b text-left">
            <th
              scope="col"
              className="num px-4 py-3 text-[11px] font-normal uppercase tracking-[0.14em] text-muted"
            >
              Track
            </th>
            <th
              scope="col"
              className="num px-4 py-3 text-[11px] font-normal uppercase tracking-[0.14em] text-muted"
            >
              Allowed signal
            </th>
            <th
              scope="col"
              className="num px-4 py-3 text-[11px] font-normal uppercase tracking-[0.14em] text-muted"
            >
              Status
            </th>
          </tr>
        </thead>
        <tbody>
          {TRACKS.map((t, i) => {
            const dim = t.status === "roadmap";
            return (
              <tr
                key={t.id}
                className={i < TRACKS.length - 1 ? "hairline-b align-top" : "align-top"}
              >
                <th
                  scope="row"
                  className="whitespace-nowrap px-4 py-3.5 text-left"
                >
                  <span className="inline-flex items-baseline gap-2.5">
                    <span
                      className={clsx(
                        "num text-base",
                        dim ? "text-muted/70" : "text-text",
                      )}
                    >
                      {t.id}
                    </span>
                    <span
                      className={clsx(
                        "text-sm font-medium",
                        dim ? "text-muted/70" : "text-text",
                      )}
                    >
                      {t.name}
                    </span>
                  </span>
                </th>
                <td
                  className={clsx(
                    "min-w-[20rem] px-4 py-3.5 text-[13px] leading-relaxed",
                    dim ? "text-muted/70" : "text-muted",
                  )}
                >
                  {t.rule}
                </td>
                <td className="whitespace-nowrap px-4 py-3.5">
                  <Badge variant={STATUS[t.status].variant}>
                    {STATUS[t.status].label}
                  </Badge>
                </td>
              </tr>
            );
          })}
        </tbody>
      </table>
    </div>
  );
}