Files
hanzo.ai/e2e/gates/revision.ts
zeekay 76cbcbc34e The Decision Suite leads /kai and /benchmarks, and every Kai figure there is read from the research API when the page opens
Sixteen tasks fixed on 2026-10-15, Kai beside Jev on each: the eleven
harness suites Kai leads, choices of 16 and 77 options, the same request
three times, false alarms on real benign prompts, and cost and deployment.
Each row names the research runs it reads by id, its public dataset, and the
hanzoai/benchmarks folder that re-runs it; one line under the board links
decision/SUITE.md. A row whose runs are not yet public prints "pending" and
holds the count back, so "16 of 16" is stated only once every row holds
both figures. Under the title, the owner's note: the frozen 12-suite
harness, including the row Jev leads, is below, and that board now prints
all twelve suites.

lib/api/research reads GET /v1/research/runs?org=hanzo through lib/api/read;
useKai derives the boards from it and every section draws reading, the
figures, or unreachable, with no snapshot standing in. The cost row is
GET /v1/models. /kai leads under its hero with the suite's own rows as
headlines. The gates serve the runs and an invented model list, read the
pending, loading and unreachable states, and hold the export to carrying no
Kai figure.
2026-10-15 11:35:45 -07:00

30 lines
1.1 KiB
TypeScript

import { RUNS, derive, type Run } from '../../lib/kai'
/**
* The page's read of Kai's runs as a route matcher, one object so a route can be
* removed by it: `GET /v1/research/runs?org=hanzo` on whichever origin the page
* reads it from (lib/api/research: api.hanzo.ai on the site, the page's own on a
* local server), never a read narrowed to one benchmark.
*/
export const api = (u: URL) => u.pathname === new URL(RUNS).pathname && u.search === new URL(RUNS).search
/** The stage the later revision is posted as. */
export const STAGE = 'z9'
/** A later revision than the newest in `runs`: each of its Kai runs again, one point lower on AG News. */
export const newer = (runs: Run[]): Run[] => {
const top = derive(runs).run
const later = runs
.filter((r) => r.system === 'kai' && r.version === top)
.map((r) => ({
...r,
id: `${r.id}-${STAGE}`,
version: `${STAGE}@${'0'.repeat(64)}`,
ended: '2999-01-01T00:00:00Z',
measures: (r.measures ?? []).map((m) =>
r.benchmark === 'jev.ag_news' && m.metric === 'accuracy' ? { ...m, value: m.value - 0.01 } : m,
),
}))
return [...runs, ...later]
}