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
2 changes: 1 addition & 1 deletion src/ml/imf/registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import { load as loadYaml } from "js-yaml"

export const DEFAULT_INDEX_URL =
"https://github.com/interscript/interscript-models/releases/download/index-v10/models-index.yaml"
"https://github.com/interscript/interscript-models/releases/download/index-v12/models-index.yaml"

export interface Part {
url: string
Expand Down
4 changes: 2 additions & 2 deletions test/client-work.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -145,9 +145,9 @@ describe("CORS asset rewrite (13)", () => {
it("rewrites canonical interscript-models release URLs too", () => {
expect(
corsAssetUrl(
"https://github.com/interscript/interscript-models/releases/download/index-v10/models-index.yaml",
"https://github.com/interscript/interscript-models/releases/download/index-v12/models-index.yaml",
),
).toBe("https://api.interscript.org/v1/assets/index-v10/models-index.yaml")
).toBe("https://api.interscript.org/v1/assets/index-v12/models-index.yaml")
})
it("leaves other hosts and schemes untouched", () => {
expect(corsAssetUrl("https://example.com/x.zip")).toBe("https://example.com/x.zip")
Expand Down
45 changes: 45 additions & 0 deletions test/conformance.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/**
* Frozen conformance fixtures (interscript-models/conformance/) — the
* TypeScript runtime must reproduce the vectors byte-exactly under the
* declared decode mode, or the change does not merge.
*
* Gated on env: SECRYST_E2E_ZIP (the artifact) + CONFORMANCE_VECTORS
* (the fixture file), so CI runs without downloads.
*/

import { readFileSync } from "node:fs"
import { describe, expect, it } from "vitest"
import { IMFModel } from "../src/ml/imf/index.js"

const e2eZip = process.env["SECRYST_E2E_ZIP"]
const conformanceVectors = process.env["CONFORMANCE_VECTORS"]

describe("frozen conformance fixtures", () => {
it.skipIf(!e2eZip || !conformanceVectors)(
"reproduces the vectors byte-exactly (single-row-greedy)",
async () => {
const vectors = JSON.parse(
readFileSync(conformanceVectors!, "utf-8"),
) as {
model: string
decode: { mode: string }
vectors: { src: string; out: string }[]
}
expect(vectors.decode.mode).toBe("single-row-greedy")
const model = await IMFModel.load(e2eZip!)
const failures: string[] = []
for (const v of vectors.vectors) {
const got = await model.translate(v.src, 256)
if (got !== v.out) {
failures.push(`${v.src} -> ${got} (expected ${v.out})`)
}
}
await model.dispose()
expect(
failures,
`${vectors.model}: ${failures.length}/${vectors.vectors.length} mismatched`,
).toEqual([])
},
600_000,
)
})
Loading