Category: spec-conformance Severity: major
Location: crates/arcp-core/src/messages/execution.rs:319-328
Spec: ARCP v1.1 §8.2.1
What
The v1.1 progress body requires current and optional total, units, and message; this wire type exposes only percent. Peers following the spec cannot rely on required progress fields or the current <= total invariant.
Evidence
/// Payload for `job.progress`.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct JobProgressPayload {
/// Percent complete, 0.0 to 100.0.
#[serde(default, skip_serializing_if = "Option::is_none")]
pub percent: Option<f64>,
/// Optional human-readable message.
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
}
Proposed fix
Change or version the payload to carry current, optional total, units, and message, with validation for non-negative current and current not exceeding total.
Acceptance criteria
Category: spec-conformance Severity: major
Location:
crates/arcp-core/src/messages/execution.rs:319-328Spec: ARCP v1.1 §8.2.1
What
The v1.1 progress body requires
currentand optionaltotal,units, andmessage; this wire type exposes onlypercent. Peers following the spec cannot rely on required progress fields or thecurrent <= totalinvariant.Evidence
Proposed fix
Change or version the payload to carry
current, optionaltotal,units, andmessage, with validation for non-negative current and current not exceeding total.Acceptance criteria
payload.current, optionalpayload.total, and reject invalid negative/over-total progress.