From e319a4b585c7437eaed8c5099931c33598436973 Mon Sep 17 00:00:00 2001 From: umair Date: Tue, 1 Sep 2026 17:56:48 +0100 Subject: [PATCH 1/3] Register the cross-SDK per-side Pub/Sub agents as versionless flags PDR-091b splits every Pub/Sub SDK into per-side packages whose factories stamp a side-declaring agent entry so that MAU classification never has to guess which side a connection is on. The identifiers are shared across languages: ably/ably-js#2293, ably/ably-java#1233 and ably/ably-ruby#453 all stamp the same ably-pubsub-device / ably-pubsub-server strings, alongside the SDK's own versioned agent entry. The entries are versionless, like browser: under lockstep versioning a side-flag version would always duplicate the SDK entry beside it, and across SDKs a bare ably-pubsub-device/1.2.3 cannot say 1.2.3 of what. Version-of-what stays the SDK entry's job; the side entry is a pure flag. They carry no source or product for the same reason browser carries none: they are emitted by many repos and attribute no package. Register both so the realtime system classifies them as known agents rather than by their -device/-server suffix alone. Co-Authored-By: Claude Fable 5 --- protocol/agents.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/protocol/agents.json b/protocol/agents.json index 23355988..520def5b 100644 --- a/protocol/agents.json +++ b/protocol/agents.json @@ -25,6 +25,18 @@ "product": "pub-sub", "name": "Pub/Sub JavaScript" }, + { + "identifier": "ably-pubsub-device", + "versioned": false, + "type": "runtime", + "name": "Pub/Sub (device side)" + }, + { + "identifier": "ably-pubsub-server", + "versioned": false, + "type": "runtime", + "name": "Pub/Sub (server side)" + }, { "identifier": "nodejs", "versioned": true, From 62c23711b6f70d947244edf164b9489cd2c995eb Mon Sep 17 00:00:00 2001 From: umair Date: Wed, 2 Sep 2026 12:39:34 +0100 Subject: [PATCH 2/3] Register the per-language Pub/Sub family identifiers Under PDR-091b every SDK's agent identifier follows its repo rename in the new major: ably-js -> ably-pubsub-js and so on. Because the flip happens exactly at the package split and the maintenance branches are never touched, the identifier alone partitions the fleet - the old identifier is legacy-package traffic, the new one is new-package traffic - so migration tracking and legacy EOL enforcement become a string match. Each entry sits beside its legacy counterpart, which stays registered: the old packages keep stamping the old identifiers through their maintenance year, and those entries are where their EOL sunsets will live. Names and types mirror the legacy entries (ably-pubsub-flutter stays a wrapper over the Java/Cocoa cores). ably-pubsub-dart and ably-pubsub-rust have no legacy pub-sub entry to shadow and are registered fresh against their existing repos. Known wrinkle, deliberate: old and new identifiers share a source repo, so fetch-agent-releases will associate that repo's releases with both entries. Sunsets are authored per entry, so this only affects the best-effort release CSV. Co-Authored-By: Claude Fable 5 --- protocol/agents.json | 96 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/protocol/agents.json b/protocol/agents.json index 520def5b..2e39c549 100644 --- a/protocol/agents.json +++ b/protocol/agents.json @@ -25,6 +25,14 @@ "product": "pub-sub", "name": "Pub/Sub JavaScript" }, + { + "identifier": "ably-pubsub-js", + "versioned": true, + "type": "sdk", + "source": "https://github.com/ably/ably-js", + "product": "pub-sub", + "name": "Pub/Sub JavaScript" + }, { "identifier": "ably-pubsub-device", "versioned": false, @@ -103,6 +111,14 @@ } ] }, + { + "identifier": "ably-pubsub-cocoa", + "versioned": true, + "type": "sdk", + "source": "https://github.com/ably/ably-cocoa", + "product": "pub-sub", + "name": "Pub/Sub Cocoa (iOS, macOS, tvOS, watchOS)" + }, { "identifier": "iOS", "versioned": true, @@ -164,6 +180,14 @@ } ] }, + { + "identifier": "ably-pubsub-java", + "versioned": true, + "type": "sdk", + "source": "https://github.com/ably/ably-java", + "product": "pub-sub", + "name": "Pub/Sub Java & Android" + }, { "identifier": "jre", "versioned": true, @@ -219,6 +243,22 @@ } ] }, + { + "identifier": "ably-pubsub-flutter", + "versioned": true, + "type": "wrapper", + "source": "https://github.com/ably/ably-flutter", + "product": "pub-sub", + "name": "Pub/Sub Flutter" + }, + { + "identifier": "ably-pubsub-dart", + "versioned": true, + "type": "sdk", + "source": "https://github.com/ably/ably-dart", + "product": "pub-sub", + "name": "Pub/Sub Dart" + }, { "identifier": "dart", "versioned": true, @@ -263,6 +303,14 @@ } ] }, + { + "identifier": "ably-pubsub-ruby", + "versioned": true, + "type": "sdk", + "source": "https://github.com/ably/ably-ruby", + "product": "pub-sub", + "name": "Pub/Sub Ruby" + }, { "identifier": "ruby", "versioned": true, @@ -307,6 +355,14 @@ } ] }, + { + "identifier": "ably-pubsub-dotnet", + "versioned": true, + "type": "sdk", + "source": "https://github.com/ably/ably-dotnet", + "product": "pub-sub", + "name": "Pub/Sub .NET" + }, { "identifier": "dotnet-framework", "versioned": true, @@ -494,6 +550,14 @@ } ] }, + { + "identifier": "ably-pubsub-python", + "versioned": true, + "type": "sdk", + "source": "https://github.com/ably/ably-python", + "product": "pub-sub", + "name": "Pub/Sub Python" + }, { "identifier": "ably-php", "versioned": true, @@ -513,6 +577,14 @@ } ] }, + { + "identifier": "ably-pubsub-php", + "versioned": true, + "type": "sdk", + "source": "https://github.com/ably/ably-php", + "product": "pub-sub", + "name": "Pub/Sub PHP" + }, { "identifier": "php", "versioned": true, @@ -554,6 +626,14 @@ } ] }, + { + "identifier": "ably-pubsub-go", + "versioned": true, + "type": "sdk", + "source": "https://github.com/ably/ably-go", + "product": "pub-sub", + "name": "Pub/Sub Go" + }, { "identifier": "go", "versioned": true, @@ -706,6 +786,22 @@ "source": "https://github.com/ably/ably-swift", "product": "pub-sub", "name": "Pub/Sub Swift (iOS, macOS, tvOS, watchOS)" + }, + { + "identifier": "ably-pubsub-swift", + "versioned": true, + "type": "sdk", + "source": "https://github.com/ably/ably-swift", + "product": "pub-sub", + "name": "Pub/Sub Swift (iOS, macOS, tvOS, watchOS)" + }, + { + "identifier": "ably-pubsub-rust", + "versioned": true, + "type": "sdk", + "source": "https://github.com/ably/ably-rust", + "product": "pub-sub", + "name": "Pub/Sub Rust" } ], "ablyLibMappings": { From 1fe8a599c285bb1d91411e1994de726038678d03 Mon Sep 17 00:00:00 2001 From: evgeny Date: Mon, 2 Nov 2026 20:07:12 +0000 Subject: [PATCH 3/3] Point renamed Pub/Sub family identifiers at their ably-pubsub-* repos js, java, flutter, dart, ruby, dotnet, python and php have been renamed to ably/ably-pubsub-*. cocoa, swift, rust and go keep their current URLs until they are renamed. Co-Authored-By: Claude Opus 5.5 --- protocol/agents.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/protocol/agents.json b/protocol/agents.json index 2e39c549..07e232d7 100644 --- a/protocol/agents.json +++ b/protocol/agents.json @@ -29,7 +29,7 @@ "identifier": "ably-pubsub-js", "versioned": true, "type": "sdk", - "source": "https://github.com/ably/ably-js", + "source": "https://github.com/ably/ably-pubsub-js", "product": "pub-sub", "name": "Pub/Sub JavaScript" }, @@ -115,7 +115,7 @@ "identifier": "ably-pubsub-cocoa", "versioned": true, "type": "sdk", - "source": "https://github.com/ably/ably-cocoa", + "source": "https://github.com/ably/ably-pubsub-cocoa", "product": "pub-sub", "name": "Pub/Sub Cocoa (iOS, macOS, tvOS, watchOS)" }, @@ -184,7 +184,7 @@ "identifier": "ably-pubsub-java", "versioned": true, "type": "sdk", - "source": "https://github.com/ably/ably-java", + "source": "https://github.com/ably/ably-pubsub-java", "product": "pub-sub", "name": "Pub/Sub Java & Android" }, @@ -247,7 +247,7 @@ "identifier": "ably-pubsub-flutter", "versioned": true, "type": "wrapper", - "source": "https://github.com/ably/ably-flutter", + "source": "https://github.com/ably/ably-pubsub-flutter", "product": "pub-sub", "name": "Pub/Sub Flutter" }, @@ -255,7 +255,7 @@ "identifier": "ably-pubsub-dart", "versioned": true, "type": "sdk", - "source": "https://github.com/ably/ably-dart", + "source": "https://github.com/ably/ably-pubsub-dart", "product": "pub-sub", "name": "Pub/Sub Dart" }, @@ -307,7 +307,7 @@ "identifier": "ably-pubsub-ruby", "versioned": true, "type": "sdk", - "source": "https://github.com/ably/ably-ruby", + "source": "https://github.com/ably/ably-pubsub-ruby", "product": "pub-sub", "name": "Pub/Sub Ruby" }, @@ -359,7 +359,7 @@ "identifier": "ably-pubsub-dotnet", "versioned": true, "type": "sdk", - "source": "https://github.com/ably/ably-dotnet", + "source": "https://github.com/ably/ably-pubsub-dotnet", "product": "pub-sub", "name": "Pub/Sub .NET" }, @@ -554,7 +554,7 @@ "identifier": "ably-pubsub-python", "versioned": true, "type": "sdk", - "source": "https://github.com/ably/ably-python", + "source": "https://github.com/ably/ably-pubsub-python", "product": "pub-sub", "name": "Pub/Sub Python" }, @@ -581,7 +581,7 @@ "identifier": "ably-pubsub-php", "versioned": true, "type": "sdk", - "source": "https://github.com/ably/ably-php", + "source": "https://github.com/ably/ably-pubsub-php", "product": "pub-sub", "name": "Pub/Sub PHP" }, @@ -630,7 +630,7 @@ "identifier": "ably-pubsub-go", "versioned": true, "type": "sdk", - "source": "https://github.com/ably/ably-go", + "source": "https://github.com/ably/ably-pubsub-go", "product": "pub-sub", "name": "Pub/Sub Go" },