Skip to documentation
SLOP

tiny.closure.qualify

Reference tiny.closure qualify

Defined in tiny.closure.

API (27)

Actions

Public operations.

Types and contracts

Public types and contracts.

Values and defaults

Public values and defaults.

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

Source

Source: lib/closure/src/qualify/model.zig:55

zig
pub const Bound = struct {    name: schema.Name,    value: u64,};

Source: lib/closure/src/qualify/model.zig:29

zig
pub const BuildMode = enum(u8) {    debug,    release_safe,    release_fast,    release_small,};

Source: lib/closure/src/qualify/model.zig:36

zig
pub const CapacityCase = enum(u8) {    none,    at_capacity,    over_capacity,};

Source: lib/closure/src/qualify/model.zig:94

zig
pub const Capture = enum(u8) {    complete,    truncated,    capacity_arithmetic_overflow,    unsupported,    insufficient_samples,    missing_threshold,    explorer_frontier_exhausted,    trace_capacity_exceeded,};

Source: lib/closure/src/qualify/model.zig:60

zig
pub const Cell = struct {    id: schema.Name,    owner: schema.Name,    requirement: Requirement,    kind: CellKind,    evidence: EvidenceKind,    workload: schema.Descriptor,    phase: schema.Phase,    scale: u64,    build_mode: BuildMode,    fault: schema.Descriptor,    overload_counter: schema.Name,    loss_counter: schema.Name,    bound_start: u16,    bound_count: u16,    seed_start: u16,    seed_count: u16,    repetitions: u32,    threshold: Threshold,    capacity_case: CapacityCase,    capacity: u64,    work_max: u64,    trace_steps_max: u64,};

Source: lib/closure/src/qualify/model.zig:14

zig
pub const CellKind = enum(u8) {    correctness,    slo,};

Source: lib/closure/src/qualify/model.zig:19

zig
pub const EvidenceKind = enum(u8) {    proof,    finite_exhaustive,    simulation,    qemu,    hardware,    assumption,    measurement,};

Source: lib/closure/src/qualify/model.zig:172

zig
pub const Frozen = struct {    plan: Plan,    sha256: schema.Digest,    bytes: []const u8,};

Source: lib/closure/src/qualify/model.zig:113

zig
pub const OutcomeCounts = struct {    offered: u64,    accepted: u64,    completed: u64,    rejected: u64,    dropped: u64,    outstanding: u64,};

Source: lib/closure/src/qualify/model.zig:85

zig
pub const Plan = struct {    claim: schema.Descriptor,    artifact_sha256: schema.Digest,    execution_profile_sha256: schema.Digest,    cells: []const Cell,    bounds: []const Bound,    seeds: []const u64,};

Source: lib/closure/src/qualify/model.zig:9

zig
pub const Requirement = enum(u8) {    required,    excluded,};

Source: lib/closure/src/qualify/model.zig:142

zig
pub const Row = struct {    cell: schema.Name,    evidence: EvidenceKind,    verdict: schema.Verdict,    capture: Capture,    contract_pass: bool,    outcomes: OutcomeCounts,    before_digest: schema.Digest,    after_digest: schema.Digest,    effect_before_digest: schema.Digest,    effect_after_digest: schema.Digest,    high_water: u64,    work: u64,    allocation_count_after_seal: u64,    storage_address_before: usize,    storage_address_after: usize,    storage_capacity_before: u64,    storage_capacity_after: u64,    transition: Transition,    overload_count_before: u64,    overload_count_after: u64,    loss_count_before: u64,    loss_count_after: u64,    undeclared_effect_count: u64,    undeclared_state_change_count: u64,    statistics: Statistics,    evidence_path: schema.Descriptor,    trace_path: schema.Descriptor,};

Source: lib/closure/src/qualify/model.zig:122

zig
pub const Statistics = struct {    present: bool = false,    interval_present: bool = false,    interleaved: bool = false,    baseline_profile_sha256: schema.Digest = schema.Digest.zero(),    candidate_profile_sha256: schema.Digest = schema.Digest.zero(),    sample_count: u32 = 0,    baseline_count: u32 = 0,    candidate_count: u32 = 0,    minimum: i64 = 0,    p50: i64 = 0,    p95: i64 = 0,    p99: i64 = 0,    maximum: i64 = 0,    interval_low: i64 = 0,    interval_high: i64 = 0,    baseline_high_water: u64 = 0,    candidate_high_water: u64 = 0,};

Source: lib/closure/src/qualify/model.zig:178

zig
pub const Summary = struct {    verdict: schema.Verdict,    passed: u16,    refuted: u16,    inconclusive: u16,    not_exercised: u16,    work: u64,    high_water: u64,    allocation_count_after_seal: u64,};

Source: lib/closure/src/qualify/model.zig:49

zig
pub const Threshold = struct {    kind: ThresholdKind,    value: i64 = 0,    confidence_ppm: u32 = 0,};

Source: lib/closure/src/qualify/model.zig:42

zig
pub const ThresholdKind = enum(u8) {    none,    correctness,    absolute_max,    baseline_delta_max,};

Source: lib/closure/src/qualify/model.zig:105

zig
pub const Transition = enum(u8) {    none,    reject,    drop,    replace,    backpressure,};

Source: lib/closure/src/qualify/encode.zig:12

zig
pub fn freeze(    plan: model.Plan,    output: []u8,) Error!model.Frozen {    try owner.validatePlan(plan);    const length = try json.measure(writePlan, .{plan});    if (length > output.len or        length > model.plan_bytes_max)    {        return error.ReceiptCapacityExceeded;    }    const encoded = try json.render(        output,        length,        writePlan,        .{plan},    );    var plan_digest = schema.Digest.zero();    std.crypto.hash.sha2.Sha256.hash(        encoded,        &plan_digest.bytes,        .{},    );    return .{        .plan = plan,        .sha256 = plan_digest,        .bytes = encoded,    };}
Called byCallstest sourcelib.closure.src.qualify.encodetest: qualification encoding prefligh...test sourcelib.closure.src.qualify.encodetest: qualification plan and receipt ...qualifyvalidatePlanreceipt.jsonmeasurequalifyfreeze
Static calls · unresolved targets: 0 · external targets: 2.

Source: lib/closure/src/qualify/encode.zig:42

zig
pub fn receipt(    frozen: model.Frozen,    rows: []const model.Row,    output: []u8,) Error![]const u8 {    const summary = try owner.evaluate(frozen, rows);    const length = try json.measure(        writeReceipt,        .{ frozen, rows, summary },    );    if (length > output.len or        length > model.receipt_bytes_max)    {        return error.ReceiptCapacityExceeded;    }    return try json.render(        output,        length,        writeReceipt,        .{ frozen, rows, summary },    );}
Called byCallstest sourcelib.closure.src.qualify.encodetest: qualification plan and receipt ...qualifyevaluatereceipt.jsonmeasurequalifyreceipt
Static calls · unresolved targets: 0 · external targets: 1.

Source: lib/closure/src/qualify/model.zig:4

zig
pub const bounds_max: usize = 256;

Source: lib/closure/src/qualify/model.zig:3

zig
pub const cells_max: usize = 64;

Source: lib/closure/src/qualify/model.zig:6

zig
pub const plan_bytes_max: usize = 256 * 1_024;

Source: lib/closure/src/qualify/model.zig:7

zig
pub const receipt_bytes_max: usize = 512 * 1_024;

Source: lib/closure/src/qualify/model.zig:5

zig
pub const seeds_max: usize = 256;

Source: lib/closure/src/qualify/owner.zig:132

zig
pub fn classify(    cell: *const model.Cell,    row: *const model.Row,) schema.Verdict {    if (cell.requirement == .excluded) return .not_exercised;    if (row.capture != .complete) return .inconclusive;    if (cell.threshold.kind == .none) return .inconclusive;    if (cell.evidence == .assumption) return .inconclusive;    if (!evidenceComplete(cell, row)) return .refuted;    if (!row.contract_pass) return .refuted;    return switch (cell.kind) {        .correctness => if (cell.threshold.kind == .correctness)            .pass        else            .inconclusive,        .slo => sloVerdict(cell, row.statistics),    };}
Called byCallsqualifyevaluatetest sourcelib.closure.src.qualify.ownertest: qualification refutes broken co...test sourcelib.closure.src.qualify.ownertest: qualification rejects vacuous p...test sourcelib.closure.src.qualify.ownertest: qualification requires declared...test sourcelib.closure.src.qualify.ownertest: qualification requires interval...private sourcelib.closure.src.qualify.ownerevidenceCompleteprivate sourcelib.closure.src.qualify.ownersloVerdictqualifyclassify
Static calls · unresolved targets: 0 · external targets: 0.

Source: lib/closure/src/qualify/owner.zig:58

zig
pub fn evaluate(    frozen: model.Frozen,    rows: []const model.Row,) Error!model.Summary {    try validatePlan(frozen.plan);    if (!frozen.sha256.isKnown()) return error.PlanDigestMissing;    if (rows.len != frozen.plan.cells.len) {        return error.ResultCountMismatch;    }    var summary = model.Summary{        .verdict = .pass,        .passed = 0,        .refuted = 0,        .inconclusive = 0,        .not_exercised = 0,        .work = 0,        .high_water = 0,        .allocation_count_after_seal = 0,    };    for (frozen.plan.cells, rows, 0..) |*cell, *row, index| {        if (!cell.id.eql(&row.cell)) return error.ResultOrderMismatch;        if (row.evidence != cell.evidence) return error.EvidenceMismatch;        var expected = classify(cell, row);        if (expected == .pass and            cell.capacity_case != .none and            !pairEvidenceEquivalent(                frozen.plan,                rows,                index,            ))        {            expected = .refuted;        }        if (expected == .pass and            cell.kind == .slo and            (!row.statistics.baseline_profile_sha256.eql(                &frozen.plan.execution_profile_sha256,            ) or                !row.statistics.candidate_profile_sha256.eql(                    &frozen.plan.execution_profile_sha256,                )))        {            expected = .refuted;        }        if (row.verdict != expected) return error.VerdictMismatch;        switch (row.verdict) {            .pass => summary.passed += 1,            .refuted => summary.refuted += 1,            .inconclusive => summary.inconclusive += 1,            .not_exercised => summary.not_exercised += 1,        }        if (cell.requirement == .required) {            summary.work = std.math.add(                u64,                summary.work,                row.work,            ) catch std.math.maxInt(u64);            summary.high_water = @max(summary.high_water, row.high_water);            summary.allocation_count_after_seal = std.math.add(                u64,                summary.allocation_count_after_seal,                row.allocation_count_after_seal,            ) catch std.math.maxInt(u64);        }    }    summary.verdict = if (summary.refuted != 0)        .refuted    else if (summary.inconclusive != 0)        .inconclusive    else        .pass;    return summary;}
Called byCallsqualifyreceipttest sourcelib.closure.src.qualify.ownertest: qualification binds SLO evidenc...test sourcelib.closure.src.qualify.ownertest: qualification evaluates paired ...test sourcelib.closure.src.qualify.ownertest: qualification forces incomplete...test sourcelib.closure.src.qualify.ownertest: qualification leaves excluded c...+2 morequalifyclassifyprivate sourcelib.closure.src.qualify.ownerpairEvidenceEquivalentqualifyvalidatePlanqualifyevaluate
Static calls · unresolved targets: 1 · external targets: 4.

Source: lib/closure/src/qualify/owner.zig:24

zig
pub fn validatePlan(plan: model.Plan) Error!void {    if (plan.cells.len == 0) return error.PlanEmpty;    if (plan.cells.len > model.cells_max or        plan.bounds.len > model.bounds_max or        plan.seeds.len > model.seeds_max)    {        return error.CellCapacityExceeded;    }    if (plan.claim.isEmpty() or        !plan.artifact_sha256.isKnown() or        !plan.execution_profile_sha256.isKnown())    {        return error.PlanDigestMissing;    }    var required_count: u16 = 0;    var work_max: u64 = 0;    for (plan.cells, 0..) |*cell, index| {        try validateCell(plan, cell);        if (cell.requirement == .required) {            required_count += 1;            work_max = std.math.add(                u64,                work_max,                cell.work_max,            ) catch return error.PlanWorkOverflow;        }        for (plan.cells[0..index]) |*prior| {            if (cell.id.eql(&prior.id)) return error.CellDuplicate;        }    }    if (required_count == 0) return error.PlanRequiredMissing;    try validateCapacityPairs(plan);}
Called byCallsqualifyfreezequalifyevaluatetest sourcelib.closure.src.qualify.ownertest: qualification evaluates paired ...test sourcelib.closure.src.qualify.ownertest: qualification records missing t...test sourcelib.closure.src.qualify.ownertest: qualification rejects an unpair...+2 moreprivate sourcelib.closure.src.qualify.ownervalidateCapacityPairsprivate sourcelib.closure.src.qualify.ownervalidateCellqualifyvalidatePlan
Static calls · unresolved targets: 0 · external targets: 4.

Source: lib/closure/src/qualify/root.zig

zig
const model = @import("model.zig");const owner = @import("owner.zig");const encode = @import("encode.zig");pub const Bound = model.Bound;pub const BuildMode = model.BuildMode;pub const CapacityCase = model.CapacityCase;pub const Capture = model.Capture;pub const Cell = model.Cell;pub const CellKind = model.CellKind;pub const EvidenceKind = model.EvidenceKind;pub const Frozen = model.Frozen;pub const OutcomeCounts = model.OutcomeCounts;pub const Plan = model.Plan;pub const Requirement = model.Requirement;pub const Row = model.Row;pub const Statistics = model.Statistics;pub const Summary = model.Summary;pub const Threshold = model.Threshold;pub const ThresholdKind = model.ThresholdKind;pub const Transition = model.Transition;pub const bounds_max = model.bounds_max;pub const cells_max = model.cells_max;pub const plan_bytes_max = model.plan_bytes_max;pub const receipt_bytes_max = model.receipt_bytes_max;pub const seeds_max = model.seeds_max;pub const classify = owner.classify;pub const freeze = encode.freeze;pub const receipt = encode.receipt;pub const evaluate = owner.evaluate;pub const validatePlan = owner.validatePlan;

Source: lib/closure/src/root.zig:18

zig
pub const qualify = @import("qualify/root.zig");

Complete caller list for qualify.evaluate

7 direct callers.

Complete caller list for qualify.validatePlan

7 direct callers.

Audit

Definitions28
Public names28
Members129
Version26.7.0
Revisiondaab053ee433