Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions packages/constants/src/framework-aliases.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,30 @@ import { describe, expect, it } from 'vitest';

import {
FRAMEWORK_ALIASES,
FRAMEWORK_LABELS,
resolveFrameworkAlias,
resolveFrameworkAliasesInString,
} from './framework-aliases';

describe('FRAMEWORK_LABELS', () => {
it('labels the canonical mooncake-atom framework "Mooncake ATOM¹"', () => {
expect(FRAMEWORK_LABELS['mooncake-atom']).toBe('Mooncake ATOM¹');
});

it('labels the atom-disagg alias with its canonical label', () => {
expect(FRAMEWORK_LABELS['atom-disagg']).toBe('Mooncake ATOM¹');
});
});

describe('FRAMEWORK_ALIASES', () => {
it('maps sglang-disagg to mori-sglang with disagg=true', () => {
expect(FRAMEWORK_ALIASES['sglang-disagg']).toEqual({ canonical: 'mori-sglang', disagg: true });
});

it('maps atom-disagg to mooncake-atom with disagg=true', () => {
expect(FRAMEWORK_ALIASES['atom-disagg']).toEqual({ canonical: 'mooncake-atom', disagg: true });
});

it('maps trtllm to trt', () => {
expect(FRAMEWORK_ALIASES['trtllm']).toEqual({ canonical: 'trt' });
});
Expand All @@ -29,6 +44,10 @@ describe('resolveFrameworkAlias', () => {
expect(resolveFrameworkAlias('dynamo-trtllm')).toBe('dynamo-trt');
});

it('resolves atom-disagg to mooncake-atom', () => {
expect(resolveFrameworkAlias('atom-disagg')).toBe('mooncake-atom');
});

it('is case-insensitive', () => {
expect(resolveFrameworkAlias('SGLANG-DISAGG')).toBe('mori-sglang');
expect(resolveFrameworkAlias('Dynamo-TRTllm')).toBe('dynamo-trt');
Expand All @@ -54,6 +73,12 @@ describe('resolveFrameworkAliasesInString', () => {
);
});

it('replaces atom-disagg in a config key', () => {
expect(resolveFrameworkAliasesInString('dsv4-fp4-mi355x-atom-disagg')).toBe(
'dsv4-fp4-mi355x-mooncake-atom',
);
});

it('returns string unchanged when no aliases match', () => {
expect(resolveFrameworkAliasesInString('dsr1-fp8-h200-trt')).toBe('dsr1-fp8-h200-trt');
});
Expand Down
2 changes: 2 additions & 0 deletions packages/constants/src/framework-aliases.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ export const FW_REGISTRY: Record<string, FwEntry> = {
'dynamo-sglang': { label: 'Dynamo SGLang' },
'dynamo-trt': { label: 'Dynamo TRT' },
'dynamo-vllm': { label: 'Dynamo vLLM' },
'mooncake-atom': { label: 'Mooncake ATOM¹' },
'mori-sglang': { label: 'MoRI SGLang' },
sglang: { label: 'SGLang' },
trt: { label: 'TRT' },
Expand All @@ -26,6 +27,7 @@ export const SPEC_METHOD_KEYS = new Set(['mtp', 'none']);
* Single source of truth — consumed by ETL, frontend, and changelog processing.
*/
export const FRAMEWORK_ALIASES: Record<string, { canonical: string; disagg?: boolean }> = {
'atom-disagg': { canonical: 'mooncake-atom', disagg: true },

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mooncake atom skips disagg forcing

Medium Severity

This change introduces canonical mooncake-atom for disaggregated Mooncake ATOM runs, but ETL normalizeFramework only forces disagg for dynamo-* and mori-* canonical names. Rows ingested with framework already set to mooncake-atom and disagg false can keep disagg: false, unlike other disagg-only frameworks.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 35789e4. Configure here.

'sglang-disagg': { canonical: 'mori-sglang', disagg: true },
trtllm: { canonical: 'trt' },
'dynamo-trtllm': { canonical: 'dynamo-trt' },
Expand Down
11 changes: 11 additions & 0 deletions packages/db/src/etl/normalizers.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,17 @@ describe('normalizeFramework', () => {
});
});

it('normalizes atom-disagg to mooncake-atom + disagg=true', () => {
expect(normalizeFramework('atom-disagg', false)).toEqual({
framework: 'mooncake-atom',
disagg: true,
});
expect(normalizeFramework('ATOM-DISAGG', false)).toEqual({
framework: 'mooncake-atom',
disagg: true,
});
});

it('renames dynamo-trtllm to dynamo-trt and forces disagg=true (framework implies it)', () => {
expect(normalizeFramework('dynamo-trtllm', false)).toEqual({
framework: 'dynamo-trt',
Expand Down
Loading