fix(connect): compare the whole model descriptor on a repeat cluster start (#1052)

AD
4d ago
+686-3

A repeat rac_connect_cluster_start_proto previously compared only model.model_id(), so a retry with a changed context_window, display_name, framework or supports_streaming returned success with the old descriptor. It now compares the full descriptor and takes the existing RAC_ERROR_INVALID_CONFIGURATION path. Test: changed context_window with the same model_id is rejected; the identical retry still returns the stored state.

Stacked on #723 (the guard lives there), so the diff includes its commits until it merges.

Closes #1052


Summary by cubic

Adds a local AI cluster orchestration API — rac_connect_cluster_start_proto, _cluster_join_proto, _cluster_stop_proto, and _cluster_validate_activation_proto — with the matching runanywhere.v1 schema (IDL bumped to 1.7.0). Validation covers contiguous layer assignments without gaps or duplicate instance_ids, peer eligibility against the assigned layer span, and activation tensor dimensions and layer boundaries.

A repeat rac_connect_cluster_start_proto for an already-active cluster previously compared only model.model_id(), so a retry that changed context_window, display_name, framework, or supports_streaming returned the old stored state as success. It now compares the full model descriptor and layer assignments field-by-field and returns RAC_ERROR_INVALID_CONFIGURATION when anything changed; an identical retry stays idempotent and returns the stored state.

  • Field-wise comparison (instead of serialized bytes) avoids over-rejecting identical retries whose unknown fields arrive in a different wire order.
  • Tests cover a repeat start with a changed context_window or model being rejected, plus the unchanged retry staying idempotent.

Summary by CodeRabbit

  • New Features
    • Added cluster coordination, including starting and stopping a cluster and allowing assigned peers to join.
    • Added validation for cluster assignments, peer eligibility, and intermediate activation data.
    • Added responses with cluster status and the results of peer joins and activation checks.
  • Compatibility
    • Updated the interface definition version to 1.7.0.