Skip to content

docs(openspec): archive externalmedia-returns-a-channel-id-that-finds-its-stream - #308

Merged
Harol-Reina merged 1 commit into
mainfrom
Harol-Reina/archive-externalmedia-channel-id
Sep 24, 2026
Merged

Harol-Reina merged 1 commit into
mainfrom
Harol-Reina/archive-externalmedia-channel-id

Conversation

@Harol-Reina

Copy link
Copy Markdown
Contributor

Close-out for #305, merged as 9f2cbde7.

Harvested: F1 (WebSocketAudioServer's URL-segment key), F2 (AudioStreamMetrics' ten uncalled instruments) and F3 (ten dialed-but-undefined dialplan extensions) → openspec/changes/a-published-surface-is-one-something-measures, opened during the change itself rather than at close-out. Its dependency line is updated here to read as satisfied and to name where the archived record and the live capability are.

Cited: (#305) backfilled into the CHANGELOG.md [Unreleased] entry.

Referrer sweep: two references, both by change name rather than by path, so the archive move breaks neither — ExternalMediaChannelIdFunctionalTests.cs:11 and the new change's proposal. The latter's tense was stale and is corrected; nothing else pointed at the directory.

One ruling, not a tidy-up

The entry is relabelled from ### Fixed — BREAKING to ### Changed — BREAKING.

ADR-0061 landed as #307 after this entry was written: only a Changed — BREAKING forces a minor, and D3 says an entry that cannot name the documented behaviour it restores is a Changed.

This entry has two halves:

  • The behavioural half restores what the docs promised — GetStream said it returned a stream by channel id, and could not. That is a Fixed.
  • The signature half changes a shipped public member. A caller that passed the cancellation token positionally stops compiling. That restores nothing.

Left as Fixed, D1 would have permitted the next release to ship that compile break as a patch. D3 puts the call on the author at the moment the entry is written; this is that call, made late because the ADR arrived in between.

The spec's Purpose is written, not left at TBD

It records that Asterisk decides this, not the SDK: data becomes the identification UUID the stream table is keyed by, channelId becomes the ARI Channel.Id, and supplying neither — the shipped behaviour — leaves a channel id that appears in no table, so the lookup cannot succeed by construction.

And it records why the answer had to be measured with two byte-order-asymmetric UUIDs per request: reading the code yields a plausible answer, and the review that tried it produced a wrong one.

Verification

openspec validate --all --strict : 15 passed, 0 failed
Governance tests                 : 129 passed, 0 failed

🤖 Generated with Claude Code

…-its-stream

Closes out #305, merged as 9f2cbde. The change becomes
openspec/changes/archive/2026-09-24-externalmedia-returns-a-channel-id-that-finds-its-stream
and its delta becomes the living spec openspec/specs/external-media-stream-routing.

The CHANGELOG entry is relabelled from `Fixed — BREAKING` to `Changed —
BREAKING`, and that is a ruling, not a tidy-up. ADR-0061 landed as #307 after
the entry was written: only a `Changed — BREAKING` forces a minor, and D3 says
an entry that cannot name the documented behaviour it restores is a `Changed`.
This entry has two halves. The behavioural half restores what the docs promised
— GetStream said it returned a stream by channel id and could not. The other
half changes a shipped signature, so a caller that passed the cancellation token
positionally stops compiling, and that restores nothing. Left as `Fixed`, D1
would have permitted the next release to ship that compile break as a patch.

The spec's Purpose is written rather than left at TBD. It records that Asterisk
decides this, not the SDK: `data` becomes the identification UUID the table is
keyed by and `channelId` becomes the ARI Channel.Id, and supplying neither — the
shipped behaviour — leaves a channel id that appears in no table. It also records
why the answer had to be measured: reading the code produces a plausible answer,
and the review that tried it produced a wrong one.

Referrer sweep: two references, both by change name rather than by path, so the
archive move breaks neither. The dependency line in
a-published-surface-is-one-something-measures now reads as satisfied rather than
pending, and names where the archived record and the live capability are.

openspec validate --all --strict: 15 passed, 0 failed.
Governance tests: 129 passed, 0 failed.
@Harol-Reina
Harol-Reina added this pull request to the merge queue Sep 24, 2026
Merged via the queue into main with commit f2b2f9b Sep 24, 2026
13 checks passed
@Harol-Reina
Harol-Reina deleted the Harol-Reina/archive-externalmedia-channel-id branch September 24, 2026 14:55
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