Skip to content

chore(audio): retire EdgeTTS pending provenance review - #11711

Merged
diegosouzapw merged 2 commits into
release/v3.8.51from
fix/v3850-retire-edge-tts
Aug 28, 2026
Merged

diegosouzapw merged 2 commits into
release/v3.8.51from
fix/v3850-retire-edge-tts

Conversation

@diegosouzapw

Copy link
Copy Markdown
Collaborator

Summary

This draft PR retires the built-in edgetts integration from
release/v3.8.50 while its provenance/licensing review remains on HOLD.
It is a runtime retirement, not only a notice:

  • deletes the EdgeTTS WebSocket executor and its dedicated positive-protocol test;
  • removes the provider, the edgetts dispatch format, all 11 voices, the
    edgetts_token public credential, and speech-combo reachability;
  • removes current README/guide claims and the Stryker entry;
  • replaces the deleted positive test with a retirement contract covering the registry,
    handler, combo filtering, and UI-derived catalog;
  • preserves historical CHANGELOG entries and adds a new v3.8.50 retirement fragment.

The generic /v1/audio/speech endpoint remains available. gTTS, AWS Polly,
ElevenLabs, and every other registered speech provider remain in place.

Measured catalog delta

Metric Exact base 0915890 PR head
Built-in speech providers 25 24
Built-in speech models/voices 63 52
EdgeTTS voices 11 0
gTTS models 1 1
AWS Polly models 4 4
ElevenLabs models 2 2

RED -> GREEN evidence

Step Evidence
RED 1 The new retirement test failed because getSpeechProvider("edgetts") still returned the provider and its 11 voices.
GREEN 1 Removing the registry entry made the catalog/UI-derived retirement contract pass and changed the measured speech catalog from 25/63 to 24/52.
RED 2 The handler contract failed because the unknown-provider error still advertised edgetts.
GREEN 2 Removing the import, dispatch branch, message entry, token, and Edge-only client-IP plumbing made the handler contract pass.
Combo guard A combo containing only edgetts/en-US-AriaNeural now returns No speech-capable targets; the full speech-combo file passes 5/5.

Provenance and license triage

This is a technical provenance triage, not legal advice and not a license
clearance
.

Source snapshot Local relationship/evidence Upstream-declared license Technical disposition
rany2/edge-tts@4bdb8e4, including drm.py and LICENSE PROVEN adaptation: the deleted local executor explicitly stated that computeSecMsGec() was ported from drm.py::generate_sec_ms_gec(). The upstream DRM implementation later changed in cb6715f. LGPL-3.0 RETIRE / HOLD pending qualified review.
edge-tts-universal@593dfba, including drm.ts, communicate.ts, and LICENSE PROBABLE exposure/adaptation: the deleted local executor named this project as a protocol reference and exposed a materially similar DRM/WebSocket protocol surface. This classification is intentionally not a legal conclusion. AGPL-3.0-or-later RETIRE / HOLD pending qualified review.
MsEdgeTTS The deleted executor also named msedge-tts as a protocol reference. MIT Context only: MsEdgeTTS's MIT license does not relicense material originating in either source above and is not treated as clearance.

Validation

Check Result
Focused Node tests: retirement + handler + gTTS + combo PASS 47/47
Derived catalog/UI + registry + AWS Polly controls PASS 40/40
Total focused scope PASS 87/87
npm run typecheck:core PASS
ESLint on every changed TS file PASS
npm run check:docs-all PASS (existing soft drift warnings remain non-blocking)
Provider consistency script via Node/tsx PASS: 270 registry entries, 352 canonical providers, 0 exceptions
npm run check:changelog-integrity PASS
npm run check:tracked-artifacts PASS
GITHUB_BASE_SHA=091589... npm run check:test-masking PASS: 1 modified, 1 deleted, replacement verified
Full local Vitest INFRA/FLAKY HOLD: 404/405 passed; one unchanged provider-family-combos case exceeded its fixed 20 s timeout locally and repeated 10/11 when isolated. The official Vitest job on the exact base SHA passed. No local-green claim is made.

The npm provider-consistency wrapper itself could not start because this
hardlinked worktree's Bun package lacks its postinstall binary. The same gate
script was executed successfully through Node/tsx without mutating shared
node_modules.

Controls and HOLDs

  • Preserved: /v1/audio/speech, gTTS, AWS Polly, ElevenLabs, other audio
    providers, dynamic speech providers, and historical CHANGELOG provenance.
  • Product HOLD: EdgeTTS must not be restored without a qualified
    provenance/license decision and an implementation plan consistent with that
    decision.
  • Release/base state: the branch is based on the current exact
    release/v3.8.50 SHA 091589089cd134a94df9f6cdab9ba562b2cefd18.
    The release branch already has open base-red tracking in
    #9985; this PR does
    not claim the release base is green.
  • This PR is intentionally draft and must remain open. No merge, automerge,
    tag, release, or deploy is requested here.

@diegosouzapw
diegosouzapw force-pushed the fix/v3850-retire-edge-tts branch from 8e4a9fb to b475168 Compare August 28, 2026 04:02
@diegosouzapw
diegosouzapw changed the base branch from release/v3.8.50 to release/v3.8.51 August 28, 2026 04:02
@diegosouzapw
diegosouzapw marked this pull request as ready for review August 28, 2026 07:45
@diegosouzapw
diegosouzapw merged commit dd8575e into release/v3.8.51 Aug 28, 2026
20 of 29 checks passed
diegosouzapw added a commit that referenced this pull request Aug 28, 2026
Merged via /merge-batch (v3.8.51 provenance sweep). Boarded and validated together with the batch's other retirement PRs in a combined worktree — full gate suite green. This PR's own conflicts (against #11711's EdgeTTS retirement, both touching test-masking-allowlist.json and the "Image / video / audio generation" README bullet) were reconciled additively/subtractively (both retirements now correctly reflected), re-validated with this PR's own 62 focused tests, and pushed before merge. Thank you.
diegosouzapw added a commit that referenced this pull request Aug 28, 2026
…1750)

Merged via /merge-batch (v3.8.51 provenance sweep). Boarded and validated together with the batch's other provenance PRs in a combined worktree — full gate suite green. Reconciled against 3 sibling PRs (#11735, #11736, #11711) that landed first and independently retired 6 further unproven assets this PR never targeted, in both the README media-badge row and the "148 non-target assets" golden count (now the real 142, computed not guessed). This PR's own 23 node:test + 91 vitest focused tests all pass. Thank you for the careful provenance/generic-fallback work.
muhamadgalihsaputra pushed a commit to niyatna/NiyatnaRoute that referenced this pull request Sep 27, 2026
…ence#11711)

Merged via /merge-batch (v3.8.51 provenance sweep). Boarded and validated together with the batch's other provenance/retirement PRs in a combined worktree — full gate suite green, including the audio/speech-combo regression suites. Thank you.
muhamadgalihsaputra pushed a commit to niyatna/NiyatnaRoute that referenced this pull request Sep 27, 2026
)

Merged via /merge-batch (v3.8.51 provenance sweep). Boarded and validated together with the batch's other retirement PRs in a combined worktree — full gate suite green. This PR's own conflicts (against cheaper-inference#11711's EdgeTTS retirement, both touching test-masking-allowlist.json and the "Image / video / audio generation" README bullet) were reconciled additively/subtractively (both retirements now correctly reflected), re-validated with this PR's own 62 focused tests, and pushed before merge. Thank you.
muhamadgalihsaputra pushed a commit to niyatna/NiyatnaRoute that referenced this pull request Sep 27, 2026
…eaper-inference#11750)

Merged via /merge-batch (v3.8.51 provenance sweep). Boarded and validated together with the batch's other provenance PRs in a combined worktree — full gate suite green. Reconciled against 3 sibling PRs (cheaper-inference#11735, cheaper-inference#11736, cheaper-inference#11711) that landed first and independently retired 6 further unproven assets this PR never targeted, in both the README media-badge row and the "148 non-target assets" golden count (now the real 142, computed not guessed). This PR's own 23 node:test + 91 vitest focused tests all pass. Thank you for the careful provenance/generic-fallback work.
@diegosouzapw
diegosouzapw deleted the fix/v3850-retire-edge-tts branch October 18, 2026 23:51
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.

2 participants