From 2ab8d5aae21f15a93902e3cc666506b7021c0d1b Mon Sep 17 00:00:00 2001 From: Edison Jwa Date: Thu, 11 Jun 2026 10:12:35 +0900 Subject: [PATCH] docs(references): add Chanora relevance, backfill placeholders, cross-reference (TODO-079,080,081,083,084) Add TeaSpeak-to-Chanora SRS mapping and divergence points. Backfill YaTQA variable parameters, anti-flood actions, and notify events with structured placeholders. Add error code cross-reference between YaTQA and ReSpeak sources. --- docs/references/teaspeak-offline-reference.md | 46 +++ docs/references/yatqa-offline-reference.md | 275 ++++++++++++++++-- 2 files changed, 303 insertions(+), 18 deletions(-) diff --git a/docs/references/teaspeak-offline-reference.md b/docs/references/teaspeak-offline-reference.md index 0fc881f..ffaf045 100644 --- a/docs/references/teaspeak-offline-reference.md +++ b/docs/references/teaspeak-offline-reference.md @@ -1284,3 +1284,49 @@ Supported commands for individual error results: - **Archived Website**: https://web.archive.org/web/2024/https://teaspeak.de/ - **Forum** (archived): https://forum.teaspeak.de/ - **Docker Hub**: https://hub.docker.com/r/teaspeak/web + +--- + +## Relevance to Chanora + +This section maps TeaSpeak features and protocol details to Chanora SRS requirements, identifying where TeaSpeak diverges from the TS3 reference protocol. + +### Feature Mapping to SRS Requirements + +| TeaSpeak Feature | Chanora SRS Area | Notes | +|---|---|---| +| OPUS-only codec (since 1.5.0) | SRS-071, SRS-072 (Opus encode/decode) | Simplifies Chanora codec support — no legacy Speex/CELT needed for TeaSpeak servers | +| WebRTC voice bridge | SRS-045 (protocol adapter) | TeaSpeak web clients use WebRTC, not UDP; Chanora uses `tsclientlib` (UDP) — bridge is server-side only | +| Channel tree with hidden/private channels | SRS-020 (channel tree display) | `i_channel_view_power` / `channel_flag_private` controls visibility; Chanora state sync must handle partial visibility | +| Conversation modes (none/public/private) | SRS-024 (text chat) | TeaSpeak channel conversations are persistent; affects chat history expectations | +| Extended ServerQuery notify events | SRS-047 (event translation) | TeaSpeak exposes more events to query clients than TS3 (e.g., music bot events); protocol adapter must handle unknown events gracefully (SRS-060) | +| Music bot system | Out of scope (SRS-010) | Chanora does not host bots; music bot clients appear as normal clients in channel tree | +| Token system redesign (1.5.1+) | SRS-045 (connect flow) | Token length changed from 20→32 chars; token-based group assignment may differ | +| Ban system (global bans, HWID bans, ban editing) | SRS-048 (error handling) | TeaSpeak adds `banedit` command and HWID bans; Chanora must handle unknown ban types gracefully | +| `listfeaturesupport` command | SRS-052 (protocol probe) | TeaSpeak exposes `advanced-channel-chat`, `sidebar-mode`, etc.; useful for capability detection | +| Anti-flood point system | SRS-048, SRS-060 | TeaSpeak uses same tick-reduce model as TS3 but with different point values for some actions | +| File transfer via HTTP | Out of scope for MVP | TeaSpeak uses HTTP (port 30303) instead of TS3's custom TCP protocol; Chanora file transfer is P3/Future | + +### Protocol Divergence Points + +The following TeaSpeak behaviors diverge from the TeamSpeak 3 reference protocol documented in the YaTQA and ReSpeak references: + +1. **Codec removal**: Speex (8/16/32kHz) and CELT-Mono (48kHz) are removed in TeaSpeak 1.5.0+. Chanora's Opus-only strategy (SRS-071/072) aligns, but connecting to older TeaSpeak or TS3 servers may require codec negotiation awareness. + +2. **ServerQuery line terminator**: TeaSpeak changed from `\n\r` to `\n` in 1.4.14-beta6. TS3 uses `0x0A 0x0D`. Chanora connects as a voice client (not query), so this does not affect the voice protocol path. + +3. **WebRTC vs UDP**: TeaSpeak supports both UDP (native clients) and WebRTC (web clients). Chanora uses `tsclientlib` which implements the UDP voice protocol. The WebRTC bridge is server-side and transparent to native clients. + +4. **New commands**: TeaSpeak adds `propertylist`, `listfeaturesupport`, `logquery`, `logadd`, `conversationhistory`, `conversationfetch`, `conversationmessagedelete`, `tokenactionlist`, `tokenedit`, `ftrenamefile`, `ftlist`, `ftstop`. These are ServerQuery-only and do not affect Chanora's voice-client protocol path. + +5. **Extended permissions**: TeaSpeak adds music bot permissions, channel view power, conversation mode permissions, video permissions, and channel limit permissions. Unknown permissions must be ignored gracefully (SRS-060). + +6. **Video broadcasting**: TeaSpeak supports VP8/H264 video via WebRTC. Chanora does not implement video in MVP (SRS-010 scope constraint). Video streams from other clients should not crash the application (SRS-060). + +7. **Conversation system**: TeaSpeak's persistent channel conversations (`conversationhistory`, `conversationfetch`) differ from TS3's simpler text message model. If Chanora connects to a TeaSpeak server, chat history behavior may differ from TS3 expectations. + +8. **VPN detection**: TeaSpeak has `b_client_ignore_vpn` permission. Chanora does not control server-side VPN detection but should handle any resulting connection failures gracefully. + +9. **Snapshot format differences**: TeaSpeak snapshot version 2 includes music bot data with breaking changes. Not relevant to Chanora client (server-side only). + +10. **Error code extensions**: TeaSpeak may return undocumented error codes for its extended features. Chanora's protocol adapter (SRS-048) should map unknown error codes to a generic error category. diff --git a/docs/references/yatqa-offline-reference.md b/docs/references/yatqa-offline-reference.md index e66531c..0c92862 100644 --- a/docs/references/yatqa-offline-reference.md +++ b/docs/references/yatqa-offline-reference.md @@ -243,6 +243,27 @@ Always reasonid=10. Reports new values for: name, codec_encryption_mode, default #### notifychannelchanged, notifychannelmoved, notifychanneledited, notifychannelcreated, notifychanneldeleted (channel) +**notifychannelcreated:** +Fields: [to be completed] — likely includes: cid, cpid, channel_name, channel_topic, channel_codec, channel_codec_quality, channel_flag_permanent, channel_flag_semi_permanent, channel_flag_default, channel_flag_password, channel_maxclients, channel_maxfamilyclients, channel_order, channel_icon_id, channel_needed_talk_power + +**notifychanneledited:** +Fields: [to be completed] — likely includes: cid, reasonid, invokerid, invokername, invokeruid, plus changed channel properties + +**notifychannelmoved:** +Fields: [to be completed] — likely includes: cid, cpid, order, reasonid (10) + +**notifychannelchanged:** +Fields: [to be completed] — [field details to be completed] + +**notifychanneldeleted:** +Fields: [to be completed] — likely includes: cid, cpid, reasonid (10), invokerid, invokername, invokeruid + +#### notifychanneldescriptionchanged (channel) +Fields: [to be completed — undocumented in original YaTQA source] + +#### notifychannelpasswordchanged (channel) +Fields: [to be completed — undocumented in original YaTQA source] + #### notifyclientmoved (channel) Fields: ctid, reasonid (0=self, 1=moved), invokerid, invokername, invokeruid, clid @@ -298,6 +319,36 @@ Fields: clid, cldbid, cluid, token, tokencustomset, token1 (group), token2 (0 fo - `client_flag_avatar` is MD5 hash, not a boolean - `client_badges` format: `overwolf=0:badges=GUID1=GUID2=...` +**Additional client variables (to be completed from yat.qa/ressourcen/variablen-parameter/):** + +| Variable | clientlist | clientinfo | notify | clientupdate | clientedit | clientdblist | clientdbinfo | +|---|---|---|---|---|---|---|---| +| client_input_hardware | [to be completed] | [to be completed] | [to be completed] | [to be completed] | [to be completed] | | | +| client_output_hardware | [to be completed] | [to be completed] | [to be completed] | [to be completed] | [to be completed] | | | +| client_outputonly_muted | [to be completed] | [to be completed] | [to be completed] | [to be completed] | [to be completed] | | | +| client_meta_data | [to be completed] | [to be completed] | [to be completed] | [to be completed] | [to be completed] | | | +| client_is_recording | [to be completed] | [to be completed] | [to be completed] | ✗ | ✗ | | | +| client_version | [to be completed] | [to be completed] | | | | ✓(details) | ✓ | +| client_platform | [to be completed] | [to be completed] | | | | ✓(details) | ✓ | +| client_talk_power | [to be completed] | [to be completed] | [to be completed] | | | | | +| client_talk_request | [to be completed] | [to be completed] | [to be completed] | [to be completed] | ✗ | | | +| client_talk_request_msg | [to be completed] | [to be completed] | [to be completed] | [to be completed] | ✗ | | | +| client_is_talker | [to be completed] | [to be completed] | [to be completed] | [to be completed] | ✓ | | | +| client_is_priority_speaker | [to be completed] | [to be completed] | [to be completed] | [to be completed] | ✗ | | | +| client_is_channel_commander | [to be completed] | [to be completed] | [to be completed] | [to be completed] | ✗ | | | +| client_unread_messages | [to be completed] | [to be completed] | [to be completed] | ✗ | ✗ | | | +| client_nickname_phonetic | [to be completed] | [to be completed] | [to be completed] | [to be completed] | ✗ | | | +| client_needed_serverquery_view_power | [to be completed] | [to be completed] | [to be completed] | | | | | +| client_country | [to be completed] | [to be completed] | [to be completed] | [to be completed] | ✗ | | | +| client_away_message | [to be completed] | [to be completed] | [to be completed] | [to be completed] | ✗ | | | +| client_totalconnections | | | | | | ✓(details) | ✓ | +| client_lastconnected | | | | | | ✓(details) | ✓ | +| client_lastip | | | | | | ✗ | ✗ | +| client_created | | | | | | ✓(details) | ✓ | +| client_month_bytes_uploaded | [to be completed] | [to be completed] | | | | | | +| client_month_bytes_downloaded | [to be completed] | [to be completed] | | | | | | +| client_total_online_time | | [to be completed] | | | | | | + ### 4.2 Channel Variables **Key variables:** @@ -318,6 +369,26 @@ Fields: clid, cldbid, cluid, token, tokencustomset, token1 (group), token2 (0 fo | seconds_empty | ✓(secondsempty) | ✓ | ✗ | | | | total_clients | ✓ | ✗ | ✗ | | | +**Additional channel variables (to be completed from yat.qa/ressourcen/variablen-parameter/):** + +| Variable | channellist | channelinfo | notify(created/edited/moved) | channeledit | channelcreate | +|---|---|---|---|---|---| +| channel_topic | [to be completed] | [to be completed] | [to be completed] | [to be completed] | [to be completed] | +| channel_description | [to be completed] | [to be completed] | [to be completed] | [to be completed] | [to be completed] | +| channel_flag_permanent | [to be completed] | [to be completed] | [to be completed] | [to be completed] | [to be completed] | +| channel_flag_semi_permanent | [to be completed] | [to be completed] | [to be completed] | [to be completed] | [to be completed] | +| channel_flag_default | [to be completed] | [to be completed] | [to be completed] | [to be completed] | [to be completed] | +| channel_maxfamilyclients | [to be completed] | [to be completed] | [to be completed] | [to be completed] | [to be completed] | +| channel_codec_is_unencrypted | [to be completed] | [to be completed] | [to be completed] | [to be completed] | [to be completed] | +| channel_security_salt | [to be completed] | [to be completed] | [to be completed] | | | +| channel_delete_delay | [to be completed] | [to be completed] | [to be completed] | [to be completed] | [to be completed] | +| channel_flag_maxclients_unlimited | [to be completed] | [to be completed] | [to be completed] | | | +| channel_flag_maxfamilyclients_unlimited | [to be completed] | [to be completed] | [to be completed] | | | +| channel_flag_maxfamilyclients_inherited | [to be completed] | [to be completed] | [to be completed] | | | +| channel_filepath | [to be completed] | [to be completed] | | | | +| channel_forced_silence | [to be completed] | [to be completed] | [to be completed] | [to be completed] | | +| channel_name_phonetic | [to be completed] | [to be completed] | | | | + **Notes:** - `channel_flag_temporary` doesn't exist at all - `channel_icon_id` changes via `channeledit` are semi-permanent (lost on restart) @@ -337,6 +408,48 @@ Fields: clid, cldbid, cluid, token, tokencustomset, token1 (group), token2 (0 fo | virtualserver_total_packetloss_total | ✓ | ✓ | ✓(limited) | | | | virtualserver_total_ping | ✓ | ✓ | ✓(limited) | | | +**Additional server variables (to be completed from yat.qa/ressourcen/variablen-parameter/):** + +| Variable | serverlist | serverinfo | serverrequestconnectioninfo | serveredit | notifyserveredited | +|---|---|---|---|---|---| +| virtualserver_welcomemessage | | [to be completed] | | [to be completed] | | +| virtualserver_password | | [to be completed] | | [to be completed] | | +| virtualserver_codec_encryption_mode | | [to be completed] | | [to be completed] | [to be completed] | +| virtualserver_hostmessage | | [to be completed] | | [to be completed] | [to be completed] | +| virtualserver_hostmessage_mode | | [to be completed] | | [to be completed] | | +| virtualserver_hostbanner_url | | [to be completed] | | [to be completed] | [to be completed] | +| virtualserver_hostbanner_gfx_url | | [to be completed] | | [to be completed] | [to be completed] | +| virtualserver_hostbanner_gfx_interval | | [to be completed] | | [to be completed] | | +| virtualserver_hostbanner_mode | | [to be completed] | | [to be completed] | | +| virtualserver_hostbutton_tooltip | | [to be completed] | | [to be completed] | [to be completed] | +| virtualserver_hostbutton_url | | [to be completed] | | [to be completed] | [to be completed] | +| virtualserver_hostbutton_gfx_url | | [to be completed] | | [to be completed] | [to be completed] | +| virtualserver_complain_autoban_count | | [to be completed] | | [to be completed] | | +| virtualserver_complain_autoban_time | | [to be completed] | | [to be completed] | | +| virtualserver_complain_remove_time | | [to be completed] | | [to be completed] | | +| virtualserver_priority_speaker_dimm_modificator | | [to be completed] | | [to be completed] | [to be completed] | +| virtualserver_antiflood_points_tick_reduce | | [to be completed] | | [to be completed] | | +| virtualserver_antiflood_points_needed_command_block | | [to be completed] | | [to be completed] | | +| virtualserver_antiflood_points_needed_ip_block | | [to be completed] | | [to be completed] | | +| virtualserver_needed_identity_security_level | | [to be completed] | | [to be completed] | | +| virtualserver_channel_temp_delete_delay_default | | [to be completed] | | [to be completed] | [to be completed] | +| virtualserver_name_phonetic | | [to be completed] | | [to be completed] | [to be completed] | +| virtualserver_reserved_slots | | [to be completed] | | [to be completed] | | +| virtualserver_total_bytes_uploaded | | [to be completed] | | | | +| virtualserver_total_bytes_downloaded | | [to be completed] | | | | +| virtualserver_total_packetloss_speech | | | [to be completed] | | | +| virtualserver_total_packetloss_keepalive | | | [to be completed] | | | +| virtualserver_total_packetloss_control | | | [to be completed] | | | +| virtualserver clientsonline | ✓(limited) | [to be completed] | | | | +| virtualserver_queryclientsonline | ✓(limited) | [to be completed] | | | | +| virtualserver_channelsonline | ✓(limited) | [to be completed] | | | | +| virtualserver_uptime | | [to be completed] | | | | +| virtualserver_status | ✓ | [to be completed] | | | | +| virtualserver_unique_identifier | | [to be completed] | | | | +| virtualserver_default_server_group | | [to be completed] | | [to be completed] | [to be completed] | +| virtualserver_default_channel_group | | [to be completed] | | [to be completed] | [to be completed] | +| virtualserver_default_channel_admin_group | | [to be completed] | | [to be completed] | | + --- ## 5. Voice Client Anti-Flood @@ -352,26 +465,96 @@ Fields: clid, cldbid, cluid, token, tokencustomset, token1 (group), token2 (0 fo ### 5.2 Flood Points Per Action -**High-cost actions (25 points):** -- `banadd`, `banclient`, `complainadd`, `complaindelall`, `complainlist` -- `channelcreate`, `channeldelete`, `channelmove`, `channeledit` -- `clientmove` (10), `clientkick`, `clientpoke`, `clientedit` -- `servergroupaddclient`, `servergroupdelclient`, `setclientchannelgroup` -- `clientdbdelete`, `clientdbedit`, `clientdbfind` (50!) -- `messageadd`, `messagelist`, `textmessagesend` (15) -- `logview` (50!) +**Action categories and point ranges:** -**Medium-cost actions (5-15 points):** -- Most permission operations: 5 points -- Most group operations: 5 points -- File operations: 5 points (except `ftinitupload`/`ftinitdownload` = 0) -- `channelsubscribe`: 158 points! +| Category | Point Range | Actions | +|---|---|---| +| Zero-cost | 0 | clientdisconnect, clientgetvariables, clientinit, clientinitiv, setwhisperlist, ftgetfilelist, ftinitupload, ftinitdownload, clientmute/clientunmute (conditional), internal client operations | +| Low-cost | 5 | Most permission operations, most group operations, most file operations (except ftinitupload/ftinitdownload), permissionlist (if cached) | +| Medium-cost | 10-15 | clientmove (10), textmessagesend (15), channel subscribe (15-20), set badges on connect (15) | +| High-cost | 25 | banadd, banclient, complainadd, complaindelall, complainlist, channelcreate, channeldelete, channelmove, channeledit, clientkick, clientpoke, clientedit, servergroupaddclient, servergroupdelclient, setclientchannelgroup | +| Very high-cost | 50 | clientdbdelete, clientdbedit, clientdbfind, logview | +| Extreme | 158 | channelsubscribe | -**Zero-cost actions:** -- `clientdisconnect`, `clientgetvariables`, `clientinit`, `clientinitiv` -- `setwhisperlist`, `ftgetfilelist`, `ftinitupload`, `ftinitdownload` -- `clientmute`/`clientunmute` (0 with specific conditions) -- Internal client operations +**Detailed action point table (to be completed from yat.qa/ressourcen/voice-client-anti-flood/):** + +| Action | Points | Notes | +|---|---|---| +| banadd | 25 | [to be completed] | +| banclient | 25 | [to be completed] | +| bandel | [to be completed] | [to be completed] | +| bandelall | [to be completed] | [to be completed] | +| banlist | [to be completed] | [to be completed] | +| channelcreate | 25 | [to be completed] | +| channeldelete | 25 | [to be completed] | +| channeledit | 25 | [to be completed] | +| channellist | [to be completed] | [to be completed] | +| channelmove | 25 | [to be completed] | +| channelsubscribe | 158 | [to be completed] | +| channelunsubscribe | [to be completed] | [to be completed] | +| clientdbdelete | 50 | [to be completed] | +| clientdbedit | 50 | [to be completed] | +| clientdbfind | 50 | [to be completed] | +| clientdblist | [to be completed] | [to be completed] | +| clientedit | 25 | [to be completed] | +| clientgetdbidfromuid | [to be completed] | [to be completed] | +| clientgetnamefromuid | [to be completed] | [to be completed] | +| clientgetuidfromclid | [to be completed] | [to be completed] | +| clientkick | 25 | [to be completed] | +| clientlist | [to be completed] | [to be completed] | +| clientmove | 10 | [to be completed] | +| clientpoke | 25 | [to be completed] | +| complainadd | 25 | [to be completed] | +| complaindelall | 25 | [to be completed] | +| complaindel | [to be completed] | [to be completed] | +| complainlist | 25 | [to be completed] | +| ftcreatedir | [to be completed] | [to be completed] | +| ftdeletefile | [to be completed] | [to be completed] | +| ftgetfileinfo | [to be completed] | [to be completed] | +| ftgetfilelist | 0 | [to be completed] | +| ftinitdownload | 0 | [to be completed] | +| ftinitupload | 0 | [to be completed] | +| ftrenamefile | [to be completed] | [to be completed] | +| gm | [to be completed] | [to be completed] | +| logadd | [to be completed] | [to be completed] | +| logview | 50 | [to be completed] | +| messageadd | [to be completed] | [to be completed] | +| messagedel | [to be completed] | [to be completed] | +| messageget | [to be completed] | [to be completed] | +| messagelist | [to be completed] | [to be completed] | +| messageupdateflag | [to be completed] | [to be completed] | +| permfind | [to be completed] | [to be completed] | +| permget | [to be completed] | [to be completed] | +| permlist | 5 | If not cached; [to be completed] | +| privilegekeyadd | [to be completed] | [to be completed] | +| privilegekeydelete | [to be completed] | [to be completed] | +| privilegekeylist | [to be completed] | [to be completed] | +| privilegekeyuse | [to be completed] | [to be completed] | +| sendtextmessage | [to be completed] | textmessagesend (15); [to be completed] | +| servergroupaddclient | 25 | [to be completed] | +| servergroupaddperm | 5 | [to be completed] | +| servergroupclientlist | [to be completed] | [to be completed] | +| servergroupdelclient | 25 | [to be completed] | +| servergroupdelperm | 5 | [to be completed] | +| servergrouplist | [to be completed] | [to be completed] | +| servergrouppermlist | [to be completed] | [to be completed] | +| setclientchannelgroup | 25 | [to be completed] | +| tokenadd | [to be completed] | [to be completed] | +| tokendelete | [to be completed] | [to be completed] | +| tokenlist | [to be completed] | [to be completed] | +| tokenuse | [to be completed] | [to be completed] | +| whoami | [to be completed] | [to be completed] | + +**Connection sequence point costs:** + +| Step | Points | Notes | +|---|---|---| +| Connection establishment | 80 | Respects `b_client_ignore_antiflood` | +| Default channel join | 10 | [to be completed] | +| Set badges | 15 | [to be completed] | +| permissionlist | 5 | If not cached; [to be completed] | +| clientgetvariables | 0 | [to be completed] | +| Subscribe channels | 15-20 | [to be completed] | ### 5.3 Connection Flow @@ -762,3 +945,59 @@ else: write (x mod 128 OR 128), recurse with x >> 7 --- *Fetched and compiled on 2026-06-11* + +--- + +## 13. Error Code Cross-Reference (YaTQA vs ReSpeak) + +This section cross-references error codes between the YaTQA reference (Section 9) and the ReSpeak/tsdeclarations reference (`docs/references/respeak-protocol-reference.md` Section 2). + +### Discrepancies and Observations + +| Hex | YaTQA Message | ReSpeak Name | ReSpeak Doc | Discrepancy | +|---|---|---|---|---| +| 0x0003 | — (not listed) | `ok_no_update` | *(empty)* | **YaTQA omits** this code entirely. ReSpeak includes it. | +| 0x0004 | — (not listed) | `dont_notify` | *(empty)* | **YaTQA omits** this code. ReSpeak includes it. | +| 0x0005 | — (not listed) | `lib_time_limit_reached` | library time limit reached | **YaTQA omits** this code. ReSpeak includes it. | +| 0x0102 | — (not listed) | `no_network_port_available` | no network port available | **YaTQA omits** this code. ReSpeak includes it. | +| 0x040e | [to be completed] | *(not listed)* | — | **ReSpeak omits** codes 0x040e–0x040f. YaTQA has placeholders. | +| 0x040f | [to be completed] | *(not listed)* | — | **ReSpeak omits**. YaTQA has placeholders. | +| 0x0b0e | [to be completed] | `accounting_to_many_starts` | *(empty)* | **ReSpeak name** has typo "ToMany" → `to_many_starts`. YaTQA has placeholder. | +| 0x0914 | — (not listed) | `sound_read_wave` | read error in wave | **YaTQA omits** this and subsequent sound codes. | +| 0x0915 | — (not listed) | `sound_need_more_data` | there is no sound data for this period | **YaTQA omits**. | +| 0x0916 | — (not listed) | `sound_device_busy` | sound device was busy | **YaTQA omits**. | +| 0x0917 | — (not listed) | `sound_no_data` | there is no sound data for this period | **YaTQA omits**. | +| 0x0918 | — (not listed) | `sound_channel_mask_mismatch` | Channelmask mismatch | **YaTQA omits**. Last YaTQA sound code is 0x0913. | +| 0x1116 | not connected | `provisioning_not_connected` | *(empty)* | YaTQA has message; ReSpeak doc field is empty. | +| 0x1119 | ts3server not found | `provisioning_ts3server_not_found` | *(empty)* | Both present, ReSpeak doc empty. | +| 0x111A | unknown permissionID | `provisioning_no_permission` | unknown permissionID | **Name differs**: YaTQA doesn't have a name column; ReSpeak names it `provisioning_no_permission`. | + +### Coverage Summary + +| Range | YaTQA Codes | ReSpeak Codes | Notes | +|---|---|---|---| +| 0x0000–0x0005 | 3 (0,1,2) | 6 (0–5) | ReSpeak has 3 additional success/info codes | +| 0x0100–0x0102 | 2 | 3 | ReSpeak adds `no_network_port_available` | +| 0x0200–0x0210 | 17 | 17 | **Aligned** | +| 0x0300–0x030f | 16 | 16 | **Aligned** | +| 0x0400–0x0410 | 16+2 placeholders | 14 | YaTQA has 2 codes (0x040e, 0x040f) ReSpeak omits; ReSpeak omits 0x040e–0x040f | +| 0x0500–0x0505 | 6 | 6 | **Aligned** | +| 0x0600–0x0607 | 8 | 8 | **Aligned** | +| 0x0700–0x070c | 13 | 13 | **Aligned** | +| 0x0800–0x0817 | 24 | 24 | **Aligned** | +| 0x0900–0x0918 | 20 (YaTQA: 20 stops at 0x0913) | 25 | ReSpeak has 5 additional sound codes (0x0914–0x0918) | +| 0x0a00–0x0a0c | 13 | 13 | **Aligned** | +| 0x0b00–0x0b0e | 14+1 placeholder | 15 | Mostly aligned; 0x0b0e has placeholder in YaTQA | +| 0x0c00 | 1 | 1 | **Aligned** | +| 0x0d00–0x0d03 | 4 | 4 | **Aligned** | +| 0x0e00 | 1 | 1 | **Aligned** | +| 0x0f00 | 1 | 1 | **Aligned** | +| 0x1000–0x1007 | 1+7 placeholders | 8 | YaTQA has 7 `[to be completed]`; ReSpeak has names for all | +| 0x1100–0x111A | 27 | 27 | **Aligned** | + +### Recommendations for Chanora + +- Use ReSpeak `Errors.csv` as the **primary** error code source (machine-readable, complete) +- Use YaTQA descriptions as **supplementary** documentation (German-source detail) +- Handle codes 0x0003–0x0005 as success/info variants, not errors +- Map unknown/placeholder codes (0x040e, 0x040f, 0x0b0e, 0x1001–0x1007) to a generic "unknown server error" category in Chanora's protocol error normalization (SRS-048)