Skip to content

docs(guides): the migration guide #291 owed, and the index row #302 never got - #310

Merged
Harol-Reina merged 1 commit into
mainfrom
docs/ari-291-migration-guide
Sep 24, 2026
Merged

Harol-Reina merged 1 commit into
mainfrom
docs/ari-291-migration-guide

Conversation

@Harol-Reina

Copy link
Copy Markdown
Contributor

ADR-0028 obliges a minor that carries a breaking change to ship a migration guide. [Unreleased]
holds six BREAKING entries and #291's two had none — the last documentation blocker on the
2.6.0 cut.

The guide

Both halves of #291 move something a consumer can observe, and neither changes a signature, so
nothing stops compiling. That is exactly the case a migration guide is for.

AriClient.State after a failed first connect

How the attempt ended State before State now
Refused upgrade (401, 503), nothing listening, name does not resolve Connecting Faulted
The caller cancelled the token it passed Connecting Disconnected

What the guide tells a consumer to delete: a poll or timeout waiting for State to leave
Connecting. It never left before; it leaves immediately now.

What it warns about:

  • This amends what 2.5.3 told consumers. That release's entry pointed them at State or the
    health check, and named Connecting as what a 401 leaves behind. The throw is still exactly
    that; the state it named is not.
  • AriHealthCheck keeps its status and moves its message. Connecting, Faulted and
    Disconnected all fall to the Unhealthy arm, so only the interpolated string changes — which
    matters to anyone asserting on it.
  • The exception is unchanged — same type, message and stack; the state is written in a finally
    that catches nothing and runs before the exception is observable, so a caller's own catch already
    reads the terminal value.

AriOutboundListener surviving an accept failure

The old loop ended silently and for good on one transient accept failure, while IsRunning still
reported true over a socket still in LISTEN. A watchdog that restarted the listener could not
work — StartAsync refused while the flag was set. That watchdog can go, and a persistent failure is
now noisy where it used to be invisible: one Error line per failed accept, at most twelve a minute
once the backoff reaches its 5 s cap.

Also here

audiosocket-wire-format-migration.md has existed since #302 and was never listed in
docs/guides/README.md. Its row is added, so all three migration guides are now reachable from the
index — found while adding the row for the new one.

The registry row this earns

The guide restates the accept backoff bounds and their per-minute consequence. Those are quantitative
figures in a document inside the claim registry's scope, so the change carries its row (ADR-0042 D1),
classified GAP with the note that the bounds are internal constants and the per-minute figure is
arithmetic over them.

Not written, and why

#284 and #286 are also Fixed — BREAKING and get no guide: neither leaves a consumer anything to
do. A guide exists for a break that requires action, and manufacturing one for a break that requires
none makes the next reader trust the set less.

Verification

  • Tests/Verbara.Sdk.OpenTelemetry.Tests — 31 passed (the claim-guard suites)
  • Tests/Verbara.Sdk.Governance.Tests — 129 passed
  • openspec validate --all --strict — 15 passed, 0 failed

🤖 Generated with Claude Code

…ever got

ADR-0028 obliges a minor that carries a breaking change to ship a migration
guide. `[Unreleased]` holds six BREAKING entries and #291's two had none.

The guide covers both halves of that change, because both move something a
consumer can observe and neither changes a signature:

- `AriClient.State` after a failed first connect. It stayed `Connecting` for
  the life of the instance; it now leaves a terminal state chosen by who ended
  the attempt — `Faulted` for a refused upgrade or nothing listening,
  `Disconnected` when the caller cancelled. The guide names the workarounds
  this makes deletable (a poll waiting for the state to settle), states that
  the exception is unchanged, and records that 2.5.3's entry told consumers to
  watch `State` and named a value that is no longer what they will see.
  `AriHealthCheck`'s status is unchanged and only its message text moves, which
  matters to anyone asserting on the string.
- `AriOutboundListener` surviving an accept failure. The old loop ended
  silently and for good while `IsRunning` still reported true, so a watchdog
  that restarted the listener could not work — `StartAsync` refused while the
  flag was set. That watchdog can go, and a persistent failure is now noisy
  where it used to be invisible.

Also here, found while writing the index row: `audiosocket-wire-format-migration.md`
has existed since #302 and was never listed in `docs/guides/README.md`. Its row
is added, so all three migration guides are now reachable from the index.

The guide restates the accept backoff bounds and their per-minute consequence,
which are quantitative figures in a document inside the claim registry's scope,
so it carries its registry row in this commit (ADR-0042 D1).
@Harol-Reina
Harol-Reina added this pull request to the merge queue Sep 24, 2026
Merged via the queue into main with commit c12e81a Sep 24, 2026
13 checks passed
@Harol-Reina
Harol-Reina deleted the docs/ari-291-migration-guide branch September 24, 2026 19:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant