read_reference/options: inconsistent 'value' semantics and mojibake in language names #20

Closed
opened 2026-09-19 08:22:33 +01:00 by gronod · 0 comments
Owner

Summary

Reference projections (read_reference and read_integration options) emit an inconsistent value field — sometimes the numeric id, sometimes the display name, sometimes an unrelated field (logo path, boolean) — and languages shows character-encoding corruption ("??????").

Environment

Reproduction

read_reference {"action":"genres","media":"movie"}        // Thriller: value "Thriller" (should be 53)
read_reference {"action":"genres","media":"tv"}            // Reality: value "Reality" (should be 10764)
read_reference {"action":"languages"}                        // several empty values; Kirghiz name "??????"
read_reference {"action":"watch_providers","media":"movie"} // value: id | name | logoPath mixed
read_integration {"action":"options","service":"radarr","resource":"profiles"} // id 6: value false

Expected

value holds a stable, typed meaning per category (e.g. the upstream id or the display value), and non-ASCII names decode correctly.

Actual

  • value falls back across heterogeneous fields: numeric id, name string, logoPath, even a boolean — so consumers can't rely on its type or semantics.
  • languages item for Kirghiz shows name: "??????" — upstream mojibake passed through (likely upstream charset loss; noted for completeness).

Cause

refOf picks the first present candidate from []string{"value"}-style fallback lists; when upstream lacks the preferred field an arbitrary sibling leaks into value. The mojibake is likely upstream data, but the tool should arguably not emit ?????? silently.

Correlation IDs

992602f2752d576a73cc778a (watch_providers), 0a66e063115859a57f50d178 (radarr profiles), f514f879938a27b3e3e7b200 (countries OK), plus genres/languages sweep calls

## Summary Reference projections (`read_reference` and `read_integration` `options`) emit an inconsistent `value` field — sometimes the numeric id, sometimes the display name, sometimes an unrelated field (logo path, boolean) — and `languages` shows character-encoding corruption (`"??????"`). ## Environment - Binary: deployed darwin-amd64 build from `develop` @ `d047d76` - Ombi: 4.53.10 (https://ombi.i3omb.com), JWT auth ## Reproduction ```json read_reference {"action":"genres","media":"movie"} // Thriller: value "Thriller" (should be 53) read_reference {"action":"genres","media":"tv"} // Reality: value "Reality" (should be 10764) read_reference {"action":"languages"} // several empty values; Kirghiz name "??????" read_reference {"action":"watch_providers","media":"movie"} // value: id | name | logoPath mixed read_integration {"action":"options","service":"radarr","resource":"profiles"} // id 6: value false ``` ## Expected `value` holds a stable, typed meaning per category (e.g. the upstream id or the display value), and non-ASCII names decode correctly. ## Actual - `value` falls back across heterogeneous fields: numeric id, name string, `logoPath`, even a boolean — so consumers can't rely on its type or semantics. - `languages` item for Kirghiz shows `name: "??????"` — upstream mojibake passed through (likely upstream charset loss; noted for completeness). ## Cause `refOf` picks the first present candidate from `[]string{"value"}`-style fallback lists; when upstream lacks the preferred field an arbitrary sibling leaks into `value`. The mojibake is likely upstream data, but the tool should arguably not emit `??????` silently. ## Correlation IDs `992602f2752d576a73cc778a` (watch_providers), `0a66e063115859a57f50d178` (radarr profiles), `f514f879938a27b3e3e7b200` (countries OK), plus genres/languages sweep calls
gronod added this to the M6 — Integration options and server-id discovery milestone 2026-09-19 08:58:05 +01:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Reference: gronod/ombi-mcp#20