Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
269 commits
Select commit Hold shift + click to select a range
12e1175
feat(inference): explain offload halo in chart legends (#642)
Oseltamivir Jul 29, 2026
09ebdaa
fix(staging): preserve staged benchmark runs (#643)
cquil11 Jul 29, 2026
56678ff
docs: remove temporary language override (#646)
edwingao28 Jul 29, 2026
8ec82ef
feat(overview): add scenario-aware comparisons / 添加场景感知对比 (#645)
edwingao28 Jul 30, 2026
71b59d1
fix(db): honor explicit Dynamo disagg state (#648)
cquil11 Jul 30, 2026
56fa357
Remove Normalized E2E / Session Time / Prefill TPS x-axis modes / 移除 …
cquil11 Jul 30, 2026
0c543dc
chore(db): purge run 30405836523 (Kimi-K3 B300 AgentX non-DSpark) (#649)
functionstackx Jul 30, 2026
08e6a98
fix(inference): separate multinode aggregate deployments (#650)
cquil11 Jul 30, 2026
92b1bec
fix(overview): clarify speculative decode labels (#647)
edwingao28 Jul 30, 2026
753052f
feat(quotes): add SambaNova supporter quote to carousel (#652)
cquil11 Jul 30, 2026
bd9a436
chore(pricing): update RTX PRO 6000 hyperscaler and neocloud $/GPU/hr…
functionstackx Jul 30, 2026
446e2f4
fix(overview): hyperscaler cost per 1M total tokens + cell-state and …
edwingao28 Jul 31, 2026
805650b
feat(overview): curated scenario rows, 150/200 service levels, trimme…
functionstackx Jul 31, 2026
a52847e
chore(overview): label the tier control SLO and enlarge the column he…
functionstackx Jul 31, 2026
2d5b195
Explain clipped inference chart lines / 说明推理图表的截断曲线 (#655)
Oseltamivir Jul 31, 2026
5a6f918
fix: keep overflow labels within bounds (#658)
adibarra Jul 31, 2026
ae3a240
Update TCO to July / 将 TCO 更新至 7 月 (#659)
Oseltamivir Jul 31, 2026
6040e97
fix(inference): correct CSV latency metadata and overlay rows (#660)
Oseltamivir Jul 31, 2026
715c965
chore(pricing): state July 2026 TCO rates to two decimals (#661)
functionstackx Jul 31, 2026
87407cd
chore(db): purge MiniMax M3 AMD run 30346826643 / 清理 MiniMax M3 AMD 运…
cquil11 Jul 31, 2026
11d559a
Promote Overview to top-level navigation / 将总览提升至顶层导航 (#663)
functionstackx Aug 2, 2026
30968a4
Add audited benchmark point purges / 添加可审计的基准测试点删除机制 (#665)
adibarra Aug 3, 2026
3d83528
Port Kimi K3 architecture article from Substack / 移植 Kimi K3 架构文章 (#666)
functionstackx Aug 4, 2026
7067f0c
feat: update CollectiveX run controls (#667)
Oseltamivir Aug 4, 2026
621d078
ci: use 8 vCPU runner for agentic ingest (#669)
cquil11 Aug 4, 2026
5da72c8
refactor(ui): rename user-facing "GPU" to "Chip" across the site / 将全…
functionstackx Aug 4, 2026
2bfa3b6
ci: use 16 vCPU runner for agentic ingest (#670)
cquil11 Aug 4, 2026
a7c5a57
Optimize agentic trace ingestion (#672)
cquil11 Aug 5, 2026
21dec9d
perf(db): accelerate parallel trace ingestion / 加速并行 trace 摄取 (#673)
cquil11 Aug 5, 2026
bc4c9b1
Add E2E Normalized Interactivity x-axis metric as the agentic default…
cquil11 Aug 5, 2026
e67785f
fix(agentic): intersect canonical and local Pareto frontiers (#674)
cquil11 Aug 5, 2026
bc86e2a
feat(overview): add 30-day cost comparison / 总览页新增 30 天成本对比 (#676)
edwingao28 Aug 5, 2026
1cf3017
fix(cache): bound blob keys for bulk API requests (#679)
cquil11 Aug 6, 2026
1590c0f
chore(nav): move CollectiveX into the Hidden tab menu (#678)
functionstackx Aug 7, 2026
2a96b01
fix(inference): block cross-engine STP comparisons at 8K/1K (#681)
functionstackx Aug 7, 2026
989d148
fix(inference): exempt ATOM from the 8K/1K engine guard (#682)
functionstackx Aug 7, 2026
c7d0313
fix(inference): guard only vLLM and SGLang on 8K/1K (#683)
functionstackx Aug 7, 2026
529925a
feat(overview): add soft navigation and selectable reference / 总览页支持软…
edwingao28 Aug 7, 2026
1ac9ce4
fix(agentx): use full-response interactivity (#677)
cquil11 Aug 7, 2026
92e0018
Remove stage results concurrency lock (#684)
cquil11 Aug 7, 2026
f4be238
Fix trace replay JSONB metric merge (#685)
cquil11 Aug 7, 2026
24eac12
feat(collectivex): show KV-cache transfer cases on the CollectiveX ta…
Oseltamivir Aug 7, 2026
30393bc
chore(db): purge run 29741710665 (GLM-5.2 B300 SGLang AgentX non-MTP)…
functionstackx Aug 7, 2026
3957e8f
Gate full E2E suite in CI / 将完整 E2E 套件交给 CI 门禁 (#675)
adibarra Aug 7, 2026
4b2fdc0
chore(db): purge attempt 1 of run 29651235293 (#691)
cquil11 Aug 7, 2026
8ce927b
chore(models): deprecate Kimi K2.5/2.6/2.7-Code (#692)
functionstackx Aug 7, 2026
5e629b7
chore(db): purge GLM-5.2 B300 SGLang HiCache attempt / 清除 GLM-5.2 B30…
cquil11 Aug 7, 2026
b1f11f5
chore(db): clean up outdated non-MTP AgentX benchmark runs / 清理过时的非 M…
cquil11 Aug 7, 2026
dbae565
perf(overview): avoid RSC selector round trips / 总览页选择器避免 RSC 往返 (#687)
edwingao28 Aug 7, 2026
4097c8c
feat(overview): link history cells to exact curves / 总览历史单元格链接精确对比曲线 …
edwingao28 Aug 8, 2026
00291ca
feat(overview): bottom toggle to show deprecated & maintenance models…
edwingao28 Aug 8, 2026
0e176e1
feat(collectivex): chart KV-transfer scaling and lead kv-only runs wi…
Oseltamivir Aug 8, 2026
1244341
feat(constants): register the tilert framework so legends read TileRT…
Oseltamivir Aug 8, 2026
25e1464
fix(charts): scope the disagg cost caveat to per-token-type cost (#698)
functionstackx Aug 8, 2026
8927aff
Remove the Performance Over Time popup / 移除性能趋势弹窗
functionstackx Aug 9, 2026
be80a91
feat(calculator): default-hide SKUs above config limit (#703)
Oseltamivir Aug 9, 2026
d17bfbe
Label singleton unofficial overlay series / 为单点 unofficial overlay se…
Oseltamivir Aug 9, 2026
e9b1ed6
Label singleton (#706)
Oseltamivir Aug 9, 2026
ed5c889
fix(calculator): use clamped endpoint metadata (#707)
Oseltamivir Aug 9, 2026
9c1cee2
fix(inference): retain clipped rows in table view (#708)
Oseltamivir Aug 9, 2026
0fcff6d
chore(db): purge outdated DSV4 GB300 AgentX attempt (#709)
cquil11 Aug 9, 2026
27bfaa6
feat(inference): guard only vLLM vs SGLang, per hardware SKU (#711)
functionstackx Aug 9, 2026
d525d9e
Export displayed metrics in inference CSV downloads (#712)
Oseltamivir Aug 10, 2026
bc1fa04
fix(ui): support multi-select kernel modes / fix(ui):支持内核模式多选 (#714)
Oseltamivir Aug 10, 2026
4501bc6
perf(api): add compact calculator benchmarks (#715)
Oseltamivir Aug 10, 2026
6323304
feat(inference): default to the best line per SKU / feat(inference):默…
Oseltamivir Aug 10, 2026
6619144
feat(blog): port "Ultra-High Interactivity on NVIDIA GPUs? TileRT on …
functionstackx Aug 10, 2026
ce0aaee
Add synchronized public API reference / 新增同步维护的公开 API 参考文档 (#718)
adibarra Aug 10, 2026
3051dcb
feat(agentic): put the latency percentile selector behind the feature…
functionstackx Aug 10, 2026
054a9d3
fix(inference): stop flagging a complete comparison date range / 修复对比…
edwingao28 Aug 10, 2026
c4224c1
docs update (#721)
Oseltamivir Aug 11, 2026
40be975
perf(overview): derive the reference client-side and harden soft navi…
edwingao28 Aug 11, 2026
1fd5e8d
fix(inference): ungate Measured Energy axes and give them a Pareto di…
edwingao28 Aug 11, 2026
1c1c7d9
chore(db): purge DSV4 GB300 Dynamo-vLLM AgentX attempt (#722)
cquil11 Aug 11, 2026
da43592
chore(db): clean up unsupported AgentX results (#723)
cquil11 Aug 11, 2026
763db2a
feat(quotes): add TileRT Team supporter quote(#724)
Oseltamivir Aug 12, 2026
bec218d
chore(quotes): update TileRT logo mark (#725)
Oseltamivir Aug 12, 2026
e3af595
fix(inference): derive $/M tok and J/token from throughput instead of…
Oseltamivir Aug 12, 2026
ebcd38d
ci: sync staging database from production (#727)
cquil11 Aug 12, 2026
f3c582d
ci: report staging workflow start (#728)
cquil11 Aug 12, 2026
c8b87de
feat(inference): split gradient labels by KV offload state / 渐变标签按 KV…
functionstackx Aug 12, 2026
2e1a813
Merge mixed speculative decoding points on agentic curves (#695)
cquil11 Aug 12, 2026
03cd96e
chore(quotes): drop four orgs from the landing quote carousel (#730)
functionstackx Aug 12, 2026
ac41a81
feat(agentic): nest the latency x-axis modes under an Advanced menu /…
functionstackx Aug 12, 2026
12e72c3
feat(overview): selectable history comparison window / 总览历史对比支持可选时间窗口…
edwingao28 Aug 13, 2026
08e1f7d
Remove stage results concurrency lock (#733)
cquil11 Aug 13, 2026
7fded35
Restore AgentX interactivity as the default metric (#736)
cquil11 Aug 14, 2026
844df76
feat(quotes): add Mooncake supporter quote / 添加 Mooncake 支持者评价 (#737)
Oseltamivir Aug 14, 2026
b367003
feat(data): preserve additive append-only recipe variants (#743)
cquil11 Aug 14, 2026
0786d2b
test: realign the AgentX frontier tests with #736 (#742)
Oseltamivir Aug 15, 2026
70147e5
refactor(models): keep release dates in one table / 模型发布日期统一到单一数据表 (#…
Oseltamivir Aug 15, 2026
ed3dee9
fix(models): correct four release dates and source the other eight (#…
Oseltamivir Aug 15, 2026
2e5b2e3
feat(inference): surface DCP and PCP across point views (#745)
cquil11 Aug 16, 2026
8a67643
fix(overview): explain the category badge without a mouse and unpad t…
edwingao28 Aug 16, 2026
2aad733
feat(overview): fit the matrix on one screen and present it full scre…
chunfangamd Aug 17, 2026
7f5c5d1
chore: bump deps / chore:更新依赖 (#750)
adibarra Aug 17, 2026
599e076
feat(models): label GLM-5.2 data as GLM-5.2/GLM-5.3 (#739)
Oseltamivir Aug 18, 2026
04bf270
feat(inference): default AgentX-capable models to the Agentic scenari…
functionstackx Aug 18, 2026
6da7c43
feat(nav): surface datasets in primary navigation (#754)
cquil11 Aug 18, 2026
a6cefc5
feat(db): add audited run metadata backfills (#753)
cquil11 Aug 18, 2026
6576b80
fix AgentX offload metrics recovery (#760)
cquil11 Aug 18, 2026
7b76f55
chore(db): purge hung AgentX points (#761)
cquil11 Aug 18, 2026
55d88c1
feat(agentx): publish AgentX methodology and canonical routes (#755)
cquil11 Aug 18, 2026
df2b938
fix branch-safe benchmark point backfills (#763)
cquil11 Aug 18, 2026
9a6d8e5
fix(labels): render Kimi K3 speculative decoding as "DSpark" (#759)
functionstackx Aug 18, 2026
30fc388
feat(landing): AgentX splash text in light/dark + centered launch mod…
functionstackx Aug 19, 2026
28e8173
test(e2e): make launch-modal suppression opt-out per spec (#765)
functionstackx Aug 19, 2026
42aef15
feat(agentx): publish the AgentX optimizations pages / 发布 AgentX 优化专题…
functionstackx Aug 19, 2026
7d8c4da
fix(power): withhold invalid and ambiguous measured energy / 屏蔽无效与语义不…
edwingao28 Aug 19, 2026
21b6eb9
refactor(agentx): move the optimizations callout into the datasets ca…
functionstackx Aug 19, 2026
313fcd4
feat(power): add query energy and TDP dashboard axes / 新增每请求能耗与 TDP 占…
edwingao28 Aug 19, 2026
bf7d0bb
Lead Comparisons with AgentX results (#762)
cquil11 Aug 19, 2026
8901694
feat(blog): add agentic inference benchmark SEO (#772)
Oseltamivir Aug 19, 2026
347c3c5
fix: preserve legend selections across metric changes (#746)
cquil11 Aug 19, 2026
1644b17
chore(nudges): restate the AgentX launch banner subtitle (#773)
functionstackx Aug 19, 2026
e19b988
chore(nav): lead with AgentX, and link the harness from the footer (#…
functionstackx Aug 19, 2026
8e8c194
chore(inference): drop the Median Interactivity column from table vie…
functionstackx Aug 19, 2026
df658b7
feat(agentx): publish the detailed telemetry tutorial / 发布 AgentX 详细遥…
functionstackx Aug 19, 2026
8ec7cbc
chore: drop the Median TTFT column, tighten the AgentX banner copy, h…
functionstackx Aug 19, 2026
40a4fbe
chore(agentx): point the results CTA at /inference (#778)
functionstackx Aug 19, 2026
34e6773
fix: prevent unofficial run legend crash (#779)
adibarra Aug 19, 2026
0775a21
feat(blog): a brief overview of agentic workloads / 新增博客《Agentic 工作负载…
functionstackx Aug 19, 2026
b4d8e07
feat(landing): lead with the AgentX hero and rework its CTAs / 落地页引入 …
functionstackx Aug 19, 2026
eb1d088
chore(ui): tighten the AgentX hero and switch the wordmark to trans f…
functionstackx Aug 19, 2026
2c4a3f1
chore(compare): reorder the AgentX model ledger (#783)
functionstackx Aug 19, 2026
988b6e2
style(inference): Emphasize GPU names in line labels / 突出显示推理曲线标签中的 G…
Oseltamivir Aug 20, 2026
fc6f8ff
fix(inference): Keep optional comparison dates neutral / 修复可选对比日期范围误报…
edwingao28 Aug 20, 2026
c5fc782
feat(telemetry): add a Telemetry nav entry and the /inference/agentic…
functionstackx Aug 20, 2026
ab1fc80
Show tokens purchasable per dollar in inference charts / 推理图表改为展示每美元可…
Oseltamivir Aug 20, 2026
27bf5e7
feat(compare): address the workload by path, plus the AgentX explaine…
functionstackx Aug 20, 2026
61e5dc9
feat(inference): default to tokens per $1 USD, add ¥ metrics, drop ag…
functionstackx Aug 20, 2026
b4a295e
ci: extend database backup job timeout (#794)
adibarra Aug 20, 2026
43c83d4
feat(inference): default the y-axis to total tokens per $1 USD / 推理页默…
functionstackx Aug 20, 2026
8200783
fix(agentic): Separate reused conversation replay lanes (#792)
cquil11 Aug 20, 2026
9cbeefe
fix(filters): apply URL filter params on client-side navigation (#795)
cquil11 Aug 20, 2026
fd50ad7
fix(inference): always solo on legend click (#796)
cquil11 Aug 20, 2026
7bbce62
One high-contrast color per config, dates as a gradient / 高对比度下每个配置一种…
cquil11 Aug 20, 2026
67d4f30
test(overview): add WCAG smoke coverage (#804)
edwingao28 Aug 20, 2026
4c223ec
refactor(tco): centralize provenance metadata (#806)
edwingao28 Aug 20, 2026
ac83b0d
refactor(overview): share route and metadata assembly / 复用 Overview 路…
edwingao28 Aug 20, 2026
ff1e58b
ci: retry backup on Blacksmith runner (#808)
adibarra Aug 20, 2026
6a1566c
fix(overview): preserve data across navigation failures / 导航失败时保留 Ove…
edwingao28 Aug 20, 2026
733da68
fix(ai-chart): respect metric direction and missing values / 修复 AI 图表…
edwingao28 Aug 20, 2026
559657c
feat(overview): persist presentation intent in URL / 在 URL 中保存 Overvi…
edwingao28 Aug 20, 2026
dd07cbe
fix(inference): preserve chart state when returning from a point deta…
cquil11 Aug 21, 2026
e8a79d4
Add first-visit coach mark pointing at agentic chart data points (#799)
cquil11 Aug 21, 2026
ce9818b
feat(inference): expose logs for all benchmark runs
cquil11 Aug 21, 2026
3de8c27
fix(agentic): give KV cache series a real per-engine identity / 为 KV …
cquil11 Aug 21, 2026
a554eb6
feat(inference): plot agentic ISL/OSL distributions as lognormal / 将智…
cquil11 Aug 21, 2026
2816e86
feat: show resident ISL and OSL percentiles (#811)
cquil11 Aug 21, 2026
48cf50f
feat(inference): restore restricted agentic quick filters / 恢复受限的 age…
cquil11 Aug 21, 2026
7b75d86
fix(inference): keep line labels off parallelism labels (#813)
cquil11 Aug 21, 2026
675b986
fix(inference): stop point labels rendering under run-name pills (#814)
cquil11 Aug 21, 2026
806ac27
fix(db): restore append-only metadata for run 32242794988 (#816)
cquil11 Aug 21, 2026
d907e8e
fix(db): backfill native KV offload metadata (#818)
cquil11 Aug 21, 2026
a707b62
fix(agentic): restore large point detail loading / 恢复大型智能体数据点详情页加载 (#…
cquil11 Aug 21, 2026
e9f2834
fix(zh): apply deterministic Chinese localization cleanup / 修复可确定的中文本…
edwingao28 Aug 21, 2026
a6e442f
[1/N] fix(zh): rewrite the landing page copy / 重写中文首页文案 (#822)
edwingao28 Aug 22, 2026
b366fdd
fix(zh): localize testimonial attribution roles (#824)
edwingao28 Aug 22, 2026
134737e
test(zh): guard deterministic Chinese localization rules / 用 CI 守卫确定性…
edwingao28 Aug 22, 2026
3a1dce7
docs(zh): add the editorial foundation and simple advisory review ski…
edwingao28 Aug 22, 2026
a0e0107
[3/N] fix(zh): rewrite Overview and Compare index copy / 重写 Overview …
edwingao28 Aug 22, 2026
f6bf6f2
Refactor dashboard runtime architecture and performance / 重构仪表板运行时架构并…
adibarra Aug 22, 2026
4503715
fix: remove route bundle budget gate (#827)
adibarra Aug 22, 2026
f5b42ee
fix: prevent dataset loading layout shift (#829)
adibarra Aug 23, 2026
775d9c1
Reduce coach mark anchor scan overhead / 降低引导标记锚点扫描开销 (#830)
adibarra Aug 23, 2026
fb1f540
fix(models): show GLM 5.2/5.3 parameter size (#826)
Oseltamivir Aug 23, 2026
abca78f
fix(overview): avoid duplicate locale navigation / 避免总览页语言切换重复导航 (#828)
edwingao28 Aug 23, 2026
54f6185
Reduce chart transition rendering work / 降低图表过渡渲染开销 (#831)
adibarra Aug 23, 2026
789345c
[4/N] Refine Chinese ML infra terminology and AgentX copy / 优化中文 ML 基…
edwingao28 Aug 23, 2026
abf30ab
Narrow scatter display invalidation / 缩小散点图显示失效更新范围 (#833)
adibarra Aug 23, 2026
ed86121
fix(export): prevent PNG legend clipping / 修复 PNG 导出时图例被裁切 (#834)
Oseltamivir Aug 23, 2026
077b8e1
Add Fleet Lifecycle economics to the calculator / 在计算器中新增集群生命周期经济性分析 …
Oseltamivir Aug 23, 2026
6c30306
feat(inference): retain TileRT in best-per-SKU views (#843)
Oseltamivir Aug 24, 2026
b24dc58
fix: preserve overlays during official solo (#844)
adibarra Aug 24, 2026
27ff3fc
feat(about): add promo video hero to About page (#846)
cquil11 Aug 24, 2026
21daf62
Port the AgentX / InferenceXv3 CUDA moat article to the blog / 将 Agen…
functionstackx Aug 24, 2026
d0bd985
Explain and link E2E Normalized Interactivity in FAQ / 在常见问题中说明端到端归一化…
Oseltamivir Aug 25, 2026
4201386
feat: link normalized interactivity to its FAQ (#848)
Oseltamivir Aug 25, 2026
d3abb36
feat(glossary): add eight AgentX-era terms and refresh nine definitio…
functionstackx Aug 25, 2026
ff09fec
feat(chart): narrow TCO and power caption badges to selected chips (#…
functionstackx Aug 25, 2026
649dfca
feat(inference): move C= concurrency out of point labels into an adva…
functionstackx Aug 25, 2026
7d21105
chore: remove dead code and unused dev dependency (#855)
functionstackx Aug 25, 2026
cca46c1
feat(glossary): add 24 terms from a codebase and article sweep (#854)
functionstackx Aug 25, 2026
dc8966b
Move label + display toggles into the legend Advanced drawer (#856)
functionstackx Aug 25, 2026
baae2cd
Remove Bus/Race Car and Donkey/Elytra overlay toggles (#858)
functionstackx Aug 26, 2026
4f82a8f
Make PNG export footer 5x larger (#857)
functionstackx Aug 26, 2026
7e9b0fe
fix: hide disagg power caveat on total tok/s/MW metric (#862)
functionstackx Aug 26, 2026
d4241bc
feat(inference): expandable x/y-axis metric footer with explanations …
functionstackx Aug 26, 2026
e1a60fe
fix(ui): hide Scenario and Precision selectors when only one option e…
functionstackx Aug 26, 2026
296ed59
Add 10 per-model AgentX result breakouts / 新增 10 篇按模型拆分的 AgentX 结果文章 …
functionstackx Aug 26, 2026
f8e1dbb
content(blog): port the OpenAI Jalapeño article (#865)
functionstackx Aug 26, 2026
c83fc05
fix(ui): drop the static Scenario readout when agentic is the only sc…
functionstackx Aug 26, 2026
a626051
revert(compare): drop the Methodology Deep Dive hero CTA (#868)
functionstackx Aug 26, 2026
e51f9c9
feat(nav): swap Telemetry for Articles in the header, and name agenti…
functionstackx Aug 26, 2026
9a4e4ea
Replace overview SLO buttons with a six-stop slider / 将 Overview 页 SL…
functionstackx Aug 26, 2026
c33e688
Add per-model SEO subroutes to /calculator and /historical / 为计算器与历史趋…
functionstackx Aug 26, 2026
37bdef7
Rename DeepSeek V4 Pro label to include 0813 version date (#871)
functionstackx Aug 26, 2026
8a327e2
feat(inference): indexable /inference/<model> subroutes with landing …
functionstackx Aug 26, 2026
041f1af
feat(model): add model deep-dive pages with architecture, evals, and …
functionstackx Aug 26, 2026
d5c4147
feat(inference): draggable curve-to-curve iso-x perf ruler for the la…
functionstackx Aug 26, 2026
e7ce475
chore(db): purge run 32695861783 (DSV4 B300 SGLang AgentX dev image) …
Oseltamivir Aug 26, 2026
d801637
Move KV-offload key, optimization note, and ATOM footnote to the info…
functionstackx Aug 26, 2026
3bb772b
fix: professional zh rendering of Kaichao's testimonial (#875)
edwingao28 Aug 26, 2026
dfad31f
feat(fleet): move Fleet Lifecycle economics to its own /fleet page (#…
functionstackx Aug 26, 2026
6b2bf69
Add a Nemotron 3 Ultra baseline and % better column to model eval tab…
functionstackx Aug 26, 2026
38bb289
feat(inference): add Jalapeño and Vera Rubin snapshots / 新增 Jalapeño …
Oseltamivir Aug 26, 2026
b1aac5e
Add indexable /chips SEO page family with 44 localized URLs / 新增可索引的 …
functionstackx Aug 26, 2026
6ce5ec5
feat(chips): plug the Accelerator & HBM and AI Cloud TCO models on /c…
functionstackx Aug 26, 2026
797d1d2
Add 32 new bilingual glossary entries for SEO coverage (#879)
functionstackx Aug 26, 2026
6347568
feat(seo): live GPU rankings and model-on-hardware result pages / 新增实…
functionstackx Aug 27, 2026
0563d7f
Landing: compact supporters band — link out instead of rotating quote…
functionstackx Aug 27, 2026
95460d7
Landing: link each supporter org to its quote on /quotes (#886)
functionstackx Aug 27, 2026
37102c9
feat(model): add Qwen3.8-Flash-Next (#887)
functionstackx Aug 27, 2026
dc529f4
feat(collectivex): refine defaults and run filters (#888)
Oseltamivir Aug 27, 2026
f2acbbc
Ship the Qwen3.8-Flash-Next model page, default and AgentX-only / 新增 …
functionstackx Aug 27, 2026
41aea6c
feat(model): add developer logos to /model index and detail pages (#893)
functionstackx Aug 27, 2026
bb0fd49
fix(fleet): refine lifecycle defaults (#891)
Oseltamivir Aug 27, 2026
59a1980
feat(inference): show model logo beside model name in chart caption /…
functionstackx Aug 27, 2026
200cc38
fix(compare): drop redundant default params from AgentX hero links / …
functionstackx Aug 27, 2026
b6db057
style(app): format GlobalFilterContext.stale-url.test.tsx / 格式化 stale…
functionstackx Aug 27, 2026
c667868
Use full-color developer logos on /model pages / /model 页面改用全彩开发商 log…
functionstackx Aug 27, 2026
93a525b
feat(landing): add full-color model logos to AgentX results ledger (#…
functionstackx Aug 27, 2026
ff8991d
feat(logos): full-color Kimi mark on brand tile (#898)
functionstackx Aug 27, 2026
08aa25d
fix(logos): use the Z.ai mark for GLM and consolidate hero logo asset…
functionstackx Aug 27, 2026
21d8f37
feat(compare): show hardware vendor logos beside each chip on /compar…
functionstackx Aug 27, 2026
107b70d
feat(overview): full-color model logos on /overview; GLM uses the act…
functionstackx Aug 27, 2026
51da93b
feat(ui): full-color model logos in model selector; GLM uses the actu…
functionstackx Aug 27, 2026
fc793d2
Add token revenue Y-axis with OpenRouter pricing / 新增支持 OpenRouter 定价…
Oseltamivir Aug 27, 2026
ef0b745
feat(collectivex): KV concurrency frontier view / 新增 KV 并发帕累托前沿视图 (#906)
Oseltamivir Aug 27, 2026
6ab093a
feat(compare): show Qwen3.8-Flash-Next in the AgentX hero / AgentX 主打…
functionstackx Aug 27, 2026
59a451f
feat(inference): move Share button next to chart download controls (#…
functionstackx Aug 27, 2026
e6fc291
Add OpenAI Jalapeño to AgentX compare hero subtitle (#913)
functionstackx Aug 27, 2026
6b0763c
feat(inference): move model-architecture link into an icon beside the…
functionstackx Aug 27, 2026
e0f05b0
Remove Explore InferenceX section from landing page (#914)
functionstackx Aug 27, 2026
ef3f964
feat(compare): add model brand logos to /compare catalog sections (#915)
functionstackx Aug 27, 2026
9bcb52c
chore(db): purge run 32863999669 — incomplete failing run (#916)
functionstackx Aug 27, 2026
03c79fe
Remove the AgentX results launch modal from the landing page (#919)
functionstackx Aug 27, 2026
5a681e8
fix: stop /model embed from leaking auto-populated state into /infere…
functionstackx Aug 27, 2026
4d8866d
feat(overview): group AgentX rows above 8K/1K rows in the matrix (#918)
functionstackx Aug 27, 2026
35e998d
feat(ui): add NEW badges to AgentX models on landing ledger and /infe…
functionstackx Aug 27, 2026
4861bf7
[app] Add full-color hardware-vendor logos to chart line labels / 图表曲…
functionstackx Aug 27, 2026
ffa9a28
fix(overview): bump derived cache key so the AgentX-first row order s…
functionstackx Aug 27, 2026
cd74047
feat(blog): retitle Qwen3.5 SGLang post to MI355X versus GB300 NVL72 …
functionstackx Aug 27, 2026
915358c
Update AgentX hero description with upcoming TPUv7/v8, Rubin NVL72, M…
functionstackx Aug 27, 2026
c15925e
feat(landing): add AMD Lisa Su & NVIDIA Jensen to supporters strip, r…
functionstackx Aug 27, 2026
06a9fa9
fix(landing): remove duplicate GitHub star card overlaying the footer…
edwingao28 Aug 27, 2026
97db99a
fix(legend): closable in-flow legend panel, no chart overlay / 图例改为可关…
functionstackx Aug 28, 2026
1d76722
feat(design-system): typography tokens, chart type constants, and rat…
claude[bot] Aug 28, 2026
b0cc2c6
Merge remote-tracking branch 'upstream/master' into sync/upstream-202…
Aug 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
117 changes: 117 additions & 0 deletions .claude/skills/ingest-run/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
---
name: ingest-run
description: Ingest one vngcloud/InferenceX GitHub Actions benchmark run into this fork's self-hosted prod DB, over SSH into the deploy host. Use whenever asked to "ingest this run", given a vngcloud/InferenceX actions/runs/<id> URL, or asked to get benchmark data from a workflow run into the dashboard. NOT for the upstream SemiAnalysisAI/InferenceX-app Neon-DB flow (a different agent/env covers that).
---

# Ingest one benchmark run (this fork, self-hosted host)

This fork does **not** use Neon. Prod is a self-hosted docker-compose stack on a
single runner host, with its own dockerized Postgres. That changes the ingest
mechanics vs. the upstream project's docs — follow this skill, not generic
`admin:db:ingest:run` examples you find elsewhere in the repo/docs.

## Environment (fixed facts about this deployment)

- **Deploy host**: `ssh -p 234 hoanq333@61.28.228.19`
- **Prod compose project**: `/opt/docker-compose/docker-compose.yml`, services
`inferencex-app-1`, `inferencex-postgres-1` (local Postgres, NOT Neon), `inferencex-nginx-1`,
`inferencex-certbot-1`.
- **Source repo for runs**: `vngcloud/InferenceX` (not `SemiAnalysisAI/InferenceX`).
- **`DATABASE_WRITE_URL`** on this host points at the local `postgres` compose service.
It does **not** speak TLS — every `bun run admin:db:*` command below **MUST** pass
`--no-ssl`, or you get a confusing `Client network socket disconnected before secure TLS
connection was established` / `ECONNRESET` error that looks like network flakiness but
isn't. `deploy.yml`'s own migration step already does this (`admin:db:migrate --yes --no-ssl`).
- Dev stack (`inferencex-dev`, port `:8080`) is a separate, isolated compose project on the
same host — this skill is about **prod**.

## Step 0 — confirm the run is actually finished

```bash
gh api repos/vngcloud/InferenceX/actions/runs/<RUN_ID> --jq '{name,status,conclusion}'
```

If `status` isn't `completed`, wait — do not attempt to ingest a partial run. Re-check later
(a `ScheduleWakeup`/poll loop, not tight retries).

## Step 1 — check whether the model/GPU/precision/framework is already registered

Read the run's job names and artifact names (`gh run view <RUN_ID> --repo vngcloud/InferenceX`,
not `--log`) and check whether the model prefix, hardware key, precision, and framework already
resolve in the codebase (`packages/constants/src/models.ts` `DB_MODEL_TO_DISPLAY`,
`packages/constants/src/gpu-keys.ts` `HW_REGISTRY`, `packages/db/src/etl/normalizers.ts`
`PRECISION_ALIASES`/`MODEL_TO_KEY`). **If anything is new, follow
`docs/adding-entities.md` first** — ingesting before the mapping lands means the DB silently
skips those rows (no error, no partial write — the ETL just drops what it can't resolve). Commit,
push to `master`, and wait for `deploy.yml` to finish (`gh run watch <run-id>`) before proceeding —
the new mapping has to actually be in the container's code for ingest to pick it up.

## Step 2 — download artifacts once, persistently, inside the container

The artifact-download step and the DB write step both go over flaky links from this host
(GitHub's artifact CDN, and TLS-handshake resets from the app container to the local Postgres
under load). Don't repeat `--download` end-to-end on every retry — it wastes time re-fetching
30+ artifacts just to retry the DB half. Split it:

```bash
ssh -p 234 hoanq333@61.28.228.19 \
"cd /opt/docker-compose && docker compose exec -T app sh -c \
'mkdir -p /tmp/ingest-<RUN_ID> && cd /tmp/ingest-<RUN_ID> && gh run download <RUN_ID> -R vngcloud/InferenceX && ls | wc -l'"
```

Confirm the artifact count matches what `gh run view` listed before moving on.

## Step 3 — ingest in CI mode against the local artifacts (retry this, not the download)

```bash
ssh -p 234 hoanq333@61.28.228.19 \
"cd /opt/docker-compose && docker compose exec -T \
-e INGEST_RUN_ID=<RUN_ID> -e INGEST_RUN_ATTEMPT=1 \
-e INGEST_ARTIFACTS_PATH=/tmp/ingest-<RUN_ID> -e INGEST_REPO=vngcloud/InferenceX \
-e UNMAPPED_ENTITIES_OUTPUT=/tmp/unmapped.json \
app bun run admin:db:ingest:ci --no-ssl"
```

If it fails with the TLS/ECONNRESET error above, that's the local-Postgres connection blip, not
a real problem with the data — just retry this exact command a few times. Do NOT switch to
`admin:db:ingest:run <id> vngcloud/InferenceX` (the one-shot download+ingest command) as your
retry loop; that re-downloads everything each time.

Note the positional-arg gotcha if you ever do use the one-shot form: it's
`admin:db:ingest:run <RUN_ID> <owner/repo>` — **positional**, not `--repo <owner/repo>`. Passing
`--repo` makes the script try to parse `--repo` itself as a run ID and fail immediately.

Watch the summary block at the end for `+N new, M duplicate` counts per data type (benchmark
results, run stats, eval results, eval samples, changelog entries). `0 new, N duplicate` for a
run you know was already ingested is expected, not an error.

## Step 4 — overrides, verify, invalidate

```bash
ssh -p 234 hoanq333@61.28.228.19 "cd /opt/docker-compose && docker compose exec -T app bun run admin:db:apply-overrides --yes --no-ssl"
ssh -p 234 hoanq333@61.28.228.19 "cd /opt/docker-compose && docker compose exec -T app bun run admin:db:verify --no-ssl"
ssh -p 234 hoanq333@61.28.228.19 "cd /opt/docker-compose && docker compose exec -T app bun run admin:cache:invalidate http://localhost:3000"
```

`apply-overrides` reporting everything as "not in DB, skipping" is normal — most registry entries
in `run-overrides.ts` target other runs. `db:verify`'s "Sample Rows" section is the fastest way to
eyeball that the new config/benchmark_results rows look right (correct model key, precision,
hardware, throughput numbers in a sane range).

## Cleanup

```bash
ssh -p 234 hoanq333@61.28.228.19 "cd /opt/docker-compose && docker compose exec -T app rm -rf /tmp/ingest-<RUN_ID> /tmp/unmapped.json"
```

## Don't forget

- If Step 1 required a code change, that same PR/commit should have updated
`packages/app/src/lib/api-route-catalog.ts`'s digest for `models.ts` (there's a vitest guard
that fails the build otherwise — `bun run test:unit` will tell you which digest to recompute:
`python3 -c "import hashlib; print(hashlib.sha256(open('<file>','rb').read()).hexdigest())"`).
- If the model/GPU should be selectable in the dashboard UI (not just stored), that's a
**separate, optional** follow-up: `Model`/GPU registry entries in
`packages/app/src/lib/data-mappings.ts`, `compare-slug.ts`, `compare-ssr.ts` — see
`docs/adding-entities.md`. Ask the user whether they want that now or the DB write is enough
for this pass.
113 changes: 113 additions & 0 deletions .claude/skills/review-zh-copy/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
---
name: review-zh-copy
description: Use when reviewing PRs or diffs that add or modify user-visible Simplified Chinese in InferenceX, including refactors and files whose names do not contain zh.
---

# Review Simplified Chinese copy

## Operating mode: advisory

Every finding produced by this skill is non-blocking. Do not label a Chinese-copy finding
`BLOCKING`, submit a request-changes review for it, or otherwise hold another contributor's merge.
Do not mention `@edwingao28` for a clean review, routine coverage, or an ordinary wording or
naturalness suggestion. Report an ordinary finding without a CC. Mention `@edwingao28` only for a
high-confidence semantic or factual error, changed attribution or speaker voice, or high-impact
ambiguity that cannot be resolved from the source and context. Label that finding
`Needs Chinese maintainer confirmation` and ask for review. It remains a suggestion while the
Chinese maintainer decides whether any follow-up is needed.

The Chinese maintainer makes the final wording decision and manually reviews every changed
Chinese passage.

## Editorial source of truth

Read [docs/chinese-copy.md](../../../docs/chinese-copy.md) completely before reviewing. Apply its
audience, surface-specific register, context-aware terminology, rewrite method, and checklist.

Semantic fidelity and natural Chinese are independent gates. Every changed passage must pass
both:

- **Fidelity:** facts, scope, modality, metrics, numbers, links, product names, and attribution
retain the English source's meaning.
- **Naturalness:** the result reads as original Chinese technical writing in the register of its
surface, without preserving English clause order or noun stacking.

A fluent mistranslation fails fidelity. An accurate sentence shaped like English fails
naturalness.

## Find the complete review scope

Review every added or modified user-visible Chinese passage in the complete diff against its
actual base. Do not infer scope from filenames. Chinese may appear in:

- `zh:` dictionaries inside otherwise English TypeScript or TSX files;
- locale-aware ternaries and registry labels;
- `/zh` routes, Chinese MDX, JSON, metadata, schema.org content, alt text, and captions;
- tooltips, modals, controls, option labels, empty/loading/error states, and feature-gated UI.

Include the full UI element or paragraph, not only the changed word or source line. When an
English/Chinese dictionary entry changes, inspect both siblings even if only one side is in the
diff. Do not report awkward pre-existing Chinese that the diff did not touch; record it separately
if it matters to a later rollout.

Exclude identifiers, test data that is not rendered, DB-stored benchmark content, logs, and code
syntax unless the changed text is presented to a user.

## Build context before judging

For each passage, collect:

1. the complete English source;
2. the route, component, and UI surface;
3. the surrounding heading, control, paragraph, or attributed quotation;
4. the intended meaning in plain language;
5. facts, qualifications, modality, metrics, links, names, and attribution that cannot change;
6. rendered desktop and mobile context when width, hierarchy, or interaction affects wording.

If no English source exists, say so. Infer intent from adjacent UI and product behavior, and lower
confidence rather than inventing a source claim.

## Review workflow

For every changed passage:

1. State the source intent without copying the English sentence structure.
2. Evaluate fidelity. Reject additions, omissions, changed scope, stronger certainty, altered
metric definitions, or a changed speaker voice.
3. Hide the old Chinese and draft from the stated intent.
4. Evaluate naturalness without looking at the English. Check information order, sentence
structure, register, and established Chinese ML infrastructure usage.
5. Compare the proposed rewrite with the source again.
6. Check the complete rendered element or paragraph. A locally natural word can still be wrong in
its button, tooltip, metadata, marketing, technical-prose, or quotation context.

Do not use fixed substitutions for contextual questions. In particular:

- sentence length alone is not evidence of translationese;
- technical English is not wrong merely because a Chinese equivalent exists;
- one concept may need different wording in a UI action, prose, a unit, or an attributed quote;
- established English technical terms and phrases that Chinese ML infrastructure engineers
normally use in English should remain English in first-party UI and technical prose; judge this
from real industry usage and the surface, not from a closed list. `warmup`, `seed`, and `offload`
are examples, not the whole category. Chinese-first explanations such as `预热(warmup)` remain
valid for a broader audience, and attributed quotations preserve the speaker's wording;
- `您` is normally omitted in controls and tooltips but may be intentional in a respectful CTA;
- #819 and other bulk-rewrite outputs are not automatic editorial ground truth; only their
separately verified mechanical cases may seed deterministic CI fixtures.

## Report high-signal findings

For each finding provide:

- `file:line` and route or surface;
- the exact English source and a one-sentence statement of its intent;
- which gate failed: fidelity, naturalness, or both;
- the specific defect and its user impact;
- one complete suggested replacement, not an isolated word swap;
- confidence and advisory severity.

Do not report only “this reads awkwardly.” Stay silent when the existing wording is accurate,
natural, and appropriate for its surface, even if another wording is also possible.

End with coverage: list the changed Chinese surfaces reviewed and any surface that could not be
rendered or whose English source could not be identified.
73 changes: 61 additions & 12 deletions .claude/skills/write-inferencex-blog/iso_interactivity.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
packages/app/src/components/inference/hooks/useInterpolatedTrendData.ts.

Pipeline:
1. Build the upper-left Pareto frontier on (interactivity, throughput).
1. Build the upper-left Pareto frontier on (interactivity, throughput). For a
proportional metric, use the total/output/input throughput it scales.
2. Sort the frontier by interactivity ascending.
3. Build monotone cubic Hermite slopes (Steffen 1990 method, same as
d3.curveMonotoneX) over the frontier knots for the metric of interest.
Expand All @@ -18,12 +19,18 @@
6. Clamp the interpolated metric value to [min(ys), max(ys)] of the
frontier to prevent cubic-spline overshoots above/below the data.

Reciprocal metrics ($/M tok, J/token) are a special case: they are a per-chip
constant divided by a throughput, so they are NOT splined independently. Two
independent splines need not preserve `metric * throughput = constant` between
Reciprocal metrics ($/M tok in blog tables, J/token) are a special case: they are
a per-chip constant divided by a throughput, so they are NOT splined independently.
Two independent splines need not preserve `metric * throughput = constant` between
measured knots. Pass `reciprocal_of='throughput'` (or the matching output/input
throughput key) to spline that throughput and re-derive the metric, which is what
the dashboard does. See docs/tco-calculator.md for a reproducible measurement.
throughput key) to spline that throughput and re-derive the metric. The live
inference charts also expose tokens/$ and normalized token revenue as separate
metrics; both are directly proportional to throughput. OpenRouter-priced revenue
is proportional only when the input/output mix stays constant; otherwise spline
the already-priced metric directly. Pass
`proportional_to='throughput'` (or the matching output/input throughput key) so
they use the same Pareto knots and spline as that throughput before applying the
recovered multiplier. See docs/tco-calculator.md for a reproducible measurement.

Usage as a module:
from iso_interactivity import interpolate_metric, pareto_front_upper_left
Expand Down Expand Up @@ -182,38 +189,65 @@ def recover_reciprocal_numerator(
return numerator


def recover_proportional_multiplier(
values: list[Optional[float]], throughputs: list[Optional[float]]
) -> Optional[float]:
"""Recover the constant `k` of a metric defined as `throughput * k`."""
relative_tolerance = 1e-3
multiplier: Optional[float] = None
for value, throughput in zip(values, throughputs):
if value is None or throughput is None:
continue
if not value > 0 or not throughput > 0:
continue
candidate = value / throughput
if multiplier is None:
multiplier = candidate
elif abs(candidate - multiplier) > abs(multiplier) * relative_tolerance:
return None
return multiplier


def interpolate_metric(
points: list[dict],
target_iv: float,
metric_key: str = 'throughput',
iv_key: str = 'interactivity',
tput_key: str = 'throughput',
reciprocal_of: Optional[str] = None,
proportional_to: Optional[str] = None,
) -> Optional[float]:
"""Interpolate `metric_key` at `target_iv` using the chart's algorithm.

Returns None if target_iv is outside the frontier's [min_iv, max_iv] range —
the chart code does not extrapolate. Blog tables should render this as
`_unreachable_` in that row.

The Pareto frontier is ALWAYS built on (interactivity, throughput) regardless
of which metric you're interpolating — this matches the chart, where the
frontier is defined by the upper-left throughput envelope and other metrics
(cost, energy, TPOT, ...) are derived values at frontier points.
The Pareto frontier is built on (interactivity, throughput). For tokens/$ or
normalized token revenue (and revenue with a constant token mix),
`proportional_to` names the total/output/input
throughput it scales; that throughput also supplies the frontier knots so
both curves stay aligned.

`reciprocal_of` names the throughput key a metric divides, for metrics of the
form `constant / throughput` ($/M tok, J/token). Set it for those metrics:
that throughput is splined and the metric re-derived, matching the dashboard.
Leave it None for metrics splined directly (throughput itself, tok/s/MW,
latency, and measured energy — whose numerator varies per point).

`proportional_to` names the throughput key for metrics of the form
`throughput * constant` (tokens/$, normalized token revenue, and revenue
with a constant input/output mix). That
throughput is splined and the recovered multiplier applied, matching the
dashboard.
"""
if not points:
return None

frontier = pareto_front_upper_left(
points,
get_x=lambda p: p[iv_key],
get_y=lambda p: p[tput_key],
get_y=lambda p: p[proportional_to or tput_key],
)
if not frontier:
return None
Expand Down Expand Up @@ -241,6 +275,19 @@ def interpolate_metric(
return None
ys.append(value)

if proportional_to is not None:
tputs: list[float] = []
for point in sorted_front:
throughput = point.get(proportional_to)
if throughput is None:
return None
tputs.append(throughput)
multiplier = recover_proportional_multiplier(ys, tputs)
if multiplier is not None:
tput_slopes = monotone_slopes(xs, tputs)
tput = hermite_interpolate(xs, tputs, tput_slopes, target_iv)
return max(0.0, tput) * multiplier

if reciprocal_of is not None:
tputs: list[float] = []
for point in sorted_front:
Expand Down Expand Up @@ -276,7 +323,8 @@ def interpolate_metric(

def _cli() -> None:
"""Stdin: {"points": [...], "target_iv": N, "metric_key": "...",
"reciprocal_of": "throughput" for $/M tok and J/token}
"reciprocal_of": "throughput" for $/M tok and J/token,
"proportional_to": "throughput" for tokens/$ or revenue with a constant mix}
Stdout: {"value": N or null}"""
req = json.loads(sys.stdin.read())
value = interpolate_metric(
Expand All @@ -286,6 +334,7 @@ def _cli() -> None:
iv_key=req.get('iv_key', 'interactivity'),
tput_key=req.get('tput_key', 'throughput'),
reciprocal_of=req.get('reciprocal_of'),
proportional_to=req.get('proportional_to'),
)
json.dump({'value': value}, sys.stdout)
sys.stdout.write('\n')
Expand Down
Loading
Loading