diff --git a/experiments/analysis-efficiency/mcp-input-catalog.mjs b/experiments/analysis-efficiency/mcp-input-catalog.mjs index c6b3e98e13..62c619c7e1 100644 --- a/experiments/analysis-efficiency/mcp-input-catalog.mjs +++ b/experiments/analysis-efficiency/mcp-input-catalog.mjs @@ -7,6 +7,7 @@ import { parseArgs } from "node:util"; import { Client } from "@modelcontextprotocol/client"; import { StdioClientTransport } from "@modelcontextprotocol/client/stdio"; import { Ajv2020 } from "ajv/dist/2020.js"; +import { sampleRetainedHeap } from "./mcp-retained-heap.mjs"; import { captureRuntimeBinding, assertRuntimeBinding, @@ -24,10 +25,12 @@ const { values } = parseArgs({ "cache-root": { type: "string" }, bindings: { type: "string" }, role: { type: "string" }, + "diagnostic-heap": { type: "boolean", default: false }, }, }); assert.ok(["analysis", "discovery"].includes(values.phase)); assert.ok(["cold", "warm"].includes(values.cache)); +assert.ok(!values["diagnostic-heap"] || values.phase === "analysis"); for (const key of values.phase === "analysis" ? ["runtime", "artifact", "oracle", "output"] : ["runtime", "output"]) @@ -60,7 +63,11 @@ if (values.bindings !== undefined) { const inputBytes = await readFile(values.bindings); measurementInputsSha256 = hash(inputBytes); const inputs = JSON.parse(inputBytes.toString("utf8")); - for (const name of ["mcp-input-catalog.mjs", "managed-cli-runtime.mjs"]) { + for (const name of [ + "mcp-input-catalog.mjs", + "managed-cli-runtime.mjs", + "mcp-retained-heap.mjs", + ]) { producerSources[name] = hash( await readFile(new URL(name, import.meta.url)), ); @@ -87,7 +94,11 @@ const environment = { }; const transport = new StdioClientTransport({ command: process.execPath, - args: [join(values.runtime, "scripts/rea.mjs"), "mcp"], + args: [ + ...(values["diagnostic-heap"] ? ["--inspect=127.0.0.1:0"] : []), + join(values.runtime, "scripts/rea.mjs"), + "mcp", + ], cwd: values.output, env: environment, stderr: "pipe", @@ -118,8 +129,13 @@ const report = { }; const transcript = []; let stderr = ""; +let inspectorEndpoint; transport.stderr?.on("data", (value) => { stderr += value; + if (values["diagnostic-heap"] && inspectorEndpoint === undefined) + inspectorEndpoint = stderr.match( + /Debugger listening on (ws:\/\/127\.0\.0\.1:\d+\/[^\s]+)/u, + )?.[1]; }); const began = performance.now(); try { @@ -255,6 +271,15 @@ try { ); report.status = "passed"; } + if (values["diagnostic-heap"]) { + report.status = "incomplete"; + assert.ok(inspectorEndpoint, "Missing explicitly launched inspector"); + report.diagnostic_heap = await sampleRetainedHeap( + inspectorEndpoint, + transport.pid, + ); + report.status = "passed"; + } } finally { await client.close(); await transport.close(); diff --git a/experiments/analysis-efficiency/mcp-integer-allocation.json b/experiments/analysis-efficiency/mcp-integer-allocation.json new file mode 100644 index 0000000000..1b5215d676 --- /dev/null +++ b/experiments/analysis-efficiency/mcp-integer-allocation.json @@ -0,0 +1,7749 @@ +{ + "status": "passed", + "tokenizer": "tiktoken==0.14.0/cl100k_base; estimates, not model usage", + "aggregation_sources_sha256": { + "mcp-startup-costs.py": "7752374b610c67449513146614bbc0a20dfcbefcafee8339e8424e731213113e", + "mcp-input-catalog-costs.py": "ad32e6726f892be16cc7d352118f7e9f9f0a85649d9edd1049b5d73483df8078" + }, + "context_scope": "Question, explicit recipe, server instructions, one complete name/description/input-schema directory, every tool argument and text reply, plus prompt directory for discovery. This projection assumes the client retains a single unchanged directory. Raw catalog result costs include every observed tools/list result separately, with output schemas and without JSON-RPC envelopes. SDK initialization/framing, reasoning and actual model usage are unmeasured. The analysis task includes retained-read, rejection, export/oracle and post-materialization directory checks.", + "cache_scope": "Cold disables server Node compile cache. Warm enables a prepopulated role/profile-specific cache after one complete analysis priming run. Fresh server/client processes and HOME each trial. Driver compile cache disabled in both cohorts. Cache hit rate and OS page cache are unmeasured; source/runtime audits warm compiled-file pages before startup.", + "resource_scope": "Whole SDK driver, resource observer and owned REA process family. Includes before/after source-and-all-compiled-JS/JSON binding, SDK schema checks, extra validation calls, bundle export and independent oracle checking. Kernel cgroup peak includes file cache. Build/download/oracle preparation and cache priming excluded. Retained V8 heap and forced-GC diagnostics were not separately measured.", + "measurement_inputs": { + "baseline_revision": "4a4bbab3c337701febeb6b532ace49041c4876e0", + "candidate_revision": "461f342c71a72ef2be60912391df2393aa4e2ea3", + "runtime_bindings": { + "baseline": { + "binding_version": 2, + "root": "/home/yann/yann/rea-4360-main-final-control-20261022", + "node": "v24.18.0", + "git_revision": "4a4bbab3c337701febeb6b532ace49041c4876e0", + "source_diff_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "untracked_source_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", + "compiled_runtime_sha256": "24d4e121af0d8d41a15cd57aed6e9677ad2a57ea874c861c59ab160a02e24306", + "compiled_runtime_files": 1990, + "compiled_runtime_bytes": 38553674 + }, + "candidate": { + "binding_version": 2, + "root": "/home/yann/yann/rea-perf-mcp-integers-20261022", + "node": "v24.18.0", + "git_revision": "461f342c71a72ef2be60912391df2393aa4e2ea3", + "source_diff_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "untracked_source_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", + "compiled_runtime_sha256": "aac617cad522ed6a7480e5527e9f729a026b93d133928e7631ef7434eb32b967", + "compiled_runtime_files": 1990, + "compiled_runtime_bytes": 38519635 + } + }, + "artifacts": { + "ripgrep": { + "path": "/tmp/rea-perf-rust-20261021/ripgrep", + "sha256": "78387bbe12b2110df8d2ce364390a00c190f4543a2f40b8279e49f6c5c85af9c", + "bytes": 3416168, + "oracle": "/tmp/rea-perf-mcp-catalog-20261021/ripgrep-oracle.json", + "oracle_sha256": "2b90d656b671f43d042a9efbc33f155e47ba8860a6c76a6b33bb60f54d2e2f8e" + }, + "zellij": { + "path": "/tmp/rea-perf-rust-20261021/zellij", + "sha256": "9a86e9ca47902a869fdf1886f4cf17714f4fa5655427128beadff498cfb392db", + "bytes": 17151864, + "oracle": "/tmp/rea-perf-mcp-catalog-20261021/zellij-oracle.json", + "oracle_sha256": "ceffe670551105d159004591a8e060588a022b19231e43d9de6a9a2e6f514783" + } + }, + "cases": [ + { + "case": "pair-cold-default-discovery-directory-1-baseline", + "cache": "cold", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 1, + "role": "baseline" + }, + { + "case": "pair-cold-default-discovery-directory-1-candidate", + "cache": "cold", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 1, + "role": "candidate" + }, + { + "case": "pair-cold-default-discovery-directory-2-candidate", + "cache": "cold", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 2, + "role": "candidate" + }, + { + "case": "pair-cold-default-discovery-directory-2-baseline", + "cache": "cold", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 2, + "role": "baseline" + }, + { + "case": "pair-cold-default-discovery-directory-3-baseline", + "cache": "cold", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 3, + "role": "baseline" + }, + { + "case": "pair-cold-default-discovery-directory-3-candidate", + "cache": "cold", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 3, + "role": "candidate" + }, + { + "case": "pair-cold-default-analysis-ripgrep-1-baseline", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 1, + "role": "baseline" + }, + { + "case": "pair-cold-default-analysis-ripgrep-1-candidate", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 1, + "role": "candidate" + }, + { + "case": "pair-cold-default-analysis-ripgrep-2-candidate", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 2, + "role": "candidate" + }, + { + "case": "pair-cold-default-analysis-ripgrep-2-baseline", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 2, + "role": "baseline" + }, + { + "case": "pair-cold-default-analysis-ripgrep-3-baseline", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 3, + "role": "baseline" + }, + { + "case": "pair-cold-default-analysis-ripgrep-3-candidate", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 3, + "role": "candidate" + }, + { + "case": "pair-cold-default-analysis-zellij-1-baseline", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "baseline" + }, + { + "case": "pair-cold-default-analysis-zellij-1-candidate", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "candidate" + }, + { + "case": "pair-cold-default-analysis-zellij-2-candidate", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "candidate" + }, + { + "case": "pair-cold-default-analysis-zellij-2-baseline", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "baseline" + }, + { + "case": "pair-cold-default-analysis-zellij-3-baseline", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "baseline" + }, + { + "case": "pair-cold-default-analysis-zellij-3-candidate", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "candidate" + }, + { + "case": "pair-cold-full-discovery-directory-1-baseline", + "cache": "cold", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 1, + "role": "baseline" + }, + { + "case": "pair-cold-full-discovery-directory-1-candidate", + "cache": "cold", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 1, + "role": "candidate" + }, + { + "case": "pair-cold-full-discovery-directory-2-candidate", + "cache": "cold", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 2, + "role": "candidate" + }, + { + "case": "pair-cold-full-discovery-directory-2-baseline", + "cache": "cold", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 2, + "role": "baseline" + }, + { + "case": "pair-cold-full-discovery-directory-3-baseline", + "cache": "cold", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 3, + "role": "baseline" + }, + { + "case": "pair-cold-full-discovery-directory-3-candidate", + "cache": "cold", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 3, + "role": "candidate" + }, + { + "case": "pair-cold-full-analysis-ripgrep-1-baseline", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 1, + "role": "baseline" + }, + { + "case": "pair-cold-full-analysis-ripgrep-1-candidate", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 1, + "role": "candidate" + }, + { + "case": "pair-cold-full-analysis-ripgrep-2-candidate", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 2, + "role": "candidate" + }, + { + "case": "pair-cold-full-analysis-ripgrep-2-baseline", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 2, + "role": "baseline" + }, + { + "case": "pair-cold-full-analysis-ripgrep-3-baseline", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 3, + "role": "baseline" + }, + { + "case": "pair-cold-full-analysis-ripgrep-3-candidate", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 3, + "role": "candidate" + }, + { + "case": "pair-cold-full-analysis-zellij-1-baseline", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "baseline" + }, + { + "case": "pair-cold-full-analysis-zellij-1-candidate", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "candidate" + }, + { + "case": "pair-cold-full-analysis-zellij-2-candidate", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "candidate" + }, + { + "case": "pair-cold-full-analysis-zellij-2-baseline", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "baseline" + }, + { + "case": "pair-cold-full-analysis-zellij-3-baseline", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "baseline" + }, + { + "case": "pair-cold-full-analysis-zellij-3-candidate", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "candidate" + }, + { + "case": "pair-warm-default-discovery-directory-1-baseline", + "cache": "warm", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 1, + "role": "baseline" + }, + { + "case": "pair-warm-default-discovery-directory-1-candidate", + "cache": "warm", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 1, + "role": "candidate" + }, + { + "case": "pair-warm-default-discovery-directory-2-candidate", + "cache": "warm", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 2, + "role": "candidate" + }, + { + "case": "pair-warm-default-discovery-directory-2-baseline", + "cache": "warm", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 2, + "role": "baseline" + }, + { + "case": "pair-warm-default-discovery-directory-3-baseline", + "cache": "warm", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 3, + "role": "baseline" + }, + { + "case": "pair-warm-default-discovery-directory-3-candidate", + "cache": "warm", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 3, + "role": "candidate" + }, + { + "case": "pair-warm-default-analysis-ripgrep-1-baseline", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 1, + "role": "baseline" + }, + { + "case": "pair-warm-default-analysis-ripgrep-1-candidate", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 1, + "role": "candidate" + }, + { + "case": "pair-warm-default-analysis-ripgrep-2-candidate", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 2, + "role": "candidate" + }, + { + "case": "pair-warm-default-analysis-ripgrep-2-baseline", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 2, + "role": "baseline" + }, + { + "case": "pair-warm-default-analysis-ripgrep-3-baseline", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 3, + "role": "baseline" + }, + { + "case": "pair-warm-default-analysis-ripgrep-3-candidate", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 3, + "role": "candidate" + }, + { + "case": "pair-warm-default-analysis-zellij-1-baseline", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "baseline" + }, + { + "case": "pair-warm-default-analysis-zellij-1-candidate", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "candidate" + }, + { + "case": "pair-warm-default-analysis-zellij-2-candidate", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "candidate" + }, + { + "case": "pair-warm-default-analysis-zellij-2-baseline", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "baseline" + }, + { + "case": "pair-warm-default-analysis-zellij-3-baseline", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "baseline" + }, + { + "case": "pair-warm-default-analysis-zellij-3-candidate", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "candidate" + }, + { + "case": "pair-warm-full-discovery-directory-1-baseline", + "cache": "warm", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 1, + "role": "baseline" + }, + { + "case": "pair-warm-full-discovery-directory-1-candidate", + "cache": "warm", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 1, + "role": "candidate" + }, + { + "case": "pair-warm-full-discovery-directory-2-candidate", + "cache": "warm", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 2, + "role": "candidate" + }, + { + "case": "pair-warm-full-discovery-directory-2-baseline", + "cache": "warm", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 2, + "role": "baseline" + }, + { + "case": "pair-warm-full-discovery-directory-3-baseline", + "cache": "warm", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 3, + "role": "baseline" + }, + { + "case": "pair-warm-full-discovery-directory-3-candidate", + "cache": "warm", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 3, + "role": "candidate" + }, + { + "case": "pair-warm-full-analysis-ripgrep-1-baseline", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 1, + "role": "baseline" + }, + { + "case": "pair-warm-full-analysis-ripgrep-1-candidate", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 1, + "role": "candidate" + }, + { + "case": "pair-warm-full-analysis-ripgrep-2-candidate", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 2, + "role": "candidate" + }, + { + "case": "pair-warm-full-analysis-ripgrep-2-baseline", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 2, + "role": "baseline" + }, + { + "case": "pair-warm-full-analysis-ripgrep-3-baseline", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 3, + "role": "baseline" + }, + { + "case": "pair-warm-full-analysis-ripgrep-3-candidate", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 3, + "role": "candidate" + }, + { + "case": "pair-warm-full-analysis-zellij-1-baseline", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "baseline" + }, + { + "case": "pair-warm-full-analysis-zellij-1-candidate", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "candidate" + }, + { + "case": "pair-warm-full-analysis-zellij-2-candidate", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "candidate" + }, + { + "case": "pair-warm-full-analysis-zellij-2-baseline", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "baseline" + }, + { + "case": "pair-warm-full-analysis-zellij-3-baseline", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "baseline" + }, + { + "case": "pair-warm-full-analysis-zellij-3-candidate", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "candidate" + } + ], + "diagnostic_cases": [ + { + "case": "heap-default-1-baseline", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "baseline", + "diagnostic_heap": true + }, + { + "case": "heap-default-1-candidate", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "candidate", + "diagnostic_heap": true + }, + { + "case": "heap-default-2-candidate", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "candidate", + "diagnostic_heap": true + }, + { + "case": "heap-default-2-baseline", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "baseline", + "diagnostic_heap": true + }, + { + "case": "heap-default-3-baseline", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "baseline", + "diagnostic_heap": true + }, + { + "case": "heap-default-3-candidate", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "candidate", + "diagnostic_heap": true + }, + { + "case": "heap-full-1-baseline", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "baseline", + "diagnostic_heap": true + }, + { + "case": "heap-full-1-candidate", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "candidate", + "diagnostic_heap": true + }, + { + "case": "heap-full-2-candidate", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "candidate", + "diagnostic_heap": true + }, + { + "case": "heap-full-2-baseline", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "baseline", + "diagnostic_heap": true + }, + { + "case": "heap-full-3-baseline", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "baseline", + "diagnostic_heap": true + }, + { + "case": "heap-full-3-candidate", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "candidate", + "diagnostic_heap": true + } + ], + "acquisition": [ + { + "package": "ripgrep-14.1.1-r0.apk", + "url": "https://dl-cdn.alpinelinux.org/alpine/v3.21/community/x86_64/ripgrep-14.1.1-r0.apk", + "package_sha256": "213dd0b047163f6627cc2fdd6fbfe205009476eb4fc48c352a3f5b9ab647f6d4", + "package_bytes": 1422830, + "member": "usr/bin/rg", + "bytes": 3416168, + "sha256": "78387bbe12b2110df8d2ce364390a00c190f4543a2f40b8279e49f6c5c85af9c", + "aports_revision": "4e899d119e4c983a938436d6f397a509521225d1" + }, + { + "package": "zellij-0.40.0-r0.apk", + "url": "https://dl-cdn.alpinelinux.org/alpine/v3.21/community/x86_64/zellij-0.40.0-r0.apk", + "package_sha256": "575075945415b221857563e19c5f4c661af9f98bbba54f0994c7385c0e432432", + "package_bytes": 6722129, + "member": "usr/bin/zellij", + "bytes": 17151864, + "sha256": "9a86e9ca47902a869fdf1886f4cf17714f4fa5655427128beadff498cfb392db", + "aports_revision": "3be26a3a26e76e1bf3eff784bffe3956d29d77a0" + } + ], + "independent_oracles": { + "ripgrep": { + "artifact_sha256": "78387bbe12b2110df8d2ce364390a00c190f4543a2f40b8279e49f6c5c85af9c", + "section_sha256": "02b3cb036955be58bf4bd51710fcdec96a1f1a771e1bb7d1397d604557c2a6a7", + "json_sha256": "ea478aa80f91aa8f5159aba648ddfdda642fa2c98759e54e65623a19065634be", + "serde_rows": [ + { + "index": 36, + "name": "serde", + "version": "1.0.210", + "kind": null + } + ] + }, + "zellij": { + "artifact_sha256": "9a86e9ca47902a869fdf1886f4cf17714f4fa5655427128beadff498cfb392db", + "section_sha256": "d0cabaf40a2875c519f68788547e484865463beeacf56bb01defa74253b4ba72", + "json_sha256": "9bcf8d694440a7e064189616aa40b69046e32ee1c70683ef2e0778150b9163ef", + "serde_rows": [ + { + "index": 294, + "name": "serde", + "version": "1.0.137", + "kind": null + } + ] + } + }, + "harness_sources_sha256": { + "mcp-input-catalog.mjs": "fa9c7a9819fb32eee41fbdc368c6808c1b4aab835cc468e060a4587052a1c015", + "managed-cli-runtime.mjs": "48c2a5fd617dccc10b8d36b01bc5c3d149758e1225008c931759e17ccbe83db4", + "mcp-retained-heap.mjs": "78b04e08a33c140da6fc7ab42dffaaa6530428da2928f70be651781045ef6042", + "resource-run.py": "7a9642ab86ba34290564f636eb080cacf38b4185a254028680b238bff172993b", + "resource_payload.py": "6f089e645459eba80c5d73e39c21606c78173a44daf49fabc3b88c4631ce51c6" + }, + "questions": { + "analysis": "Which serde package versions and package kinds occur in the selected Rust binary? Preserve complete source Evidence and verify retained reads.", + "discovery": "Discover the complete REA tool and prompt directory." + }, + "recipes": { + "analysis": "Initialize; list tools; inspect_rust_binary selecting serde name/version/kind; read the exact retained parent twice; verify canonical rejection of a negative offset; export and independently check all packages and edges; confirm the catalog remains identical; close.", + "discovery": "Initialize; list the complete tools and prompts; validate input schema dialect and unique names; close." + }, + "orchestrator_sha256": "cd1f8bb8bc408b723ae86d0bb1c6b1e76be1be605737bf6c4fdd22d4c52d584a" + }, + "catalogs": { + "default": { + "sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "tool_count": 213, + "input_catalog_tokens": 49670, + "raw_catalog_tokens": 756165, + "raw_catalog_bytes": 2935148 + }, + "full": { + "sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "tool_count": 213, + "input_catalog_tokens": 205744, + "raw_catalog_tokens": 912436, + "raw_catalog_bytes": 3587792 + } + }, + "summary": [ + { + "phase": "discovery", + "cache": "cold", + "profile": "default", + "artifact": null, + "baseline": { + "wall_seconds": { + "median": 2.739, + "min": 2.739, + "max": 2.739 + }, + "cpu_seconds": { + "median": 2.552663, + "min": 2.511415, + "max": 2.556219 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 259387392, + "min": 258408448, + "max": 263905280 + }, + "sdk_task_elapsed_seconds": { + "median": 0.9435730449999998, + "min": 0.9123522049999999, + "max": 0.9469415640000001 + }, + "tokens_estimated": [50840, 50840, 50840] + }, + "candidate": { + "wall_seconds": { + "median": 2.239, + "min": 2.237, + "max": 2.744 + }, + "cpu_seconds": { + "median": 2.074973, + "min": 2.057036, + "max": 2.583608 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 260485120, + "min": 256352256, + "max": 264577024 + }, + "sdk_task_elapsed_seconds": { + "median": 0.9477840540000001, + "min": 0.935287294, + "max": 1.3319460720000003 + }, + "tokens_estimated": [50840, 50840, 50840] + } + }, + { + "phase": "discovery", + "cache": "cold", + "profile": "full", + "artifact": null, + "baseline": { + "wall_seconds": { + "median": 2.94, + "min": 2.84, + "max": 2.941 + }, + "cpu_seconds": { + "median": 2.682444, + "min": 2.628657, + "max": 2.685704 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 364916736, + "min": 363106304, + "max": 367030272 + }, + "sdk_task_elapsed_seconds": { + "median": 1.0665091050000002, + "min": 1.045395505, + "max": 1.0990473939999998 + }, + "tokens_estimated": [206914, 206914, 206914] + }, + "candidate": { + "wall_seconds": { + "median": 2.437, + "min": 2.437, + "max": 2.538 + }, + "cpu_seconds": { + "median": 2.216807, + "min": 2.196807, + "max": 2.294942 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 363646976, + "min": 362328064, + "max": 366067712 + }, + "sdk_task_elapsed_seconds": { + "median": 1.102061574, + "min": 1.0831482540000001, + "max": 1.103206674 + }, + "tokens_estimated": [206914, 206914, 206914] + } + }, + { + "phase": "discovery", + "cache": "warm", + "profile": "default", + "artifact": null, + "baseline": { + "wall_seconds": { + "median": 2.639, + "min": 2.639, + "max": 2.739 + }, + "cpu_seconds": { + "median": 2.4609, + "min": 2.446954, + "max": 2.498392 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 264048640, + "min": 258125824, + "max": 281075712 + }, + "sdk_task_elapsed_seconds": { + "median": 0.888425156, + "min": 0.877036486, + "max": 0.8892487570000001 + }, + "tokens_estimated": [50840, 50840, 50840] + }, + "candidate": { + "wall_seconds": { + "median": 2.135, + "min": 2.135, + "max": 2.236 + }, + "cpu_seconds": { + "median": 1.979984, + "min": 1.977371, + "max": 1.985714 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 258142208, + "min": 258023424, + "max": 258285568 + }, + "sdk_task_elapsed_seconds": { + "median": 0.8776175859999998, + "min": 0.874714296, + "max": 0.884515666 + }, + "tokens_estimated": [50840, 50840, 50840] + } + }, + { + "phase": "discovery", + "cache": "warm", + "profile": "full", + "artifact": null, + "baseline": { + "wall_seconds": { + "median": 2.84, + "min": 2.838, + "max": 2.845 + }, + "cpu_seconds": { + "median": 2.665518, + "min": 2.654345, + "max": 2.68106 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 365486080, + "min": 363147264, + "max": 365658112 + }, + "sdk_task_elapsed_seconds": { + "median": 1.037624177, + "min": 1.034030976, + "max": 1.040828556 + }, + "tokens_estimated": [206914, 206914, 206914] + }, + "candidate": { + "wall_seconds": { + "median": 2.338, + "min": 2.337, + "max": 2.439 + }, + "cpu_seconds": { + "median": 2.143527, + "min": 2.133334, + "max": 2.228867 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 364027904, + "min": 363192320, + "max": 365486080 + }, + "sdk_task_elapsed_seconds": { + "median": 1.0424973949999998, + "min": 1.0174998259999999, + "max": 1.060541565 + }, + "tokens_estimated": [206914, 206914, 206914] + } + }, + { + "phase": "analysis", + "cache": "cold", + "profile": "default", + "artifact": "ripgrep", + "baseline": { + "wall_seconds": { + "median": 7.571, + "min": 7.374, + "max": 7.673 + }, + "cpu_seconds": { + "median": 7.372341, + "min": 7.184124, + "max": 7.438567 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 837644288, + "min": 830922752, + "max": 841400320 + }, + "sdk_task_elapsed_seconds": { + "median": 5.778101796, + "min": 5.589929067, + "max": 5.839083505 + }, + "tokens_estimated": [54029, 54029, 54029] + }, + "candidate": { + "wall_seconds": { + "median": 7.169, + "min": 6.971, + "max": 7.183 + }, + "cpu_seconds": { + "median": 6.917623, + "min": 6.763883, + "max": 6.938266 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 829534208, + "min": 805789696, + "max": 832606208 + }, + "sdk_task_elapsed_seconds": { + "median": 5.752119637, + "min": 5.638184646, + "max": 5.801543996 + }, + "tokens_estimated": [54029, 54029, 54029] + } + }, + { + "phase": "analysis", + "cache": "cold", + "profile": "default", + "artifact": "zellij", + "baseline": { + "wall_seconds": { + "median": 7.876, + "min": 7.784, + "max": 7.877 + }, + "cpu_seconds": { + "median": 7.623172, + "min": 7.602933, + "max": 7.702061 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 851640320, + "min": 834486272, + "max": 856920064 + }, + "sdk_task_elapsed_seconds": { + "median": 5.997683557, + "min": 5.981027178, + "max": 6.068265945 + }, + "tokens_estimated": [53949, 53949, 53949] + }, + "candidate": { + "wall_seconds": { + "median": 7.373, + "min": 7.372, + "max": 7.376 + }, + "cpu_seconds": { + "median": 7.133769, + "min": 7.129316, + "max": 7.169424 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 849821696, + "min": 844066816, + "max": 856973312 + }, + "sdk_task_elapsed_seconds": { + "median": 5.990541997, + "min": 5.985346128, + "max": 6.006863447 + }, + "tokens_estimated": [53949, 53949, 53949] + } + }, + { + "phase": "analysis", + "cache": "cold", + "profile": "full", + "artifact": "ripgrep", + "baseline": { + "wall_seconds": { + "median": 7.876, + "min": 7.874, + "max": 7.988 + }, + "cpu_seconds": { + "median": 7.710129, + "min": 7.66476, + "max": 7.754883 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 842698752, + "min": 826859520, + "max": 843620352 + }, + "sdk_task_elapsed_seconds": { + "median": 6.076761360000001, + "min": 6.031222070000001, + "max": 6.144969259 + }, + "tokens_estimated": [210103, 210103, 210103] + }, + "candidate": { + "wall_seconds": { + "median": 7.475, + "min": 7.372, + "max": 7.475 + }, + "cpu_seconds": { + "median": 7.294512, + "min": 7.20172, + "max": 7.299765 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 840134656, + "min": 827777024, + "max": 845266944 + }, + "sdk_task_elapsed_seconds": { + "median": 6.118675209999999, + "min": 6.05505673, + "max": 6.138012358999999 + }, + "tokens_estimated": [210103, 210103, 210103] + } + }, + { + "phase": "analysis", + "cache": "cold", + "profile": "full", + "artifact": "zellij", + "baseline": { + "wall_seconds": { + "median": 8.079, + "min": 8.077, + "max": 8.482 + }, + "cpu_seconds": { + "median": 7.851688, + "min": 7.831772, + "max": 8.301631 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 855277568, + "min": 848592896, + "max": 855953408 + }, + "sdk_task_elapsed_seconds": { + "median": 6.2276430309999995, + "min": 6.188756691000001, + "max": 6.641250009 + }, + "tokens_estimated": [210023, 210023, 210023] + }, + "candidate": { + "wall_seconds": { + "median": 7.573, + "min": 7.573, + "max": 8.685 + }, + "cpu_seconds": { + "median": 7.377803, + "min": 7.318713, + "max": 8.498328 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 858882048, + "min": 846467072, + "max": 859328512 + }, + "sdk_task_elapsed_seconds": { + "median": 6.20877096, + "min": 6.152074191, + "max": 7.317706907 + }, + "tokens_estimated": [210023, 210023, 210023] + } + }, + { + "phase": "analysis", + "cache": "warm", + "profile": "default", + "artifact": "ripgrep", + "baseline": { + "wall_seconds": { + "median": 7.575, + "min": 7.573, + "max": 7.876 + }, + "cpu_seconds": { + "median": 7.351674, + "min": 7.317628, + "max": 7.679281 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 854601728, + "min": 830029824, + "max": 855470080 + }, + "sdk_task_elapsed_seconds": { + "median": 5.742695254999999, + "min": 5.673776296, + "max": 5.985042274 + }, + "tokens_estimated": [54029, 54029, 54029] + }, + "candidate": { + "wall_seconds": { + "median": 6.977, + "min": 6.768, + "max": 7.175 + }, + "cpu_seconds": { + "median": 6.809803, + "min": 6.599113, + "max": 6.981504 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 830066688, + "min": 811159552, + "max": 833011712 + }, + "sdk_task_elapsed_seconds": { + "median": 5.655500376, + "min": 5.428931827, + "max": 5.806811635 + }, + "tokens_estimated": [54029, 54029, 54029] + } + }, + { + "phase": "analysis", + "cache": "warm", + "profile": "default", + "artifact": "zellij", + "baseline": { + "wall_seconds": { + "median": 7.774, + "min": 7.569, + "max": 8.078 + }, + "cpu_seconds": { + "median": 7.580788, + "min": 7.334911, + "max": 7.839564 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 860782592, + "min": 835899392, + "max": 867270656 + }, + "sdk_task_elapsed_seconds": { + "median": 5.965027105, + "min": 5.6845126079999995, + "max": 6.186281265 + }, + "tokens_estimated": [53949, 53949, 53949] + }, + "candidate": { + "wall_seconds": { + "median": 7.178, + "min": 7.07, + "max": 7.472 + }, + "cpu_seconds": { + "median": 6.980825, + "min": 6.844209, + "max": 7.279204 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 861921280, + "min": 852742144, + "max": 862892032 + }, + "sdk_task_elapsed_seconds": { + "median": 5.788281946, + "min": 5.699361217, + "max": 6.092467987 + }, + "tokens_estimated": [53949, 53949, 53949] + } + }, + { + "phase": "analysis", + "cache": "warm", + "profile": "full", + "artifact": "ripgrep", + "baseline": { + "wall_seconds": { + "median": 7.976, + "min": 7.779, + "max": 8.381 + }, + "cpu_seconds": { + "median": 7.746147, + "min": 7.554551, + "max": 8.210373 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 852127744, + "min": 847724544, + "max": 864243712 + }, + "sdk_task_elapsed_seconds": { + "median": 6.100206518, + "min": 5.908541518, + "max": 6.461054376 + }, + "tokens_estimated": [210103, 210103, 210103] + }, + "candidate": { + "wall_seconds": { + "median": 7.875, + "min": 7.375, + "max": 13.26 + }, + "cpu_seconds": { + "median": 7.678779, + "min": 7.114094, + "max": 13.056275 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 827604992, + "min": 816529408, + "max": 830488576 + }, + "sdk_task_elapsed_seconds": { + "median": 6.491604155999999, + "min": 5.948197807, + "max": 11.06374727 + }, + "tokens_estimated": [210103, 210103, 210103] + } + }, + { + "phase": "analysis", + "cache": "warm", + "profile": "full", + "artifact": "zellij", + "baseline": { + "wall_seconds": { + "median": 14.995, + "min": 14.577, + "max": 15.209 + }, + "cpu_seconds": { + "median": 14.742113, + "min": 14.317825, + "max": 14.941863 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 858275840, + "min": 854343680, + "max": 860213248 + }, + "sdk_task_elapsed_seconds": { + "median": 11.775706637, + "min": 11.451355266999999, + "max": 12.016412178 + }, + "tokens_estimated": [210023, 210023, 210023] + }, + "candidate": { + "wall_seconds": { + "median": 13.978, + "min": 13.881, + "max": 14.501 + }, + "cpu_seconds": { + "median": 13.717532, + "min": 13.68354, + "max": 14.254371 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 850964480, + "min": 846639104, + "max": 852447232 + }, + "sdk_task_elapsed_seconds": { + "median": 11.528995319, + "min": 11.464475301, + "max": 12.039295778 + }, + "tokens_estimated": [210023, 210023, 210023] + } + } + ], + "records": [ + { + "case": "pair-cold-default-discovery-directory-1-baseline", + "cache": "cold", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 1, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 634.580646, + "after": 638.7313860000002 + }, + "sdk_task_elapsed_seconds": 0.9469415640000001, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 50840 + }, + "raw_catalog_result_tokens_all_lists": 756165, + "raw_catalog_result_bytes_all_lists": 2935148, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.739, + "cpu_seconds": 2.556219, + "kernel_family_peak_bytes_including_page_cache": 259387392, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "89472c217304fda514dc3ad0850fd62282bdfb3900d1120d8760257c04e6f73c", + "receipt_sha256": { + "report.json": "d66cddfada9f433e90e5fe1e74f9410cf2c38abf62aab31f53ef0d95b060ce3f", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-cold-default-discovery-directory-1-candidate", + "cache": "cold", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 1, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 395.14572799999996, + "after": 386.590948 + }, + "sdk_task_elapsed_seconds": 0.9477840540000001, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 50840 + }, + "raw_catalog_result_tokens_all_lists": 756165, + "raw_catalog_result_bytes_all_lists": 2935148, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.239, + "cpu_seconds": 2.074973, + "kernel_family_peak_bytes_including_page_cache": 264577024, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "1c95e0da023e1e57788b18b1fe8d40ec24cb39d91fadb5e1b7f939d662e16766", + "receipt_sha256": { + "report.json": "46399eb5fb870a3379eb82b9321489ba356ad525e49a84b671b079aa4cd4cb93", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-cold-default-discovery-directory-2-candidate", + "cache": "cold", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 2, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 401.64494800000006, + "after": 379.101488 + }, + "sdk_task_elapsed_seconds": 0.935287294, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 50840 + }, + "raw_catalog_result_tokens_all_lists": 756165, + "raw_catalog_result_bytes_all_lists": 2935148, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.237, + "cpu_seconds": 2.057036, + "kernel_family_peak_bytes_including_page_cache": 260485120, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "16ad9311340f7f3a93fedea1603b1cbbd2ae361ad427feca00313c8195649557", + "receipt_sha256": { + "report.json": "3067affdb8f62f40e9745888b0d4e4d34e3ce885fcc7bbfe9cd9afee383d6e96", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-cold-default-discovery-directory-2-baseline", + "cache": "cold", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 2, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 639.9987659999999, + "after": 607.156207 + }, + "sdk_task_elapsed_seconds": 0.9123522049999999, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 50840 + }, + "raw_catalog_result_tokens_all_lists": 756165, + "raw_catalog_result_bytes_all_lists": 2935148, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.739, + "cpu_seconds": 2.511415, + "kernel_family_peak_bytes_including_page_cache": 263905280, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "c1bec8649f16460cffc7a0bfbfac8169943e133dca19bf2b06dd5e3cc720edbe", + "receipt_sha256": { + "report.json": "dcd89cc328ad5ac5c6e5febb34ac2c19578e34acd96832f6e299d3335d95a908", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-cold-default-discovery-directory-3-baseline", + "cache": "cold", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 3, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 650.367986, + "after": 633.244216 + }, + "sdk_task_elapsed_seconds": 0.9435730449999998, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 50840 + }, + "raw_catalog_result_tokens_all_lists": 756165, + "raw_catalog_result_bytes_all_lists": 2935148, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.739, + "cpu_seconds": 2.552663, + "kernel_family_peak_bytes_including_page_cache": 258408448, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "fd214bfa0865a7afca407107ca1b8da3c2f00ae11c6e07ba6976322e8f4e1dd1", + "receipt_sha256": { + "report.json": "481a6e4850dfefc97106b53dd89f0a62f3e85a6a1b8db35d0afcd9f40f5656ed", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-cold-default-discovery-directory-3-candidate", + "cache": "cold", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 3, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 523.487727, + "after": 380.7200579999999 + }, + "sdk_task_elapsed_seconds": 1.3319460720000003, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 50840 + }, + "raw_catalog_result_tokens_all_lists": 756165, + "raw_catalog_result_bytes_all_lists": 2935148, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.744, + "cpu_seconds": 2.583608, + "kernel_family_peak_bytes_including_page_cache": 256352256, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "9a85adbadd4eab8b374bdad583d9907327560eec609b51194e327792b82137fe", + "receipt_sha256": { + "report.json": "a0a7cb446c56ad3ffd8f1b61a95c7767ac981e1b4e6bcb1fd17ff4d4a93cd681", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-cold-default-analysis-ripgrep-1-baseline", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 1, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 625.7156650000001, + "after": 605.0677070000002 + }, + "sdk_task_elapsed_seconds": 5.839083505, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3637, + "whole_task": 54029 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2229.782866, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2289.400996, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 8.807859999999891, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 4.3744299999998475, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 24.28417999999965, + "is_error": false + } + ], + "wall_seconds": 7.673, + "cpu_seconds": 7.438567, + "kernel_family_peak_bytes_including_page_cache": 837644288, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "81ca44b0073ed4b8117041aedc07483b490be4d5e171a58019d5481ae97c569d", + "receipt_sha256": { + "report.json": "a1ffb51995fd1fb5a5aa9dedb53410e0f611049a82bf13937a7117cffc011f95", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "db9f86a654f9d5fb76de134ef28ff2b44fc68add010e5c8882472e30df01bda6" + } + }, + { + "case": "pair-cold-default-analysis-ripgrep-1-candidate", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 1, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 388.778058, + "after": 382.57095800000025 + }, + "sdk_task_elapsed_seconds": 5.638184646, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3637, + "whole_task": 54029 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2185.317177, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2235.353788, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 8.33856999999989, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 4.448319999999512, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 24.081119999999828, + "is_error": false + } + ], + "wall_seconds": 6.971, + "cpu_seconds": 6.763883, + "kernel_family_peak_bytes_including_page_cache": 805789696, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "62343613b824b88a47cf382e251e50c8fb79726ef523535ec5dd961f2837397b", + "receipt_sha256": { + "report.json": "0cc281e1471d29af14aed2cbbe66d4c7df95508d095208ba834a366785f00c35", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "cb0134e3063034f9939931822515b386f056b813654245026feaf78ae90b2c93" + } + }, + { + "case": "pair-cold-default-analysis-ripgrep-2-candidate", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 2, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 393.274268, + "after": 376.12796700000035 + }, + "sdk_task_elapsed_seconds": 5.801543996, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3637, + "whole_task": 54029 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2201.351426, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2347.215836, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 8.659790000000612, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 3.995531000000483, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 23.478809000000183, + "is_error": false + } + ], + "wall_seconds": 7.183, + "cpu_seconds": 6.938266, + "kernel_family_peak_bytes_including_page_cache": 832606208, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "747f4be4f3d77cf9407848c2b37fbb28e711d84b62fe24ee75e548a1eefdb729", + "receipt_sha256": { + "report.json": "3dfd8da6eecff2dd2f58657a9102e9be0b3d19d01c94716fa35a1a6db9174f37", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "7c836c2e634f08a9835aa58afeb4e293529db2117e67351d455fcb4b91be294a" + } + }, + { + "case": "pair-cold-default-analysis-ripgrep-2-baseline", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 2, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 619.596906, + "after": 610.9297960000004 + }, + "sdk_task_elapsed_seconds": 5.589929067, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3637, + "whole_task": 54029 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2211.4524869999996, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2058.199878, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 65.36613899999975, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 18.64698000000044, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 29.307019999999284, + "is_error": false + } + ], + "wall_seconds": 7.374, + "cpu_seconds": 7.184124, + "kernel_family_peak_bytes_including_page_cache": 830922752, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "a5c286b47fc9dedc6c7bd75336e3b5f692ad454bd13f0767863056e2cc98b17e", + "receipt_sha256": { + "report.json": "d7154c190b34fe77ae6c18684210f49af75eeae0396bfd7b99755fea64e326ac", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "12af7e5294bd0350651ba809a4d383b5473745737f906b81290e573b77e4c6c4" + } + }, + { + "case": "pair-cold-default-analysis-ripgrep-3-baseline", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 3, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 613.2370970000001, + "after": 606.5711670000001 + }, + "sdk_task_elapsed_seconds": 5.778101796, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3637, + "whole_task": 54029 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2210.6182980000003, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2267.5096169999997, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 8.417410000000018, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 4.185939999999391, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 24.642329999999674, + "is_error": false + } + ], + "wall_seconds": 7.571, + "cpu_seconds": 7.372341, + "kernel_family_peak_bytes_including_page_cache": 841400320, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "9e08bf6e5ed87c8992ea91ae40f1dde3cf6129130e638edfedffd6f17c7c1fd5", + "receipt_sha256": { + "report.json": "af420ec7d86f9e2d7366d27d2d5b75db826d7bc89cc7bba6cc3217daaee30abe", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "040786c2000ccc9afaefb1bfb1b659685825ca04ce1939829bfd4a9901a47b04" + } + }, + { + "case": "pair-cold-default-analysis-ripgrep-3-candidate", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 3, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 403.27339800000004, + "after": 386.8799079999999 + }, + "sdk_task_elapsed_seconds": 5.752119637, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3637, + "whole_task": 54029 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2188.9772679999996, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2297.549367, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 9.58755999999994, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 5.203749999999673, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 25.89165000000048, + "is_error": false + } + ], + "wall_seconds": 7.169, + "cpu_seconds": 6.917623, + "kernel_family_peak_bytes_including_page_cache": 829534208, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "28557dbc7489b2c075919f8e90934b880ec855bc990dc0b71e515b510653556f", + "receipt_sha256": { + "report.json": "f6a7fd14f1a16c4b36062ea4a4b16cd952ae6445b930966d7abb558aa1f1e96e", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "9b2d46f469c7844c6f0469a531e2a4f7df9cd5bce6688c3a7c6727f8937a9d83" + } + }, + { + "case": "pair-cold-default-analysis-zellij-1-baseline", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 628.9286770000001, + "after": 622.065087 + }, + "sdk_task_elapsed_seconds": 6.068265945, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3557, + "whole_task": 53949 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2446.6106849999996, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2315.7439269999995, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 9.847580999999991, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 5.240538999999444, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 29.05634999999984, + "is_error": false + } + ], + "wall_seconds": 7.877, + "cpu_seconds": 7.702061, + "kernel_family_peak_bytes_including_page_cache": 851640320, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "3dfbeeec1c2ad4d9fbfce88b4e705ceee80f86ccae69d096efff0a5d317dcb4a", + "receipt_sha256": { + "report.json": "0f01212d2ed55246a4e6fd22bf38296ed60ea88e0f8c7d77af38c8a1f498d439", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "79d4af3899944e3fe1511445d12e53c390e0875fd8e19cc1c9e397aaa3033244" + } + }, + { + "case": "pair-cold-default-analysis-zellij-1-candidate", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 389.513007, + "after": 373.70207799999935 + }, + "sdk_task_elapsed_seconds": 5.990541997, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3557, + "whole_task": 53949 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2384.931246, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2315.6841269999995, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 9.112800000000789, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 6.144819999999527, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 32.43714999999975, + "is_error": false + } + ], + "wall_seconds": 7.373, + "cpu_seconds": 7.129316, + "kernel_family_peak_bytes_including_page_cache": 856973312, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "f170cf3addf5f1248d316198126ed17039dcf0fcc0c72c5041f198106efcc419", + "receipt_sha256": { + "report.json": "d030bd4f9e6cb45203f176d738da3193829f23939d68d4fefdceede3b1b919c2", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "e1242e6fa2c041dde60d46b0dfc65de91fcc754439c334ab6bebde0a70d219b3" + } + }, + { + "case": "pair-cold-default-analysis-zellij-2-candidate", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 386.977468, + "after": 372.45045800000025 + }, + "sdk_task_elapsed_seconds": 6.006863447, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3557, + "whole_task": 53949 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2367.667507, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2343.856287, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 42.91671000000042, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 7.7937599999995655, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 27.012220000000525, + "is_error": false + } + ], + "wall_seconds": 7.372, + "cpu_seconds": 7.169424, + "kernel_family_peak_bytes_including_page_cache": 844066816, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "558d3fb03ff483f8f49009280ada8ad84d80f7f7f2ed4084741c7424bda117a4", + "receipt_sha256": { + "report.json": "679ee11e6841e367859bc44a4c10b598050fbda9cdf6d29df65f0bbb3c265202", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "98619a3209420cc8e88923055f2d08fa36817359026b7085d80f08ef85191a2b" + } + }, + { + "case": "pair-cold-default-analysis-zellij-2-baseline", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 621.627027, + "after": 616.7703760000004 + }, + "sdk_task_elapsed_seconds": 5.981027178, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3557, + "whole_task": 53949 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2411.603157, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2292.1830179999997, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 9.707899999999427, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 4.968820000000051, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 27.84194000000025, + "is_error": false + } + ], + "wall_seconds": 7.784, + "cpu_seconds": 7.602933, + "kernel_family_peak_bytes_including_page_cache": 834486272, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "e8d74db9e295382c19686a7228ae156f35d0c5b949c64b9786aecec8264604f8", + "receipt_sha256": { + "report.json": "bc30982f27d2a6a6d4fc157a5e998a2bef1d19667ce0c0b4c71e1f6f62543806", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "a97d542f3fa2c05b99f32264e33c609058d5f1c02e6e1ea7b8ab0192c3d943fa" + } + }, + { + "case": "pair-cold-default-analysis-zellij-3-baseline", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 627.978708, + "after": 620.965177 + }, + "sdk_task_elapsed_seconds": 5.997683557, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3557, + "whole_task": 53949 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2380.030607, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2349.5959970000004, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 9.343630000000303, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 4.632789999999659, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 27.6558100000002, + "is_error": false + } + ], + "wall_seconds": 7.876, + "cpu_seconds": 7.623172, + "kernel_family_peak_bytes_including_page_cache": 856920064, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "d49c42f0a4e9be95487e435c6c369fe5a1c52637b6ce6ea36f7594d9ab5a4777", + "receipt_sha256": { + "report.json": "334671cfd375c18117e5a109257befc0e0bd5ec8e44db19430cd6bd4ec2ae158", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "ae09ee8d8df446dfbf6fa638596b124691288d039090412591eef49b867bd570" + } + }, + { + "case": "pair-cold-default-analysis-zellij-3-candidate", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 382.87296799999996, + "after": 383.17726800000037 + }, + "sdk_task_elapsed_seconds": 5.985346128, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3557, + "whole_task": 53949 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2390.283278, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2321.5986070000004, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 9.337480000000141, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 4.770399999999427, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 28.842029999999795, + "is_error": false + } + ], + "wall_seconds": 7.376, + "cpu_seconds": 7.133769, + "kernel_family_peak_bytes_including_page_cache": 849821696, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "56aa71ed276cbfc6842ab7458b174795700a5827320c7519028f9d7fe1fe527a", + "receipt_sha256": { + "report.json": "7c9979516e0f30908cf245205eb1542a791ef64615fc6716e1f24708dd1722fa", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "b1de2e4f5115f3a0db32c63065360a6cbfd36c14ae981c8637a3e1453c03ec57" + } + }, + { + "case": "pair-cold-full-discovery-directory-1-baseline", + "cache": "cold", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 1, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 629.890997, + "after": 618.1497060000002 + }, + "sdk_task_elapsed_seconds": 1.045395505, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 206914 + }, + "raw_catalog_result_tokens_all_lists": 912436, + "raw_catalog_result_bytes_all_lists": 3587792, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.84, + "cpu_seconds": 2.628657, + "kernel_family_peak_bytes_including_page_cache": 363106304, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "5311526a4d24892c2d2bad4987d0ef01ed8f75f5622346d7740f69461e2b105b", + "receipt_sha256": { + "report.json": "7826304ef1377672a32a866325297a233e940138d1af56d41e9b8ec42ee6318d", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-cold-full-discovery-directory-1-candidate", + "cache": "cold", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 1, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 390.22933700000004, + "after": 377.1193280000002 + }, + "sdk_task_elapsed_seconds": 1.103206674, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 206914 + }, + "raw_catalog_result_tokens_all_lists": 912436, + "raw_catalog_result_bytes_all_lists": 3587792, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.437, + "cpu_seconds": 2.216807, + "kernel_family_peak_bytes_including_page_cache": 366067712, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "ca90525ae23879fb65e5d02a9a9378280c31fde9ee55744693ba8eea8dfe613e", + "receipt_sha256": { + "report.json": "03027dd8091db0272dbd0ce9f8b14e8a960230fdc4000c6c616fdb34a0cfa453", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-cold-full-discovery-directory-2-candidate", + "cache": "cold", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 2, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 404.03636800000004, + "after": 432.9608979999998 + }, + "sdk_task_elapsed_seconds": 1.102061574, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 206914 + }, + "raw_catalog_result_tokens_all_lists": 912436, + "raw_catalog_result_bytes_all_lists": 3587792, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.538, + "cpu_seconds": 2.294942, + "kernel_family_peak_bytes_including_page_cache": 362328064, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "e2f3facf1429b2773efbd4d9480ea358f3dd00e3cdbb2b354c627847e05f5574", + "receipt_sha256": { + "report.json": "b9a03221b459591fd1359dc3262d5037912d0378c804487620397966406784c5", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-cold-full-discovery-directory-2-baseline", + "cache": "cold", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 2, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 627.948746, + "after": 665.427216 + }, + "sdk_task_elapsed_seconds": 1.0665091050000002, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 206914 + }, + "raw_catalog_result_tokens_all_lists": 912436, + "raw_catalog_result_bytes_all_lists": 3587792, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.94, + "cpu_seconds": 2.682444, + "kernel_family_peak_bytes_including_page_cache": 364916736, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "089826ea8c62df98e858d135a72bc01a5d72f61f692c205724b6e5aadb3b4401", + "receipt_sha256": { + "report.json": "56e7a58b9a809e20ea12a584437462a5efe5e95881fb6e8157859c11f9d512ea", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-cold-full-discovery-directory-3-baseline", + "cache": "cold", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 3, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 620.881997, + "after": 615.8508670000001 + }, + "sdk_task_elapsed_seconds": 1.0990473939999998, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 206914 + }, + "raw_catalog_result_tokens_all_lists": 912436, + "raw_catalog_result_bytes_all_lists": 3587792, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.941, + "cpu_seconds": 2.685704, + "kernel_family_peak_bytes_including_page_cache": 367030272, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "04939c57e3c822a1b4ee88a9ffbb4cca2967a72891d6fbf181dc6f374d450573", + "receipt_sha256": { + "report.json": "415f5206675e58048fd0d53c740232bb6e3380a9a92e5915255b9dde0549db23", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-cold-full-discovery-directory-3-candidate", + "cache": "cold", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 3, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 392.555838, + "after": 378.2254180000002 + }, + "sdk_task_elapsed_seconds": 1.0831482540000001, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 206914 + }, + "raw_catalog_result_tokens_all_lists": 912436, + "raw_catalog_result_bytes_all_lists": 3587792, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.437, + "cpu_seconds": 2.196807, + "kernel_family_peak_bytes_including_page_cache": 363646976, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "3f6e4e8332998c91686b25539712bda4f7afa78111067d60cd51a53e105e0851", + "receipt_sha256": { + "report.json": "4e3ff15d57608720c6178952f5ba4e5f3ab2d0947f3f75bf99f106464723c82b", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-cold-full-analysis-ripgrep-1-baseline", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 1, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 625.543437, + "after": 632.634916 + }, + "sdk_task_elapsed_seconds": 6.076761360000001, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3637, + "whole_task": 210103 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2170.155089, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2318.1014480000003, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 10.230399999999463, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 5.011889999999767, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 25.664260000000468, + "is_error": false + } + ], + "wall_seconds": 7.876, + "cpu_seconds": 7.710129, + "kernel_family_peak_bytes_including_page_cache": 842698752, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "58099d2edf89e2a712b308105c8dfe167ad1feffbf3a9f0669fe099c704e1dd0", + "receipt_sha256": { + "report.json": "00e4dc8e17ade871008d7767d12ae8e4d5281c425fbbbd1f07f4e371c7e8575c", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "f09a840b26a2f58a84a6233b3ecee6761098c6bc8d013231f9366027f30665bc" + } + }, + { + "case": "pair-cold-full-analysis-ripgrep-1-candidate", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 1, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 400.533108, + "after": 377.4843180000007 + }, + "sdk_task_elapsed_seconds": 6.138012358999999, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3637, + "whole_task": 210103 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2270.390378, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2260.433199, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 9.737510000000839, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 5.53650000000016, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 26.04856000000018, + "is_error": false + } + ], + "wall_seconds": 7.475, + "cpu_seconds": 7.299765, + "kernel_family_peak_bytes_including_page_cache": 845266944, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "6f24dad5379ad198f0862b7d4e79b1e0139a04b679a915721ebdc4afb35a775b", + "receipt_sha256": { + "report.json": "fb4d07a222a13d9e3fe46da056bede61b8e1d965ccad6d64dea0f78370256915", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "30751bcd390e1d5149b4e5a616c9bfc69ad2257d77689c2f60e6c22149e3846f" + } + }, + { + "case": "pair-cold-full-analysis-ripgrep-2-candidate", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 2, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 390.90667800000006, + "after": 375.35122800000045 + }, + "sdk_task_elapsed_seconds": 6.05505673, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3637, + "whole_task": 210103 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2204.7890100000004, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2219.3471990000003, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 9.673259000000144, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 4.403829999999289, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 25.87572, + "is_error": false + } + ], + "wall_seconds": 7.372, + "cpu_seconds": 7.20172, + "kernel_family_peak_bytes_including_page_cache": 840134656, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "f0591ea0b87e593a46536f898525ff8ad695b19c9005b9dfd000702cc70f9bf2", + "receipt_sha256": { + "report.json": "732e3cfb37735a61fc1e588e033126671e158cc7536ab56dc17149528644715e", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "e4644b49544ac9213075834f353b931e880f756f2052888bf3847f5a22b52201" + } + }, + { + "case": "pair-cold-full-analysis-ripgrep-2-baseline", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 2, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 632.959587, + "after": 631.5438469999999 + }, + "sdk_task_elapsed_seconds": 6.031222070000001, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3637, + "whole_task": 210103 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2179.5238390000004, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2147.714349, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 80.04217999999946, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 5.748909999999341, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 25.316899999999805, + "is_error": false + } + ], + "wall_seconds": 7.874, + "cpu_seconds": 7.66476, + "kernel_family_peak_bytes_including_page_cache": 826859520, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "a4f08f0af27d8c5d627a669aec544d53d03bf51871d72f500dd5b0ac4d79fa21", + "receipt_sha256": { + "report.json": "ec7d2c81d96d7697b98c1b0b662528224bbd300eae42d052a354d5685ca6e489", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "d2495821124dfeedae1835d1063892965ec224ca889683d57519522c6a690af9" + } + }, + { + "case": "pair-cold-full-analysis-ripgrep-3-baseline", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 3, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 615.4213070000001, + "after": 631.1476270000003 + }, + "sdk_task_elapsed_seconds": 6.144969259, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3637, + "whole_task": 210103 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2290.7312789999996, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2161.18369, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 79.85771999999997, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 5.724050000000716, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 27.58078000000023, + "is_error": false + } + ], + "wall_seconds": 7.988, + "cpu_seconds": 7.754883, + "kernel_family_peak_bytes_including_page_cache": 843620352, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "1af429562d8ccecb18f6dec0c69bab06d4fde919c2ef0040cd23dc3861fe9e70", + "receipt_sha256": { + "report.json": "ac5ece1cfd7d0094ef946bb82a4f6455a521f9f13c1285b85d5c123ad9aaec49", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "ec72f902ddedb947f141c454e88982f11868b2a33d201440d74b5ae2b0d1f3a4" + } + }, + { + "case": "pair-cold-full-analysis-ripgrep-3-candidate", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 3, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 399.61565800000005, + "after": 385.0950590000002 + }, + "sdk_task_elapsed_seconds": 6.118675209999999, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3637, + "whole_task": 210103 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2171.1585189999996, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2326.291299, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 10.114069999999629, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 5.253349999999955, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 26.211299999999937, + "is_error": false + } + ], + "wall_seconds": 7.475, + "cpu_seconds": 7.294512, + "kernel_family_peak_bytes_including_page_cache": 827777024, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "8df2ac6cc0dcda49854c10176fa2d612b688dd71363677404be7553b41502f78", + "receipt_sha256": { + "report.json": "a76faef0ec8d37b224370f7b7a0df1785fab439343ff95e718317299587cedcb", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "01b8028a35af8b437916c3ce26f70a1e419864df49d38a7c23b31feeb5c7cf08" + } + }, + { + "case": "pair-cold-full-analysis-zellij-1-baseline", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 633.5009269999999, + "after": 629.3595770000002 + }, + "sdk_task_elapsed_seconds": 6.2276430309999995, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3557, + "whole_task": 210023 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2350.5731989999995, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2162.7106399999993, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 75.45830000000024, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 5.242099999999482, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 46.36221999999998, + "is_error": false + } + ], + "wall_seconds": 8.079, + "cpu_seconds": 7.831772, + "kernel_family_peak_bytes_including_page_cache": 848592896, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "4b6f747aef47843a9e4620f2d28013dbd689190c410e3d6ab7e68f89ade4eb90", + "receipt_sha256": { + "report.json": "61c543bd231aa95d009c4a3e4810aba76a871f9545edbb277022d06b71bb03a9", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "be0f9c28d60cbe910264a524d33e70fe710eb9ba4194512e74e5a67329797ad7" + } + }, + { + "case": "pair-cold-full-analysis-zellij-1-candidate", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 389.822099, + "after": 406.5415779999994 + }, + "sdk_task_elapsed_seconds": 6.20877096, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3557, + "whole_task": 210023 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2285.04718, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2211.2820990000005, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 77.34936000000016, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 6.637780000000021, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 29.217539999999644, + "is_error": false + } + ], + "wall_seconds": 7.573, + "cpu_seconds": 7.377803, + "kernel_family_peak_bytes_including_page_cache": 846467072, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "4149119575b09e688ab8b732cce27ae249a6309fd558b22f1165777c2b8aac78", + "receipt_sha256": { + "report.json": "65052f4d392204776ab2d659b7d30c6093dcd1e5f396ffa95aeff810ffeaaf1a", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "bdf04242df1b4204d128320a0e319e8a1b956fd9ddd9595c856a20d0d0b11eca" + } + }, + { + "case": "pair-cold-full-analysis-zellij-2-candidate", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 397.06117800000004, + "after": 387.3936480000002 + }, + "sdk_task_elapsed_seconds": 6.152074191, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3557, + "whole_task": 210023 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2290.0921099999996, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2278.219289, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 9.589889999999286, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 4.964199999999437, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 27.786590000000615, + "is_error": false + } + ], + "wall_seconds": 7.573, + "cpu_seconds": 7.318713, + "kernel_family_peak_bytes_including_page_cache": 859328512, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "d868dc3fda6d4295c1b734f0390441a736f2f0e983cc97274626d8876904dbf7", + "receipt_sha256": { + "report.json": "0a899c19e2f9fa4ea29a6efdda6d44d103f7e267725b37b5cb485de83e6e13ed", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "bd594f016ddaeac826a03c0fa36bd00cd713f38b299ea1717c9d1055f02f9ed6" + } + }, + { + "case": "pair-cold-full-analysis-zellij-2-baseline", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 627.548487, + "after": 642.9884070000007 + }, + "sdk_task_elapsed_seconds": 6.188756691000001, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3557, + "whole_task": 210023 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2372.872909, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2205.725859, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 9.482199000000037, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 4.9183409999996, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 29.62988900000073, + "is_error": false + } + ], + "wall_seconds": 8.077, + "cpu_seconds": 7.851688, + "kernel_family_peak_bytes_including_page_cache": 855277568, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "eeb8cbd7c31ac41469da9f4036f928638c6646796cd7aba9aed82f0194eab852", + "receipt_sha256": { + "report.json": "e0bc8de49d432af661798cd5b8b6e37221e0e95f572f164e1fb3cf0d316192a0", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "3d75525709ab3ac22f7187c48579880cdf58cd9fbc8d36d0e950d9518478dbf2" + } + }, + { + "case": "pair-cold-full-analysis-zellij-3-baseline", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 639.025817, + "after": 640.6548270000003 + }, + "sdk_task_elapsed_seconds": 6.641250009, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3557, + "whole_task": 210023 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2484.5062989999997, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2353.3368899999996, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 9.192070000000058, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 4.606600000000071, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 28.23099000000002, + "is_error": false + } + ], + "wall_seconds": 8.482, + "cpu_seconds": 8.301631, + "kernel_family_peak_bytes_including_page_cache": 855953408, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "5786cb9eb2dee80ed34096d75d41525ab98f485e6e490043f7886972f002d10d", + "receipt_sha256": { + "report.json": "a444247e9fd7c72a47d6dea2c6d9ee65ec3758c55b3920c982ceb1dc9a258dc4", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "08e070edb06af98f9acafdee8e7af9f75322d6ca04cfd61253a7e3f07bd29270" + } + }, + { + "case": "pair-cold-full-analysis-zellij-3-candidate", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 396.20569800000004, + "after": 402.1625180000001 + }, + "sdk_task_elapsed_seconds": 7.317706907, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3557, + "whole_task": 210023 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2872.110037, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2720.9662980000003, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 9.865999999999985, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 5.130699999999706, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 28.744480000000294, + "is_error": false + } + ], + "wall_seconds": 8.685, + "cpu_seconds": 8.498328, + "kernel_family_peak_bytes_including_page_cache": 858882048, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "8e546eb0950e69d6684fcdf6630e7dd498f68233b4242440085de292f7543462", + "receipt_sha256": { + "report.json": "aec5dcec77fa9f6757218fefa30f8b3aa5eb3d1186c66607b9cc78aaae1cc60c", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4e273103e12a3b4dcdc23fdac81305614cbcd9dd6e4c7b1bcd57c87a21d743b2" + } + }, + { + "case": "pair-warm-default-discovery-directory-1-baseline", + "cache": "warm", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 1, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 630.9300269999999, + "after": 632.882648 + }, + "sdk_task_elapsed_seconds": 0.888425156, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 50840 + }, + "raw_catalog_result_tokens_all_lists": 756165, + "raw_catalog_result_bytes_all_lists": 2935148, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.739, + "cpu_seconds": 2.498392, + "kernel_family_peak_bytes_including_page_cache": 264048640, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "12b82596a3a18a2d49d387091677a12bdb35cf9cac21f994867a5b0fa520f07b", + "receipt_sha256": { + "report.json": "7933a475a6dd382a07e75c70122476b7d618cb12420fc58b722bcc85f58de51a", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-warm-default-discovery-directory-1-candidate", + "cache": "warm", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 1, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 392.21434800000003, + "after": 368.74290799999994 + }, + "sdk_task_elapsed_seconds": 0.874714296, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 50840 + }, + "raw_catalog_result_tokens_all_lists": 756165, + "raw_catalog_result_bytes_all_lists": 2935148, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.135, + "cpu_seconds": 1.979984, + "kernel_family_peak_bytes_including_page_cache": 258285568, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "10bdfcaeb47dfdeec35d48cfd333f2580d09e85f24ed28de5954e57e20411ae3", + "receipt_sha256": { + "report.json": "652b3a841af9a669bbd203629f47bae8174ac87e5337c9c6dcae7e6210acd581", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-warm-default-discovery-directory-2-candidate", + "cache": "warm", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 2, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 392.938318, + "after": 378.6738990000001 + }, + "sdk_task_elapsed_seconds": 0.8776175859999998, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 50840 + }, + "raw_catalog_result_tokens_all_lists": 756165, + "raw_catalog_result_bytes_all_lists": 2935148, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.135, + "cpu_seconds": 1.977371, + "kernel_family_peak_bytes_including_page_cache": 258023424, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "38d42da1daa461623f82fd9d41e5c12257841dd5a0dcd9d40e19692b85911347", + "receipt_sha256": { + "report.json": "4dfd54e54827af14f7b9e957877a73e942767d7e2eed5655ad3db0b8b52c624c", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-warm-default-discovery-directory-2-baseline", + "cache": "warm", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 2, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 625.546777, + "after": 602.0980979999999 + }, + "sdk_task_elapsed_seconds": 0.8892487570000001, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 50840 + }, + "raw_catalog_result_tokens_all_lists": 756165, + "raw_catalog_result_bytes_all_lists": 2935148, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.639, + "cpu_seconds": 2.446954, + "kernel_family_peak_bytes_including_page_cache": 258125824, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "2c61765217f3c49a6f8965e94ca2cc69ff92a78e7932964852d8d83abc484fbb", + "receipt_sha256": { + "report.json": "8d14c4eea6caa82b1c3c4629ca950af91d22ed6c474ecb1adce7f2ca91a8aa6e", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-warm-default-discovery-directory-3-baseline", + "cache": "warm", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 3, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 620.161268, + "after": 623.0935069999998 + }, + "sdk_task_elapsed_seconds": 0.877036486, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 50840 + }, + "raw_catalog_result_tokens_all_lists": 756165, + "raw_catalog_result_bytes_all_lists": 2935148, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.639, + "cpu_seconds": 2.4609, + "kernel_family_peak_bytes_including_page_cache": 281075712, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "ecfd3c1ec748dccd143c1e740117a1dc67aa5e2854c8839318f40dfa7acbac1e", + "receipt_sha256": { + "report.json": "218418775d186b65d2acb0986a3f40ec2afde85c5fb7a041a48698f4c600eb85", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-warm-default-discovery-directory-3-candidate", + "cache": "warm", + "profile": "default", + "phase": "discovery", + "artifact": null, + "pair": 3, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 393.12777900000003, + "after": 382.85497799999985 + }, + "sdk_task_elapsed_seconds": 0.884515666, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 50840 + }, + "raw_catalog_result_tokens_all_lists": 756165, + "raw_catalog_result_bytes_all_lists": 2935148, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.236, + "cpu_seconds": 1.985714, + "kernel_family_peak_bytes_including_page_cache": 258142208, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "230cff7637e23143c0860bb35e0b008d6427fa947114b72d75454db13d546edc", + "receipt_sha256": { + "report.json": "c21e9a94d702eade4d8f59ff351fee97e97380469477e951f5e98032e12435a5", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-warm-default-analysis-ripgrep-1-baseline", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 1, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 620.3113579999999, + "after": 634.5889869999992 + }, + "sdk_task_elapsed_seconds": 5.742695254999999, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3637, + "whole_task": 54029 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2053.776551, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2405.8105689999998, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 11.279999999999745, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 5.727969999999914, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 28.970250000000306, + "is_error": false + } + ], + "wall_seconds": 7.575, + "cpu_seconds": 7.351674, + "kernel_family_peak_bytes_including_page_cache": 855470080, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "a0dc5acbf97ad2c2db87bed84f2e01556c6f4450b5ac3ac34af78bd60ad6146f", + "receipt_sha256": { + "report.json": "5ee1f055e4cd01e78f49ab79fd52876aadc94bd30af0ee2fd6ef3088692e7388", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "270d2503c26aec46255ae37971a9ca7be5ca12e32000ad2b3e3ebbf39bd922f6" + } + }, + { + "case": "pair-warm-default-analysis-ripgrep-1-candidate", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 1, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 400.34635799999995, + "after": 385.37161899999955 + }, + "sdk_task_elapsed_seconds": 5.806811635, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3637, + "whole_task": 54029 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2132.0153309999996, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2375.768549, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 10.079660000000331, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 5.047889999999825, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 27.20592100000067, + "is_error": false + } + ], + "wall_seconds": 7.175, + "cpu_seconds": 6.981504, + "kernel_family_peak_bytes_including_page_cache": 811159552, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "3b46f48380c554f64e928f13242645f743815d21313bd699efa36532d18ef4a0", + "receipt_sha256": { + "report.json": "0b3b7c45031629a7ae73caad47d64ebc021077387ace2f0f8d81de157ba3510f", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "5726333881aa383116a3ad4a3628d98a9a863bfb9086c7d323b16a6181fec411" + } + }, + { + "case": "pair-warm-default-analysis-ripgrep-2-candidate", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 2, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 406.659589, + "after": 380.73600799999986 + }, + "sdk_task_elapsed_seconds": 5.428931827, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3637, + "whole_task": 54029 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2030.7116010000002, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2117.197501, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 73.64578999999958, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 4.761850000000777, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 26.570160000000214, + "is_error": false + } + ], + "wall_seconds": 6.768, + "cpu_seconds": 6.599113, + "kernel_family_peak_bytes_including_page_cache": 830066688, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "acba5c374327c79349e892b727f711757a3713675acec72ae3bf52c25de3dfae", + "receipt_sha256": { + "report.json": "784c60e10fdd853c092f621b956c75c75cdc90d50ea2100e2c78d63910055dcf", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "cc965825bb1da93f0c6bfa11b84e82392f491cd323a29869dd377a4b28c63bd8" + } + }, + { + "case": "pair-warm-default-analysis-ripgrep-2-baseline", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 2, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 656.415947, + "after": 619.0178580000002 + }, + "sdk_task_elapsed_seconds": 5.673776296, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3637, + "whole_task": 54029 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2055.288591, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2327.1518699999997, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 10.187750000000051, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 5.653839999999946, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 75.92057899999963, + "is_error": false + } + ], + "wall_seconds": 7.573, + "cpu_seconds": 7.317628, + "kernel_family_peak_bytes_including_page_cache": 854601728, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "87a1c0913850e9c5fe5f60e2e5e99b4c596cf7b8d8b4f960e8128d8bed02e5af", + "receipt_sha256": { + "report.json": "9a23a669a3b7a4bb91920ac2204bdb6451589ced6f68697bb33b7572f2f4abab", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "d12508b007c0a5d5b665646ed44315d6354ea8fb18f498c2127dc37a7dd28908" + } + }, + { + "case": "pair-warm-default-analysis-ripgrep-3-baseline", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 3, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 674.984727, + "after": 637.4825970000002 + }, + "sdk_task_elapsed_seconds": 5.985042274, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3637, + "whole_task": 54029 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2240.37499, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2401.732449, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 41.6787889999996, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 26.676330000000235, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 26.463519999999335, + "is_error": false + } + ], + "wall_seconds": 7.876, + "cpu_seconds": 7.679281, + "kernel_family_peak_bytes_including_page_cache": 830029824, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "2c3fb44ae7e9e0ff4274b8bda6c190ee80d1cf70b3c3f816a9a6897a1083108a", + "receipt_sha256": { + "report.json": "cbb43e36367b254434c244f20870eb00f6b8e0d26a359534296f570e1cc39e6f", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "3ccb70ab1f2f52977d52566fd6eb8d2eac108bb11858b2dede65398046d492c0" + } + }, + { + "case": "pair-warm-default-analysis-ripgrep-3-candidate", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 3, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 395.41038799999995, + "after": 378.79852800000026 + }, + "sdk_task_elapsed_seconds": 5.655500376, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3637, + "whole_task": 54029 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2062.388501, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2367.1205210000003, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 9.833128999999644, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 5.330670000000282, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 25.337169000000358, + "is_error": false + } + ], + "wall_seconds": 6.977, + "cpu_seconds": 6.809803, + "kernel_family_peak_bytes_including_page_cache": 833011712, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "7ee2d3a367a88755afb84ff6ca8ff9dde5730de2217c2b4abbfc2e88bb19adee", + "receipt_sha256": { + "report.json": "c1e7bcc5dd1b6fa20700439e8c1122769c38a43deafeb7b5ad8f707a141ae9e2", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4a925a251420226ff04ef846d46b76e8d07fbc2c2d093c70762de9e03309de10" + } + }, + { + "case": "pair-warm-default-analysis-zellij-1-baseline", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 631.557757, + "after": 625.2030869999999 + }, + "sdk_task_elapsed_seconds": 6.186281265, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3557, + "whole_task": 53949 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2442.6988899999997, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2436.9865499999996, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 11.616179999999986, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 6.900329999999485, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 35.31379899999956, + "is_error": false + } + ], + "wall_seconds": 8.078, + "cpu_seconds": 7.839564, + "kernel_family_peak_bytes_including_page_cache": 835899392, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "14e507962f11897518e0f1145e90df1e9ed9f7de7ef7a4abf3408441c5c46e4a", + "receipt_sha256": { + "report.json": "fa746eda40ef2010d7eee146e6461fbac77a803069a5070e1f828999f733289f", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "fd8819a75f9198696bb26bd55aab9eaf4089d63de07cef69894c8b910040d5c0" + } + }, + { + "case": "pair-warm-default-analysis-zellij-1-candidate", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 403.003829, + "after": 380.7376979999999 + }, + "sdk_task_elapsed_seconds": 5.788281946, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3557, + "whole_task": 53949 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2207.682241, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2353.38705, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 9.512679999999818, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 5.1258490000000165, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 29.97976000000017, + "is_error": false + } + ], + "wall_seconds": 7.178, + "cpu_seconds": 6.980825, + "kernel_family_peak_bytes_including_page_cache": 861921280, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "6923be2db3b688251107d3a00bbfbe6696d87a70b673833a80936ea63d301521", + "receipt_sha256": { + "report.json": "67e6fc1b24b96011201b5748ace11533a1d762334ce9967c668bdbc09c9e5fd0", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "20d8de2487931681105184564d2f2702b13daa76eabf5a8e551e602e85ca73e3" + } + }, + { + "case": "pair-warm-default-analysis-zellij-2-candidate", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 381.55820900000003, + "after": 378.83754899999985 + }, + "sdk_task_elapsed_seconds": 5.699361217, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3557, + "whole_task": 53949 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2169.484111, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2333.0509709999997, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 9.695679999999811, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 5.357490000000325, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 27.88166100000035, + "is_error": false + } + ], + "wall_seconds": 7.07, + "cpu_seconds": 6.844209, + "kernel_family_peak_bytes_including_page_cache": 852742144, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "b0b6e874c43208ede754091543db434c657b9f143543a4590178cfc872b004e8", + "receipt_sha256": { + "report.json": "4b4ee89ba007180804251293eac77916460fbc1814fad63b7cb8fc2f6016aa66", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "1dfaf2ac3583a392d496a8422a6817a8d818fd52c2d2c58b72fc6b750911850c" + } + }, + { + "case": "pair-warm-default-analysis-zellij-2-baseline", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 624.9660279999999, + "after": 610.7264080000004 + }, + "sdk_task_elapsed_seconds": 5.965027105, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3557, + "whole_task": 53949 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2373.8754599999993, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2374.626381, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 8.893119999999726, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 4.676199999999881, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 28.255339999999705, + "is_error": false + } + ], + "wall_seconds": 7.774, + "cpu_seconds": 7.580788, + "kernel_family_peak_bytes_including_page_cache": 860782592, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "28a4f29613a441692afb317f22e551a048d6c85dd3ea61b23e63b9558a874cc5", + "receipt_sha256": { + "report.json": "56dd0fb0febd570f71a4138b44f4ee8066f837b18baf8e68eb8d291dfc62d6b3", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "9ea039d3497e5023db40dbb9e82f2b314104c447e29bbd36ef8046beff84d458" + } + }, + { + "case": "pair-warm-default-analysis-zellij-3-baseline", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 619.6262569999999, + "after": 631.825887 + }, + "sdk_task_elapsed_seconds": 5.6845126079999995, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3557, + "whole_task": 53949 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2181.8331719999996, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2290.497411, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 10.632380000000012, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 5.578110000000379, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 27.41403999999966, + "is_error": false + } + ], + "wall_seconds": 7.569, + "cpu_seconds": 7.334911, + "kernel_family_peak_bytes_including_page_cache": 867270656, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "ac4223af372a7c4d295a2af0658e0a7d73e8e3228eeda287a8d296beedb6f632", + "receipt_sha256": { + "report.json": "89c800c5acf991435c63925a1dded5c092d4a801fdad4a3f8f60fe80004805b0", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "8ffafc9b1ca81ac08e552ef1da4f8470246570806155e67ae1624514a5f6c84e" + } + }, + { + "case": "pair-warm-default-analysis-zellij-3-candidate", + "cache": "warm", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 390.584799, + "after": 408.25477799999953 + }, + "sdk_task_elapsed_seconds": 6.092467987, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 297, + "text_replies": 3557, + "whole_task": 53949 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2302.84321, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2463.4373, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 41.573491000000104, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 14.43565100000069, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 31.69601000000057, + "is_error": false + } + ], + "wall_seconds": 7.472, + "cpu_seconds": 7.279204, + "kernel_family_peak_bytes_including_page_cache": 862892032, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "6651c7b6fad4d8612ad4a243ffee9d48cbbe94785fe3307ce07d9c3e2ca98d18", + "receipt_sha256": { + "report.json": "3f60953d583ab3ad8a369a2b2ed4f8a1f63da25663fa4e96abc7beb67b0acaa4", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4e6997643a1ec6939f0d6ffd5de876a378e3119a6c08b9eac76dade75a3fc039" + } + }, + { + "case": "pair-warm-full-discovery-directory-1-baseline", + "cache": "warm", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 1, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 668.104677, + "after": 602.6713280000001 + }, + "sdk_task_elapsed_seconds": 1.037624177, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 206914 + }, + "raw_catalog_result_tokens_all_lists": 912436, + "raw_catalog_result_bytes_all_lists": 3587792, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.838, + "cpu_seconds": 2.654345, + "kernel_family_peak_bytes_including_page_cache": 363147264, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "a5e2dfad501a45e29f2292cdd0e8b8a03b145d8d1dd1b171c33b0d2c03c0ddd7", + "receipt_sha256": { + "report.json": "167f05ae3fc6a950c3837836302d4a815bde2571671ea76865572fbffb44b405", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-warm-full-discovery-directory-1-candidate", + "cache": "warm", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 1, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 388.62777800000003, + "after": 442.73736800000006 + }, + "sdk_task_elapsed_seconds": 1.060541565, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 206914 + }, + "raw_catalog_result_tokens_all_lists": 912436, + "raw_catalog_result_bytes_all_lists": 3587792, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.439, + "cpu_seconds": 2.228867, + "kernel_family_peak_bytes_including_page_cache": 365486080, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "1af0f7efa71051db5d12e4636ed1a2bc70d6a743f3f2c7f270b1efef9c512373", + "receipt_sha256": { + "report.json": "7bcc5d99c0c7ec63f9b34603dcad8d6083c29bd5411db11b11c054c502718929", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-warm-full-discovery-directory-2-candidate", + "cache": "warm", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 2, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 391.78706900000003, + "after": 382.1923790000001 + }, + "sdk_task_elapsed_seconds": 1.0424973949999998, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 206914 + }, + "raw_catalog_result_tokens_all_lists": 912436, + "raw_catalog_result_bytes_all_lists": 3587792, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.337, + "cpu_seconds": 2.143527, + "kernel_family_peak_bytes_including_page_cache": 364027904, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "3a3361250790dc39b5234a3e2efe5fed0bc713accb49a5d0763d86630b42f3a5", + "receipt_sha256": { + "report.json": "3a0d2b37ae89eeb8cf0f383a25d74f1dffa7dd72a7b9946ecd3905674aacbc7b", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-warm-full-discovery-directory-2-baseline", + "cache": "warm", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 2, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 621.2290869999999, + "after": 662.8774879999999 + }, + "sdk_task_elapsed_seconds": 1.040828556, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 206914 + }, + "raw_catalog_result_tokens_all_lists": 912436, + "raw_catalog_result_bytes_all_lists": 3587792, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.84, + "cpu_seconds": 2.665518, + "kernel_family_peak_bytes_including_page_cache": 365486080, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "4d93c33255c6e88d0d79729533914a71c41efa5442b2e8e74f7c9489909ef9d5", + "receipt_sha256": { + "report.json": "e73d150b4f505e75e0bebe8a5ee393cb20ca5f7aff552784508a77169dff7bef", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-warm-full-discovery-directory-3-baseline", + "cache": "warm", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 3, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 635.362588, + "after": 670.7475770000001 + }, + "sdk_task_elapsed_seconds": 1.034030976, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 206914 + }, + "raw_catalog_result_tokens_all_lists": 912436, + "raw_catalog_result_bytes_all_lists": 3587792, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.845, + "cpu_seconds": 2.68106, + "kernel_family_peak_bytes_including_page_cache": 365658112, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "672e9e334db1ae776914902b9f36a47bf08e27a42384ea1918c81df53abc4a4e", + "receipt_sha256": { + "report.json": "7787f49a9779016a1f3bcea03e084183f2b5461ddb0fd99da74d961d90b7dd88", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-warm-full-discovery-directory-3-candidate", + "cache": "warm", + "profile": "full", + "phase": "discovery", + "artifact": null, + "pair": 3, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 389.049079, + "after": 383.91260799999986 + }, + "sdk_task_elapsed_seconds": 1.0174998259999999, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": null, + "parent_semantic_sha256": null, + "answer_sha256": "763f5252a8277e07583989fe7fa589c93d9e13ee408dad6697c699e102178421", + "tokens_estimated": { + "question_and_recipe": 29, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 0, + "text_replies": 0, + "prompt_directory": 787, + "whole_task": 206914 + }, + "raw_catalog_result_tokens_all_lists": 912436, + "raw_catalog_result_bytes_all_lists": 3587792, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 1, + "prompts/list": 1 + }, + "calls": [], + "wall_seconds": 2.338, + "cpu_seconds": 2.133334, + "kernel_family_peak_bytes_including_page_cache": 363192320, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "4ed28d01e30a8ca6459fe20be1ae95b1305fe7b7fe3065a0838d874fda373488", + "receipt_sha256": { + "report.json": "d9c5230374cf5fd14f594dc5672570fa3d084ae534cd5927cc0d8bea4d55eedc", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945" + } + }, + { + "case": "pair-warm-full-analysis-ripgrep-1-baseline", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 1, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 646.417388, + "after": 675.1903670000002 + }, + "sdk_task_elapsed_seconds": 6.461054376, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3637, + "whole_task": 210103 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2138.371342, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2621.86773, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 9.100720000000365, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 6.129170999999587, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 26.079149000000143, + "is_error": false + } + ], + "wall_seconds": 8.381, + "cpu_seconds": 8.210373, + "kernel_family_peak_bytes_including_page_cache": 847724544, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "cd3211091bbc3644b7204a1c43cac5bc968563131bb5963252554afbf75638d1", + "receipt_sha256": { + "report.json": "400c6a975653d5c1a64a10c815652b98d962cfd5778650601e6b64f9acf65acd", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "072cb0dacf10a789c1c66e70659dd74f28e05433f0e8ff64bb9be18202aa873a" + } + }, + { + "case": "pair-warm-full-analysis-ripgrep-1-candidate", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 1, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 406.921558, + "after": 389.03224899999987 + }, + "sdk_task_elapsed_seconds": 6.491604155999999, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3637, + "whole_task": 210103 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 1972.573103, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2821.314159, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 8.78309100000024, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 4.539468999999372, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 25.193970000000263, + "is_error": false + } + ], + "wall_seconds": 7.875, + "cpu_seconds": 7.678779, + "kernel_family_peak_bytes_including_page_cache": 830488576, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "ca3dd6c399a36046005fbbe4c29fa39ed2682342e4dc9bda8853b84805483698", + "receipt_sha256": { + "report.json": "0f3a8ffe5186a55e6a023564f5ccd741011fe12d449279a198c4bd5fa7868a22", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "3fd7a0c4fa21e220c161e6412b9adaa6412ffa6d50f83421333b7cf6c91c633b" + } + }, + { + "case": "pair-warm-full-analysis-ripgrep-2-candidate", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 2, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 391.32267900000005, + "after": 403.4871290000001 + }, + "sdk_task_elapsed_seconds": 5.948197807, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3637, + "whole_task": 210103 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2129.186502, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2276.2383820000005, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 9.258120999999846, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 4.698161000000255, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 27.1483589999998, + "is_error": false + } + ], + "wall_seconds": 7.375, + "cpu_seconds": 7.114094, + "kernel_family_peak_bytes_including_page_cache": 827604992, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "d9f86f41954f9cd377a6891a7141622c9a9d1730466cd559e1ec8202632eba6d", + "receipt_sha256": { + "report.json": "434cafcaad78b0f6e4eba8096c3a47ab62910cc64376b1400d755b4b9f646c64", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "fd53f45c541cdd3482b53490b166378891588386bb67aff1bf2aa8c3b40be336" + } + }, + { + "case": "pair-warm-full-analysis-ripgrep-2-baseline", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 2, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 632.018448, + "after": 652.2980579999994 + }, + "sdk_task_elapsed_seconds": 5.908541518, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3637, + "whole_task": 210103 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2011.5475129999998, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2278.4062710000003, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 10.58067999999912, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 5.203078999999889, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 78.48208000000068, + "is_error": false + } + ], + "wall_seconds": 7.779, + "cpu_seconds": 7.554551, + "kernel_family_peak_bytes_including_page_cache": 864243712, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "0f74ad598e0d26b2ba2dbce9ad4bc47c2603bbcdfe5f0bd5c5cb29bac73941cc", + "receipt_sha256": { + "report.json": "492a1c428b7fef0398392e037b657917293139961070a38d290e2e27466a47a6", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "b639aef5b79c060fbc61049896070f340293410888f3ab4e6032ac1e3db65508" + } + }, + { + "case": "pair-warm-full-analysis-ripgrep-3-baseline", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 3, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 641.710137, + "after": 621.6957379999994 + }, + "sdk_task_elapsed_seconds": 6.100206518, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3637, + "whole_task": 210103 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2021.9131730000001, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2435.729651, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 9.321620000000621, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 5.24703000000045, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 25.740249999999833, + "is_error": false + } + ], + "wall_seconds": 7.976, + "cpu_seconds": 7.746147, + "kernel_family_peak_bytes_including_page_cache": 852127744, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "42927a197a1e1344575a126134bcfe13abd5b56542df95e8a92f4d559eab86bb", + "receipt_sha256": { + "report.json": "5b66b2d31bc0ec389374e1d0cf0b544258bb5669d838be2514b95d60334a9d82", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "2a13c0612fbb19e3176523a0d5f47f824e80deda67d7df3d8f8f786a0ea1d9d2" + } + }, + { + "case": "pair-warm-full-analysis-ripgrep-3-candidate", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "ripgrep", + "pair": 3, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 823.202987, + "after": 741.9273069999999 + }, + "sdk_task_elapsed_seconds": 11.06374727, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_be5662081d3c5b609a5e65a78c732674d2fcc160e5b1173ca0d083316673eaa4", + "parent_semantic_sha256": "3561d500cece1ac5d49a02f1594148a9435d60f8f60acbadb9fae392faddcdfa", + "answer_sha256": "261c094fe6ba6c576502ecdc0c40cbc5951bccef28fe3e1189e4f9e38549232e", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3637, + "whole_task": 210103 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 3906.1100250000004, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 4334.156945000001, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 20.63727999999901, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 9.897678999999698, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 48.03172999999879, + "is_error": false + } + ], + "wall_seconds": 13.26, + "cpu_seconds": 13.056275, + "kernel_family_peak_bytes_including_page_cache": 816529408, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "c9057494114627f6bae57764c56b85aff352ba3439c45892116b56f7a057754d", + "receipt_sha256": { + "report.json": "96beff6546dbe50825af6f5b71373dda4fed1547d8d1b8551a6a43a25b44b1b0", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "025d2a4a61ada739628527a3de0a030f565a3e167f562b297231f81bf4937308" + } + }, + { + "case": "pair-warm-full-analysis-zellij-1-baseline", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 1111.643505, + "after": 1220.4191360000004 + }, + "sdk_task_elapsed_seconds": 12.016412178, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3557, + "whole_task": 210023 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 4239.632715, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 4433.1762340000005, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 20.536049999998795, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 8.524529000000257, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 47.01668000000063, + "is_error": false + } + ], + "wall_seconds": 15.209, + "cpu_seconds": 14.941863, + "kernel_family_peak_bytes_including_page_cache": 858275840, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "2f1d40a4295c7eb80d6bf13b8f75100525a9db44dcb9ab648bbad153782baffc", + "receipt_sha256": { + "report.json": "de1e1b5c7d5266f6ac432e5eaafa90de72ee05aa192b6c5fc8f013d398a99d79", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "b0978235af9f4cf59d9f2c6f73a95c2e1d7a9fbb84268bc3503ad2f14cff5ee5" + } + }, + { + "case": "pair-warm-full-analysis-zellij-1-candidate", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 741.981357, + "after": 788.9883659999996 + }, + "sdk_task_elapsed_seconds": 12.039295778, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3557, + "whole_task": 210023 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 4586.812655, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 4439.278764, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 109.45258900000044, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 8.251651000000493, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 46.57065999999941, + "is_error": false + } + ], + "wall_seconds": 14.501, + "cpu_seconds": 14.254371, + "kernel_family_peak_bytes_including_page_cache": 846639104, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "b4455b7dce5a3d245b966440cc096e2554612b8ca7310b0784296ffb72c47d28", + "receipt_sha256": { + "report.json": "cd969d9583c1b351581584d0b085de87796c223e38f07daa8c64b615048b6167", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "d37955be4dba86990db12af181a52bce2fafa1b02931a26a0d000d00eda987f2" + } + }, + { + "case": "pair-warm-full-analysis-zellij-2-candidate", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 806.2103970000001, + "after": 777.5037380000012 + }, + "sdk_task_elapsed_seconds": 11.464475301, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3557, + "whole_task": 210023 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 4075.6681659999995, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 4190.7756660000005, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 98.79082999999991, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 8.408760000000257, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 48.799410000001444, + "is_error": false + } + ], + "wall_seconds": 13.978, + "cpu_seconds": 13.717532, + "kernel_family_peak_bytes_including_page_cache": 852447232, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "6fac4a947ce192ed45303e766946405a3ebda54da548910e3884874916b463c6", + "receipt_sha256": { + "report.json": "a92e30030ddc7fea0416fe292833964d7c164f795923ef82b12f17f17d380dd6", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "22f79cf68be8f42e3ee83fa5961dfa64e043edd7de5d1df2ba7d04396a55c9d1" + } + }, + { + "case": "pair-warm-full-analysis-zellij-2-baseline", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 1184.083066, + "after": 1105.0592049999996 + }, + "sdk_task_elapsed_seconds": 11.775706637, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3557, + "whole_task": 210023 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 4295.240936, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 4250.6176080000005, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 20.260769000000437, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 8.750030000001061, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 69.82129700000041, + "is_error": false + } + ], + "wall_seconds": 14.995, + "cpu_seconds": 14.742113, + "kernel_family_peak_bytes_including_page_cache": 860213248, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "ce939303acd9825181d6d2e5913ce6d3f42f189abe9251155d44e9b51faf65d1", + "receipt_sha256": { + "report.json": "7690b183ad3a000f2ce60c0c65adee04e1ba9ad5ab0b0fe1ef15aa4e92845ef1", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "03257fef5ebda517b7d4c3e010eb6303fa9ad42b1befcce8cfdf9d560eddb3ed" + } + }, + { + "case": "pair-warm-full-analysis-zellij-3-baseline", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "baseline", + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 1077.7770229999999, + "after": 1166.9724650000007 + }, + "sdk_task_elapsed_seconds": 11.451355266999999, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3557, + "whole_task": 210023 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 4261.125856000001, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 4066.9330849999997, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 108.26580999999896, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 7.837577999998757, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 39.801830000000336, + "is_error": false + } + ], + "wall_seconds": 14.577, + "cpu_seconds": 14.317825, + "kernel_family_peak_bytes_including_page_cache": 854343680, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "0c680aa221a9a8987155388a17a24badd95954415bb6f49a7573a8cc8fc45878", + "receipt_sha256": { + "report.json": "00adc65bd872474e37767ed28542b94c1348170dcbc7ee90be350fae1a28d6d5", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "977007d6369fb13181286d0b3fa384277ecf4130d1ffdb567f760a223f11206c" + } + }, + { + "case": "pair-warm-full-analysis-zellij-3-candidate", + "cache": "warm", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "candidate", + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 763.411775, + "after": 749.4956320000001 + }, + "sdk_task_elapsed_seconds": 11.528995319, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 297, + "text_replies": 3557, + "whole_task": 210023 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 4219.337083, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 4105.8346010000005, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 99.36691299999984, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 7.591829000000871, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 42.155038999999306, + "is_error": false + } + ], + "wall_seconds": 13.881, + "cpu_seconds": 13.68354, + "kernel_family_peak_bytes_including_page_cache": 850964480, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "51ceefdeed3335672f8ed5778ddabd0ddb38e23e62da701974347c686226ca59", + "receipt_sha256": { + "report.json": "633cd6ebc1ba2eec07dedf6f00bb25eedc291c4a6eba5ee365196d1e30f02609", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "ca9632952d16dac33fa367869eedaae44e5876c78c663e2400162eb4405fa89f" + } + } + ], + "sdk_task_elapsed_scope": "SDK span from client connect through task checks and client/server close. Excludes pre/post runtime binding and preflight artifact/oracle loading. Diagnostic spans include inspector and forced GC. CPU is measured for the whole family only; per-span CPU is unmeasured.", + "warmup_receipts": { + "warmup-default-baseline": "27fcc560254cf12c55decef96a3c63935ad26fa4a73bb4506428eea06e28174f", + "warmup-default-candidate": "8445e9a5083976a4399ff31b8d211598492f9c4ff68ea5258b1dd4b329204069", + "warmup-full-baseline": "074942711a342d249909aeaf5230ef8581efbaba8180fa2039ce9759eb183041", + "warmup-full-candidate": "20898a99fd20feba9256ec8bdccb4f53e7a0fa9adda905ddc307a873597cb041" + }, + "heap_diagnostics": { + "scope": "Separate three-pair Zellij tasks per profile, with an explicitly launched loopback inspector. Four CDP calls verify the owned REA PID, read heap, force GC and read heap again after the completed SDK task. These whole-family costs include inspector and diagnostic GC overhead; they are excluded from the normal timing cohort. Heap values describe REA V8 only, not the client or the whole process family.", + "summary": [ + { + "profile": "default", + "baseline": { + "retained_v8_heap_bytes_after_gc": { + "median": 199055952, + "min": 199044064, + "max": 199077232 + }, + "wall_seconds": { + "median": 15.49, + "min": 15.392, + "max": 15.8 + }, + "cpu_seconds": { + "median": 15.246161, + "min": 15.206484, + "max": 15.583318 + }, + "sdk_task_elapsed_seconds": { + "median": 12.366389323, + "min": 12.34538828, + "max": 12.662170398 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 853696512, + "min": 834121728, + "max": 866893824 + } + }, + "candidate": { + "retained_v8_heap_bytes_after_gc": { + "median": 188997688, + "min": 188962176, + "max": 189127704 + }, + "wall_seconds": { + "median": 14.291, + "min": 13.354, + "max": 15.614 + }, + "cpu_seconds": { + "median": 14.122942, + "min": 12.937659, + "max": 15.419365 + }, + "sdk_task_elapsed_seconds": { + "median": 12.094785527, + "min": 10.880850585000001, + "max": 13.268578776 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 824492032, + "min": 823771136, + "max": 852635648 + } + } + }, + { + "profile": "full", + "baseline": { + "retained_v8_heap_bytes_after_gc": { + "median": 200550200, + "min": 200450744, + "max": 200596888 + }, + "wall_seconds": { + "median": 8.979, + "min": 8.882, + "max": 10.695 + }, + "cpu_seconds": { + "median": 8.769131, + "min": 8.681494, + "max": 10.339211 + }, + "sdk_task_elapsed_seconds": { + "median": 7.192107472, + "min": 7.061260099, + "max": 8.32227678 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 849682432, + "min": 847687680, + "max": 875266048 + } + }, + "candidate": { + "retained_v8_heap_bytes_after_gc": { + "median": 190518528, + "min": 190409104, + "max": 190681008 + }, + "wall_seconds": { + "median": 8.377, + "min": 8.279, + "max": 8.48 + }, + "cpu_seconds": { + "median": 8.141727, + "min": 8.107595, + "max": 8.314565 + }, + "sdk_task_elapsed_seconds": { + "median": 6.984184396000001, + "min": 6.922547829, + "max": 7.152248167 + }, + "kernel_family_peak_bytes_including_page_cache": { + "median": 864993280, + "min": 861691904, + "max": 873553920 + } + } + } + ], + "records": [ + { + "case": "heap-default-1-baseline", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "baseline", + "diagnostic_heap": true, + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 1184.5692089999998, + "after": 1090.3454590000001 + }, + "sdk_task_elapsed_seconds": 12.662170398, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 292, + "text_replies": 3552, + "whole_task": 53939 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 4687.039897, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 4315.405442, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 16.624126000000615, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 8.27212800000052, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 45.56881799999974, + "is_error": false + } + ], + "wall_seconds": 15.8, + "cpu_seconds": 15.583318, + "kernel_family_peak_bytes_including_page_cache": 834121728, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "a54b258e891721f1767f6d1690ae2a5953c756d42b19a519096d82e725b78b19", + "receipt_sha256": { + "report.json": "e7b85b695fa4ab00c930443c0662b900667173860191cd8e5793f3e5b9785e01", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "e8d7a880546372bdd78eb791df31a98a2eb86c2c6c285794062e0fff2173301b" + }, + "heap_observation": { + "scope": "Owned REA V8 heap after the complete SDK task; inspector and forced GC are diagnostic overhead", + "pid_verified": true, + "before_gc": { + "usedSize": 238140008, + "totalSize": 343531520, + "embedderHeapUsedSize": 0, + "backingStorageSize": 14617513 + }, + "after_gc": { + "usedSize": 199044064, + "totalSize": 203071488, + "embedderHeapUsedSize": 0, + "backingStorageSize": 13859325 + } + }, + "retained_v8_heap_bytes_after_gc": 199044064 + }, + { + "case": "heap-default-1-candidate", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "candidate", + "diagnostic_heap": true, + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 797.1624650000001, + "after": 717.3558400000002 + }, + "sdk_task_elapsed_seconds": 13.268578776, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 292, + "text_replies": 3552, + "whole_task": 53939 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 5039.826898, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 4561.911308, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 19.161004999999932, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 11.434347000000344, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 47.53335700000025, + "is_error": false + } + ], + "wall_seconds": 15.614, + "cpu_seconds": 15.419365, + "kernel_family_peak_bytes_including_page_cache": 823771136, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "a05b7cfac3c5401b542bce5a2baefc875ed5db089ef4c6e21039b5ccf9cbb9ac", + "receipt_sha256": { + "report.json": "08b4e85755d16318314a38e4c8f907f12476cbc95c15dfb38197d0c2d3df259b", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "8b03b41bd9facf340bda5e387a406dd1594135092ca17b858dcb97c95777bf8e" + }, + "heap_observation": { + "scope": "Owned REA V8 heap after the complete SDK task; inspector and forced GC are diagnostic overhead", + "pid_verified": true, + "before_gc": { + "usedSize": 217959688, + "totalSize": 342740992, + "embedderHeapUsedSize": 0, + "backingStorageSize": 14604502 + }, + "after_gc": { + "usedSize": 188962176, + "totalSize": 193892352, + "embedderHeapUsedSize": 0, + "backingStorageSize": 13847157 + } + }, + "retained_v8_heap_bytes_after_gc": 188962176 + }, + { + "case": "heap-default-2-candidate", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "candidate", + "diagnostic_heap": true, + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 730.484148, + "after": 676.7067239999997 + }, + "sdk_task_elapsed_seconds": 12.094785527, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 292, + "text_replies": 3552, + "whole_task": 53939 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 4467.100522000001, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 4121.728123, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 82.95370899999944, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 44.85511899999983, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 55.89133599999877, + "is_error": false + } + ], + "wall_seconds": 14.291, + "cpu_seconds": 14.122942, + "kernel_family_peak_bytes_including_page_cache": 852635648, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "aa22cf0482d788f2707bb03af7702cf57936c67cab108372d3fd376bd06582a4", + "receipt_sha256": { + "report.json": "1549aa7fa12a510fbadae4d5199a9c7432e8a1ef516773eaf3311b9961f5f744", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "1637727fe6c4e69828b34b40dd50a8349c7acd9d0666fe25ac285da2140212d1" + }, + "heap_observation": { + "scope": "Owned REA V8 heap after the complete SDK task; inspector and forced GC are diagnostic overhead", + "pid_verified": true, + "before_gc": { + "usedSize": 219276512, + "totalSize": 344051712, + "embedderHeapUsedSize": 0, + "backingStorageSize": 14604502 + }, + "after_gc": { + "usedSize": 189127704, + "totalSize": 193105920, + "embedderHeapUsedSize": 0, + "backingStorageSize": 13847157 + } + }, + "retained_v8_heap_bytes_after_gc": 189127704 + }, + { + "case": "heap-default-2-baseline", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "baseline", + "diagnostic_heap": true, + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 1117.844397, + "after": 1003.8425799999986 + }, + "sdk_task_elapsed_seconds": 12.366389323, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 292, + "text_replies": 3552, + "whole_task": 53939 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 4488.837582, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 4031.0900790000005, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 107.90856499999973, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 8.601328000000649, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 79.31721099999959, + "is_error": false + } + ], + "wall_seconds": 15.392, + "cpu_seconds": 15.206484, + "kernel_family_peak_bytes_including_page_cache": 853696512, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "52a30b841f35148d31adfa1699bc11aa5f86742f4d345dc26df61477f9eb6c2f", + "receipt_sha256": { + "report.json": "13245af8d89b17c8f4d2893ca42152613f1c2f4602c585f1a213fb1156b160b9", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "9b730cab0ae6cfcf2fdc74dd204c8df04864f9865c0f1182b308cf363f90ee35" + }, + "heap_observation": { + "scope": "Owned REA V8 heap after the complete SDK task; inspector and forced GC are diagnostic overhead", + "pid_verified": true, + "before_gc": { + "usedSize": 239489224, + "totalSize": 343531520, + "embedderHeapUsedSize": 0, + "backingStorageSize": 14617513 + }, + "after_gc": { + "usedSize": 199077232, + "totalSize": 203333632, + "embedderHeapUsedSize": 0, + "backingStorageSize": 13859325 + } + }, + "retained_v8_heap_bytes_after_gc": 199077232 + }, + { + "case": "heap-default-3-baseline", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "baseline", + "diagnostic_heap": true, + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 1110.245965, + "after": 1109.700221000001 + }, + "sdk_task_elapsed_seconds": 12.34538828, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 292, + "text_replies": 3552, + "whole_task": 53939 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 4695.11496, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 3850.7102049999994, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 80.53336099999979, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 13.786825999999564, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 83.7051109999993, + "is_error": false + } + ], + "wall_seconds": 15.49, + "cpu_seconds": 15.246161, + "kernel_family_peak_bytes_including_page_cache": 866893824, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "d5544a674818ef7a5adf105d7b472afa20d601abb36e1ccd0e9364ebc5e41f5b", + "receipt_sha256": { + "report.json": "8b20e2be190b973361b66d7471f4ecfbc28329342630b3309f8f82c611b67c25", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "819f24ec467b54f457edbbc5f44b21be43284f16eb0231f2f8114695c809f524" + }, + "heap_observation": { + "scope": "Owned REA V8 heap after the complete SDK task; inspector and forced GC are diagnostic overhead", + "pid_verified": true, + "before_gc": { + "usedSize": 235174488, + "totalSize": 343531520, + "embedderHeapUsedSize": 0, + "backingStorageSize": 14617513 + }, + "after_gc": { + "usedSize": 199055952, + "totalSize": 203595776, + "embedderHeapUsedSize": 0, + "backingStorageSize": 13859325 + } + }, + "retained_v8_heap_bytes_after_gc": 199055952 + }, + { + "case": "heap-default-3-candidate", + "cache": "cold", + "profile": "default", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "candidate", + "diagnostic_heap": true, + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 890.6868929999999, + "after": 596.293345 + }, + "sdk_task_elapsed_seconds": 10.880850585000001, + "catalog_sha256": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 49670, + "arguments": 292, + "text_replies": 3552, + "whole_task": 53939 + }, + "raw_catalog_result_tokens_all_lists": 1512330, + "raw_catalog_result_bytes_all_lists": 5870296, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 4613.6814859999995, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 3331.6534970000002, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 8.621887999999672, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 4.156629000000976, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 26.38917399999991, + "is_error": false + } + ], + "wall_seconds": 13.354, + "cpu_seconds": 12.937659, + "kernel_family_peak_bytes_including_page_cache": 824492032, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "04fb1743eb78097f498152055f337a6914760a2cf99580d02243e39105ff245e", + "receipt_sha256": { + "report.json": "1e49769d9b1266ea5efabcde2ef586ea769b0a381e924ba0d565695e353812df", + "catalog.json": "9bc3af6466ba725f369618b68948785e51bc4001680e0efb1bf72bfadb0ff602", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "458a968487cf6a933b83a464d3eedb8144fab8ffccf60da8333d738ebef16bc5" + }, + "heap_observation": { + "scope": "Owned REA V8 heap after the complete SDK task; inspector and forced GC are diagnostic overhead", + "pid_verified": true, + "before_gc": { + "usedSize": 218634944, + "totalSize": 343789568, + "embedderHeapUsedSize": 0, + "backingStorageSize": 14604502 + }, + "after_gc": { + "usedSize": 188997688, + "totalSize": 193105920, + "embedderHeapUsedSize": 0, + "backingStorageSize": 13847157 + } + }, + "retained_v8_heap_bytes_after_gc": 188997688 + }, + { + "case": "heap-full-1-baseline", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "baseline", + "diagnostic_heap": true, + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 933.0847570000001, + "after": 630.2556980000008 + }, + "sdk_task_elapsed_seconds": 8.32227678, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 292, + "text_replies": 3552, + "whole_task": 210013 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2595.894682, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2603.7512930000003, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 81.16515100000015, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 5.179848000000675, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 28.32961399999931, + "is_error": false + } + ], + "wall_seconds": 10.695, + "cpu_seconds": 10.339211, + "kernel_family_peak_bytes_including_page_cache": 847687680, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "93121a0c1600c3dc1558371e3498026601fa6c5f277c169814b62f975a0acbe2", + "receipt_sha256": { + "report.json": "5643bf52b8e8df3d5ef5f9ad81d6c06a8b34d8e936859610c9fb58ef15a45e26", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "97b6d0f20daf9eb7d29750bcf89795537462daa4f7ef07a4ba7ca8ae8edaf07a" + }, + "heap_observation": { + "scope": "Owned REA V8 heap after the complete SDK task; inspector and forced GC are diagnostic overhead", + "pid_verified": true, + "before_gc": { + "usedSize": 211609016, + "totalSize": 346202112, + "embedderHeapUsedSize": 0, + "backingStorageSize": 49145864 + }, + "after_gc": { + "usedSize": 200550200, + "totalSize": 205168640, + "embedderHeapUsedSize": 0, + "backingStorageSize": 13859325 + } + }, + "retained_v8_heap_bytes_after_gc": 200550200 + }, + { + "case": "heap-full-1-candidate", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 1, + "role": "candidate", + "diagnostic_heap": true, + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 402.02252, + "after": 390.3909530000001 + }, + "sdk_task_elapsed_seconds": 6.922547829, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 292, + "text_replies": 3552, + "whole_task": 210013 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2276.842082, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2307.931367, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 8.780717999999979, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 4.874119000000064, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 29.914593000000423, + "is_error": false + } + ], + "wall_seconds": 8.279, + "cpu_seconds": 8.107595, + "kernel_family_peak_bytes_including_page_cache": 861691904, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "925602f88b18107329894713aa8b168f67e86f9e2343de28af61a78aeabb5769", + "receipt_sha256": { + "report.json": "3bebdbf274748600336a833742d30393ac1b88ea5f39fbef7f584ab93fd53314", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "a575a270e4b284c87ab001b937e761baab258ba90dcb8b2262963b16334e7947" + }, + "heap_observation": { + "scope": "Owned REA V8 heap after the complete SDK task; inspector and forced GC are diagnostic overhead", + "pid_verified": true, + "before_gc": { + "usedSize": 228392936, + "totalSize": 347443200, + "embedderHeapUsedSize": 0, + "backingStorageSize": 14604499 + }, + "after_gc": { + "usedSize": 190409104, + "totalSize": 193630208, + "embedderHeapUsedSize": 0, + "backingStorageSize": 13847157 + } + }, + "retained_v8_heap_bytes_after_gc": 190409104 + }, + { + "case": "heap-full-2-candidate", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "candidate", + "diagnostic_heap": true, + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 386.29567499999996, + "after": 396.9566339999992 + }, + "sdk_task_elapsed_seconds": 7.152248167, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 292, + "text_replies": 3552, + "whole_task": 210013 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2319.483378, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2354.8818140000003, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 8.729637999999795, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 4.63966900000014, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 27.045774999999594, + "is_error": false + } + ], + "wall_seconds": 8.48, + "cpu_seconds": 8.314565, + "kernel_family_peak_bytes_including_page_cache": 873553920, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "0fca1bb17d67d5033c93944c0e6141244447ee73d35591cde33ee7bd277cb690", + "receipt_sha256": { + "report.json": "e25bbcd1304f478327687c44ff5aa0815cc13a9fdcd4d143a61bef846be8b8b7", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "3758bc587adbe3157a8ef0c2b8f6d4c7361346c25d4a01a8811c0189a30f54ba" + }, + "heap_observation": { + "scope": "Owned REA V8 heap after the complete SDK task; inspector and forced GC are diagnostic overhead", + "pid_verified": true, + "before_gc": { + "usedSize": 228568600, + "totalSize": 348229632, + "embedderHeapUsedSize": 0, + "backingStorageSize": 14604499 + }, + "after_gc": { + "usedSize": 190518528, + "totalSize": 194154496, + "embedderHeapUsedSize": 0, + "backingStorageSize": 13847157 + } + }, + "retained_v8_heap_bytes_after_gc": 190518528 + }, + { + "case": "heap-full-2-baseline", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 2, + "role": "baseline", + "diagnostic_heap": true, + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 621.8084140000001, + "after": 611.0689979999997 + }, + "sdk_task_elapsed_seconds": 7.061260099, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 292, + "text_replies": 3552, + "whole_task": 210013 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2359.615527, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2293.357594, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 8.490437999999813, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 4.298259000000144, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 29.099463999999898, + "is_error": false + } + ], + "wall_seconds": 8.882, + "cpu_seconds": 8.681494, + "kernel_family_peak_bytes_including_page_cache": 875266048, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "425287db9a0ca2534a86118c014beb940466ec0cb6c595ce5ea4fec44abe5930", + "receipt_sha256": { + "report.json": "b57afca726492118ab266c60f4cf9f16b7134933d768119dc2d1f875c32b3e27", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "86f3d37c770ace750d27a64e7b0cdd8948d3316d967c87360076380653cb0f59" + }, + "heap_observation": { + "scope": "Owned REA V8 heap after the complete SDK task; inspector and forced GC are diagnostic overhead", + "pid_verified": true, + "before_gc": { + "usedSize": 211816064, + "totalSize": 346202112, + "embedderHeapUsedSize": 0, + "backingStorageSize": 49138168 + }, + "after_gc": { + "usedSize": 200450744, + "totalSize": 204120064, + "embedderHeapUsedSize": 0, + "backingStorageSize": 13859325 + } + }, + "retained_v8_heap_bytes_after_gc": 200450744 + }, + { + "case": "heap-full-3-baseline", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "baseline", + "diagnostic_heap": true, + "runtime_binding_sha256": "c6bc2b9972b09db9bcb75f712474e561f4823df85e1e3c26ae952ee5d86e58ad", + "runtime_audit_ms": { + "before": 615.757168, + "after": 601.8970529999988 + }, + "sdk_task_elapsed_seconds": 7.192107472, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 292, + "text_replies": 3552, + "whole_task": 210013 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2435.875768, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2194.647322, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 64.56364599999961, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 5.169159000000036, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 26.822353999999905, + "is_error": false + } + ], + "wall_seconds": 8.979, + "cpu_seconds": 8.769131, + "kernel_family_peak_bytes_including_page_cache": 849682432, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "585eb6cba94e658723a86f2990cbec317eccebee9c8e547cdc840aecb1259ee8", + "receipt_sha256": { + "report.json": "f8b1fd4dbee851d5bbd8fccbe9418d2034813422fad8dca204f0e0ba8a4bb8d9", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "52b94176a1d629f5202331278e058ebd4bfcb96b020b830eacc05bec9f1020e0" + }, + "heap_observation": { + "scope": "Owned REA V8 heap after the complete SDK task; inspector and forced GC are diagnostic overhead", + "pid_verified": true, + "before_gc": { + "usedSize": 245802760, + "totalSize": 350068736, + "embedderHeapUsedSize": 0, + "backingStorageSize": 14617510 + }, + "after_gc": { + "usedSize": 200596888, + "totalSize": 205955072, + "embedderHeapUsedSize": 0, + "backingStorageSize": 13859325 + } + }, + "retained_v8_heap_bytes_after_gc": 200596888 + }, + { + "case": "heap-full-3-candidate", + "cache": "cold", + "profile": "full", + "phase": "analysis", + "artifact": "zellij", + "pair": 3, + "role": "candidate", + "diagnostic_heap": true, + "runtime_binding_sha256": "697499b15c958c7f5206de2ce0b1f29ceb87097cc8744e861b4c932ddc86b7c6", + "runtime_audit_ms": { + "before": 385.448448, + "after": 379.3039600000002 + }, + "sdk_task_elapsed_seconds": 6.984184396000001, + "catalog_sha256": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "parent_evidence_id": "ev_8c9124795a5cf45c2bf816bbfa0ced9c3025550e72d4e3facf5fb2e266d3dadb", + "parent_semantic_sha256": "df1930ee07a13eb4b47c91f2834c4b0f8d99089e051a02083c7c3cf03bb30467", + "answer_sha256": "6facddf755f558b0c9989cf8db5fb0efd8271f954021d1d9521d686b08185eae", + "tokens_estimated": { + "question_and_recipe": 71, + "server_instructions": 354, + "input_catalog_once": 205744, + "arguments": 292, + "text_replies": 3552, + "whole_task": 210013 + }, + "raw_catalog_result_tokens_all_lists": 1824872, + "raw_catalog_result_bytes_all_lists": 7175584, + "actual_model_usage": null, + "protocol_era": "legacy", + "protocol_requests": { + "initialize": 1, + "notifications/initialized": 1, + "tools/list": 2, + "tools/call": 5 + }, + "calls": [ + { + "name": "inspect_rust_binary", + "elapsed_ms": 2335.296106, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 2272.7854310000002, + "is_error": false + }, + { + "name": "inspect_analysis_view", + "elapsed_ms": 9.114247999999861, + "is_error": false + }, + { + "name": "inspect_rust_binary", + "elapsed_ms": 4.943358999999873, + "is_error": true + }, + { + "name": "export_evidence_bundle", + "elapsed_ms": 27.21304499999951, + "is_error": false + } + ], + "wall_seconds": 8.377, + "cpu_seconds": 8.141727, + "kernel_family_peak_bytes_including_page_cache": 864993280, + "resource_stop": null, + "cleanup_verified": true, + "final_whole_scope_counters": null, + "log_sha256": "76b2efaad3fb0d8d5f49b6a61369cbc4109b098bb5a36d1f51406a32c667a5ec", + "receipt_sha256": { + "report.json": "11a9fe53cade3b6c0edf66488c7e398280da464283abd0e8747e9614c4ec17bc", + "catalog.json": "de3104b00ecd984a5aee7f0bdd2d8db2bad4b21b7f1fc7899d434952cfd2cac1", + "server.json": "ef711c3e11bf620b0b0de35e6c413325dbfa3fd3c4c851cb2dd8689d6b59ff6c", + "transcript.json": "495273e19ff9a019aea0799248a73bcca6ffceb46229ba431e4c6375291f709d" + }, + "heap_observation": { + "scope": "Owned REA V8 heap after the complete SDK task; inspector and forced GC are diagnostic overhead", + "pid_verified": true, + "before_gc": { + "usedSize": 229169088, + "totalSize": 347967488, + "embedderHeapUsedSize": 0, + "backingStorageSize": 14604499 + }, + "after_gc": { + "usedSize": 190681008, + "totalSize": 195727360, + "embedderHeapUsedSize": 0, + "backingStorageSize": 13847157 + } + }, + "retained_v8_heap_bytes_after_gc": 190681008 + } + ] + } +} diff --git a/experiments/analysis-efficiency/mcp-integer-allocation.md b/experiments/analysis-efficiency/mcp-integer-allocation.md new file mode 100644 index 0000000000..64a85ac79e --- /dev/null +++ b/experiments/analysis-efficiency/mcp-integer-allocation.md @@ -0,0 +1,143 @@ +# Integer validator allocation after MCP materialization + +Issue #6236; PR #4360. Linux x64, 2026-10-22. + + + +Baseline `main@4a4bbab3c337701febeb6b532ace49041c4876e0`; candidate `461f342c71a72ef2be60912391df2393aa4e2ea3`. This is a pinned comparison. + +In separate inspector/forced-GC diagnostics, retained REA V8 heap decreases by about 9.6 MiB. The three-pair ranges do not overlap in either profile. Inspector perturbation is included. Normal task timing, CPU and peak memory are reported separately; these observations do not establish a general latency or peak-memory reduction. + + + +Directory discovery uses recorded advertisements after #4424; this study separates it from completed tasks that materialize canonical handlers. Context is unchanged. + +## Change and compatibility + +Replace 1,247 argument-free `z.number().int()` constructions with `z.int()` across 175 existing source files. Keep current shared schema owners, refinements, bounds, defaults and metadata. AST-token comparison against the baseline, after normalizing this construction and formatting, is equal for every touched source file. No new tools, provider effects, caches or response contracts. + +The locked Zod 4.4.3 chained form retains a `ZodNumber` with a separate `ZodNumberFormat` check; direct construction uses the format itself. Incur 0.6.1 coerces argv strings only for `ZodNumber`. Existing CLI declarations and shared-input exceptions therefore retain the chained form. The actual compiled CLI registers 160 leaf commands; 104 numeric argument/option fields have identical results/errors in 974 installed-Incur parser cases across both runtimes, each field with an accepted probe. Fields are isolated from unrelated required options and no handlers are invoked. This is consumer-boundary coverage, not a real-engine claim. + +Seven dependency-boundary variants match parsed values and complete error issues for 126 cases, including fractions, nonfinite values, strings/null/undefined and unsafe integers; 14 JSON Schema projections match in draft-07/draft-2020-12. Actual SDK advertisements match byte-for-byte in both profiles before/after materialization and across roles. + +## Tasks, artifacts and bounds + +Reuse the shared SDK task driver and independent ELF/section/zlib/JSON oracles from [the catalog study](mcp-input-catalog.md): official Alpine v3.21 x86_64 ripgrep 14.1.1-r0 and Zellij 0.40.0-r0. All 42/422 packages and 88/1,063 edges match the independent oracles. Select serde name/version/kind, repeat exact retained-parent reads twice, verify a canonical negative-offset refusal, export/check complete Evidence and confirm the unchanged directory. `kind: null` stays unknown. Targets are not executed; dependency presence does not establish runtime use. Acquisition URLs, archive/executable/oracle hashes and complete answers are in [the receipts](mcp-integer-allocation.json). Previously acquired public bytes are rehashed, not redownloaded. + +Normal cohort: three alternating baseline/candidate pairs for each task × cold/warm server compile cache × default compact/full inputs: 72 trials, plus four excluded full-task warm priming runs. Separate diagnostic cohort: three alternating pairs per profile, cold Zellij tasks, 12 trials. All pass, with identical complete parent IDs/hashes and answers. + +Node 24.18.0/npm 11.16.0; fresh client/server and HOME per trial, driver compile cache disabled. Each trial is serial, pinned to one CPU, 4 GiB hard/3 GiB early stop, no swap, at most 192 tasks. Before/after checks bind clean source, all compiled JS/JSON assets (1,990 baseline / 1,990 candidate files), scripts and manifests; producer and resource-observer hashes are also bound. No OOM, resource stop or leftover payload processes. Whole-family measurements include SDK validation, extra calls, source/compiled audits and oracle checking; kernel peak includes file cache. Build/acquisition/oracle generation and priming are excluded. Warm uses a populated role/profile-specific Node cache; hit rate and OS page cache are unmeasured, and audits warm compiled-file pages. + +## Normal task costs + +Medians, baseline → candidate; all ranges are in the JSON. No inspector or diagnostic GC runs in this cohort. + + + +| Task | Cache | Input profile | Wall s | Family CPU s | Family peak MiB | +| --------- | ----- | ------------- | --------------: | --------------: | --------------: | +| directory | cold | default | 2.739 → 2.239 | 2.553 → 2.075 | 247.4 → 248.4 | +| directory | cold | full | 2.940 → 2.437 | 2.682 → 2.217 | 348.0 → 346.8 | +| directory | warm | default | 2.639 → 2.135 | 2.461 → 1.980 | 251.8 → 246.2 | +| directory | warm | full | 2.840 → 2.338 | 2.666 → 2.144 | 348.6 → 347.2 | +| ripgrep | cold | default | 7.571 → 7.169 | 7.372 → 6.918 | 798.8 → 791.1 | +| zellij | cold | default | 7.876 → 7.373 | 7.623 → 7.134 | 812.2 → 810.5 | +| ripgrep | cold | full | 7.876 → 7.475 | 7.710 → 7.295 | 803.7 → 801.2 | +| zellij | cold | full | 8.079 → 7.573 | 7.852 → 7.378 | 815.7 → 819.1 | +| ripgrep | warm | default | 7.575 → 6.977 | 7.352 → 6.810 | 815.0 → 791.6 | +| zellij | warm | default | 7.774 → 7.178 | 7.581 → 6.981 | 820.9 → 822.0 | +| ripgrep | warm | full | 7.976 → 7.875 | 7.746 → 7.679 | 812.7 → 789.3 | +| zellij | warm | full | 14.995 → 13.978 | 14.742 → 13.718 | 818.5 → 811.5 | + + + +### SDK span and audit separation + + + +Cold/default directory audit wall medians are 1.273 s baseline / 0.782 s candidate; SDK spans are 0.944 → 0.948 s. Whole-family costs include those experimental audits. Their cause and per-span CPU are unmeasured. + +SDK span from client connect through task checks and client/server close. Excludes pre/post runtime binding and preflight artifact/oracle loading. Diagnostic spans include inspector and forced GC. CPU is measured for the whole family only; per-span CPU is unmeasured. + +| Task | Cache | Inputs | SDK span s, baseline → candidate | +| --------- | ----- | ------- | -------------------------------: | +| directory | cold | default | 0.944 → 0.948 | +| directory | cold | full | 1.067 → 1.102 | +| directory | warm | default | 0.888 → 0.878 | +| directory | warm | full | 1.038 → 1.042 | +| ripgrep | cold | default | 5.778 → 5.752 | +| zellij | cold | default | 5.998 → 5.991 | +| ripgrep | cold | full | 6.077 → 6.119 | +| zellij | cold | full | 6.228 → 6.209 | +| ripgrep | warm | default | 5.743 → 5.656 | +| zellij | warm | default | 5.965 → 5.788 | +| ripgrep | warm | full | 6.100 → 6.492 | +| zellij | warm | full | 11.776 → 11.529 | + + + +Full-profile warm Zellij is slower than its cold condition in both roles in this cohort. Cache hit rate and the cause of this observation are unmeasured, and cold/warm groups run sequentially. These timings support neither a general cache speedup nor a causal regression attribution. + +## Separate retained-heap diagnostics + +The same completed SDK task launches only its owned REA process with `--inspect=127.0.0.1:0`. Four CDP calls verify the owned transport PID, read heap, force GC and read heap again. The endpoint comes from that child’s stderr; the PID is a cross-check of the owned endpoint, not sole ownership proof. The inspector socket closes before MCP shutdown. These V8 values include inspector perturbation and exclude the client; diagnostic wall/CPU/family peaks include inspector and forced-GC overhead and are not normal-task timing results. + + + +| Inputs | REA V8 retained MiB | Baseline range | Candidate range | Diagnostic wall s | CPU s | Family peak MiB | +| ------- | ------------------: | --------------: | --------------: | ----------------: | --------------: | --------------: | +| default | 189.835 → 180.242 | 189.823–189.855 | 180.208–180.366 | 15.490 → 14.291 | 15.246 → 14.123 | 814.1 → 786.3 | +| full | 191.260 → 181.693 | 191.165–191.304 | 181.588–181.848 | 8.979 → 8.377 | 8.769 → 8.142 | 810.3 → 824.9 | + + + +A mismatched PID is rejected; removing only that guard makes the negative oracle fail. Both connections in that check use the same owned REA endpoint, with no foreign-process attachment. Aggregation rejects diagnostic GC in a normal trial. Historical #4424 receipt reaggregation preserves previous metrics and adds the separately reported SDK-span fields; its aggregator source hash changes. + +## Context accounting + + + +tiktoken==0.14.0/cl100k_base; estimates, not model usage. Actual model usage is unmeasured. + +| Profile | Input directory once | Directory task | ripgrep task | Zellij task | +| ------- | -------------------: | -------------: | -----------: | ----------: | +| default | 49,670 | 50,840 | 54,029 | 53,949 | +| full | 205,744 | 206,914 | 210,103 | 210,023 | + +Raw SDK directory costs per list: 756,165/912,436 tokens and 2,935,148/3,587,792 bytes for default/full. + +Question, explicit recipe, server instructions, one complete name/description/input-schema directory, every tool argument and text reply, plus prompt directory for discovery. This projection assumes the client retains a single unchanged directory. Raw catalog result costs include every observed tools/list result separately, with output schemas and without JSON-RPC envelopes. SDK initialization/framing, reasoning and actual model usage are unmeasured. The analysis task includes retained-read, rejection, export/oracle and post-materialization directory checks. + + + +## Validation and reproduction + +- Both runtime builds and all six static checks plus architecture guards pass. Before the final main synchronization, 5,972 source/contract/public CLI/MCP tests pass across 323 files; four skip for unavailable/guarded coverage. After synchronization, both builds/static checks repeat successfully, 77 affected producer and CLI/MCP tests pass, and all 974 registered numeric-parameter parser cases match again. Includes real SQLite CLI/MCP record/column selection and JavaScript heap/deadline preservation. A first direct schema-validity invocation lacked generated catalog metadata; the supported focused entry generates it and all 15 cases pass. A later affected-test invocation selected two nonexistent paths; the corrected three-file producer/consumer run is the 77-case result above. Neither setup failure was counted as a passing test, and no production or timeout change was needed. +- All 84 measured tasks and four warm priming tasks pass independent oracles, canonical refusal, parent/directory identity and owned cleanup checks. This does not verify external Hopper/Ghidra/IDA, Android devices, all providers or foreign OS behavior. The earlier macOS numbers in #4360 describe a different revision/platform and are not combined with these results. + +Build the pinned baseline/candidate in separate clean worktrees with the locked toolchain. Use the candidate’s producer scripts for both roles. `measurement_inputs` in the JSON records the complete matrix, questions/recipes, runtime bindings and producer hashes; extract it unchanged as the bindings file. Historical receipts require their matching producer revision. One normal task: + +```bash +NODE_DISABLE_COMPILE_CACHE=1 node experiments/analysis-efficiency/mcp-input-catalog.mjs \ + --runtime "$CANDIDATE_RUNTIME" --bindings "$MEASUREMENT_INPUTS" --role candidate \ + --artifact "$RIPGREP_BINARY" --oracle "$RIPGREP_ORACLE" \ + --output "$NEW_CASE_DIRECTORY" --profile default --phase analysis --cache cold +``` + +Run each task through `resource-run.py --observe-payload-exit --` to obtain whole-family counters. For warm runs replace `--cache cold` with `--cache warm --cache-root ` after one complete priming task. For the separate Zellij diagnostic tasks add `--diagnostic-heap` and use cold cache. Keep their case names/logs aligned with `measurement_inputs`; aggregate both cohorts with: + +```bash +python experiments/analysis-efficiency/mcp-startup-costs.py "$RECEIPT_ROOT" \ + --output mcp-integer-allocation.json +``` + +The aggregator requires the recorded tiktoken version, exact catalog/parent/runtime/producer/guard identities, clean source, successful payload cleanup and matching matrix coverage. Default driver behavior continues without an inspector; the heap flag is confined to the experiment. + +Regenerate or verify every numerical section directly from the committed JSON: + +```bash +node experiments/analysis-efficiency/mcp-integer-report.mjs +node experiments/analysis-efficiency/mcp-integer-report.mjs --check +``` + +The documentation conformance gate checks current receipts, rejects stale normal/heap tables, and refuses missing producer markers without writing. diff --git a/experiments/analysis-efficiency/mcp-integer-report.mjs b/experiments/analysis-efficiency/mcp-integer-report.mjs new file mode 100644 index 0000000000..839102e50f --- /dev/null +++ b/experiments/analysis-efficiency/mcp-integer-report.mjs @@ -0,0 +1,212 @@ +// One producer for the numerical sections of the committed allocation report. +import assert from "node:assert/strict"; +import { readFile, writeFile } from "node:fs/promises"; +import { parseArgs } from "node:util"; + +const { values } = parseArgs({ + options: { + data: { type: "string" }, + markdown: { type: "string" }, + check: { type: "boolean", default: false }, + }, +}); +const dataPath = + values.data ?? new URL("mcp-integer-allocation.json", import.meta.url); +const markdownPath = + values.markdown ?? new URL("mcp-integer-allocation.md", import.meta.url); +const data = JSON.parse(await readFile(dataPath, "utf8")); +assert.equal(data.status, "passed"); +const original = await readFile(markdownPath, "utf8"); +const fixed = (value, digits = 3) => { + assert.ok(Number.isFinite(value)); + return value.toFixed(digits); +}; +const mib = (value, digits = 1) => fixed(value / 2 ** 20, digits); +const median = (values) => { + assert.ok(values.length > 0); + const sorted = [...values].sort((a, b) => a - b); + const middle = Math.floor(sorted.length / 2); + return sorted.length % 2 + ? sorted[middle] + : (sorted[middle - 1] + sorted[middle]) / 2; +}; +const table = (headers, rows, right = []) => + [ + `| ${headers.join(" | ")} |`, + `| ${headers.map((_, index) => (right.includes(index) ? "---:" : "---")).join(" | ")} |`, + ...rows.map((row) => `| ${row.join(" | ")} |`), + ].join("\n"); +const pair = (item, key, format = fixed) => + `${format(item.baseline[key].median)} → ${format(item.candidate[key].median)}`; +const heapMetric = "retained_v8_heap_bytes_after_gc"; +const heaps = data.heap_diagnostics.summary; +const changes = heaps.map( + (item) => + (item.baseline[heapMetric].median - item.candidate[heapMetric].median) / + 2 ** 20, +); +const changesText = [...new Set(changes.map((value) => fixed(value, 1)))].join( + "–", +); +const separated = heaps.every( + (item) => item.baseline[heapMetric].min > item.candidate[heapMetric].max, +); +const provenance = `Baseline \`main@${data.measurement_inputs.baseline_revision}\`; candidate \`${data.measurement_inputs.candidate_revision}\`. This is a pinned comparison.\n\nIn separate inspector/forced-GC diagnostics, retained REA V8 heap decreases by about ${changesText} MiB. ${separated ? "The three-pair ranges do not overlap in either profile." : "Ranges overlap; inspect the observations below."} Inspector perturbation is included. Normal task timing, CPU and peak memory are reported separately; these observations do not establish a general latency or peak-memory reduction.`; +const normal = table( + [ + "Task", + "Cache", + "Input profile", + "Wall s", + "Family CPU s", + "Family peak MiB", + ], + data.summary.map((item) => [ + item.artifact ?? "directory", + item.cache, + item.profile, + pair(item, "wall_seconds"), + pair(item, "cpu_seconds"), + pair(item, "kernel_family_peak_bytes_including_page_cache", mib), + ]), + [3, 4, 5], +); +const discovery = data.summary.find( + (item) => + item.phase === "discovery" && + item.cache === "cold" && + item.profile === "default", +); +assert.ok(discovery); +const audit = (role) => + median( + data.records + .filter( + (row) => + row.phase === "discovery" && + row.cache === "cold" && + row.profile === "default" && + row.role === role, + ) + .map( + (row) => + (row.runtime_audit_ms.before + row.runtime_audit_ms.after) / 1000, + ), + ); +const sdk = + `Cold/default directory audit wall medians are ${fixed(audit("baseline"))} s baseline / ${fixed(audit("candidate"))} s candidate; SDK spans are ${pair(discovery, "sdk_task_elapsed_seconds")} s. Whole-family costs include those experimental audits. Their cause and per-span CPU are unmeasured.\n\n${data.sdk_task_elapsed_scope}\n\n` + + table( + ["Task", "Cache", "Inputs", "SDK span s, baseline → candidate"], + data.summary.map((item) => [ + item.artifact ?? "directory", + item.cache, + item.profile, + pair(item, "sdk_task_elapsed_seconds"), + ]), + [3], + ); +const heap = table( + [ + "Inputs", + "REA V8 retained MiB", + "Baseline range", + "Candidate range", + "Diagnostic wall s", + "CPU s", + "Family peak MiB", + ], + heaps.map((item) => [ + item.profile, + pair(item, heapMetric, (value) => mib(value, 3)), + ...["baseline", "candidate"].map( + (role) => + `${mib(item[role][heapMetric].min, 3)}–${mib(item[role][heapMetric].max, 3)}`, + ), + pair(item, "wall_seconds"), + pair(item, "cpu_seconds"), + pair(item, "kernel_family_peak_bytes_including_page_cache", mib), + ]), + [1, 2, 3, 4, 5, 6], +); +const integer = (value) => new Intl.NumberFormat("en-US").format(value); +const tokens = (profile, phase, artifact) => { + const values = data.records + .filter( + (row) => + row.profile === profile && + row.phase === phase && + row.artifact === artifact, + ) + .map((row) => row.tokens_estimated.whole_task); + assert.ok(values.length > 0); + return [...new Set([Math.min(...values), Math.max(...values)])] + .map(integer) + .join("–"); +}; +const catalogs = data.catalogs; +const context = + `${data.tokenizer}. Actual model usage is unmeasured.\n\n` + + table( + [ + "Profile", + "Input directory once", + "Directory task", + "ripgrep task", + "Zellij task", + ], + ["default", "full"].map((profile) => [ + profile, + integer(catalogs[profile].input_catalog_tokens), + tokens(profile, "discovery", null), + tokens(profile, "analysis", "ripgrep"), + tokens(profile, "analysis", "zellij"), + ]), + [1, 2, 3, 4], + ) + + `\n\nRaw SDK directory costs per list: ${integer(catalogs.default.raw_catalog_tokens)}/${integer(catalogs.full.raw_catalog_tokens)} tokens and ${integer(catalogs.default.raw_catalog_bytes)}/${integer(catalogs.full.raw_catalog_bytes)} bytes for default/full.\n\n${data.context_scope}`; +const sections = { provenance, normal, sdk, heap, context }; +// oxfmt may pad table cells and separator dashes; neither changes report facts. +const normalized = (value) => + value + .trim() + .replace(/\s+/gu, " ") + .replace(/\s*\|\s*/gu, "|") + .replace( + /(?<=\|)(:)?-{3,}(:)?(?=\|)/gu, + (_, left, right) => `${left ?? ""}---${right ?? ""}`, + ); +let rendered = original; +const changed = []; +for (const [name, content] of Object.entries(sections)) { + const begin = ``; + const end = ``; + assert.equal( + rendered.split(begin).length, + 2, + `Expected one opening report marker: ${name}`, + ); + assert.equal( + rendered.split(end).length, + 2, + `Expected one closing report marker: ${name}`, + ); + const start = rendered.indexOf(begin) + begin.length; + const finish = rendered.indexOf(end); + assert.ok(finish > start, `Invalid report marker order: ${name}`); + if (normalized(rendered.slice(start, finish)) !== normalized(content)) { + changed.push(name); + rendered = + rendered.slice(0, start) + `\n\n${content}\n\n` + rendered.slice(finish); + } +} +if (values.check) { + assert.equal( + changed.length, + 0, + `Generated allocation report differs: ${changed.join(", ")}`, + ); + console.log("Allocation report matches committed receipt data"); +} else if (changed.length) { + await writeFile(markdownPath, rendered); + console.log(`Updated allocation report sections: ${changed.join(", ")}`); +} diff --git a/experiments/analysis-efficiency/mcp-retained-heap.mjs b/experiments/analysis-efficiency/mcp-retained-heap.mjs new file mode 100644 index 0000000000..1b62164610 --- /dev/null +++ b/experiments/analysis-efficiency/mcp-retained-heap.mjs @@ -0,0 +1,107 @@ +// Diagnostic only: inspect the explicitly launched REA process after its task. +import assert from "node:assert/strict"; + +export const sampleRetainedHeap = async (endpoint, expectedPid) => { + const url = new URL(endpoint); + assert.equal(url.protocol, "ws:"); + assert.equal(url.hostname, "127.0.0.1"); + assert.ok(Number.isSafeInteger(expectedPid) && expectedPid > 0); + const socket = new WebSocket(url); + let sequence = 0; + const pending = new Map(); + const closed = new Promise((resolve) => { + socket.addEventListener("close", resolve, { once: true }); + }); + const rejectPending = (cause) => { + for (const request of pending.values()) { + clearTimeout(request.timer); + request.reject(cause); + } + pending.clear(); + }; + socket.addEventListener("error", () => + rejectPending(new Error("Owned REA inspector connection failed")), + ); + socket.addEventListener("close", () => + rejectPending(new Error("Owned REA inspector connection closed")), + ); + socket.addEventListener("message", (event) => { + try { + const reply = JSON.parse(event.data); + const request = pending.get(reply.id); + if (request === undefined) return; + pending.delete(reply.id); + clearTimeout(request.timer); + if (reply.error !== undefined) + request.reject(new Error(JSON.stringify(reply.error))); + else request.resolve(reply.result); + } catch (cause) { + rejectPending(cause); + } + }); + const withinDeadline = async (promise) => { + let timer; + try { + return await Promise.race([ + promise, + new Promise((_, reject) => { + timer = setTimeout( + () => reject(new Error("Owned REA inspector deadline exceeded")), + 10_000, + ); + }), + ]); + } finally { + clearTimeout(timer); + } + }; + const call = (method, params = {}) => + new Promise((resolve, reject) => { + const id = ++sequence; + const timer = setTimeout(() => { + pending.delete(id); + reject(new Error(`Owned REA inspector timed out: ${method}`)); + }, 10_000); + pending.set(id, { resolve, reject, timer }); + try { + socket.send(JSON.stringify({ id, method, params })); + } catch (cause) { + pending.delete(id); + clearTimeout(timer); + reject(cause); + } + }); + try { + await withinDeadline( + new Promise((resolve, reject) => { + socket.addEventListener("open", resolve, { once: true }); + socket.addEventListener("error", reject, { once: true }); + socket.addEventListener("close", reject, { once: true }); + }), + ); + const identity = await call("Runtime.evaluate", { + expression: "process.pid", + returnByValue: true, + }); + assert.equal(identity.result.value, expectedPid); + const before = await call("Runtime.getHeapUsage"); + await call("HeapProfiler.collectGarbage"); + const after = await call("Runtime.getHeapUsage"); + for (const sample of [before, after]) { + assert.ok(Number.isSafeInteger(sample.usedSize) && sample.usedSize >= 0); + assert.ok(Number.isSafeInteger(sample.totalSize)); + assert.ok(sample.totalSize >= sample.usedSize); + } + return { + scope: + "Owned REA V8 heap after the complete SDK task; inspector and forced GC are diagnostic overhead", + pid_verified: true, + before_gc: before, + after_gc: after, + }; + } finally { + rejectPending(new Error("Owned REA inspector diagnostic finished")); + socket.close(); + await withinDeadline(closed); + } +}; diff --git a/experiments/analysis-efficiency/mcp-startup-costs.py b/experiments/analysis-efficiency/mcp-startup-costs.py index 33392d4bd5..44899c763b 100644 --- a/experiments/analysis-efficiency/mcp-startup-costs.py +++ b/experiments/analysis-efficiency/mcp-startup-costs.py @@ -3,6 +3,7 @@ import argparse import hashlib import importlib.util import json +import math import statistics from pathlib import Path @@ -32,7 +33,8 @@ spec.loader.exec_module(module) catalogs = {} identities = {} rows = [] -for case in inputs['cases']: +heap_rows = [] +for case in inputs['cases'] + inputs.get('diagnostic_cases', []): directory = root / case['case'] report = json.loads((directory / 'report.json').read_text()) assert report['status'] == 'passed' and report['cleanup_verified'] @@ -41,6 +43,7 @@ for case in inputs['cases']: for name, producer_digest in report['producer_sources_sha256'].items(): assert producer_digest == inputs['harness_sources_sha256'][name] assert report['runtime_binding'] == expected[case['role']] + assert type(report['elapsed_ms']) in [int, float] and math.isfinite(report['elapsed_ms']) and report['elapsed_ms'] >= 0 for key in ['role', 'cache', 'profile', 'phase']: assert report[key] == case[key] raw = (directory / 'catalog.json').read_bytes() @@ -82,6 +85,7 @@ for case in inputs['cases']: assert guard_digest == inputs['harness_sources_sha256'][name] del resource['guard_sources_sha256'] row = {**case, 'runtime_binding_sha256': sha(compact(report['runtime_binding']).encode()), 'runtime_audit_ms': report['runtime_audit_ms'], + 'sdk_task_elapsed_seconds': report['elapsed_ms'] / 1000, 'catalog_sha256': catalog_digest, 'parent_evidence_id': report.get('parent_evidence_id'), 'parent_semantic_sha256': report.get('parent_semantic_sha256'), 'answer_sha256': sha(compact(report['answer']).encode()), 'tokens_estimated': tokens, @@ -91,7 +95,19 @@ for case in inputs['cases']: **resource, 'receipt_sha256': {name: sha((directory / name).read_bytes()) for name in ['report.json', 'catalog.json', 'server.json', 'transcript.json']}} assert row['catalog_sha256'] == row['receipt_sha256']['catalog.json'] == catalogs[profile]['sha256'] - rows.append(row) + heap = report.get('diagnostic_heap') + if case.get('diagnostic_heap'): + assert case['phase'] == 'analysis' and case['cache'] == 'cold' and case['artifact'] == 'zellij' + assert heap is not None and heap['pid_verified'] is True + for sample in [heap['before_gc'], heap['after_gc']]: + assert type(sample['usedSize']) is int and sample['usedSize'] >= 0 + assert type(sample['totalSize']) is int and sample['totalSize'] >= sample['usedSize'] + row['heap_observation'] = heap + row['retained_v8_heap_bytes_after_gc'] = heap['after_gc']['usedSize'] + heap_rows.append(row) + else: + assert heap is None, 'Diagnostic GC contaminated a normal task trial' + rows.append(row) assert len(rows) == 72 summary = [] for phase in ['discovery', 'analysis']: @@ -104,7 +120,7 @@ for phase in ['discovery', 'analysis']: assert len(selected) == 3 item[role] = {metric: {'median': statistics.median(row[metric] for row in selected), 'min': min(row[metric] for row in selected), 'max': max(row[metric] for row in selected)} - for metric in ['wall_seconds', 'cpu_seconds', 'kernel_family_peak_bytes_including_page_cache']} + for metric in ['wall_seconds', 'cpu_seconds', 'kernel_family_peak_bytes_including_page_cache', 'sdk_task_elapsed_seconds']} item[role]['tokens_estimated'] = [row['tokens_estimated']['whole_task'] for row in selected] summary.append(item) result = {'status': 'passed', 'tokenizer': f'tiktoken=={tiktoken.__version__}/cl100k_base; estimates, not model usage', @@ -113,6 +129,23 @@ result = {'status': 'passed', 'tokenizer': f'tiktoken=={tiktoken.__version__}/cl 'cache_scope': 'Cold disables server Node compile cache. Warm enables a prepopulated role/profile-specific cache after one complete analysis priming run. Fresh server/client processes and HOME each trial. Driver compile cache disabled in both cohorts. Cache hit rate and OS page cache are unmeasured; source/runtime audits warm compiled-file pages before startup.', 'resource_scope': 'Whole SDK driver, resource observer and owned REA process family. Includes before/after source-and-all-compiled-JS/JSON binding, SDK schema checks, extra validation calls, bundle export and independent oracle checking. Kernel cgroup peak includes file cache. Build/download/oracle preparation and cache priming excluded. Retained V8 heap and forced-GC diagnostics were not separately measured.', 'measurement_inputs': inputs, 'catalogs': catalogs, 'summary': summary, 'records': rows, + 'sdk_task_elapsed_scope': 'SDK span from client connect through task checks and client/server close. Excludes pre/post runtime binding and preflight artifact/oracle loading. Diagnostic spans include inspector and forced GC. CPU is measured for the whole family only; per-span CPU is unmeasured.', 'warmup_receipts': {name: sha((root / name / 'report.json').read_bytes()) for name in [f'warmup-{profile}-{role}' for profile in ['default', 'full'] for role in ['baseline', 'candidate']]}} +if heap_rows: + assert len(heap_rows) == 12 + heap_summary = [] + for profile in ['default', 'full']: + item = {'profile': profile} + for role in ['baseline', 'candidate']: + selected = [row for row in heap_rows if row['profile'] == profile and row['role'] == role] + assert len(selected) == 3 + item[role] = {metric: {'median': statistics.median(row[metric] for row in selected), + 'min': min(row[metric] for row in selected), 'max': max(row[metric] for row in selected)} + for metric in ['retained_v8_heap_bytes_after_gc', 'wall_seconds', 'cpu_seconds', 'sdk_task_elapsed_seconds', + 'kernel_family_peak_bytes_including_page_cache']} + heap_summary.append(item) + result['heap_diagnostics'] = { + 'scope': 'Separate three-pair Zellij tasks per profile, with an explicitly launched loopback inspector. Four CDP calls verify the owned REA PID, read heap, force GC and read heap again after the completed SDK task. These whole-family costs include inspector and diagnostic GC overhead; they are excluded from the normal timing cohort. Heap values describe REA V8 only, not the client or the whole process family.', + 'summary': heap_summary, 'records': heap_rows} args.output.write_text(json.dumps(result, indent=2) + '\n') print(json.dumps(summary, indent=2)) diff --git a/src/android/JadxProtocol.ts b/src/android/JadxProtocol.ts index 865b747c99..ec7420c58b 100644 --- a/src/android/JadxProtocol.ts +++ b/src/android/JadxProtocol.ts @@ -4,14 +4,14 @@ import { jsonValueSchema } from "../domain/jsonValue.js"; import type { AndroidOperation } from "../domain/android/androidAnalysis.js"; import { dexDescriptorSchema } from "../domain/android/androidAnalysis.js"; -const count = z.number().int().nonnegative(); +const count = z.int().nonnegative(); /** Typed allocation failures authored before upstream erases the JVM exception. */ const jadxMemoryFailureSchema = z.strictObject({ kind: z.literal("jvm-memory-failure"), memory_area: z.enum(["heap", "unknown"]), exception_type: z.literal("java.lang.OutOfMemoryError"), message: z.string().optional(), - max_heap_bytes: z.number().int().positive().safe(), + max_heap_bytes: z.int().positive().safe(), }); /** Selector failures authored by REA's bridge, separate from arbitrary engine errors. */ const jadxInputFailureSchema = z.strictObject({ @@ -40,8 +40,8 @@ export const parseJadxFailure = ( /** Values observed inside the exact JVM producing the analysis. */ export const jadxRuntimeSchema = z.object({ engine_reported_version: z.string().min(1), - max_heap_bytes: z.number().int().positive().safe(), - available_processors: z.number().int().positive(), + max_heap_bytes: z.int().positive().safe(), + available_processors: z.int().positive(), java_version: z.string().min(1), metadata_scope: z.literal("parsed_members"), }); @@ -81,11 +81,11 @@ export const jadxClassSchema = z.object({ signature: z.string(), dex_descriptor: dexDescriptorSchema, is_constructor: z.boolean(), - def_pos: z.number().int(), + def_pos: z.int(), }), ), fields: z.array( - z.object({ name: z.string(), type: z.string(), def_pos: z.number().int() }), + z.object({ name: z.string(), type: z.string(), def_pos: z.int() }), ), inner_classes: z.array(z.string()), }); @@ -115,7 +115,7 @@ export const jadxXrefsSchema = z.object({ full_name: z.string(), containing_class: z.string(), top_class: z.string(), - def_pos: z.number().int(), + def_pos: z.int(), direct_invokes_exhaustive: z.boolean().optional(), direct_invokes: z .array( diff --git a/src/browser/PlaywrightElectronActiveActions.ts b/src/browser/PlaywrightElectronActiveActions.ts index 52dd52fd60..32c2af5fb9 100644 --- a/src/browser/PlaywrightElectronActiveActions.ts +++ b/src/browser/PlaywrightElectronActiveActions.ts @@ -33,7 +33,7 @@ const hookSnapshotSchema = z.strictObject({ dropped_runtime: retention.dropped_runtime, dropped_event_families: retention.dropped_event_families, dropped_event_roles: retention.dropped_event_roles, - observed: z.number().int().min(0), + observed: z.int().min(0), observed_ipc: retention.observed_ipc, observed_runtime: retention.observed_runtime, hook_error: z.boolean(), diff --git a/src/browser/PlaywrightScenarioArtifacts.ts b/src/browser/PlaywrightScenarioArtifacts.ts index bde8fa120a..8c866a2942 100644 --- a/src/browser/PlaywrightScenarioArtifacts.ts +++ b/src/browser/PlaywrightScenarioArtifacts.ts @@ -11,7 +11,7 @@ import { import type { BrowserScenarioSecrets } from "./BrowserScenarioSecrets.js"; const historyValueSchema = z.strictObject({ - length: z.number().int().min(0), + length: z.int().min(0), navigation_entries: z.array( z.strictObject({ type: z.string(), diff --git a/src/browser/execution/CdpEventListeners.ts b/src/browser/execution/CdpEventListeners.ts index a73710f1d0..62f42e1382 100644 --- a/src/browser/execution/CdpEventListeners.ts +++ b/src/browser/execution/CdpEventListeners.ts @@ -24,10 +24,10 @@ export const captureWebEventListeners = async ( await session.enable(domain); await session.assertDocument(); const document = z - .object({ root: z.object({ nodeId: z.number().int().min(1) }) }) + .object({ root: z.object({ nodeId: z.int().min(1) }) }) .parse(await session.command("DOM.getDocument", { depth: 0 })); const selected = z - .object({ nodeId: z.number().int().min(0) }) + .object({ nodeId: z.int().min(0) }) .parse( await queryListenerSelector( session, @@ -39,7 +39,7 @@ export const captureWebEventListeners = async ( let descriptors: z.infer["listeners"] = []; if (selected.nodeId !== 0) { const described = z - .object({ node: z.object({ backendNodeId: z.number().int().min(1) }) }) + .object({ node: z.object({ backendNodeId: z.int().min(1) }) }) .parse( await session.command("DOM.describeNode", { nodeId: selected.nodeId, diff --git a/src/browser/execution/CdpRuntimeProtocol.ts b/src/browser/execution/CdpRuntimeProtocol.ts index f94ab9b17a..051d0200ac 100644 --- a/src/browser/execution/CdpRuntimeProtocol.ts +++ b/src/browser/execution/CdpRuntimeProtocol.ts @@ -1,6 +1,6 @@ import { z } from "zod"; -const integer = z.number().int().min(0); +const integer = z.int().min(0); const contextAuxDataSchema = z .object({ frameId: z.string().optional(), diff --git a/src/config/mcpResponseBudget.ts b/src/config/mcpResponseBudget.ts index e19e989150..1ca63f81ec 100644 --- a/src/config/mcpResponseBudget.ts +++ b/src/config/mcpResponseBudget.ts @@ -37,7 +37,7 @@ export const mcpResponseBudgetSchema = z .string() .regex(/^[1-9]\d*$/u) .transform(Number) - .pipe(z.number().int().safe().min(MINIMUM_RESPONSE_BYTES)); + .pipe(z.int().safe().min(MINIMUM_RESPONSE_BYTES)); const budgetConstraint = `REA_MCP_MAX_RESPONSE_BYTES must be a decimal safe integer at least ${String(MINIMUM_RESPONSE_BYTES)} bytes, the default stdio receive-buffer size.`; diff --git a/src/config/providerStartupTimeout.ts b/src/config/providerStartupTimeout.ts index b948ac3658..6b8051b416 100644 --- a/src/config/providerStartupTimeout.ts +++ b/src/config/providerStartupTimeout.ts @@ -21,4 +21,4 @@ export const providerStartupTimeoutSchema = z .string() .regex(/^[1-9]\d*$/u, "must be a positive decimal integer") .transform(Number) - .pipe(z.number().int().min(1).max(MAX_PROVIDER_STARTUP_TIMEOUT_MS)); + .pipe(z.int().min(1).max(MAX_PROVIDER_STARTUP_TIMEOUT_MS)); diff --git a/src/contracts/artifactToolContracts.ts b/src/contracts/artifactToolContracts.ts index 773f1ef47a..a7dbe5f3d5 100644 --- a/src/contracts/artifactToolContracts.ts +++ b/src/contracts/artifactToolContracts.ts @@ -92,9 +92,9 @@ export const ARTIFACT_TOOL_CONTRACTS = [ "decode_interface_builder", "Decode compiled storyboard and nib archives inside the active Apple app bundle, including keyed property lists and NIBArchive object tables, into a bounded object, hierarchy, and connection graph. This is static archive parsing; unrecognized archive classes and unresolved code handlers remain explicit unknowns. A full app graph is often several megabytes; detail summary retains it and returns documents with node, edge and coverage counts, then page rows, optionally one document's, with inspect_analysis_view kind interface-builder.", z.strictObject({ - max_documents: z.number().int().min(1).max(64).default(64), - max_objects: z.number().int().min(1).max(20_000).default(20_000), - max_connections: z.number().int().min(1).max(40_000).default(40_000), + max_documents: z.int().min(1).max(64).default(64), + max_objects: z.int().min(1).max(20_000).default(20_000), + max_connections: z.int().min(1).max(40_000).default(40_000), detail: analysisDetailSchema .unwrap() .optional() diff --git a/src/contracts/cutterToolContracts.ts b/src/contracts/cutterToolContracts.ts index e978251b80..be931a9c70 100644 --- a/src/contracts/cutterToolContracts.ts +++ b/src/contracts/cutterToolContracts.ts @@ -10,7 +10,7 @@ export const cutterListInputSchema = z.strictObject({}); /** Execute a command in a selected live Cutter instance and observed document generation. */ export const cutterCommandInputSchema = z.strictObject({ session_id: z.string().uuid(), - expected_generation: z.number().int().nonnegative(), + expected_generation: z.int().nonnegative(), command: z .string() .min(1) @@ -23,8 +23,8 @@ export const cutterCommandInputSchema = z.strictObject({ export const cutterSessionSchema = z.strictObject({ session_id: z.string().uuid(), - pid: z.number().int().positive(), - document_generation: z.number().int().nonnegative(), + pid: z.int().positive(), + document_generation: z.int().nonnegative(), current_file: z.string().nullable(), cutter_version: z.string().nullable(), identity_status: z.literal("partial"), @@ -39,7 +39,7 @@ export const cutterCommandResultSchema = z.strictObject({ output_truncated: z.boolean(), cutter_version: z.string().nullable(), current_file: z.string().nullable(), - document_generation: z.number().int().nonnegative(), + document_generation: z.int().nonnegative(), identity_status: z.literal("partial"), }); diff --git a/src/contracts/enhancedInputs.ts b/src/contracts/enhancedInputs.ts index 5049e44ac6..3fb1b9e3b7 100644 --- a/src/contracts/enhancedInputs.ts +++ b/src/contracts/enhancedInputs.ts @@ -19,12 +19,7 @@ export type CallRelationshipDirection = z.output< export const enhancedInputSchemas = { trace_native_values: nativeValueTraceInputSchema, inspect_native_dispatch_metadata: z.strictObject({ - max_records: z - .number() - .int() - .min(1) - .max(MAX_ENHANCED_RECORDS) - .default(5_000), + max_records: z.int().min(1).max(MAX_ENHANCED_RECORDS).default(5_000), objc_class_import_addresses: z .array(z.string()) .max(MAX_ENHANCED_RECORDS) @@ -101,9 +96,9 @@ export const enhancedInputSchemas = { .describe( "A unique compiled UI action selector, interface object ID, native symbol or exact function address", ), - max_depth: z.number().int().min(0).max(32).default(8), - max_nodes: z.number().int().min(1).max(2_000).default(250), - max_edges: z.number().int().min(1).max(5_000).default(500), + max_depth: z.int().min(0).max(32).default(8), + max_nodes: z.int().min(1).max(2_000).default(250), + max_edges: z.int().min(1).max(5_000).default(500), }), } as const; diff --git a/src/contracts/fridaToolContracts.ts b/src/contracts/fridaToolContracts.ts index d7a6c264e2..9a6df51e85 100644 --- a/src/contracts/fridaToolContracts.ts +++ b/src/contracts/fridaToolContracts.ts @@ -24,7 +24,6 @@ const remoteConnection = z.strictObject({ certificate: z.string().min(1).optional(), origin: z.string().min(1).optional(), keepalive_interval: z - .number() .int() .positive() .describe(FRIDA_KEEPALIVE_INTERVAL_DESCRIPTION) @@ -100,7 +99,7 @@ export const FRIDA_TOOL_CONTRACTS = [ device_id: z.string(), processes: z.array( z.strictObject({ - pid: z.number().int().nonnegative(), + pid: z.int().nonnegative(), name: z.string(), identifier: z.string().nullable(), }), @@ -124,7 +123,7 @@ export const FRIDA_TOOL_CONTRACTS = [ .strictObject({ mode: z.enum(["attach", "spawn"]), ...deviceSelector.shape, - pid: z.number().int().positive().optional(), + pid: z.int().positive().optional(), program: localPathStringSchema.optional(), argv: z.array(z.string()).optional(), }) @@ -262,13 +261,13 @@ export const FRIDA_TOOL_CONTRACTS = [ .strictObject({ mode: z.enum(["attach", "spawn"]), ...deviceSelector.shape, - pid: z.number().int().positive().optional(), + pid: z.int().positive().optional(), program: localPathStringSchema.optional(), argv: z.array(z.string()).optional(), source_kind: z.enum(["inline", "file"]), source: z.string().optional(), path: localPathStringSchema.optional(), - duration_ms: z.number().int().min(0).max(60_000).default(1_000), + duration_ms: z.int().min(0).max(60_000).default(1_000), }) .refine( (value) => diff --git a/src/contracts/gdbToolContracts.ts b/src/contracts/gdbToolContracts.ts index de3526202b..e89a0dd83e 100644 --- a/src/contracts/gdbToolContracts.ts +++ b/src/contracts/gdbToolContracts.ts @@ -73,7 +73,7 @@ export const GDB_TOOL_CONTRACTS = [ recent_mi_records_truncated: z.boolean(), mi_invalid_utf8: z.boolean(), stderr: z.string(), - stderr_observed_bytes: z.number().int().nonnegative(), + stderr_observed_bytes: z.int().nonnegative(), stderr_truncated: z.boolean(), stderr_invalid_utf8: z.boolean(), diagnostics_truncated: z.boolean(), diff --git a/src/contracts/hopperMemoryContracts.ts b/src/contracts/hopperMemoryContracts.ts index df7e43169d..8a1782e0e4 100644 --- a/src/contracts/hopperMemoryContracts.ts +++ b/src/contracts/hopperMemoryContracts.ts @@ -17,7 +17,7 @@ export const HOPPER_MEMORY_TOOL_DEFINITIONS = [ document, start: address.optional(), end: address.optional(), - limit: z.number().int().min(1).max(1000).default(100), + limit: z.int().min(1).max(1000).default(100), cursor: z.string().min(1).optional(), }) .superRefine(validateBytePattern), @@ -28,7 +28,7 @@ export const HOPPER_MEMORY_TOOL_DEFINITIONS = [ "Read analyzed bytes from one provider-normalized virtual address. The hexadecimal payload reports the exact returned length; incomplete reads remain explicit and unsupported provider APIs return typed capability unavailability.", inputSchema: z.object({ address, - length: z.number().int().min(1).default(256), + length: z.int().min(1).default(256), document, }), }, diff --git a/src/contracts/sessionToolSchemas.ts b/src/contracts/sessionToolSchemas.ts index dbe5346825..b92cb9086b 100644 --- a/src/contracts/sessionToolSchemas.ts +++ b/src/contracts/sessionToolSchemas.ts @@ -48,7 +48,7 @@ export const processComparisonInputSchema = z.strictObject({ left: evidenceSchema, right: evidenceSchema, trace_spec: processTraceSpecificationSchema.optional(), - max_capture_age_ms: z.number().int().nonnegative().optional(), + max_capture_age_ms: z.int().nonnegative().optional(), }); /** Residual-unknown list filters. */ @@ -59,14 +59,12 @@ export const listUnknownsInputSchema = z.strictObject({ severity: z.enum(["low", "medium", "high", "critical"]).optional(), domain: z.string().trim().min(1).optional(), offset: z - .number() .int() .min(0) .max(Number.MAX_SAFE_INTEGER) .default(0) .describe("Zero-based offset in the stable filtered unknown ID order."), limit: z - .number() .int() .positive() .max(Number.MAX_SAFE_INTEGER) diff --git a/src/contracts/toolOutputSchemaGroups.ts b/src/contracts/toolOutputSchemaGroups.ts index 1579f2342f..31aa34853f 100644 --- a/src/contracts/toolOutputSchemaGroups.ts +++ b/src/contracts/toolOutputSchemaGroups.ts @@ -167,9 +167,8 @@ export const officialOutputSchemas: Readonly> = { address_to_file_offset: evidenceResultOf( z.object({ address: z.string(), - file_offset: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER), + file_offset: z.int().min(0).max(Number.MAX_SAFE_INTEGER), provider_file_offset: z - .number() .int() .min(0) .max(Number.MAX_SAFE_INTEGER) @@ -178,7 +177,6 @@ export const officialOutputSchemas: Readonly> = { "Original coordinate returned by the provider's mapping API.", ), image_base_file_offset: z - .number() .int() .min(0) .max(Number.MAX_SAFE_INTEGER) @@ -259,14 +257,14 @@ const callPathTraceOutput = evidenceResultOf( nodes: z.array( z.object({ address: z.string(), - depth: z.number().int().min(0), + depth: z.int().min(0), }), ), edges: z.array( z.object({ source_address: z.string(), target_address: z.string(), - discovery_depth: z.number().int().min(1), + discovery_depth: z.int().min(1), }), ), traversal_path: z.array(z.string()), @@ -278,7 +276,7 @@ const callPathTraceOutput = evidenceResultOf( ), relationship_coverage: z.record(z.string(), relationshipCoverageSchema), traversal: z.object({ - nodes_visited: z.number().int().min(1), + nodes_visited: z.int().min(1), }), truncated: z.boolean(), residual_unknowns: z.array(z.string()), @@ -334,9 +332,9 @@ export const enhancedOutputSchemas: Readonly> = { }), ]), ), - total: z.number().int().min(0), - succeeded: z.number().int().min(0), - failed: z.number().int().min(0), + total: z.int().min(0), + succeeded: z.int().min(0), + failed: z.int().min(0), }), ), get_call_graph: evidenceResultOf( @@ -347,11 +345,11 @@ export const enhancedOutputSchemas: Readonly> = { ), analyze_swift_types: evidenceResultOf( z.object({ - total: z.number().int().min(0), + total: z.int().min(0), categories: z.record( z.string(), z.object({ - count: z.number().int().min(0), + count: z.int().min(0), items: z.array( addressedEntry.extend({ mangled_names: z.array(z.string()), @@ -400,9 +398,9 @@ export const enhancedOutputSchemas: Readonly> = { }), ) .optional(), - segment_count: z.number().int().min(0).optional(), - procedure_count: z.number().int().min(0), - string_count: z.number().int().min(0), + segment_count: z.int().min(0).optional(), + procedure_count: z.int().min(0), + string_count: z.int().min(0), }), ), analyze_function: functionDossierOutput, @@ -519,19 +517,16 @@ export const sessionOutputSchemas = { z.null(), z.object({ path: z.string(), - bytes: z.number().int().min(0), + bytes: z.int().min(0), primitive_entries: z - .number() .int() .min(0) .describe("Retained eligible primitive query bindings."), workflow_entries: z - .number() .int() .min(0) .describe("Retained eligible composed workflow bindings."), evidence_records: z - .number() .int() .min(0) .describe( @@ -561,9 +556,9 @@ export const sessionOutputSchemas = { export_evidence_bundle: lifecycleResultOf( z.object({ path: z.string(), - bytes: z.number().int().min(0), - records: z.number().int().min(0), - unknowns: z.number().int().min(0), + bytes: z.int().min(0), + records: z.int().min(0), + unknowns: z.int().min(0), }), ), get_evidence_bundle: lifecycleResultOf( @@ -589,9 +584,9 @@ export const sessionOutputSchemas = { ), import_evidence_bundle: lifecycleResultOf( z.object({ - imported: z.number().int().min(0), - unknowns_added: z.number().int().min(0), - total: z.number().int().min(0), + imported: z.int().min(0), + unknowns_added: z.int().min(0), + total: z.int().min(0), }), ), capture_process_scenario: evidenceResultOf(processCaptureSchema), @@ -616,9 +611,9 @@ export const sessionOutputSchemas = { list_unknowns: lifecycleResultOf( z.object({ items: z.array(residualUnknownSchema), - total: z.number().int().min(0), - offset: z.number().int().min(0), - next_offset: z.number().int().min(0).nullable(), + total: z.int().min(0), + offset: z.int().min(0), + next_offset: z.int().min(0).nullable(), }), ), record_unknown: lifecycleResultOf(residualUnknownSchema), diff --git a/src/contracts/toolOutputSchemaPrimitives.ts b/src/contracts/toolOutputSchemaPrimitives.ts index 1e796ecc0e..555e88ad86 100644 --- a/src/contracts/toolOutputSchemaPrimitives.ts +++ b/src/contracts/toolOutputSchemaPrimitives.ts @@ -174,8 +174,8 @@ export const expandProviderCapabilities = ( ); const processCoordinates = { - launcher_pid: z.number().int().min(1), - process_group_id: z.number().int().min(1), + launcher_pid: z.int().min(1), + process_group_id: z.int().min(1), }; const processLineageObservation = z.discriminatedUnion("status", [ @@ -189,12 +189,12 @@ const processLineageObservation = z.discriminatedUnion("status", [ status: z.literal("verified"), observed_at: z.iso.datetime(), ...processCoordinates, - launcher_parent_pid: z.number().int().min(0), + launcher_parent_pid: z.int().min(0), descendants: z.array( z.object({ - pid: z.number().int().min(1), - parent_pid: z.number().int().min(0), - process_group_id: z.number().int().min(1), + pid: z.int().min(1), + parent_pid: z.int().min(0), + process_group_id: z.int().min(1), }), ), }), @@ -225,19 +225,19 @@ export const analysisActivity = z.object({ provider: providerIdentity, active: z .object({ - request_id: z.number().int().min(1), + request_id: z.int().min(1), operation: z.string().min(1), - elapsed_ms: z.number().int().min(0), + elapsed_ms: z.int().min(0), caller_state: z.enum(["waiting", "cancelled"]), }) .nullable(), - queued_requests: z.number().int().min(0), + queued_requests: z.int().min(0), }), ), }); const providerOperationRequest = z.object({ - request_id: z.number().int().min(1), + request_id: z.int().min(1), operation: z.string().min(1), stage: z.enum(PROVIDER_FAILURE_STAGES), }); @@ -247,7 +247,7 @@ export const providerOperationHealth = z state: z.enum(PROVIDER_OPERATION_STATES), stage: z.enum(PROVIDER_FAILURE_STAGES).nullable(), retry_action: z.enum(PROVIDER_RETRY_ACTIONS).nullable(), - exit_code: z.number().int().nullable(), + exit_code: z.int().nullable(), requests: z.array(providerOperationRequest), }) .nullable(); @@ -524,9 +524,9 @@ export const sessionProvider = z skill: z.object({ name: z.string(), expected_version: z.string() }), catalog: z.strictObject({ counts: z.strictObject({ - cli_commands: z.number().int().min(0), - mcp_tools: z.number().int().min(0), - mcp_prompts: z.number().int().min(0), + cli_commands: z.int().min(0), + mcp_tools: z.int().min(0), + mcp_prompts: z.int().min(0), }), digests: z.strictObject({ tools_sha256: z.string().regex(/^[a-f0-9]{64}$/u), @@ -602,14 +602,14 @@ export const procedureInfoOutput = evidenceResultOf(procedureInfoSchema); export const symbolDiscoveryOutput = (property: "classes" | "protocols") => evidenceResultOf( z.object({ - count: z.number().int().min(0), + count: z.int().min(0), [property]: z.array(addressedEntry), }), ); export const objcClassDiscoveryOutput = evidenceResultOf( z.object({ - count: z.number().int().min(0), + count: z.int().min(0), classes: z.array( addressedEntry.extend({ binding_identity: objcClassImportIdentitySchema diff --git a/src/contracts/wasm/wasmComparisonContracts.ts b/src/contracts/wasm/wasmComparisonContracts.ts index a04c814144..e99962f043 100644 --- a/src/contracts/wasm/wasmComparisonContracts.ts +++ b/src/contracts/wasm/wasmComparisonContracts.ts @@ -23,7 +23,7 @@ const identity = z.object({ artifact: z.object({ path: z.string(), sha256: z.string(), - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), }), }); export const wasmInterfaceComparisonSchema = z.object({ diff --git a/src/cutter/CutterBridgeClient.ts b/src/cutter/CutterBridgeClient.ts index cc737108cf..c02c3b5eb2 100644 --- a/src/cutter/CutterBridgeClient.ts +++ b/src/cutter/CutterBridgeClient.ts @@ -31,11 +31,11 @@ import { homeDirectoryFromEnvironment } from "../config/homeDirectory.js"; const descriptorSchema = z.object({ session_id: z.string().uuid(), - pid: z.number().int().positive(), + pid: z.int().positive(), host: z.literal("127.0.0.1"), - port: z.number().int().min(1).max(65535), + port: z.int().min(1).max(65535), token: z.string().min(20), - document_generation: z.number().int().nonnegative(), + document_generation: z.int().nonnegative(), current_file: z.string().nullable(), cutter_version: z.string().nullable(), identity_status: z.literal("partial"), @@ -53,7 +53,7 @@ const responseSchema = z.object({ output: z.unknown().optional(), current_file: z.string().nullable().optional(), cutter_version: z.string().nullable().optional(), - document_generation: z.number().int().nonnegative().optional(), + document_generation: z.int().nonnegative().optional(), identity_status: z.literal("partial").optional(), error: z.string().optional(), message: z.string().optional(), diff --git a/src/domain/adb/adbDeviceAnalysis.ts b/src/domain/adb/adbDeviceAnalysis.ts index ec773b7596..3249a1f6f7 100644 --- a/src/domain/adb/adbDeviceAnalysis.ts +++ b/src/domain/adb/adbDeviceAnalysis.ts @@ -139,7 +139,6 @@ export const adbInputSchemas = { "Device serial exactly as `adb devices` reports it", ), count: z - .number() .int() .min(1) .max(10_000) @@ -150,7 +149,6 @@ export const adbInputSchemas = { .default("main") .describe("Log buffer to read (logcat -b)"), pid: z - .number() .int() .positive() .optional() @@ -466,7 +464,7 @@ const device = z.strictObject({ product: z.string().nullable(), model: z.string().nullable(), device: z.string().nullable(), - transport_id: z.number().int().positive().nullable(), + transport_id: z.int().positive().nullable(), /** * Inferred device kind with its evidence basis. The serial prefix and the * `device:` metadata line are observations; the kind itself is derived. @@ -479,7 +477,7 @@ const pulledArtifact = z.strictObject({ device_path: z.string().min(1), file_name: z.string().min(1), local_path: z.string().min(1), - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), sha256: z.string().regex(/^[a-f0-9]{64}$/u), role: z.enum(["base", "split", "unknown"]), role_basis: z.literal("file_name"), @@ -531,7 +529,7 @@ export const adbResultSchemas = { properties: z.array( z.strictObject({ name: z.string().min(1), value: z.string().min(1) }), ), - property_count: z.number().int().nonnegative(), + property_count: z.int().nonnegative(), emulator_observed: z.boolean().nullable(), }), list_adb_packages: z.strictObject({ @@ -560,11 +558,11 @@ export const adbResultSchemas = { read_adb_logcat: z.strictObject({ client, serial: z.string().min(1), - count: z.number().int().positive(), + count: z.int().positive(), buffer: z.enum(["main", "system", "radio", "events", "crash"]), - pid: z.number().int().positive().nullable(), + pid: z.int().positive().nullable(), lines: z.array(z.string()), - total_bytes: z.number().int().nonnegative(), + total_bytes: z.int().nonnegative(), coverage: z.enum(["complete", "partial"]), }), inspect_adb_package: z.strictObject({ @@ -582,9 +580,9 @@ export const adbResultSchemas = { first_install_time: z.string().nullable(), last_update_time: z.string().nullable(), installer_package_name: z.string().nullable(), - user_id: z.number().int().nullable(), + user_id: z.int().nullable(), pkg_flags: z.string().nullable(), - requested_permissions_count: z.number().int().nonnegative().nullable(), + requested_permissions_count: z.int().nonnegative().nullable(), coverage: z.enum(["complete", "partial"]), }), pull_adb_file: z.strictObject({ @@ -592,7 +590,7 @@ export const adbResultSchemas = { serial: z.string().min(1), device_path: z.string().min(1), local_path: z.string().min(1), - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), sha256: z.string().regex(/^[a-f0-9]{64}$/u), }), push_adb_file: z.strictObject({ @@ -600,7 +598,7 @@ export const adbResultSchemas = { serial: z.string().min(1), local_path: z.string().min(1), device_path: z.string().min(1), - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), sha256: z.string().regex(/^[a-f0-9]{64}$/u), device_sha256: z .string() @@ -613,10 +611,10 @@ export const adbResultSchemas = { client, serial: z.string().min(1), local_path: z.string().min(1), - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), sha256: z.string().regex(/^[a-f0-9]{64}$/u), - width: z.number().int().positive().nullable(), - height: z.number().int().positive().nullable(), + width: z.int().positive().nullable(), + height: z.int().positive().nullable(), }), list_adb_processes: z.strictObject({ client, @@ -625,9 +623,9 @@ export const adbResultSchemas = { processes: z.array( z.strictObject({ user: z.string(), - pid: z.number().int().nonnegative(), - ppid: z.number().int().nullable(), - rss: z.number().int().nullable(), + pid: z.int().nonnegative(), + ppid: z.int().nullable(), + rss: z.int().nullable(), state: z.string().nullable(), name: z.string(), }), @@ -646,7 +644,7 @@ export const adbResultSchemas = { permissions: z.string().nullable(), owner: z.string().nullable(), group: z.string().nullable(), - bytes: z.number().int().nullable(), + bytes: z.int().nullable(), date: z.string().nullable(), link_target: z.string().nullable(), }), @@ -660,7 +658,7 @@ export const adbResultSchemas = { features: z.array( z.strictObject({ name: z.string().min(1), - version: z.number().int().nullable(), + version: z.int().nullable(), }), ), unparsed_lines: z.array(z.string().min(1)), @@ -682,17 +680,17 @@ export const adbResultSchemas = { client, serial: z.string().min(1), physical_size: z.strictObject({ - width: z.number().int().positive(), - height: z.number().int().positive(), + width: z.int().positive(), + height: z.int().positive(), }), override_size: z .strictObject({ - width: z.number().int().positive(), - height: z.number().int().positive(), + width: z.int().positive(), + height: z.int().positive(), }) .nullable(), - physical_density: z.number().int().positive().nullable(), - override_density: z.number().int().positive().nullable(), + physical_density: z.int().positive().nullable(), + override_density: z.int().positive().nullable(), }), inspect_adb_window: z.strictObject({ client, @@ -716,7 +714,7 @@ export const adbResultSchemas = { client, serial: z.string().min(1), local_path: z.string().min(1), - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), sha256: z.string().regex(/^[a-f0-9]{64}$/u), adb_reported_path: z.string().nullable(), }), @@ -738,7 +736,7 @@ export const adbResultSchemas = { client, serial: z.string().min(1), apk_path: z.string().min(1), - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), sha256: z.string().regex(/^[a-f0-9]{64}$/u), replace_requested: z.boolean(), replaced: z.boolean().nullable(), diff --git a/src/domain/analysisView/analysisView.ts b/src/domain/analysisView/analysisView.ts index e19c0a4ec1..c7a785f7c9 100644 --- a/src/domain/analysisView/analysisView.ts +++ b/src/domain/analysisView/analysisView.ts @@ -226,7 +226,7 @@ const facetViewSchema = z.strictObject({ facet: z.enum(["mitigations", "linkage"]), }); const indexSelectorSchema = z.strictObject({ - index: z.number().int().nonnegative(), + index: z.int().nonnegative(), }); const nameSelectorSchema = z.strictObject({ name: z.string() }); const pathSelectorSchema = z.strictObject({ @@ -264,8 +264,8 @@ const itemViewSchema = z.discriminatedUnion("collection", [ const pageViewSchema = z.strictObject({ kind: z.literal("page"), collection: z.enum(["sections", "symbols", "modules"]), - offset: z.number().int().nonnegative(), - limit: z.number().int().positive(), + offset: z.int().nonnegative(), + limit: z.int().positive(), }); /** Bounded native function facets of already authenticated analyze_function Evidence. */ @@ -294,8 +294,8 @@ const nativeViewSchema = z.strictObject({ "value_flow_parameters", "value_flow_parameter_uses", ]), - offset: z.number().int().nonnegative().default(0), - limit: z.number().int().positive().default(64), + offset: z.int().nonnegative().default(0), + limit: z.int().positive().default(64), }); /** Caller-selected projection of already completed analysis Evidence. */ @@ -367,9 +367,9 @@ export const inspectAnalysisViewInputSchema = z.strictObject({ const coverageSchema = z.strictObject({ status: z.enum(["complete-within-view", "page", "empty"]), - examined: z.number().int().nonnegative(), - total: z.number().int().nonnegative(), - next_offset: z.number().int().nonnegative().nullable(), + examined: z.int().nonnegative(), + total: z.int().nonnegative(), + next_offset: z.int().nonnegative().nullable(), exhausted: z.boolean(), }); @@ -393,12 +393,12 @@ const layoutSummarySchema = z.strictObject({ execution_status: z.literal("unknown"), }), counts: z.strictObject({ - sections: z.number().int().nonnegative(), - segments: z.number().int().nonnegative(), - symbols: z.number().int().nonnegative(), - relocations: z.number().int().nonnegative(), + sections: z.int().nonnegative(), + segments: z.int().nonnegative(), + symbols: z.int().nonnegative(), + relocations: z.int().nonnegative(), }), - limitation_count: z.number().int().nonnegative(), + limitation_count: z.int().nonnegative(), }); const javascriptSummarySchema = z.strictObject({ @@ -409,7 +409,7 @@ const javascriptSummarySchema = z.strictObject({ statistics: jsonObjectSchema, electron: jsonObjectSchema, coverage: jsonObjectSchema, - limitation_count: z.number().int().nonnegative(), + limitation_count: z.int().nonnegative(), }); const viewResultBase = { diff --git a/src/domain/analysisView/androidPackageView.ts b/src/domain/analysisView/androidPackageView.ts index e1dc22f1f4..4a0c9b7da1 100644 --- a/src/domain/analysisView/androidPackageView.ts +++ b/src/domain/analysisView/androidPackageView.ts @@ -17,7 +17,7 @@ const packageSchema = androidResultSchemas.inspect_android_package; /** All package declarations remain inline; decoded manifest text stays retained. */ export const androidPackageSummarySchema = packageSchema.extend({ manifest: packageSchema.shape.manifest.omit({ text: true }).extend({ - text_code_units: z.number().int().nonnegative(), + text_code_units: z.int().nonnegative(), text_included: z.literal(false), }), }); @@ -26,8 +26,8 @@ export const androidPackageSummarySchema = packageSchema.extend({ export const androidViewRequestSchema = z.strictObject({ kind: z.literal("android"), facet: z.literal("manifest"), - offset: z.number().int().nonnegative().default(0), - limit: z.number().int().positive(), + offset: z.int().nonnegative().default(0), + limit: z.int().positive(), }); export const androidManifestViewItemSchema = z.strictObject({ diff --git a/src/domain/analysisView/dartAotView.ts b/src/domain/analysisView/dartAotView.ts index 87a34338f4..83625736f0 100644 --- a/src/domain/analysisView/dartAotView.ts +++ b/src/domain/analysisView/dartAotView.ts @@ -22,9 +22,9 @@ export const dartAotSummarySchema = aotSchema.extend({ .omit({ package_uris: true, dart_uris: true, class_like_tokens: true }) .extend({ returned_counts: z.strictObject({ - package_uris: z.number().int().nonnegative(), - dart_uris: z.number().int().nonnegative(), - class_like_tokens: z.number().int().nonnegative(), + package_uris: z.int().nonnegative(), + dart_uris: z.int().nonnegative(), + class_like_tokens: z.int().nonnegative(), }), }), }); @@ -33,8 +33,8 @@ export const dartAotSummarySchema = aotSchema.extend({ export const dartAotViewRequestSchema = z.strictObject({ kind: z.literal("dart-aot"), collection: z.enum(["package_uris", "dart_uris", "class_like_tokens"]), - offset: z.number().int().nonnegative().default(0), - limit: z.number().int().positive().default(64), + offset: z.int().nonnegative().default(0), + limit: z.int().positive().default(64), }); export const dartAotViewContextSchema = z.strictObject({ diff --git a/src/domain/analysisView/evmInterfaceView.ts b/src/domain/analysisView/evmInterfaceView.ts index ec5e97b5d8..d8f89e9469 100644 --- a/src/domain/analysisView/evmInterfaceView.ts +++ b/src/domain/analysisView/evmInterfaceView.ts @@ -20,8 +20,8 @@ import { analysisTextPage } from "./analysisViewText.js"; export const evmViewRequestSchema = z.strictObject({ kind: z.literal("evm"), facet: z.enum(["functions", "bytecode_hex", "stdout", "stderr"]), - offset: z.number().int().nonnegative().default(0), - limit: z.number().int().positive().default(64), + offset: z.int().nonnegative().default(0), + limit: z.int().positive().default(64), }); export const evmViewItemSchema = z.union([ @@ -40,7 +40,7 @@ export const evmSummarySchema = z.strictObject({ diagnostics: evmInterfaceSchema.shape.diagnostics .omit({ stdout: true }) .extend({ - stdout_code_units: z.number().int().nonnegative(), + stdout_code_units: z.int().nonnegative(), }), limitations: evmInterfaceSchema.shape.limitations, }); diff --git a/src/domain/analysisView/interfaceBuilderView.ts b/src/domain/analysisView/interfaceBuilderView.ts index 7eeef59908..910c52cd90 100644 --- a/src/domain/analysisView/interfaceBuilderView.ts +++ b/src/domain/analysisView/interfaceBuilderView.ts @@ -28,8 +28,8 @@ import { const page = { kind: z.literal("interface-builder"), - offset: z.number().int().nonnegative().default(0), - limit: z.number().int().positive().default(64), + offset: z.int().nonnegative().default(0), + limit: z.int().positive().default(64), } as const; /** Original decoded rows; graph rows can be narrowed to one decoded document. */ @@ -66,7 +66,7 @@ export const interfaceBuilderViewContextSchema = z.strictObject({ source_truncated: z.boolean(), }); -const countsSchema = z.record(z.string(), z.number().int().positive()); +const countsSchema = z.record(z.string(), z.int().positive()); /** Every decoded document with graph counts; rows and evidence stay retained. */ export const interfaceBuilderSummarySchema = z.strictObject({ @@ -77,15 +77,15 @@ export const interfaceBuilderSummarySchema = z.strictObject({ provider: nativeInvestigationProviderSchema, documents: interfaceBuilderDocumentSchema.array().max(64), available_counts: z.strictObject({ - nodes: z.number().int().nonnegative(), - edges: z.number().int().nonnegative(), - coverage: z.number().int().nonnegative(), + nodes: z.int().nonnegative(), + edges: z.int().nonnegative(), + coverage: z.int().nonnegative(), }), node_kinds: countsSchema, edge_relations: countsSchema, coverage_statuses: countsSchema, truncated: z.boolean(), - limitation_count: z.number().int().nonnegative(), + limitation_count: z.int().nonnegative(), }); const tally = (values: readonly string[]): Record => { diff --git a/src/domain/analysisView/javascriptApplicationCoverage.ts b/src/domain/analysisView/javascriptApplicationCoverage.ts index 239b4afa18..2aec678f20 100644 --- a/src/domain/analysisView/javascriptApplicationCoverage.ts +++ b/src/domain/analysisView/javascriptApplicationCoverage.ts @@ -11,8 +11,8 @@ export const javascriptApplicationSourceCoverageSchema = z.strictObject({ semantic: javaScriptSemanticGraphInputSchema.shape.coverage.omit({ families: true, }), - application_unknown_count: z.number().int().nonnegative(), - semantic_unknown_count: z.number().int().nonnegative(), + application_unknown_count: z.int().nonnegative(), + semantic_unknown_count: z.int().nonnegative(), }); export type JavaScriptApplicationSourceCoverage = z.infer< diff --git a/src/domain/analysisView/javascriptModuleReferences.ts b/src/domain/analysisView/javascriptModuleReferences.ts index e49cb0d8b1..475ca0d81e 100644 --- a/src/domain/analysisView/javascriptModuleReferences.ts +++ b/src/domain/analysisView/javascriptModuleReferences.ts @@ -22,8 +22,8 @@ export const javascriptModuleReferencesRequestSchema = z.strictObject({ kind: moduleKindSchema.optional(), }) .default({}), - offset: z.number().int().nonnegative().default(0), - limit: z.number().int().positive().default(64), + offset: z.int().nonnegative().default(0), + limit: z.int().positive().default(64), }); /** Unique support states, without promoting mixed observations to one fact. */ @@ -39,7 +39,7 @@ export const javascriptModuleReferenceSchema = z.strictObject({ kind: moduleKindSchema, path: z.string().nullable(), identity: applicationNodeIdentitySchema, - retained_source_range_count: z.number().int().nonnegative(), + retained_source_range_count: z.int().nonnegative(), basis: z.array(basisSchema).min(1), }); diff --git a/src/domain/analysisView/machoView.ts b/src/domain/analysisView/machoView.ts index 0e695569da..29e56ebbd9 100644 --- a/src/domain/analysisView/machoView.ts +++ b/src/domain/analysisView/machoView.ts @@ -32,8 +32,8 @@ type MachoCollection = (typeof MACHO_COLLECTIONS)[number]; export const machoViewRequestSchema = z.strictObject({ kind: z.literal("macho"), facet: z.enum([...MACHO_COLLECTIONS, "provenance"]), - offset: z.number().int().nonnegative().default(0), - limit: z.number().int().positive().default(64), + offset: z.int().nonnegative().default(0), + limit: z.int().positive().default(64), }); const { shape } = inspectMachoSchema; @@ -59,13 +59,13 @@ export const machoViewItemSchema = z.union([ /** The producer's own coverage of the paged collection, not of this page. */ export const machoViewContextSchema = z.strictObject({ - source_total: z.number().int().nonnegative().nullable(), + source_total: z.int().nonnegative().nullable(), source_exhaustive: z.boolean(), }); const collectionCountSchema = z.strictObject({ - returned: z.number().int().nonnegative(), - total: z.number().int().nonnegative().nullable(), + returned: z.int().nonnegative(), + total: z.int().nonnegative().nullable(), exhaustive: z.boolean(), }); @@ -83,8 +83,8 @@ export const machoSummarySchema = z.strictObject({ MACHO_COLLECTIONS.map((name) => [name, collectionCountSchema]), ) as Record, ), - provenance_count: z.number().int().nonnegative(), - limitation_count: z.number().int().nonnegative(), + provenance_count: z.int().nonnegative(), + limitation_count: z.int().nonnegative(), }); type MachoReport = z.output; diff --git a/src/domain/analysisView/managedArtifactView.ts b/src/domain/analysisView/managedArtifactView.ts index bc3a007d96..0e64e4c30d 100644 --- a/src/domain/analysisView/managedArtifactView.ts +++ b/src/domain/analysisView/managedArtifactView.ts @@ -22,8 +22,8 @@ import { export const managedViewRequestSchema = z.strictObject({ kind: z.literal("managed"), collection: z.enum(["references", "resources", "attributes"]), - offset: z.number().int().nonnegative().default(0), - limit: z.number().int().positive().default(64), + offset: z.int().nonnegative().default(0), + limit: z.int().positive().default(64), }); export const managedViewItemSchema = z.union([ @@ -37,9 +37,9 @@ export const managedSummarySchema = managedArtifactInspectionSchema .omit({ references: true, resources: true, attributes: true }) .extend({ reported_counts: z.strictObject({ - references: z.number().int().nonnegative(), - resources: z.number().int().nonnegative(), - attributes: z.number().int().nonnegative(), + references: z.int().nonnegative(), + resources: z.int().nonnegative(), + attributes: z.int().nonnegative(), }), identity_scope: managedMemberInspectionSchema.shape.identity_scope, }); diff --git a/src/domain/analysisView/managedMemberView.ts b/src/domain/analysisView/managedMemberView.ts index d6eff1dd36..1acf369d34 100644 --- a/src/domain/analysisView/managedMemberView.ts +++ b/src/domain/analysisView/managedMemberView.ts @@ -34,8 +34,8 @@ export const managedMembersViewRequestSchema = z.strictObject({ "field_accesses", "user_strings", ]), - offset: z.number().int().nonnegative().default(0), - limit: z.number().int().positive().default(64), + offset: z.int().nonnegative().default(0), + limit: z.int().positive().default(64), }); const rowsOf = ( @@ -60,7 +60,7 @@ export const managedMembersViewPageSchema = z.discriminatedUnion("collection", [ type ManagedMembersViewPage = z.infer; -const nullableCount = z.number().int().nonnegative().nullable(); +const nullableCount = z.int().nonnegative().nullable(); /** Keep identity, selection and coverage; member collections remain retained. */ export const managedMemberSummarySchema = z.strictObject({ @@ -80,13 +80,13 @@ export const managedMemberSummarySchema = z.strictObject({ .nullable(), limitations: member.limitations, reported_counts: z.strictObject({ - types: z.number().int().nonnegative(), + types: z.int().nonnegative(), exported_types: nullableCount, - fields: z.number().int().nonnegative(), - methods: z.number().int().nonnegative(), - member_refs: z.number().int().nonnegative(), - call_edges: z.number().int().nonnegative(), - field_accesses: z.number().int().nonnegative(), + fields: z.int().nonnegative(), + methods: z.int().nonnegative(), + member_refs: z.int().nonnegative(), + call_edges: z.int().nonnegative(), + field_accesses: z.int().nonnegative(), user_strings: nullableCount, }), }); diff --git a/src/domain/analysisView/pcapCaptureView.ts b/src/domain/analysisView/pcapCaptureView.ts index c8659dd432..25e8f11e80 100644 --- a/src/domain/analysisView/pcapCaptureView.ts +++ b/src/domain/analysisView/pcapCaptureView.ts @@ -19,8 +19,8 @@ const captureSchema = pcapResultSchemas.inspect_pcap_capture; const fields = captureSchema.shape; const pageShape = { kind: z.literal("pcap"), - offset: z.number().int().nonnegative().default(0), - limit: z.number().int().positive().default(64), + offset: z.int().nonnegative().default(0), + limit: z.int().positive().default(64), }; export const pcapViewRequestSchema = z.discriminatedUnion("facet", [ z.strictObject({ @@ -51,7 +51,7 @@ export const pcapViewPageSchema = z.discriminatedUnion("facet", [ facet: z.literal("dns-queries"), items: z.array( fields.dns_queries.element.omit({ response_addresses: true }).extend({ - retained_response_address_count: z.number().int().nonnegative(), + retained_response_address_count: z.int().nonnegative(), }), ), }), @@ -90,17 +90,17 @@ export const pcapSummarySchema = captureSchema }) .extend({ retained_counts: z.strictObject({ - endpoints: z.number().int().nonnegative(), - dns_queries: z.number().int().nonnegative(), - tls_sni_values: z.number().int().nonnegative(), - protocol_distribution: z.number().int().nonnegative(), - http_request_uris: z.number().int().nonnegative(), - unattributed_dns_addresses: z.number().int().nonnegative(), + endpoints: z.int().nonnegative(), + dns_queries: z.int().nonnegative(), + tls_sni_values: z.int().nonnegative(), + protocol_distribution: z.int().nonnegative(), + http_request_uris: z.int().nonnegative(), + unattributed_dns_addresses: z.int().nonnegative(), }), diagnostics_code_units: z .strictObject({ - tshark: z.number().int().nonnegative(), - capinfos: z.number().int().nonnegative(), + tshark: z.int().nonnegative(), + capinfos: z.int().nonnegative(), }) .nullable(), }); diff --git a/src/domain/analysisView/qlogCaptureView.ts b/src/domain/analysisView/qlogCaptureView.ts index 80052a75e7..ec85c3cecb 100644 --- a/src/domain/analysisView/qlogCaptureView.ts +++ b/src/domain/analysisView/qlogCaptureView.ts @@ -14,19 +14,19 @@ export const qlogViewContextSchema = qlogCaptureFactsSchema.omit({ traces: true, }); export const qlogSummarySchema = qlogViewContextSchema.extend({ - trace_count: z.number().int().nonnegative(), - retained_stream_count: z.number().int().nonnegative(), - loss_declaration_count: z.number().int().nonnegative(), - incomplete_fact_record_count: z.number().int().nonnegative(), + trace_count: z.int().nonnegative(), + retained_stream_count: z.int().nonnegative(), + loss_declaration_count: z.int().nonnegative(), + incomplete_fact_record_count: z.int().nonnegative(), }); /** Select retained trace facts without copying event inventories or every contribution. */ const pageRequestShape = { kind: z.literal("qlog"), - offset: z.number().int().nonnegative().default(0), - limit: z.number().int().positive().default(64), + offset: z.int().nonnegative().default(0), + limit: z.int().positive().default(64), }; -const traceSelectorShape = { trace_index: z.number().int().nonnegative() }; +const traceSelectorShape = { trace_index: z.int().nonnegative() }; const streamSelectorShape = { ...traceSelectorShape, stream_id: streamSchema.shape.stream_id, @@ -74,9 +74,9 @@ const traceSummarySchema = traceSchema incomplete_fact_records: true, }) .extend({ - stream_count: z.number().int().nonnegative(), - loss_declaration_count: z.number().int().nonnegative(), - incomplete_fact_record_count: z.number().int().nonnegative(), + stream_count: z.int().nonnegative(), + loss_declaration_count: z.int().nonnegative(), + incomplete_fact_record_count: z.int().nonnegative(), }); const streamSummarySchema = streamSchema .omit({ @@ -85,9 +85,9 @@ const streamSummarySchema = streamSchema reported_final_sizes: true, }) .extend({ - contribution_count: z.number().int().nonnegative(), - covered_range_count: z.number().int().nonnegative(), - reported_final_size_count: z.number().int().nonnegative(), + contribution_count: z.int().nonnegative(), + covered_range_count: z.int().nonnegative(), + reported_final_size_count: z.int().nonnegative(), }); /** Each page advertises exactly the retained item contract for its facet. */ export const qlogViewPageSchema = z.discriminatedUnion("facet", [ diff --git a/src/domain/analysisView/wasmArtifactView.ts b/src/domain/analysisView/wasmArtifactView.ts index 65ac5cc61b..2ac21012bb 100644 --- a/src/domain/analysisView/wasmArtifactView.ts +++ b/src/domain/analysisView/wasmArtifactView.ts @@ -33,8 +33,8 @@ export const wasmViewRequestSchema = z.strictObject({ "details", "tool_profile", ]), - offset: z.number().int().nonnegative().default(0), - limit: z.number().int().positive().default(64), + offset: z.int().nonnegative().default(0), + limit: z.int().positive().default(64), }); export const wasmViewItemSchema = z.union([ @@ -51,19 +51,19 @@ export const wasmSummarySchema = z.strictObject({ bytes: wasmArtifactSchema.shape.artifact.shape.bytes, validation: wasmArtifactSchema.shape.validation, available_counts: z.strictObject({ - sections: z.number().int().nonnegative(), - imports: z.number().int().nonnegative(), - exports: z.number().int().nonnegative(), - candidates: z.number().int().nonnegative(), - glue: z.number().int().nonnegative(), + sections: z.int().nonnegative(), + imports: z.int().nonnegative(), + exports: z.int().nonnegative(), + candidates: z.int().nonnegative(), + glue: z.int().nonnegative(), }), wat: wasmArtifactSchema.shape.wat .omit({ text: true }) - .extend({ code_units: z.number().int().nonnegative() }), + .extend({ code_units: z.int().nonnegative() }), tool_profile: wasmArtifactSchema.shape.tool_profile, runtime_execution: wasmArtifactSchema.shape.runtime_execution, network_fetch: wasmArtifactSchema.shape.network_fetch, - limitation_count: z.number().int().nonnegative(), + limitation_count: z.int().nonnegative(), }); /** Read the exact retained WABT forms with source identity and explicit uncertainty. */ diff --git a/src/domain/analysisView/webNetworkApiSurfaceView.ts b/src/domain/analysisView/webNetworkApiSurfaceView.ts index 0567956ea3..0c691014dd 100644 --- a/src/domain/analysisView/webNetworkApiSurfaceView.ts +++ b/src/domain/analysisView/webNetworkApiSurfaceView.ts @@ -13,8 +13,8 @@ import { ROUTE_RULES } from "./webNetworkRouteTemplates.js"; export const apiSurfaceViewSchema = z.strictObject({ kind: z.literal("api-surface"), - offset: z.number().int().nonnegative().default(0), - limit: z.number().int().positive().default(50), + offset: z.int().nonnegative().default(0), + limit: z.int().positive().default(50), include_query_parameter_names: z .boolean() .optional() @@ -29,20 +29,20 @@ const groupSchema = z.strictObject({ path_template: z.string(), templated_segments: z.array( z.strictObject({ - segment_index: z.number().int().nonnegative(), + segment_index: z.int().nonnegative(), rule: ruleSchema, basis: z.literal("inferred"), observed_values: z.array(z.string()), }), ), - record_ordinals: z.array(z.number().int().nonnegative()), + record_ordinals: z.array(z.int().nonnegative()), statuses: z.array(z.number()), content_types: z.array(z.string()), query_parameter_names: z .array( z.strictObject({ name: z.string(), - record_ordinals: z.array(z.number().int().nonnegative()), + record_ordinals: z.array(z.int().nonnegative()), }), ) .optional(), @@ -52,12 +52,11 @@ const groupSchema = z.strictObject({ }); export const apiSurfaceFields = { records: z.strictObject({ - examined: z.number().int().nonnegative(), - total: z.number().int().nonnegative(), - excluded: z.number().int().nonnegative(), + examined: z.int().nonnegative(), + total: z.int().nonnegative(), + excluded: z.int().nonnegative(), }), templated_groups: z - .number() .int() .nonnegative() .describe( @@ -66,7 +65,7 @@ export const apiSurfaceFields = { groups: z.array(groupSchema), excluded_records: z.array( z.strictObject({ - ordinal: z.number().int().nonnegative(), + ordinal: z.int().nonnegative(), reason: z.enum([ "url-redacted", "url-unparseable", diff --git a/src/domain/analysisView/webNetworkCaptureView.ts b/src/domain/analysisView/webNetworkCaptureView.ts index 83965f7367..519eb36336 100644 --- a/src/domain/analysisView/webNetworkCaptureView.ts +++ b/src/domain/analysisView/webNetworkCaptureView.ts @@ -36,8 +36,8 @@ import { export const captureViewRequestSchema = z.strictObject({ kind: z.literal("capture"), detail: z.enum(["preview", "complete"]).default("preview"), - offset: z.number().int().nonnegative().default(0), - limit: z.number().int().positive().default(64), + offset: z.int().nonnegative().default(0), + limit: z.int().positive().default(64), }); const protobufSummarySchema = z.strictObject({ @@ -73,8 +73,8 @@ export const captureSummarySchema = z.strictObject({ artifact: webNetworkCaptureArtifactSchema, decoder: webNetworkCaptureDecoderSchema, format: z.enum(WEB_NETWORK_CAPTURE_FORMATS), - total_records: z.number().int().nonnegative(), - retained_records: z.number().int().nonnegative(), + total_records: z.int().nonnegative(), + retained_records: z.int().nonnegative(), runtime_attribution: z.literal("unknown"), protobuf: protobufSummarySchema.exactOptional(), qlog: qlogSummarySchema.optional(), diff --git a/src/domain/android/androidAnalysis.ts b/src/domain/android/androidAnalysis.ts index 83439518eb..c552ba48f2 100644 --- a/src/domain/android/androidAnalysis.ts +++ b/src/domain/android/androidAnalysis.ts @@ -25,7 +25,6 @@ export const androidInputSchemas = { ...classTarget, method_name: z.string().min(1), overload_index: z - .number() .int() .nonnegative() .optional() @@ -43,7 +42,6 @@ export const androidInputSchemas = { "Omit for class references; select ambiguous methods with overload_index", ), overload_index: z - .number() .int() .nonnegative() .optional() @@ -96,7 +94,7 @@ export const androidRequestSchema = z.discriminatedUnion("operation", [ const textCoverage = z.strictObject({ status: z.enum(["complete", "partial"]), text: z.string(), - reported_total_bytes: z.number().int().nonnegative().nullable(), + reported_total_bytes: z.int().nonnegative().nullable(), }); /** A DEX prototype; hex parentheses also keep the advertised class valid in v mode. */ export const dexDescriptorSchema = z @@ -108,7 +106,7 @@ export const dexDescriptorSchema = z const method = z.strictObject({ name: z.string(), reported_signature: z.string(), - overload_index: z.number().int().nonnegative(), + overload_index: z.int().nonnegative(), is_constructor: z.boolean(), dex_descriptor: dexDescriptorSchema, }); @@ -117,8 +115,8 @@ const engine = z.strictObject({ version: z.string().nullable(), artifact_sha256: z.string().regex(/^[a-f0-9]{64}$/u), source_revision: z.string().nullable(), - worker_count: z.number().int().positive(), - heap_limit_mib: z.number().int().positive().nullable(), + worker_count: z.int().positive(), + heap_limit_mib: z.int().positive().nullable(), }); const common = { engine }; @@ -133,19 +131,19 @@ export const androidResultSchemas = { target_sdk: z.string().nullable(), permissions: z.array(z.string()), manifest: textCoverage, - class_count: z.number().int().nonnegative(), - resource_count: z.number().int().nonnegative(), + class_count: z.int().nonnegative(), + resource_count: z.int().nonnegative(), signature_verification: z.literal("not_performed"), }), search_android_classes: z.strictObject({ ...common, query: z.string(), - total_classes: z.number().int().nonnegative(), + total_classes: z.int().nonnegative(), matches: z.array(z.string()), duplicate_names: z.array( z.strictObject({ name: z.string(), - occurrences: z.number().int().min(2), + occurrences: z.int().min(2), }), ), coverage: z.literal("complete"), @@ -163,7 +161,7 @@ export const androidResultSchemas = { ...common, class_name: z.string(), method: method, - overload_count: z.number().int().positive(), + overload_count: z.int().positive(), representation: z.enum(["java", "smali"]), body_status: z.enum(["available", "not_available"]), fell_back: z.boolean(), @@ -174,10 +172,10 @@ export const androidResultSchemas = { ...common, class_name: z.string(), method_name: z.string().nullable(), - overload_index: z.number().int().nonnegative().nullable(), + overload_index: z.int().nonnegative().nullable(), reported_signature: z.string().nullable(), dex_descriptor: dexDescriptorSchema.nullable(), - total: z.number().int().nonnegative(), + total: z.int().nonnegative(), references: z.array( z.strictObject({ kind: z.string(), @@ -195,8 +193,8 @@ export const androidResultSchemas = { z.strictObject({ dex_entry: z.string().min(1), source_raw_method_id: z.string().min(1), - dex_code_unit_offset: z.number().int().nonnegative(), - dex_method_index: z.number().int().nonnegative(), + dex_code_unit_offset: z.int().nonnegative(), + dex_method_index: z.int().nonnegative(), opcode: z.string().regex(/^INVOKE_/u), }), ) diff --git a/src/domain/apktool/apktoolResourceAnalysis.ts b/src/domain/apktool/apktoolResourceAnalysis.ts index b1e4604896..777750dab6 100644 --- a/src/domain/apktool/apktoolResourceAnalysis.ts +++ b/src/domain/apktool/apktoolResourceAnalysis.ts @@ -155,7 +155,6 @@ export const stringTableSchema = z.strictObject({ }), ), total_count: z - .number() .int() .nonnegative() .nullable() @@ -163,7 +162,6 @@ export const stringTableSchema = z.strictObject({ "Total valid string entries before output limits, or null if the table was not examined or was malformed", ), unparsed_count: z - .number() .int() .nonnegative() .nullable() @@ -184,7 +182,7 @@ export const apktoolResultSchemas = { client, target: z.strictObject({ path: localPathStringSchema, - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), sha256: digestSchema, }), metadata: z.strictObject({ @@ -218,7 +216,7 @@ export const apktoolResultSchemas = { .describe( "Selected table facts, included when locales is supplied or string_tables_only is true", ), - decoded_file_count: z.number().int().nonnegative(), + decoded_file_count: z.int().nonnegative(), coverage: z.enum(["complete", "partial"]), }), } as const; diff --git a/src/domain/apple/appleAssetCatalog.ts b/src/domain/apple/appleAssetCatalog.ts index 81a96c3cc3..f8dbdae9f5 100644 --- a/src/domain/apple/appleAssetCatalog.ts +++ b/src/domain/apple/appleAssetCatalog.ts @@ -29,20 +29,20 @@ export const appleResourceKeyFields = ( /** Caller-controlled page bounds for compiled Apple asset metadata. */ export const appleAssetCatalogInputSchema = z.strictObject({ - offset: z.number().int().min(0).default(0), - limit: z.number().int().min(1).max(10_000).default(1_000), + offset: z.int().min(0).default(0), + limit: z.int().min(1).max(10_000).default(1_000), }); const catalogSchema = z.strictObject({ path: z.string().min(1), sha256: z.string().regex(/^[a-f0-9]{64}$/u), - record_count: z.number().int().nonnegative(), + record_count: z.int().nonnegative(), }); const recordSchema = z.strictObject({ catalog_path: z.string().min(1), catalog_sha256: z.string().regex(/^[a-f0-9]{64}$/u), - index: z.number().int().nonnegative(), + index: z.int().nonnegative(), kind: z.enum(["catalog", "rendition"]), asset_name: z.string().nullable(), rendition_name: z.string().nullable(), @@ -60,7 +60,7 @@ const resourceKeyMatchSchema = z.strictObject({ z.strictObject({ catalog_path: z.string().min(1), catalog_sha256: z.string().regex(/^[a-f0-9]{64}$/u), - record_index: z.number().int().nonnegative(), + record_index: z.int().nonnegative(), rendition_name: z.string().nullable(), }), ), @@ -71,12 +71,12 @@ export const appleAssetCatalogResultSchema = bundleResourceBoundResultSchema( z.string().regex(/^[a-f0-9]{64}$/u), { catalogs: z.array(catalogSchema), - total_records: z.number().int().nonnegative(), - offset: z.number().int().nonnegative(), - limit: z.number().int().positive(), + total_records: z.int().nonnegative(), + offset: z.int().nonnegative(), + limit: z.int().positive(), records: z.array(recordSchema), resource_key_matches: z.array(resourceKeyMatchSchema), - next_offset: z.number().int().nonnegative().nullable(), + next_offset: z.int().nonnegative().nullable(), truncated: z.boolean(), limitations: z.array(z.string()), }, diff --git a/src/domain/apple/dylibResolution.ts b/src/domain/apple/dylibResolution.ts index 3fdf5a518c..3d93ae8314 100644 --- a/src/domain/apple/dylibResolution.ts +++ b/src/domain/apple/dylibResolution.ts @@ -82,19 +82,19 @@ const dependencySchema = z.strictObject({ export const machoSliceSchema = z.strictObject({ architecture: z.string().min(1), /** Physical identity observed in the thin header and, for FAT, its table. */ - slice_offset: z.number().int().nonnegative(), - slice_size: z.number().int().positive(), - cpu_type: z.number().int().nonnegative(), - cpu_subtype: z.number().int().nonnegative(), - fat_cpu_type: z.number().int().nonnegative().nullable(), - fat_cpu_subtype: z.number().int().nonnegative().nullable(), - fat_alignment_exponent: z.number().int().nonnegative().nullable(), + slice_offset: z.int().nonnegative(), + slice_size: z.int().positive(), + cpu_type: z.int().nonnegative(), + cpu_subtype: z.int().nonnegative(), + fat_cpu_type: z.int().nonnegative().nullable(), + fat_cpu_subtype: z.int().nonnegative().nullable(), + fat_alignment_exponent: z.int().nonnegative().nullable(), file_type: z.enum(["execute", "dylib", "bundle", "other"]), - file_type_code: z.number().int().nonnegative(), + file_type_code: z.int().nonnegative(), /** Raw LC_BUILD_VERSION platform number; null means no such command was observed. */ - platform: z.number().int().nonnegative().nullable(), + platform: z.int().nonnegative().nullable(), /** Every distinct build platform declared by LC_BUILD_VERSION/version-min commands. */ - platforms: z.array(z.number().int().nonnegative()), + platforms: z.array(z.int().nonnegative()), install_name: z.string().nullable(), dependencies: z.array(dependencySchema), rpaths: z.array(z.string()), @@ -182,7 +182,7 @@ const findingSchema = z.strictObject({ "earlier-rpath-candidate-absent", "dyld-environment-present", ]), - edge_index: z.number().int().nonnegative().nullable(), + edge_index: z.int().nonnegative().nullable(), image: z.string().nullable(), basis: z.literal("derived"), explanation: z.string().min(1), diff --git a/src/domain/apple/interfaceBuilderGraph.ts b/src/domain/apple/interfaceBuilderGraph.ts index 9f1409bd1b..b2abd5fff7 100644 --- a/src/domain/apple/interfaceBuilderGraph.ts +++ b/src/domain/apple/interfaceBuilderGraph.ts @@ -26,8 +26,8 @@ export const interfaceBuilderDocumentSchema = z.strictObject({ relative_path: z.string().min(1), archive_sha256: z.string().regex(/^[a-f0-9]{64}$/u), document_kind: z.enum(["nib", "storyboard_scene"]), - object_count: z.number().int().nonnegative(), - connection_count: z.number().int().nonnegative(), + object_count: z.int().nonnegative(), + connection_count: z.int().nonnegative(), hierarchy_complete: z.boolean(), }); @@ -620,9 +620,9 @@ export const buildInterfaceBuilderAnalysis = (input: { /** Hard limits shared by Interface Builder archive aggregation and tracing. */ export const interfaceBuilderLimitsSchema = z.strictObject({ - max_documents: z.number().int().min(1).max(64).default(64), - max_objects: z.number().int().min(1).max(20_000).default(20_000), - max_connections: z.number().int().min(1).max(40_000).default(40_000), + max_documents: z.int().min(1).max(64).default(64), + max_objects: z.int().min(1).max(20_000).default(20_000), + max_connections: z.int().min(1).max(40_000).default(40_000), trace: nativeInvestigationTraceLimitsSchema.default({ max_depth: 8, max_nodes: 250, diff --git a/src/domain/apple/keyedArchive.ts b/src/domain/apple/keyedArchive.ts index 152de4f1a3..4a7e5ae34c 100644 --- a/src/domain/apple/keyedArchive.ts +++ b/src/domain/apple/keyedArchive.ts @@ -25,13 +25,13 @@ export class KeyedArchiveKindError extends TypeError { export const keyedArchiveInputSchema = z.strictObject({ path: localPathStringSchema.default("."), root: z.string().optional(), - offset: z.number().int().min(0).default(0), - limit: z.number().int().min(1).max(20_000).default(20_000), + offset: z.int().min(0).default(0), + limit: z.int().min(1).max(20_000).default(20_000), }); const linkSchema = z.strictObject({ - source: z.number().int().nonnegative().nullable(), - path: z.array(z.union([z.string(), z.number().int().nonnegative()])), - target: z.number().int().nonnegative().nullable(), + source: z.int().nonnegative().nullable(), + path: z.array(z.union([z.string(), z.int().nonnegative()])), + target: z.int().nonnegative().nullable(), status: z.enum(["resolved", "nil", "unresolved", "malformed"]), raw: jsonValueSchema, }); @@ -45,7 +45,7 @@ export const keyedArchiveResultSchema = bundleResourceBoundResultSchema( roots: z.record(z.string(), jsonValueSchema), objects: z.array( z.strictObject({ - id: z.number().int().nonnegative(), + id: z.int().nonnegative(), kind: z.enum([ "nil", "scalar", @@ -54,7 +54,7 @@ export const keyedArchiveResultSchema = bundleResourceBoundResultSchema( "class-descriptor", "archived-object", ]), - class_id: z.number().int().nonnegative().nullable(), + class_id: z.int().nonnegative().nullable(), class_name: z.string().nullable(), status: z.enum([ "observed", @@ -66,10 +66,10 @@ export const keyedArchiveResultSchema = bundleResourceBoundResultSchema( }), ), references: z.array(linkSchema), - total_objects: z.number().int().nonnegative(), - total_references: z.number().int().nonnegative(), - offset: z.number().int().nonnegative(), - next_offset: z.number().int().nonnegative().nullable(), + total_objects: z.int().nonnegative(), + total_references: z.int().nonnegative(), + offset: z.int().nonnegative(), + next_offset: z.int().nonnegative().nullable(), truncated: z.boolean(), limitations: z.array(z.string()), }, diff --git a/src/domain/artifactComparison.ts b/src/domain/artifactComparison.ts index 8420cd5d80..cf06268460 100644 --- a/src/domain/artifactComparison.ts +++ b/src/domain/artifactComparison.ts @@ -79,12 +79,12 @@ export const artifactComparisonResultSchema = z.object({ left_manifest_id: prefixedDigestSchema("agm"), right_manifest_id: prefixedDigestSchema("agm"), summary: z.object({ - unchanged: z.number().int().min(0), - added: z.number().int().min(0), - removed: z.number().int().min(0), - changed: z.number().int().min(0), - unknown: z.number().int().min(0), - contradiction: z.number().int().min(0).default(0), + unchanged: z.int().min(0), + added: z.int().min(0), + removed: z.int().min(0), + changed: z.int().min(0), + unknown: z.int().min(0), + contradiction: z.int().min(0).default(0), }), changes: z.array(artifactChangeSchema), limitations: z.array(z.string()), diff --git a/src/domain/artifactGraph.ts b/src/domain/artifactGraph.ts index 61d0be7717..364a5a4a65 100644 --- a/src/domain/artifactGraph.ts +++ b/src/domain/artifactGraph.ts @@ -104,8 +104,8 @@ const artifactContentFormatSchema = artifactFormatSchema.extract([ /** File byte interval for an artifact derived without writing it to disk. */ const artifactByteRangeSchema = z.object({ - offset: z.number().int().min(0), - length: z.number().int().min(0), + offset: z.int().min(0), + length: z.int().min(0), }); /** External command provenance, including observable side effects. */ @@ -114,7 +114,7 @@ const artifactCommandSchema = z.object({ arguments: z.array(z.string()), tool_version: z.string().nullable(), executable_sha256: sha256Schema.nullable(), - exit_code: z.number().int().nullable(), + exit_code: z.int().nullable(), effects: z.array(z.enum(["read", "write", "mount"])), }); @@ -126,7 +126,7 @@ export const artifactNodeSchema = z.object({ artifact_id: artifactIdSchema, format: artifactContentFormatSchema, sha256: sha256Schema, - size: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER), + size: z.int().min(0).max(Number.MAX_SAFE_INTEGER), media_type: z.string().min(1).nullable(), architecture: z.string().min(1).nullable(), content_state: z.enum(["materialized", "embedded", "virtual"]), @@ -142,18 +142,8 @@ export const artifactOccurrenceSchema = z.object({ entry_kind: z.enum(["file", "directory", "symlink", "slice", "metadata"]), artifact_kind: artifactKindSchema, artifact_format: artifactFormatSchema, - declared_size: z - .number() - .int() - .min(0) - .max(Number.MAX_SAFE_INTEGER) - .nullable(), - compressed_size: z - .number() - .int() - .min(0) - .max(Number.MAX_SAFE_INTEGER) - .nullable(), + declared_size: z.int().min(0).max(Number.MAX_SAFE_INTEGER).nullable(), + compressed_size: z.int().min(0).max(Number.MAX_SAFE_INTEGER).nullable(), executable: z.boolean(), encrypted: z.boolean(), hash_status: z.enum(["verified", "mismatched", "not-hashed", "unavailable"]), @@ -188,7 +178,7 @@ export const integrityContradictionSchema = z.union([ */ export const artifactEdgeSchema = z.object({ edge_id: edgeIdSchema, - ordinal: z.number().int().min(0), + ordinal: z.int().min(0), parent_artifact_id: artifactIdSchema, relation: z.enum([ "contains", @@ -210,9 +200,9 @@ export const artifactGraphManifestSchema = z.object({ root_sha256: sha256Schema, root_format: artifactFormatSchema, graph_sha256: sha256Schema, - node_count: z.number().int().min(1), - occurrence_count: z.number().int().min(1), - edge_count: z.number().int().min(0), + node_count: z.int().min(1), + occurrence_count: z.int().min(1), + edge_count: z.int().min(0), }); /** Producer-owned traversal coverage; content certainty remains on each occurrence. */ @@ -241,7 +231,7 @@ const extractedArtifactSchema = z.object({ artifact_id: artifactIdSchema, relative_path: boundedRelativePathSchema, sha256: sha256Schema, - bytes_written: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER), + bytes_written: z.int().min(0).max(Number.MAX_SAFE_INTEGER), created: z.boolean(), }); diff --git a/src/domain/artifactInspection.ts b/src/domain/artifactInspection.ts index d95fe9f169..458d76ece3 100644 --- a/src/domain/artifactInspection.ts +++ b/src/domain/artifactInspection.ts @@ -97,15 +97,15 @@ export const artifactInspectionResultSchema = z.strictObject({ next_probes: z.array(nextProbeSchema), coverage: z.strictObject({ status: z.enum(["complete-within-substeps", "partial", "truncated"]), - substeps_completed: z.number().int().min(1), - observations_retained: z.number().int().min(0), - observations_omitted: z.number().int().min(0), - hypotheses_retained: z.number().int().min(0), - hypotheses_omitted: z.number().int().min(0), - unexplored_branches_retained: z.number().int().min(0), - unexplored_branches_omitted: z.number().int().min(0), - next_probes_retained: z.number().int().min(0), - next_probes_omitted: z.number().int().min(0), + substeps_completed: z.int().min(1), + observations_retained: z.int().min(0), + observations_omitted: z.int().min(0), + hypotheses_retained: z.int().min(0), + hypotheses_omitted: z.int().min(0), + unexplored_branches_retained: z.int().min(0), + unexplored_branches_omitted: z.int().min(0), + next_probes_retained: z.int().min(0), + next_probes_omitted: z.int().min(0), }), evidence_links: z.array(evidenceIdSchema).min(1), limitations: z.array(textSchema), diff --git a/src/domain/bridgeCandidateProjection.ts b/src/domain/bridgeCandidateProjection.ts index bebe1001f1..ef7fdb92ea 100644 --- a/src/domain/bridgeCandidateProjection.ts +++ b/src/domain/bridgeCandidateProjection.ts @@ -3,9 +3,9 @@ import { z } from "zod"; /** Coverage metadata for the bounded projection of candidate relationships. */ export const bridgeCandidateCoverageSchema = z.strictObject({ status: z.enum(["complete", "partial"]), - total_candidates: z.number().int().nonnegative(), - emitted_candidates: z.number().int().nonnegative(), - omitted_candidates: z.number().int().nonnegative(), + total_candidates: z.int().nonnegative(), + emitted_candidates: z.int().nonnegative(), + omitted_candidates: z.int().nonnegative(), }); // The serialized candidate array is the retained representation; accounting diff --git a/src/domain/browserCompleteness.ts b/src/domain/browserCompleteness.ts index 6ee03e3753..bf57ea9a2c 100644 --- a/src/domain/browserCompleteness.ts +++ b/src/domain/browserCompleteness.ts @@ -47,19 +47,19 @@ export type BrowserExclusionReason = z.infer< const browserExclusionSchema = z.object({ section: browserSectionSchema, reason: browserExclusionReasonSchema, - count: z.number().int().min(0).nullable(), + count: z.int().min(0).nullable(), }); export type BrowserExclusion = z.infer; const browserDroppedEventsSchema = z.object({ - scripts: z.number().int().min(0), - network_requests: z.number().int().min(0), - console_events: z.number().int().min(0), - websocket_connections: z.number().int().min(0), - websocket_frames: z.number().int().min(0), - webmcp_tools: z.number().int().min(0), - timeline_events: z.number().int().min(0), - total: z.number().int().min(0), + scripts: z.int().min(0), + network_requests: z.int().min(0), + console_events: z.int().min(0), + websocket_connections: z.int().min(0), + websocket_frames: z.int().min(0), + webmcp_tools: z.int().min(0), + timeline_events: z.int().min(0), + total: z.int().min(0), }); export type BrowserDroppedEvents = z.infer; export type BrowserDroppedEventKind = Exclude< diff --git a/src/domain/browserNetworkEvidence.ts b/src/domain/browserNetworkEvidence.ts index 34f90e84a2..359847ea8b 100644 --- a/src/domain/browserNetworkEvidence.ts +++ b/src/domain/browserNetworkEvidence.ts @@ -43,15 +43,15 @@ const unavailableBrowserNetworkBodySchema = z.discriminatedUnion("reason", [ state: z.literal("unavailable"), reason: z.literal("body-size-limit"), message: z.string().min(1), - limit_bytes: z.number().int().positive().safe(), - observed_bytes: z.number().int().positive().safe(), + limit_bytes: z.int().positive().safe(), + observed_bytes: z.int().positive().safe(), }), z.strictObject({ state: z.literal("unavailable"), reason: z.literal("body-allocation-limit"), message: z.string().min(1), - limit_allocation_bytes: z.number().int().positive().safe(), - observed_allocation_bytes: z.number().int().positive().safe(), + limit_allocation_bytes: z.int().positive().safe(), + observed_allocation_bytes: z.int().positive().safe(), }), ]); @@ -71,7 +71,7 @@ export const browserNetworkBodySchema = z.union([ ]), encoding: z.literal("base64"), content: z.string(), - bytes: z.number().int().min(0), + bytes: z.int().min(0), sha256: z.string().regex(/^[a-f0-9]{64}$/u), media_type: z.string().nullable(), redacted: z.boolean(), diff --git a/src/domain/browserObservation.ts b/src/domain/browserObservation.ts index eac1fcd799..2cd5c3b63b 100644 --- a/src/domain/browserObservation.ts +++ b/src/domain/browserObservation.ts @@ -183,7 +183,7 @@ const inspectWebPageInputFacts = { ...browserInput, target_id: z.string().trim().min(1), command_timeout_ms: webRuntimeCommandTimeoutSchema, - observation_ms: z.number().int().min(0).default(500), + observation_ms: z.int().min(0).default(500), include_accessibility_text: z.boolean().default(false), include_console_text: z.boolean().default(false), include_json_body_shapes: z.boolean().default(false), diff --git a/src/domain/browserObservationSchemas.ts b/src/domain/browserObservationSchemas.ts index 138acafb72..567001a9b0 100644 --- a/src/domain/browserObservationSchemas.ts +++ b/src/domain/browserObservationSchemas.ts @@ -37,9 +37,9 @@ export const browserTargetListSchema = z.object({ browser: browserVersionSchema, targets: z.array(browserTargetSchema), excluded: z.object({ - disallowed_origin: z.number().int().min(0), - unsupported_url: z.number().int().min(0), - non_page: z.number().int().min(0), + disallowed_origin: z.int().min(0), + unsupported_url: z.int().min(0), + non_page: z.int().min(0), }), limitations: z.array(z.string()), }); @@ -123,8 +123,8 @@ const browserNetworkRequestSchema = z.object({ initiator: z.object({ type: z.string(), url: z.string().nullable(), - line: z.number().int().min(0).nullable(), - column: z.number().int().min(0).nullable(), + line: z.int().min(0).nullable(), + column: z.int().min(0).nullable(), }), body_shapes: z.object({ status: z.enum(["not_approved", "included", "partial", "unavailable"]), @@ -147,24 +147,24 @@ const browserConsoleEventSchema = z.object({ "CDP argument types by argument position; null when the producer argument inventory is absent or not an array.", ), url: z.string().nullable(), - line: z.number().int().min(0).nullable(), - column: z.number().int().min(0).nullable(), + line: z.int().min(0).nullable(), + column: z.int().min(0).nullable(), text_capture: z.object({ status: z.enum(["not_approved", "included", "unavailable"]), values: z.array( z.object({ - argument_index: z.number().int().min(0), + argument_index: z.int().min(0), type: z.string(), text: z.string(), }), ), - retained_bytes: z.number().int().min(0), + retained_bytes: z.int().min(0), }), }); const browserWebSocketFrameSchema = z.object({ direction: z.enum(["sent", "received"]), - opcode: z.number().int().min(0).max(15).nullable(), - payload_bytes: z.number().int().min(0).nullable(), + opcode: z.int().min(0).max(15).nullable(), + payload_bytes: z.int().min(0).nullable(), payload_shape: z .object({ format: z.enum(["json", "text", "binary"]), @@ -221,7 +221,7 @@ const browserSafeMetadataSchema = z.object({ request_id: z.string(), url: z.string(), mime_type: z.string().nullable(), - content_length: z.number().int().min(0).nullable(), + content_length: z.int().min(0).nullable(), content_encoding: z.string().nullable(), csp: z.object({ directives: z.array( @@ -230,8 +230,8 @@ const browserSafeMetadataSchema = z.object({ sources: z.array(browserCspSourceSchema), }), ), - nonce_count: z.number().int().min(0), - hash_count: z.number().int().min(0), + nonce_count: z.int().min(0), + hash_count: z.int().min(0), }), links: z.array(browserLinkMetadataSchema), policies: z.object({ @@ -246,14 +246,14 @@ const browserSafeMetadataSchema = z.object({ ), dom_urls: z.array( z.object({ - node_index: z.number().int().min(0), + node_index: z.int().min(0), attribute: z.enum(["href", "src", "action", "formaction", "poster"]), url: z.string().nullable(), destination_scope: z.enum(["approved", "outside_policy", "unsupported"]), }), ), agent_hints: z.array(browserAgentHintSchema), - excluded_dom_urls: z.number().int().min(0), + excluded_dom_urls: z.int().min(0), headers_allowlisted: z.literal(true), }); @@ -264,25 +264,25 @@ export const webPageInspectionSchema = z.object({ capture_window: z.object({ started_at: z.iso.datetime(), ended_at: z.iso.datetime(), - observation_ms: z.number().int().min(0), + observation_ms: z.int().min(0), }), completeness: browserCompletenessSchema, frames: z.array(browserFrameSchema), dom: z.object({ - total_nodes: z.number().int().min(0), + total_nodes: z.int().min(0), nodes: z.array(cdpDomNodeSchema), }), accessibility: z.object({ - total_nodes: z.number().int().min(0), + total_nodes: z.int().min(0), text_capture: z.object({ status: z.enum(["not_approved", "included", "unavailable"]), - retained_bytes: z.number().int().min(0), - excluded_fields: z.number().int().min(0), + retained_bytes: z.int().min(0), + excluded_fields: z.int().min(0), }), nodes: z.array(browserAxNodeSchema), }), scripts: z.object({ - total: z.number().int().min(0), + total: z.int().min(0), items: z.array(browserScriptSchema), }), resources: z.array(browserResourceSchema), diff --git a/src/domain/browserScenarioCapture.ts b/src/domain/browserScenarioCapture.ts index 4c591342cb..6a73099b8d 100644 --- a/src/domain/browserScenarioCapture.ts +++ b/src/domain/browserScenarioCapture.ts @@ -22,17 +22,17 @@ export const browserScenarioCaptureSchema = z }), scenario: z.strictObject({ start_origin: z.string().min(1), - action_count: z.number().int().min(1), + action_count: z.int().min(1), secret_references: z.array(z.string().min(1)), network_content: browserNetworkContentSelectionValuesSchema, event_families: z.array(browserScenarioEventFamilySchema), limits: browserScenarioCaptureLimitsValuesSchema, }), - duration_ms: z.number().int().min(0), + duration_ms: z.int().min(0), steps: z.array(browserScenarioStepSchema).min(1), events: z.strictObject({ - retained: z.number().int().min(0), - dropped: z.number().int().min(0), + retained: z.int().min(0), + dropped: z.int().min(0), items: z.array(browserScenarioEventSchema), omissions: browserScenarioEventOmissionsSchema, }), diff --git a/src/domain/browserScenarioCaptureLimits.ts b/src/domain/browserScenarioCaptureLimits.ts index 60b9d4052f..7186374d36 100644 --- a/src/domain/browserScenarioCaptureLimits.ts +++ b/src/domain/browserScenarioCaptureLimits.ts @@ -1,6 +1,6 @@ import { z } from "zod"; -const positiveSafeInteger = z.number().int().safe().positive(); +const positiveSafeInteger = z.int().safe().positive(); export const DEFAULT_BROWSER_SCENARIO_CAPTURE_LIMITS = { max_events: 10_000, diff --git a/src/domain/browserScenarioCaptureValues.ts b/src/domain/browserScenarioCaptureValues.ts index 9eefa298ac..70a569c82d 100644 --- a/src/domain/browserScenarioCaptureValues.ts +++ b/src/domain/browserScenarioCaptureValues.ts @@ -14,7 +14,7 @@ import { digestSchema } from "./../domain/digests.js"; const textArtifactSchema = z .strictObject({ sha256: digestSchema, - bytes: z.number().int().min(0), + bytes: z.int().min(0), text: z.string(), }) .superRefine((artifact, context) => { @@ -39,14 +39,14 @@ export const captureStateSchema = (value: Schema) => }), z.strictObject({ state: z.literal("truncated"), - observed: z.number().int().min(0), - retained: z.number().int().min(0), + observed: z.int().min(0), + retained: z.int().min(0), reason: z.string().min(1), }), ]); const historySchema = z.strictObject({ - length: z.number().int().min(0), + length: z.int().min(0), current_url: sanitizedBrowserUrlSchema, navigation_entries: z.array( z.strictObject({ @@ -135,8 +135,8 @@ export type BrowserScenarioEventFamily = z.infer< >; const eventBase = { - sequence: z.number().int().min(1), - step_index: z.number().int().min(0), + sequence: z.int().min(1), + step_index: z.int().min(0), }; const eventUrl = sanitizedBrowserUrlSchema.nullable(); @@ -155,7 +155,7 @@ const webSocketFrameShape = { ...eventBase, kind: z.enum(["websocket-frame-sent", "websocket-frame-received"]), url: sanitizedBrowserUrlSchema, - payload_bytes: z.number().int().min(0), + payload_bytes: z.int().min(0), truncated: z.boolean(), }; @@ -183,7 +183,7 @@ export const browserScenarioEventSchema = z z.strictObject({ ...networkEventShape, kind: z.literal("response"), - status: z.number().int().min(100).max(599), + status: z.int().min(100).max(599), failure: z.null(), }), z.strictObject({ @@ -209,7 +209,7 @@ export const browserScenarioEventSchema = z ...eventBase, kind: z.literal("network-content"), transaction_id: z.string().min(1), - source_event_sequence: z.number().int().min(1), + source_event_sequence: z.int().min(1), phase: z.enum(["request", "response"]), headers: browserNetworkHeadersSchema, body: browserNetworkBodySchema, @@ -314,7 +314,7 @@ export const browserScenarioEventOmissionsSchema = z.strictObject({ by_kind: z.array( z.strictObject({ kind: browserScenarioEventKindSchema, - count: z.number().int().positive(), + count: z.int().positive(), reasons: z.array(browserScenarioEventBudgetReasonSchema).min(1), }), ), @@ -329,7 +329,7 @@ export const browserScenarioEventOmissionsSchema = z.strictObject({ .strictObject({ first_transaction_id: z.string().min(1), last_transaction_id: z.string().min(1), - count: z.number().int().positive(), + count: z.int().positive(), reason: z.literal("max-network-transactions"), }) .nullable(), @@ -408,14 +408,14 @@ export const classifyBrowserScenarioCompleteness = ( }; const browserScenarioStepShape = { - step_index: z.number().int().min(0), + step_index: z.int().min(0), step_id: z.string().min(1), action: z.string().min(1), - elapsed_ms: z.number().int().min(0), + elapsed_ms: z.int().min(0), before_url: sanitizedBrowserUrlSchema, after_url: sanitizedBrowserUrlSchema, - event_sequence_start: z.number().int().min(1), - event_sequence_end: z.number().int().min(0), + event_sequence_start: z.int().min(1), + event_sequence_end: z.int().min(0), artifacts: browserStepArtifactsSchema, completeness: browserScenarioCompletenessSchema, }; diff --git a/src/domain/browserScenarioDiffValues.ts b/src/domain/browserScenarioDiffValues.ts index 0a52061888..5d25a5d4df 100644 --- a/src/domain/browserScenarioDiffValues.ts +++ b/src/domain/browserScenarioDiffValues.ts @@ -151,7 +151,7 @@ export const browserScenarioDiffSchema = z.strictObject({ }), alignment: z.strictObject({ status: z.enum(["aligned", "partial", "failed"]), - aligned_steps: z.number().int().min(0), + aligned_steps: z.int().min(0), before_only: z.array(z.string().min(1)), after_only: z.array(z.string().min(1)), failures: z.array(alignmentFailureSchema), @@ -159,8 +159,8 @@ export const browserScenarioDiffSchema = z.strictObject({ steps: z.array( z.strictObject({ step_id: z.string().min(1), - before_step_index: z.number().int().min(0), - after_step_index: z.number().int().min(0), + before_step_index: z.int().min(0), + after_step_index: z.int().min(0), before_action: z.string().min(1), after_action: z.string().min(1), status: z.enum(["changed", "unchanged", "unknown"]), @@ -168,7 +168,7 @@ export const browserScenarioDiffSchema = z.strictObject({ }), ), artifact_diffs: z.strictObject({ - total: z.number().int().min(0), + total: z.int().min(0), }), limitations: z.array(z.string().min(1)), }); diff --git a/src/domain/browserScenarioNetworkComparison.ts b/src/domain/browserScenarioNetworkComparison.ts index 56af2fa7ce..1ebe63bb1b 100644 --- a/src/domain/browserScenarioNetworkComparison.ts +++ b/src/domain/browserScenarioNetworkComparison.ts @@ -7,8 +7,8 @@ import { normalizeScenarioValue } from "./browserScenarioNormalization.js"; /** Numeric links are temporary local indices, never durable transaction identity. */ export const scenarioNetworkTransactionSchema = z.strictObject({ events: z.array(z.unknown()), - predecessor: z.number().int().min(-2), - step_index: z.number().int().min(0), + predecessor: z.int().min(-2), + step_index: z.int().min(0), }); export type ScenarioNetworkTransaction = z.infer< typeof scenarioNetworkTransactionSchema diff --git a/src/domain/browserScenarioValues.ts b/src/domain/browserScenarioValues.ts index 17f40e3c8f..88ba2f4efe 100644 --- a/src/domain/browserScenarioValues.ts +++ b/src/domain/browserScenarioValues.ts @@ -98,8 +98,8 @@ export const browserScenarioEnvironmentSchema = z .strictObject({ viewport: z .strictObject({ - width: z.number().int().positive().default(1_280), - height: z.number().int().positive().default(720), + width: z.int().positive().default(1_280), + height: z.int().positive().default(720), device_scale_factor: z.number().positive().default(1), }) .default({ width: 1_280, height: 720, device_scale_factor: 1 }), @@ -169,7 +169,6 @@ const MAX_BROWSER_SCENARIO_TIMEOUT_MS = 2_147_483_647; const stepBase = { step_id: scenarioIdentifierSchema, timeout_ms: z - .number() .int() .min(1) .max(MAX_BROWSER_SCENARIO_TIMEOUT_MS) @@ -191,7 +190,7 @@ export const browserScenarioActionSchema = z.discriminatedUnion("action", [ action: z.literal("click"), locator: locatorSchema, button: z.enum(["left", "middle", "right"]).default("left"), - click_count: z.number().int().positive().default(1), + click_count: z.int().positive().default(1), }), z.strictObject({ ...stepBase, @@ -226,7 +225,6 @@ export const browserScenarioActionSchema = z.discriminatedUnion("action", [ step_id: scenarioIdentifierSchema, action: z.literal("wait_for_timeout"), duration_ms: z - .number() .int() .min(1) .max(MAX_BROWSER_SCENARIO_TIMEOUT_MS) diff --git a/src/domain/browserSession.ts b/src/domain/browserSession.ts index 8a12d42206..e6ac49f5da 100644 --- a/src/domain/browserSession.ts +++ b/src/domain/browserSession.ts @@ -13,7 +13,7 @@ export const observeWebSessionInputSchema = z.strictObject({ cdp_endpoint: browserObservationEndpointSchema, allowed_origins: browserAllowedOriginsSchema, target_id: z.string().trim().min(1), - observation_ms: z.number().int().min(1).default(10_000), + observation_ms: z.int().min(1).default(10_000), command_timeout_ms: webRuntimeCommandTimeoutSchema, }); export type ObserveWebSessionInput = z.infer< @@ -21,7 +21,7 @@ export type ObserveWebSessionInput = z.infer< >; const timelineEventSchema = z.object({ - sequence: z.number().int().min(1), + sequence: z.int().min(1), type: z.enum([ "navigation_requested", "navigation_committed", @@ -62,7 +62,7 @@ export const webObservationSessionSchema = z.object({ window: z.object({ armed_at: z.iso.datetime(), ended_at: z.iso.datetime(), - requested_ms: z.number().int().min(1), + requested_ms: z.int().min(1), end_reason: z.enum([ "window_elapsed", "target_left_scope", diff --git a/src/domain/bundleComparison.ts b/src/domain/bundleComparison.ts index 3a00c0cb32..6e918e22f5 100644 --- a/src/domain/bundleComparison.ts +++ b/src/domain/bundleComparison.ts @@ -59,16 +59,16 @@ export const bundleComparisonResultSchema = z.object({ left_bundle_sha256: digestSchema, right_bundle_sha256: digestSchema, summary: z.object({ - records_unchanged: z.number().int().min(0), - records_added: z.number().int().min(0), - records_removed: z.number().int().min(0), - records_changed: z.number().int().min(0), - unknowns_unchanged: z.number().int().min(0), - unknowns_added: z.number().int().min(0), - unknowns_removed: z.number().int().min(0), - unknowns_advanced: z.number().int().min(0), - unknowns_diverged: z.number().int().min(0), - unresolved: z.number().int().min(0), + records_unchanged: z.int().min(0), + records_added: z.int().min(0), + records_removed: z.int().min(0), + records_changed: z.int().min(0), + unknowns_unchanged: z.int().min(0), + unknowns_added: z.int().min(0), + unknowns_removed: z.int().min(0), + unknowns_advanced: z.int().min(0), + unknowns_diverged: z.int().min(0), + unresolved: z.int().min(0), }), changes: z.array(bundleChangeSchema), limitations: z.array(z.string()), diff --git a/src/domain/callPathSchemas.ts b/src/domain/callPathSchemas.ts index 7c40073f44..81be56dd48 100644 --- a/src/domain/callPathSchemas.ts +++ b/src/domain/callPathSchemas.ts @@ -28,7 +28,7 @@ const citedEdgeSchema = z.object({ }); const pathSchema = z .object({ - hops: z.number().int().min(0), + hops: z.int().min(0), nodes: z.array(citedNodeSchema).min(1), edges: z.array(citedEdgeSchema), evidence_links: z.array(evidenceIdSchema).min(1), @@ -53,9 +53,9 @@ const resultContextShape = { start: nativeAddressSchema, goal: nativeAddressSchema, explored: z.object({ - nodes: z.number().int().min(0), - edges: z.number().int().min(0), - depth_reached: z.number().int().min(0), + nodes: z.int().min(0), + edges: z.int().min(0), + depth_reached: z.int().min(0), }), evidence_links: z.array(evidenceIdSchema).min(1), limitations: z.array(z.string()), @@ -66,7 +66,7 @@ export const callPathResultSchema = z.union([ z.object({ ...resultContextShape, status: z.literal("found"), - shortest_hops: z.number().int().min(0), + shortest_hops: z.int().min(0), search_scope: z.object({ exhaustive: z.boolean() }), paths: z.array(pathSchema).min(1), }), diff --git a/src/domain/changedBehavior.ts b/src/domain/changedBehavior.ts index 399b63d4c8..68fd84953a 100644 --- a/src/domain/changedBehavior.ts +++ b/src/domain/changedBehavior.ts @@ -56,10 +56,10 @@ export const changedBehaviorResultSchema = z "truncated", ]), summary: z.object({ - observed_changes: z.number().int().min(0), - static_candidates: z.number().int().min(0), - contradictions: z.number().int().min(0), - unresolved: z.number().int().min(0), + observed_changes: z.int().min(0), + static_candidates: z.int().min(0), + contradictions: z.int().min(0), + unresolved: z.int().min(0), }), findings: z.object({ items: z.array(findingSchema), diff --git a/src/domain/completionLedgerGeneration.ts b/src/domain/completionLedgerGeneration.ts index 7660ac99af..1c25969115 100644 --- a/src/domain/completionLedgerGeneration.ts +++ b/src/domain/completionLedgerGeneration.ts @@ -28,7 +28,7 @@ const environmentSchema = z.strictObject({ }); const scenarioSchema = z.strictObject({ id: identifierSchema, - version: z.number().int().positive(), + version: z.int().positive(), }); const skillDigestSchema = z.strictObject({ skill_id: identifierSchema, @@ -37,29 +37,29 @@ const skillDigestSchema = z.strictObject({ const verifierRunSchema = z .strictObject({ run_id: z.string().uuid(), - verifier_pid: z.number().int().positive(), - parent_pid: z.number().int().nonnegative(), + verifier_pid: z.int().positive(), + parent_pid: z.int().nonnegative(), process_lineage: z.discriminatedUnion("status", [ z.strictObject({ status: z.literal("verified"), observed_at: z.iso.datetime(), - launcher_pid: z.number().int().positive(), - launcher_parent_pid: z.number().int().nonnegative(), - process_group_id: z.number().int().positive(), + launcher_pid: z.int().positive(), + launcher_parent_pid: z.int().nonnegative(), + process_group_id: z.int().positive(), descendants: z.array( z.strictObject({ - pid: z.number().int().positive(), - parent_pid: z.number().int().nonnegative(), - process_group_id: z.number().int().positive(), + pid: z.int().positive(), + parent_pid: z.int().nonnegative(), + process_group_id: z.int().positive(), }), ), }), z.strictObject({ status: z.literal("unavailable"), observed_at: z.iso.datetime(), - launcher_pid: z.number().int().positive(), - launcher_parent_pid: z.number().int().nonnegative(), - process_group_id: z.number().int().positive().nullable(), + launcher_pid: z.int().positive(), + launcher_parent_pid: z.int().nonnegative(), + process_group_id: z.int().positive().nullable(), reason: z.string().min(1), }), ]), diff --git a/src/domain/conformancePackage.ts b/src/domain/conformancePackage.ts index 3f2a3ae1a8..654af0f5aa 100644 --- a/src/domain/conformancePackage.ts +++ b/src/domain/conformancePackage.ts @@ -19,7 +19,7 @@ const scenarioManifestSchema = z.strictObject({ /** Source-owned fixture path relative to the repository root. */ fixture_path: z.string().min(1), /** Expected exit code or null if unspecified. */ - expected_exit_code: z.number().int().nullable(), + expected_exit_code: z.int().nullable(), /** Expected output patterns that must appear in the capture. */ expected_patterns: z.array(z.string()).default([]), }); @@ -33,7 +33,7 @@ const replayPlanSchema = z.strictObject({ step_id: z.string().min(1), action: z.string().min(1), arguments: z.array(z.string()).default([]), - timeout_ms: z.number().int().positive(), + timeout_ms: z.int().positive(), }), ) .min(1), @@ -77,7 +77,7 @@ const verifierContractSchema = z.strictObject({ ) .min(1), /** Tolerance for timing differences in milliseconds. */ - timing_tolerance_ms: z.number().int().nonnegative().default(0), + timing_tolerance_ms: z.int().nonnegative().default(0), }); const conformancePackageContentsSchema = z.strictObject({ diff --git a/src/domain/conformanceReplay.ts b/src/domain/conformanceReplay.ts index f2883738f2..e41aaf3b7b 100644 --- a/src/domain/conformanceReplay.ts +++ b/src/domain/conformanceReplay.ts @@ -10,8 +10,8 @@ import { export const scenarioReplayResultSchema = z.strictObject({ scenario_id: z.string().min(1), status: z.enum(["pass", "fail", "error", "skipped"]), - exit_code: z.number().int().nullable(), - duration_ms: z.number().int().nonnegative(), + exit_code: z.int().nullable(), + duration_ms: z.int().nonnegative(), output: z.string().default(""), error: z.string().nullable(), }); @@ -20,11 +20,11 @@ export const scenarioReplayResultSchema = z.strictObject({ export const packageReplayResultSchema = z .strictObject({ package_id: z.string().min(1), - total_scenarios: z.number().int().positive(), - passed: z.number().int().nonnegative(), - failed: z.number().int().nonnegative(), - errored: z.number().int().nonnegative(), - skipped: z.number().int().nonnegative(), + total_scenarios: z.int().positive(), + passed: z.int().nonnegative(), + failed: z.int().nonnegative(), + errored: z.int().nonnegative(), + skipped: z.int().nonnegative(), scenario_results: z.array(scenarioReplayResultSchema), trust_gate_results: z.array(trustGateResultSchema), drift_detected: z.boolean(), diff --git a/src/domain/electron/electronFuses.ts b/src/domain/electron/electronFuses.ts index 6755149847..5051d0fada 100644 --- a/src/domain/electron/electronFuses.ts +++ b/src/domain/electron/electronFuses.ts @@ -64,19 +64,19 @@ const OTHER_MEANS_LIMITATION = const MISSING_SENTINEL_LIMITATION = "A missing sentinel means fuse state is unknown, not that every fuse is disabled."; -const byteSchema = z.number().int().min(0).max(255); +const byteSchema = z.int().min(0).max(255); const fuseStateSchema = z.enum(["enabled", "disabled", "removed", "unknown"]); /** One fuse byte, with a version-1 name when the pinned table covers its index. */ export const electronFuseSchema = z.strictObject({ - index: z.number().int().nonnegative(), + index: z.int().nonnegative(), name: z.string().min(1).nullable(), state: fuseStateSchema, raw_byte: byteSchema, }); const electronFuseSentinelSchema = z.strictObject({ - sentinel_offset: z.number().int().nonnegative(), + sentinel_offset: z.int().nonnegative(), wire_version: byteSchema.nullable(), declared_length: byteSchema.nullable(), fuses: z.array(electronFuseSchema), @@ -84,18 +84,18 @@ const electronFuseSentinelSchema = z.strictObject({ }); const electronFuseSliceSchema = z.strictObject({ - index: z.number().int().nonnegative(), - file_offset: z.number().int().nonnegative(), - size: z.number().int().nonnegative(), + index: z.int().nonnegative(), + file_offset: z.int().nonnegative(), + size: z.int().nonnegative(), architecture: z.string().min(1).nullable(), - sentinel_count: z.number().int().nonnegative(), + sentinel_count: z.int().nonnegative(), sentinels: z.array(electronFuseSentinelSchema), }); const implicationLocation = { relationship: z.literal("derivation"), - slice_index: z.number().int().nonnegative(), - sentinel_offset: z.number().int().nonnegative(), + slice_index: z.int().nonnegative(), + sentinel_offset: z.int().nonnegative(), }; /** Derived runtime meaning of one observed fuse byte. The fuse bytes stay observed. */ @@ -138,7 +138,7 @@ export const electronFuseReportSchema = z selected_path: localPathStringSchema, resolved_path: localPathStringSchema, sha256: digestSchema, - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), format: z.enum(["mach-o", "mach-o-universal", "pe", "elf"]), }) .describe( diff --git a/src/domain/evidence.ts b/src/domain/evidence.ts index cfde6d7935..f20ac5ba0c 100644 --- a/src/domain/evidence.ts +++ b/src/domain/evidence.ts @@ -104,12 +104,12 @@ export const evidenceLocationSchema = z.discriminatedUnion("kind", [ z.strictObject({ kind: z.literal("artifact-path"), path: z.string().min(1) }), z.strictObject({ kind: z.literal("file-offset"), - offset: z.number().int().min(0), + offset: z.int().min(0), }), z.strictObject({ kind: z.literal("file-offset-range"), - start: z.number().int().min(0), - end: z.number().int().min(0), + start: z.int().min(0), + end: z.int().min(0), }), ]); diff --git a/src/domain/evidenceCompletionLedger.ts b/src/domain/evidenceCompletionLedger.ts index 4037f1c9a1..ee806b4b4a 100644 --- a/src/domain/evidenceCompletionLedger.ts +++ b/src/domain/evidenceCompletionLedger.ts @@ -28,12 +28,12 @@ export const evidenceCompletionRecordSchema = z.strictObject({ }); const completionSummarySchema = z.strictObject({ - total: z.number().int().min(1), - pass: z.number().int().nonnegative(), - fail: z.number().int().nonnegative(), - unsupported: z.number().int().nonnegative(), - truncated: z.number().int().nonnegative(), - unknown: z.number().int().nonnegative(), + total: z.int().min(1), + pass: z.int().nonnegative(), + fail: z.int().nonnegative(), + unsupported: z.int().nonnegative(), + truncated: z.int().nonnegative(), + unknown: z.int().nonnegative(), complete: z.boolean(), }); diff --git a/src/domain/evidenceRecordSummary.ts b/src/domain/evidenceRecordSummary.ts index b037224b88..795eddfad2 100644 --- a/src/domain/evidenceRecordSummary.ts +++ b/src/domain/evidenceRecordSummary.ts @@ -14,7 +14,7 @@ export const evidenceRecordFiltersSchema = z.strictObject({ }); export type EvidenceRecordFilters = z.infer; -const countSchema = z.number().int().nonnegative(); +const countSchema = z.int().nonnegative(); const nativeMetadataSchema = z.object({ procedure: z.object({ address: z.string(), name: z.string().nullish() }), native_value_flow: z.unknown().optional(), diff --git a/src/domain/evm/evmInterface.ts b/src/domain/evm/evmInterface.ts index 01a15b15d8..165f3cc6bc 100644 --- a/src/domain/evm/evmInterface.ts +++ b/src/domain/evm/evmInterface.ts @@ -3,7 +3,7 @@ import { z } from "zod"; import { absoluteLocalPathStringSchema } from "../localPath.js"; import { solidityMetadataSchema } from "./solidityMetadata.js"; -const byteOffset = z.number().int().nonnegative(); +const byteOffset = z.int().nonnegative(); const sha256 = z.string().regex(/^[a-f0-9]{64}$/); /** Owned EVMole worker deadline. Omission keeps this value. */ export const DEFAULT_EVM_TIMEOUT_MS = 30_000; diff --git a/src/domain/evm/solidityMetadata.ts b/src/domain/evm/solidityMetadata.ts index 28cdee95f7..ba2e146a57 100644 --- a/src/domain/evm/solidityMetadata.ts +++ b/src/domain/evm/solidityMetadata.ts @@ -30,8 +30,8 @@ export const solidityMetadataSchema = z .strictObject({ profile: z.literal("terminal-cbor-scalars-v1"), status: z.enum(["unavailable", "decoded", "partial", "not-decoded"]), - bytecode_offset: z.number().int().nonnegative().nullable(), - cbor_bytes: z.number().int().positive().max(65535).nullable(), + bytecode_offset: z.int().nonnegative().nullable(), + cbor_bytes: z.int().positive().max(65535).nullable(), entries: z .array( z.strictObject({ diff --git a/src/domain/flutter/flutterBuildAnalysis.ts b/src/domain/flutter/flutterBuildAnalysis.ts index d3a888919b..13a44398ff 100644 --- a/src/domain/flutter/flutterBuildAnalysis.ts +++ b/src/domain/flutter/flutterBuildAnalysis.ts @@ -89,7 +89,7 @@ export const flutterResultSchemas = { identify_flutter_build: z.strictObject({ target: z.strictObject({ path: localPathStringSchema, - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), sha256: digestSchema, }), flutter_detected: z.boolean(), @@ -98,12 +98,12 @@ export const flutterResultSchemas = { abi: z.string().min(1), libapp: z.strictObject({ present: z.boolean(), - bytes: z.number().int().nonnegative().nullable(), + bytes: z.int().nonnegative().nullable(), sha256: digestSchema.nullable(), /** Supported ELF header with table extents inside the library; table contents are not validated. */ elf_header_valid: z.boolean().nullable(), /** Number of Dart snapshot sections found (vm + isolate). */ - snapshot_hash_sources: z.number().int().nonnegative(), + snapshot_hash_sources: z.int().nonnegative(), /** Distinct hashes found; more than one means the sections disagree. */ snapshot_hash_candidates: z.array( z.string().regex(/^[0-9a-f]{32}$/u), @@ -116,7 +116,7 @@ export const flutterResultSchemas = { }), libflutter: z.strictObject({ present: z.boolean(), - bytes: z.number().int().nonnegative().nullable(), + bytes: z.int().nonnegative().nullable(), sha256: digestSchema.nullable(), build_id: z .string() @@ -150,7 +150,7 @@ export const flutterResultSchemas = { inspect_dart_aot: z.strictObject({ target: z.strictObject({ path: localPathStringSchema, - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), sha256: digestSchema, }), abi: z.string().min(1), @@ -160,7 +160,7 @@ export const flutterResultSchemas = { .describe( "Coverage of ELF symbols, independent data headers, AOT kind, extents and agreeing hashes", ), - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), sha256: digestSchema, snapshot_hash: z .string() @@ -169,17 +169,17 @@ export const flutterResultSchemas = { /** Distinct hashes found; more than one means the sections disagree. */ snapshot_hash_candidates: z.array(z.string().regex(/^[0-9a-f]{32}$/u)), /** Distinct exported data headers with a valid hash at the header's fixed offset. */ - snapshot_hash_sources: z.number().int().nonnegative(), + snapshot_hash_sources: z.int().nonnegative(), /** Snapshot symbols read from the dynamic symbol table. */ sections: z.array( z.strictObject({ name: z.string().min(1), - offset: z.number().int().nonnegative(), - size: z.number().int().nonnegative(), + offset: z.int().nonnegative(), + size: z.int().nonnegative(), magic_valid: z.boolean(), - kind: z.number().int().nonnegative().nullable(), + kind: z.int().nonnegative().nullable(), /** Raw declared snapshot length, excluding the four magic bytes. */ - header_length: z.number().int().nonnegative().nullable(), + header_length: z.int().nonnegative().nullable(), }), ), }), @@ -191,14 +191,14 @@ export const flutterResultSchemas = { ), /** Distinct package: source URIs, sorted, bounded. */ package_uris: z.array(z.string().min(1)), - package_uri_count_at_least: z.number().int().nonnegative(), + package_uri_count_at_least: z.int().nonnegative(), /** Distinct dart: SDK URIs, sorted, bounded. */ dart_uris: z.array(z.string().min(1)), - dart_uri_count_at_least: z.number().int().nonnegative(), + dart_uri_count_at_least: z.int().nonnegative(), /** Identifier-like tokens, bounded; includes incidental matches. */ class_like_tokens: z.array(z.string().min(1)), - class_like_token_count_at_least: z.number().int().nonnegative(), - printable_run_count: z.number().int().nonnegative(), + class_like_token_count_at_least: z.int().nonnegative(), + printable_run_count: z.int().nonnegative(), }), coverage: z.enum(["complete", "partial"]), }), diff --git a/src/domain/functionComparisonSchemas.ts b/src/domain/functionComparisonSchemas.ts index 9c340028ee..75957a7b70 100644 --- a/src/domain/functionComparisonSchemas.ts +++ b/src/domain/functionComparisonSchemas.ts @@ -24,15 +24,15 @@ export const functionComparisonInputSchema = z.strictObject({ }); const textDeltaSchema = z.object({ - added_lines: z.number().int().min(0), - removed_lines: z.number().int().min(0), - hunks: z.number().int().min(0), + added_lines: z.int().min(0), + removed_lines: z.int().min(0), + hunks: z.int().min(0), }); const functionDimensionContextShape = { dimension: functionComparisonDimensionNameSchema, - left_count: z.number().int().min(0).nullable(), - right_count: z.number().int().min(0).nullable(), + left_count: z.int().min(0).nullable(), + right_count: z.int().min(0).nullable(), evidence_links: z.array(evidenceIdSchema).min(2), limitations: z.array(z.string()), }; @@ -87,9 +87,9 @@ export const functionComparisonResultSchema = z left_subject_sha256: digestSchema, right_subject_sha256: digestSchema, summary: z.object({ - unchanged: z.number().int().min(0), - changed: z.number().int().min(0), - unknown: z.number().int().min(0), + unchanged: z.int().min(0), + changed: z.int().min(0), + unknown: z.int().min(0), }), dimensions: z.array(functionDimensionSchema).length(8), changes: z.array(functionDimensionSchema), diff --git a/src/domain/go/goBinary.ts b/src/domain/go/goBinary.ts index b8e2de0c1b..2cd8cbb221 100644 --- a/src/domain/go/goBinary.ts +++ b/src/domain/go/goBinary.ts @@ -28,8 +28,8 @@ export const goArchitectureForSubject = (architecture: string) => { }; const sourceRangeSchema = z.strictObject({ - offset: z.number().int().nonnegative(), - bytes: z.number().int().nonnegative(), + offset: z.int().nonnegative(), + bytes: z.int().nonnegative(), }); const moduleIdentitySchema = z.strictObject({ path: z.string(), @@ -69,7 +69,7 @@ export const inspectGoBinaryInputSchema = z.strictObject({ /** Compiler-written build information and its original file-backed source ranges. */ export const goBuildInfoSchema = z.strictObject({ - header_offset: z.number().int().nonnegative(), + header_offset: z.int().nonnegative(), encoding: z.enum(["inline", "pointer"]), go_version: z.string().nullable(), go_version_bytes_base64: canonicalBase64Schema, @@ -86,7 +86,7 @@ export const goBinarySchema = z artifact: z.strictObject({ path: localPathStringSchema, sha256: digestSchema, - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), }), format: z.enum(["elf", "pe", "macho"]), architecture: z.string(), diff --git a/src/domain/hopperValues.ts b/src/domain/hopperValues.ts index 51bd70660b..5babb652d7 100644 --- a/src/domain/hopperValues.ts +++ b/src/domain/hopperValues.ts @@ -81,7 +81,7 @@ export const analysisStringSchema = z.object({ "Whether the provider declares the encoding or REA infers it from the typed bytes and native display. This does not establish the original source's intended encoding.", ), termination: z.enum(["missing", "present_or_not_required"]), - byte_length: z.number().int().min(0), + byte_length: z.int().min(0), }) .exactOptional(), }); @@ -106,13 +106,8 @@ export const functionBodySchema = z.discriminatedUnion("available", [ .describe("Inclusive last address of this observed body range."), }), ), - total_bytes: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER), - span_bytes: z - .number() - .int() - .min(0) - .max(Number.MAX_SAFE_INTEGER) - .nullable(), + total_bytes: z.int().min(0).max(Number.MAX_SAFE_INTEGER), + span_bytes: z.int().min(0).max(Number.MAX_SAFE_INTEGER).nullable(), non_contiguous: z.boolean(), contains_entry: z.boolean(), }) @@ -266,7 +261,7 @@ export const availableReferenceKindSchema = z conditional: z.boolean(), terminal: z.boolean(), primary: z.boolean(), - operand_index: z.number().int(), + operand_index: z.int(), external: z.boolean(), }) .strict(); @@ -317,7 +312,7 @@ export const swiftStringLiteralSchema = z.discriminatedUnion("representation", [ const swiftStringLiteralOmissionFields = { source_address: swiftStringLiteralFields.source_address, - byte_length: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER), + byte_length: z.int().min(0).max(Number.MAX_SAFE_INTEGER), reason: z .enum(["capacity", "unresolved_jump"]) .describe( diff --git a/src/domain/javascript/electronActiveObservation.ts b/src/domain/javascript/electronActiveObservation.ts index 5b1a445439..e7631e5786 100644 --- a/src/domain/javascript/electronActiveObservation.ts +++ b/src/domain/javascript/electronActiveObservation.ts @@ -12,7 +12,7 @@ const absolutePathSchema = z "provider path must be absolute", ); -const windowIndexSchema = z.number().int().min(0); +const windowIndexSchema = z.int().min(0); const deepLinkUrlSchema = z .string() @@ -37,7 +37,7 @@ const actionSchema = z.discriminatedUnion("kind", [ z.strictObject({ step_id: z.string().min(1), kind: z.literal("wait"), - duration_ms: z.number().int().min(0), + duration_ms: z.int().min(0), window_index: windowIndexSchema.optional(), }), z.strictObject({ @@ -86,7 +86,7 @@ export type ElectronActiveObservationInput = z.infer< /** Canonical active Electron event shared by the hook boundary and public timeline. */ export const electronActiveTimelineEventSchema = z.strictObject({ - sequence: z.number().int().min(1), + sequence: z.int().min(1), correlation_id: z.string().nullable(), kind: z.enum([ "main-handler-invocation", @@ -158,7 +158,7 @@ const ipcEventSchema = electronActiveTimelineEventSchema.extend({ /** Process facts shared by the runtime boundary and retained active observation. */ export const electronActiveProcessMetricSchema = z.strictObject({ - pid: z.number().int().min(1), + pid: z.int().min(1), type: z.string().min(1), name: z.string().nullable(), service_name: z.string().nullable(), @@ -199,7 +199,7 @@ const actionResultContextShape = { ]), window_index: windowIndexSchema.nullable(), target: z.string().nullable(), - elapsed_ms: z.number().int().min(0), + elapsed_ms: z.int().min(0), }; const actionResultSchema = z.discriminatedUnion("status", [ @@ -231,36 +231,36 @@ export const electronActiveObservationResultSchema = z.strictObject({ }), ipc: z.strictObject({ events: z.array(ipcEventSchema), - observed: z.number().int().min(0), - dropped: z.number().int().min(0), + observed: z.int().min(0), + dropped: z.int().min(0), }), timeline: z.strictObject({ events: z.array(electronActiveTimelineEventSchema), - observed: z.number().int().min(0), - dropped: z.number().int().min(0), + observed: z.int().min(0), + dropped: z.int().min(0), }), retention: z.strictObject({ - budget_bytes: z.number().int().min(0), - estimated_retained_bytes: z.number().int().min(0), - event_serialized_byte_upper_bound: z.number().int().min(0), - retained: z.number().int().min(0), - dropped: z.number().int().min(0), + budget_bytes: z.int().min(0), + estimated_retained_bytes: z.int().min(0), + event_serialized_byte_upper_bound: z.int().min(0), + retained: z.int().min(0), + dropped: z.int().min(0), dropped_event_families: z.array( z.strictObject({ family: z.string().min(1), - count: z.number().int().min(1), + count: z.int().min(1), }), ), dropped_event_roles: z.array( z.strictObject({ role: z.string().min(1), - count: z.number().int().min(1), + count: z.int().min(1), }), ), - observed_ipc: z.number().int().min(0), - dropped_ipc: z.number().int().min(0), - observed_runtime: z.number().int().min(0), - dropped_runtime: z.number().int().min(0), + observed_ipc: z.int().min(0), + dropped_ipc: z.int().min(0), + observed_runtime: z.int().min(0), + dropped_runtime: z.int().min(0), }), coverage: coverageSchema, limitations: z.array(z.string()), diff --git a/src/domain/javascript/electronObservation.ts b/src/domain/javascript/electronObservation.ts index ada76e98e8..3e688681d6 100644 --- a/src/domain/javascript/electronObservation.ts +++ b/src/domain/javascript/electronObservation.ts @@ -27,7 +27,7 @@ export type ListElectronTargetsInput = z.infer< const inspectElectronPageFacts = { ...approvedElectronInput, target_id: z.string().trim().min(1), - observation_ms: z.number().int().min(0).default(100), + observation_ms: z.int().min(0).default(100), command_timeout_ms: webRuntimeCommandTimeoutSchema, } as const; export const inspectElectronPageInputSchema = z.union([ @@ -62,8 +62,8 @@ export const electronTargetListSchema = z.object({ browser: browserVersionSchema, targets: z.array(electronTargetSchema), excluded: z.object({ - unsupported_url: z.number().int().min(0), - non_page: z.number().int().min(0), + unsupported_url: z.int().min(0), + non_page: z.int().min(0), }), limitations: z.array(z.string()), }); @@ -76,7 +76,7 @@ export const electronPageInspectionSchema = z.object({ capture_window: z.object({ started_at: z.iso.datetime(), ended_at: z.iso.datetime(), - observation_ms: z.number().int().min(0), + observation_ms: z.int().min(0), }), completeness: browserCompletenessSchema, frames: z.array( @@ -87,11 +87,11 @@ export const electronPageInspectionSchema = z.object({ }), ), dom: z.object({ - total_nodes: z.number().int().min(0), + total_nodes: z.int().min(0), nodes: z.array(cdpDomNodeSchema), }), scripts: z.object({ - total: z.number().int().min(0), + total: z.int().min(0), items: z.array( z.object({ script_key: prefixedDigestSchema("electron_script"), diff --git a/src/domain/javascript/javascriptApplicationAnalysis.ts b/src/domain/javascript/javascriptApplicationAnalysis.ts index adda5c31ba..c24bdb6285 100644 --- a/src/domain/javascript/javascriptApplicationAnalysis.ts +++ b/src/domain/javascript/javascriptApplicationAnalysis.ts @@ -22,7 +22,7 @@ import { javaScriptSourceSelectionSchema, } from "./javascriptSourceSelection.js"; -const countSchema = z.number().int().min(0); +const countSchema = z.int().min(0); /** Public target-free request for static JavaScript application analysis. */ export const analyzeJavaScriptApplicationInputSchema = z.strictObject({ diff --git a/src/domain/javascript/javascriptApplicationEvidenceSchemas.ts b/src/domain/javascript/javascriptApplicationEvidenceSchemas.ts index 34d5dd2bb3..203e1da82c 100644 --- a/src/domain/javascript/javascriptApplicationEvidenceSchemas.ts +++ b/src/domain/javascript/javascriptApplicationEvidenceSchemas.ts @@ -96,8 +96,8 @@ const sourceRangeSchema = javascriptSourceRangeSchema.safeExtend({ const fileOffsetRangeSchema = z .strictObject({ kind: z.literal("file-offset-range"), - start: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER), - end: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER), + start: z.int().min(0).max(Number.MAX_SAFE_INTEGER), + end: z.int().min(0).max(Number.MAX_SAFE_INTEGER), }) .superRefine((location, context) => { if (location.end < location.start) @@ -158,7 +158,7 @@ const applicationExtractorSchema = z.strictObject({ const applicationLimitSchema = z.strictObject({ name: z.string().min(1), - value: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER), + value: z.int().min(0).max(Number.MAX_SAFE_INTEGER), unit: z.enum([ "items", "bytes", @@ -172,7 +172,7 @@ const applicationLimitSchema = z.strictObject({ /** Bounded collection coverage without treating omission as absence. */ const coverageLimitsSchema = z.array(applicationLimitSchema); -const omittedCountSchema = z.number().int().min(0).max(Number.MAX_SAFE_INTEGER); +const omittedCountSchema = z.int().min(0).max(Number.MAX_SAFE_INTEGER); export const applicationCoverageSchema = z.union([ z.strictObject({ diff --git a/src/domain/javascript/javascriptApplicationVersionComparisonSchemas.ts b/src/domain/javascript/javascriptApplicationVersionComparisonSchemas.ts index bd2c1a1678..6f2fff3640 100644 --- a/src/domain/javascript/javascriptApplicationVersionComparisonSchemas.ts +++ b/src/domain/javascript/javascriptApplicationVersionComparisonSchemas.ts @@ -183,8 +183,8 @@ const comparisonItemSchema = z.union([ const comparisonCoverageSchema = z.strictObject({ left_graph_status: z.enum(["complete", "partial", "unknown", "unavailable"]), right_graph_status: z.enum(["complete", "partial", "unknown", "unavailable"]), - left_graph_omitted_count: z.number().int().min(0).nullable(), - right_graph_omitted_count: z.number().int().min(0).nullable(), + left_graph_omitted_count: z.int().min(0).nullable(), + right_graph_omitted_count: z.int().min(0).nullable(), status: z.enum(["complete-within-inputs", "partial", "truncated"]), }); @@ -203,21 +203,21 @@ export const applicationVersionComparisonResultSchema = z root_artifact_sha256: z.string().regex(/^[a-f0-9]{64}$/u), }), summary: z.strictObject({ - unchanged: z.number().int().min(0), - added: z.number().int().min(0), - removed: z.number().int().min(0), - changed: z.number().int().min(0), - unknown: z.number().int().min(0), + unchanged: z.int().min(0), + added: z.int().min(0), + removed: z.int().min(0), + changed: z.int().min(0), + unknown: z.int().min(0), }), matching: z.strictObject({ - exact_node_identity: z.number().int().min(0), - exact_content_digest: z.number().int().min(0), - exact_module_source_digest: z.number().int().min(0), - source_map_identity: z.number().int().min(0), - structural_fingerprint: z.number().int().min(0), - semantic_key: z.number().int().min(0), - ambiguous: z.number().int().min(0), - unmatched: z.number().int().min(0), + exact_node_identity: z.int().min(0), + exact_content_digest: z.int().min(0), + exact_module_source_digest: z.int().min(0), + source_map_identity: z.int().min(0), + structural_fingerprint: z.int().min(0), + semantic_key: z.int().min(0), + ambiguous: z.int().min(0), + unmatched: z.int().min(0), }), items: z.array(comparisonItemSchema), graph: javascriptApplicationGraphSchema, diff --git a/src/domain/javascript/javascriptExportShapeComparisonSchemas.ts b/src/domain/javascript/javascriptExportShapeComparisonSchemas.ts index 593aae4d3b..b50690e703 100644 --- a/src/domain/javascript/javascriptExportShapeComparisonSchemas.ts +++ b/src/domain/javascript/javascriptExportShapeComparisonSchemas.ts @@ -106,7 +106,7 @@ const projectedPropertyCoverageSchema = z.discriminatedUnion("status", [ z.strictObject({ path: jsonPointerSchema, status: z.literal("partial"), - omitted: z.union([z.number().int().positive(), z.null()]), + omitted: z.union([z.int().positive(), z.null()]), }), ]); export type ProjectedPropertyCoverage = z.infer< @@ -156,10 +156,10 @@ export const projectedExportReturnShapesSchema = z static_return_shapes: z.array(projectedReturnShapeSchema), return_shape_coverage: z.strictObject({ status: z.enum(["complete", "partial", "truncated"]), - retained_return_sites: z.number().int().min(0), - omitted_return_sites: z.number().int().min(0).nullable(), - omitted_fields: z.number().int().min(0), - omitted_property_coverage: z.number().int().min(0), + retained_return_sites: z.int().min(0), + omitted_return_sites: z.int().min(0).nullable(), + omitted_fields: z.int().min(0), + omitted_property_coverage: z.int().min(0), projection_complete: z.boolean(), }), }) @@ -189,7 +189,7 @@ const selectorResultShape = { requested_module_path: textSchema, requested_export_name: exportNameSchema, candidates: z.array(exportCandidateSchema), - omitted_candidates: z.number().int().min(0), + omitted_candidates: z.int().min(0), }; const selectorResultSchema = z.union([ z.strictObject({ @@ -261,7 +261,7 @@ const inventoryPropertyCoverageSchema = z.strictObject({ const propertyInventorySchema = z.strictObject({ side: z.enum(["left", "right"]), - variant_index: z.number().int().nonnegative(), + variant_index: z.int().nonnegative(), discriminant: discriminantSchema.nullable(), paired: z.boolean(), source_range: javascriptSourceRangeSchema, @@ -276,10 +276,10 @@ export const javaScriptExportShapeComparisonResultSchema = z.strictObject({ right: selectorResultSchema, property_inventories: z.array(propertyInventorySchema), summary: z.strictObject({ - added: z.number().int().min(0), - removed: z.number().int().min(0), - changed: z.number().int().min(0), - unknown: z.number().int().min(0), + added: z.int().min(0), + removed: z.int().min(0), + changed: z.int().min(0), + unknown: z.int().min(0), }), changes: z.array(javaScriptExportShapeComparisonChangeSchema), coverage: z.strictObject({ @@ -296,19 +296,19 @@ export const javaScriptExportShapeComparisonResultSchema = z.strictObject({ "unknown", "unavailable", ]), - paired_variants: z.number().int().min(0), - unpaired_left_variants: z.number().int().min(0), - unpaired_right_variants: z.number().int().min(0), - omitted_left_variants: z.number().int().min(0), - omitted_right_variants: z.number().int().min(0), - left_source_omitted_variants: z.number().int().min(0).nullable(), - right_source_omitted_variants: z.number().int().min(0).nullable(), - left_omitted_fields: z.number().int().min(0), - right_omitted_fields: z.number().int().min(0), - left_omitted_property_coverage: z.number().int().min(0), - right_omitted_property_coverage: z.number().int().min(0), - omitted_candidates: z.number().int().min(0), - omitted_changes: z.number().int().min(0), + paired_variants: z.int().min(0), + unpaired_left_variants: z.int().min(0), + unpaired_right_variants: z.int().min(0), + omitted_left_variants: z.int().min(0), + omitted_right_variants: z.int().min(0), + left_source_omitted_variants: z.int().min(0).nullable(), + right_source_omitted_variants: z.int().min(0).nullable(), + left_omitted_fields: z.int().min(0), + right_omitted_fields: z.int().min(0), + left_omitted_property_coverage: z.int().min(0), + right_omitted_property_coverage: z.int().min(0), + omitted_candidates: z.int().min(0), + omitted_changes: z.int().min(0), }), evidence_links: z.array(evidenceIdSchema).length(2), limitations: z.array(textSchema), diff --git a/src/domain/javascript/javascriptFeatureTraceSchemas.ts b/src/domain/javascript/javascriptFeatureTraceSchemas.ts index b341ce1420..e7eba7e5b8 100644 --- a/src/domain/javascript/javascriptFeatureTraceSchemas.ts +++ b/src/domain/javascript/javascriptFeatureTraceSchemas.ts @@ -161,15 +161,15 @@ export const applicationFeatureTraceResultSchema = z.strictObject({ paths: z.array(tracePathSchema), native_handoffs: z.array(nativeHandoffSchema), summary: z.strictObject({ - matched_seeds: z.number().int().min(0), - traced_nodes: z.number().int().min(0), - traced_edges: z.number().int().min(0), - terminal_paths: z.number().int().min(0), - native_handoffs: z.number().int().min(0), - observed_facts: z.number().int().min(0), - inferred_facts: z.number().int().min(0), - unknown_facts: z.number().int().min(0), - unavailable_facts: z.number().int().min(0), + matched_seeds: z.int().min(0), + traced_nodes: z.int().min(0), + traced_edges: z.int().min(0), + terminal_paths: z.int().min(0), + native_handoffs: z.int().min(0), + observed_facts: z.int().min(0), + inferred_facts: z.int().min(0), + unknown_facts: z.int().min(0), + unavailable_facts: z.int().min(0), }), coverage: z.strictObject({ status: z.enum(["complete-within-source", "partial", "no-match"]), @@ -179,7 +179,7 @@ export const applicationFeatureTraceResultSchema = z.strictObject({ "unknown", "unavailable", ]), - total_seed_matches: z.number().int().min(0), + total_seed_matches: z.int().min(0), }), evidence_links: z.array(evidenceIdSchema).min(1), limitations: z.array(boundedTextSchema), diff --git a/src/domain/javascript/javascriptRecovery.ts b/src/domain/javascript/javascriptRecovery.ts index 6f4c04004a..07f34699a6 100644 --- a/src/domain/javascript/javascriptRecovery.ts +++ b/src/domain/javascript/javascriptRecovery.ts @@ -35,12 +35,12 @@ export const javascriptRecoveryInputSchema = z.strictObject({ const fileSchema = z.strictObject({ path: z.string().min(1), sha256: digestSchema, - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), }); const rangeSchema = z.strictObject({ - start: z.number().int().nonnegative(), - end: z.number().int().nonnegative(), + start: z.int().nonnegative(), + end: z.int().nonnegative(), }); const sourceSchema = fileSchema.extend({ @@ -70,8 +70,8 @@ export const javascriptRecoveryResultSchema = z.strictObject({ reported_safety: z.string(), reported_strategy: z.string(), reported_format: z.string(), - total: z.number().int().nonnegative(), - failed: z.number().int().nonnegative(), + total: z.int().nonnegative(), + failed: z.int().nonnegative(), modules: z.array( z.strictObject({ reported_filename: z.string().min(1), diff --git a/src/domain/javascript/javascriptRuntimeObservation.ts b/src/domain/javascript/javascriptRuntimeObservation.ts index 82efee240c..089649e179 100644 --- a/src/domain/javascript/javascriptRuntimeObservation.ts +++ b/src/domain/javascript/javascriptRuntimeObservation.ts @@ -32,7 +32,7 @@ export const observeJavaScriptRuntimeInputSchema = z.strictObject({ ...runtimeEndpoint, target_id: z.string().trim().min(1), runtime_kind: javascriptRuntimeKindSchema.optional(), - observation_ms: z.number().int().min(0).default(100), + observation_ms: z.int().min(0).default(100), }); export type ObserveJavaScriptRuntimeInput = z.infer< typeof observeJavaScriptRuntimeInputSchema @@ -103,8 +103,8 @@ export const javascriptRuntimeTargetListSchema = z.strictObject({ runtime: javascriptRuntimeVersionSchema, targets: z.array(javascriptRuntimeTargetSchema), excluded: z.strictObject({ - unsupported_location: z.number().int().min(0), - unconnectable: z.number().int().min(0), + unsupported_location: z.int().min(0), + unconnectable: z.int().min(0), }), limitations: z.array(observationTextSchema), }); @@ -118,7 +118,6 @@ const javascriptRuntimeScriptSchema = z.strictObject({ execution_context_key: z.string().nullable(), cdp_hash: z.string().nullable(), length: z - .number() .int() .min(0) .nullable() @@ -150,20 +149,20 @@ export const javascriptRuntimeObservationSchema = z.strictObject({ ]), }), capture: z.strictObject({ - observation_ms: z.number().int().min(0), - events_observed: z.number().int().min(0), - events_retained: z.number().int().min(0), - events_dropped: z.number().int().min(0), - metadata_bytes_retained: z.number().int().min(0), + observation_ms: z.int().min(0), + events_observed: z.int().min(0), + events_retained: z.int().min(0), + events_dropped: z.int().min(0), + metadata_bytes_retained: z.int().min(0), truncated: z.boolean(), truncation_reasons: z.array(observationTextSchema), }), scripts: z.strictObject({ items: z.array(javascriptRuntimeScriptSchema), - observed_total: z.number().int().min(0), + observed_total: z.int().min(0), excluded: z.strictObject({ - unsupported_location: z.number().int().min(0), - invalid_protocol_value: z.number().int().min(0), + unsupported_location: z.int().min(0), + invalid_protocol_value: z.int().min(0), }), }), execution_contexts: z.array(javascriptRuntimeContextSchema), diff --git a/src/domain/javascript/javascriptRuntimeReconciliationSchemas.ts b/src/domain/javascript/javascriptRuntimeReconciliationSchemas.ts index 976b82dbe5..46ee249c73 100644 --- a/src/domain/javascript/javascriptRuntimeReconciliationSchemas.ts +++ b/src/domain/javascript/javascriptRuntimeReconciliationSchemas.ts @@ -152,9 +152,9 @@ const captureSummarySchema = z.strictObject({ .string() .min(1) .or(javascriptRuntimeUnresolvedLocationSchema), - frames: z.number().int().min(0), - scripts: z.number().int().min(0), - workers: z.number().int().min(0), + frames: z.int().min(0), + scripts: z.int().min(0), + workers: z.int().min(0), scripts_complete_within_scope: z.boolean(), }); @@ -188,7 +188,7 @@ const reconciliationItemShape = { ]), confidence: z.enum(["exact", "high", "medium", "low", "unknown"]), reason: reconciliationReasonSchema, - candidate_static_count: z.number().int().min(0), + candidate_static_count: z.int().min(0), candidate_static_nodes: z.array( z.strictObject({ static_layer_id: prefixedDigestSchema("jrl"), @@ -239,34 +239,34 @@ export const javascriptRuntimeReconciliationResultSchema = z.strictObject({ runtime_captures: z.array(captureSummarySchema).min(1), graph: javascriptApplicationGraphSchema, summary: z.strictObject({ - runtime_targets: z.number().int().min(0), - runtime_frames: z.number().int().min(0), - runtime_scripts: z.number().int().min(0), - runtime_workers: z.number().int().min(0), - matched: z.number().int().min(0), - ambiguous: z.number().int().min(0), - unmatched: z.number().int().min(0), - unknown: z.number().int().min(0), - static_loaded: z.number().int().min(0), - static_resident: z.number().int().min(0), - static_not_observed: z.number().int().min(0), - static_unknown: z.number().int().min(0), + runtime_targets: z.int().min(0), + runtime_frames: z.int().min(0), + runtime_scripts: z.int().min(0), + runtime_workers: z.int().min(0), + matched: z.int().min(0), + ambiguous: z.int().min(0), + unmatched: z.int().min(0), + unknown: z.int().min(0), + static_loaded: z.int().min(0), + static_resident: z.int().min(0), + static_not_observed: z.int().min(0), + static_unknown: z.int().min(0), }), reconciliations: z.array(reconciliationItemSchema), static_load_states: z.array(staticLoadStateSchema), source_map_authority: z.strictObject({ used_for_primary_matching: z.literal(false), - static_layer_count: z.number().int().min(0), - runtime_script_declarations: z.number().int().min(0), + static_layer_count: z.int().min(0), + runtime_script_declarations: z.int().min(0), limitation: boundedTextSchema, }), coverage: z.strictObject({ status: z.enum(["complete-within-inputs", "partial", "truncated"]), truncated: z.boolean(), - omitted_runtime_entities: z.number().int().min(0), - omitted_reconciliation_items: z.number().int().min(0), - omitted_static_load_states: z.number().int().min(0), - omitted_graph_items: z.number().int().min(0), + omitted_runtime_entities: z.int().min(0), + omitted_reconciliation_items: z.int().min(0), + omitted_static_load_states: z.int().min(0), + omitted_graph_items: z.int().min(0), }), evidence_links: z.array(evidenceIdSchema).min(2), limitations: z.array(boundedTextSchema), diff --git a/src/domain/javascript/javascriptSemanticGraphSchemas.ts b/src/domain/javascript/javascriptSemanticGraphSchemas.ts index 62d27a6cdb..7e4097124a 100644 --- a/src/domain/javascript/javascriptSemanticGraphSchemas.ts +++ b/src/domain/javascript/javascriptSemanticGraphSchemas.ts @@ -257,7 +257,7 @@ export const JAVASCRIPT_SEMANTIC_UNKNOWN_REASONS = [ export const javaScriptSemanticUnknownOmissionSchema = z.strictObject({ family: z.enum(JAVASCRIPT_SEMANTIC_RELATION_FAMILIES), reason: z.enum(JAVASCRIPT_SEMANTIC_UNKNOWN_REASONS), - occurrences: z.number().int().positive(), + occurrences: z.int().positive(), }); /** At most one summary row for each finite family/reason pair. */ export const javaScriptSemanticUnknownOmissionsSchema = z @@ -290,7 +290,7 @@ export const javaScriptSemanticUnknownSchema = }); const fingerprintComponentsSchema = z.strictObject({ - parameter_arity: z.number().int().min(0), + parameter_arity: z.int().min(0), normalized_ast_sha256: digestSchema, control_flow_sha256: digestSchema, relation_shape_sha256: digestSchema, @@ -329,8 +329,8 @@ export const javaScriptSemanticFingerprintSchema = const familyCoverageSchema = z.strictObject({ family: z.enum(JAVASCRIPT_SEMANTIC_RELATION_FAMILIES), status: z.enum(["complete", "partial", "unknown", "unsupported"]), - retained_relations: z.number().int().min(0), - omitted_relations: z.number().int().min(0).nullable(), + retained_relations: z.int().min(0), + omitted_relations: z.int().min(0).nullable(), unknown_ids: z.array(semanticUnknownIdSchema), }); @@ -339,12 +339,12 @@ const graphCoverageSchema = z.strictObject({ truncated: z.boolean(), omitted_unknown_occurrences: javaScriptSemanticUnknownOmissionsSchema.exactOptional(), - omitted_nodes: z.number().int().min(0).nullable(), - omitted_relations: z.number().int().min(0).nullable(), + omitted_nodes: z.int().min(0).nullable(), + omitted_relations: z.int().min(0).nullable(), limits: z.array( z.strictObject({ name: z.string().min(1), - value: z.number().int().min(0), + value: z.int().min(0), unit: z.enum(["items", "bytes", "milliseconds", "depth", "other"]), }), ), diff --git a/src/domain/javascript/javascriptSemanticQuerySchemas.ts b/src/domain/javascript/javascriptSemanticQuerySchemas.ts index 6d548545f0..e85d3c9ec6 100644 --- a/src/domain/javascript/javascriptSemanticQuerySchemas.ts +++ b/src/domain/javascript/javascriptSemanticQuerySchemas.ts @@ -94,12 +94,12 @@ export const javaScriptSemanticQueryResultSchema = z.strictObject({ unknowns: z.array(javaScriptSemanticUnknownSchema), expected_match_node_ids: z.array(semanticNodeIdSchema), summary: z.strictObject({ - total_seed_matches: z.number().int().min(0), - traversed_nodes: z.number().int().min(0), - traversed_relations: z.number().int().min(0), - traversed_functions: z.number().int().min(0), - traversed_modules: z.number().int().min(0), - relevant_unknowns: z.number().int().min(0), + total_seed_matches: z.int().min(0), + traversed_nodes: z.int().min(0), + traversed_relations: z.int().min(0), + traversed_functions: z.int().min(0), + traversed_modules: z.int().min(0), + relevant_unknowns: z.int().min(0), }), coverage: z.strictObject({ status: z.enum(["complete", "partial", "unavailable"]), diff --git a/src/domain/javascript/javascriptSourceSelection.ts b/src/domain/javascript/javascriptSourceSelection.ts index c6e4033ece..8bf7073397 100644 --- a/src/domain/javascript/javascriptSourceSelection.ts +++ b/src/domain/javascript/javascriptSourceSelection.ts @@ -11,7 +11,7 @@ export const javaScriptSourcePathsSchema = z /** Caller scope retained independently of analysis success or completeness. */ export const javaScriptSourceSelectionSchema = z.strictObject({ requested_paths: javaScriptSourcePathsSchema, - unselected_files: z.number().int().min(0), + unselected_files: z.int().min(0), }); /** Explicit selected-source boundary for an otherwise complete inventory. */ diff --git a/src/domain/javascript/sourceToBundleComparisonSchemas.ts b/src/domain/javascript/sourceToBundleComparisonSchemas.ts index 9d6bd6b2f4..f69273b592 100644 --- a/src/domain/javascript/sourceToBundleComparisonSchemas.ts +++ b/src/domain/javascript/sourceToBundleComparisonSchemas.ts @@ -38,7 +38,7 @@ export const compareSourceToBundleInputSchema = z.strictObject({ const sourceToBundleSignalSchema = z.strictObject({ kind: sourceToBundleSignalKindSchema, - weight: z.number().int().min(1).max(100), + weight: z.int().min(1).max(100), source_value: textSchema, current_values: z.array(textSchema).min(1), }); @@ -46,7 +46,7 @@ const sourceToBundleSignalSchema = z.strictObject({ const sourceToBundleCandidateSchema = z.strictObject({ current_node_id: nodeIdSchema, current_node_kind: z.enum(JAVASCRIPT_APPLICATION_NODE_KINDS), - score: z.number().int().min(1), + score: z.int().min(1), confidence: z.enum(["exact", "high", "medium", "low"]), signals: z.array(sourceToBundleSignalSchema).min(1), }); @@ -89,18 +89,18 @@ export const sourceToBundleComparisonResultSchema = z.strictObject({ weights: z.array( z.strictObject({ signal: sourceToBundleSignalKindSchema, - weight: z.number().int().min(1).max(100), + weight: z.int().min(1).max(100), }), ), }), summary: z.strictObject({ - unchanged: z.number().int().min(0), - modified: z.number().int().min(0), - removed: z.number().int().min(0), - split: z.number().int().min(0), - merged: z.number().int().min(0), - duplicated: z.number().int().min(0), - unknown: z.number().int().min(0), + unchanged: z.int().min(0), + modified: z.int().min(0), + removed: z.int().min(0), + split: z.int().min(0), + merged: z.int().min(0), + duplicated: z.int().min(0), + unknown: z.int().min(0), }), items: z.array(sourceToBundleItemSchema), unmapped_current_node_ids: z.array(nodeIdSchema), @@ -113,9 +113,9 @@ export const sourceToBundleComparisonResultSchema = z.strictObject({ "unknown", "unavailable", ]), - retained_source_files: z.number().int().min(0), - retained_application_nodes: z.number().int().min(0), - candidate_evaluations: z.number().int().min(0), + retained_source_files: z.int().min(0), + retained_application_nodes: z.int().min(0), + candidate_evaluations: z.int().min(0), }), evidence_links: z.array(evidenceIdSchema).length(1), limitations: z.array(textSchema), diff --git a/src/domain/jsonShape.ts b/src/domain/jsonShape.ts index e18701795b..0f73208b42 100644 --- a/src/domain/jsonShape.ts +++ b/src/domain/jsonShape.ts @@ -22,13 +22,13 @@ type JsonShapePathSegment = z.infer; /** Value-free structural summary of one approved JSON payload. */ export const jsonShapeSchema = z.object({ root_type: jsonValueTypeSchema, - node_count: z.number().int().min(1), - max_depth_observed: z.number().int().min(0), + node_count: z.int().min(1), + max_depth_observed: z.int().min(0), properties: z.array( z.object({ path: z.array(jsonShapePathSegmentSchema).min(1), types: z.array(jsonValueTypeSchema).min(1), - observations: z.number().int().min(1), + observations: z.int().min(1), }), ), }); diff --git a/src/domain/managed/managedApplicationGraph.ts b/src/domain/managed/managedApplicationGraph.ts index 9ee2c40d9f..c01305e6ae 100644 --- a/src/domain/managed/managedApplicationGraph.ts +++ b/src/domain/managed/managedApplicationGraph.ts @@ -66,15 +66,15 @@ export const managedApplicationGraphResultSchema = z.strictObject({ managed_native_boundaries_evidence_id: evidenceIdSchema.nullable(), }), summary: z.strictObject({ - graph_nodes: z.number().int().min(0), - graph_edges: z.number().int().min(0), - assemblies: z.number().int().min(0), - modules: z.number().int().min(0), - types: z.number().int().min(0), - methods: z.number().int().min(0), - fields: z.number().int().min(0), - pinvoke_imports: z.number().int().min(0), - native_implementations: z.number().int().min(0), + graph_nodes: z.int().min(0), + graph_edges: z.int().min(0), + assemblies: z.int().min(0), + modules: z.int().min(0), + types: z.int().min(0), + methods: z.int().min(0), + fields: z.int().min(0), + pinvoke_imports: z.int().min(0), + native_implementations: z.int().min(0), }), graph: javascriptApplicationGraphSchema, coverage: z.strictObject({ diff --git a/src/domain/managed/managedArtifact.ts b/src/domain/managed/managedArtifact.ts index a6734c2c4f..d6e00b3f52 100644 --- a/src/domain/managed/managedArtifact.ts +++ b/src/domain/managed/managedArtifact.ts @@ -3,7 +3,7 @@ import { digestSchema } from "../digests.js"; /** Build-local ECMA-335 metadata token emitted as an eight-digit lowercase hex value. */ export const managedMetadataTokenSchema = z.string().regex(/^0x[0-9a-f]{8}$/u); -const offsetSchema = z.number().int().min(0); +const offsetSchema = z.int().min(0); /** A 16-byte CLI metadata GUID without RFC 4122 version/variant restrictions. */ export const cliMetadataGuidSchema = z @@ -12,7 +12,7 @@ export const cliMetadataGuidSchema = z const publicKeyIdentitySchema = z.object({ kind: z.enum(["none", "public-key", "public-key-token"]), - byte_length: z.number().int().min(0), + byte_length: z.int().min(0), sha256: digestSchema.nullable(), token: z .string() @@ -24,8 +24,8 @@ const assemblyIdentitySchema = z.object({ name: z.string(), version: z.string().regex(/^\d+\.\d+\.\d+\.\d+$/u), culture: z.string().nullable(), - flags: z.number().int().min(0).max(0xffff_ffff), - hash_algorithm: z.number().int().min(0).max(0xffff_ffff), + flags: z.int().min(0).max(0xffff_ffff), + hash_algorithm: z.int().min(0).max(0xffff_ffff), public_key: publicKeyIdentitySchema, token: managedMetadataTokenSchema, row_offset: offsetSchema, @@ -33,7 +33,7 @@ const assemblyIdentitySchema = z.object({ const moduleIdentitySchema = z.object({ name: z.string(), - generation: z.number().int().min(0).max(0xffff), + generation: z.int().min(0).max(0xffff), mvid: cliMetadataGuidSchema.nullable(), enc_id: cliMetadataGuidSchema.nullable(), enc_base_id: cliMetadataGuidSchema.nullable(), @@ -44,17 +44,14 @@ const moduleIdentitySchema = z.object({ const managedArtifactReferenceSchema = z.object({ path: z.string().min(1), sha256: digestSchema, - byte_length: z.number().int().min(0), + byte_length: z.int().min(0), format: z.literal("pe"), }); const managedMetadataSummarySchema = z.object({ status: z.enum(["absent", "complete", "partial", "malformed"]), version: z.string().nullable(), - table_row_counts: z.record( - z.string(), - z.number().int().min(0).max(0xffff_ffff), - ), + table_row_counts: z.record(z.string(), z.int().min(0).max(0xffff_ffff)), }); const managedTokenIdentityScopeSchema = z.object({ @@ -67,22 +64,22 @@ const assemblyReferenceSchema = z.object({ name: z.string(), version: z.string().regex(/^\d+\.\d+\.\d+\.\d+$/u), culture: z.string().nullable(), - flags: z.number().int().min(0).max(0xffff_ffff), + flags: z.int().min(0).max(0xffff_ffff), public_key_or_token: publicKeyIdentitySchema, hash_value_sha256: digestSchema.nullable(), - hash_value_length: z.number().int().min(0), + hash_value_length: z.int().min(0), token: managedMetadataTokenSchema, row_offset: offsetSchema, }); const managedResourceSchema = z.object({ name: z.string(), - flags: z.number().int().min(0).max(0xffff_ffff), + flags: z.int().min(0).max(0xffff_ffff), visibility: z.enum(["public", "private", "unknown"]), implementation_token: managedMetadataTokenSchema.nullable(), embedded: z.boolean(), - declared_offset: z.number().int().min(0).max(0xffff_ffff), - data_length: z.number().int().min(0).nullable(), + declared_offset: z.int().min(0).max(0xffff_ffff), + data_length: z.int().min(0).nullable(), data_sha256: digestSchema.nullable(), token: managedMetadataTokenSchema, row_offset: offsetSchema, @@ -92,7 +89,7 @@ const customAttributeSchema = z.object({ parent_token: managedMetadataTokenSchema, constructor_token: managedMetadataTokenSchema.nullable(), type_name: z.string().nullable(), - value_length: z.number().int().min(0), + value_length: z.int().min(0), value_sha256: digestSchema, decoded_fixed_string: z.string().nullable(), token: managedMetadataTokenSchema, @@ -100,7 +97,7 @@ const customAttributeSchema = z.object({ }); const managedSignatureSchema = z.object({ - raw_length: z.number().int().min(0), + raw_length: z.int().min(0), raw_sha256: digestSchema, // Evidence recorded before this field existed reads back as null. resolved_sha256: digestSchema @@ -112,8 +109,8 @@ const managedSignatureSchema = z.object({ kind: z.enum(["method", "field", "unknown"]), parse_status: z.enum(["decoded", "partial", "unsupported", "malformed"]), calling_convention: z.string().nullable(), - generic_parameter_count: z.number().int().min(0).nullable(), - parameter_count: z.number().int().min(0).nullable(), + generic_parameter_count: z.int().min(0).nullable(), + parameter_count: z.int().min(0).nullable(), return_type: z.string().nullable(), parameter_types: z.array(z.string()), field_type: z.string().nullable(), @@ -132,7 +129,7 @@ const managedTypeSchema = z.object({ .describe( "Framed nominal namespace/name/enclosing-name digest, independent of build-local rows. Null for historical Evidence or unresolved nesting; defining assemblies and CLR runtime identity are not established.", ), - flags: z.number().int().min(0).max(0xffff_ffff), + flags: z.int().min(0).max(0xffff_ffff), extends_token: managedMetadataTokenSchema.nullable(), enclosing_type_token: managedMetadataTokenSchema .nullable() @@ -141,14 +138,14 @@ const managedTypeSchema = z.object({ "Observed enclosing TypeDef from NestedClass; null when no enclosing entry was available, which alone does not establish top-level identity.", ), field_list: z.object({ - first_row: z.number().int().min(1).nullable(), - last_row: z.number().int().min(0).nullable(), - count: z.number().int().min(0), + first_row: z.int().min(1).nullable(), + last_row: z.int().min(0).nullable(), + count: z.int().min(0), }), method_list: z.object({ - first_row: z.number().int().min(1).nullable(), - last_row: z.number().int().min(0).nullable(), - count: z.number().int().min(0), + first_row: z.int().min(1).nullable(), + last_row: z.int().min(0).nullable(), + count: z.int().min(0), }), }); @@ -158,9 +155,9 @@ const managedExportedTypeSchema = z.object({ row_offset: offsetSchema, namespace: z.string(), name: z.string(), - flags: z.number().int().min(0).max(0xffff_ffff), + flags: z.int().min(0).max(0xffff_ffff), forwarder: z.boolean(), - type_def_id: z.number().int().min(0).max(0xffff_ffff), + type_def_id: z.int().min(0).max(0xffff_ffff), implementation_token: managedMetadataTokenSchema.nullable(), }); @@ -170,22 +167,22 @@ const managedFieldSchema = z.object({ declaring_type_token: managedMetadataTokenSchema.nullable(), declaring_type: z.string().nullable(), name: z.string(), - flags: z.number().int().min(0).max(0xffff), + flags: z.int().min(0).max(0xffff), signature: managedSignatureSchema, }); const managedExceptionRegionSchema = z.object({ - flags: z.number().int().min(0).max(0xffff_ffff), - try_offset: z.number().int().min(0), - try_length: z.number().int().min(0), - handler_offset: z.number().int().min(0), - handler_length: z.number().int().min(0), + flags: z.int().min(0).max(0xffff_ffff), + try_offset: z.int().min(0), + try_length: z.int().min(0), + handler_offset: z.int().min(0), + handler_length: z.int().min(0), class_token: managedMetadataTokenSchema.nullable(), - filter_offset: z.number().int().min(0).nullable(), + filter_offset: z.int().min(0).nullable(), }); const managedInstructionAnchorSchema = z.object({ - il_offset: z.number().int().min(0), + il_offset: z.int().min(0), opcode: z.string().min(1), operand_kind: z.enum([ "none", @@ -207,12 +204,12 @@ const managedInstructionAnchorSchema = z.object({ const managedMethodBodySchema = z.object({ status: z.enum(["present", "partial", "absent", "malformed"]), header_format: z.enum(["tiny", "fat", "none", "unknown"]), - rva: z.number().int().min(0).max(0xffff_ffff), + rva: z.int().min(0).max(0xffff_ffff), file_offset: offsetSchema.nullable(), - max_stack: z.number().int().min(0).nullable(), + max_stack: z.int().min(0).nullable(), init_locals: z.boolean().nullable(), local_var_sig_token: managedMetadataTokenSchema.nullable(), - il_size: z.number().int().min(0), + il_size: z.int().min(0), il_sha256: digestSchema .nullable() .describe( @@ -223,10 +220,10 @@ const managedMethodBodySchema = z.object({ .describe( "Member-result-v1 SHA-256 of UTF-8 JSON [opcode, operand_kind, operand] tuples for a complete decode; retains build-local tokens, omits switch targets, and excludes headers, locals, and exception regions", ), - instruction_count: z.number().int().min(0), - decoded_instruction_count: z.number().int().min(0), - truncated_instructions: z.number().int().min(0), - opcode_counts: z.record(z.string(), z.number().int().min(1)), + instruction_count: z.int().min(0), + decoded_instruction_count: z.int().min(0), + truncated_instructions: z.int().min(0), + opcode_counts: z.record(z.string(), z.int().min(1)), anchors: z.array(managedInstructionAnchorSchema), exception_regions: z.array(managedExceptionRegionSchema), issue: z.string().nullable(), @@ -238,9 +235,9 @@ const managedMethodSchema = z.object({ declaring_type_token: managedMetadataTokenSchema.nullable(), declaring_type: z.string().nullable(), name: z.string(), - rva: z.number().int().min(0).max(0xffff_ffff), - impl_flags: z.number().int().min(0).max(0xffff), - flags: z.number().int().min(0).max(0xffff), + rva: z.int().min(0).max(0xffff_ffff), + impl_flags: z.int().min(0).max(0xffff), + flags: z.int().min(0).max(0xffff), signature: managedSignatureSchema, body: managedMethodBodySchema, }); @@ -280,7 +277,7 @@ const managedModuleReferenceSchema = z.object({ export const managedNativeImportSchema = z.object({ token: managedMetadataTokenSchema, row_offset: offsetSchema, - mapping_flags: z.number().int().min(0).max(0xffff), + mapping_flags: z.int().min(0).max(0xffff), mapping_flags_hex: z.string().regex(/^0x[0-9a-f]{4}$/u), member_token: managedMetadataTokenSchema.nullable(), member_kind: z.enum(["method", "field", "unknown"]), @@ -314,9 +311,9 @@ const managedNativeImplementationSchema = z.object({ token: managedMetadataTokenSchema, row_offset: offsetSchema, name: z.string(), - rva: z.number().int().min(0).max(0xffff_ffff), - flags: z.number().int().min(0).max(0xffff), - impl_flags: z.number().int().min(0).max(0xffff), + rva: z.int().min(0).max(0xffff_ffff), + flags: z.int().min(0).max(0xffff), + impl_flags: z.int().min(0).max(0xffff), code_type: z.enum(["il", "native", "optil", "runtime", "unknown"]), managed_kind: z.enum(["managed", "unmanaged", "unknown"]), pinvoke_declared: z.boolean(), @@ -387,31 +384,31 @@ const managedParseIssueSchema = z.object({ export const managedArtifactInspectionSchema = z.object({ artifact: managedArtifactReferenceSchema, pe: z.object({ - machine: z.number().int().min(0).max(0xffff), + machine: z.int().min(0).max(0xffff), machine_hex: z.string().regex(/^0x[0-9a-f]{4}$/u), architecture: z.enum(["x86", "x86_64", "arm", "arm64"]), optional_header: z.enum(["pe32", "pe32-plus"]), - section_count: z.number().int().min(1).max(0xffff), - characteristics: z.number().int().min(0).max(0xffff), + section_count: z.int().min(1).max(0xffff), + characteristics: z.int().min(0).max(0xffff), cli: z .object({ header_offset: offsetSchema, - header_size: z.number().int().min(72), + header_size: z.int().min(72), runtime_version: z.string(), - flags: z.number().int().min(0).max(0xffff_ffff), + flags: z.int().min(0).max(0xffff_ffff), flag_names: z.array(z.string()), entry_point: z.object({ kind: z.enum(["metadata-token", "native-rva", "none"]), value: z.string().nullable(), }), - metadata_rva: z.number().int().min(1).max(0xffff_ffff), - metadata_size: z.number().int().min(1).max(0xffff_ffff), - resources_rva: z.number().int().min(0).max(0xffff_ffff), - resources_size: z.number().int().min(0).max(0xffff_ffff), - strong_name_rva: z.number().int().min(0).max(0xffff_ffff), - strong_name_size: z.number().int().min(0).max(0xffff_ffff), - managed_native_header_rva: z.number().int().min(0).max(0xffff_ffff), - managed_native_header_size: z.number().int().min(0).max(0xffff_ffff), + metadata_rva: z.int().min(1).max(0xffff_ffff), + metadata_size: z.int().min(1).max(0xffff_ffff), + resources_rva: z.int().min(0).max(0xffff_ffff), + resources_size: z.int().min(0).max(0xffff_ffff), + strong_name_rva: z.int().min(0).max(0xffff_ffff), + strong_name_size: z.int().min(0).max(0xffff_ffff), + managed_native_header_rva: z.int().min(0).max(0xffff_ffff), + managed_native_header_size: z.int().min(0).max(0xffff_ffff), ready_to_run_signature: z.boolean(), }) .nullable(), @@ -455,10 +452,7 @@ export const managedArtifactInspectionSchema = z.object({ status: z.enum(["absent", "complete", "partial", "malformed"]), version: z.string().nullable(), stream_names: z.array(z.string()), - table_row_counts: z.record( - z.string(), - z.number().int().min(0).max(0xffff_ffff), - ), + table_row_counts: z.record(z.string(), z.int().min(0).max(0xffff_ffff)), }), module: moduleIdentitySchema.nullable(), assembly: assemblyIdentitySchema.nullable(), @@ -544,17 +538,17 @@ export const managedNativeBoundaryInspectionSchema = z.object({ strong_name_signed: z.boolean(), native_entry_point: z.boolean(), ready_to_run_signature: z.boolean(), - managed_native_header_rva: z.number().int().min(0).max(0xffff_ffff), - managed_native_header_size: z.number().int().min(0).max(0xffff_ffff), + managed_native_header_rva: z.int().min(0).max(0xffff_ffff), + managed_native_header_size: z.int().min(0).max(0xffff_ffff), }) .nullable(), module_refs: z.array(managedModuleReferenceSchema), pinvoke_imports: z.array(managedNativeImportSchema), native_implementations: z.array(managedNativeImplementationSchema), summary: z.object({ - module_ref_count: z.number().int().min(0), - pinvoke_import_count: z.number().int().min(0), - native_implementation_count: z.number().int().min(0), + module_ref_count: z.int().min(0), + pinvoke_import_count: z.int().min(0), + native_implementation_count: z.int().min(0), ready_to_run: z.boolean().nullable(), mixed_mode_or_native_header: z.boolean().nullable(), }), diff --git a/src/domain/managed/managedMemberComparison.ts b/src/domain/managed/managedMemberComparison.ts index c9545dfd3f..9ffd5f2601 100644 --- a/src/domain/managed/managedMemberComparison.ts +++ b/src/domain/managed/managedMemberComparison.ts @@ -164,8 +164,8 @@ export const managedMemberComparisonResultSchema = z.strictObject({ mvid: cliMetadataGuidSchema.nullable(), module_name: z.string().nullable(), metadata_status: z.enum(["absent", "complete", "partial", "malformed"]), - methods_total: z.number().int().min(0), - fields_total: z.number().int().min(0), + methods_total: z.int().min(0), + fields_total: z.int().min(0), }), right: z.strictObject({ evidence_id: evidenceIdSchema, @@ -173,23 +173,23 @@ export const managedMemberComparisonResultSchema = z.strictObject({ mvid: cliMetadataGuidSchema.nullable(), module_name: z.string().nullable(), metadata_status: z.enum(["absent", "complete", "partial", "malformed"]), - methods_total: z.number().int().min(0), - fields_total: z.number().int().min(0), + methods_total: z.int().min(0), + fields_total: z.int().min(0), }), summary: z.strictObject({ - unchanged: z.number().int().min(0), - changed: z.number().int().min(0), - added: z.number().int().min(0), - removed: z.number().int().min(0), - unknown: z.number().int().min(0), + unchanged: z.int().min(0), + changed: z.int().min(0), + added: z.int().min(0), + removed: z.int().min(0), + unknown: z.int().min(0), }), matching: z.strictObject({ - exact_il_signature: z.number().int().min(0), - exact_signature: z.number().int().min(0), - structural_method_shape: z.number().int().min(0), - field_signature: z.number().int().min(0), - ambiguous: z.number().int().min(0), - unmatched: z.number().int().min(0), + exact_il_signature: z.int().min(0), + exact_signature: z.int().min(0), + structural_method_shape: z.int().min(0), + field_signature: z.int().min(0), + ambiguous: z.int().min(0), + unmatched: z.int().min(0), }), methods: z.array(methodComparisonItemSchema), fields: z.array(fieldComparisonItemSchema), diff --git a/src/domain/managed/managedNativeVerificationSchemas.ts b/src/domain/managed/managedNativeVerificationSchemas.ts index 8e88e113c4..134ed7f47d 100644 --- a/src/domain/managed/managedNativeVerificationSchemas.ts +++ b/src/domain/managed/managedNativeVerificationSchemas.ts @@ -151,26 +151,26 @@ export const managedNativeVerificationResultSchema = z artifact_path: z.string().min(1), mvid: cliMetadataGuidSchema.nullable(), metadata_status: z.enum(["absent", "complete", "partial", "malformed"]), - pinvoke_imports_total: z.number().int().min(0), - native_implementations_total: z.number().int().min(0), + pinvoke_imports_total: z.int().min(0), + native_implementations_total: z.int().min(0), coverage_state: z.enum(["complete", "partial", "unavailable"]), }), native_observations: z.strictObject({ - total: z.number().int().min(1), - accepted: z.number().int().min(0), - unsupported: z.number().int().min(0), - symbols: z.number().int().min(0), + total: z.int().min(1), + accepted: z.int().min(0), + unsupported: z.int().min(0), + symbols: z.int().min(0), }), summary: z.strictObject({ - verified: z.number().int().min(0), - inferred: z.number().int().min(0), - unresolved: z.number().int().min(0), - contradicted: z.number().int().min(0), - native_body_unresolved: z.number().int().min(0), + verified: z.int().min(0), + inferred: z.int().min(0), + unresolved: z.int().min(0), + contradicted: z.int().min(0), + native_body_unresolved: z.int().min(0), }), pinvoke_imports: z.array(pinvokeVerificationSchema), native_implementations: z.strictObject({ - unresolved: z.number().int().min(0), + unresolved: z.int().min(0), reason: textSchema, }), coverage: verificationCoverageSchema, diff --git a/src/domain/managed/managedReconstruction.ts b/src/domain/managed/managedReconstruction.ts index fd8a289c76..5a3a0a3070 100644 --- a/src/domain/managed/managedReconstruction.ts +++ b/src/domain/managed/managedReconstruction.ts @@ -34,8 +34,8 @@ const managedReconstructionMethodInputSchema = z.strictObject({ text: textSchema, text_sha256: digestSchema.optional(), source_path: textSchema.nullable().optional(), - start_line: z.number().int().min(1).nullable().optional(), - end_line: z.number().int().min(1).nullable().optional(), + start_line: z.int().min(1).nullable().optional(), + end_line: z.int().min(1).nullable().optional(), }), }); @@ -57,17 +57,17 @@ const importedMethodSchema = z.strictObject({ signature_sha256: digestSchema, normalized_il_sha256: digestSchema.nullable(), body_sha256: digestSchema.nullable(), - il_size: z.number().int().min(0), + il_size: z.int().min(0), reconstruction: z.strictObject({ kind: z.enum(["decompiled-csharp", "decompiled-il", "semantic-pseudocode"]), language: z.enum(["csharp", "il", "pseudocode"]), text: textSchema, text_sha256: digestSchema, - text_length: z.number().int().min(1), - line_count: z.number().int().min(1), + text_length: z.int().min(1), + line_count: z.int().min(1), source_path: textSchema.nullable(), - start_line: z.number().int().min(1).nullable(), - end_line: z.number().int().min(1).nullable(), + start_line: z.int().min(1).nullable(), + end_line: z.int().min(1).nullable(), }), validation: z.strictObject({ matched_static_member: z.literal(true), @@ -85,7 +85,7 @@ export const managedReconstructionImportResultSchema = z.strictObject({ evidence_id: evidenceIdSchema, artifact_sha256: digestSchema, artifact_path: z.string().min(1), - byte_length: z.number().int().min(0), + byte_length: z.int().min(0), module_name: z.string().nullable(), mvid: cliMetadataGuidSchema.nullable(), metadata_status: z.enum(["absent", "complete", "partial", "malformed"]), @@ -94,11 +94,11 @@ export const managedReconstructionImportResultSchema = z.strictObject({ options_sha256: digestSchema, }), summary: z.strictObject({ - imported_methods: z.number().int().min(1), - decompiled_csharp_methods: z.number().int().min(0), - decompiled_il_methods: z.number().int().min(0), - pseudocode_methods: z.number().int().min(0), - total_text_bytes: z.number().int().min(1), + imported_methods: z.int().min(1), + decompiled_csharp_methods: z.int().min(0), + decompiled_il_methods: z.int().min(0), + pseudocode_methods: z.int().min(0), + total_text_bytes: z.int().min(1), }), methods: z.array(importedMethodSchema).min(1), notes: z.array(textSchema), diff --git a/src/domain/native/binaryLayout.ts b/src/domain/native/binaryLayout.ts index 84b56be5f9..a978b08f64 100644 --- a/src/domain/native/binaryLayout.ts +++ b/src/domain/native/binaryLayout.ts @@ -6,8 +6,8 @@ import { absoluteLocalPathStringSchema } from "../localPath.js"; import { canonicalBase64Schema } from "../stringPatterns.js"; const unsignedHex = z.string().regex(/^0x(?:0|[1-9a-f][0-9a-f]{0,15})$/); -const index = z.number().int().nonnegative(); -const scalar = z.union([z.string(), z.number().int()]); +const index = z.int().nonnegative(); +const scalar = z.union([z.string(), z.int()]); const range = z.strictObject({ offset: unsignedHex, bytes: unsignedHex }); const canonicalBase64 = canonicalBase64Schema; const name = z.strictObject({ diff --git a/src/domain/native/bytePattern.ts b/src/domain/native/bytePattern.ts index d0ae144585..3052a509a4 100644 --- a/src/domain/native/bytePattern.ts +++ b/src/domain/native/bytePattern.ts @@ -115,7 +115,7 @@ const coverageBlock = z segment: z.string(), start: z.string(), end: z.string(), - bytes: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER), + bytes: z.int().nonnegative().max(Number.MAX_SAFE_INTEGER), }) .superRefine((value, context) => { const start = addressCoordinate(value.start); @@ -143,7 +143,6 @@ export const byteSearchResultSchema = z address: z.string(), segment: z.string(), file_offset: z - .number() .int() .nonnegative() .max(Number.MAX_SAFE_INTEGER) @@ -156,7 +155,7 @@ export const byteSearchResultSchema = z .max(1000), searched: z.strictObject({ blocks: z.array(coverageBlock), - bytes: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER), + bytes: z.int().nonnegative().max(Number.MAX_SAFE_INTEGER), skipped_uninitialized: z.array(coverageBlock), skipped_not_loaded: z.array(coverageBlock), }), diff --git a/src/domain/native/nativeApiBoundary.ts b/src/domain/native/nativeApiBoundary.ts index fe7036ecc8..0b11ba3be5 100644 --- a/src/domain/native/nativeApiBoundary.ts +++ b/src/domain/native/nativeApiBoundary.ts @@ -17,10 +17,10 @@ const inferenceEvidenceSchema = z .strict(); const inferredBoundaryTypeFacts = { - ordinal: z.number().int().min(0).nullable(), + ordinal: z.int().min(0).nullable(), name: z.string().min(1).nullable(), data_type: z.string().min(1), - size_bytes: z.number().int().min(0).nullable(), + size_bytes: z.int().min(0).nullable(), storage: z.string().min(1).nullable(), confidence: inferenceConfidenceSchema, evidence: z.array(inferenceEvidenceSchema).min(1), @@ -43,7 +43,7 @@ const inferredReturnTypeSchema = z.strictObject({ const inferredParameterTypeSchema = z.strictObject({ ...inferredBoundaryTypeFacts, role: z.literal("parameter"), - ordinal: z.number().int().min(0), + ordinal: z.int().min(0), }); const jumpTableDataSourceSchema = z @@ -55,8 +55,8 @@ const jumpTableDataSourceSchema = z "ghidra-aarch64-byte-table", "ghidra-aarch64-halfword-table", ]), - entry_size_bytes: z.number().int().min(1).nullable(), - entry_count: z.number().int().min(0).nullable(), + entry_size_bytes: z.int().min(1).nullable(), + entry_count: z.int().min(0).nullable(), confidence: inferenceConfidenceSchema, evidence: z.array(inferenceEvidenceSchema).min(1), }) @@ -64,7 +64,7 @@ const jumpTableDataSourceSchema = z const jumpTableMappingSchema = z .object({ - case_value: z.number().int().nullable(), + case_value: z.int().nullable(), target_address: z.string().min(1), confidence: inferenceConfidenceSchema, evidence: z.array(inferenceEvidenceSchema).min(1), diff --git a/src/domain/native/nativeCallObservation.ts b/src/domain/native/nativeCallObservation.ts index f9ca1d0597..55b95017dc 100644 --- a/src/domain/native/nativeCallObservation.ts +++ b/src/domain/native/nativeCallObservation.ts @@ -77,7 +77,6 @@ export const nativeCallObservationInputSchema = z.strictObject({ .describe("Overrides on top of the environment REA runs with."), working_directory: localPathStringSchema.optional(), duration_ms: z - .number() .int() .min(100) .max(600_000) @@ -86,7 +85,6 @@ export const nativeCallObservationInputSchema = z.strictObject({ "Observation window; the process is killed if it is still running.", ), max_events: z - .number() .int() .min(1) .max(100_000) @@ -95,7 +93,6 @@ export const nativeCallObservationInputSchema = z.strictObject({ "Stop observing and kill the process after this many recorded entries.", ), argument_registers: z - .number() .int() .min(0) .max(8) @@ -104,7 +101,6 @@ export const nativeCallObservationInputSchema = z.strictObject({ "Integer argument registers to record per entry (arm64 has 8, x86_64 has 6).", ), backtrace_frames: z - .number() .int() .min(0) .max(64) @@ -127,10 +123,10 @@ export const nativeCodeLocationSchema = z.strictObject({ /** One observed entry into a requested function or method. */ export const nativeCallEventSchema = z.strictObject({ - sequence: z.number().int().nonnegative(), + sequence: z.int().nonnegative(), elapsed_ms: z.number().nonnegative(), - thread_id: z.number().int().nonnegative(), - breakpoint_index: z.number().int().nonnegative(), + thread_id: z.int().nonnegative(), + breakpoint_index: z.int().nonnegative(), ...nativeCodeLocationSchema.shape, /** Dynamic class of an instance-method receiver, read without running code. */ receiver_class: z.string().nullable(), @@ -144,7 +140,7 @@ export const nativeCallEventSchema = z.strictObject({ export const nativeCapturedOutputSchema = z.strictObject({ text: z.string(), /** Bytes observed by the bridge, not a total when complete is false. */ - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), truncated: z.boolean(), complete: z.boolean(), }); @@ -178,9 +174,9 @@ export const nativeCallObservationResultSchema = z.strictObject({ version: z.string().nullable(), }), process: z.strictObject({ - pid: z.number().int().positive(), + pid: z.int().positive(), outcome: nativeCallProcessOutcomeSchema, - exit_status: z.number().int().nullable(), + exit_status: z.int().nullable(), exit_description: z.string().nullable(), /** REA confirmed the process is gone when observation ended. */ terminated: z.boolean(), @@ -192,7 +188,7 @@ export const nativeCallObservationResultSchema = z.strictObject({ }), breakpoints: z.array( z.strictObject({ - index: z.number().int().nonnegative(), + index: z.int().nonnegative(), request: z.discriminatedUnion("kind", [ z.strictObject({ ...functionBreakpoint, @@ -204,7 +200,7 @@ export const nativeCallObservationResultSchema = z.strictObject({ method_type: z.enum(["instance", "class", "any"]), }), ]), - location_count: z.number().int().nonnegative(), + location_count: z.int().nonnegative(), locations: z.array(nativeCodeLocationSchema), }), ), @@ -216,7 +212,7 @@ export const nativeCallObservationResultSchema = z.strictObject({ /** Aggregate breakpoint-location metadata exhausted its retained-byte budget. */ breakpoint_locations_truncated: z.boolean().optional(), /** Requests that matched no code in any image loaded while observing. */ - unresolved_breakpoints: z.array(z.number().int().nonnegative()), + unresolved_breakpoints: z.array(z.int().nonnegative()), }), limitations: z.array(z.string()), }); diff --git a/src/domain/native/nativeCallPartialObservation.ts b/src/domain/native/nativeCallPartialObservation.ts index ac3575cf9c..28a3e49fba 100644 --- a/src/domain/native/nativeCallPartialObservation.ts +++ b/src/domain/native/nativeCallPartialObservation.ts @@ -14,7 +14,7 @@ export const nativeCallPartialObservationSchema = z.strictObject({ launch_identity: completed.target.shape.launch_identity.optional(), }), process: completed.process.partial().extend({ - pid: z.number().int().positive().nullable(), + pid: z.int().positive().nullable(), stdout: nativeCapturedOutputSchema.nullable(), stderr: nativeCapturedOutputSchema.nullable(), other_stops: z.array(z.string()), diff --git a/src/domain/native/nativeDataType.ts b/src/domain/native/nativeDataType.ts index fad833dfa0..4556df5772 100644 --- a/src/domain/native/nativeDataType.ts +++ b/src/domain/native/nativeDataType.ts @@ -32,27 +32,27 @@ export const nativeDataTypeSchema = z.strictObject({ source: z.literal("analysis-database"), source_archive: z.string().nullable(), address: z.string().nullable(), - size_bytes: z.number().int().nonnegative().nullable(), - alignment_bytes: z.number().int().positive().nullable(), + size_bytes: z.int().nonnegative().nullable(), + alignment_bytes: z.int().positive().nullable(), packing_enabled: z.boolean().nullable(), referenced_type: z.string().nullable(), - array_count: z.number().int().nonnegative().nullable(), - array_stride_bytes: z.number().int().nonnegative().nullable(), + array_count: z.int().nonnegative().nullable(), + array_stride_bytes: z.int().nonnegative().nullable(), fields: z.array( z.strictObject({ - ordinal: z.number().int().nonnegative(), + ordinal: z.int().nonnegative(), name: z.string().nullable(), - offset_bytes: z.number().int().nonnegative(), - size_bytes: z.number().int().nonnegative().nullable(), + offset_bytes: z.int().nonnegative(), + size_bytes: z.int().nonnegative().nullable(), type_id: z.string(), - bit_size: z.number().int().nonnegative().nullable(), - bit_offset: z.number().int().nonnegative().nullable(), + bit_size: z.int().nonnegative().nullable(), + bit_offset: z.int().nonnegative().nullable(), status: z.enum(["observed", "unsupported"]), flexible_tail: z.literal("unknown"), }), ), members: z.array(z.strictObject({ name: z.string(), value: z.string() })), - total_fields: z.number().int().nonnegative(), + total_fields: z.int().nonnegative(), truncated: z.boolean(), limitations: z.array(z.string()), metadata_recovery: nativeMetadataRecoverySchema.optional(), diff --git a/src/domain/native/nativeInspection.ts b/src/domain/native/nativeInspection.ts index 434a75a1fa..889c3436f6 100644 --- a/src/domain/native/nativeInspection.ts +++ b/src/domain/native/nativeInspection.ts @@ -6,7 +6,7 @@ const hexAddress = z.string().regex(/^0x[a-fA-F0-9]+$/u); const coverage = (item: Schema) => z.object({ items: z.array(item), - total: z.number().int().min(0).nullable(), + total: z.int().min(0).nullable(), exhaustive: z.boolean(), limitations: z.array(z.string()), }); @@ -18,11 +18,11 @@ const nativeCommandInvocationSchema = z.object({ version_reason: z.string().nullable(), executable_sha256: z.string().regex(/^[a-f0-9]{64}$/u), exit: z.object({ - code: z.number().int().nullable(), + code: z.int().nullable(), signal: z.string().nullable(), }), - stdout_bytes: z.number().int().min(0), - stderr_bytes: z.number().int().min(0), + stdout_bytes: z.int().min(0), + stderr_bytes: z.int().min(0), }); const architectureSchema = z.object({ @@ -30,13 +30,12 @@ const architectureSchema = z.object({ cpu_type: z.string().nullable(), cpu_subtype: z.string().nullable(), file_offset: z - .number() .int() .min(0) .nullable() .describe("Offset from the start of the input Mach-O container."), - size: z.number().int().min(0).nullable(), - alignment: z.number().int().min(0).nullable(), + size: z.int().min(0).nullable(), + alignment: z.int().min(0).nullable(), }); const permissionSchema = z.object({ read: z.boolean().nullable(), @@ -48,27 +47,25 @@ const sectionSchema = z.object({ segment: z.string(), name: z.string(), address: hexAddress.nullable(), - size: z.number().int().min(0).nullable(), + size: z.int().min(0).nullable(), file_offset: z - .number() .int() .min(0) .nullable() .describe("Offset from the start of the selected Mach-O slice."), - alignment: z.number().int().min(0).nullable(), + alignment: z.int().min(0).nullable(), flags: z.array(z.string()), }); const segmentSchema = z.object({ name: z.string(), vm_address: hexAddress.nullable(), - vm_size: z.number().int().min(0).nullable(), + vm_size: z.int().min(0).nullable(), file_offset: z - .number() .int() .min(0) .nullable() .describe("Offset from the start of the selected Mach-O slice."), - file_size: z.number().int().min(0).nullable(), + file_size: z.int().min(0).nullable(), maximum_permissions: permissionSchema, initial_permissions: permissionSchema, sections: coverage(sectionSchema), @@ -87,7 +84,7 @@ const dependencySchema = z.object({ compatibility_version: z.string().nullable(), }); const loadCommandSchema = z.object({ - index: z.number().int().min(0), + index: z.int().min(0), kind: z.string(), fields: z.record(z.string(), z.union([z.string(), z.number(), z.null()])), }); @@ -109,7 +106,6 @@ export const inspectMachoSchema = z.object({ "Exact architecture name selected from lipo output; null when selection is unknown.", ), container_file_offset: z - .number() .int() .min(0) .nullable() @@ -125,7 +121,6 @@ export const inspectMachoSchema = z.object({ entrypoints: coverage( z.object({ file_offset: z - .number() .int() .min(0) .describe( diff --git a/src/domain/native/nativeInstruction.ts b/src/domain/native/nativeInstruction.ts index 652aa014b7..ac2ccfed8b 100644 --- a/src/domain/native/nativeInstruction.ts +++ b/src/domain/native/nativeInstruction.ts @@ -12,7 +12,7 @@ const reference = z.strictObject({ jump: z.boolean(), indirect: z.boolean(), computed: z.boolean(), - operand_index: z.number().int(), + operand_index: z.int(), source_address: z.string().min(1).nullable().optional(), data: z.boolean().nullable().optional(), read: z.boolean().nullable().optional(), @@ -71,20 +71,20 @@ export const nativeInstructionSchema = z.strictObject({ "Observed per-address decoder context. Null means no value was available; omission means the provider or older capture does not expose this facet. The separate mode field retains the program language variant.", ), bytes: z.string().nullable(), - length: z.number().int().positive().nullable(), + length: z.int().positive().nullable(), mnemonic: z.string().nullable(), raw_disassembly: z.string().nullable(), operands: z.array( z.strictObject({ - index: z.number().int().nonnegative(), + index: z.int().nonnegative(), raw: z.string(), - provider_type: z.number().int(), + provider_type: z.int(), components: z.array( z.strictObject({ kind: z.enum(["register", "immediate", "address", "unknown"]), text: z.string(), value: z.string().nullable(), - bit_width: z.number().int().nonnegative().nullable(), + bit_width: z.int().nonnegative().nullable(), }), ), memory_addressing: z.literal("unavailable"), diff --git a/src/domain/native/nativeInvestigationGraph.ts b/src/domain/native/nativeInvestigationGraph.ts index 89a00eeb5e..9c483344c8 100644 --- a/src/domain/native/nativeInvestigationGraph.ts +++ b/src/domain/native/nativeInvestigationGraph.ts @@ -102,8 +102,8 @@ export const nativeInvestigationCoverageSchema = z.strictObject({ facet: z.string().min(1), status: z.enum(["complete", "partial", "unsupported", "not_requested"]), reason: z.string().nullable(), - examined: z.number().int().nonnegative(), - omitted: z.number().int().nonnegative(), + examined: z.int().nonnegative(), + omitted: z.int().nonnegative(), }); export const nativeInvestigationProviderSchema = z.strictObject({ @@ -131,9 +131,9 @@ export type NativeInvestigationGraph = z.infer< /** Caller-controlled hard limits for a bounded relationship trace. */ export const nativeInvestigationTraceLimitsSchema = z.strictObject({ - max_depth: z.number().int().min(0).max(32).default(8), - max_nodes: z.number().int().min(1).max(2000).default(250), - max_edges: z.number().int().min(1).max(5000).default(500), + max_depth: z.int().min(0).max(32).default(8), + max_nodes: z.int().min(1).max(2000).default(250), + max_edges: z.int().min(1).max(5000).default(500), }); export type NativeInvestigationTraceLimits = z.infer< @@ -152,7 +152,7 @@ export const nativeInvestigationTraceSchema = z.strictObject({ nodes: z.array(nativeInvestigationNodeSchema), edges: z.array(nativeInvestigationEdgeSchema), unresolved: z.array(nativeInvestigationEdgeSchema), - reached_depth: z.number().int().nonnegative(), + reached_depth: z.int().nonnegative(), truncated: z.boolean(), reason: z.string().nullable(), coverage: z.array(nativeInvestigationCoverageSchema), diff --git a/src/domain/native/nativeLoadImage.ts b/src/domain/native/nativeLoadImage.ts index 4927702a3c..5eb22f2895 100644 --- a/src/domain/native/nativeLoadImage.ts +++ b/src/domain/native/nativeLoadImage.ts @@ -3,7 +3,7 @@ import { nativeMetadataRecoverySummarySchema } from "./nativeMetadataRecovery.js import { jsonValueSchema } from "../jsonValue.js"; import { binaryArchitectureSchema } from "../rawBinary.js"; -const integer = z.number().int().min(0).max(Number.MAX_SAFE_INTEGER); +const integer = z.int().min(0).max(Number.MAX_SAFE_INTEGER); const digest = z.string().regex(/^[a-f0-9]{64}$/u); const hexBytes = z.string().regex(/^(?:[a-f0-9]{2})*$/u); const address = z.string().min(1); @@ -45,13 +45,9 @@ export const nativeLoadImageObservationSchema = z.strictObject({ segment: integer.max(0xffff).nullable(), offset: integer.max(0xffff).nullable(), status: z.string().min(1), - type: z.number().int(), + type: z.int(), values: z.array( - z - .number() - .int() - .min(Number.MIN_SAFE_INTEGER) - .max(Number.MAX_SAFE_INTEGER), + z.int().min(Number.MIN_SAFE_INTEGER).max(Number.MAX_SAFE_INTEGER), ), original_bytes_hex: hexBytes.nullable(), memory_bytes_hex: hexBytes.nullable(), diff --git a/src/domain/native/nativeMetadataRecovery.ts b/src/domain/native/nativeMetadataRecovery.ts index 6582303a4a..8de5f6d9db 100644 --- a/src/domain/native/nativeMetadataRecovery.ts +++ b/src/domain/native/nativeMetadataRecovery.ts @@ -10,17 +10,17 @@ export const nativeMetadataRecoverySchema = z.strictObject({ source: z.enum(["analysis-database", "read-only-derived-overlay"]).optional(), status: z.enum(["complete", "partial"]), header_address: address, - format_major: z.number().int().nonnegative(), - format_minor: z.number().int().nonnegative(), + format_major: z.int().nonnegative(), + format_minor: z.int().nonnegative(), method_table_address: address, name_origin: z.enum(["generated", "inferred"]), original_name: z.null(), - base_size_bytes: z.number().int().nonnegative(), + base_size_bytes: z.int().nonnegative(), related_type: relatedType.nullable(), interfaces: z.array(relatedType), virtual_slots: z.array( z.strictObject({ - slot: z.number().int().nonnegative(), + slot: z.int().nonnegative(), slot_address: address, target_address: address.nullable(), procedure_name: z.string().nullable(), @@ -30,15 +30,15 @@ export const nativeMetadataRecoverySchema = z.strictObject({ derived_memory: z .strictObject({ address, - size_bytes: z.number().int().nonnegative(), + size_bytes: z.int().nonnegative(), sha256: z.string().regex(/^[a-f0-9]{64}$/u), file_offset: z.null(), }) .nullable(), truncated: z.boolean().optional(), - virtual_slots_omitted: z.number().int().nonnegative().optional(), - interfaces_omitted: z.number().int().nonnegative().optional(), - output_budget_bytes: z.number().int().nonnegative().optional(), + virtual_slots_omitted: z.int().nonnegative().optional(), + interfaces_omitted: z.int().nonnegative().optional(), + output_budget_bytes: z.int().nonnegative().optional(), diagnostics: z.array(z.string()), limitations: z.array(z.string()), }); @@ -55,21 +55,21 @@ export const nativeMetadataRecoverySummarySchema = z.strictObject({ analysis_artifact_sha256: z.string().regex(/^[a-f0-9]{64}$/u), header_address: address.nullable(), discovery: z.enum(["symbol", "signature-heuristic"]).nullable(), - format_major: z.number().int().nonnegative().nullable(), - format_minor: z.number().int().nonnegative().nullable(), - method_tables: z.number().int().nonnegative(), + format_major: z.int().nonnegative().nullable(), + format_minor: z.int().nonnegative().nullable(), + method_tables: z.int().nonnegative(), types: z.array(relatedType), frozen_strings: z .array(z.strictObject({ address, value: z.string() })) .optional(), truncated: z.boolean().optional(), - types_omitted: z.number().int().nonnegative().optional(), - frozen_strings_omitted: z.number().int().nonnegative().optional(), - output_budget_bytes: z.number().int().nonnegative().optional(), + types_omitted: z.int().nonnegative().optional(), + frozen_strings_omitted: z.int().nonnegative().optional(), + output_budget_bytes: z.int().nonnegative().optional(), derived_overlay: z .strictObject({ address, - size_bytes: z.number().int().nonnegative(), + size_bytes: z.int().nonnegative(), sha256: z.string().regex(/^[a-f0-9]{64}$/u), }) .nullable() @@ -77,43 +77,27 @@ export const nativeMetadataRecoverySummarySchema = z.strictObject({ derived_memory: nativeMetadataRecoverySchema.shape.derived_memory, coverage: z .strictObject({ - frozen_object_candidates: z.number().int().nonnegative().optional(), - frozen_objects_annotated: z.number().int().nonnegative().optional(), - pointer_candidates_examined: z.number().int().nonnegative().optional(), - pointer_slots_examined: z.number().int().nonnegative().optional(), - scan_bytes_examined: z.number().int().nonnegative().optional(), - scan_bytes_omitted: z.number().int().nonnegative().optional(), - rtr_signature_scan_bytes_examined: z - .number() - .int() - .nonnegative() - .optional(), - rtr_signature_scan_bytes_omitted: z - .number() - .int() - .nonnegative() - .optional(), - method_table_validation_items_examined: z - .number() - .int() - .nonnegative() - .optional(), - work_units_examined: z.number().int().nonnegative().optional(), - method_tables_recovered: z.number().int().nonnegative().optional(), - frozen_string_candidates: z.number().int().nonnegative().optional(), - frozen_scan_bytes_examined: z.number().int().nonnegative().optional(), - frozen_scan_bytes_omitted: z.number().int().nonnegative().optional(), - frozen_string_data_bytes_examined: z - .number() - .int() - .nonnegative() - .optional(), - source_bytes_examined: z.number().int().nonnegative().optional(), - source_bytes_omitted: z.number().int().nonnegative().optional(), - source_byte_budget_bytes: z.number().int().nonnegative().optional(), - work_budget_units: z.number().int().nonnegative().optional(), - working_memory_budget_bytes: z.number().int().nonnegative().optional(), - working_memory_bytes_peak: z.number().int().nonnegative().optional(), + frozen_object_candidates: z.int().nonnegative().optional(), + frozen_objects_annotated: z.int().nonnegative().optional(), + pointer_candidates_examined: z.int().nonnegative().optional(), + pointer_slots_examined: z.int().nonnegative().optional(), + scan_bytes_examined: z.int().nonnegative().optional(), + scan_bytes_omitted: z.int().nonnegative().optional(), + rtr_signature_scan_bytes_examined: z.int().nonnegative().optional(), + rtr_signature_scan_bytes_omitted: z.int().nonnegative().optional(), + method_table_validation_items_examined: z.int().nonnegative().optional(), + work_units_examined: z.int().nonnegative().optional(), + method_tables_recovered: z.int().nonnegative().optional(), + frozen_string_candidates: z.int().nonnegative().optional(), + frozen_scan_bytes_examined: z.int().nonnegative().optional(), + frozen_scan_bytes_omitted: z.int().nonnegative().optional(), + frozen_string_data_bytes_examined: z.int().nonnegative().optional(), + source_bytes_examined: z.int().nonnegative().optional(), + source_bytes_omitted: z.int().nonnegative().optional(), + source_byte_budget_bytes: z.int().nonnegative().optional(), + work_budget_units: z.int().nonnegative().optional(), + working_memory_budget_bytes: z.int().nonnegative().optional(), + working_memory_bytes_peak: z.int().nonnegative().optional(), truncation_reason: z .enum([ "source-byte-budget", diff --git a/src/domain/native/nativeUiObservation.ts b/src/domain/native/nativeUiObservation.ts index 173b0eb844..c5f8ce2e73 100644 --- a/src/domain/native/nativeUiObservation.ts +++ b/src/domain/native/nativeUiObservation.ts @@ -11,12 +11,11 @@ import { decodeCanonicalBase64 } from "../webScreenshot.js"; import { readPngHeaderDimensions } from "../pngHeader.js"; const scope = { - pid: z.number().int().positive(), - window_id: z.number().int().positive(), + pid: z.int().positive(), + window_id: z.int().positive(), screenshot: z.boolean().default(true), accessibility: z.boolean().default(true), max_nodes: z - .number() .int() .positive() .safe() @@ -36,22 +35,21 @@ export const nativeUiScenarioInputSchema = z.strictObject({ z.discriminatedUnion("kind", [ z.strictObject({ kind: z.literal("click"), - path: z.array(z.number().int().nonnegative()).max(32), + path: z.array(z.int().nonnegative()).max(32), }), z.strictObject({ kind: z.literal("scroll"), - path: z.array(z.number().int().nonnegative()).max(32), + path: z.array(z.int().nonnegative()).max(32), direction: z.enum(["increment", "decrement"]), }), z.strictObject({ kind: z.literal("key-entry"), - path: z.array(z.number().int().nonnegative()).max(32), + path: z.array(z.int().nonnegative()).max(32), text: z.string(), }), z.strictObject({ kind: z.literal("wait"), milliseconds: z - .number() .int() .min(0) .max(NATIVE_UI_WAIT_STEP_MAX_MS) @@ -78,12 +76,10 @@ const nativeUiScreenshotSchema = z .regex(/^[a-f0-9]{64}$/u) .describe("SHA-256 digest of the decoded PNG bytes."), width: z - .number() .int() .positive() .describe("Must equal the width encoded in the PNG IHDR chunk."), height: z - .number() .int() .positive() .describe("Must equal the height encoded in the PNG IHDR chunk."), @@ -122,20 +118,20 @@ const nativeUiScreenshotSchema = z export const nativeUiSnapshotSchema = z.strictObject({ window: z.strictObject({ - pid: z.number().int().positive(), - window_id: z.number().int().positive(), + pid: z.int().positive(), + window_id: z.int().positive(), executable: z.string(), launch_time: z.number(), title: z.string(), }), nodes: z.array( z.strictObject({ - path: z.array(z.number().int().nonnegative()), + path: z.array(z.int().nonnegative()), role: z.string().nullable(), title: z.string().nullable(), value: z.string().nullable(), actions: z.array(z.string()), - children_count: z.number().int().nonnegative().nullable(), + children_count: z.int().nonnegative().nullable(), }), ), truncated: z.boolean(), @@ -147,7 +143,7 @@ export const nativeUiResultSchema = z.strictObject({ initial: nativeUiSnapshotSchema, steps: z.array( z.strictObject({ - index: z.number().int().nonnegative(), + index: z.int().nonnegative(), kind: z.string(), before: nativeUiSnapshotSchema, after: nativeUiSnapshotSchema.nullable(), diff --git a/src/domain/native/nativeValueFlow.ts b/src/domain/native/nativeValueFlow.ts index a4e2a0a4a5..9e65fa81d0 100644 --- a/src/domain/native/nativeValueFlow.ts +++ b/src/domain/native/nativeValueFlow.ts @@ -3,7 +3,7 @@ import { z } from "zod"; /** A decompiler p-code varnode location or literal value. */ export const nativeVarnodeSchema = z.strictObject({ kind: z.enum(["constant", "address", "register", "unique", "other"]), - size_bytes: z.number().int().nonnegative(), + size_bytes: z.int().nonnegative(), location: z.string().nullable(), constant_hex: z .string() @@ -15,7 +15,7 @@ export const nativeVarnodeSchema = z.strictObject({ export const nativePcodeOperationSchema = z.strictObject({ id: z.string().min(1), address: z.string().min(1), - sequence: z.number().int().nonnegative(), + sequence: z.int().nonnegative(), opcode: z.string().min(1), is_dead: z.boolean(), block_membership: z.enum(["member", "detached", "unavailable"]), @@ -27,7 +27,7 @@ export const nativePcodeOperationSchema = z.strictObject({ export const nativePcodeDefUseSchema = z.strictObject({ definition: z.string().min(1), use: z.string().min(1), - input_index: z.number().int().nonnegative(), + input_index: z.int().nonnegative(), }); /** Memory and branch operations as directly named by Ghidra p-code. */ @@ -41,8 +41,8 @@ export const nativePcodeEffectSchema = z.strictObject({ "direct_call", "indirect_call", ]), - operand_input: z.number().int().nonnegative().nullable(), - value_input: z.number().int().nonnegative().nullable(), + operand_input: z.int().nonnegative().nullable(), + value_input: z.int().nonnegative().nullable(), }); /** Bounded data-flow observations; STORE is not necessarily a persistent/global write. */ @@ -55,22 +55,22 @@ export const nativeValueFlowSchema = z.discriminatedUnion("available", [ effects: z.array(nativePcodeEffectSchema), parameters: z.array( z.strictObject({ - ordinal: z.number().int().nonnegative(), + ordinal: z.int().nonnegative(), name: z.string(), data_type: z.string(), }), ), parameter_uses: z.array( z.strictObject({ - ordinal: z.number().int().nonnegative(), + ordinal: z.int().nonnegative(), use: z.string(), - input_index: z.number().int().nonnegative(), + input_index: z.int().nonnegative(), }), ), truncated: z.boolean(), - omitted_operations_lower_bound: z.number().int().nonnegative(), - known_omitted_inputs: z.number().int().nonnegative(), - known_omitted_edges: z.number().int().nonnegative(), + omitted_operations_lower_bound: z.int().nonnegative(), + known_omitted_inputs: z.int().nonnegative(), + known_omitted_edges: z.int().nonnegative(), limitations: z.array(z.string().min(1)), }), z.strictObject({ diff --git a/src/domain/native/nativeValueTrace.ts b/src/domain/native/nativeValueTrace.ts index f22494e2d1..19b1cde8ae 100644 --- a/src/domain/native/nativeValueTrace.ts +++ b/src/domain/native/nativeValueTrace.ts @@ -4,13 +4,13 @@ import { nativePcodeOperationSchema } from "./nativeValueFlow.js"; /** Work and output budgets for a static procedure-seeded dependency graph. */ export const nativeValueTraceInputSchema = z.strictObject({ procedure: z.string().min(1), - max_depth: z.number().int().min(0).max(16).default(3), - max_functions: z.number().int().min(1).max(64).default(16), - max_call_sites: z.number().int().min(1).max(4096).default(256), - max_nodes: z.number().int().min(1).max(20_000).default(5_000), - max_edges: z.number().int().min(1).max(40_000).default(10_000), - offset: z.number().int().min(0).default(0), - limit: z.number().int().min(1).max(5_000).default(1_000), + max_depth: z.int().min(0).max(16).default(3), + max_functions: z.int().min(1).max(64).default(16), + max_call_sites: z.int().min(1).max(4096).default(256), + max_nodes: z.int().min(1).max(20_000).default(5_000), + max_edges: z.int().min(1).max(40_000).default(10_000), + offset: z.int().min(0).default(0), + limit: z.int().min(1).max(5_000).default(1_000), }); /** Def-use observations and call relationships retain separate authority. */ export const nativeValueTraceSchema = z.strictObject({ @@ -25,7 +25,7 @@ export const nativeValueTraceSchema = z.strictObject({ operation: nativePcodeOperationSchema.nullable(), parameter: z .strictObject({ - ordinal: z.number().int().nonnegative(), + ordinal: z.int().nonnegative(), name: z.string(), data_type: z.string(), }) @@ -36,7 +36,7 @@ export const nativeValueTraceSchema = z.strictObject({ z.strictObject({ source: z.string(), target: z.string(), - input_index: z.number().int().nonnegative().nullable(), + input_index: z.int().nonnegative().nullable(), kind: z.enum([ "def-use", "call", @@ -51,7 +51,7 @@ export const nativeValueTraceSchema = z.strictObject({ procedures: z.array( z.strictObject({ address: z.string(), - depth: z.number().int().nonnegative(), + depth: z.int().nonnegative(), evidence_id: z.string(), provider: z.string(), analysis_profile_digest: z.string().nullable(), @@ -64,10 +64,10 @@ export const nativeValueTraceSchema = z.strictObject({ reason: z.string(), }), ), - total_nodes: z.number().int().nonnegative(), - total_edges: z.number().int().nonnegative(), - decompilations: z.number().int().nonnegative(), - next_offset: z.number().int().nonnegative().nullable(), + total_nodes: z.int().nonnegative(), + total_edges: z.int().nonnegative(), + decompilations: z.int().nonnegative(), + next_offset: z.int().nonnegative().nullable(), truncated: z.boolean(), limitations: z.array(z.string()), }); diff --git a/src/domain/native/objcSwiftMetadata.ts b/src/domain/native/objcSwiftMetadata.ts index 61620c4fae..b619ae6ec0 100644 --- a/src/domain/native/objcSwiftMetadata.ts +++ b/src/domain/native/objcSwiftMetadata.ts @@ -36,7 +36,7 @@ export const objcPropertyAttributeSchema = z.strictObject({ export const objcMethodSchema = z.strictObject({ selector: z.string().min(1), method_type: objcMethodTypeSchema, - address: z.number().int().nullable(), + address: z.int().nullable(), is_required: z.boolean().nullable(), is_optional: z.boolean().nullable(), }); @@ -70,12 +70,12 @@ export const objcClassSchema = z.strictObject({ methods: z.array(objcMethodSchema).default([]), properties: z.array(objcPropertySchema).default([]), protocols: z.array(z.string()).default([]), - ivar_count: z.number().int().nonnegative().nullable(), - instance_size: z.number().int().nonnegative().nullable(), + ivar_count: z.int().nonnegative().nullable(), + instance_size: z.int().nonnegative().nullable(), location: z .object({ address: z.string().nullable(), - file_offset: z.number().int().nonnegative().nullable(), + file_offset: z.int().nonnegative().nullable(), }) .optional(), superclass_address: z.string().nullable().optional(), @@ -93,7 +93,7 @@ export const objcClassSchema = z.strictObject({ description: z.string(), location: z.object({ address: z.string().nullable(), - file_offset: z.number().int().nonnegative().nullable(), + file_offset: z.int().nonnegative().nullable(), }), artifact_path: z.string(), artifact_sha256: z.string(), @@ -106,7 +106,7 @@ type ObjcClass = z.infer; /** Exact location of a decoded native metadata value when the provider knows it. */ export const nativeMetadataLocationSchema = z.strictObject({ address: z.string().nullable(), - file_offset: z.number().int().nonnegative().nullable(), + file_offset: z.int().nonnegative().nullable(), }); export type NativeMetadataLocation = z.infer< typeof nativeMetadataLocationSchema @@ -149,9 +149,9 @@ export const objcIvarSchema = z.strictObject({ class_name: z.string().min(1), name: z.string().min(1), type_encoding: z.string().nullable(), - offset: z.number().int().nonnegative().nullable(), - size: z.number().int().nonnegative().nullable().default(null), - alignment: z.number().int().positive().nullable().default(null), + offset: z.int().nonnegative().nullable(), + size: z.int().nonnegative().nullable().default(null), + alignment: z.int().positive().nullable().default(null), location: nativeMetadataLocationSchema, decode: nativeMetadataDecodeSchema, evidence: z.array(nativeMetadataEvidenceSchema).min(1), @@ -234,7 +234,7 @@ export const swiftConformanceSchema = z.strictObject({ export const swiftDispatchSlotSchema = z.strictObject({ owner: z.string().min(1), table_kind: z.enum(["witness_table", "class_vtable"]), - slot_index: z.number().int().nonnegative(), + slot_index: z.int().nonnegative(), requirement: z.string().nullable(), implementation: z.string().nullable(), implementation_address: z.string().nullable(), @@ -249,7 +249,7 @@ export const swiftDispatchSlotSchema = z.strictObject({ export const relativePointerSchema = z.strictObject({ field: nativeMetadataLocationSchema, target: nativeMetadataLocationSchema, - displacement: z.number().int(), + displacement: z.int(), indirectable: z.boolean(), indirect: z.boolean().nullable(), encoding_tag: z.number().int().nonnegative().optional(), @@ -272,8 +272,8 @@ export const nativeMetadataCoverageSchema = z.strictObject({ facet: z.string().min(1), status: z.enum(["complete", "partial", "unsupported", "not_requested"]), reason: z.string().nullable(), - examined: z.number().int().nonnegative(), - decoded: z.number().int().nonnegative(), + examined: z.int().nonnegative(), + decoded: z.int().nonnegative(), }); export const objcClassImportIdentitySchema = machoImportBindingSchema.omit({ @@ -337,9 +337,9 @@ export const dbOperationSchema = z.enum([ export const dbSaveResultSchema = z.strictObject({ operation: dbOperationSchema, succeeded: z.boolean(), - preserved_names: z.number().int().nonnegative().default(0), - preserved_comments: z.number().int().nonnegative().default(0), - preserved_bookmarks: z.number().int().nonnegative().default(0), + preserved_names: z.int().nonnegative().default(0), + preserved_comments: z.int().nonnegative().default(0), + preserved_bookmarks: z.int().nonnegative().default(0), database_path: z.string().nullable(), error: z.string().nullable(), }); diff --git a/src/domain/native/recordedCrash.ts b/src/domain/native/recordedCrash.ts index 8a239433a8..5176625c38 100644 --- a/src/domain/native/recordedCrash.ts +++ b/src/domain/native/recordedCrash.ts @@ -7,8 +7,8 @@ import { canonicalBase64Schema } from "../stringPatterns.js"; import { recordedNoteCoverageIssues } from "./recordedCrashNoteCoverage.js"; const hex = z.string().regex(/^0x(?:0|[1-9a-f][0-9a-f]{0,15})$/); -const index = z.number().int().nonnegative(); -const signed32 = z.number().int().min(-2147483648).max(2147483647); +const index = z.int().nonnegative(); +const signed32 = z.int().min(-2147483648).max(2147483647); const base64 = canonicalBase64Schema; const range = z.strictObject({ offset: hex, bytes: hex }); const diagnostics = z.strictObject({ @@ -241,7 +241,7 @@ const recordedCrashObjectSchema = z.strictObject({ z.strictObject({ note_index: index, historical_pid: signed32, - recorded_current_signal: z.number().int().min(-32768).max(32767), + recorded_current_signal: z.int().min(-32768).max(32767), registers: z.array( z.strictObject({ name: z.string().min(1), diff --git a/src/domain/pcap/pcapAnalysis.ts b/src/domain/pcap/pcapAnalysis.ts index 21c64f3659..43c26feec4 100644 --- a/src/domain/pcap/pcapAnalysis.ts +++ b/src/domain/pcap/pcapAnalysis.ts @@ -48,19 +48,19 @@ const client = z.strictObject({ const endpoint = z.strictObject({ address: z.string().min(1), - port: z.number().int().positive().nullable(), - packet_count: z.number().int().positive(), + port: z.int().positive().nullable(), + packet_count: z.int().positive(), }); const dnsQuery = z.strictObject({ query: z.string().min(1), response_addresses: z.array(z.string().min(1)), - response_address_count: z.number().int().nonnegative(), + response_address_count: z.int().nonnegative(), }); const protocolCount = z.strictObject({ protocol: z.string().min(1), - packet_count: z.number().int().positive(), + packet_count: z.int().positive(), }); /** Portable pcap observations with explicit coverage limitations. */ @@ -72,36 +72,36 @@ export const pcapResultSchemas = { client, target: z.strictObject({ path: localPathStringSchema, - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), sha256: digestSchema, }), /** File format as capinfos reports it (pcap vs pcapng). */ file_type: z.string().min(1).nullable(), encapsulation: z.string().min(1).nullable(), - packet_count: z.number().int().nonnegative().nullable(), + packet_count: z.int().nonnegative().nullable(), capture_start: z.string().nullable(), capture_end: z.string().nullable(), capture_duration_seconds: z.number().nonnegative().nullable(), - snapshot_length: z.number().int().positive().nullable(), + snapshot_length: z.int().positive().nullable(), /** Distinct endpoints with packet counts, bounded. */ endpoints: z.array(endpoint), - endpoint_count: z.number().int().nonnegative(), + endpoint_count: z.int().nonnegative(), /** DNS queries with resolved addresses, bounded. */ dns_queries: z.array(dnsQuery), - dns_query_count: z.number().int().nonnegative(), + dns_query_count: z.int().nonnegative(), /** TLS Server Name Indication values observed in handshakes. */ tls_sni_values: z.array(z.string().min(1)), - tls_sni_count: z.number().int().nonnegative(), + tls_sni_count: z.int().nonnegative(), /** Protocol distribution (frame.protocols column counts). */ protocol_distribution: z.array(protocolCount), - protocol_count: z.number().int().nonnegative(), + protocol_count: z.int().nonnegative(), /** HTTP request URIs seen on plain-text ports, bounded. */ http_request_uris: z.array(z.string().min(1)), - http_request_uri_count: z.number().int().nonnegative(), - http_uri_redaction_count: z.number().int().nonnegative(), + http_request_uri_count: z.int().nonnegative(), + http_uri_redaction_count: z.int().nonnegative(), unattributed_dns_addresses: z.array(z.string().min(1)), - unattributed_dns_address_count: z.number().int().nonnegative(), - unattributed_dns_packet_count: z.number().int().nonnegative(), + unattributed_dns_address_count: z.int().nonnegative(), + unattributed_dns_packet_count: z.int().nonnegative(), coverage: z.enum(["complete", "partial"]), diagnostics: z .strictObject({ capinfos_stderr: z.string(), tshark_stderr: z.string() }) diff --git a/src/domain/process/processCapture.ts b/src/domain/process/processCapture.ts index 4c28f1407b..5005e2730f 100644 --- a/src/domain/process/processCapture.ts +++ b/src/domain/process/processCapture.ts @@ -267,8 +267,8 @@ export interface UnverifiedProcessCapture { const fileStateShape = { path: z.string(), - mode: z.number().int().nonnegative(), - size: z.number().int().nonnegative(), + mode: z.int().nonnegative(), + size: z.int().nonnegative(), }; /** An unrelated process left untouched because its ownership is unknown. */ @@ -396,30 +396,30 @@ const fileEffectSchema = z.discriminatedUnion("status", [ const processSettlementSchema = z.discriminatedUnion("state", [ z.object({ state: z.literal("quiesced"), - elapsed_ms: z.number().int().nonnegative(), + elapsed_ms: z.int().nonnegative(), cleanup_outcome: z.enum(["not_required", "failed"]), }), z.object({ state: z.enum(["alive_at_deadline", "unverifiable"]), - elapsed_ms: z.number().int().nonnegative(), + elapsed_ms: z.int().nonnegative(), cleanup_outcome: z.enum(["cleaned", "failed"]), }), ]); const unverifiedCleanupProcessesSchema = z.array( - z.strictObject({ pid: z.number().int().positive(), reason: z.string() }), + z.strictObject({ pid: z.int().positive(), reason: z.string() }), ); const processCaptureFinalizationSchema = z .strictObject({ - requested_ms: z.number().int().safe().positive(), - elapsed_ms: z.number().int().nonnegative().nullable(), - exit_code: z.number().int().nonnegative().nullable(), + requested_ms: z.int().safe().positive(), + elapsed_ms: z.int().nonnegative().nullable(), + exit_code: z.int().nonnegative().nullable(), signals: z .array( z.strictObject({ signal: z.enum(["SIGTERM", "SIGKILL"]), - sent_at_ms: z.number().int().nonnegative(), + sent_at_ms: z.int().nonnegative(), delivery: z.enum([ "signaled", "gone", @@ -478,20 +478,20 @@ const processCaptureShapeSchema = z.strictObject({ normalization: normalizationSchema, frames: z.array( z.object({ - sequence: z.number().int().nonnegative(), - at_ms: z.number().int().nonnegative(), + sequence: z.int().nonnegative(), + at_ms: z.int().nonnegative(), data: z.string(), raw_data: z.string().optional(), }), ), rendered_frames: z.array( z.object({ - sequence: z.number().int().nonnegative(), - at_ms: z.number().int().nonnegative(), - columns: z.number().int().positive(), - rows: z.number().int().positive(), - cursor_x: z.number().int().nonnegative(), - cursor_y: z.number().int().nonnegative(), + sequence: z.int().nonnegative(), + at_ms: z.int().nonnegative(), + columns: z.int().positive(), + rows: z.int().positive(), + cursor_x: z.int().nonnegative(), + cursor_y: z.int().nonnegative(), active_buffer: z.enum(["normal", "alternate"]), lines: z.array(z.string()), serialized_state: z.string(), @@ -499,46 +499,46 @@ const processCaptureShapeSchema = z.strictObject({ ), interaction_events: z.array( z.object({ - sequence: z.number().int().nonnegative(), - scheduled_at_ms: z.number().int().nonnegative(), - dispatched_at_ms: z.number().int().nonnegative(), + sequence: z.int().nonnegative(), + scheduled_at_ms: z.int().nonnegative(), + dispatched_at_ms: z.int().nonnegative(), type: z.enum(["input", "resize", "signal"]), data: z.string(), outcome: z.enum(["dispatched", "target_exited", "failed"]), }), ), exit: z.object({ - code: z.number().int().nullable(), - signal: z.number().int().nullable(), + code: z.int().nullable(), + signal: z.int().nullable(), reason: z.enum(["exited", "timeout", "idle_timeout"]), finalization: processCaptureFinalizationSchema.optional(), }), settlement: z.discriminatedUnion("state", [ z.object({ state: z.literal("quiesced"), - elapsed_ms: z.number().int().nonnegative(), + elapsed_ms: z.int().nonnegative(), cleanup_outcome: z.literal("not_required"), }), z.object({ state: z.enum(["alive_at_deadline", "unverifiable"]), - elapsed_ms: z.number().int().nonnegative(), + elapsed_ms: z.int().nonnegative(), cleanup_outcome: z.enum(["cleaned", "failed"]), }), ]), process_samples: z.array( z.object({ - at_ms: z.number().int().nonnegative(), - pid: z.number().int().positive(), - parent_pid: z.number().int().nonnegative(), + at_ms: z.int().nonnegative(), + pid: z.int().positive(), + parent_pid: z.int().nonnegative(), command: z.string(), - process_group_id: z.number().int().positive().nullable(), - session_id: z.number().int().nonnegative().nullable(), + process_group_id: z.int().positive().nullable(), + session_id: z.int().nonnegative().nullable(), }), ), filesystem_checkpoints: z.array( z.object({ name: z.enum(["before", "after_settlement"]), - at_ms: z.number().int().nonnegative(), + at_ms: z.int().nonnegative(), files: z.array(fileStateSchema), effects: z.array(fileEffectSchema), truncated: z.boolean(), @@ -546,9 +546,9 @@ const processCaptureShapeSchema = z.strictObject({ ), event_journal: z.array( z.object({ - capture_order: z.number().int().nonnegative(), + capture_order: z.int().nonnegative(), collection: z.enum(PROCESS_CAPTURE_EVENT_COLLECTIONS), - index: z.number().int().nonnegative(), + index: z.int().nonnegative(), }), ), files_before: z.array(fileStateSchema), @@ -594,7 +594,7 @@ const partialObservationFieldSchema = ( ]); const incompleteProcessCaptureObservationsSchema = z.strictObject({ - target_pid: partialObservationFieldSchema(z.number().int().positive()), + target_pid: partialObservationFieldSchema(z.int().positive()), frames: partialObservationFieldSchema(processCaptureShapeSchema.shape.frames), rendered_frames: partialObservationFieldSchema( processCaptureShapeSchema.shape.rendered_frames, @@ -604,8 +604,8 @@ const incompleteProcessCaptureObservationsSchema = z.strictObject({ ), exit: partialObservationFieldSchema( z.strictObject({ - code: z.number().int().nullable(), - signal: z.number().int().nullable(), + code: z.int().nullable(), + signal: z.int().nullable(), reason: z.enum(["exited", "timeout", "idle_timeout", "cancelled"]), finalization: processCaptureFinalizationSchema.optional(), }), @@ -616,7 +616,7 @@ const incompleteProcessCaptureObservationsSchema = z.strictObject({ settlement: partialObservationFieldSchema( z.strictObject({ state: z.enum(["quiesced", "alive_at_deadline", "unverifiable"]), - elapsed_ms: z.number().int().nonnegative(), + elapsed_ms: z.int().nonnegative(), }), ), process_samples: partialObservationFieldSchema( diff --git a/src/domain/process/processCaptureCoverage.ts b/src/domain/process/processCaptureCoverage.ts index cf61ed0992..b4c5a3b69d 100644 --- a/src/domain/process/processCaptureCoverage.ts +++ b/src/domain/process/processCaptureCoverage.ts @@ -3,12 +3,12 @@ import type { UnverifiedProcessCapture } from "./processCapture.js"; import type { ProcessObservationSource } from "./processObservation.js"; const byteRetentionSchema = z.strictObject({ - budget_bytes: z.number().int().nonnegative(), - observed_bytes: z.number().int().nonnegative(), - retained_bytes: z.number().int().nonnegative(), - observed_frames: z.number().int().nonnegative(), - retained_frames: z.number().int().nonnegative(), - unknown_size_frames: z.number().int().nonnegative().optional(), + budget_bytes: z.int().nonnegative(), + observed_bytes: z.int().nonnegative(), + retained_bytes: z.int().nonnegative(), + observed_frames: z.int().nonnegative(), + retained_frames: z.int().nonnegative(), + unknown_size_frames: z.int().nonnegative().optional(), }); const enumerationOmissionReasonSchema = z.enum([ @@ -19,8 +19,8 @@ const enumerationOmissionReasonSchema = z.enum([ /** Filesystem enumeration and whole-file digest coverage for one checkpoint. */ export const filesystemCoverageSchema = z.strictObject({ - files_limit: z.number().int().nonnegative(), - depth_limit: z.number().int().nonnegative(), + files_limit: z.int().nonnegative(), + depth_limit: z.int().nonnegative(), enumeration_truncated: z.boolean(), enumeration_reasons: z.array( z.enum([ @@ -36,13 +36,13 @@ export const filesystemCoverageSchema = z.strictObject({ system_code: z.string().nullable(), }), ), - hash_budget_bytes: z.number().int().nonnegative(), - hashed_bytes: z.number().int().nonnegative(), + hash_budget_bytes: z.int().nonnegative(), + hashed_bytes: z.int().nonnegative(), hash_omissions: z.array( z.strictObject({ path: z.string(), - size_bytes: z.number().int().nonnegative(), - remaining_budget_bytes: z.number().int().nonnegative(), + size_bytes: z.int().nonnegative(), + remaining_budget_bytes: z.int().nonnegative(), reason: z.enum([ "file_bytes_budget", "file_changed_or_short_read", @@ -64,9 +64,9 @@ export const processCaptureTruncationDetailsSchema = z.strictObject({ ), normalized_terminal: z .strictObject({ - budget_bytes: z.number().int().nonnegative(), - retained_bytes: z.number().int().nonnegative(), - omitted_frames: z.number().int().nonnegative(), + budget_bytes: z.int().nonnegative(), + retained_bytes: z.int().nonnegative(), + omitted_frames: z.int().nonnegative(), }) .optional() .describe( @@ -75,11 +75,11 @@ export const processCaptureTruncationDetailsSchema = z.strictObject({ filesystem_before: filesystemCoverageSchema, filesystem_after: filesystemCoverageSchema, process: z.strictObject({ - sample_limit: z.number().int().nonnegative(), + sample_limit: z.int().nonnegative(), sampling_partial: z.boolean(), - retained_samples: z.number().int().nonnegative(), + retained_samples: z.int().nonnegative(), sample_limit_reached: z.boolean(), - sampling_failures: z.number().int().nonnegative(), + sampling_failures: z.int().nonnegative(), first_sampling_failure: z.string().nullable(), coverage: z.literal("sampled"), }), diff --git a/src/domain/process/processComparison.ts b/src/domain/process/processComparison.ts index 71f3b9952d..0b3434a037 100644 --- a/src/domain/process/processComparison.ts +++ b/src/domain/process/processComparison.ts @@ -79,9 +79,9 @@ export const processCaptureComparisonSchema = z "filesystem", "process", ]), - index: z.number().int().nonnegative(), - left_at_ms: z.number().int().nonnegative().nullable(), - right_at_ms: z.number().int().nonnegative().nullable(), + index: z.int().nonnegative(), + left_at_ms: z.int().nonnegative().nullable(), + right_at_ms: z.int().nonnegative().nullable(), left: jsonValueSchema.nullable(), right: jsonValueSchema.nullable(), }), diff --git a/src/domain/process/processObservation.ts b/src/domain/process/processObservation.ts index f8ad261307..7359a00a16 100644 --- a/src/domain/process/processObservation.ts +++ b/src/domain/process/processObservation.ts @@ -36,8 +36,8 @@ export const processObservationLocationSchema = z.strictObject({ "process_samples", "filesystem_checkpoints", ]), - index: z.number().int().nonnegative(), - capture_order: z.number().int().nonnegative(), + index: z.int().nonnegative(), + capture_order: z.int().nonnegative(), }); export type ProcessObservationLocation = z.infer< typeof processObservationLocationSchema diff --git a/src/domain/process/processScenario.ts b/src/domain/process/processScenario.ts index ba1376524e..8efc23c575 100644 --- a/src/domain/process/processScenario.ts +++ b/src/domain/process/processScenario.ts @@ -2,7 +2,7 @@ import { createHash } from "node:crypto"; import canonicalize from "canonicalize"; import { z } from "zod"; -const positiveBudget = z.number().int().safe().positive(); +const positiveBudget = z.int().safe().positive(); /** Read the explicitly committed output budget without applying scenario defaults. */ export const processScenarioOutputBudgetProjectionSchema = z .object({ output_bytes: positiveBudget }) @@ -13,7 +13,7 @@ export const processScenarioOutputBudgetProjectionSchema = z * before row objects, serialization strings, and retained frame copies. */ export const PROCESS_TERMINAL_CELL_BUDGET = 1_000_000; -const timedEventBase = { at_ms: z.number().int().safe().nonnegative() }; +const timedEventBase = { at_ms: z.int().safe().nonnegative() }; const reservedRunIdEnvironmentName = "REA_PROCESS_RUN_ID"; const ENVIRONMENT_NAME_CHARACTER = "[^=\\x00]"; @@ -159,9 +159,9 @@ export const processScenarioSchema = z .default([]), terminal: z .strictObject({ - columns: z.number().int().min(1).max(65_535).default(80), - rows: z.number().int().min(1).max(65_535).default(24), - scrollback: z.number().int().safe().nonnegative().default(1_000), + columns: z.int().min(1).max(65_535).default(80), + rows: z.int().min(1).max(65_535).default(24), + scrollback: z.int().safe().nonnegative().default(1_000), }) .describe( "The visible terminal and scrollback together must use at most 1,000,000 xterm renderer cells: columns × (rows + scrollback). Resize events use the same scrollback and limit. This release has no runtime override.", @@ -179,8 +179,8 @@ export const processScenarioSchema = z z.strictObject({ ...timedEventBase, type: z.literal("resize"), - columns: z.number().int().min(1).max(65_535), - rows: z.number().int().min(1).max(65_535), + columns: z.int().min(1).max(65_535), + rows: z.int().min(1).max(65_535), }), z.strictObject({ ...timedEventBase, @@ -192,9 +192,8 @@ export const processScenarioSchema = z .default([]), timeout_ms: positiveBudget.default(30_000), idle_timeout_ms: positiveBudget.default(30_000), - settle_ms: z.number().int().safe().nonnegative().default(100), + settle_ms: z.int().safe().nonnegative().default(100), finalization_ms: z - .number() .int() .safe() .nonnegative() @@ -208,7 +207,7 @@ export const processScenarioSchema = z files: positiveBudget.default(10_000), file_bytes: positiveBudget.default(10_000_000), processes: positiveBudget.default(1_000), - filesystem_depth: z.number().int().safe().nonnegative().default(16), + filesystem_depth: z.int().safe().nonnegative().default(16), }) .strict() .default({ diff --git a/src/domain/process/processTraceSpecification.ts b/src/domain/process/processTraceSpecification.ts index dd40d6108f..6fd37d6627 100644 --- a/src/domain/process/processTraceSpecification.ts +++ b/src/domain/process/processTraceSpecification.ts @@ -25,13 +25,13 @@ const cardinalitySchema = z.discriminatedUnion("kind", [ z.strictObject({ kind: z.literal("optional") }), z.strictObject({ kind: z.literal("exact"), - count: z.number().int().min(0), + count: z.int().min(0), }), z .strictObject({ kind: z.literal("range"), - min: z.number().int().min(0), - max: z.number().int().min(0), + min: z.int().min(0), + max: z.int().min(0), }) .refine(({ min, max }) => min <= max, { message: "cardinality min must not exceed max", diff --git a/src/domain/qlogCapture.ts b/src/domain/qlogCapture.ts index 575cf2a60e..6ae16bf6ec 100644 --- a/src/domain/qlogCapture.ts +++ b/src/domain/qlogCapture.ts @@ -28,15 +28,15 @@ export const qlogCaptureFactsSchema = z.strictObject({ }), traces: z.array( z.strictObject({ - trace_index: z.number().int().nonnegative(), + trace_index: z.int().nonnegative(), location: traceLocation, - event_count: z.number().int().nonnegative(), + event_count: z.int().nonnegative(), odcid: z.string().nullable(), vantage_point: z.enum(["client", "server"]).nullable(), - incomplete_fact_records: z.array(z.number().int().nonnegative()), + incomplete_fact_records: z.array(z.int().nonnegative()), loss_declarations: z.array( z.strictObject({ - record_ordinal: z.number().int().nonnegative(), + record_ordinal: z.int().nonnegative(), confidence: z.literal("observed"), packet_number: unsignedFact, packet_type: z.string().nullable(), @@ -53,8 +53,8 @@ export const qlogCaptureFactsSchema = z.strictObject({ scope: z.literal("observed-stream-frame-ranges"), contributions: z.array( z.strictObject({ - record_ordinal: z.number().int().nonnegative(), - frame_index: z.number().int().nonnegative(), + record_ordinal: z.int().nonnegative(), + frame_index: z.int().nonnegative(), offset: decimal, length: decimal, fin: z.boolean().nullable(), diff --git a/src/domain/reconstructionCoverage.ts b/src/domain/reconstructionCoverage.ts index 2a6ef77b25..de335f20ad 100644 --- a/src/domain/reconstructionCoverage.ts +++ b/src/domain/reconstructionCoverage.ts @@ -106,8 +106,8 @@ const verifierContractBaseSchema = z.strictObject({ "live-observation", "external", ]), - max_age_ms: z.number().int().min(1), - minimum_repeats: z.number().int().min(1), + max_age_ms: z.int().min(1), + minimum_repeats: z.int().min(1), normalization_sha256: digestSchema, normalization_removes_dimensions: z.literal(false), }); @@ -133,7 +133,7 @@ const verifierResultSchema = z.strictObject({ artifact_sha256s: z.array(digestSchema).min(1), owner_sha256s: z.array(digestSchema), normalization_sha256: digestSchema, - repeats: z.number().int().min(1), + repeats: z.int().min(1), evidence_ids: z.array(evidenceIdSchema).min(1), }); @@ -259,9 +259,9 @@ export const reconstructionClosureResultSchema = z.strictObject({ boundary_id: stableIdSchema, status: z.enum(["partial", "failed", "unknown", "ready"]), summary: z.strictObject({ - required_surfaces: z.number().int().min(0), - required_claims: z.number().int().min(0), - reasons: z.number().int().min(0), + required_surfaces: z.int().min(0), + required_claims: z.int().min(0), + reasons: z.int().min(0), }), reasons: z.array(closureReasonSchema), recommended_probes: z.array( diff --git a/src/domain/reconstructionObligationLedgerSchemas.ts b/src/domain/reconstructionObligationLedgerSchemas.ts index 60ae22646c..2b9cb7d130 100644 --- a/src/domain/reconstructionObligationLedgerSchemas.ts +++ b/src/domain/reconstructionObligationLedgerSchemas.ts @@ -181,7 +181,7 @@ export const reconstructionObligationManifestSchema = z.strictObject({ export const reviewedReconstructionObligationSchema = z.strictObject({ obligation_id: stableIdSchema, - obligation_version: z.number().int().min(1), + obligation_version: z.int().min(1), title: textSchema, application_layer: obligationLayerSchema, family: textSchema, @@ -230,7 +230,7 @@ const diagnosticSchema = z.strictObject({ export const reconstructionObligationSchema = z.strictObject({ obligation_id: stableIdSchema, - obligation_version: z.number().int().min(1), + obligation_version: z.int().min(1), title: textSchema, origin: z.enum(["generated", "reviewed"]), application_layer: obligationLayerSchema, @@ -265,7 +265,7 @@ const countBySchema = ( z.array( z.strictObject({ key, - count: z.number().int().min(0), + count: z.int().min(0), }), ); @@ -310,10 +310,10 @@ export const reconstructionObligationLedgerSchema = z status: z.enum(["complete", "partial"]), }), summary: z.strictObject({ - total: z.number().int().min(0), - required: z.number().int().min(0), - verified: z.number().int().min(0), - required_open: z.number().int().min(0), + total: z.int().min(0), + required: z.int().min(0), + verified: z.int().min(0), + required_open: z.int().min(0), by_status: countBySchema(obligationStatusSchema), by_application_layer: countBySchema(obligationLayerSchema), by_evidence_authority: countBySchema(evidenceAuthoritySchema).describe( diff --git a/src/domain/reconstructionReadinessSchemas.ts b/src/domain/reconstructionReadinessSchemas.ts index 00ef598b4f..685cb3a4c1 100644 --- a/src/domain/reconstructionReadinessSchemas.ts +++ b/src/domain/reconstructionReadinessSchemas.ts @@ -125,7 +125,7 @@ const contradictionSchema = z.strictObject({ }); const operationOutcomeSchema = z.strictObject({ - sequence: z.number().int().min(0), + sequence: z.int().min(0), operation: stableIdSchema, surface: z.enum(["cli", "mcp"]), call_kind: z.enum([ @@ -138,7 +138,7 @@ const operationOutcomeSchema = z.strictObject({ "operation", ]), expected_success: z.boolean(), - cli_exit_code: z.number().int().min(0).nullable(), + cli_exit_code: z.int().min(0).nullable(), mcp_status: z.enum(["success", "non-success"]).nullable(), error_code: stableIdSchema.nullable(), recovered: z.boolean(), @@ -148,15 +148,15 @@ const operationOutcomeSchema = z.strictObject({ const cleanupSchema = z.strictObject({ run_id: stableIdSchema, cancelled: z.boolean(), - owned_resources_remaining: z.number().int().min(0), + owned_resources_remaining: z.int().min(0), diagnostic_evidence_ids: z.array(evidenceIdSchema), }); const closureObservationSchema = z.strictObject({ - sequence: z.number().int().min(0), + sequence: z.int().min(0), ledger_digest: digestSchema, status: z.enum(["ready", "open", "failed", "unknown"]), - required_open: z.number().int().min(0), + required_open: z.int().min(0), newly_verified_obligation_ids: z.array(stableIdSchema), evidence_ids: z.array(evidenceIdSchema).min(1), }); @@ -253,24 +253,24 @@ export const reconstructionReadinessReportSchema = z.strictObject({ report_digest: digestSchema, status: readinessStatusSchema, summary: z.strictObject({ - stages: z.number().int().min(0), - required_stages: z.number().int().min(0), - passed_required_stages: z.number().int().min(0), - findings: z.number().int().min(0), - failed_findings: z.number().int().min(0), - unknown_findings: z.number().int().min(0), + stages: z.int().min(0), + required_stages: z.int().min(0), + passed_required_stages: z.int().min(0), + findings: z.int().min(0), + failed_findings: z.int().min(0), + unknown_findings: z.int().min(0), }), metrics: z.strictObject({ first_valid_workflow_selection_rate: z.number().min(0).max(1), malformed_or_over_limit_call_rate: z.number().min(0).max(1), - incompatible_provider_invocations: z.number().int().min(0), - failed_calls_before_prerequisites: z.number().int().min(0), + incompatible_provider_invocations: z.int().min(0), + failed_calls_before_prerequisites: z.int().min(0), recovery_rate: z.number().min(0).max(1), divergence_localization_precision: z.number().min(0).max(1), - false_equivalence_count: z.number().int().min(0), - unowned_obligation_count: z.number().int().min(0), - cleanup_leak_count: z.number().int().min(0), - nondeterministic_replay_count: z.number().int().min(0), + false_equivalence_count: z.int().min(0), + unowned_obligation_count: z.int().min(0), + cleanup_leak_count: z.int().min(0), + nondeterministic_replay_count: z.int().min(0), }), stages: readinessStagesSchema, findings: z.array(findingSchema), diff --git a/src/domain/reconstructionVerificationSchemas.ts b/src/domain/reconstructionVerificationSchemas.ts index 9831947bc7..1910b055e2 100644 --- a/src/domain/reconstructionVerificationSchemas.ts +++ b/src/domain/reconstructionVerificationSchemas.ts @@ -102,12 +102,12 @@ export const reconstructionVerificationResultSchema = z status: verificationStatusSchema, specification_sha256: digestSchema, summary: z.object({ - total: z.number().int().min(1), - passed: z.number().int().min(0), - failed: z.number().int().min(0), - unknown: z.number().int().min(0), - behavioral: z.number().int().min(0), - structural: z.number().int().min(0), + total: z.int().min(1), + passed: z.int().min(0), + failed: z.int().min(0), + unknown: z.int().min(0), + behavioral: z.int().min(0), + structural: z.int().min(0), }), claims: z.object({ items: z.array(reconstructionClaimResultSchema), diff --git a/src/domain/referenceSourceGraph.ts b/src/domain/referenceSourceGraph.ts index 3179d8f219..deb1fb23fe 100644 --- a/src/domain/referenceSourceGraph.ts +++ b/src/domain/referenceSourceGraph.ts @@ -52,13 +52,13 @@ const sourceFileSchema = z.union([ z.strictObject({ ...sourceFileBaseShape, sha256: digestSchema, - size: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER), + size: z.int().min(0).max(Number.MAX_SAFE_INTEGER), content_state: z.literal("hashed"), }), z.strictObject({ ...sourceFileBaseShape, sha256: z.null(), - size: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER).nullable(), + size: z.int().min(0).max(Number.MAX_SAFE_INTEGER).nullable(), content_state: z.enum([ "redacted-secret", "excluded", @@ -225,8 +225,8 @@ const historicalSourceManifestBaseSchema = z.strictObject({ graph_sha256: digestSchema, root_sha256: digestSchema, inventory_state: z.enum(["complete", "partial", "unknown"]), - entry_count: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER), - relationship_count: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER), + entry_count: z.int().min(0).max(Number.MAX_SAFE_INTEGER), + relationship_count: z.int().min(0).max(Number.MAX_SAFE_INTEGER), }); export type HistoricalSourceGraph = z.infer; diff --git a/src/domain/residualUnknown.ts b/src/domain/residualUnknown.ts index e42f77c209..94e9087391 100644 --- a/src/domain/residualUnknown.ts +++ b/src/domain/residualUnknown.ts @@ -77,7 +77,7 @@ const resolutionSchema = z.discriminatedUnion("disposition", [ /** Strict durable record for one unresolved or evidence-qualified question. */ const residualUnknownObjectSchema = z.strictObject({ unknown_id: unknownIdSchema, - revision: z.number().int().min(1), + revision: z.int().min(1), previous_revision_digest: z .string() .regex(/^[a-f0-9]{64}$/u) @@ -265,7 +265,7 @@ export type RecordUnknownInput = z.infer; /** Explicit optimistic-concurrency update command for one unknown. */ export const updateUnknownInputSchema = z.strictObject({ unknown_id: unknownIdSchema, - expected_revision: z.number().int().min(1), + expected_revision: z.int().min(1), status: residualUnknownObjectSchema.shape.status, severity: residualUnknownObjectSchema.shape.severity, supporting_evidence_ids: z.array(evidenceIdSchema), diff --git a/src/domain/rust/rustBinary.ts b/src/domain/rust/rustBinary.ts index 6bd327aa32..5ba3cdfa57 100644 --- a/src/domain/rust/rustBinary.ts +++ b/src/domain/rust/rustBinary.ts @@ -29,7 +29,7 @@ export const rustArchitectureForSubject = (architecture: string) => { /** Known revisions used to interpret compatible cargo-auditable documents. */ export const RUST_AUDITABLE_FORMAT_VERSIONS = [0, 1, 8] as const; -const index = z.number().int().nonnegative(); +const index = z.int().nonnegative(); const rustcHash = z.string().regex(/^[0-9a-f]{40}$/u); /** One embedded package, with omitted kind and root preserved as null and false. */ @@ -51,11 +51,11 @@ const dependencyEdgeSchema = z.strictObject({ export const rustAuditableMetadataSchema = z.strictObject({ section_name: z.enum([".dep-v0", "__DATA,.dep-v0"]), file_offset: index, - section_bytes: z.number().int().positive(), - compressed_bytes: z.number().int().positive(), - uncompressed_bytes: z.number().int().positive(), + section_bytes: z.int().positive(), + compressed_bytes: z.int().positive(), + uncompressed_bytes: z.int().positive(), /** Original embedded revision; null means the source omitted the field. */ - format_version: z.number().int().nonnegative().max(0xffff_ffff).nullable(), + format_version: z.int().nonnegative().max(0xffff_ffff).nullable(), packages: z.array(rustPackageSchema), root_package_index: index.nullable(), dependency_edges: z.array(dependencyEdgeSchema), diff --git a/src/domain/sqlite/sqliteDatabase.ts b/src/domain/sqlite/sqliteDatabase.ts index 903e5f6c7b..88051d408a 100644 --- a/src/domain/sqlite/sqliteDatabase.ts +++ b/src/domain/sqlite/sqliteDatabase.ts @@ -16,7 +16,7 @@ export const DEFAULT_SQLITE_WORKER_TIMEOUT_MS = 30_000; export const MAX_SQLITE_WORKER_TIMEOUT_MS = 2_147_483_647; const workerTimeout = z.number().int().min(1).max(MAX_SQLITE_WORKER_TIMEOUT_MS); -const nonnegative = z.number().int().nonnegative(); +const nonnegative = z.int().nonnegative(); const hex = z.string().regex(/^(?:[0-9a-f]{2})*$/); const encoding = z.enum(["UTF-8", "UTF-16le", "UTF-16be"]); const artifactSchema = z.strictObject({ @@ -56,7 +56,6 @@ export const inspectSqliteDatabaseInputSchema = z "Default: compact inventory without a table, or detailed selected-table schema with a table. selected_table requires table. Database explicitly expands all stored declarations and supported columns.", ), row_limit: z - .number() .int() .min(1) .optional() @@ -199,7 +198,7 @@ export const sqliteDatabaseSchema = z table: z.string(), columns: z.array(z.string()), values: z.array(z.array(sqliteValueSchema)), - row_limit: z.number().int().min(1), + row_limit: z.int().min(1), returned_rows: nonnegative, truncated: z.boolean(), order: z.literal("unspecified"), diff --git a/src/domain/staticRuntimeCorrelation.ts b/src/domain/staticRuntimeCorrelation.ts index 64cc080d72..0bde9ea115 100644 --- a/src/domain/staticRuntimeCorrelation.ts +++ b/src/domain/staticRuntimeCorrelation.ts @@ -122,9 +122,9 @@ const correlationItemSchema = z.object({ export const staticRuntimeCorrelationResultSchema = z.object({ status: z.enum(["correlated", "contradicted", "unknown", "truncated"]), summary: z.object({ - hypotheses: z.number().int().min(0), - contradictions: z.number().int().min(0), - unresolved: z.number().int().min(0), + hypotheses: z.int().min(0), + contradictions: z.int().min(0), + unresolved: z.int().min(0), }), correlations: z.object({ items: z.array(correlationItemSchema), diff --git a/src/domain/wasm/wasmArtifact.ts b/src/domain/wasm/wasmArtifact.ts index 968be4e19e..bc2efad138 100644 --- a/src/domain/wasm/wasmArtifact.ts +++ b/src/domain/wasm/wasmArtifact.ts @@ -9,7 +9,7 @@ const digest = z.string().regex(/^[a-f0-9]{64}$/); const artifact = z.strictObject({ path: z.string().min(1), sha256: digest, - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), }); /** Default execution budget; upper bound is the runtime's signed 32-bit timer range. */ export const DEFAULT_WASM_COMMAND_TIMEOUT_MS = 30_000; @@ -39,9 +39,9 @@ export const wasmArtifactSchema = z sections: z.array( z.strictObject({ kind: z.string().min(1), - start: z.number().int().nonnegative(), - end: z.number().int().nonnegative(), - bytes: z.number().int().nonnegative(), + start: z.int().nonnegative(), + end: z.int().nonnegative(), + bytes: z.int().nonnegative(), description: z.string(), }), ), @@ -70,8 +70,8 @@ export const wasmArtifactSchema = z }), ) .length(3), - timeout_ms: z.number().int().positive(), - output_budget_bytes: z.number().int().positive(), + timeout_ms: z.int().positive(), + output_budget_bytes: z.int().positive(), }), candidates: z.array(artifact), glue: z.array( @@ -81,8 +81,8 @@ export const wasmArtifactSchema = z references: z.array( z.strictObject({ value: z.string(), - line: z.number().int().positive(), - column: z.number().int().nonnegative(), + line: z.int().positive(), + column: z.int().nonnegative(), candidate_paths: z.array(z.string()), association: z.enum([ "local-path-candidate", diff --git a/src/domain/wasm/wasmInterface.ts b/src/domain/wasm/wasmInterface.ts index f5559269c0..6f4145e18b 100644 --- a/src/domain/wasm/wasmInterface.ts +++ b/src/domain/wasm/wasmInterface.ts @@ -55,7 +55,7 @@ export const wasmInterfaceSchema = z.object({ module: z.string().nullable(), name: z.string(), kind, - index: z.number().int().nonnegative().max(0xffff_ffff).nullable(), + index: z.int().nonnegative().max(0xffff_ffff).nullable(), signature: signature.nullable(), wat_form: z.string(), issue: z.string().nullable(), diff --git a/src/domain/webBundleAnalysis.ts b/src/domain/webBundleAnalysis.ts index da6acfbd1f..f23180c164 100644 --- a/src/domain/webBundleAnalysis.ts +++ b/src/domain/webBundleAnalysis.ts @@ -223,15 +223,15 @@ export const webBundleResultAdmissionFailure = (input: { const sourceLocationSchema = z.object({ script_key: z.string(), - line: z.number().int().min(1).nullable(), - column: z.number().int().min(0).nullable(), + line: z.int().min(1).nullable(), + column: z.int().min(0).nullable(), }); const basisSchema = z.object({ script_key: z.string(), artifact_sha256: z.string().regex(/^[a-f0-9]{64}$/u), - line: z.number().int().min(1).nullable(), - column: z.number().int().min(0).nullable(), + line: z.int().min(1).nullable(), + column: z.int().min(0).nullable(), detector: z.string(), }); @@ -242,8 +242,8 @@ const findingSchema = z.object({ }); const originalSourceSchema = z.object({ - source_index: z.number().int().min(0).optional(), - declaration_index: z.number().int().min(0).optional(), + source_index: z.int().min(0).optional(), + declaration_index: z.int().min(0).optional(), source: z.string().nullable(), artifact: webTextArtifactSchema.nullable(), }); @@ -254,13 +254,13 @@ const originalModuleEdgeSchema = z.object({ resolved_source: z.string().nullable(), }); const sourceMapMappingSchema = z.object({ - source_index: z.number().int().min(0).optional(), - declaration_index: z.number().int().min(0).optional(), - generated_line: z.number().int().min(1), - generated_column: z.number().int().min(0), + source_index: z.int().min(0).optional(), + declaration_index: z.int().min(0).optional(), + generated_line: z.int().min(1), + generated_column: z.int().min(0), source: z.string().nullable(), - original_line: z.number().int().min(1), - original_column: z.number().int().min(0), + original_line: z.int().min(1), + original_column: z.int().min(0), name: z.string().nullable(), }); const sourceMapContextShape = { @@ -308,8 +308,8 @@ const webTextArtifactSummarySchema = webTextArtifactMetadataSchema.extend({ export const webSourceMapsSchema = z .object({ status: z.enum(["not_requested", "included", "partial", "unavailable"]), - requested: z.number().int().min(0), - processed: z.number().int().min(0), + requested: z.int().min(0), + processed: z.int().min(0), items: z.array(sourceMapSchema), limitation: z.string().min(1).optional(), }) @@ -364,8 +364,8 @@ export type WebSourceMaps = z.infer; export const webBundleAnalysisSchema = z.object({ capture: z.object({ target_url: z.string(), - scripts_observed: z.number().int().min(0), - scripts_analyzed: z.number().int().min(0), + scripts_observed: z.int().min(0), + scripts_analyzed: z.int().min(0), source_artifacts: z.array(webTextArtifactSummarySchema), }), observations: z.object({ @@ -375,7 +375,7 @@ export const webBundleAnalysisSchema = z.object({ script_key: z.string(), url: z.string(), artifact_sha256: z.string().regex(/^[a-f0-9]{64}$/u), - bytes: z.number().int().min(0), + bytes: z.int().min(0), }), ), edges: z.array( @@ -438,9 +438,9 @@ export const webBundleAnalysisSchema = z.object({ ), completeness: z.object({ status: z.enum(["complete", "partial"]), - parsed_scripts: z.number().int().min(0), - parse_failures: z.number().int().min(0), - visited_ast_nodes: z.number().int().min(0), + parsed_scripts: z.int().min(0), + parse_failures: z.int().min(0), + visited_ast_nodes: z.int().min(0), }), limitations: z.array(z.string()), }); diff --git a/src/domain/webCaptureDiffSchemas.ts b/src/domain/webCaptureDiffSchemas.ts index 3efd74581a..3dbafffdf5 100644 --- a/src/domain/webCaptureDiffSchemas.ts +++ b/src/domain/webCaptureDiffSchemas.ts @@ -35,7 +35,7 @@ const dimensionSchema = z.union([ z .object({ status: z.literal("changed"), - total_changes: z.number().int().min(1), + total_changes: z.int().min(1), changes: z.array(changeSchema), reason: z.null(), }) diff --git a/src/domain/webContentArtifact.ts b/src/domain/webContentArtifact.ts index 0d9a492080..a58ddd10d1 100644 --- a/src/domain/webContentArtifact.ts +++ b/src/domain/webContentArtifact.ts @@ -5,7 +5,7 @@ import { z } from "zod"; /** Metadata shared by complete and summarized retained web text artifacts. */ export const webTextArtifactMetadataSchema = z.object({ sha256: z.string().regex(/^[a-f0-9]{64}$/u), - bytes: z.number().int().min(0), + bytes: z.int().min(0), media_type: z.string().min(1), charset: z.literal("utf-8"), }); diff --git a/src/domain/webEventListeners.ts b/src/domain/webEventListeners.ts index 111c043d84..b7d893dcab 100644 --- a/src/domain/webEventListeners.ts +++ b/src/domain/webEventListeners.ts @@ -25,7 +25,7 @@ export const webEventListenersSchema = z.object({ selected_node: z.object({ selector: z.string(), match: z.enum(["found", "not_found"]), - backend_node_id: z.number().int().min(1).nullable(), + backend_node_id: z.int().min(1).nullable(), }), listeners: z.array( z.object({ diff --git a/src/domain/webExecution.ts b/src/domain/webExecution.ts index 459757c83d..d6f8d6fe7b 100644 --- a/src/domain/webExecution.ts +++ b/src/domain/webExecution.ts @@ -10,16 +10,16 @@ import { browserVersionSchema } from "./browserObservationSchemas.js"; /** Explicit instrumentation request for one finite, externally driven execution window. */ export const observeWebExecutionInputSchema = webRuntimeScopeSchema.extend({ - observation_ms: z.number().int().min(1).max(2_147_483_647).default(10_000), + observation_ms: z.int().min(1).max(2_147_483_647).default(10_000), }); export type ObserveWebExecutionInput = z.infer< typeof observeWebExecutionInputSchema >; const rangeSchema = z.object({ - start_offset: z.number().int().min(0), - end_offset: z.number().int().min(0), - count: z.number().int().min(0), + start_offset: z.int().min(0), + end_offset: z.int().min(0), + count: z.int().min(0), source_bounds: z.enum(["verified", "unknown"]), }); const functionSchema = z.object({ @@ -35,7 +35,7 @@ export const webExecutionSchema = z.object({ window: z.object({ armed_at: z.iso.datetime(), ended_at: z.iso.datetime(), - requested_ms: z.number().int().min(1), + requested_ms: z.int().min(1), end_reason: z.enum([ "window_elapsed", "document_changed", @@ -57,7 +57,7 @@ export const webExecutionSchema = z.object({ functions: z.array(functionSchema), }), ), - excluded_scripts: z.number().int().min(0), + excluded_scripts: z.int().min(0), }), requests: z.array( z.object({ @@ -74,9 +74,9 @@ export const webExecutionSchema = z.object({ causal_attribution: z.literal("unknown"), }), ), - excluded_requests: z.number().int().min(0), + excluded_requests: z.int().min(0), script_inventory: z.object({ - main_document_scripts: z.number().int().min(0), + main_document_scripts: z.int().min(0), not_reported_script_ids: z.array(z.string().min(1)), coverage_absence: z.literal("unknown"), }), diff --git a/src/domain/webMcpDiscovery.ts b/src/domain/webMcpDiscovery.ts index dd0bbea78d..5c2566a4ad 100644 --- a/src/domain/webMcpDiscovery.ts +++ b/src/domain/webMcpDiscovery.ts @@ -15,7 +15,7 @@ export const discoverWebMcpToolsInputSchema = z.strictObject({ cdp_endpoint: browserObservationEndpointSchema, allowed_origins: browserAllowedOriginsSchema, target_id: z.string().trim().min(1), - observation_ms: z.number().int().min(0).default(100), + observation_ms: z.int().min(0).default(100), command_timeout_ms: webRuntimeCommandTimeoutSchema, }); export type DiscoverWebMcpToolsInput = z.infer< @@ -43,8 +43,8 @@ const webMcpToolSchema = z.object({ registration_source: z .object({ url: z.string(), - line: z.number().int().min(0).nullable(), - column: z.number().int().min(0).nullable(), + line: z.int().min(0).nullable(), + column: z.int().min(0).nullable(), }) .nullable(), trust: z.literal("page-declared-untrusted"), @@ -60,7 +60,7 @@ export const webMcpDiscoverySchema = z.object({ }), status: z.enum(["available", "unavailable"]), tools: z.object({ - total: z.number().int().min(0), + total: z.int().min(0), items: z.array(webMcpToolSchema), }), completeness: browserCompletenessSchema, diff --git a/src/domain/webModuleTrace.ts b/src/domain/webModuleTrace.ts index d3f79b7ec6..20dff95a3c 100644 --- a/src/domain/webModuleTrace.ts +++ b/src/domain/webModuleTrace.ts @@ -13,11 +13,7 @@ export const webModuleTraceInputSchema = z.strictObject({ manifest_path: absoluteLocalPathStringSchema.describe( "Absolute path to an export_web_scripts manifest", ), - script_index: z - .number() - .int() - .min(0) - .describe("Zero-based index in manifest.scripts"), + script_index: z.int().min(0).describe("Zero-based index in manifest.scripts"), importer_url: z .string() .min(1) @@ -43,14 +39,14 @@ export type WebModuleTraceInput = z.output; export const webModuleFileSchema = z.strictObject({ path: z.string().min(1), sha256: digestSchema, - bytes: z.number().int().min(0), + bytes: z.int().min(0), }); export type WebModuleFile = z.output; const positionSchema = z.strictObject({ - offset: z.number().int().min(0), - line: z.number().int().min(1), - column: z.number().int().min(0), + offset: z.int().min(0), + line: z.int().min(1), + column: z.int().min(0), }); /** Parser observations do not assert that a dependency was loaded. */ @@ -104,7 +100,7 @@ export type WebModuleResolutionObservation = z.output< >; const candidateSchema = z.strictObject({ - script_index: z.number().int().min(0), + script_index: z.int().min(0), match: z.enum(["exact-reported-url", "response-url-without-fragment"]), script: exportedWebScriptSchema, }); @@ -122,7 +118,7 @@ export const webModuleTraceResultSchema = z.strictObject({ }).shape, }), source: webModuleFileSchema.extend({ - script_index: z.number().int().min(0), + script_index: z.int().min(0), script: exportedWebScriptSchema, }), importer: z.strictObject({ diff --git a/src/domain/webNetworkCapture.ts b/src/domain/webNetworkCapture.ts index 8519e4b182..dd90bd3bf3 100644 --- a/src/domain/webNetworkCapture.ts +++ b/src/domain/webNetworkCapture.ts @@ -54,7 +54,7 @@ export const inspectWebNetworkCaptureInputSchema = z.strictObject({ ), format: z.enum(WEB_NETWORK_CAPTURE_FORMATS), record_ordinals: z - .array(z.number().int().nonnegative()) + .array(z.int().nonnegative()) .min(1) .optional() .describe( @@ -112,7 +112,7 @@ const binaryBase = { const retainedBinaryDescriptorSchema = z.strictObject({ ...binaryBase, state: z.literal("retained"), - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), sha256: z.string().regex(/^[0-9a-f]{64}$/), }); const redactedBinaryDescriptorSchema = z.strictObject({ @@ -138,7 +138,7 @@ const numberSchema = z.strictObject({ /** Preserve producer representations with independent sidecars rather than invented browser IDs. */ export const webNetworkCaptureRecordSchema = z.strictObject({ - ordinal: z.number().int().nonnegative(), + ordinal: z.int().nonnegative(), location: z.discriminatedUnion("kind", [ z.strictObject({ kind: z.literal("unknown"), @@ -151,8 +151,8 @@ export const webNetworkCaptureRecordSchema = z.strictObject({ }), z.strictObject({ kind: z.literal("byte-range"), - offset: z.number().int().nonnegative(), - bytes: z.number().int().positive(), + offset: z.int().nonnegative(), + bytes: z.int().positive(), }), ]), reported: jsonValueSchema, @@ -203,7 +203,7 @@ const payloadShape = { redactions: z.array(redactionSchema), records_pointer: pointerSchema.nullable(), }), - total_records: z.number().int().nonnegative(), + total_records: z.int().nonnegative(), records: z.array(webNetworkCaptureRecordSchema), }; const refineCoverage = ( @@ -243,7 +243,7 @@ export const webNetworkCaptureArtifactSchema = z.strictObject({ .regex(/^[0-9a-f]{64}$/) .nullable() .describe("Observed SHA-256; null only when explicitly excluded."), - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), }); const artifactShape = { artifact: webNetworkCaptureArtifactSchema, diff --git a/src/domain/webRuntime.ts b/src/domain/webRuntime.ts index 537d54386a..b707cb3a22 100644 --- a/src/domain/webRuntime.ts +++ b/src/domain/webRuntime.ts @@ -42,7 +42,7 @@ export const webRuntimeScopeSchema = z.strictObject({ export const webRuntimeSourceSchema = z.object({ script_id: z.string().min(1), url: z.string(), - execution_context_id: z.number().int().nullable(), + execution_context_id: z.int().nullable(), reported_execution_context: jsonObjectSchema.nullable(), reported_script_context_aux_data: jsonObjectSchema.nullable(), frame_id: z.string().nullable(), @@ -52,8 +52,8 @@ export const webRuntimeSourceSchema = z.object({ language: z.string().nullable(), resource_start: z .object({ - line_number: z.number().int().min(0).describe(START_LINE), - column_number: z.number().int().min(0).describe(START_COLUMN), + line_number: z.int().min(0).describe(START_LINE), + column_number: z.int().min(0).describe(START_COLUMN), }) .nullable(), source: z.discriminatedUnion("state", [ @@ -61,8 +61,8 @@ export const webRuntimeSourceSchema = z.object({ state: z.literal("captured"), text: z.string(), sha256: z.string().regex(/^[a-f0-9]{64}$/u), - utf8_bytes: z.number().int().min(0), - utf16_units: z.number().int().min(0), + utf8_bytes: z.int().min(0), + utf16_units: z.int().min(0), }), z.object({ state: z.enum(["unavailable", "excluded"]), @@ -76,8 +76,8 @@ export type WebRuntimeSource = z.infer; export const webRuntimeLocationSchema = z.object({ script_id: z.string().describe(SCRIPT_ID), url: z.string().nullable(), - line_number: z.number().int().min(0).describe(RESOURCE_LINE), - column_number: z.number().int().min(0).nullable().describe(RESOURCE_COLUMN), + line_number: z.int().min(0).describe(RESOURCE_LINE), + column_number: z.int().min(0).nullable().describe(RESOURCE_COLUMN), function_name: z.string().nullable(), source_association: z.enum(["script_id", "unknown"]), }); diff --git a/src/domain/webScreenshot.ts b/src/domain/webScreenshot.ts index 37e1eaeb21..5cb6b6d801 100644 --- a/src/domain/webScreenshot.ts +++ b/src/domain/webScreenshot.ts @@ -14,7 +14,7 @@ import { browserVersionSchema } from "./browserObservationSchemas.js"; export const webScreenshotArtifactSchema = z .object({ sha256: z.string().regex(/^[a-f0-9]{64}$/u), - bytes: z.number().int().min(1), + bytes: z.int().min(1), media_type: z.literal("image/png"), data_base64: z.string(), }) @@ -54,8 +54,8 @@ export const webScreenshotSchema = z.object({ }), captured_at: z.iso.datetime(), viewport: z.object({ - width: z.number().int().min(1), - height: z.number().int().min(1), + width: z.int().min(1), + height: z.int().min(1), }), artifact: webScreenshotArtifactSchema, completeness: browserCompletenessSchema, @@ -67,7 +67,7 @@ export type WebScreenshot = z.infer; export const compareWebScreenshotsInputSchema = z.strictObject({ before: webScreenshotArtifactSchema, after: webScreenshotArtifactSchema, - channel_threshold: z.number().int().min(0).max(255).default(0), + channel_threshold: z.int().min(0).max(255).default(0), }); export type CompareWebScreenshotsInput = z.infer< typeof compareWebScreenshotsInputSchema @@ -76,14 +76,14 @@ export type CompareWebScreenshotsInput = z.infer< /** Value-only visual difference metrics; no OCR or image mutation. */ const webScreenshotDiffContextShape = { before: z.object({ - width: z.number().int().min(1), - height: z.number().int().min(1), + width: z.int().min(1), + height: z.int().min(1), }), after: z.object({ - width: z.number().int().min(1), - height: z.number().int().min(1), + width: z.int().min(1), + height: z.int().min(1), }), - channel_threshold: z.number().int().min(0).max(255), + channel_threshold: z.int().min(0).max(255), limitations: z.array(z.string()), }; @@ -92,19 +92,19 @@ export const webScreenshotDiffSchema = z z.object({ ...webScreenshotDiffContextShape, status: z.literal("identical"), - compared_pixels: z.number().int().positive(), + compared_pixels: z.int().positive(), changed_pixels: z.literal(0), changed_ratio: z.literal(0), - maximum_channel_delta: z.number().int().min(0).max(255), + maximum_channel_delta: z.int().min(0).max(255), mean_absolute_channel_delta: z.number().min(0).max(255), }), z.object({ ...webScreenshotDiffContextShape, status: z.literal("different"), - compared_pixels: z.number().int().positive(), - changed_pixels: z.number().int().positive(), + compared_pixels: z.int().positive(), + changed_pixels: z.int().positive(), changed_ratio: z.number().positive().max(1), - maximum_channel_delta: z.number().int().positive().max(255), + maximum_channel_delta: z.int().positive().max(255), mean_absolute_channel_delta: z.number().positive().max(255), }), z.object({ diff --git a/src/domain/webScriptArtifacts.ts b/src/domain/webScriptArtifacts.ts index 4fe3350db9..365167bd9d 100644 --- a/src/domain/webScriptArtifacts.ts +++ b/src/domain/webScriptArtifacts.ts @@ -8,11 +8,7 @@ export const selectedWebScriptInputSchema = z.strictObject({ manifest_path: absoluteLocalPathStringSchema.describe( "Absolute export_web_scripts manifest path", ), - script_index: z - .number() - .int() - .min(0) - .describe("Zero-based index in manifest.scripts"), + script_index: z.int().min(0).describe("Zero-based index in manifest.scripts"), }); export type SelectedWebScriptInput = z.output< typeof selectedWebScriptInputSchema @@ -22,7 +18,7 @@ export type SelectedWebScriptInput = z.output< export const webArtifactFileSchema = z.strictObject({ path: z.string().min(1), sha256: digestSchema, - bytes: z.number().int().min(0), + bytes: z.int().min(0), }); /** Artifact-port report shared by capture-derived analyses. */ diff --git a/src/domain/webScriptExport.ts b/src/domain/webScriptExport.ts index 68788b9fcd..9e1e914620 100644 --- a/src/domain/webScriptExport.ts +++ b/src/domain/webScriptExport.ts @@ -30,8 +30,8 @@ const sourceSchema = z.discriminatedUnion("kind", [ z.strictObject({ kind: z.literal("scenario-response"), transaction_id: z.string().min(1), - request_sequence: z.number().int().min(1), - response_sequence: z.number().int().min(1).nullable(), + request_sequence: z.int().min(1), + response_sequence: z.int().min(1).nullable(), status: z.number().nullable(), }), ]); @@ -47,7 +47,7 @@ export const exportedWebScriptSchema = z.strictObject({ layout: z.enum(["url-path", "isolated"]), layout_reason: z.string().nullable(), sha256: digestSchema, - bytes: z.number().int().min(0), + bytes: z.int().min(0), media_type: z.string().nullable(), redacted: z.boolean().nullable(), representation: z.enum([ @@ -94,7 +94,7 @@ export const webScriptExportResultSchema = webScriptExportManifestSchema.extend( manifest: z.strictObject({ path: z.string().min(1), sha256: digestSchema, - bytes: z.number().int().min(0), + bytes: z.int().min(0), }), }, ); diff --git a/src/domain/webSourceLocation.ts b/src/domain/webSourceLocation.ts index 1e46d30f86..049ce28247 100644 --- a/src/domain/webSourceLocation.ts +++ b/src/domain/webSourceLocation.ts @@ -16,8 +16,8 @@ import { /** JavaScript source-map positions use UTF-16 columns and one-based lines. */ export const webSourcePositionSchema = z.strictObject({ - line: z.number().int().min(1), - column: z.number().int().min(0), + line: z.int().min(1), + column: z.int().min(0), }); /** Trace one explicit generated position through an explicitly paired local map. */ @@ -49,7 +49,7 @@ const originalContentSchema = z.discriminatedUnion("state", [ state: z.literal("embedded"), text: z.string(), utf8_sha256: digestSchema, - utf8_bytes: z.number().int().min(0), + utf8_bytes: z.int().min(0), representation: z.literal("UTF-8 encoding of decoded sourcesContent text"), }), z.strictObject({ @@ -63,16 +63,16 @@ export const webSourceMapMatchSchema = z.discriminatedUnion("state", [ z.strictObject({ state: z.literal("generated-only") }), z.strictObject({ state: z.literal("mapped"), - flattened_source_index: z.number().int().min(0), - section_path: z.array(z.number().int().min(0)), - source_index: z.number().int().min(0), + flattened_source_index: z.int().min(0), + section_path: z.array(z.int().min(0)), + source_index: z.int().min(0), reported_source: z.string().nullable(), reported_source_root: z.string().nullable(), resolved_url: z.string().nullable(), ignored: z.boolean(), content: originalContentSchema, original_position: webSourcePositionSchema.extend({ - offset: z.number().int().min(0).nullable(), + offset: z.int().min(0).nullable(), content_position: z.enum([ "verified-in-embedded-text", "outside-embedded-text", @@ -92,7 +92,7 @@ export const webSourceMapReportSchema = z.strictObject({ z.strictObject({ id: z.literal("node-v8"), version: z.string().min(1), - v8_heap_limit_bytes: z.number().int().min(1), + v8_heap_limit_bytes: z.int().min(1), }), // Bun reports V8-shaped heap statistics but does not enforce V8 heap flags. // On Windows REA instead enforces a Job Object commit limit on the codec. @@ -101,7 +101,7 @@ export const webSourceMapReportSchema = z.strictObject({ version: z.string().min(1), node_compatibility_version: z.string().min(1), v8_heap_limit_bytes: z.null(), - process_memory_limit_bytes: z.number().int().min(1).nullable(), + process_memory_limit_bytes: z.int().min(1).nullable(), }), ]), format: z.enum(["regular", "indexed"]), @@ -148,14 +148,14 @@ export type WebSourceMapReport = z.output; export const webSourceLocationResultSchema = webSourceMapReportSchema.extend({ manifest: capturedWebManifestIdentitySchema, source: webArtifactFileSchema.extend({ - script_index: z.number().int().min(0), + script_index: z.int().min(0), script: exportedWebScriptSchema, }), source_map: webArtifactFileSchema.extend({ url: z.string().min(1), association: z.literal("caller-selected"), }), - generated_offset: z.number().int().min(0), + generated_offset: z.int().min(0), source_authenticity: z.literal("unknown"), execution: z.literal("unknown"), limitations: z.array(z.string()), diff --git a/src/evm/EvmoleInterfaceAdapter.ts b/src/evm/EvmoleInterfaceAdapter.ts index 7ffd578533..557dae9f62 100644 --- a/src/evm/EvmoleInterfaceAdapter.ts +++ b/src/evm/EvmoleInterfaceAdapter.ts @@ -1,6 +1,6 @@ import { z } from "zod"; -const offset = z.number().int().nonnegative(); +const offset = z.int().nonnegative(); const reportedMetadata = z.strictObject({ bytecodeOffset: offset, cborLength: offset, diff --git a/src/evm/EvmoleInterfaceProvider.ts b/src/evm/EvmoleInterfaceProvider.ts index 9559718f60..573c993c33 100644 --- a/src/evm/EvmoleInterfaceProvider.ts +++ b/src/evm/EvmoleInterfaceProvider.ts @@ -174,7 +174,7 @@ const replySchema = z.discriminatedUnion("ok", [ version: z.literal("0.9.3"), bytecode: z.strictObject({ sha256: z.string().regex(/^[a-f0-9]{64}$/), - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), hex: z.string().regex(/^(?:[a-f0-9]{2})*$/), metadata: solidityMetadataSchema.optional(), }), diff --git a/src/firmware/FirmwareReports.ts b/src/firmware/FirmwareReports.ts index f06129aa28..cbbb52e5b2 100644 --- a/src/firmware/FirmwareReports.ts +++ b/src/firmware/FirmwareReports.ts @@ -5,14 +5,14 @@ import { digestSchema } from "../domain/digests.js"; import { uniqueSorted } from "../domain/canonicalOrdering.js"; import { firmwareLogicalPath } from "./FirmwareFiles.js"; -const integer = z.number().int().min(0).max(Number.MAX_SAFE_INTEGER); +const integer = z.int().min(0).max(Number.MAX_SAFE_INTEGER); const signature = z.object({ id: z.string().min(1), offset: integer, size: integer, name: z.string(), description: z.string(), - confidence: z.number().int().min(0).max(255), + confidence: z.int().min(0).max(255), always_display: z.boolean(), extraction_declined: z.boolean(), }); diff --git a/src/ghidra/GhidraAnalysisSeeds.ts b/src/ghidra/GhidraAnalysisSeeds.ts index e7e58bfbf8..31d5c8ef6c 100644 --- a/src/ghidra/GhidraAnalysisSeeds.ts +++ b/src/ghidra/GhidraAnalysisSeeds.ts @@ -22,7 +22,7 @@ export const MAX_GHIDRA_SEED_ENTRIES = 1_000_000; export const MAX_GHIDRA_SEED_NAME_LENGTH = 2000; const digest = z.string().regex(/^[a-f0-9]{64}$/u); -const count = z.number().int().nonnegative(); +const count = z.int().nonnegative(); /** Caller-declared seeds committed into the analysis profile before import. */ export const ghidraSeedCommitmentSchema = z.strictObject({ diff --git a/src/ghidra/GhidraFunctionValues.ts b/src/ghidra/GhidraFunctionValues.ts index e787a3b340..c8ae3147ff 100644 --- a/src/ghidra/GhidraFunctionValues.ts +++ b/src/ghidra/GhidraFunctionValues.ts @@ -171,7 +171,7 @@ const procedureInfo = procedureInfoSchema .safeExtend({ name: z.string().min(1), entrypoint: ghidraCanonicalAddressSchema, - length: z.number().int().min(0), + length: z.int().min(0), locals: z.array(localVariable), classification, body: ghidraFunctionBody, @@ -413,7 +413,7 @@ const functionObservationEnvelope = z.strictObject({ relationship_coverage: relationshipCoverageSchema.exactOptional(), selection: z .strictObject({ - file_offset: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER), + file_offset: z.int().min(0).max(Number.MAX_SAFE_INTEGER), mapped_address: ghidraCanonicalAddressSchema, procedure_address: ghidraCanonicalAddressSchema, }) diff --git a/src/ghidra/GhidraInventoryValues.ts b/src/ghidra/GhidraInventoryValues.ts index 938dea74bb..49d6cd70c6 100644 --- a/src/ghidra/GhidraInventoryValues.ts +++ b/src/ghidra/GhidraInventoryValues.ts @@ -91,7 +91,7 @@ const inputSchemas = { document, start: explicitAddress.optional(), end: explicitAddress.optional(), - limit: z.number().int().min(1).max(1000).default(100), + limit: z.int().min(1).max(1000).default(100), cursor: z.string().min(1).optional(), }) .superRefine(validateBytePattern), @@ -99,7 +99,7 @@ const inputSchemas = { read_bytes: z.strictObject({ document, address: explicitAddress, - length: z.number().int().min(1).max(Number.MAX_SAFE_INTEGER).default(256), + length: z.int().min(1).max(Number.MAX_SAFE_INTEGER).default(256), }), address_to_file_offset: z.strictObject({ document, @@ -217,7 +217,7 @@ const stringFacts = z .object({ encoding: z.string().min(1), termination: z.enum(["missing", "present_or_not_required"]), - byte_length: z.number().int().min(0), + byte_length: z.int().min(0), }) .strict(); const baseItem = { @@ -298,8 +298,8 @@ const resultSchemas = { .strictObject({ document: identifier, segments: z.array(segment), - procedure_count: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER), - string_count: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER), + procedure_count: z.int().min(0).max(Number.MAX_SAFE_INTEGER), + string_count: z.int().min(0).max(Number.MAX_SAFE_INTEGER), }) .transform(projectBinaryOverview), search_bytes: byteSearchResultSchema.superRefine((value, context) => { @@ -326,7 +326,7 @@ const resultSchemas = { .strict(), address_to_file_offset: z.strictObject({ address: canonicalAddress, - file_offset: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER), + file_offset: z.int().min(0).max(Number.MAX_SAFE_INTEGER), }), address_name: z.string().nullable(), list_documents: z.array(z.string().min(1)).length(1), diff --git a/src/ghidra/GhidraSessionValues.ts b/src/ghidra/GhidraSessionValues.ts index 5d7bda0d27..b699d273dd 100644 --- a/src/ghidra/GhidraSessionValues.ts +++ b/src/ghidra/GhidraSessionValues.ts @@ -86,8 +86,8 @@ const sessionInfoSchema = z mips_soft_float_storage: z .object({ policy: z.literal(GHIDRA_MIPS_SOFT_FLOAT_STORAGE), - functions: z.number().int().nonnegative(), - definitions: z.number().int().nonnegative(), + functions: z.int().nonnegative(), + definitions: z.int().nonnegative(), }) .strict() .optional(), diff --git a/src/ghidra/extensions/nativeaot/NativeAotReport.ts b/src/ghidra/extensions/nativeaot/NativeAotReport.ts index 5fff41e5ed..c8677a13c7 100644 --- a/src/ghidra/extensions/nativeaot/NativeAotReport.ts +++ b/src/ghidra/extensions/nativeaot/NativeAotReport.ts @@ -15,27 +15,27 @@ const report = z "failed", ]), reason: z.string().nullable(), - method_tables: z.number().int().nonnegative(), + method_tables: z.int().nonnegative(), diagnostics: z.array(z.string()), header_address: z .string() .regex(/^0x[0-9a-f]+$/u) .optional(), discovery: z.enum(["symbol", "signature-heuristic"]).optional(), - format_major: z.number().int().optional(), - format_minor: z.number().int().optional(), + format_major: z.int().optional(), + format_minor: z.int().optional(), derived_memory: z .object({ address: z.string().regex(/^0x[0-9a-f]+$/u), - size_bytes: z.number().int().nonnegative(), + size_bytes: z.int().nonnegative(), sha256: z.string().regex(/^[a-f0-9]{64}$/u), file_offset: z.null(), }) .optional(), coverage: z .strictObject({ - frozen_object_candidates: z.number().int().nonnegative(), - frozen_objects_annotated: z.number().int().nonnegative(), + frozen_object_candidates: z.int().nonnegative(), + frozen_objects_annotated: z.int().nonnegative(), basis: z.literal( "rehydrated-pointer-candidates-and-committed-instance-types", ), diff --git a/src/ghidra/protocol.ts b/src/ghidra/protocol.ts index 31c5d59364..150486c3c5 100644 --- a/src/ghidra/protocol.ts +++ b/src/ghidra/protocol.ts @@ -5,12 +5,12 @@ import { err, ok, type Result } from "../domain/result.js"; const responseSchema = z.discriminatedUnion("ok", [ z.strictObject({ - id: z.number().int().positive(), + id: z.int().positive(), ok: z.literal(true), result: jsonValueSchema, }), z.strictObject({ - id: z.number().int().positive(), + id: z.int().positive(), ok: z.literal(false), error: z .object({ diff --git a/src/hopper/HopperFileOffset.ts b/src/hopper/HopperFileOffset.ts index dc1a8121f1..453a144848 100644 --- a/src/hopper/HopperFileOffset.ts +++ b/src/hopper/HopperFileOffset.ts @@ -27,11 +27,7 @@ const MAX_FAT_ARCHITECTURES = 128; const PREFIX_BYTES = 8 + MAX_FAT_ARCHITECTURES * 32; const observationSchema = z.strictObject({ address: z.string().regex(/^0x[0-9a-f]+$/u), - provider_file_offset: z - .number() - .int() - .nonnegative() - .max(Number.MAX_SAFE_INTEGER), + provider_file_offset: z.int().nonnegative().max(Number.MAX_SAFE_INTEGER), provider_source_path: z.string().nullable(), provider_image_header_hex: z .string() diff --git a/src/hopper/HopperMachOImage.ts b/src/hopper/HopperMachOImage.ts index 0c746b507c..b3a2bf3b65 100644 --- a/src/hopper/HopperMachOImage.ts +++ b/src/hopper/HopperMachOImage.ts @@ -48,19 +48,19 @@ const defaultHopperMachOImageFileSystem: HopperMachOImageFileSystem = { open }; const hopperFatMachOImageSchema = z.strictObject({ method: z.enum(["fat32_thin_slice", "fat64_thin_slice"]), - architecture_count: z.number().int().min(1).max(128), + architecture_count: z.int().min(1).max(128), container_table_sha256: z.string().regex(/^[a-f0-9]{64}$/u), - source_offset: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER), - byte_length: z.number().int().positive().max(Number.MAX_SAFE_INTEGER), - cpu_type: z.number().int().nonnegative(), - cpu_subtype: z.number().int().nonnegative(), + source_offset: z.int().nonnegative().max(Number.MAX_SAFE_INTEGER), + byte_length: z.int().positive().max(Number.MAX_SAFE_INTEGER), + cpu_type: z.int().nonnegative(), + cpu_subtype: z.int().nonnegative(), }); const hopperThinMachOImageSchema = z.strictObject({ method: z.literal("thin_verified_copy"), - byte_length: z.number().int().positive().max(Number.MAX_SAFE_INTEGER), - cpu_type: z.number().int().nonnegative(), - cpu_subtype: z.number().int().nonnegative(), + byte_length: z.int().positive().max(Number.MAX_SAFE_INTEGER), + cpu_type: z.int().nonnegative(), + cpu_subtype: z.int().nonnegative(), }); /** Stable source coordinates committed before preparing an owned thin image. */ diff --git a/src/hopper/LinuxPrivateDisplayDiagnostic.ts b/src/hopper/LinuxPrivateDisplayDiagnostic.ts index 6fe4d2437b..e5404699e6 100644 --- a/src/hopper/LinuxPrivateDisplayDiagnostic.ts +++ b/src/hopper/LinuxPrivateDisplayDiagnostic.ts @@ -29,7 +29,7 @@ const diagnosticContextSchema = z.object({ .string() .regex(/^[a-z0-9_]+$/u) .nullable(), - xvfb_stderr_bytes: z.number().int().nonnegative().safe(), + xvfb_stderr_bytes: z.int().nonnegative().safe(), }); const failureCodeSchema = z.string().transform((value, context) => { diff --git a/src/hopper/protocol.ts b/src/hopper/protocol.ts index 10c109bc41..6104aae4da 100644 --- a/src/hopper/protocol.ts +++ b/src/hopper/protocol.ts @@ -10,7 +10,7 @@ import { safeParseJson } from "../domain/safeJson.js"; const remoteErrorSchema = z .object({ - code: z.number().int(), + code: z.int(), message: z.string(), type: z .enum([ @@ -27,13 +27,13 @@ const remoteErrorSchema = z const responseSchema = z.union([ z .object({ - id: z.number().int().nonnegative(), + id: z.int().nonnegative(), result: jsonValueSchema, }) .strict(), z .object({ - id: z.number().int().nonnegative(), + id: z.int().nonnegative(), error: remoteErrorSchema, }) .strict(), @@ -41,7 +41,7 @@ const responseSchema = z.union([ const eventSchema = z .object({ - id: z.number().int().nonnegative(), + id: z.int().nonnegative(), event: z.discriminatedUnion("type", [ z .object({ diff --git a/src/ida/IdaConfiguration.ts b/src/ida/IdaConfiguration.ts index 5ebbf01af1..c3db50c80a 100644 --- a/src/ida/IdaConfiguration.ts +++ b/src/ida/IdaConfiguration.ts @@ -24,7 +24,6 @@ const common = { mode: z.enum(["attached", "headless"]).default("attached"), protocol: z.literal("native").optional(), timeoutMs: z - .number() .int() .positive() .max(MAX_IDA_REQUEST_TIMEOUT_MS) diff --git a/src/ida/IdaNativeProtocol.ts b/src/ida/IdaNativeProtocol.ts index 35a88d57cc..cfee5d0ef0 100644 --- a/src/ida/IdaNativeProtocol.ts +++ b/src/ida/IdaNativeProtocol.ts @@ -52,7 +52,7 @@ export const nativeDecompileSchema = z.object({ addr: idaAddressSchema, ok: z.boolean(), pseudocode: z.string().min(1).optional(), - lines: z.number().int().nonnegative().optional(), + lines: z.int().nonnegative().optional(), error: z.string().optional(), }); diff --git a/src/ida/IdaProtocolValues.ts b/src/ida/IdaProtocolValues.ts index f070f052de..e7dcc483b2 100644 --- a/src/ida/IdaProtocolValues.ts +++ b/src/ida/IdaProtocolValues.ts @@ -57,7 +57,7 @@ export const modernHealthSchema = z /** An upstream cursor must either finish or advance strictly to avoid replay loops. */ export const cursorSchema = z.union([ - z.object({ next: z.number().int().nonnegative() }), + z.object({ next: z.int().nonnegative() }), z.object({ done: z.literal(true) }), ]); export const nextOffset = ( @@ -74,13 +74,13 @@ export const nextOffset = ( export const legacyPageSchema = z.object({ data: z.array(jsonValueSchema), - next_offset: z.number().int().nonnegative().nullable(), + next_offset: z.int().nonnegative().nullable(), }); export const modernPageSchema = z .array( z.object({ data: z.array(jsonValueSchema), - next_offset: z.number().int().nonnegative().nullable(), + next_offset: z.int().nonnegative().nullable(), }), ) .length(1); @@ -126,14 +126,14 @@ export const modernDecompileSchema = z.object({ code: z.string().nullable(), error: z.string().optional(), cursor: cursorSchema, - line_count: z.number().int().nonnegative().optional(), - total_lines: z.number().int().nonnegative().optional(), + line_count: z.int().nonnegative().optional(), + total_lines: z.int().nonnegative().optional(), }); export const legacyStringSchema = z.object({ address: idaAddressSchema, string: z.string(), - length: z.number().int().nonnegative(), + length: z.int().nonnegative(), }); export const idaStringsPageSchema = z.object({ matches: z.array(z.object({ addr: idaAddressSchema, string: z.string() })), @@ -200,7 +200,7 @@ export const modernCallGraphSchema = z ), truncated: z.boolean().optional(), limit_reason: z.string().nullable().optional(), - max_edges_per_func: z.number().int().positive().optional(), + max_edges_per_func: z.int().positive().optional(), per_func_capped: z.boolean().optional(), }) .passthrough(), @@ -271,7 +271,7 @@ const hexCoordinate = z export const surveySegmentsSchema = z .object({ statistics: z - .object({ total_segments: z.number().int().nonnegative().optional() }) + .object({ total_segments: z.int().nonnegative().optional() }) .passthrough() .optional(), segments: z diff --git a/src/javascript/analysis/JavaScriptAnalysisTransfer.ts b/src/javascript/analysis/JavaScriptAnalysisTransfer.ts index 6a20ca412c..d5437323cd 100644 --- a/src/javascript/analysis/JavaScriptAnalysisTransfer.ts +++ b/src/javascript/analysis/JavaScriptAnalysisTransfer.ts @@ -45,13 +45,13 @@ const recordSchema = z.discriminatedUnion("kind", [ /** Complete-file coordinates authenticated before adopting any worker facts. */ export const javaScriptAnalysisTransferDescriptorSchema = z.strictObject({ - bytes: z.number().int().nonnegative().max(MAX_TRANSFER_BYTES), + bytes: z.int().nonnegative().max(MAX_TRANSFER_BYTES), sha256: digestSchema, - records: z.number().int().nonnegative(), - module_bytes: z.number().int().nonnegative(), - module_records: z.number().int().nonnegative(), - graph_bytes: z.number().int().nonnegative(), - graph_records: z.number().int().nonnegative(), + records: z.int().nonnegative(), + module_bytes: z.int().nonnegative(), + module_records: z.int().nonnegative(), + graph_bytes: z.int().nonnegative(), + graph_records: z.int().nonnegative(), }); type Descriptor = z.output; diff --git a/src/javascript/analysis/JavaScriptAnalysisWorkerProtocol.ts b/src/javascript/analysis/JavaScriptAnalysisWorkerProtocol.ts index c24cadbbf4..5dd7b7da3c 100644 --- a/src/javascript/analysis/JavaScriptAnalysisWorkerProtocol.ts +++ b/src/javascript/analysis/JavaScriptAnalysisWorkerProtocol.ts @@ -24,14 +24,14 @@ export const javaScriptCheckpointCeilingRemediation = ( /** Caller-selected artifact identity, separate from the decoded source-text digest. */ export const javaScriptWorkerRequestSchema = z.strictObject({ id: z.uuid(), - unknown_budget: z.number().int().min(0).max(JAVASCRIPT_SEMANTIC_ITEM_MAXIMUM), - node_budget: z.number().int().min(0).max(JAVASCRIPT_SEMANTIC_ITEM_MAXIMUM), + unknown_budget: z.int().min(0).max(JAVASCRIPT_SEMANTIC_ITEM_MAXIMUM), + node_budget: z.int().min(0).max(JAVASCRIPT_SEMANTIC_ITEM_MAXIMUM), text_sha256: digestSchema, file: z.strictObject({ path: z.string(), sha256: digestSchema, container_sha256: digestSchema, - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), inventory_artifact_id: z.string(), kind: z.literal("javascript"), unpacked: z.boolean(), @@ -41,7 +41,7 @@ export const javaScriptWorkerRequestSchema = z.strictObject({ /** Parent admission after validated static observations have been retained. */ export const javaScriptWorkerAdmissionSchema = z.strictObject({ id: z.uuid(), - semantic_result_budget_bytes: z.number().int().nonnegative(), + semantic_result_budget_bytes: z.int().nonnegative(), }); const identity = { id: z.uuid() }; @@ -51,7 +51,7 @@ export const javaScriptWorkerMessageSchema = z.discriminatedUnion("kind", [ z.strictObject({ kind: z.literal("ready"), // Null when the worker runtime (Bun) does not enforce V8 heap flags. - heap_limit_bytes: z.number().int().positive().nullable(), + heap_limit_bytes: z.int().positive().nullable(), }), z.strictObject({ kind: z.literal("phase"), @@ -61,7 +61,7 @@ export const javaScriptWorkerMessageSchema = z.discriminatedUnion("kind", [ z.strictObject({ kind: z.literal("static"), ...identity, - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), sha256: digestSchema, }), z.strictObject({ diff --git a/src/javascript/analysis/JavaScriptAnalysisWorkerSchemas.ts b/src/javascript/analysis/JavaScriptAnalysisWorkerSchemas.ts index f238ee9700..e4b7f66319 100644 --- a/src/javascript/analysis/JavaScriptAnalysisWorkerSchemas.ts +++ b/src/javascript/analysis/JavaScriptAnalysisWorkerSchemas.ts @@ -17,7 +17,7 @@ import { const range = javaScriptSemanticNodeSchema.shape.identity.shape.source_range.unwrap(); -const count = z.number().int().nonnegative(); +const count = z.int().nonnegative(); const strings = z.array(z.string()); const pathContext = z.enum(["module-specifier", "filesystem-expression"]); const findingContext = { diff --git a/src/javascript/recovery/WakaruReport.ts b/src/javascript/recovery/WakaruReport.ts index 76ef2fb489..b9a828e37a 100644 --- a/src/javascript/recovery/WakaruReport.ts +++ b/src/javascript/recovery/WakaruReport.ts @@ -31,14 +31,11 @@ const reportSchema = z.looseObject({ }), ), warnings: z.array(warningSchema), - total: z.number().int().nonnegative(), - failed: z.number().int().nonnegative(), - elapsed_ms: z.number().int().nonnegative(), + total: z.int().nonnegative(), + failed: z.int().nonnegative(), + elapsed_ms: z.int().nonnegative(), }); -const rangeSchema = z.tuple([ - z.number().int().nonnegative(), - z.number().int().nonnegative(), -]); +const rangeSchema = z.tuple([z.int().nonnegative(), z.int().nonnegative()]); const provenanceSchema = z.looseObject({ format: z.string(), strategy: z.string(), diff --git a/src/javascript/sourceMaps/SourceMapFormat.ts b/src/javascript/sourceMaps/SourceMapFormat.ts index daacf47e05..1db4aed60c 100644 --- a/src/javascript/sourceMaps/SourceMapFormat.ts +++ b/src/javascript/sourceMaps/SourceMapFormat.ts @@ -17,8 +17,8 @@ const leafSchema = z.object({ sourcesContent: z.array(z.string().nullable()).nullable().optional(), names: z.array(z.string()).default([]), mappings: sourceMapMappingsSchema.regex(/^[A-Za-z0-9+/,;]*$/u), - ignoreList: z.array(z.number().int().min(0)).optional(), - x_google_ignoreList: z.array(z.number().int().min(0)).optional(), + ignoreList: z.array(z.int().min(0)).optional(), + x_google_ignoreList: z.array(z.int().min(0)).optional(), }); const mapHeaderSchema = z.object({ version: z.literal(3), @@ -27,8 +27,8 @@ const mapHeaderSchema = z.object({ }); const sectionSchema = z.object({ offset: z.object({ - line: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER), - column: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER), + line: z.int().min(0).max(Number.MAX_SAFE_INTEGER), + column: z.int().min(0).max(Number.MAX_SAFE_INTEGER), }), map: z.unknown().optional(), url: z.unknown().optional(), diff --git a/src/jeb/JebProvider.ts b/src/jeb/JebProvider.ts index 69aa4ea57b..2ea691a761 100644 --- a/src/jeb/JebProvider.ts +++ b/src/jeb/JebProvider.ts @@ -72,7 +72,7 @@ const clientInformation = z success: z.literal(true), version: z.string().optional(), gui_client: z.boolean().optional(), - startup_ts: z.number().int().nonnegative().optional(), + startup_ts: z.int().nonnegative().optional(), message: z.string().nullish(), }) .passthrough(); @@ -85,7 +85,7 @@ const openProject = z input_files: z.array( z.object({ file_name: z.string(), - file_size: z.number().int().nonnegative(), + file_size: z.int().nonnegative(), contents_sha256_hash: z.string(), }), ), diff --git a/src/kuna/KunaProjectCache.ts b/src/kuna/KunaProjectCache.ts index f6319d5e44..99b4cfbdc9 100644 --- a/src/kuna/KunaProjectCache.ts +++ b/src/kuna/KunaProjectCache.ts @@ -87,7 +87,7 @@ export const kunaProjectKey = (inputs: KunaProjectKeyInputs): string => const fileSchema = z.strictObject({ path: z.string().min(1), - bytes: z.number().int().nonnegative(), + bytes: z.int().nonnegative(), sha256: z.string().regex(SHA256_PATTERN), }); @@ -98,7 +98,7 @@ const manifestSchema = z.strictObject({ target_sha256: z.string().regex(SHA256_PATTERN), kuna_sha256: z.string().regex(SHA256_PATTERN), kuna_version: z.string().min(1), - jobs: z.number().int().positive(), + jobs: z.int().positive(), }), files: z.strictObject({ c: fileSchema, @@ -108,8 +108,8 @@ const manifestSchema = z.strictObject({ inventory: fileSchema, }), summary: z.strictObject({ - decompiled: z.number().int().nonnegative(), - failed: z.number().int().nonnegative(), + decompiled: z.int().nonnegative(), + failed: z.int().nonnegative(), }), created_at: z.string().datetime(), }); diff --git a/src/kuna/KunaProjectFiles.ts b/src/kuna/KunaProjectFiles.ts index 5d8974c0ad..2af9dbb771 100644 --- a/src/kuna/KunaProjectFiles.ts +++ b/src/kuna/KunaProjectFiles.ts @@ -180,7 +180,7 @@ const inventorySchema = z.object({ name: z.string(), address_hex: z.string().regex(/^0x[0-9a-f]+$/u), aliases: z.array(z.string()), - size: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER), + size: z.int().nonnegative().max(Number.MAX_SAFE_INTEGER), }), ), }); diff --git a/src/kuna/KunaReferenceFiles.ts b/src/kuna/KunaReferenceFiles.ts index 6170b5c252..c63688bc55 100644 --- a/src/kuna/KunaReferenceFiles.ts +++ b/src/kuna/KunaReferenceFiles.ts @@ -13,7 +13,7 @@ export const KUNA_XREF_OUTPUT_BYTES = 16 * 1024 * 1024; const addressKeys = new Set(["address", "from_address", "to_address"]); const address = z.string().regex(/^0x(?:0|[1-9a-f][0-9a-f]{0,15})$/u); -const count = z.number().int().min(0).max(Number.MAX_SAFE_INTEGER); +const count = z.int().min(0).max(Number.MAX_SAFE_INTEGER); const kind = z.enum(["call", "jump", "data", "read", "write"]); const graphHeader = z.object({ diff --git a/src/kuna/KunaStringInventory.ts b/src/kuna/KunaStringInventory.ts index 0b90ccb363..83fd5ea3de 100644 --- a/src/kuna/KunaStringInventory.ts +++ b/src/kuna/KunaStringInventory.ts @@ -7,7 +7,7 @@ import { compareKunaAddresses } from "./KunaAddress.js"; import { KunaJsonDocumentReader, parseKunaRow } from "./KunaJsonStream.js"; import { KUNA_STRING_MIN_LENGTH } from "./KunaLimits.js"; -const count = z.number().int().min(0).max(Number.MAX_SAFE_INTEGER); +const count = z.int().min(0).max(Number.MAX_SAFE_INTEGER); const address = z.string().regex(/^0x(?:0|[1-9a-f][0-9a-f]{0,15})$/u); const header = z.object({ binary: z.string(), diff --git a/src/native/LldbCallTracer.ts b/src/native/LldbCallTracer.ts index abc5c033a6..47b6ddc3f9 100644 --- a/src/native/LldbCallTracer.ts +++ b/src/native/LldbCallTracer.ts @@ -85,9 +85,9 @@ const BRIDGE = fileURLToPath( const tracedSchema = z.strictObject({ status: z.literal("traced"), version: z.string(), - pid: z.number().int().positive(), + pid: z.int().positive(), outcome: nativeCallProcessOutcomeSchema, - exit_status: z.number().int().nullable(), + exit_status: z.int().nullable(), exit_description: z.string().nullable(), killed: z.boolean(), terminated: z.boolean(), @@ -106,8 +106,8 @@ const tracedSchema = z.strictObject({ resource_limit_reached: z.boolean(), breakpoint_locations_truncated: z.boolean().optional(), target_output: z.strictObject({ - stdout_bytes: z.number().int().nonnegative(), - stderr_bytes: z.number().int().nonnegative(), + stdout_bytes: z.int().nonnegative(), + stderr_bytes: z.int().nonnegative(), stdout_truncated: z.boolean(), stderr_truncated: z.boolean(), stdout_complete: z.boolean(), @@ -116,8 +116,8 @@ const tracedSchema = z.strictObject({ elapsed_ms: z.number().nonnegative(), breakpoints: z.array( z.strictObject({ - index: z.number().int().nonnegative(), - location_count: z.number().int().nonnegative(), + index: z.int().nonnegative(), + location_count: z.int().nonnegative(), locations: z.array(nativeCodeLocationSchema), }), ), diff --git a/src/native/parsers/lipo.ts b/src/native/parsers/lipo.ts index 7f74a51b93..5c60315aa5 100644 --- a/src/native/parsers/lipo.ts +++ b/src/native/parsers/lipo.ts @@ -5,13 +5,13 @@ const architectureSchema = z.object({ name: z.string().min(1), cpu_type: z.string().nullable(), cpu_subtype: z.string().nullable(), - cpu_type_code: z.number().int().nonnegative().nullable(), - cpu_subtype_code: z.number().int().nonnegative().nullable(), - cpu_subtype_base: z.number().int().nonnegative().nullable(), + cpu_type_code: z.int().nonnegative().nullable(), + cpu_subtype_code: z.int().nonnegative().nullable(), + cpu_subtype_base: z.int().nonnegative().nullable(), capabilities: z.string().nullable(), - file_offset: z.number().int().min(0).nullable(), - size: z.number().int().min(0).nullable(), - alignment: z.number().int().min(0).nullable(), + file_offset: z.int().min(0).nullable(), + size: z.int().min(0).nullable(), + alignment: z.int().min(0).nullable(), }); export type LipoArchitecture = z.infer; diff --git a/src/native/pwntools/PwntoolsInputLimit.ts b/src/native/pwntools/PwntoolsInputLimit.ts index e6867e80f9..283b2d0f11 100644 --- a/src/native/pwntools/PwntoolsInputLimit.ts +++ b/src/native/pwntools/PwntoolsInputLimit.ts @@ -12,7 +12,7 @@ export const pwntoolsInputBytesSchema = z .string() .regex(/^[1-9]\d*$/u, "must be a positive decimal integer") .transform(Number) - .pipe(z.number().int().safe().max(MAXIMUM_INPUT_BYTES)); + .pipe(z.int().safe().max(MAXIMUM_INPUT_BYTES)); const CONSTRAINT = `REA_PWNTOOLS_MAX_INPUT_BYTES must be a decimal integer from 1 to ` + diff --git a/src/native/pwntools/PwntoolsResourceLimits.ts b/src/native/pwntools/PwntoolsResourceLimits.ts index 3b379779f8..9d06448c02 100644 --- a/src/native/pwntools/PwntoolsResourceLimits.ts +++ b/src/native/pwntools/PwntoolsResourceLimits.ts @@ -12,16 +12,11 @@ import type { ArtifactResourceScope } from "../../artifacts/ArtifactResourceScop /** Actual limits reported by the owned bridge after lowering inherited soft limits. */ export const pwntoolsResourceLimitsSchema = z.strictObject({ address_space_bytes: z - .number() .int() .nonnegative() .max(PWNTOOLS_LIMITS.addressSpaceBytes), - cpu_seconds: z.number().int().nonnegative().max(PWNTOOLS_LIMITS.cpuSeconds), - file_size_bytes: z - .number() - .int() - .nonnegative() - .max(PWNTOOLS_LIMITS.outputBytes), + cpu_seconds: z.int().nonnegative().max(PWNTOOLS_LIMITS.cpuSeconds), + file_size_bytes: z.int().nonnegative().max(PWNTOOLS_LIMITS.outputBytes), }); /** A missing or invalid report leaves limits unknown and retains its read failure. */ diff --git a/src/process/DarwinProcessRunTokenReader.ts b/src/process/DarwinProcessRunTokenReader.ts index 6ac608aebf..0db490e954 100644 --- a/src/process/DarwinProcessRunTokenReader.ts +++ b/src/process/DarwinProcessRunTokenReader.ts @@ -30,13 +30,13 @@ const responseSchema = z.strictObject({ results: z.array( z.discriminatedUnion("state", [ z.strictObject({ - pid: z.number().int().positive(), + pid: z.int().positive(), state: z.literal("readable"), run_id: z.string().optional(), reason: z.null().optional(), }), z.strictObject({ - pid: z.number().int().positive(), + pid: z.int().positive(), state: z.literal("unavailable"), run_id: z.union([z.string(), z.null()]).optional(), reason: z.string().min(1), @@ -48,28 +48,28 @@ const identityResponseSchema = z.strictObject({ results: z.array( z.discriminatedUnion("state", [ z.strictObject({ - pid: z.number().int().positive(), + pid: z.int().positive(), state: z.literal("absent"), identity: z.null().optional(), reason: z.literal("not-in-snapshot"), }), z.strictObject({ - pid: z.number().int().positive(), + pid: z.int().positive(), state: z.literal("readable"), identity: z.string().min(1), - effective_uid: z.number().int().nonnegative().optional(), + effective_uid: z.int().nonnegative().optional(), lifecycle: z.enum(["non-zombie", "zombie"]).optional(), relation: z .strictObject({ state: z.literal("observed"), - parent_pid: z.number().int().nonnegative(), - process_group_id: z.number().int().nonnegative(), + parent_pid: z.int().nonnegative(), + process_group_id: z.int().nonnegative(), }) .optional(), reason: z.null().optional(), }), z.strictObject({ - pid: z.number().int().positive(), + pid: z.int().positive(), state: z.literal("unavailable"), identity: z.null().optional(), reason: z.string().min(1), diff --git a/src/process/RegexMatcher.ts b/src/process/RegexMatcher.ts index 05a216fda8..58e63d8e2e 100644 --- a/src/process/RegexMatcher.ts +++ b/src/process/RegexMatcher.ts @@ -446,7 +446,7 @@ export const regexWorkerHeapError = ( const replySchema = z.discriminatedUnion("status", [ z.strictObject({ status: z.literal("matched"), - indices: z.array(z.number().int().nonnegative()), + indices: z.array(z.int().nonnegative()), }), z.strictObject({ status: z.literal("invalid_pattern"), reason: z.string() }), ]); diff --git a/src/rust/RustAuditableReader.ts b/src/rust/RustAuditableReader.ts index c8805864a7..d2f561ecf2 100644 --- a/src/rust/RustAuditableReader.ts +++ b/src/rust/RustAuditableReader.ts @@ -23,11 +23,11 @@ const packageSchema = z.strictObject({ version: z.string().min(1), source: z.string().min(1), kind: z.enum(["runtime", "build"]).optional(), - dependencies: z.array(z.number().int().nonnegative()).optional(), + dependencies: z.array(z.int().nonnegative()).optional(), root: z.boolean().optional(), }); const documentVersionSchema = z.object({ - format: z.number().int().nonnegative().max(0xffff_ffff).optional(), + format: z.int().nonnegative().max(0xffff_ffff).optional(), }); const documentSchema = documentVersionSchema .extend({ diff --git a/src/sqlite/SqliteDatabaseInspection.ts b/src/sqlite/SqliteDatabaseInspection.ts index 12e3030aa5..fdd71484b8 100644 --- a/src/sqlite/SqliteDatabaseInspection.ts +++ b/src/sqlite/SqliteDatabaseInspection.ts @@ -630,16 +630,8 @@ export const inspectSqliteDatabaseSnapshot = ( const limits: unknown = db.limits; const supported = z .object({ - length: z - .number() - .int() - .positive() - .max(SQLITE_DATABASE_LIMITS.outputBytes), - sqlLength: z - .number() - .int() - .positive() - .max(SQLITE_DATABASE_LIMITS.outputBytes), + length: z.int().positive().max(SQLITE_DATABASE_LIMITS.outputBytes), + sqlLength: z.int().positive().max(SQLITE_DATABASE_LIMITS.outputBytes), }) .safeParse(limits); if (!supported.success) diff --git a/src/windows/WindowsNativeLoader.ts b/src/windows/WindowsNativeLoader.ts index 4c4289635c..adf59fbd27 100644 --- a/src/windows/WindowsNativeLoader.ts +++ b/src/windows/WindowsNativeLoader.ts @@ -20,7 +20,7 @@ export const windowsFileIdentitySchema = z.strictObject({ filesystem: z.literal("NTFS"), volumeSerial: z.string().regex(/^[a-f0-9]{16}$/u), fileId: z.string().regex(/^[a-f0-9]{32}$/u), - size: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER), + size: z.int().nonnegative().max(Number.MAX_SAFE_INTEGER), directory: z.boolean(), }); diff --git a/src/windows/WindowsOwnedProcess.ts b/src/windows/WindowsOwnedProcess.ts index b0193d0c7c..75ce0ec4be 100644 --- a/src/windows/WindowsOwnedProcess.ts +++ b/src/windows/WindowsOwnedProcess.ts @@ -11,7 +11,7 @@ import { } from "./WindowsNativeLoader.js"; const launchSchema = z.strictObject({ - pid: z.number().int().positive().max(0xffff_ffff), + pid: z.int().positive().max(0xffff_ffff), handle: windowsHandleSchema, jobAssigned: z.literal(true), killOnOwnerClose: z.literal(true), @@ -21,18 +21,14 @@ const pollSchema = z.strictObject({ stderr: z.instanceof(Buffer), stdoutEnded: z.boolean(), stderrEnded: z.boolean(), - exitCode: z.number().int().nonnegative().max(0xffff_ffff).nullable(), - activeProcesses: z.number().int().nonnegative(), + exitCode: z.int().nonnegative().max(0xffff_ffff).nullable(), + activeProcesses: z.int().nonnegative(), }); // A commit-limited job reports its applied limit at launch and its // notification state on every poll; an unlimited job reports neither. const limitedPollSchema = pollSchema.extend({ memoryLimitReached: z.boolean(), - peakJobMemoryBytes: z - .number() - .int() - .nonnegative() - .max(Number.MAX_SAFE_INTEGER), + peakJobMemoryBytes: z.int().nonnegative().max(Number.MAX_SAFE_INTEGER), }); /** Optional native job controls for one owned Windows process tree. */ @@ -194,7 +190,6 @@ export class WindowsOwnedProcess extends EventEmitter { async #writeInput(chunk: unknown): Promise { const bytes = z.instanceof(Buffer).parse(chunk); const written = z - .number() .int() .nonnegative() .max(Number.MAX_SAFE_INTEGER) diff --git a/tests/conformance/readmeConsistency.test.ts b/tests/conformance/readmeConsistency.test.ts index 0d4d41d6fc..da5bb0df0e 100644 --- a/tests/conformance/readmeConsistency.test.ts +++ b/tests/conformance/readmeConsistency.test.ts @@ -1,8 +1,10 @@ -import { readFile, readdir } from "node:fs/promises"; +import { readFile, readdir, writeFile } from "node:fs/promises"; import { resolve } from "node:path"; import { describe, expect, it } from "vitest"; import { PRODUCT_IDENTITY } from "../../src/identity.js"; +import { createTestTempDirectory } from "../fixtures/temporaryDirectory.js"; +import { processTest } from "../support/process/processFixture.js"; const jsonExamples = (content: string): unknown[] => [...content.matchAll(/```json\s*([\s\S]*?)```/gu)].map((match): unknown => @@ -81,3 +83,79 @@ describe("onboarding documentation product facts", () => { } }); }); + +describe("published performance evidence", () => { + const script = resolve( + "experiments/analysis-efficiency/mcp-integer-report.mjs", + ); + const report = resolve( + "experiments/analysis-efficiency/mcp-integer-allocation.md", + ); + processTest( + "keeps generated report facts aligned with committed receipts", + async ({ processes }) => { + const result = await processes.run(process.execPath, [script, "--check"]); + expect(result.exitCode, result.stdout + result.stderr).toBe(0); + }, + ); + for (const section of ["normal", "heap"]) { + processTest( + `rejects stale ${section} measurements without rewriting the report`, + async ({ processes }) => { + const source = await readFile(report, "utf8"); + const begin = ``; + const end = ``; + const start = source.indexOf(begin) + begin.length; + const finish = source.indexOf(end); + const block = source.slice(start, finish); + const stale = block.replace(/\d+\.\d{3}/u, (value) => + (Number(value) + 1).toFixed(3), + ); + expect(stale).not.toBe(block); + const path = resolve( + await createTestTempDirectory("rea-report-stale-"), + "report.md", + ); + const content = source.slice(0, start) + stale + source.slice(finish); + await writeFile(path, content); + const result = await processes.run(process.execPath, [ + script, + "--check", + "--markdown", + path, + ]); + expect(result.exitCode).not.toBe(0); + expect(result.stderr).toContain( + `Generated allocation report differs: ${section}`, + ); + expect(await readFile(path, "utf8")).toBe(content); + }, + ); + } + processTest( + "refuses missing producer markers before writing", + async ({ processes }) => { + const source = await readFile(report, "utf8"); + const content = source.replace( + "", + "", + ); + expect(content).not.toBe(source); + const path = resolve( + await createTestTempDirectory("rea-report-marker-"), + "report.md", + ); + await writeFile(path, content); + const result = await processes.run(process.execPath, [ + script, + "--markdown", + path, + ]); + expect(result.exitCode).not.toBe(0); + expect(result.stderr).toContain( + "Expected one opening report marker: normal", + ); + expect(await readFile(path, "utf8")).toBe(content); + }, + ); +});