fix(connect): compare the whole model descriptor on a repeat cluster start (#1052)
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_windowor 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.