Skip to content

Admit exact value-evidence comparisons #65

Description

@iperev

Status

Deferred candidate. This issue preserves the proposed contract; it is not implementation authority. Promotion requires a real producer-to-consumer round trip.

Problem

Proofkit can admit proof shape but has no dedicated generic record for exact comparison of a measured value against prior baseline evidence. Adding a public command before a real producer and downstream consumer exist would be speculative API.

Promotion Predicate

Promote only after all are available:

  • a real execution-receipt producer with an owner projection binding witness and metric identities;
  • a real baseline value-evidence producer;
  • a downstream consumer that admits the emitted baseline projection;
  • producer-output-to-downstream-admission round-trip fixtures;
  • an explicit decision whether compact proof consumers receive or intentionally omit value evidence.

Candidate Command And Record

Add a separate value-evidence-admission command with tagged proofkit.value-evidence.v1 input. Do not reinterpret existing proof receipt or requirement-binding fields.

Each comparison binds valueEvidenceId, witnessId, executionReceiptRef, baselineEvidenceRef, metricId, measurementVersion, direction, comparator, observed value, corpus identity/digest, corpus size, run count, dispersion, optional compatibility policy, and additive non-claims.

The typed reference catalog is a discriminated union of execution receipts and prior value-evidence records. For each entry, evidenceRef and sourceDigest equal SHA-256 of the canonical admitted semantic projection. Resolve each reference once into immutable records. Require witness and metric equality across execution, current comparison, and baseline; reject self-baselines.

Numeric And Unit Contract

Use exact canonical decimal strings: no exponent, leading plus, unnecessary leading/trailing zero, negative zero, rounding, or binary-float fallback; precision <= 38 and scale <= 18. Reject overflow. Units are (unitId, exponent). Metric values use exponent 1. Dispersion is exactly standard deviation, variance, or coefficient of variation with dimensionally valid units. Corpus size and run count are at least two.

For higher-is-better, pass when observed >= baseline - allowed delta. For lower-is-better, pass when observed <= baseline + allowed delta. Direction and operator must agree.

Required Falsifiers

  • equality and just-inside/outside boundaries in both directions;
  • unsafe float counterexamples and precision/scale/carry overflow;
  • mixed units and invalid dispersion dimensions;
  • missing, duplicate, self, wrong-kind, witness-mismatched, metric-mismatched, and digest-spoofed refs;
  • corpus/version mismatch with and without explicit policy;
  • JSON representation variants retain identity while semantic mutation changes it;
  • caller mutation after admission cannot change comparison;
  • actual emitted baseline projection round-trips through downstream admission.

Non-Claims

Arithmetic consistency does not authenticate producers, prove benchmark execution, corpus completeness, source freshness, product improvement, merge approval, release, rollout, or production readiness.

Rollback

Remove the new command, versioned contract, family-catalog row, requirement/binding/witness owners, and tests. Existing receipt and binding admission remains byte-compatible.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions