Skip to documentation
SLOP

tiny.profiling.reduction

Reference tiny.profiling reduction

Defined in tiny.profiling.

API (29)

Actions

Public operations.

Types and contracts

Public types and contracts.

Values and defaults

Public values and defaults.

No direct callersNo direct callstiny.profilingreduction
Static calls · unresolved targets: unknown · external targets: unknown.

Source

Called byCallstest; no linksrc.profiling.reductiontest: profiling reducer accepts the m...test; no linksrc.profiling.reductiontest: profiling reducer captures pars...test; no linksrc.profiling.reductiontest: profiling reducer compares stru...test; no linksrc.profiling.reductiontest: profiling reducer detects artif...test; no linksrc.profiling.reductiontest: profiling reducer matches sourc...+10 moreprivate; no linksrc.profiling.reductioncaptureOrderedprivate; no linksrc.profiling.reductionorderedExecutionsreductioncapture
Static calls · unresolved targets: 0 · external targets: 3.
Called byCallsNo direct callstest; no linksrc.profiling.reductiontest: profiling reducer domain declar...reductiondirectBenchmarkDomain
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallstest; no linksrc.profiling.reductiontest: profiling reducer captures pars...jsonobjectprivate; no linksrc.profiling.reductionexpectReductionStringprivate; no linksrc.profiling.reductionparseCompleteprivate; no linksrc.profiling.reductionreductionStringprivate; no linksrc.profiling.reductionreductionUsizeprivate; no linksrc.profiling.reductionvalidateReductionMetadatareductionparse
Static calls · unresolved targets: 1 · external targets: 1.
Called byCallsNo direct callersjsonobjectprivate; no linksrc.profiling.reductiondomainBoolreductionparseDomain
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callersprivate; no linksrc.profiling.reductionrelocatedPathreductionrelocate
Static calls · unresolved targets: 0 · external targets: 1.
Called byCallstest; no linksrc.profiling.reductiontest: profiling reducer captures pars...test; no linksrc.profiling.reductiontest: profiling reducer detects artif...test; no linksrc.profiling.reductiontest: profiling reducer enforces decl...reductioncaptureprivate; no linksrc.profiling.reductionverificationExecutionsprivate; no linksrc.profiling.reductionverifyCompletereductionverify
Static calls · unresolved targets: 0 · external targets: 2.
Called byCallsprivate; no linksrc.profiling.reductionrenderReductiontest; no linksrc.profiling.reductiontest: profiling reducer serializer re...private; no linksrc.profiling.reductionvalidateResultForWriteprivate; no linksrc.profiling.reductionwriteCompletereductionwriteJson
Static calls · unresolved targets: 1 · external targets: 5.

Source: src/profiling/reduction.zig

zig
const std = @import("std");const bench = @import("bench");const pretty = @import("pretty");const sys = @import("sys");const fingerprint = @import("root.zig").fingerprint;const host = @import("root.zig").host;const ingest = @import("root.zig").ingest;const json = @import("root.zig").json;const profiling_schema = @import("root.zig").schema;const pretty_json = pretty.json;pub const schema = "tiny.profiling.benchmark-process-reduction/v1";pub const max_processes: usize = host.process.max_executions;pub const max_benchmarks: usize = 256;pub const max_inner_samples: usize = 10_000;pub const bootstrap_iterations: u32 = 1_000;pub const bootstrap_confidence_per_mille: u16 = 950;pub const bootstrap_seed: u64 = 0x5459_5052_4f43_4d45;comptime {    std.debug.assert(max_processes == 100);    std.debug.assert(max_benchmarks > 1);    std.debug.assert(max_inner_samples >= max_processes);    std.debug.assert(bootstrap_iterations > 0);    std.debug.assert(bootstrap_confidence_per_mille == 950);    std.debug.assert(schema.len > 0);}pub const Execution = struct {    index: usize,    acquisition_position: ?usize,    exit_code: i64,    bench_jsonl: []const u8,    structured: []const u8,    structured_bench_path: ?[]const u8 = null,};pub const Artifact = struct {    path: []const u8,    identity: fingerprint.File,};pub const Source = struct {    execution_index: usize,    acquisition_position: ?usize,    structured_bench_path: []const u8,    bench_jsonl: Artifact,    structured: Artifact,};pub const AllocationAttribution = enum {    none,    sample_call,    prepare_owner,};pub const AllocationMaxima = struct {    alloc_count: ?u64 = null,    free_count: ?u64 = null,    alloc_bytes: ?u64 = null,    alloc_count_per_eval: ?u64 = null,    free_count_per_eval: ?u64 = null,    alloc_bytes_per_eval: ?u64 = null,    fn observe(self: *AllocationMaxima, other: AllocationMaxima) void {        inline for (@typeInfo(AllocationMaxima).@"struct".field_names) |field_name| {            const incoming = @field(other, field_name);            const current = @field(self, field_name);            @field(self, field_name) = maxOptional(current, incoming);        }    }};pub const Statistics = struct {    min_ns: u64,    max_ns: u64,    mean_ns: f64,    median_ns: u64,    p75_ns: u64,    p95_ns: u64,    p99_ns: u64,    total_ns: u64,    median_interval: bench.ConfidenceInterval,};pub const Benchmark = struct {    key: []const u8,    suite: []const u8,    id: []const u8,    allocation_attribution: AllocationAttribution,    sample_ns: []const u64,    inner_sample_count: []const u32,    statistics: Statistics,    allocation_maxima: AllocationMaxima,};pub const NotApplicableReason = enum {    fewer_than_two_executions,    outside_direct_benchmark_domain,};pub const NotApplicable = struct {    reason: NotApplicableReason,    process_count: usize,};pub const Complete = struct {    sources: []const Source,    benchmarks: []const Benchmark,};pub const Result = union(enum) {    not_applicable: NotApplicable,    complete: Complete,    pub fn stateName(self: Result) []const u8 {        return @tagName(self);    }    pub fn processCount(self: Result) usize {        return switch (self) {            .not_applicable => |value| value.process_count,            .complete => |value| value.sources.len,        };    }};pub const DomainDeclaration = struct {    benchmark_surface: bool,    direct_execution: bool,    host_profiler: bool,    tracy: bool,    causal: bool,    allocation_trace: bool,    capture_control: bool,};pub fn directBenchmarkDomain(declaration: DomainDeclaration) bool {    return declaration.benchmark_surface and        declaration.direct_execution and        !declaration.host_profiler and        !declaration.tracy and        !declaration.causal and        !declaration.allocation_trace and        !declaration.capture_control;}pub fn parseDomain(value: std.json.Value) !DomainDeclaration {    const object = json.object(value) catch        return error.InvalidBenchmarkReductionDomain;    return .{        .benchmark_surface = try domainBool(object, "benchmark_surface"),        .direct_execution = try domainBool(object, "direct_execution"),        .host_profiler = try domainBool(object, "host_profiler"),        .tracy = try domainBool(object, "tracy"),        .causal = try domainBool(object, "causal"),        .allocation_trace = try domainBool(object, "allocation_trace"),        .capture_control = try domainBool(object, "capture_control"),    };}pub fn writeDomainJson(    out: *pretty_json.Writer,    declaration: DomainDeclaration,) !void {    try out.beginObject();    inline for (@typeInfo(DomainDeclaration).@"struct".field_names) |field| {        try out.objectField(field);        try out.write(@field(declaration, field));    }    try out.endObject();}fn domainBool(object: std.json.ObjectMap, field: []const u8) !bool {    return json.asBool(object.get(field)) orelse        error.InvalidBenchmarkReductionDomain;}const Row = struct {    key: []const u8,    suite: []const u8,    id: []const u8,    source_line: usize,    median_ns: u64,    inner_sample_count: u32,    allocation_attribution: AllocationAttribution,    allocations: AllocationMaxima,};const Process = struct {    source: ?Source,    rows: []const Row,};const ProtocolState = enum {    start,    rows,    end,};const Protocol = struct {    state: ProtocolState = .start,    suite: []const u8 = "",    rows_expected: usize = 0,    rows_remaining: usize = 0,    groups: usize = 0,};pub fn capture(    allocator: std.mem.Allocator,    executions: []const Execution,) !Result {    if (executions.len < 2) return .{ .not_applicable = .{        .reason = .fewer_than_two_executions,        .process_count = executions.len,    } };    if (executions.len > max_processes) return error.TooManyProcesses;    var order_buffer: [max_processes]usize = undefined;    const acquisition_order = try orderedExecutions(&order_buffer, executions);    var statistics = try bench.StatisticsStorage.init(allocator, .{        .samples = max_inner_samples,        .bootstrap_iterations = bootstrap_iterations,    });    defer statistics.deinit(allocator);    statistics.activate();    return try captureOrdered(allocator, &statistics, executions, acquisition_order);}fn captureOrdered(    allocator: std.mem.Allocator,    statistics: *bench.StatisticsStorage,    executions: []const Execution,    acquisition_order: []const usize,) !Result {    const sources = try allocator.alloc(Source, executions.len);    const processes = try allocator.alloc(Process, executions.len);    for (acquisition_order, 0..) |execution_offset, process_index| {        const execution = executions[execution_offset];        if (execution.exit_code != 0) return error.FailedMeasuredProcess;        processes[process_index] = try loadProcess(allocator, statistics, execution);    }    const first_rows = processes[0].rows;    if (first_rows.len == 0) return error.EmptyBenchmarkProtocol;    try validateUniqueRows(first_rows);    const sample_values = try allocator.alloc(u64, first_rows.len * executions.len);    const inner_counts = try allocator.alloc(u32, first_rows.len * executions.len);    const maxima = try allocator.alloc(AllocationMaxima, first_rows.len);    for (first_rows, 0..) |row, index| maxima[index] = row.allocations;    try collectProcesses(        processes,        first_rows,        sources,        sample_values,        inner_counts,        maxima,    );    return .{ .complete = .{        .sources = sources,        .benchmarks = try finishBenchmarks(            allocator,            statistics,            first_rows,            executions.len,            sample_values,            inner_counts,            maxima,        ),    } };}fn collectProcesses(    processes: []const Process,    first_rows: []const Row,    sources: []Source,    sample_values: []u64,    inner_counts: []u32,    maxima: []AllocationMaxima,) !void {    std.debug.assert(processes.len == sources.len);    std.debug.assert(sample_values.len == first_rows.len * processes.len);    for (processes, 0..) |process, process_index| {        if (process.rows.len < first_rows.len) return error.MissingBenchmarkRow;        if (process.rows.len > first_rows.len) return error.BenchmarkSetMismatch;        try validateUniqueRows(process.rows);        sources[process_index] = process.source orelse            return error.MissingBenchmarkArtifact;        for (process.rows) |row| {            const benchmark_index = findRow(first_rows, row.key) orelse                return error.BenchmarkSetMismatch;            try validateShape(first_rows[benchmark_index], row);            const sample_index = benchmark_index * processes.len + process_index;            sample_values[sample_index] = row.median_ns;            inner_counts[sample_index] = row.inner_sample_count;            maxima[benchmark_index].observe(row.allocations);        }    }}fn finishBenchmarks(    allocator: std.mem.Allocator,    storage: *bench.StatisticsStorage,    rows: []const Row,    process_count: usize,    sample_values: []const u64,    inner_counts: []const u32,    maxima: []const AllocationMaxima,) ![]const Benchmark {    const result = try allocator.alloc(Benchmark, rows.len);    for (rows, 0..) |row, index| {        const start = index * process_count;        const samples = sample_values[start..][0..process_count];        const counts = inner_counts[start..][0..process_count];        const stats = try bench.computeSampleStatsWithBootstrap(storage, samples, .{            .iterations = bootstrap_iterations,            .seed = bootstrap_seed,            .confidence_per_mille = bootstrap_confidence_per_mille,        });        result[index] = .{            .key = row.key,            .suite = row.suite,            .id = row.id,            .allocation_attribution = row.allocation_attribution,            .sample_ns = samples,            .inner_sample_count = counts,            .statistics = statisticsFromBench(stats),            .allocation_maxima = maxima[index],        };    }    return result;}fn statisticsFromBench(stats: bench.SampleStats) Statistics {    const intervals = stats.confidence_intervals.?;    std.debug.assert(intervals.iterations == bootstrap_iterations);    std.debug.assert(intervals.seed == bootstrap_seed);    return .{        .min_ns = stats.min_ns,        .max_ns = stats.max_ns,        .mean_ns = stats.mean_ns,        .median_ns = stats.median_ns,        .p75_ns = stats.p75_ns,        .p95_ns = stats.p95_ns,        .p99_ns = stats.p99_ns,        .total_ns = stats.total_ns,        .median_interval = intervals.median_ns,    };}fn orderedExecutions(    buffer: *[max_processes]usize,    executions: []const Execution,) ![]const usize {    if (executions.len > buffer.len) return error.TooManyProcesses;    const result = buffer[0..executions.len];    for (result, 0..) |*slot, index| slot.* = index;    var positioned = false;    for (executions, 0..) |execution, index| {        if (execution.index == 0 or execution.index > executions.len) {            return error.InvalidExecutionOrder;        }        for (executions[0..index]) |previous| {            if (previous.index == execution.index) return error.InvalidExecutionOrder;        }        positioned = positioned or execution.acquisition_position != null;    }    if (positioned) {        for (executions) |execution| {            if (execution.acquisition_position == null) return error.InvalidExecutionOrder;        }    }    std.mem.sort(usize, result, executions, executionLessThan);    for (result[1..], result[0 .. result.len - 1]) |right, left| {        if (executionOrder(executions[right]) == executionOrder(executions[left])) {            return error.InvalidExecutionOrder;        }    }    return result;}fn executionLessThan(executions: []const Execution, left: usize, right: usize) bool {    return executionOrder(executions[left]) < executionOrder(executions[right]);}fn executionOrder(execution: Execution) usize {    return execution.acquisition_position orelse execution.index;}fn loadProcess(    allocator: std.mem.Allocator,    statistics: *bench.StatisticsStorage,    execution: Execution,) !Process {    if (execution.bench_jsonl.len == 0 or execution.structured.len == 0) {        return error.MissingBenchmarkArtifact;    }    const bench_before = fingerprint.inspect(execution.bench_jsonl) catch |err| switch (err) {        error.FileNotFound => return error.MissingBenchmarkArtifact,        else => return err,    };    const bench_text = try sys.fs.readFileAlloc(        allocator,        execution.bench_jsonl,        ingest.model.max_source_bytes,    );    defer allocator.free(bench_text);    const rows = try parseProtocol(allocator, statistics, bench_text);    if (rows.len == 0) return error.EmptyBenchmarkProtocol;    const bench_after = try fingerprint.inspect(execution.bench_jsonl);    if (!std.meta.eql(bench_before, bench_after)) {        return error.ArtifactChangedDuringReduction;    }    const structured_before = fingerprint.inspect(execution.structured) catch |err| switch (err) {        error.FileNotFound => return error.MissingBenchmarkArtifact,        else => return err,    };    const structured_text = try sys.fs.readFileAlloc(        allocator,        execution.structured,        ingest.model.max_source_bytes,    );    defer allocator.free(structured_text);    try verifyStructuredRows(        allocator,        execution.structured_bench_path orelse execution.bench_jsonl,        bench_text,        structured_text,        rows,    );    const structured_after = try fingerprint.inspect(execution.structured);    if (!std.meta.eql(structured_before, structured_after)) {        return error.ArtifactChangedDuringReduction;    }    return .{        .source = .{            .execution_index = execution.index,            .acquisition_position = execution.acquisition_position,            .structured_bench_path = execution.structured_bench_path orelse                execution.bench_jsonl,            .bench_jsonl = .{                .path = execution.bench_jsonl,                .identity = bench_after,            },            .structured = .{                .path = execution.structured,                .identity = structured_after,            },        },        .rows = rows,    };}const RawLine = struct {    bytes: []const u8,    number: usize,};const RawCursor = struct {    lines: std.mem.SplitIterator(u8, .scalar),    line_number: usize = 0,    fn init(text: []const u8) RawCursor {        return .{ .lines = std.mem.splitScalar(u8, text, '\n') };    }    fn at(self: *RawCursor, target: usize) ?RawLine {        if (target <= self.line_number) return null;        while (self.lines.next()) |line| {            self.line_number += 1;            const trimmed = std.mem.trim(u8, line, " \t\r");            if (self.line_number == target and trimmed.len != 0) return .{                .bytes = trimmed,                .number = self.line_number,            };            if (self.line_number == target) return null;        }        return null;    }};fn verifyStructuredRows(    allocator: std.mem.Allocator,    bench_path: []const u8,    bench_text: []const u8,    structured_text: []const u8,    rows: []const Row,) !void {    var raw = RawCursor.init(bench_text);    var seen: [max_benchmarks]bool = @splat(false);    var previous_line: usize = 0;    var structured_lines = std.mem.splitScalar(u8, structured_text, '\n');    while (structured_lines.next()) |line| {        const trimmed = std.mem.trim(u8, line, " \t\r");        if (trimmed.len == 0) continue;        var parsed = std.json.parseFromSlice(std.json.Value, allocator, trimmed, .{}) catch            return error.InvalidStructuredBenchmarkRows;        defer parsed.deinit();        const object = json.object(parsed.value) catch            return error.InvalidStructuredBenchmarkRows;        try requireString(object, "schema", ingest.schema);        const source = json.object(object.get("source") orelse            return error.InvalidStructuredBenchmarkRows) catch            return error.InvalidStructuredBenchmarkRows;        const kind_name = json.string(source.get("kind")) orelse            return error.InvalidStructuredBenchmarkRows;        if (!std.mem.eql(u8, kind_name, "bench_jsonl")) continue;        const source_path = json.string(source.get("path")) orelse            return error.InvalidStructuredBenchmarkRows;        const source_line_u64 = json.asU64(source.get("line")) orelse            return error.InvalidStructuredBenchmarkRows;        const source_line = std.math.cast(usize, source_line_u64) orelse            return error.InvalidStructuredBenchmarkRows;        if (!std.mem.eql(u8, source_path, bench_path) or            source_line <= previous_line)        {            return error.StructuredBenchmarkMismatch;        }        previous_line = source_line;        const row_value = object.get("row") orelse            return error.InvalidStructuredBenchmarkRows;        const row_index = findRowByLine(rows, source_line) orelse {            if (isStrictBenchmarkValue(row_value)) {                return error.StructuredBenchmarkMismatch;            }            continue;        };        if (seen[row_index]) return error.StructuredBenchmarkMismatch;        try verifyStructuredRow(            allocator,            row_value,            raw.at(source_line),        );        seen[row_index] = true;    }    for (seen[0..rows.len]) |matched| {        if (!matched) return error.StructuredBenchmarkMismatch;    }}fn verifyStructuredRow(    allocator: std.mem.Allocator,    structured_row: std.json.Value,    raw_line: ?RawLine,) !void {    const raw = raw_line orelse return error.StructuredBenchmarkMismatch;    std.debug.assert(raw.number > 0);    var parsed_raw = std.json.parseFromSlice(        std.json.Value,        allocator,        raw.bytes,        .{},    ) catch return error.InvalidBenchmarkProtocol;    defer parsed_raw.deinit();    if (!jsonValuesEqual(parsed_raw.value, structured_row)) {        return error.StructuredBenchmarkMismatch;    }}fn findRowByLine(rows: []const Row, line_number: usize) ?usize {    for (rows, 0..) |row, index| {        if (row.source_line == line_number) return index;    }    return null;}fn isStrictBenchmarkValue(value: std.json.Value) bool {    const object = json.object(value) catch return false;    const event = json.string(object.get("event")) orelse return false;    if (!std.mem.eql(u8, event, "bench_end")) return false;    const classification = profiling_schema.classify(object, "bench_jsonl");    return classification.strict and classification.family == .timing;}fn jsonValuesEqual(left: std.json.Value, right: std.json.Value) bool {    const Tag = std.meta.Tag(std.json.Value);    if (@as(Tag, left) != @as(Tag, right)) return false;    return switch (left) {        .null => true,        .bool => |value| value == right.bool,        .integer => |value| value == right.integer,        .float => |value| value == right.float,        .number_string => |value| std.mem.eql(u8, value, right.number_string),        .string => |value| std.mem.eql(u8, value, right.string),        .array => |array| jsonArraysEqual(array, right.array),        .object => |object| jsonObjectsEqual(object, right.object),    };}fn jsonArraysEqual(left: std.json.Array, right: std.json.Array) bool {    if (left.items.len != right.items.len) return false;    for (left.items, right.items) |left_item, right_item| {        if (!jsonValuesEqual(left_item, right_item)) return false;    }    return true;}fn jsonObjectsEqual(left: std.json.ObjectMap, right: std.json.ObjectMap) bool {    if (left.count() != right.count()) return false;    var iterator = left.iterator();    while (iterator.next()) |entry| {        const right_value = right.get(entry.key_ptr.*) orelse return false;        if (!jsonValuesEqual(entry.value_ptr.*, right_value)) return false;    }    return true;}fn parseProtocol(    allocator: std.mem.Allocator,    statistics: *bench.StatisticsStorage,    text: []const u8,) ![]const Row {    var result: std.ArrayList(Row) = .empty;    var protocol = Protocol{};    var lines = std.mem.splitScalar(u8, text, '\n');    var line_number: usize = 0;    while (lines.next()) |line| {        line_number += 1;        const trimmed = std.mem.trim(u8, line, " \t\r");        if (trimmed.len == 0) continue;        var parsed = std.json.parseFromSlice(std.json.Value, allocator, trimmed, .{}) catch            return error.InvalidBenchmarkProtocol;        defer parsed.deinit();        const object = json.object(parsed.value) catch            return error.InvalidBenchmarkProtocol;        const event = json.string(object.get("event")) orelse            return error.InvalidBenchmarkProtocol;        if (std.mem.eql(u8, event, "run_start")) {            try acceptRunStart(allocator, &protocol, object);        } else if (std.mem.eql(u8, event, "bench_end")) {            if (result.items.len >= max_benchmarks) return error.TooManyBenchmarks;            try result.append(allocator, try acceptBenchmark(                allocator,                statistics,                &protocol,                object,                line_number,            ));        } else if (std.mem.eql(u8, event, "run_end")) {            try acceptRunEnd(&protocol, object);        } else {            return error.InvalidBenchmarkProtocol;        }    }    if (protocol.state != .start or protocol.groups == 0) {        if (protocol.state == .start and protocol.groups == 0) return &.{};        return error.InvalidBenchmarkProtocol;    }    return try result.toOwnedSlice(allocator);}fn acceptRunStart(    allocator: std.mem.Allocator,    protocol: *Protocol,    object: std.json.ObjectMap,) !void {    if (protocol.state != .start) return error.InvalidBenchmarkProtocol;    try requireString(object, "protocol", "bench.suite/v1");    const suite = json.string(object.get("suite")) orelse        return error.InvalidBenchmarkProtocol;    if (suite.len == 0) return error.InvalidBenchmarkProtocol;    const definitions = json.asU64(object.get("definitions")) orelse        return error.InvalidBenchmarkProtocol;    const benchmarks = json.asU64(object.get("benchmarks")) orelse        return error.InvalidBenchmarkProtocol;    if (benchmarks > definitions or benchmarks > max_benchmarks) {        return error.InvalidBenchmarkProtocol;    }    protocol.suite = try allocator.dupe(u8, suite);    protocol.rows_expected = @intCast(benchmarks);    protocol.rows_remaining = @intCast(benchmarks);    protocol.state = if (benchmarks == 0) .end else .rows;}fn acceptRunEnd(protocol: *Protocol, object: std.json.ObjectMap) !void {    if (protocol.state != .end) return error.InvalidBenchmarkProtocol;    const benches = json.asU64(object.get("benches")) orelse        return error.InvalidBenchmarkProtocol;    const errors = json.asU64(object.get("errors")) orelse        return error.InvalidBenchmarkProtocol;    if (benches != protocol.rows_expected) return error.InvalidBenchmarkProtocol;    if (errors != 0) return error.FailedBenchmarkProtocol;    protocol.groups = std.math.add(usize, protocol.groups, 1) catch        return error.TooManyBenchmarks;    protocol.state = .start;    protocol.suite = "";    protocol.rows_expected = 0;}fn acceptBenchmark(    allocator: std.mem.Allocator,    statistics: *bench.StatisticsStorage,    protocol: *Protocol,    object: std.json.ObjectMap,    source_line: usize,) !Row {    if (protocol.state != .rows or protocol.rows_remaining == 0) {        return error.InvalidBenchmarkProtocol;    }    try verifyBenchmarkShape(object, protocol.suite);    const id = json.string(object.get("id")) orelse        return error.UnverifiedBenchmarkRow;    const name = json.string(object.get("name")) orelse        return error.UnverifiedBenchmarkRow;    if (id.len == 0 or !std.mem.eql(u8, id, name)) {        return error.UnverifiedBenchmarkRow;    }    const samples = try parseSamples(allocator, object);    defer allocator.free(samples);    const sample_stats = try bench.computeSampleStatsWithBootstrap(        statistics,        samples,        .{ .iterations = 0 },    );    try verifySampleStatistics(object, sample_stats);    protocol.rows_remaining -= 1;    if (protocol.rows_remaining == 0) protocol.state = .end;    const suite = try allocator.dupe(u8, protocol.suite);    const owned_id = try allocator.dupe(u8, id);    return .{        .key = try key(allocator, suite, owned_id),        .suite = suite,        .id = owned_id,        .source_line = source_line,        .median_ns = sample_stats.median_ns,        .inner_sample_count = @intCast(samples.len),        .allocation_attribution = try parseAllocationAttribution(object),        .allocations = try parseAllocationMaxima(object),    };}fn verifyBenchmarkShape(object: std.json.ObjectMap, suite: []const u8) !void {    const classification = profiling_schema.classify(object, "bench_jsonl");    if (classification.family != .timing or !classification.strict) {        return error.UnverifiedBenchmarkRow;    }    inline for (.{        .{ "schema", profiling_schema.metric_schema },        .{ "event", "bench_end" },        .{ "family", "timing" },        .{ "metric", "duration_ns" },        .{ "unit", "ns" },        .{ "aggregation", "sample_distribution" },        .{ "suite", suite },        .{ "path", suite },    }) |expected| try requireString(object, expected[0], expected[1]);    try verifyAgentEvidence(object);    try verifySampleSequence(object);}fn verifyAgentEvidence(object: std.json.ObjectMap) !void {    const evidence = json.object(object.get("agent_evidence") orelse        return error.UnverifiedBenchmarkRow) catch        return error.UnverifiedBenchmarkRow;    inline for (.{        .{ "schema", "tiny.profile-evidence/v1" },        .{ "primary_user", "agent" },        .{ "runner", "lib.bench" },        .{ "decision_state", "distribution_measurement" },    }) |expected| try requireString(evidence, expected[0], expected[1]);    const bias = json.object(evidence.get("bias_repetition") orelse        return error.UnverifiedBenchmarkRow) catch        return error.UnverifiedBenchmarkRow;    try requireString(bias, "process", "in_process_samples");}fn verifySampleSequence(object: std.json.ObjectMap) !void {    const sequence = json.object(object.get("sample_sequence") orelse        return error.UnverifiedBenchmarkRow) catch        return error.UnverifiedBenchmarkRow;    try requireString(sequence, "order", "measured_acquisition_order");    try requireString(sequence, "pairing", "same_index");    try requireString(sequence, "timestamps", "not_recorded");    if (json.asU64(sequence.get("index_origin")) != 0) {        return error.UnverifiedBenchmarkRow;    }    const paired = json.array(sequence.get("paired_fields") orelse        return error.UnverifiedBenchmarkRow) catch        return error.UnverifiedBenchmarkRow;    if (paired.items.len != 2 or        !std.mem.eql(u8, json.string(paired.items[0]) orelse "", "sample_ns") or        !std.mem.eql(u8, json.string(paired.items[1]) orelse "", "sample_total_ns"))    {        return error.UnverifiedBenchmarkRow;    }}fn parseSamples(    allocator: std.mem.Allocator,    object: std.json.ObjectMap,) ![]const u64 {    const values = json.array(object.get("sample_ns") orelse        return error.UnverifiedBenchmarkRow) catch        return error.UnverifiedBenchmarkRow;    const totals = json.array(object.get("sample_total_ns") orelse        return error.UnverifiedBenchmarkRow) catch        return error.UnverifiedBenchmarkRow;    if (values.items.len == 0) return error.UnverifiedBenchmarkRow;    if (values.items.len > max_inner_samples) return error.TooManyInnerSamples;    if (totals.items.len != values.items.len or        json.asU64(object.get("samples")) != values.items.len)    {        return error.UnverifiedBenchmarkRow;    }    const evals = json.asU64(object.get("evals")) orelse        return error.UnverifiedBenchmarkRow;    if (evals == 0 or evals > std.math.maxInt(u32)) {        return error.UnverifiedBenchmarkRow;    }    const result = try allocator.alloc(u64, values.items.len);    for (values.items, totals.items, 0..) |value, total, index| {        result[index] = json.asU64(value) orelse            return error.UnverifiedBenchmarkRow;        const total_ns = json.asU64(total) orelse            return error.UnverifiedBenchmarkRow;        if (total_ns / evals != result[index]) {            return error.UnverifiedBenchmarkRow;        }    }    return result;}fn verifySampleStatistics(    object: std.json.ObjectMap,    stats: bench.SampleStats,) !void {    inline for (.{        .{ "min_ns", stats.min_ns },        .{ "max_ns", stats.max_ns },        .{ "median_ns", stats.median_ns },        .{ "p75_ns", stats.p75_ns },        .{ "p95_ns", stats.p95_ns },        .{ "p99_ns", stats.p99_ns },        .{ "total_ns", stats.total_ns },    }) |expected| {        if (json.asU64(object.get(expected[0])) != expected[1]) {            return error.UnverifiedBenchmarkRow;        }    }}fn parseAllocationAttribution(    object: std.json.ObjectMap,) !AllocationAttribution {    const name = json.string(object.get("allocation_attribution")) orelse        return error.UnverifiedBenchmarkRow;    return std.meta.stringToEnum(AllocationAttribution, name) orelse        error.UnverifiedBenchmarkRow;}fn parseAllocationMaxima(object: std.json.ObjectMap) !AllocationMaxima {    const result = AllocationMaxima{        .alloc_count = try optionalU64(object, "alloc_count"),        .free_count = try optionalU64(object, "free_count"),        .alloc_bytes = try optionalU64(object, "alloc_bytes"),        .alloc_count_per_eval = try optionalU64(object, "alloc_count_per_eval"),        .free_count_per_eval = try optionalU64(object, "free_count_per_eval"),        .alloc_bytes_per_eval = try optionalU64(object, "alloc_bytes_per_eval"),    };    const attribution = try parseAllocationAttribution(object);    inline for (@typeInfo(AllocationMaxima).@"struct".field_names) |field_name| {        const value = @field(result, field_name);        if ((attribution == .none) != (value == null)) {            return error.UnverifiedBenchmarkRow;        }    }    return result;}fn optionalU64(object: std.json.ObjectMap, field: []const u8) !?u64 {    const value = object.get(field) orelse return error.UnverifiedBenchmarkRow;    if (value == .null) return null;    return json.asU64(value) orelse error.UnverifiedBenchmarkRow;}fn requireString(    object: std.json.ObjectMap,    field: []const u8,    expected: []const u8,) !void {    const actual = json.string(object.get(field)) orelse        return error.UnverifiedBenchmarkRow;    if (!std.mem.eql(u8, actual, expected)) return error.UnverifiedBenchmarkRow;}fn key(    allocator: std.mem.Allocator,    suite: []const u8,    id: []const u8,) ![]const u8 {    return try std.fmt.allocPrint(        allocator,        "{d}:{s}{d}:{s}",        .{ suite.len, suite, id.len, id },    );}fn validateUniqueRows(rows: []const Row) !void {    if (rows.len > max_benchmarks) return error.TooManyBenchmarks;    for (rows, 0..) |row, index| {        for (rows[0..index]) |previous| {            if (std.mem.eql(u8, row.key, previous.key)) {                return error.DuplicateBenchmarkRow;            }        }    }}fn findRow(rows: []const Row, key_value: []const u8) ?usize {    for (rows, 0..) |row, index| {        if (std.mem.eql(u8, row.key, key_value)) return index;    }    return null;}fn validateShape(expected: Row, actual: Row) !void {    if (!std.mem.eql(u8, expected.suite, actual.suite) or        !std.mem.eql(u8, expected.id, actual.id) or        expected.allocation_attribution != actual.allocation_attribution)    {        return error.BenchmarkShapeMismatch;    }}fn maxOptional(left: ?u64, right: ?u64) ?u64 {    const left_value = left orelse return right;    const right_value = right orelse return left;    return @max(left_value, right_value);}pub fn parse(    allocator: std.mem.Allocator,    value: std.json.Value,) !Result {    const object = json.object(value) catch        return error.InvalidBenchmarkReduction;    try expectReductionString(object, "schema", schema);    const state = json.string(object.get("state")) orelse        return error.InvalidBenchmarkReduction;    const process_count = try reductionUsize(object, "process_count");    if (process_count > max_processes) return error.InvalidBenchmarkReduction;    if (std.mem.eql(u8, state, "not_applicable")) {        const reason_name = try reductionString(object, "reason");        const reason = std.meta.stringToEnum(            NotApplicableReason,            reason_name,        ) orelse return error.InvalidBenchmarkReduction;        if (reason == .fewer_than_two_executions and process_count >= 2) {            return error.InvalidBenchmarkReduction;        }        return .{ .not_applicable = .{            .reason = reason,            .process_count = process_count,        } };    }    if (!std.mem.eql(u8, state, "complete") or process_count < 2) {        return error.InvalidBenchmarkReduction;    }    try validateReductionMetadata(object);    return .{ .complete = try parseComplete(        allocator,        object,        process_count,    ) };}fn validateReductionMetadata(object: std.json.ObjectMap) !void {    try expectReductionString(        object,        "method",        "median_of_successful_process_medians",    );    const sequence = try reductionObject(object, "sample_sequence");    try expectReductionString(        sequence,        "order",        "measured_process_acquisition_order",    );    try expectReductionString(        sequence,        "value",        "per_process_lib_bench_median_ns",    );    if (json.asU64(sequence.get("index_origin")) != 0) {        return error.InvalidBenchmarkReduction;    }    try validateBootstrapMetadata(object);    try validateSemanticMetadata(object);}fn validateBootstrapMetadata(object: std.json.ObjectMap) !void {    const bootstrap = try reductionObject(object, "bootstrap");    try expectReductionString(bootstrap, "method", "percentile_bootstrap");    if (json.asU64(bootstrap.get("confidence_per_mille")) !=        bootstrap_confidence_per_mille or        json.asU64(bootstrap.get("iterations")) != bootstrap_iterations or        json.asU64(bootstrap.get("seed")) != bootstrap_seed)    {        return error.InvalidBenchmarkReduction;    }}fn validateSemanticMetadata(object: std.json.ObjectMap) !void {    const semantic = try reductionObject(object, "semantic_verification");    try expectReductionString(semantic, "process_exit", "zero");    try expectReductionString(semantic, "runner", "lib.bench");    try expectReductionString(        semantic,        "inner_median",        "recomputed_with_lib_bench",    );    try expectReductionString(        semantic,        "structured_wrapper",        "exact_bench_jsonl_rows",    );}fn parseComplete(    allocator: std.mem.Allocator,    object: std.json.ObjectMap,    process_count: usize,) !Complete {    const sources = try parseSources(allocator, object, process_count);    const values = json.array(object.get("benchmarks") orelse        return error.InvalidBenchmarkReduction) catch        return error.InvalidBenchmarkReduction;    if (values.items.len == 0 or values.items.len > max_benchmarks) {        return error.InvalidBenchmarkReduction;    }    var storage = try bench.StatisticsStorage.init(allocator, .{        .samples = max_processes,        .bootstrap_iterations = bootstrap_iterations,    });    defer storage.deinit(allocator);    storage.activate();    const benchmarks = try allocator.alloc(Benchmark, values.items.len);    for (values.items, 0..) |item, index| {        benchmarks[index] = try parseBenchmark(            allocator,            &storage,            item,            process_count,        );        for (benchmarks[0..index]) |previous| {            if (std.mem.eql(u8, previous.key, benchmarks[index].key)) {                return error.InvalidBenchmarkReduction;            }        }    }    return .{ .sources = sources, .benchmarks = benchmarks };}fn parseSources(    allocator: std.mem.Allocator,    object: std.json.ObjectMap,    process_count: usize,) ![]const Source {    const values = json.array(object.get("sources") orelse        return error.InvalidBenchmarkReduction) catch        return error.InvalidBenchmarkReduction;    if (values.items.len != process_count) {        return error.InvalidBenchmarkReduction;    }    const result = try allocator.alloc(Source, values.items.len);    for (values.items, 0..) |item, index| {        const source = json.object(item) catch            return error.InvalidBenchmarkReduction;        result[index] = .{            .execution_index = try reductionUsize(source, "execution_index"),            .acquisition_position = try reductionOptionalUsize(                source,                "acquisition_position",            ),            .structured_bench_path = try reductionString(                source,                "structured_bench_path",            ),            .bench_jsonl = try parseArtifact(source, "bench_jsonl"),            .structured = try parseArtifact(source, "structured"),        };    }    try validateParsedSources(result);    return result;}fn validateParsedSources(sources: []const Source) !void {    var positioned = false;    for (sources, 0..) |source, index| {        if (source.execution_index == 0 or source.execution_index > sources.len) {            return error.InvalidBenchmarkReduction;        }        if (source.structured_bench_path.len == 0) {            return error.InvalidBenchmarkReduction;        }        for (sources[0..index]) |previous| {            if (source.execution_index == previous.execution_index) {                return error.InvalidBenchmarkReduction;            }        }        positioned = positioned or source.acquisition_position != null;    }    for (sources, 0..) |source, index| {        if (positioned) {            const position = source.acquisition_position orelse                return error.InvalidBenchmarkReduction;            if (position == 0 or                (index != 0 and position <= sources[index - 1].acquisition_position.?))            {                return error.InvalidBenchmarkReduction;            }        } else if (source.execution_index != index + 1) {            return error.InvalidBenchmarkReduction;        }    }}fn parseArtifact(    object: std.json.ObjectMap,    field: []const u8,) !Artifact {    const value = try reductionObject(object, field);    const path = json.string(value.get("path")) orelse        return error.InvalidBenchmarkReduction;    if (path.len == 0) return error.InvalidBenchmarkReduction;    const digest_text = json.string(value.get("sha256")) orelse        return error.InvalidBenchmarkReduction;    return .{        .path = path,        .identity = .{            .bytes = json.asU64(value.get("bytes")) orelse                return error.InvalidBenchmarkReduction,            .sha256 = try parseDigest(digest_text),        },    };}fn parseDigest(value: []const u8) !fingerprint.Digest {    if (value.len != @sizeOf(fingerprint.Digest) * 2) {        return error.InvalidBenchmarkReduction;    }    var result: fingerprint.Digest = undefined;    _ = std.fmt.hexToBytes(&result, value) catch        return error.InvalidBenchmarkReduction;    return result;}fn parseBenchmark(    allocator: std.mem.Allocator,    storage: *bench.StatisticsStorage,    value: std.json.Value,    process_count: usize,) !Benchmark {    const object = json.object(value) catch        return error.InvalidBenchmarkReduction;    const key_value = try reductionString(object, "key");    const suite = try reductionString(object, "suite");    const id = try reductionString(object, "id");    if (key_value.len == 0 or suite.len == 0 or id.len == 0) {        return error.InvalidBenchmarkReduction;    }    const computed_key = try key(allocator, suite, id);    if (!std.mem.eql(u8, key_value, computed_key)) {        return error.InvalidBenchmarkReduction;    }    const attribution_name = try reductionString(        object,        "allocation_attribution",    );    const attribution = std.meta.stringToEnum(        AllocationAttribution,        attribution_name,    ) orelse return error.InvalidBenchmarkReduction;    const samples = try parseU64s(allocator, object, "sample_ns", process_count);    const counts = try parseU32s(        allocator,        object,        "inner_sample_count",        process_count,    );    const recorded_stats = try parseStatistics(object);    try verifyOuterStatistics(storage, samples, recorded_stats);    const maxima = try parseReductionMaxima(object, attribution);    return .{        .key = key_value,        .suite = suite,        .id = id,        .allocation_attribution = attribution,        .sample_ns = samples,        .inner_sample_count = counts,        .statistics = recorded_stats,        .allocation_maxima = maxima,    };}fn parseU64s(    allocator: std.mem.Allocator,    object: std.json.ObjectMap,    field: []const u8,    expected_count: usize,) ![]const u64 {    const values = json.array(object.get(field) orelse        return error.InvalidBenchmarkReduction) catch        return error.InvalidBenchmarkReduction;    if (values.items.len != expected_count) {        return error.InvalidBenchmarkReduction;    }    const result = try allocator.alloc(u64, values.items.len);    for (values.items, result) |value, *slot| {        slot.* = json.asU64(value) orelse            return error.InvalidBenchmarkReduction;    }    return result;}fn parseU32s(    allocator: std.mem.Allocator,    object: std.json.ObjectMap,    field: []const u8,    expected_count: usize,) ![]const u32 {    const values = json.array(object.get(field) orelse        return error.InvalidBenchmarkReduction) catch        return error.InvalidBenchmarkReduction;    if (values.items.len != expected_count) {        return error.InvalidBenchmarkReduction;    }    const result = try allocator.alloc(u32, values.items.len);    for (values.items, result) |value, *slot| {        const count = json.asU64(value) orelse            return error.InvalidBenchmarkReduction;        if (count == 0 or count > max_inner_samples) {            return error.InvalidBenchmarkReduction;        }        slot.* = @intCast(count);    }    return result;}fn parseStatistics(object: std.json.ObjectMap) !Statistics {    const stats = try reductionObject(object, "statistics");    const interval = try reductionObject(stats, "median_interval_95");    const mean = json.asF64(stats.get("mean_ns")) orelse        return error.InvalidBenchmarkReduction;    const low = json.asF64(interval.get("low_ns")) orelse        return error.InvalidBenchmarkReduction;    const high = json.asF64(interval.get("high_ns")) orelse        return error.InvalidBenchmarkReduction;    if (!std.math.isFinite(mean) or !std.math.isFinite(low) or        !std.math.isFinite(high) or mean < 0 or low < 0 or high < low)    {        return error.InvalidBenchmarkReduction;    }    return .{        .min_ns = try reductionU64(stats, "min_ns"),        .max_ns = try reductionU64(stats, "max_ns"),        .mean_ns = mean,        .median_ns = try reductionU64(stats, "median_ns"),        .p75_ns = try reductionU64(stats, "p75_ns"),        .p95_ns = try reductionU64(stats, "p95_ns"),        .p99_ns = try reductionU64(stats, "p99_ns"),        .total_ns = try reductionU64(stats, "total_ns"),        .median_interval = .{ .low_ns = low, .high_ns = high },    };}fn verifyOuterStatistics(    storage: *bench.StatisticsStorage,    samples: []const u64,    recorded: Statistics,) !void {    const computed = try bench.computeSampleStatsWithBootstrap(storage, samples, .{        .iterations = bootstrap_iterations,        .seed = bootstrap_seed,        .confidence_per_mille = bootstrap_confidence_per_mille,    });    if (!statisticsEqual(recorded, statisticsFromBench(computed))) {        return error.InvalidBenchmarkReduction;    }}fn statisticsEqual(left: Statistics, right: Statistics) bool {    return left.min_ns == right.min_ns and        left.max_ns == right.max_ns and        left.mean_ns == right.mean_ns and        left.median_ns == right.median_ns and        left.p75_ns == right.p75_ns and        left.p95_ns == right.p95_ns and        left.p99_ns == right.p99_ns and        left.total_ns == right.total_ns and        left.median_interval.low_ns == right.median_interval.low_ns and        left.median_interval.high_ns == right.median_interval.high_ns;}fn parseReductionMaxima(    object: std.json.ObjectMap,    attribution: AllocationAttribution,) !AllocationMaxima {    const values = try reductionObject(object, "allocation_maxima");    const result = AllocationMaxima{        .alloc_count = try reductionOptionalU64(values, "alloc_count"),        .free_count = try reductionOptionalU64(values, "free_count"),        .alloc_bytes = try reductionOptionalU64(values, "alloc_bytes"),        .alloc_count_per_eval = try reductionOptionalU64(            values,            "alloc_count_per_eval",        ),        .free_count_per_eval = try reductionOptionalU64(            values,            "free_count_per_eval",        ),        .alloc_bytes_per_eval = try reductionOptionalU64(            values,            "alloc_bytes_per_eval",        ),    };    inline for (@typeInfo(AllocationMaxima).@"struct".field_names) |field_name| {        if ((attribution == .none) != (@field(result, field_name) == null)) {            return error.InvalidBenchmarkReduction;        }    }    return result;}fn reductionObject(    object: std.json.ObjectMap,    field: []const u8,) !std.json.ObjectMap {    return json.object(object.get(field) orelse        return error.InvalidBenchmarkReduction) catch        return error.InvalidBenchmarkReduction;}fn reductionString(    object: std.json.ObjectMap,    field: []const u8,) ![]const u8 {    return json.string(object.get(field)) orelse        error.InvalidBenchmarkReduction;}fn expectReductionString(    object: std.json.ObjectMap,    field: []const u8,    expected: []const u8,) !void {    const actual = try reductionString(object, field);    if (!std.mem.eql(u8, actual, expected)) {        return error.InvalidBenchmarkReduction;    }}fn reductionU64(object: std.json.ObjectMap, field: []const u8) !u64 {    return json.asU64(object.get(field)) orelse        error.InvalidBenchmarkReduction;}fn reductionUsize(object: std.json.ObjectMap, field: []const u8) !usize {    const value = try reductionU64(object, field);    return std.math.cast(usize, value) orelse        error.InvalidBenchmarkReduction;}fn reductionOptionalUsize(    object: std.json.ObjectMap,    field: []const u8,) !?usize {    const value = object.get(field) orelse        return error.InvalidBenchmarkReduction;    if (value == .null) return null;    const integer = json.asU64(value) orelse        return error.InvalidBenchmarkReduction;    return std.math.cast(usize, integer) orelse        error.InvalidBenchmarkReduction;}fn reductionOptionalU64(    object: std.json.ObjectMap,    field: []const u8,) !?u64 {    const value = object.get(field) orelse        return error.InvalidBenchmarkReduction;    if (value == .null) return null;    return json.asU64(value) orelse error.InvalidBenchmarkReduction;}pub fn relocate(    allocator: std.mem.Allocator,    result: *Result,    recorded_root: ?[]const u8,    actual_root: []const u8,) !void {    switch (result.*) {        .not_applicable => {},        .complete => |*complete| {            const sources = try allocator.dupe(Source, complete.sources);            for (sources) |*source| {                source.bench_jsonl.path = try relocatedPath(                    allocator,                    source.bench_jsonl.path,                    recorded_root,                    actual_root,                );                source.structured.path = try relocatedPath(                    allocator,                    source.structured.path,                    recorded_root,                    actual_root,                );            }            complete.sources = sources;        },    }}fn relocatedPath(    allocator: std.mem.Allocator,    path: []const u8,    recorded_root: ?[]const u8,    actual_root: []const u8,) ![]const u8 {    const from = recorded_root orelse return path;    if (std.mem.eql(u8, from, actual_root) or        !pathHasPrefix(path, from)) return path;    return try std.fmt.allocPrint(        allocator,        "{s}{s}",        .{ actual_root, path[from.len..] },    );}fn pathHasPrefix(path: []const u8, prefix: []const u8) bool {    if (prefix.len == 0 or !std.mem.startsWith(u8, path, prefix)) return false;    if (path.len == prefix.len) return true;    return path[prefix.len] == std.fs.path.sep;}pub fn verify(    allocator: std.mem.Allocator,    recorded: Result,    executions: []const Execution,    direct_benchmark_domain: bool,) !void {    if (!direct_benchmark_domain) {        const outside = switch (recorded) {            .complete => return error.ReductionDomainMismatch,            .not_applicable => |value| value,        };        if (outside.reason != .outside_direct_benchmark_domain or            outside.process_count != executions.len)        {            return error.ReductionDomainMismatch;        }        return;    }    if (recorded == .not_applicable and        recorded.not_applicable.reason == .outside_direct_benchmark_domain)    {        return error.ReductionDomainMismatch;    }    var arena_state = std.heap.ArenaAllocator.init(allocator);    defer arena_state.deinit();    const verification_executions = try verificationExecutions(        arena_state.allocator(),        recorded,        executions,    );    const current = try capture(arena_state.allocator(), verification_executions);    switch (recorded) {        .not_applicable => |left| switch (current) {            .not_applicable => |right| {                if (!std.meta.eql(left, right)) return error.ReductionMismatch;            },            .complete => return error.ReductionMismatch,        },        .complete => |left| switch (current) {            .not_applicable => return error.ReductionMismatch,            .complete => |right| try verifyComplete(left, right),        },    }}fn verificationExecutions(    allocator: std.mem.Allocator,    recorded: Result,    executions: []const Execution,) ![]const Execution {    const complete = switch (recorded) {        .not_applicable => return executions,        .complete => |value| value,    };    if (complete.sources.len != executions.len) return error.ReductionMismatch;    const result = try allocator.dupe(Execution, executions);    for (result) |*execution| {        const source = findSource(complete.sources, execution.index) orelse            return error.ReductionMismatch;        execution.structured_bench_path = source.structured_bench_path;    }    return result;}fn findSource(sources: []const Source, execution_index: usize) ?Source {    for (sources) |source| {        if (source.execution_index == execution_index) return source;    }    return null;}fn verifyComplete(recorded: Complete, current: Complete) !void {    if (recorded.sources.len != current.sources.len or        recorded.benchmarks.len != current.benchmarks.len)    {        return error.ReductionMismatch;    }    for (recorded.sources, current.sources) |left, right| {        if (left.execution_index != right.execution_index or            left.acquisition_position != right.acquisition_position or            !std.mem.eql(                u8,                left.structured_bench_path,                right.structured_bench_path,            ) or            !std.mem.eql(u8, left.bench_jsonl.path, right.bench_jsonl.path) or            !std.mem.eql(u8, left.structured.path, right.structured.path))        {            return error.ReductionMismatch;        }        if (!std.meta.eql(left.bench_jsonl.identity, right.bench_jsonl.identity) or            !std.meta.eql(left.structured.identity, right.structured.identity))        {            return error.ArtifactDigestMismatch;        }    }    for (recorded.benchmarks, current.benchmarks) |left, right| {        if (!benchmarkEqual(left, right)) return error.ReductionMismatch;    }}fn benchmarkEqual(left: Benchmark, right: Benchmark) bool {    return std.mem.eql(u8, left.key, right.key) and        std.mem.eql(u8, left.suite, right.suite) and        std.mem.eql(u8, left.id, right.id) and        left.allocation_attribution == right.allocation_attribution and        std.mem.eql(u64, left.sample_ns, right.sample_ns) and        std.mem.eql(u32, left.inner_sample_count, right.inner_sample_count) and        statisticsEqual(left.statistics, right.statistics) and        std.meta.eql(left.allocation_maxima, right.allocation_maxima);}pub fn writeJson(out: *pretty_json.Writer, result: Result) !void {    try validateResultForWrite(result);    try out.beginObject();    try out.objectField("schema");    try out.write(schema);    try out.objectField("state");    try out.write(result.stateName());    try out.objectField("process_count");    try out.write(result.processCount());    switch (result) {        .not_applicable => |value| {            try out.objectField("reason");            try out.write(@tagName(value.reason));        },        .complete => |value| try writeComplete(out, value),    }    try out.endObject();}fn validateResultForWrite(result: Result) !void {    if (result.processCount() > max_processes) {        return error.InvalidBenchmarkReduction;    }    switch (result) {        .not_applicable => |value| {            if (value.reason == .fewer_than_two_executions and                value.process_count >= 2)            {                return error.InvalidBenchmarkReduction;            }        },        .complete => |value| {            if (value.sources.len < 2 or value.benchmarks.len == 0 or                value.benchmarks.len > max_benchmarks)            {                return error.InvalidBenchmarkReduction;            }            try validateParsedSources(value.sources);            for (value.benchmarks) |benchmark_value| {                if (benchmark_value.key.len == 0 or                    benchmark_value.suite.len == 0 or                    benchmark_value.id.len == 0 or                    benchmark_value.sample_ns.len != value.sources.len or                    benchmark_value.inner_sample_count.len != value.sources.len)                {                    return error.InvalidBenchmarkReduction;                }                for (benchmark_value.inner_sample_count) |count| {                    if (count == 0 or count > max_inner_samples) {                        return error.InvalidBenchmarkReduction;                    }                }            }        },    }}fn writeComplete(out: *pretty_json.Writer, value: Complete) !void {    try out.objectField("method");    try out.write("median_of_successful_process_medians");    try out.objectField("sample_sequence");    try writeSampleSequenceJson(out);    try out.objectField("bootstrap");    try writeBootstrapJson(out);    try out.objectField("semantic_verification");    try writeSemanticVerificationJson(out);    try out.objectField("sources");    try out.beginArray();    for (value.sources) |source| try writeSourceJson(out, source);    try out.endArray();    try out.objectField("benchmarks");    try out.beginArray();    for (value.benchmarks) |benchmark_value| {        try writeBenchmarkJson(out, benchmark_value);    }    try out.endArray();}fn writeSampleSequenceJson(out: *pretty_json.Writer) !void {    try out.beginObject();    try out.objectField("order");    try out.write("measured_process_acquisition_order");    try out.objectField("index_origin");    try out.write(0);    try out.objectField("value");    try out.write("per_process_lib_bench_median_ns");    try out.endObject();}fn writeBootstrapJson(out: *pretty_json.Writer) !void {    try out.beginObject();    try out.objectField("method");    try out.write("percentile_bootstrap");    try out.objectField("confidence_per_mille");    try out.write(bootstrap_confidence_per_mille);    try out.objectField("iterations");    try out.write(bootstrap_iterations);    try out.objectField("seed");    try out.write(bootstrap_seed);    try out.endObject();}fn writeSemanticVerificationJson(out: *pretty_json.Writer) !void {    try out.beginObject();    try out.objectField("process_exit");    try out.write("zero");    try out.objectField("runner");    try out.write("lib.bench");    try out.objectField("inner_median");    try out.write("recomputed_with_lib_bench");    try out.objectField("structured_wrapper");    try out.write("exact_bench_jsonl_rows");    try out.endObject();}fn writeSourceJson(out: *pretty_json.Writer, source: Source) !void {    try out.beginObject();    try out.objectField("execution_index");    try out.write(source.execution_index);    try out.objectField("acquisition_position");    try out.write(source.acquisition_position);    try out.objectField("structured_bench_path");    try out.write(source.structured_bench_path);    try out.objectField("bench_jsonl");    try writeArtifactJson(out, source.bench_jsonl);    try out.objectField("structured");    try writeArtifactJson(out, source.structured);    try out.endObject();}fn writeArtifactJson(out: *pretty_json.Writer, artifact: Artifact) !void {    const digest = artifact.identity.hex();    try out.beginObject();    try out.objectField("path");    try out.write(artifact.path);    try out.objectField("bytes");    try out.write(artifact.identity.bytes);    try out.objectField("sha256");    try out.write(digest[0..]);    try out.endObject();}fn writeBenchmarkJson(out: *pretty_json.Writer, value: Benchmark) !void {    try out.beginObject();    try out.objectField("key");    try out.write(value.key);    try out.objectField("suite");    try out.write(value.suite);    try out.objectField("id");    try out.write(value.id);    try out.objectField("allocation_attribution");    try out.write(@tagName(value.allocation_attribution));    try out.objectField("sample_ns");    try writeU64s(out, value.sample_ns);    try out.objectField("inner_sample_count");    try writeU32s(out, value.inner_sample_count);    try out.objectField("statistics");    try writeStatisticsJson(out, value.statistics);    try out.objectField("allocation_maxima");    try writeAllocationMaximaJson(out, value.allocation_maxima);    try out.endObject();}fn writeStatisticsJson(out: *pretty_json.Writer, value: Statistics) !void {    try out.beginObject();    try out.objectField("min_ns");    try out.write(value.min_ns);    try out.objectField("max_ns");    try out.write(value.max_ns);    try out.objectField("mean_ns");    try out.write(value.mean_ns);    try out.objectField("median_ns");    try out.write(value.median_ns);    try out.objectField("p75_ns");    try out.write(value.p75_ns);    try out.objectField("p95_ns");    try out.write(value.p95_ns);    try out.objectField("p99_ns");    try out.write(value.p99_ns);    try out.objectField("total_ns");    try out.write(value.total_ns);    try out.objectField("median_interval_95");    try out.beginObject();    try out.objectField("low_ns");    try out.write(value.median_interval.low_ns);    try out.objectField("high_ns");    try out.write(value.median_interval.high_ns);    try out.endObject();    try out.endObject();}fn writeAllocationMaximaJson(    out: *pretty_json.Writer,    value: AllocationMaxima,) !void {    try out.beginObject();    inline for (@typeInfo(AllocationMaxima).@"struct".field_names) |field_name| {        try out.objectField(field_name);        try out.write(@field(value, field_name));    }    try out.endObject();}fn writeU64s(out: *pretty_json.Writer, values: []const u64) !void {    try out.beginArray();    for (values) |value| try out.write(value);    try out.endArray();}fn writeU32s(out: *pretty_json.Writer, values: []const u32) !void {    try out.beginArray();    for (values) |value| try out.write(value);    try out.endArray();}const TestBenchmark = struct {    id: []const u8,    sample_ns: u64,    sample_total_ns: ?u64 = null,    evals: u32 = 1,    allocation_attribution: AllocationAttribution = .none,    allocation_value: u64 = 0,    large_integer: ?u64 = null,};const TestGroup = struct {    suite: []const u8,    benchmarks: []const TestBenchmark,};fn testProtocol(    allocator: std.mem.Allocator,    groups: []const TestGroup,) ![]u8 {    var output: std.Io.Writer.Allocating = .init(allocator);    defer output.deinit();    for (groups) |group| {        try writeTestRunStart(&output.writer, group);        for (group.benchmarks) |benchmark_value| {            try writeTestBenchmark(&output.writer, group.suite, benchmark_value);        }        try writeTestRunEnd(&output.writer, group.benchmarks.len);    }    return try output.toOwnedSlice();}fn writeTestRunStart(writer: *std.Io.Writer, group: TestGroup) !void {    var out = pretty_json.Writer.init(writer, .minified);    try out.beginObject();    try out.objectField("event");    try out.write("run_start");    try out.objectField("protocol");    try out.write("bench.suite/v1");    try out.objectField("suite");    try out.write(group.suite);    try out.objectField("definitions");    try out.write(group.benchmarks.len);    try out.objectField("benchmarks");    try out.write(group.benchmarks.len);    try out.endObject();    try writer.writeByte('\n');}fn writeTestBenchmark(    writer: *std.Io.Writer,    suite: []const u8,    value: TestBenchmark,) !void {    var out = pretty_json.Writer.init(writer, .minified);    try out.beginObject();    try writeTestBenchmarkIdentity(&out, suite, value.id);    try writeTestBenchmarkSamples(&out, value);    try writeTestBenchmarkEvidence(&out);    try writeTestBenchmarkAllocations(&out, value);    if (value.large_integer) |large_integer| {        try out.objectField("large_integer");        try out.write(large_integer);    }    try out.endObject();    try writer.writeByte('\n');}fn writeTestBenchmarkIdentity(    out: *pretty_json.Writer,    suite: []const u8,    id: []const u8,) !void {    inline for (.{        .{ "schema", profiling_schema.metric_schema },        .{ "event", "bench_end" },        .{ "family", "timing" },        .{ "metric", "duration_ns" },        .{ "unit", "ns" },        .{ "aggregation", "sample_distribution" },        .{ "id", id },        .{ "path", suite },        .{ "name", id },        .{ "suite", suite },    }) |field| {        try out.objectField(field[0]);        try out.write(field[1]);    }}fn writeTestBenchmarkSamples(    out: *pretty_json.Writer,    value: TestBenchmark,) !void {    const total_ns = value.sample_total_ns orelse        value.sample_ns * value.evals;    try out.objectField("samples");    try out.write(1);    try out.objectField("evals");    try out.write(value.evals);    try out.objectField("sample_ns");    try writeU64s(out, &.{value.sample_ns});    try out.objectField("sample_total_ns");    try writeU64s(out, &.{total_ns});    try out.objectField("sample_sequence");    try writeTestInnerSequence(out);    try writeTestPointStatistics(out, value.sample_ns);}fn writeTestInnerSequence(out: *pretty_json.Writer) !void {    try out.beginObject();    try out.objectField("order");    try out.write("measured_acquisition_order");    try out.objectField("index_origin");    try out.write(0);    try out.objectField("pairing");    try out.write("same_index");    try out.objectField("paired_fields");    try out.beginArray();    try out.write("sample_ns");    try out.write("sample_total_ns");    try out.endArray();    try out.objectField("timestamps");    try out.write("not_recorded");    try out.endObject();}fn writeTestPointStatistics(out: *pretty_json.Writer, value: u64) !void {    try out.objectField("min_ns");    try out.write(value);    try out.objectField("max_ns");    try out.write(value);    try out.objectField("mean_ns");    try out.write(@as(f64, @floatFromInt(value)));    try out.objectField("median_ns");    try out.write(value);    try out.objectField("p75_ns");    try out.write(value);    try out.objectField("p95_ns");    try out.write(value);    try out.objectField("p99_ns");    try out.write(value);    try out.objectField("total_ns");    try out.write(value);}fn writeTestBenchmarkEvidence(out: *pretty_json.Writer) !void {    try out.objectField("agent_evidence");    try out.beginObject();    try out.objectField("schema");    try out.write("tiny.profile-evidence/v1");    try out.objectField("primary_user");    try out.write("agent");    try out.objectField("runner");    try out.write("lib.bench");    try out.objectField("decision_state");    try out.write("distribution_measurement");    try out.objectField("bias_repetition");    try out.beginObject();    try out.objectField("process");    try out.write("in_process_samples");    try out.endObject();    try out.endObject();}fn writeTestBenchmarkAllocations(    out: *pretty_json.Writer,    value: TestBenchmark,) !void {    try out.objectField("allocation_attribution");    try out.write(@tagName(value.allocation_attribution));    const observed: ?u64 = if (value.allocation_attribution == .none)        null    else        value.allocation_value;    inline for (@typeInfo(AllocationMaxima).@"struct".field_names) |field_name| {        try out.objectField(field_name);        try out.write(observed);    }}fn writeTestRunEnd(writer: *std.Io.Writer, benchmark_count: usize) !void {    var out = pretty_json.Writer.init(writer, .minified);    try out.beginObject();    try out.objectField("event");    try out.write("run_end");    try out.objectField("benches");    try out.write(benchmark_count);    try out.objectField("errors");    try out.write(0);    try out.endObject();    try writer.writeByte('\n');}fn testStructured(    allocator: std.mem.Allocator,    bench_path: []const u8,    protocol: []const u8,    include_envelopes: bool,) ![]u8 {    var output: std.Io.Writer.Allocating = .init(allocator);    defer output.deinit();    var lines = std.mem.splitScalar(u8, protocol, '\n');    var line_number: usize = 0;    while (lines.next()) |line| {        line_number += 1;        const trimmed = std.mem.trim(u8, line, " \t\r");        if (trimmed.len == 0) continue;        var parsed = try std.json.parseFromSlice(            std.json.Value,            allocator,            trimmed,            .{},        );        defer parsed.deinit();        if (!include_envelopes and !isStrictBenchmarkValue(parsed.value)) continue;        try writeTestStructuredRow(            &output.writer,            bench_path,            line_number,            trimmed,        );    }    return try output.toOwnedSlice();}fn writeTestStructuredRow(    writer: *std.Io.Writer,    bench_path: []const u8,    line_number: usize,    raw: []const u8,) !void {    var out = pretty_json.Writer.init(writer, .minified);    try out.beginObject();    try out.objectField("schema");    try out.write(ingest.schema);    try out.objectField("source");    try out.beginObject();    try out.objectField("kind");    try out.write("bench_jsonl");    try out.objectField("path");    try out.write(bench_path);    try out.objectField("line");    try out.write(line_number);    try out.endObject();    try out.objectField("row");    try out.raw(raw);    try out.endObject();    try writer.writeByte('\n');}fn testRoot(    allocator: std.mem.Allocator,    temporary: *std.testing.TmpDir,) ![]const u8 {    return try temporary.parent_dir.realPathFileAlloc(        std.Options.debug_io,        temporary.sub_path[0..],        allocator,    );}fn writeTestExecution(    allocator: std.mem.Allocator,    root: []const u8,    index: usize,    acquisition_position: ?usize,    groups: []const TestGroup,    include_envelopes: bool,) !Execution {    const bench_name = try std.fmt.allocPrint(allocator, "bench-{d}.jsonl", .{index});    const structured_name = try std.fmt.allocPrint(        allocator,        "structured-{d}.jsonl",        .{index},    );    const bench_path = try std.fs.path.join(allocator, &.{ root, bench_name });    const structured_path = try std.fs.path.join(        allocator,        &.{ root, structured_name },    );    const protocol = try testProtocol(allocator, groups);    try sys.fs.writeFile(bench_path, protocol);    try sys.fs.writeFile(        structured_path,        try testStructured(            allocator,            bench_path,            protocol,            include_envelopes,        ),    );    return .{        .index = index,        .acquisition_position = acquisition_position,        .exit_code = 0,        .bench_jsonl = bench_path,        .structured = structured_path,    };}fn renderReduction(    allocator: std.mem.Allocator,    result: Result,) ![]u8 {    var output: std.Io.Writer.Allocating = .init(allocator);    defer output.deinit();    var out = pretty_json.Writer.init(&output.writer, .minified);    try writeJson(&out, result);    return try output.toOwnedSlice();}fn requireComplete(result: Result) !Complete {    return switch (result) {        .not_applicable => error.ExpectedCompleteReduction,        .complete => |value| value,    };}fn replaceTestFile(    allocator: std.mem.Allocator,    path: []const u8,    needle: []const u8,    replacement: []const u8,) !void {    const original = try sys.fs.readFileAlloc(        allocator,        path,        ingest.model.max_source_bytes,    );    const changed = try std.mem.replaceOwned(        u8,        allocator,        original,        needle,        replacement,    );    if (std.mem.eql(u8, original, changed)) return error.TestReplacementMissing;    try sys.fs.writeFile(path, changed);}fn writeTestPair(    allocator: std.mem.Allocator,    root: []const u8,    first: []const TestGroup,    second: []const TestGroup,    include_envelopes: bool,) ![2]Execution {    return .{        try writeTestExecution(            allocator,            root,            1,            null,            first,            include_envelopes,        ),        try writeTestExecution(            allocator,            root,            2,            null,            second,            include_envelopes,        ),    };}test "profiling reducer single execution is not applicable" {    const executions = [_]Execution{.{        .index = 1,        .acquisition_position = null,        .exit_code = 0,        .bench_jsonl = "missing",        .structured = "missing",    }};    const result = try capture(std.testing.allocator, &executions);    try std.testing.expectEqual(        NotApplicableReason.fewer_than_two_executions,        result.not_applicable.reason,    );    try std.testing.expectEqual(@as(usize, 1), result.processCount());}test "profiling reducer enforces declared domain state" {    const executions = [_]Execution{        .{            .index = 1,            .acquisition_position = null,            .exit_code = 0,            .bench_jsonl = "missing-one",            .structured = "missing-one",        },        .{            .index = 2,            .acquisition_position = null,            .exit_code = 0,            .bench_jsonl = "missing-two",            .structured = "missing-two",        },    };    const outside = Result{ .not_applicable = .{        .reason = .outside_direct_benchmark_domain,        .process_count = executions.len,    } };    try verify(std.testing.allocator, outside, &executions, false);    try std.testing.expectError(        error.ReductionDomainMismatch,        verify(std.testing.allocator, outside, &executions, true),    );    const downgraded = Result{ .not_applicable = .{        .reason = .fewer_than_two_executions,        .process_count = 0,    } };    try std.testing.expectError(        error.ReductionDomainMismatch,        verify(std.testing.allocator, downgraded, &.{}, false),    );}test "profiling reducer domain declaration excludes every profiled mode" {    const ordinary = DomainDeclaration{        .benchmark_surface = true,        .direct_execution = true,        .host_profiler = false,        .tracy = false,        .causal = false,        .allocation_trace = false,        .capture_control = false,    };    try std.testing.expect(directBenchmarkDomain(ordinary));    inline for (.{        "benchmark_surface",        "direct_execution",    }) |field_name| {        var excluded = ordinary;        @field(excluded, field_name) = false;        try std.testing.expect(!directBenchmarkDomain(excluded));    }    inline for (.{        "host_profiler",        "tracy",        "causal",        "allocation_trace",        "capture_control",    }) |field_name| {        var excluded = ordinary;        @field(excluded, field_name) = true;        try std.testing.expect(!directBenchmarkDomain(excluded));    }}test "profiling reducer captures parses and verifies two processes" {    var temporary = std.testing.tmpDir(.{});    defer temporary.cleanup();    var arena_state = std.heap.ArenaAllocator.init(std.testing.allocator);    defer arena_state.deinit();    const allocator = arena_state.allocator();    const root = try testRoot(allocator, &temporary);    const first_rows = [_]TestBenchmark{.{ .id = "parse", .sample_ns = 10 }};    const second_rows = [_]TestBenchmark{.{ .id = "parse", .sample_ns = 20 }};    const first_groups = [_]TestGroup{.{        .suite = "suite",        .benchmarks = &first_rows,    }};    const second_groups = [_]TestGroup{.{        .suite = "suite",        .benchmarks = &second_rows,    }};    const executions = [_]Execution{        try writeTestExecution(allocator, root, 1, null, &first_groups, false),        try writeTestExecution(allocator, root, 2, null, &second_groups, false),    };    const result = try capture(allocator, &executions);    const complete = try requireComplete(result);    try std.testing.expectEqualSlices(        u64,        &.{ 10, 20 },        complete.benchmarks[0].sample_ns,    );    const document = try std.json.parseFromSliceLeaky(        std.json.Value,        allocator,        try renderReduction(allocator, result),        .{},    );    const reparsed = try parse(allocator, document);    try verify(allocator, reparsed, &executions, true);    const downgraded = Result{ .not_applicable = .{        .reason = .outside_direct_benchmark_domain,        .process_count = executions.len,    } };    try std.testing.expectError(        error.ReductionDomainMismatch,        verify(allocator, downgraded, &executions, true),    );}test "profiling reducer accepts the maximum process bound" {    var temporary = std.testing.tmpDir(.{});    defer temporary.cleanup();    var arena_state = std.heap.ArenaAllocator.init(std.testing.allocator);    defer arena_state.deinit();    const allocator = arena_state.allocator();    const root = try testRoot(allocator, &temporary);    var executions: [max_processes]Execution = undefined;    for (&executions, 0..) |*execution, index| {        const rows = [_]TestBenchmark{.{            .id = "maximum",            .sample_ns = index + 1,        }};        const groups = [_]TestGroup{.{            .suite = "suite",            .benchmarks = &rows,        }};        execution.* = try writeTestExecution(            allocator,            root,            index + 1,            null,            &groups,            false,        );    }    const complete = try requireComplete(try capture(allocator, &executions));    try std.testing.expectEqual(max_processes, complete.sources.len);    try std.testing.expectEqual(max_processes, complete.benchmarks[0].sample_ns.len);}test "profiling reducer rejects one process beyond the bound" {    var executions: [max_processes + 1]Execution = undefined;    for (&executions, 0..) |*execution, index| execution.* = .{        .index = index + 1,        .acquisition_position = null,        .exit_code = 0,        .bench_jsonl = "missing",        .structured = "missing",    };    try std.testing.expectError(        error.TooManyProcesses,        capture(std.testing.allocator, &executions),    );}test "profiling reducer preserves measured acquisition order" {    var temporary = std.testing.tmpDir(.{});    defer temporary.cleanup();    var arena_state = std.heap.ArenaAllocator.init(std.testing.allocator);    defer arena_state.deinit();    const allocator = arena_state.allocator();    const root = try testRoot(allocator, &temporary);    const first_rows = [_]TestBenchmark{.{ .id = "ordered", .sample_ns = 30 }};    const second_rows = [_]TestBenchmark{.{ .id = "ordered", .sample_ns = 10 }};    const third_rows = [_]TestBenchmark{.{ .id = "ordered", .sample_ns = 20 }};    const first_groups = [_]TestGroup{.{ .suite = "suite", .benchmarks = &first_rows }};    const second_groups = [_]TestGroup{.{ .suite = "suite", .benchmarks = &second_rows }};    const third_groups = [_]TestGroup{.{ .suite = "suite", .benchmarks = &third_rows }};    const executions = [_]Execution{        try writeTestExecution(allocator, root, 3, 4, &third_groups, false),        try writeTestExecution(allocator, root, 1, 7, &first_groups, false),        try writeTestExecution(allocator, root, 2, 1, &second_groups, false),    };    const complete = try requireComplete(try capture(allocator, &executions));    try std.testing.expectEqualSlices(        u64,        &.{ 10, 20, 30 },        complete.benchmarks[0].sample_ns,    );    try std.testing.expectEqual(@as(usize, 2), complete.sources[0].execution_index);    try std.testing.expectEqual(@as(usize, 3), complete.sources[1].execution_index);    try std.testing.expectEqual(@as(usize, 1), complete.sources[2].execution_index);}test "profiling reducer rejects failed missing and empty repeated processes" {    var arena_state = std.heap.ArenaAllocator.init(std.testing.allocator);    defer arena_state.deinit();    const allocator = arena_state.allocator();    const failed = [_]Execution{        .{            .index = 1,            .acquisition_position = null,            .exit_code = 9,            .bench_jsonl = "missing",            .structured = "missing",        },        .{            .index = 2,            .acquisition_position = null,            .exit_code = 0,            .bench_jsonl = "missing",            .structured = "missing",        },    };    try std.testing.expectError(        error.FailedMeasuredProcess,        capture(allocator, &failed),    );    var missing = failed;    missing[0].exit_code = 0;    try std.testing.expectError(        error.MissingBenchmarkArtifact,        capture(allocator, &missing),    );    var temporary = std.testing.tmpDir(.{});    defer temporary.cleanup();    const root = try testRoot(allocator, &temporary);    var empty: [2]Execution = undefined;    for (&empty, 0..) |*execution, index| {        const bench_path = try std.fs.path.join(            allocator,            &.{ root, try std.fmt.allocPrint(allocator, "empty-{d}", .{index}) },        );        const structured_path = try std.fs.path.join(            allocator,            &.{ root, try std.fmt.allocPrint(allocator, "empty-s-{d}", .{index}) },        );        try sys.fs.writeFile(bench_path, "");        try sys.fs.writeFile(structured_path, "");        execution.* = .{            .index = index + 1,            .acquisition_position = null,            .exit_code = 0,            .bench_jsonl = bench_path,            .structured = structured_path,        };    }    try std.testing.expectError(        error.EmptyBenchmarkProtocol,        capture(allocator, &empty),    );}test "profiling reducer rejects missing duplicate and mismatched benchmark keys" {    var temporary = std.testing.tmpDir(.{});    defer temporary.cleanup();    var arena_state = std.heap.ArenaAllocator.init(std.testing.allocator);    defer arena_state.deinit();    const allocator = arena_state.allocator();    const root = try testRoot(allocator, &temporary);    const two_rows = [_]TestBenchmark{        .{ .id = "a", .sample_ns = 10 },        .{ .id = "b", .sample_ns = 20 },    };    const one_row = [_]TestBenchmark{.{ .id = "a", .sample_ns = 11 }};    const first = [_]TestGroup{.{ .suite = "suite", .benchmarks = &two_rows }};    const missing_second = [_]TestGroup{.{        .suite = "suite",        .benchmarks = &one_row,    }};    const missing_pair = try writeTestPair(        allocator,        root,        &first,        &missing_second,        false,    );    try std.testing.expectError(        error.MissingBenchmarkRow,        capture(allocator, &missing_pair),    );    const duplicate_rows = [_]TestBenchmark{        .{ .id = "a", .sample_ns = 10 },        .{ .id = "a", .sample_ns = 20 },    };    const duplicate_group = [_]TestGroup{.{        .suite = "duplicate",        .benchmarks = &duplicate_rows,    }};    const duplicate_pair = try writeTestPair(        allocator,        root,        &duplicate_group,        &duplicate_group,        false,    );    try std.testing.expectError(        error.DuplicateBenchmarkRow,        capture(allocator, &duplicate_pair),    );    const other_row = [_]TestBenchmark{.{ .id = "c", .sample_ns = 11 }};    const other_group = [_]TestGroup{.{ .suite = "suite", .benchmarks = &other_row }};    const one_group = [_]TestGroup{.{ .suite = "suite", .benchmarks = &one_row }};    const mismatched_pair = try writeTestPair(        allocator,        root,        &one_group,        &other_group,        false,    );    try std.testing.expectError(        error.BenchmarkSetMismatch,        capture(allocator, &mismatched_pair),    );}test "profiling reducer rejects benchmark shape changes" {    var temporary = std.testing.tmpDir(.{});    defer temporary.cleanup();    var arena_state = std.heap.ArenaAllocator.init(std.testing.allocator);    defer arena_state.deinit();    const allocator = arena_state.allocator();    const root = try testRoot(allocator, &temporary);    const untracked = [_]TestBenchmark{.{ .id = "shape", .sample_ns = 10 }};    const tracked = [_]TestBenchmark{.{        .id = "shape",        .sample_ns = 20,        .allocation_attribution = .sample_call,        .allocation_value = 2,    }};    const first = [_]TestGroup{.{ .suite = "suite", .benchmarks = &untracked }};    const second = [_]TestGroup{.{ .suite = "suite", .benchmarks = &tracked }};    const executions = try writeTestPair(allocator, root, &first, &second, false);    try std.testing.expectError(        error.BenchmarkShapeMismatch,        capture(allocator, &executions),    );}test "profiling reducer matches source lines across multiple suite groups" {    var temporary = std.testing.tmpDir(.{});    defer temporary.cleanup();    var arena_state = std.heap.ArenaAllocator.init(std.testing.allocator);    defer arena_state.deinit();    const allocator = arena_state.allocator();    const root = try testRoot(allocator, &temporary);    const first_a = [_]TestBenchmark{.{ .id = "a", .sample_ns = 10 }};    const first_b = [_]TestBenchmark{.{ .id = "b", .sample_ns = 30 }};    const second_a = [_]TestBenchmark{.{ .id = "a", .sample_ns = 20 }};    const second_b = [_]TestBenchmark{.{ .id = "b", .sample_ns = 40 }};    const first = [_]TestGroup{        .{ .suite = "one", .benchmarks = &first_a },        .{ .suite = "two", .benchmarks = &first_b },    };    const second = [_]TestGroup{        .{ .suite = "one", .benchmarks = &second_a },        .{ .suite = "two", .benchmarks = &second_b },    };    const executions = try writeTestPair(allocator, root, &first, &second, true);    const complete = try requireComplete(try capture(allocator, &executions));    try std.testing.expectEqual(@as(usize, 2), complete.benchmarks.len);    try std.testing.expectEqualSlices(        u64,        &.{ 10, 20 },        complete.benchmarks[0].sample_ns,    );    try std.testing.expectEqualSlices(        u64,        &.{ 30, 40 },        complete.benchmarks[1].sample_ns,    );}test "profiling reducer rejects structured row and source line mismatches" {    var temporary = std.testing.tmpDir(.{});    defer temporary.cleanup();    var arena_state = std.heap.ArenaAllocator.init(std.testing.allocator);    defer arena_state.deinit();    const allocator = arena_state.allocator();    const root = try testRoot(allocator, &temporary);    const rows = [_]TestBenchmark{.{ .id = "wrapper", .sample_ns = 10 }};    const groups = [_]TestGroup{.{ .suite = "suite", .benchmarks = &rows }};    var executions = try writeTestPair(allocator, root, &groups, &groups, false);    try replaceTestFile(        allocator,        executions[0].structured,        "\"sample_ns\":[10]",        "\"sample_ns\":[11]",    );    try std.testing.expectError(        error.StructuredBenchmarkMismatch,        capture(allocator, &executions),    );    executions = try writeTestPair(allocator, root, &groups, &groups, false);    try replaceTestFile(        allocator,        executions[0].structured,        "\"line\":2",        "\"line\":3",    );    try std.testing.expectError(        error.StructuredBenchmarkMismatch,        capture(allocator, &executions),    );    executions = try writeTestPair(allocator, root, &groups, &groups, false);    try sys.fs.writeFile(executions[0].structured, "");    try std.testing.expectError(        error.StructuredBenchmarkMismatch,        capture(allocator, &executions),    );}test "profiling reducer compares structured numeric values without rounding" {    var temporary = std.testing.tmpDir(.{});    defer temporary.cleanup();    var arena_state = std.heap.ArenaAllocator.init(std.testing.allocator);    defer arena_state.deinit();    const allocator = arena_state.allocator();    const root = try testRoot(allocator, &temporary);    const rows = [_]TestBenchmark{.{        .id = "large",        .sample_ns = 10,        .large_integer = 9_007_199_254_740_993,    }};    const groups = [_]TestGroup{.{ .suite = "suite", .benchmarks = &rows }};    const executions = try writeTestPair(allocator, root, &groups, &groups, false);    try replaceTestFile(        allocator,        executions[0].structured,        "\"large_integer\":9007199254740993",        "\"large_integer\":9007199254740992.0",    );    try std.testing.expectError(        error.StructuredBenchmarkMismatch,        capture(allocator, &executions),    );}test "profiling reducer rejects contradictory paired sample totals" {    var temporary = std.testing.tmpDir(.{});    defer temporary.cleanup();    var arena_state = std.heap.ArenaAllocator.init(std.testing.allocator);    defer arena_state.deinit();    const allocator = arena_state.allocator();    const root = try testRoot(allocator, &temporary);    const bad_rows = [_]TestBenchmark{.{        .id = "pairing",        .sample_ns = 10,        .sample_total_ns = 22,        .evals = 2,    }};    const good_rows = [_]TestBenchmark{.{        .id = "pairing",        .sample_ns = 10,        .sample_total_ns = 20,        .evals = 2,    }};    const bad = [_]TestGroup{.{ .suite = "suite", .benchmarks = &bad_rows }};    const good = [_]TestGroup{.{ .suite = "suite", .benchmarks = &good_rows }};    const executions = try writeTestPair(allocator, root, &bad, &good, false);    try std.testing.expectError(        error.UnverifiedBenchmarkRow,        capture(allocator, &executions),    );}test "profiling reducer rejects protocol bench count mismatch" {    var temporary = std.testing.tmpDir(.{});    defer temporary.cleanup();    var arena_state = std.heap.ArenaAllocator.init(std.testing.allocator);    defer arena_state.deinit();    const allocator = arena_state.allocator();    const root = try testRoot(allocator, &temporary);    const rows = [_]TestBenchmark{.{ .id = "protocol", .sample_ns = 10 }};    const groups = [_]TestGroup{.{ .suite = "suite", .benchmarks = &rows }};    const executions = try writeTestPair(allocator, root, &groups, &groups, false);    try replaceTestFile(        allocator,        executions[0].bench_jsonl,        "\"benches\":1",        "\"benches\":2",    );    try std.testing.expectError(        error.InvalidBenchmarkProtocol,        capture(allocator, &executions),    );}test "profiling reducer detects artifact mutation during analysis verification" {    var temporary = std.testing.tmpDir(.{});    defer temporary.cleanup();    var arena_state = std.heap.ArenaAllocator.init(std.testing.allocator);    defer arena_state.deinit();    const allocator = arena_state.allocator();    const root = try testRoot(allocator, &temporary);    const rows = [_]TestBenchmark{.{ .id = "digest", .sample_ns = 10 }};    const groups = [_]TestGroup{.{ .suite = "suite", .benchmarks = &rows }};    const executions = try writeTestPair(allocator, root, &groups, &groups, false);    const recorded = try capture(allocator, &executions);    try sys.fs.appendFile(executions[1].structured, &.{" "});    try std.testing.expectError(        error.ArtifactDigestMismatch,        verify(allocator, recorded, &executions, true),    );}test "profiling reducer serializer rejects impossible receipt states" {    const invalid = Result{ .not_applicable = .{        .reason = .fewer_than_two_executions,        .process_count = 2,    } };    var output: std.Io.Writer.Allocating = .init(std.testing.allocator);    defer output.deinit();    var out = pretty_json.Writer.init(&output.writer, .minified);    try std.testing.expectError(        error.InvalidBenchmarkReduction,        writeJson(&out, invalid),    );}

Source: src/profiling/root.zig:50

zig
pub const reduction = @import("reduction.zig");

Complete caller list for reduction.capture

15 direct callers.

Audit

Definitions30
Public names30
Members54
Version26.7.0
Revisiondaab053ee433