pub struct ResearchReviewFindingV1 {Show 17 fields
pub schema: String,
pub finding_id: String,
pub project_id: String,
pub run_id: String,
pub artifact_digest: String,
pub category: ResearchReviewCategoryV1,
pub severity: ResearchReviewSeverityV1,
pub status: ResearchReviewStatusV1,
pub message: String,
pub location: Option<ResearchReviewLocationV1>,
pub evidence_digests: Vec<String>,
pub evaluator_id: String,
pub evaluation_record_digest: Option<String>,
pub provenance_receipt_digest: Option<String>,
pub observed_at_ms: u64,
pub resolution_digest: Option<String>,
pub finding_digest: String,
}Expand description
One host-produced scientific review observation bound to exact evidence.
Code validates identity and lifecycle shape only. A host or Use package supplies the rubric, model, thresholds, and final approval decision.
Fields§
§schema: String§finding_id: String§project_id: String§run_id: String§artifact_digest: String§category: ResearchReviewCategoryV1§severity: ResearchReviewSeverityV1§status: ResearchReviewStatusV1§message: String§location: Option<ResearchReviewLocationV1>§evidence_digests: Vec<String>§evaluator_id: String§evaluation_record_digest: Option<String>Optional digest of the immutable generic evaluation record that produced this finding. It is optional for compatibility with findings created before evaluator-result binding was available.
provenance_receipt_digest: Option<String>Optional digest of the immutable provenance receipt for the reviewed artifact. It is optional for compatibility with findings created before provenance binding was available.
observed_at_ms: u64§resolution_digest: Option<String>§finding_digest: StringImplementations§
Source§impl ResearchReviewFindingV1
impl ResearchReviewFindingV1
pub fn new( finding_id: impl Into<String>, project_id: impl Into<String>, run_id: impl Into<String>, artifact_digest: impl Into<String>, category: ResearchReviewCategoryV1, severity: ResearchReviewSeverityV1, message: impl Into<String>, location: Option<ResearchReviewLocationV1>, evidence_digests: Vec<String>, evaluator_id: impl Into<String>, observed_at_ms: u64, ) -> Result<Self, ResearchContractError>
pub fn validate(&self) -> Result<(), ResearchContractError>
Sourcepub fn from_slice(bytes: &[u8]) -> Result<Self, ResearchContractError>
pub fn from_slice(bytes: &[u8]) -> Result<Self, ResearchContractError>
Decode a bounded JSON finding and validate its digest before returning it to a caller at a process boundary.
Sourcepub fn to_vec(&self) -> Result<Vec<u8>, ResearchContractError>
pub fn to_vec(&self) -> Result<Vec<u8>, ResearchContractError>
Encode a validated finding for a process boundary.
Sourcepub fn bind_evaluation_record(
self,
record: &EvaluationRecordV1,
) -> Result<Self, ResearchContractError>
pub fn bind_evaluation_record( self, record: &EvaluationRecordV1, ) -> Result<Self, ResearchContractError>
Bind this finding to the exact generic evaluation record that produced it. The host still owns the rubric and finding projection, while Code verifies that the evaluator, Run, and evidence identity cannot drift. Replaying the same record is idempotent; replacing an established binding is rejected so a published observation remains immutable.
The method consumes and returns the finding so callers cannot observe a partially rebound value if validation fails.
Sourcepub fn bind_evaluation_record_for_run(
self,
record: &EvaluationRecordV1,
run: &ResearchRunV1,
) -> Result<Self, ResearchContractError>
pub fn bind_evaluation_record_for_run( self, record: &EvaluationRecordV1, run: &ResearchRunV1, ) -> Result<Self, ResearchContractError>
Bind this finding to an evaluator record and the exact research Run admission that it reviewed.
bind_evaluation_record remains
available for compatibility with callers that only have the finding
and record. New reviewer pipelines should pass the admitted Run as
well, because an evaluation record carries a Run id but not the
project identity that namespaces it.
Sourcepub fn bind_provenance_receipt(
self,
receipt: &ResearchProvenanceReceiptV1,
) -> Result<Self, ResearchContractError>
pub fn bind_provenance_receipt( self, receipt: &ResearchProvenanceReceiptV1, ) -> Result<Self, ResearchContractError>
Bind this finding to the exact provenance receipt for its artifact.
A provenance receipt is host-produced, but Code can still reject an artifact/project/Run mismatch and require that the finding retain one of the receipt’s input evidence digests. Replaying the same receipt is idempotent; replacing an established binding is rejected. This keeps reviewer policy outside Core while preventing a valid receipt from being attached to a different scientific object.
Sourcepub fn bind_provenance_receipt_for_run(
self,
receipt: &ResearchProvenanceReceiptV1,
run: &ResearchRunV1,
) -> Result<Self, ResearchContractError>
pub fn bind_provenance_receipt_for_run( self, receipt: &ResearchProvenanceReceiptV1, run: &ResearchRunV1, ) -> Result<Self, ResearchContractError>
Bind this finding to a provenance receipt and the exact research Run admission that produced it.
bind_provenance_receipt remains
available for compatibility with callers that only have the finding
and receipt. New reviewer pipelines should pass the admitted Run as
well so Code can reject a receipt from another project revision.
pub fn resolve( &mut self, resolution_digest: impl Into<String>, ) -> Result<(), ResearchContractError>
pub fn waive( &mut self, resolution_digest: impl Into<String>, ) -> Result<(), ResearchContractError>
Trait Implementations§
Source§impl Clone for ResearchReviewFindingV1
impl Clone for ResearchReviewFindingV1
Source§fn clone(&self) -> ResearchReviewFindingV1
fn clone(&self) -> ResearchReviewFindingV1
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ResearchReviewFindingV1
impl Debug for ResearchReviewFindingV1
Source§impl<'de> Deserialize<'de> for ResearchReviewFindingV1
impl<'de> Deserialize<'de> for ResearchReviewFindingV1
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for ResearchReviewFindingV1
Source§impl PartialEq for ResearchReviewFindingV1
impl PartialEq for ResearchReviewFindingV1
Source§impl Serialize for ResearchReviewFindingV1
impl Serialize for ResearchReviewFindingV1
impl StructuralPartialEq for ResearchReviewFindingV1
Auto Trait Implementations§
impl Freeze for ResearchReviewFindingV1
impl RefUnwindSafe for ResearchReviewFindingV1
impl Send for ResearchReviewFindingV1
impl Sync for ResearchReviewFindingV1
impl Unpin for ResearchReviewFindingV1
impl UnsafeUnpin for ResearchReviewFindingV1
impl UnwindSafe for ResearchReviewFindingV1
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more