Skip to content

Retire the remaining IO.Ably-named build artifacts - #1343

Merged
sacOO7 merged 2 commits into
integration/v2from
integration/retire-io-ably-artifacts
Oct 6, 2026
Merged

sacOO7 merged 2 commits into
integration/v2from
integration/retire-io-ably-artifacts

Conversation

@sacOO7

@sacOO7 sacOO7 commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

What this PR does

Retires the last live IO.Ably-named build artifacts, so the old name survives only where it denotes the 1.x past or an external dependency. Two commits: the artifact renames, and the deletion of three orphaned generated files. Follows #1342, which is merged into integration/v2 (54eff1bd).

The renames

Old New Reference web updated
IO.Ably.snk (repo root) Ably.PubSub.snk 5 csproj AssemblyOriginatorKeyFile, the ILRepack keyfile path in cake-build/helpers/tools.cake, generate_key.bat, 4 AssemblyInfo comments
src/Ably.PubSub.Core.NETFramework/IO.Ably.snk (deleted — consolidated) The copy was byte-identical to the root key (verified by checksum); the net46 project now signs with the repo-root key like every other project
src/IO.Ably.ruleset src/Ably.PubSub.ruleset 11 CodeAnalysisRuleSet elements across 8 csproj files (Ably.PubSub.Core, Ably.PubSub.Core.NETFramework ×2, Ably.PubSub.Device, Ably.PubSub.Server, Ably.PubSub.Server.NETFramework ×2, Ably.PubSub.Tests.DotNET, Ably.PubSub.Tests.NETFramework ×2, examples/NotificationsPublisher; the commit message says "nine"), 6 solution-item entries across the 4 solutions, internal RuleSet Name/Description metadata, CLAUDE.md
src/IO.Ably.Tests.ruleset src/Ably.PubSub.Tests.ruleset (same web as above)

Also deleted: src/Ably.PubSub/CustomSerialisers/GeneratedSerializers/IO/Ably/… — three MsgPack serializer files from a long-ago generator run, compiled by no project (verified: no projitems/csproj reference), in a directory whose path still spelled the old namespace. The only mention of that directory is the OutputDirectory of a permanently skipped (Skip="true") generator-scaffold test; its path is deliberately left untouched — it is dead scenery that any resolution of the MSGPACK question (below) sweeps away.

Signing: identity unchanged, verified

The key file's bytes are unchanged — only the name moves. Verified: the public key extracted from the renamed Ably.PubSub.snk (sn -p / sn -tp) is byte-identical to the PublicKey= blob in the InternalsVisibleTo grants (token 70c9e5c3d2c68b16), and Package-mode signed builds of the core and both door packages produce assemblies that pass strong-name verification. Assembly identities and every IVT grant are unaffected.

A note on the AssemblyInfo comments: a review fix on the namespace PR restored them to the then-true IO.Ably.snk; this rename moves the file to what those comments always meant, so they now read Ably.PubSub.snk and stay accurate.

Pre-existing defect found (not fixed here)

While validating, we found the MSGPACK conditional-compile path does not compile at all — and the identical defect exists on 1.x main, so it predates this campaign entirely (nothing defines MSGPACK in CI, so no build ever caught it). Five distinct error classes, evidence preserved:

  1. Defaults.Protocol does not exist in the #if MSGPACK arm (it defines DefaultProtocol, which nothing consumes).
  2. The generated ProtocolMessage serializer still reads/writes ConnectionSerial, which was removed from the protocol.
  3. MessageHandler._protocol is no longer static, but the arm uses it statically.
  4. A List<Stats>/IEnumerable<T> conversion the arm never tracked.
  5. References to options and LogRequestBody symbols that no longer exist.

The wire-format drift (2) and structural drift (3) show the arm missed several protocol generations — this is beyond a hygiene fix. No fix ships in this PR; whether to remove or resurrect the MSGPACK path is a separate product decision. The 1.x line shares the defect (a deferred backport candidate if it is ever fixed).

What deliberately remains

  • History and migration prose: CHANGELOG entries and the migration guide's old-name column, where IO.Ably correctly names the 1.x past (incl. IoC.cs's history comment).
  • The IO.Ably.DeltaCodec submodule: an external repository; renaming it is a separate cross-repo decision.
  • The IO_Ably_* MsgPack generated serializers — exactly 18 IO_Ably_* files in src/Ably.PubSub.Shared.MsgPack/CustomSerialisers/GeneratedSerializers/, their 18 MsgPackHelper registrations and their 18 Ably.PubSub.Shared.MsgPack.projitems entries, and nothing else: pending the MSGPACK-path decision above. They cannot be validated-renamed while the arm does not compile, and either resolution (removal or regeneration) eliminates them wholesale — renaming them now would be wasted work under every branch of that decision.

Validation

  • ./build.sh --target=Build.NetStandard (Release, StyleCop-as-error, against the renamed rulesets): 0 warnings / 0 errors
  • ./build.sh --target=Build.NetFramework under mono (the net46 project's key path changed): green
  • Package-mode signed builds (Package=True) of core and both doors: clean; sn -v valid on the outputs; extracted-public-key vs IVT-blob diff: identical
  • Unit tests, net6.0 leg: 0 failures

Summary by CodeRabbit

  • Chores
    • Updated build and package-signing configuration to use Ably.PubSub naming. Analyzer settings and documented build commands remain unchanged.
  • Changes
    • Removed generated MessagePack serialization support for capability, resource, and token request data.

The strong-name key and the two StyleCop rulesets were the last live
build artifacts still named IO.Ably. Rename them to match everything
else: IO.Ably.snk -> Ably.PubSub.snk, src/IO.Ably.ruleset ->
src/Ably.PubSub.ruleset, src/IO.Ably.Tests.ruleset ->
src/Ably.PubSub.Tests.ruleset, with their internal RuleSet Name and
Description metadata updated to match.

The key file's bytes are unchanged, so the assembly signing identity
and every InternalsVisibleTo PublicKey grant are unaffected - only the
file name moves. The NETFramework core project carried a byte-identical
copy of the key (verified by checksum); it is consolidated away and the
project now signs with the repo-root key like every other project.

The whole reference web moves in step: AssemblyOriginatorKeyFile in all
five signing csproj files, CodeAnalysisRuleSet in all nine product,
test and example csproj files, the solution-items entries in all four
solutions, the ILRepack keyfile path in the cake helper,
generate_key.bat and the build guidance in CLAUDE.md. The AssemblyInfo
comments that name the key file are updated too: an earlier review fix
restored them to the then-true IO.Ably.snk, and this rename moves the
file to what those comments always meant, so they now read
Ably.PubSub.snk and stay accurate.

IO.Ably survives only where it denotes the 1.x past (CHANGELOG history,
the migration guide's old-name column, IoC's history note) or the
external IO.Ably.DeltaCodec submodule.
src/Ably.PubSub/CustomSerialisers/GeneratedSerializers/IO/Ably/... held
three MsgPack serializer files produced by a long-ago generator run. No
project compiles them - they appear in no projitems or csproj compile
item - and their directory path still spelled out the old IO/Ably
namespace segments. The live copies of the two overlapping serializers
ship from Ably.PubSub.Shared.MsgPack; the third
(IO_Ably_CapabilityResourceSerializer) is referenced nowhere at all.

The only mention of the directory is the OutputDirectory of the
MsgPack serializer generator scaffold in MsgPackMessageSerializerTests
- a [Fact(Skip="true")] test filtered to a single type. That scaffold
is dead scenery of the same scenery: its output path now points at a
directory that no longer exists, which is harmless for a permanently
skipped test and becomes moot when the MSGPACK compile path's
remove-or-resurrect decision lands, so the path is deliberately left
untouched.
@coderabbitai

coderabbitai Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 034b740c-462a-4989-b838-fb1a76938ec8

📥 Commits

Reviewing files that changed from the base of the PR and between 6436a5d and a79529e.

📒 Files selected for processing (24)
  • Ably.PubSub.snk
  • CLAUDE.md
  • cake-build/helpers/tools.cake
  • examples/NotificationsPublisher/NotificationsPublisher.csproj
  • generate_key.bat
  • src/Ably.PubSub.Core.NETFramework/Ably.PubSub.Core.NETFramework.csproj
  • src/Ably.PubSub.Core.NETFramework/IO.Ably.snk
  • src/Ably.PubSub.Core.NETFramework/Properties/AssemblyInfo.cs
  • src/Ably.PubSub.Core/Ably.PubSub.Core.csproj
  • src/Ably.PubSub.Core/Properties/AssemblyInfo.cs
  • src/Ably.PubSub.Device/Ably.PubSub.Device.csproj
  • src/Ably.PubSub.NetFramework.sln
  • src/Ably.PubSub.NetStandard.sln
  • src/Ably.PubSub.Package.sln
  • src/Ably.PubSub.Server.NETFramework/Ably.PubSub.Server.NETFramework.csproj
  • src/Ably.PubSub.Server/Ably.PubSub.Server.csproj
  • src/Ably.PubSub.Tests.DotNET/Ably.PubSub.Tests.DotNET.csproj
  • src/Ably.PubSub.Tests.NETFramework/Ably.PubSub.Tests.NETFramework.csproj
  • src/Ably.PubSub.Tests.ruleset
  • src/Ably.PubSub.ruleset
  • src/Ably.PubSub.sln
  • src/Ably.PubSub/CustomSerialisers/GeneratedSerializers/IO/Ably/CustomSerialisers/IO_Ably_CapabilityResourceSerializer.cs
  • src/Ably.PubSub/CustomSerialisers/GeneratedSerializers/IO/Ably/CustomSerialisers/IO_Ably_CapabilitySerializer.cs
  • src/Ably.PubSub/CustomSerialisers/GeneratedSerializers/IO/Ably/CustomSerialisers/IO_Ably_TokenRequestSerializer.cs
💤 Files with no reviewable changes (3)
  • src/Ably.PubSub/CustomSerialisers/GeneratedSerializers/IO/Ably/CustomSerialisers/IO_Ably_TokenRequestSerializer.cs
  • src/Ably.PubSub/CustomSerialisers/GeneratedSerializers/IO/Ably/CustomSerialisers/IO_Ably_CapabilityResourceSerializer.cs
  • src/Ably.PubSub/CustomSerialisers/GeneratedSerializers/IO/Ably/CustomSerialisers/IO_Ably_CapabilitySerializer.cs

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.


Walkthrough

Build and signing references now use Ably.PubSub ruleset and key names. Three generated MessagePack serializers for CapabilityResource, Capability, and TokenRequest were removed.

Changes

Build identity and serializer cleanup

Layer / File(s) Summary
Ruleset names and references
src/Ably.PubSub*.ruleset, src/Ably.PubSub*.sln, src/Ably.PubSub.*/*.csproj, CLAUDE.md, examples/NotificationsPublisher/NotificationsPublisher.csproj
Ruleset metadata and references in project files, solutions, and build guidance now use Ably.PubSub names.
Signing-key paths
generate_key.bat, cake-build/helpers/tools.cake, src/Ably.PubSub.Core.NETFramework/*, src/Ably.PubSub.Core/*, src/Ably.PubSub.Device/*, src/Ably.PubSub.Server*/*
Key generation, ILRepack, project signing settings, and signing-key comments now reference Ably.PubSub.snk. The Core.NETFramework project no longer includes its local IO.Ably.snk item.
Generated MessagePack serializer removal
src/Ably.PubSub/CustomSerialisers/GeneratedSerializers/IO/Ably/CustomSerialisers/*
The generated serializers for CapabilityResource, Capability, and TokenRequest were removed.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~12 minutes

Change: Refactor

Suggested reviewers: umair-ably

Merge Risk: ⚪ Minimal · up to a7952

The renamed build references preserve the existing signing identity, and the removed serializers are not used by the current configured MessagePack path. No concrete change-introduced issue remains; the PR appears mergeable subject to normal checks.

Architecture Summary

Architecture risk: 🔵 Low · up to a7952

The change affects 5 systems.

Changed systems: src, cake-build, CLAUDE.md, examples, generate_key.bat

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — src (service) was modified; 18 changed files map to changed impact.
  • observed — cake-build (service) was modified; 1 changed file maps to changed impact.
  • observed — CLAUDE.md (service) was modified; 1 changed file maps to changed impact.
  • observed — examples (service) was modified; 1 changed file maps to changed impact.

Before / after behavior

  • observed — Modified behavior in CLAUDE.md: The documented StyleCop ruleset paths changed from src/IO.Ably.ruleset and src/IO.Ably.Tests.ruleset to src/Ably.PubSub.ruleset and src/Ably.PubSub.Tests.ruleset; the remaining build guidance is unchanged.
  • observed — Modified behavior in cake-build/helpers/tools.cake: ILRepack now uses Ably.PubSub.snk for the /keyfile argument instead of IO.Ably.snk.
  • observed — Modified behavior in examples/NotificationsPublisher/NotificationsPublisher.csproj: The project’s code analysis ruleset path changes from IO.Ably.ruleset to Ably.PubSub.ruleset.
  • observed — Modified behavior in generate_key.bat: Both the Windows SDK path and the PATH fallback now use Ably.PubSub.snk as the output file instead of IO.Ably.snk.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 2…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: replacing remaining IO.Ably-named build artifacts with Ably.PubSub names.
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

A rabbit checks the keys at dawn,
New names are set where old names shone.
Three serializers hop away,
While rulesets guide the build today.
Soft paws review the diff, then play.

Comment @coderabbitai help to get the list of available commands.

Base automatically changed from integration/namespace-ably-pubsub to integration/v2 September 29, 2026 13:12
@sacOO7
sacOO7 requested review from ttypic and a lite review from Copilot September 29, 2026 13:13

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟢 Approval recommended

Renames and deletions are validated with no unresolved blocking issues.

Review effort: Lite
Findings: None

What changed in this PR

Retires legacy IO.Ably build-artifact names while preserving signing identity and removing orphaned generated serializers.

Changes:

  • Renamed signing key and rulesets, updating project, solution, script, and documentation references.
  • Consolidated .NET Framework signing onto the shared key.
  • Deleted three unreferenced generated serializer files.
File Change
src/​Ably.PubSub/​CustomSerialisers/​GeneratedSerializers/​IO/​Ably/​CustomSerialisers/​IO_Ably_TokenRequestSerializer.cs Removed orphaned serializer
src/​Ably.PubSub/​CustomSerialisers/​GeneratedSerializers/​IO/​Ably/​CustomSerialisers/​IO_Ably_CapabilitySerializer.cs Removed orphaned serializer
src/​Ably.PubSub/​CustomSerialisers/​GeneratedSerializers/​IO/​Ably/​CustomSerialisers/​IO_Ably_CapabilityResourceSerializer.cs Removed orphaned serializer
src/​Ably.PubSub.Tests.ruleset Renamed test ruleset
src/​Ably.PubSub.Tests.NETFramework/​Ably.PubSub.Tests.NETFramework.csproj Updated ruleset reference
src/​Ably.PubSub.Tests.DotNET/​Ably.PubSub.Tests.DotNET.csproj Updated ruleset reference
src/​Ably.PubSub.sln Updated ruleset entry
src/​Ably.PubSub.Server/​Ably.PubSub.Server.csproj Updated build references
src/​Ably.PubSub.Server.NETFramework/​Ably.PubSub.Server.NETFramework.csproj Updated build and signing references
src/​Ably.PubSub.ruleset Renamed product ruleset
src/​Ably.PubSub.Package.sln Updated ruleset entry
src/​Ably.PubSub.NetStandard.sln Updated ruleset entry
src/​Ably.PubSub.NetFramework.sln Updated ruleset entry
src/​Ably.PubSub.Device/​Ably.PubSub.Device.csproj Updated build references
src/​Ably.PubSub.Core/​Properties/​AssemblyInfo.cs Updated key comment
src/​Ably.PubSub.Core/​Ably.PubSub.Core.csproj Updated ruleset and signing references
src/​Ably.PubSub.Core.NETFramework/​Properties/​AssemblyInfo.cs Updated key comment
src/​Ably.PubSub.Core.NETFramework/​Ably.PubSub.Core.NETFramework.csproj Consolidated signing-key reference
generate_key.bat Generates renamed key
examples/​NotificationsPublisher/​NotificationsPublisher.csproj Updated ruleset reference
CLAUDE.md Updated ruleset documentation
cake-build/​helpers/​tools.cake Updated ILRepack key path
Ably.PubSub.snk Renamed shared signing key

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@ttypic ttypic left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@sacOO7
sacOO7 merged commit a12cbb9 into integration/v2 Oct 6, 2026
33 checks passed
@sacOO7
sacOO7 deleted the integration/retire-io-ably-artifacts branch October 6, 2026 11:42

This branch was successfully deployed

1 active deployment
staging/pull/1343/features — a79529e4 Deployed Sep 29, 2026 by github-actions[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants