feat: add bootstrapped DeepSeek routing corpus

This commit is contained in:
wuyang
2026-07-29 15:32:03 +08:00
parent b7fef2350f
commit 5bcfd58452
12 changed files with 158485 additions and 32 deletions
+511 -9
View File
@@ -3,12 +3,17 @@ import rawTrace from "@/data/deepseek-v2-lite-trace.json";
import rawRepro from "@/data/deepseek-v2-lite-trace-repro.json";
import rawAbsorb from "@/data/deepseek-v2-lite-absorb.json";
import rawAbsorbRepro from "@/data/deepseek-v2-lite-absorb-repro.json";
import rawCorpus from "@/data/deepseek-v2-lite-routing-corpus.json";
import rawCorpusRepro from "@/data/deepseek-v2-lite-routing-corpus-repro.json";
const trace = rawTrace as any;
const repro = rawRepro as any;
const absorb = rawAbsorb as any;
const absorbRepro = rawAbsorbRepro as any;
const corpus = rawCorpus as any;
const corpusRepro = rawCorpusRepro as any;
const absorbExact = JSON.stringify(absorb) === JSON.stringify(absorbRepro);
const corpusExact = JSON.stringify(corpus) === JSON.stringify(corpusRepro);
const bytes = (value: number) => value >= 1024
? `${(value / 1024).toFixed(2)} KiB`
: `${value.toLocaleString()} B`;
@@ -44,6 +49,19 @@ const compact = {
},
};
const compactJson = JSON.stringify(compact).replaceAll("<", "\\u003c");
const corpusCompact = {
domains: corpus.corpus_contract.domains,
labels: corpus.corpus_contract.domain_labels,
counts: corpus.corpus_contract.counts,
inference: corpus.inference_contract,
statistics: corpus.statistical_contract,
layers: corpus.layers.slice(1).map((layer: any) => ({
layer: layer.layer,
routes: layer.routes,
modes: layer.statistics,
})),
};
const corpusCompactJson = JSON.stringify(corpusCompact).replaceAll("<", "\\u003c");
const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoint_tensor_bytes;
---
@@ -55,7 +73,8 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
</div>
<p>
固定官方 revision、tokenizer、模型代码和 BF16 第一分片;RTX 5090 连续执行 layer 0–6,
捕获 3,240 次真实路由,并让 layer-1 权重继续走入官方吸收式 cache。所有结论都带证据身份与停止线。
从 3,240 次 token 显微轨迹扩到 304,560 次公开语料路由,并让 layer-1 权重继续走入官方吸收式 cache。
所有结论都带证据身份与停止线。
</p>
</header>
@@ -79,8 +98,11 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
<button type="button" role="tab" data-artifact-tab="absorb" aria-selected="false" tabindex="-1">
<span>04</span><b>吸收式执行</b><small>real cache · SM120</small>
</button>
<button type="button" role="tab" data-artifact-tab="corpus" aria-selected="false" tabindex="-1">
<span>05</span><b>128 样本区间</b><small>4 domains · bootstrap</small>
</button>
<button type="button" role="tab" data-artifact-tab="evidence" aria-selected="false" tabindex="-1">
<span>05</span><b>证据断面</b><small>revision · shards · rerun</small>
<span>06</span><b>证据断面</b><small>revision · shards · rerun</small>
</button>
</div>
@@ -366,6 +388,94 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
</div>
</section>
<section class="artifact-panel" data-artifact-panel="corpus" hidden>
<div class="panel-lead">
<div><span>X + S / FIXED PUBLIC CORPUS</span><h4>从四条示例,走到 128 条可重建样本与区间</h4></div>
<p>
WikiText-2、TNEWS、HumanEval、GSM8K 各取 32 条;固定哈希选样、最多 96 tokens。
每个区间都重采样 prompt,而不是把同一 prompt 里的 token 假装成独立样本。
</p>
</div>
<div class="corpus-ledger">
<article><span>PROMPTS</span><b>{corpus.inference_contract.total_prompts}</b><p>4 domains × 32</p></article>
<article><span>VALID TOKENS</span><b>{corpus.inference_contract.valid_tokens.toLocaleString()}</b><p>答案未使用,代码未执行</p></article>
<article><span>REAL ROUTES</span><b>{(corpus.inference_contract.routes_per_moe_layer * 6).toLocaleString()}</b><p>50,760 / layer × 6 MoE layers</p></article>
<article><span>BOOTSTRAP</span><b>{corpus.statistical_contract.replicates.toLocaleString()}</b><p>prompt-level / domain-stratified</p></article>
<article class="exact"><span>INDEPENDENT RERUN</span><b>{corpusExact ? "BYTE-EXACT" : "MISMATCH"}</b><p>SHA-256 4678a1d1…a09e4</p></article>
</div>
<div class="corpus-controls">
<div>
<span>MOE LAYER</span>
<div class="layer-switch corpus-layer-switch" role="group" aria-label="选择公开语料路由层">
{[1, 2, 3, 4, 5, 6].map((layer) => (
<button type="button" data-corpus-layer={layer} class={layer === 1 ? "active" : ""}>L{layer}</button>
))}
</div>
</div>
<div>
<span>AGGREGATION</span>
<div class="corpus-mode-switch" role="group" aria-label="选择公开语料聚合口径">
<button type="button" data-corpus-mode="prompt_balanced" aria-pressed="true">每条 prompt 等权</button>
<button type="button" data-corpus-mode="token_weighted" aria-pressed="false">按 token 加权</button>
</div>
</div>
<p data-corpus-mode-note>
先把每条 prompt 的 64 维路由分布归一,再平均;短中文标题与长代码 prompt 各有一票。
</p>
</div>
<div class="corpus-domain-table" role="table" aria-label="四域专家负载与 bootstrap 区间">
<div class="head" role="row">
<b role="columnheader">DOMAIN / TOKENS</b>
<b role="columnheader">CV · 95% CI</b>
<b role="columnheader">EFFECTIVE · 95% CI</b>
<b role="columnheader">TOP EXPERT · SHARE</b>
</div>
<div data-corpus-domain-rows></div>
</div>
<div class="corpus-heat-head">
<div><span>64 EXPERT SHARES</span><b data-corpus-heat-title>layer 1 · 每条 prompt 等权</b></div>
<p>每一行独立着色;悬停查看 expert ID、份额与 95% 区间。同号 expert 只在当前层内有意义。</p>
</div>
<div class="corpus-heat-scroll">
<div class="corpus-heatmap" data-corpus-heatmap aria-label="四个语料域的 64 专家份额热图"></div>
</div>
<div class="corpus-comparison">
<div>
<span>PAIRWISE DISTANCE / JENSEN–SHANNON · NATS</span>
<h5>同层四域分布距离</h5>
<p>0 表示两条分布相同,理论上界 ln(2)≈0.693;这里展示点估计与 prompt bootstrap 区间。</p>
</div>
<div class="corpus-jsd" data-corpus-jsd role="table" aria-label="四域 Jensen-Shannon divergence 矩阵"></div>
</div>
<div class="corpus-findings">
<article><span>CURRENT HIGHEST CV</span><b data-corpus-highest-cv></b><p data-corpus-highest-cv-ci></p></article>
<article><span>CURRENT LARGEST JSD</span><b data-corpus-largest-jsd></b><p data-corpus-largest-jsd-ci></p></article>
<article><span>WHAT CHANGED</span><b>区间替代单点印象</b><p>看到“不同”之后,继续问 prompt 换一批时波动多大。</p></article>
</div>
<div class="evidence-links">
<a href="https://huggingface.co/datasets/Salesforce/wikitext" rel="noreferrer">WikiText-2 数据卡 ↗</a>
<a href="https://github.com/CLUEbenchmark/CLUE" rel="noreferrer">CLUE / TNEWS ↗</a>
<a href="https://github.com/openai/human-eval" rel="noreferrer">OpenAI HumanEval ↗</a>
<a href="https://github.com/openai/grade-school-math" rel="noreferrer">OpenAI GSM8K ↗</a>
</div>
<div class="artifact-boundary">
<b>DESCRIPTIVE, NOT SEMANTICS</b>
<p>
这是固定 128 条公开 prompt 上的前六个 MoE 层,不是训练分布或线上流量。
bootstrap 区间描述本探针换 prompt 的稳定性,不是零差异假设检验;没有多重比较校正,
也不能把 E29、E48 等参数索引命名成“中文专家”或“代码专家”。
</p>
</div>
</section>
<section class="artifact-panel" data-artifact-panel="evidence" hidden>
<div class="panel-lead">
<div><span>O + X / EVIDENCE SLICE</span><h4>为什么执行到 layer 6 就停,而不是把“部分下载”写成“完整复现”</h4></div>
@@ -455,11 +565,12 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
<span>可复现入口</span>
<code>experiments/deepseek/v2_lite_trace.py</code> ·
<code>experiments/deepseek/v2_lite_absorb_probe.py</code> ·
<code>src/data/deepseek-v2-lite-trace.json</code> ·
<code>research/DEEPSEEK_MLA_ABSORB_AUDIT.md</code>
<code>experiments/deepseek/v2_lite_routing_corpus.py</code> ·
<code>research/DEEPSEEK_ROUTING_CORPUS_AUDIT.md</code>
</figcaption>
<script is:inline type="application/json" data-dsv2-trace set:html={compactJson}></script>
<script is:inline type="application/json" data-dsv2-corpus set:html={corpusCompactJson}></script>
</figure>
<script>
@@ -471,8 +582,10 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
if (node) node.textContent = value;
};
const payloadNode = one<HTMLScriptElement>("[data-dsv2-trace]");
if (!payloadNode?.textContent) return;
const corpusNode = one<HTMLScriptElement>("[data-dsv2-corpus]");
if (!payloadNode?.textContent || !corpusNode?.textContent) return;
const data = JSON.parse(payloadNode.textContent);
const corpusData = JSON.parse(corpusNode.textContent);
const tabs = all<HTMLButtonElement>("[data-artifact-tab]");
const panels = all<HTMLElement>("[data-artifact-panel]");
@@ -659,6 +772,173 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
control.addEventListener("change", renderCache);
});
renderCache();
const corpusLabels: Record<string, string> = {
english: "英文百科",
chinese: "中文新闻",
code: "Python 代码",
math: "小学数学",
};
const corpusLayer = (layer: number) => corpusData.layers.find((item: any) => item.layer === layer);
let corpusLayerNumber = 1;
let corpusMode = "prompt_balanced";
const formatCi = (ci: number[], digits = 3) => `[${ci[0].toFixed(digits)}, ${ci[1].toFixed(digits)}]`;
const renderCorpus = () => {
const layer = corpusLayer(corpusLayerNumber);
const mode = layer.modes[corpusMode];
all<HTMLButtonElement>("[data-corpus-layer]").forEach((button) => {
button.classList.toggle("active", Number(button.dataset.corpusLayer) === corpusLayerNumber);
});
all<HTMLButtonElement>("[data-corpus-mode]").forEach((button) => {
button.setAttribute("aria-pressed", String(button.dataset.corpusMode === corpusMode));
});
set(
"[data-corpus-mode-note]",
corpusMode === "prompt_balanced"
? "先把每条 prompt 的 64 维路由分布归一,再平均;短中文标题与长代码 prompt 各有一票。"
: "直接汇总全部 token 的路由计数;长 prompt 权重更高,适合回答“本批 token 实际流向哪里”。",
);
set(
"[data-corpus-heat-title]",
`layer ${corpusLayerNumber} · ${corpusMode === "prompt_balanced" ? "每条 prompt 等权" : "按 token 加权"}`,
);
const rows = one<HTMLElement>("[data-corpus-domain-rows]");
if (rows) {
rows.replaceChildren(...corpusData.domains.map((domain: string) => {
const result = mode.domains[domain];
const metrics = result.metrics;
const top = result.top_experts[0];
const row = document.createElement("div");
row.setAttribute("role", "row");
const identity = document.createElement("span");
const identityLabel = document.createElement("b");
const identityMeta = document.createElement("small");
identityLabel.textContent = corpusLabels[domain];
identityMeta.textContent = `32 prompts · ${corpusData.counts[domain].valid_tokens.toLocaleString()} tokens`;
identity.append(identityLabel, identityMeta);
const cv = document.createElement("span");
const cvPoint = document.createElement("b");
const cvCi = document.createElement("small");
cvPoint.textContent = metrics.cv.point.toFixed(3);
cvCi.textContent = formatCi(metrics.cv.ci95);
cv.append(cvPoint, cvCi);
const effective = document.createElement("span");
const effectivePoint = document.createElement("b");
const effectiveCi = document.createElement("small");
effectivePoint.textContent = metrics.effective_experts.point.toFixed(1);
effectiveCi.textContent = formatCi(metrics.effective_experts.ci95, 1);
effective.append(effectivePoint, effectiveCi);
const topExpert = document.createElement("span");
const topLabel = document.createElement("b");
const topCi = document.createElement("small");
topLabel.textContent = `E${top.expert} · ${(top.share * 100).toFixed(2)}%`;
topCi.textContent = `${(top.ci95[0] * 100).toFixed(2)}–${(top.ci95[1] * 100).toFixed(2)}%`;
topExpert.append(topLabel, topCi);
row.append(identity, cv, effective, topExpert);
return row;
}));
}
const heatmap = one<HTMLElement>("[data-corpus-heatmap]");
if (heatmap) {
heatmap.replaceChildren(...corpusData.domains.map((domain: string) => {
const result = mode.domains[domain];
const max = Math.max(...result.distribution);
const row = document.createElement("div");
const label = document.createElement("b");
label.textContent = corpusLabels[domain];
row.append(label);
result.distribution.forEach((share: number, expert: number) => {
const cell = document.createElement("span");
const ci = result.expert_share_ci95[expert];
cell.style.setProperty("--share", String(share / max));
cell.title = `${corpusLabels[domain]} · L${corpusLayerNumber} · E${expert} · ${(share * 100).toFixed(2)}% · 95% CI ${(ci[0] * 100).toFixed(2)}–${(ci[1] * 100).toFixed(2)}%`;
cell.setAttribute("aria-label", cell.title);
row.append(cell);
});
return row;
}));
}
const jsd = one<HTMLElement>("[data-corpus-jsd]");
const pairFor = (left: string, right: string) => mode.pairs.find((pair: any) =>
(pair.left === left && pair.right === right) || (pair.left === right && pair.right === left)
);
if (jsd) {
const cells: HTMLElement[] = [];
const corner = document.createElement("b");
corner.textContent = "DOMAIN";
cells.push(corner);
corpusData.domains.forEach((domain: string) => {
const header = document.createElement("b");
header.textContent = corpusLabels[domain];
cells.push(header);
});
corpusData.domains.forEach((left: string) => {
const header = document.createElement("b");
header.textContent = corpusLabels[left];
cells.push(header);
corpusData.domains.forEach((right: string) => {
const cell = document.createElement("span");
if (left === right) {
cell.className = "diagonal";
cell.textContent = "0";
} else {
const result = pairFor(left, right).js_divergence;
const point = document.createElement("b");
const ci = document.createElement("small");
point.textContent = result.point.toFixed(3);
ci.textContent = formatCi(result.ci95);
cell.append(point, ci);
}
cells.push(cell);
});
});
jsd.replaceChildren(...cells);
}
const highest = corpusData.domains
.map((domain: string) => ({ domain, value: mode.domains[domain].metrics.cv }))
.sort((left: any, right: any) => right.value.point - left.value.point)[0];
const largest = [...mode.pairs]
.sort((left: any, right: any) =>
right.js_divergence.point - left.js_divergence.point
)[0];
set(
"[data-corpus-highest-cv]",
`${corpusLabels[highest.domain]} · ${highest.value.point.toFixed(3)}`,
);
set(
"[data-corpus-highest-cv-ci]",
`95% CI ${formatCi(highest.value.ci95)} · L${corpusLayerNumber}`,
);
set(
"[data-corpus-largest-jsd]",
`${corpusLabels[largest.left]} ↔ ${corpusLabels[largest.right]} · ${largest.js_divergence.point.toFixed(3)}`,
);
set(
"[data-corpus-largest-jsd-ci]",
`95% CI ${formatCi(largest.js_divergence.ci95)} · nats`,
);
};
all<HTMLButtonElement>("[data-corpus-layer]").forEach((button) => {
button.addEventListener("click", () => {
corpusLayerNumber = Number(button.dataset.corpusLayer);
renderCorpus();
});
});
all<HTMLButtonElement>("[data-corpus-mode]").forEach((button) => {
button.addEventListener("click", () => {
corpusMode = button.dataset.corpusMode ?? "prompt_balanced";
renderCorpus();
});
});
renderCorpus();
});
</script>
@@ -702,7 +982,12 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
.execution-split span,
.repro-gate span,
.dependency-split span,
.checksum-grid span {
.checksum-grid span,
.corpus-ledger span,
.corpus-controls > div > span,
.corpus-heat-head span,
.corpus-comparison span,
.corpus-findings span {
margin: 0;
color: var(--blue);
font: 700 .69rem/1.3 var(--font-mono);
@@ -756,7 +1041,7 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
.artifact-status b { color: var(--ink); font-size: .72rem; }
.artifact-tabs {
display: grid;
grid-template-columns: repeat(5, 1fr);
grid-template-columns: repeat(6, 1fr);
background: var(--ink);
}
.artifact-tabs button {
@@ -1052,6 +1337,212 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
.jaccard-block :global([data-load-jaccard] article b) { font: 700 .62rem/1 var(--font-mono); text-align: right; }
.load-lessons { grid-template-columns: repeat(3, 1fr); }
.load-lessons b { display: block; margin-top: .35rem; font-size: .77rem; }
.corpus-ledger {
display: grid;
grid-template-columns: repeat(5, 1fr);
border: 1px solid rgba(32,32,39,.14);
}
.corpus-ledger article {
padding: .85rem;
border-right: 1px solid rgba(32,32,39,.12);
}
.corpus-ledger article:last-child { border-right: 0; }
.corpus-ledger article.exact { background: rgba(57,120,110,.1); }
.corpus-ledger b {
display: block;
margin-top: .4rem;
font: 750 1.2rem/1 var(--font-display);
}
.corpus-ledger p {
margin: .3rem 0 0;
color: rgba(32,32,39,.56);
font-size: .63rem;
line-height: 1.4;
}
.corpus-controls {
display: grid;
grid-template-columns: auto 1.1fr minmax(15rem, 1.3fr);
gap: 1rem;
align-items: end;
margin-top: .8rem;
padding: .85rem;
border: 1px solid rgba(32,32,39,.14);
background: #e8e2d7;
}
.corpus-controls > div { display: grid; gap: .45rem; }
.corpus-controls .layer-switch { margin: 0; }
.corpus-mode-switch { display: flex; }
.corpus-mode-switch button {
padding: .58rem .75rem;
border: 1px solid rgba(32,32,39,.22);
background: #fffdf8;
color: var(--ink);
font: 650 .67rem/1 var(--font-mono);
cursor: pointer;
}
.corpus-mode-switch button + button { border-left: 0; }
.corpus-mode-switch button[aria-pressed="true"] {
border-color: var(--blue);
background: var(--blue);
color: white;
}
.corpus-controls > p {
margin: 0;
color: rgba(32,32,39,.62);
font-size: .69rem;
line-height: 1.5;
}
.corpus-domain-table {
margin-top: .8rem;
border: 1px solid rgba(32,32,39,.15);
overflow-x: auto;
background: #fffdf8;
}
.corpus-domain-table .head,
.corpus-domain-table :global([data-corpus-domain-rows] > div) {
display: grid;
grid-template-columns: 1.25fr repeat(3, 1fr);
min-width: 680px;
}
.corpus-domain-table .head { background: var(--ink); color: white; }
.corpus-domain-table .head b,
.corpus-domain-table :global([data-corpus-domain-rows] > div > span) {
display: grid;
gap: .25rem;
padding: .7rem;
border-right: 1px solid rgba(32,32,39,.1);
border-bottom: 1px solid rgba(32,32,39,.1);
}
.corpus-domain-table .head b {
font: 650 .62rem/1.2 var(--font-mono);
border-color: rgba(255,255,255,.12);
}
.corpus-domain-table :global([data-corpus-domain-rows] b) {
font: 720 .76rem/1.2 var(--font-mono);
}
.corpus-domain-table :global([data-corpus-domain-rows] small) {
color: rgba(32,32,39,.52);
font: .61rem/1.25 var(--font-mono);
}
.corpus-heat-head {
display: grid;
grid-template-columns: 1fr 1.4fr;
gap: 1rem;
align-items: end;
margin: 1rem 0 .55rem;
}
.corpus-heat-head > div { display: grid; gap: .25rem; }
.corpus-heat-head b { font-size: .78rem; }
.corpus-heat-head p {
margin: 0;
color: rgba(32,32,39,.58);
font-size: .67rem;
line-height: 1.45;
text-align: right;
}
.corpus-heat-scroll {
overflow-x: auto;
border: 1px solid rgba(32,32,39,.14);
background: #ddd6ca;
}
.corpus-heatmap { min-width: 880px; }
.corpus-heatmap > :global(div) {
display: grid;
grid-template-columns: 6.5rem repeat(64, minmax(8px, 1fr));
gap: 2px;
padding: 3px;
border-bottom: 1px solid rgba(32,32,39,.12);
}
.corpus-heatmap > :global(div:last-child) { border-bottom: 0; }
.corpus-heatmap > :global(div > b) {
position: sticky;
left: 0;
z-index: 1;
display: grid;
align-items: center;
padding: .45rem;
background: #eee8de;
font: 700 .61rem/1.1 var(--font-mono);
}
.corpus-heatmap > :global(div > span) {
min-height: 1.55rem;
background: color-mix(in srgb, var(--blue) calc(var(--share) * 88%), #f2ede4);
cursor: help;
}
.corpus-heatmap > :global(div > span:hover) {
outline: 2px solid var(--amber);
z-index: 2;
}
.corpus-comparison {
display: grid;
grid-template-columns: .65fr 1.35fr;
gap: 1rem;
margin-top: .8rem;
padding: 1rem;
border: 1px solid rgba(32,32,39,.14);
background: #e8e2d7;
}
.corpus-comparison h5 {
margin: .4rem 0;
font: 720 1rem/1.15 var(--font-display);
}
.corpus-comparison p {
margin: 0;
color: rgba(32,32,39,.58);
font-size: .68rem;
line-height: 1.5;
}
.corpus-jsd {
display: grid;
grid-template-columns: 6rem repeat(4, minmax(5.5rem, 1fr));
overflow-x: auto;
border: 1px solid rgba(32,32,39,.13);
background: #fffdf8;
}
.corpus-jsd > :global(b),
.corpus-jsd > :global(span) {
display: grid;
align-content: center;
gap: .2rem;
min-height: 3.1rem;
padding: .45rem;
border-right: 1px solid rgba(32,32,39,.1);
border-bottom: 1px solid rgba(32,32,39,.1);
font: 650 .59rem/1.2 var(--font-mono);
}
.corpus-jsd > :global(b) { background: var(--ink); color: white; }
.corpus-jsd > :global(span > b) { font-size: .72rem; }
.corpus-jsd > :global(span > small) {
color: rgba(32,32,39,.48);
font-size: .52rem;
}
.corpus-jsd > :global(span.diagonal) {
place-items: center;
background: rgba(57,120,110,.08);
color: var(--teal);
}
.corpus-findings {
display: grid;
grid-template-columns: repeat(3, 1fr);
margin-top: .8rem;
border: 1px solid rgba(32,32,39,.14);
}
.corpus-findings article {
padding: .85rem;
border-right: 1px solid rgba(32,32,39,.12);
}
.corpus-findings article:last-child { border-right: 0; }
.corpus-findings b {
display: block;
margin-top: .4rem;
font-size: .78rem;
}
.corpus-findings p {
margin: .3rem 0 0;
color: rgba(32,32,39,.56);
font-size: .65rem;
line-height: 1.45;
}
.observed-cache {
display: grid;
grid-template-columns: 1fr auto 1.25fr;
@@ -1283,7 +1774,10 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
.heat-head,
.aggregate-card,
.jaccard-block,
.kernel-contract { grid-template-columns: 1fr; }
.kernel-contract,
.corpus-controls,
.corpus-heat-head,
.corpus-comparison { grid-template-columns: 1fr; }
.artifact-status { grid-template-columns: 1fr 1fr; }
.artifact-tabs { grid-template-columns: 1fr 1fr; }
.route-controls { grid-template-columns: 1fr 1fr; }
@@ -1294,6 +1788,8 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
.route-metrics,
.checksum-grid,
.absorb-metrics { grid-template-columns: 1fr 1fr; }
.corpus-ledger { grid-template-columns: repeat(3, 1fr); }
.corpus-heat-head p { text-align: left; }
.layer-evidence { grid-template-columns: repeat(9, 1fr); }
.repro-gate { grid-template-columns: 1fr 1fr; }
.repro-gate > p { grid-column: 1 / -1; padding: .8rem 0 0; border-left: 0; border-top: 1px solid rgba(255,255,255,.18); }
@@ -1319,13 +1815,19 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
.absorb-metrics,
.artifact-identity,
.checksum-grid,
.cache-ledger { grid-template-columns: 1fr; }
.cache-ledger,
.corpus-ledger,
.corpus-findings { grid-template-columns: 1fr; }
.route-metrics article,
.cache-ratio article,
.load-lessons article,
.absorb-metrics article,
.artifact-identity article,
.checksum-grid article { border-right: 0; border-bottom: 1px solid rgba(32,32,39,.12); }
.corpus-ledger article,
.corpus-findings article { border-right: 0; border-bottom: 1px solid rgba(32,32,39,.12); }
.corpus-mode-switch { display: grid; grid-template-columns: 1fr; }
.corpus-mode-switch button + button { border-left: 1px solid rgba(32,32,39,.22); border-top: 0; }
.artifact-boundary { grid-template-columns: 1fr; }
.load-dials { grid-template-columns: 1fr; }
.observed-cache,