diff --git a/docs_new/cookbook/autoregressive/Moonshotai/Kimi-K3.mdx b/docs_new/cookbook/autoregressive/Moonshotai/Kimi-K3.mdx
index b22057c36..ab26e0b2a 100644
--- a/docs_new/cookbook/autoregressive/Moonshotai/Kimi-K3.mdx
+++ b/docs_new/cookbook/autoregressive/Moonshotai/Kimi-K3.mdx
@@ -101,9 +101,9 @@ are scheduled to release by July 27, 2026**. The recipes on this page were valid
repository (`moonshotai/Kimi-K3`) and a public `lmsysorg/sglang` image with K3 support will be
available at launch.
-Every cell on this page is currently marked **Not Verified**: the recipes run, but none has a
-serving round on the final weights and current code behind it. Re-measure throughput and accuracy
-before you rely on any of them.
+Every cell in the Deploy panel above is currently marked **Final Verification In Progress**: the
+recipe runs, but its serving round on the final weights and current code is still open. Re-measure
+throughput and accuracy before you rely on any of them.
**Recommended generation:** `temperature=1.0`, `top_p=0.95`, `presence_penalty=0`, `frequency_penalty=0` (fixed by the model; informational — do not hardcode in sample code).
diff --git a/docs_new/src/snippets/_deployment.jsx b/docs_new/src/snippets/_deployment.jsx
index 1dc0e145d..c1b657ba3 100644
--- a/docs_new/src/snippets/_deployment.jsx
+++ b/docs_new/src/snippets/_deployment.jsx
@@ -23,7 +23,8 @@
// `flags` / `env` / `hints` (each a literal array or a function
// of the whole selection), and a row-level `default` / `showWhen`.
// `hints` render as `# ...` lines above the command.
-// cells {match, verified?, nnodes?, warn?, redirect?, env, flags}[] — one per
+// cells {match, verified?, verificationStatus?, nnodes?, warn?, redirect?,
+// env, flags}[] — one per
// (hw × match dims); env/flags are flat literals, only
// {{PLACEHOLDER}} subst applied. `nnodes` supplies the node
// count for configs with no `nodes` dim (default 1). `warn`
@@ -31,6 +32,10 @@
// embed [label](#anchor) links. `redirect: true` renders the
// banner ALONE — no command, header, or copy buttons — for
// cells that only point somewhere else.
+// `verified` is the boolean badge baseline.
+// `verificationStatus` overrides it with a third state —
+// "verified" | "in-progress" | "unverified" — for a recipe
+// whose verification round is open rather than absent.
// modelNames HF slug lookup, `hw|variant|quant` then `variant|quant`
// placeholders {{KEY}} → {target: 'command'|'curl', label, default?}
// curl cURL template (uses {{MODEL_NAME}} + placeholders)
@@ -166,18 +171,30 @@ export const Deployment = ({ config, benchmarks }) => {
color: isDark ? "#fde68a" : "#92400e",
border: `1px solid ${isDark ? "#92400e" : "#fcd34d"}`,
},
- badge: (verified) => ({
+ // Takes either a boolean (legacy `cell.verified`) or a status id — see
+ // VERIFY_LABEL / verifyStatusOf in section 3.
+ badge: (status) => ({
display: "inline-flex", alignItems: "center", gap: "6px",
padding: "2px 8px", borderRadius: "10px",
- background: verified ? (isDark ? "#064e3b" : "#d1fae5")
- : (isDark ? "#78350f" : "#fef3c7"),
- color: verified ? (isDark ? "#a7f3d0" : "#065f46")
- : (isDark ? "#fde68a" : "#92400e"),
- fontSize: "11px", fontWeight: 600,
+ background: {
+ verified: isDark ? "#064e3b" : "#d1fae5",
+ "in-progress": isDark ? "#1e3a8a" : "#dbeafe",
+ unverified: isDark ? "#78350f" : "#fef3c7",
+ }[verifyStatusOf(status)],
+ color: {
+ verified: isDark ? "#a7f3d0" : "#065f46",
+ "in-progress": isDark ? "#bfdbfe" : "#1e40af",
+ unverified: isDark ? "#fde68a" : "#92400e",
+ }[verifyStatusOf(status)],
+ // The in-progress label is long; keep the pill on one line and let the
+ // header row wrap around it instead of breaking the text mid-badge.
+ fontSize: "11px", fontWeight: 600, whiteSpace: "nowrap",
}),
- badgeDot: (verified) => ({
+ badgeDot: (status) => ({
width: "8px", height: "8px", borderRadius: "50%",
- background: verified ? "#10b981" : "#f59e0b",
+ background: { verified: "#10b981", "in-progress": "#3b82f6", unverified: "#f59e0b" }[
+ verifyStatusOf(status)
+ ],
}),
iconButton: {
padding: "4px 10px",
@@ -388,6 +405,25 @@ export const Deployment = ({ config, benchmarks }) => {
});
// ==== 3. Pure helpers (no React state) ====
+ // Verification badge state. A cell's boolean `verified` is the baseline;
+ // `cell.verificationStatus` overrides it, which is how a recipe whose
+ // verification round is open reports that instead of collapsing into the flat
+ // Verified / Not Verified pair.
+ const VERIFY_LABEL = {
+ verified: "Verified",
+ "in-progress": "Final Verification In Progress",
+ unverified: "Not Verified",
+ };
+ // Booleans keep their historical meaning; an unrecognized status id falls
+ // back to "unverified" rather than to truthiness (a typo must never read as
+ // a green Verified badge).
+ const verifyStatusOf = (v) =>
+ typeof v === "string"
+ ? (VERIFY_LABEL[v] ? v : "unverified")
+ : (v ? "verified" : "unverified");
+ const cellVerifyStatus = (c) =>
+ c ? verifyStatusOf(c.verificationStatus ?? c.verified) : "unverified";
+
// Two kinds of selector row:
// match dims participate in cell lookup (cell.match[dim] === sel[dim])
// overlay dims never touch cell lookup; the picked option contributes flags
@@ -1122,6 +1158,7 @@ export const Deployment = ({ config, benchmarks }) => {
// ==== 5. Derived values ====
const s = makeStyles(isDark);
const cell = findCell(config.cells, sel);
+ const verifyStatus = cellVerifyStatus(cell);
// Pin the calculator-computed ratio into the rendered command (before the
// host/port tail); cells themselves stay ratio-free.
const cellWithRatio = (() => {
@@ -1337,9 +1374,9 @@ export const Deployment = ({ config, benchmarks }) => {
) : (<>
{runModes.map((mode, index) => (
diff --git a/docs_new/src/snippets/_playground.jsx b/docs_new/src/snippets/_playground.jsx
index af6875931..926f1c577 100644
--- a/docs_new/src/snippets/_playground.jsx
+++ b/docs_new/src/snippets/_playground.jsx
@@ -101,6 +101,11 @@ export const Playground = ({ config }) => {
}) || cell;
// Shared with `_deployment.jsx` (HOST/PORT/etc. unified across the page).
const STORAGE_KEY = "sglang-deploy-env";
+ // ==== MIRROR of DEPLOYMENT_COMPONENT_ID in _deployment.jsx — keep identical ====
+ // Snippets cannot import each other. The Deploy panel puts this id on its
+ // root (carrying its own scrollMarginTop), which is what "jump to the base"
+ // should land on.
+ const DEPLOYMENT_COMPONENT_ID = "deployment-configurator";
const pgFeatures = config.playgroundFeatures || {};
// Single-host PD runs prefill + decode as two engines on one box. Each derives
@@ -2218,12 +2223,16 @@ export const Playground = ({ config }) => {
Inherited base from Deployment:{baseSummary}
{/* scrollIntoView (not hash nav) so the base-cell hash survives.
- Deploy heading slugs to "deployment" or "deploy". */}
+ Target the configurator ITSELF: the "## Deployment" heading sits
+ above the install accordion and a screenful of prose, so landing on
+ the heading leaves the panel you came for off-screen. The heading
+ slugs stay as fallbacks for a page that renders no configurator. */}