Skip to the content.

ADR 013 — Evidence-gated Compliance Readiness Sign-off

Date: May 2026 Status: Accepted — implemented Author: Ezinna (Founder)


Context

Until now, a farm’s EUDR verification was a free checkbox. Farm.is_eudr_verified was a boolean an operator ticked on the edit form, with verified_by / verified_date / verification_expiry and deforestation_risk_status as adjacent free inputs. Nothing required evidence behind the tick: a farm with no deforestation check, or a flagged one, could still be marked verified — and that flowed straight through compliance_status to a clean EUDR certificate PDF. The verification was an assertion, not a finding.

In parallel, the deforestation engine (run_check + DeforestationCheck) was built: it intersects each farm polygon against satellite tree-cover-loss data and retains the result as an auditable evidence record. With the engine producing real evidence, the question became: what should “verified” mean, now that the platform can independently assess deforestation?

Two broad options:

  1. Full automation. The engine sets verification directly — a clear check makes the farm verified, no human in the loop.
  2. Evidence-gated human sign-off. The engine produces the evidence; a manager signs off on it; the sign-off action is rejected unless the evidence is complete and current.

Decision

Adopt evidence-gated human sign-off. Three sub-decisions:

  1. Verification is a manager-only, evidence-gated, audited action — not a field. is_eudr_verified (and its metadata) is no longer on the edit form and is read-only over the API. It is set only by ConfirmComplianceReadinessView — manager-or-above, POST-only — which re-checks the evidence gate server-side, then records the sign-off and a 12-month expiry, audit-logged. WithdrawComplianceReadinessView reverses it.

  2. The user-facing concept is “Compliance Readiness”, surfaced as a readiness_state lifecycle — not_readyawaiting_signoffready, plus disqualified and expired. “EUDR Verified” was retired as user-facing wording: it overclaimed an authority AgriOps does not hold. compliance_status is now evidence-backed — a sign-off only counts as compliant when a clear, current, non-stale DeforestationCheck sits behind it.

  3. Disqualification is the engine’s default with an audited manual override. A flagged check disqualifies the farm; a manager may override via land_cleared_after_cutoff (e.g. a false positive, or clearing that predates the cut-off), which requires a documented reason and is audit-logged.

Why human sign-off and not full automation

The engine removes the guesswork; it does not remove the accountability.


Consequences