# X_CHANNEL_LITERAL

## Means

a channel topic is spelled outside its `channel()` declaration

## Typical cause

a string or template literal as the first argument of `useChannel`, `publishRecords`, `subscribe`, `unsubscribe` or `publish`, or a topic built by `+` or a `${…}` template. The publisher and the subscriber then drift onto two spellings, and frames arrive nowhere with no error on either side. Tests are fixtures and never reported. `As of 2026-09-22` it is standalone and **not yet a step of the gate**

## Fix

declare it once with `channel(name, { params, policy })` from `@ultimat3/realtime` and pass the declaration: `useChannel(decl, params)` / `publishRecords(decl, params, entity, rows)`, then `bun run channel-literals --json`

[CLI and verify](/error-codes#cli-and-verify)
