Implement AXIS parity UI and execution baseline
This commit is contained in:
27
web/app/browser-compatibility.mjs
Normal file
27
web/app/browser-compatibility.mjs
Normal file
@@ -0,0 +1,27 @@
|
||||
export const BROWSER_COMPATIBILITY_SCHEMA = "browser-simulation-compatibility.v1";
|
||||
|
||||
export async function runCompatibilityMatrix(client, { cycles = 8, chunk = 2 } = {}) {
|
||||
if (!client || typeof client.hello !== "function" || typeof client.attach !== "function" || typeof client.stepMany !== "function") throw new Error("browser_client_invalid");
|
||||
if (!Number.isSafeInteger(cycles) || cycles < 0 || cycles > 1000000 || !Number.isSafeInteger(chunk) || chunk < 1) throw new Error("browser_matrix_limit");
|
||||
const capabilities = await client.hello();
|
||||
const ready = await client.attach("compat-attach");
|
||||
const stepped = await client.stepMany(cycles, { chunk, operationPrefix: "compat-step" });
|
||||
const snapshot = await client.snapshot("compat-snapshot");
|
||||
return {
|
||||
schema: BROWSER_COMPATIBILITY_SCHEMA,
|
||||
status: "verified",
|
||||
context_id: client.contextId,
|
||||
session_id: client.sessionId,
|
||||
capabilities: capabilities.kind,
|
||||
session_ready: ready.kind,
|
||||
cycles,
|
||||
chunks: stepped.chunks,
|
||||
snapshot_kind: snapshot.kind,
|
||||
logical_tick: snapshot.simulation_tick ?? stepped.last?.simulation_tick ?? 0,
|
||||
};
|
||||
}
|
||||
|
||||
export function performanceBudget({ cycles, chunks, maxCycles = 1000000, maxChunks = 1000000 } = {}) {
|
||||
if (!Number.isSafeInteger(cycles) || cycles < 0 || cycles > maxCycles || !Number.isSafeInteger(chunks) || chunks < 0 || chunks > maxChunks) return { status: "blocked", code: "browser_performance_budget" };
|
||||
return { status: "verified", cycles, chunks, logical_only: true };
|
||||
}
|
||||
Reference in New Issue
Block a user