# DeepSeek Harness Tavern Renderer Specification ## 1. Scope and source lock This plugin reproduces the message-display subset requested for DeepSeek Harness. It does not copy SillyTavern's character editor, prompt construction, slash-command runtime, lorebook, extension manager, or backend. The reverse-engineered source snapshots are fixed so later upstream changes cannot silently change this specification: - SillyTavern `SillyTavern/SillyTavern` commit `8172dcd0ee672d3cd9a5e5f7af134f91a45cd2b8` (working tree reports version 1.18.0). - DeepSeek Harness `deepseek-ai/DeepSeek-Harness` commit `47f943859bef60e4160492346772ded9b24f765a`. Paths and line numbers below refer to those commits. The current Harness adapter was separately reviewed against npm `0.1.2-rc.1` on 2026-09-07: `ui-chat` owns the keyed node slot and `chat` locale, and images use the owner-provided `renderMessageImages`. Session v2 in `0.1.3-alpha.1` is outside this compatibility claim. ## 2. SillyTavern display pipeline `public/script.js:1753` defines `messageFormatting()`. For ordinary displayed chat text its relevant order is: 1. The first character message may run `substituteParams()` (`public/script.js:1761`). 2. Prompt-bias text is removed. 3. Display regex scripts run through `getRegexedString(..., { isMarkdown: true })` (`public/script.js:1809`). 4. Optional generated-Markdown repairs, HTML-tag encoding, quote wrapping, and TeX compatibility transforms run. 5. Showdown converts Markdown to HTML (`public/script.js:521-537`, `1816-1891`). 6. Optional character-name prefixes are removed. 7. `