Skip to content

job.progress payload uses percent instead of current/total (§8.2.1) #69

@nficano

Description

@nficano

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

  • Serialized progress messages contain payload.current, optional payload.total, and reject invalid negative/over-total progress.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions