Skip to main content

Evaluation provenance

This page describes the provenance available for automated practice reviews. The Java model and Liquibase changelogs own the persisted contract; the generated database schema shows its structure.

Review provenance

Each automated practice-review invocation has an agent_job. Provenance is captured when it becomes stable:

DimensionStored inCaptured at
Behaviour configurationagent_job.config_snapshotsubmission and claim
Prompt scaffoldingagent_job.prompt_digestpreparation
Injected filesagent_job.inputs_digestpreparation
Repository revision, where applicablejob metadata and the evidence manifestsubmission and preparation
Admitted practice criteriaevidence snapshot and observation.practice_revision_idpreparation and persistence
Model identity, usage, and costagent_job and llm_usage_eventcompletion

Use the complete versioned configuration snapshot as the behaviour-configuration identity. A selected tuple of model and endpoint fields is not equivalent to the snapshot.

prompt_digest identifies the shipped prompt scaffolding. inputs_digest identifies the final map of files injected by the executor, excluding repository mounts and runtime-created files. It is path-order-independent and elides occurrences of the job UUID. Equal digests therefore do not imply byte-identical sandbox workspaces or semantically equivalent evidence.

The evidence snapshot records the exact admitted practice revision. Persistence carries that identity into observation.practice_revision_id; it is not reconstructed from a timestamp.

Comparisons must be stratified by the complete behaviour configuration, prompt digest, input or case cohort, and practice revision. Equality in one dimension does not make runs comparable in the others.

Delivery evidence

Every composed feedback unit that reaches the delivery layer has a feedback row. A feedback state is a delivery-policy outcome, not proof of an external placement or of human exposure. Prove placement from feedback_placement or dispatch evidence. A placement still does not prove that its recipient read or acted on the feedback.

The Java FeedbackDeliveryState and FeedbackSuppressionReason types define delivery outcomes and suppression reasons.

Evaluation joins

  • Observation to review: join observation.agent_job_id to agent_job for configuration, digests, repository metadata, and usage. Join observation.practice_revision_id to the admitted criteria.
  • Observation to feedback: join through feedback_observation. Absence of a link means no feedback was composed from that observation; it says nothing about why.
  • Feedback to placement: join feedback_placement and inspect its channel reference. Feedback state alone is insufficient evidence of placement.
  • Response to observation: join reaction.feedback_id through feedback_observation. The latest append-only reaction records the response fields that were provided; missing telemetry is unknown, not a negative response.

Interpretation limits

  • Digests identify materialised bytes under their stated coverage; they do not establish semantic equivalence or cover every sandbox-visible input.
  • Persisted observations exclude candidates rejected before persistence. Invalid-output and failure-rate analysis requires a durable attempt and transition record rather than logs or observation rows alone.
  • Delivery and placement evidence does not establish that feedback was read or changed behaviour.