Arcp::Client#subscribe_job creates a local queue at lib/arcp/client.rb:149, but it only sends a job.subscribe envelope when the subscribe feature is negotiated and from_event_seq is truthy at lib/arcp/client.rb:152. A caller that uses the natural default subscribe_job(job_id: id) never attaches to the runtime, so observer-side subscriptions can block forever waiting on a local queue that no server fanout path knows about. The method also silently skips the feature requirement when from_event_seq is omitted, which hides negotiation mistakes instead of raising Arcp::Errors::UnnegotiatedFeature.
Fix prompt: Change subscribe_job so an explicit subscription always sends job.subscribe whenever the job is not already locally owned by the same client stream, including the default from_event_seq: nil case. Require the subscribe feature before sending, preserve the existing submitter-owned stream behavior for handles returned by submit_job, and add integration specs for an observer session subscribing with no from_event_seq, with from_event_seq: 0, and with the subscribe feature absent.
Arcp::Client#subscribe_jobcreates a local queue atlib/arcp/client.rb:149, but it only sends ajob.subscribeenvelope when the subscribe feature is negotiated andfrom_event_seqis truthy atlib/arcp/client.rb:152. A caller that uses the natural defaultsubscribe_job(job_id: id)never attaches to the runtime, so observer-side subscriptions can block forever waiting on a local queue that no server fanout path knows about. The method also silently skips the feature requirement whenfrom_event_seqis omitted, which hides negotiation mistakes instead of raisingArcp::Errors::UnnegotiatedFeature.Fix prompt: Change
subscribe_jobso an explicit subscription always sendsjob.subscribewhenever the job is not already locally owned by the same client stream, including the defaultfrom_event_seq: nilcase. Require thesubscribefeature before sending, preserve the existing submitter-owned stream behavior for handles returned bysubmit_job, and add integration specs for an observer session subscribing with nofrom_event_seq, withfrom_event_seq: 0, and with the subscribe feature absent.