Feature value: boolean (binary), number (quantitative), or string (categorical)
results[].confidence
Confidence score (0-1), when applicable
results[].unit
Unit for quantitative values (e.g., percentage, score)
results[].expires_at
When this evaluation expires and should be refreshed
results[].measured_at
When this feature was evaluated
results[].methodology_version
Version of methodology used
results[].details
Vendor-specific details
detail_url
URL to vendor’s full assessment. Access-controlled by the vendor.
audit_observations[]
Non-blocking observations for audit routing. These are not rejection signals by themselves.
audit_observations[].code
Machine-readable observation code, such as OVERSIGHT_DISCLOSURE_CARVEOUT_CLAIMED
audit_observations[].severity
Routing severity; currently audit-worthy
audit_observations[].recovery
Caller recovery category; currently informational
audit_observations[].field
Resolved creative manifest path for the risky claim side of the observation. Multi-field observations anchor the primary claim path, not necessarily every trigger field.
audit_observations[].message
Human-readable audit queue summary; do not include PII, cross-tenant data, or vendor-only report details
For OVERSIGHT_DISCLOSURE_CARVEOUT_CLAIMED, a compact object { human_oversight, disclosure_required }; disclosure_required is the flattened alias for creative_manifest.provenance.disclosure.required.
feature_ids filters results[]; audit_observations[] may still appear when the submitted provenance itself is audit-worthy. OVERSIGHT_DISCLOSURE_CARVEOUT_CLAIMED fires when human_oversight is edited or directed and disclosure.required is false; verifier observations such as observed_value and confidence are optional audit context.
Some evaluations (e.g., sandboxed malware scanning) take time. The agent returns status: "working" and delivers results via webhook when complete. This uses the standard async task pattern — no custom status values needed.