*Measured 2026-08-30 against the live tree. Owner's directive: Discord was the scaffolding that
started the project; Oracle OS is the platform; port everything across, then delete the Discord path.*
---
Its five cards call five endpoints on the dashboard server ([internal module]),
and two of them read Discord channels, not KAI:
[internal endpoint] | epistemic cells joined with raw posts from #kai-dreams | yes |[internal endpoint] | recent #kai-training posts (channel 1513342578777395351), db fallback | yes |[internal endpoint] | posts into #kai-training via the bot. Its own comment: *"There is NO live interactive tutor endpoint"* | yes — the box does nothing |[internal endpoint] | [internal module] on disk | no |[internal endpoint] | flag + lock files on disk, .env schedule window | no |[internal endpoint] | proxy of the engine's [internal endpoint] + [internal endpoint], using kai.mjs's Discord formulas | no |So the Learning area is not broken. It is pointed at a platform that is no longer running.
command-center-server.mjs defines 280 endpoints. 39 of them are Discord-dependent — they
reference the Discord client, a channel id, or the guild:
[internal endpoint] [internal endpoint] [internal endpoint] [internal endpoint] [internal endpoint]
[internal endpoint] [internal endpoint] [internal endpoint] [internal endpoint]
[internal endpoint] [internal endpoint] [internal endpoint] [internal endpoint]
[internal endpoint] [internal endpoint] [internal endpoint] [internal endpoint] [internal endpoint]
[internal endpoint] [internal endpoint] [internal endpoint] [internal endpoint]
[internal endpoint] [internal endpoint] [internal endpoint] [internal endpoint]
[internal endpoint] [internal endpoint] [internal endpoint] [internal endpoint]
[internal endpoint] + the 9 [internal endpoint]* routes
Not all need porting. They fall into three groups:
A. Port the data source (the Learning area lives here). [internal endpoint], [internal endpoint],
[internal endpoint], [internal endpoint]. Each reads or writes a Discord channel for something KAI already
holds or could hold locally:
[internal endpoint] and [internal endpoint] exist on the Rust side, and dream_count is persisted. Read the
lattice, drop the channel join.
[internal module] already records turns, and the tutoring pipeline writes pipeline_curriculum.json. Both are on disk. Read those.
endpoint at all, which is why the box only ever posted to a channel. The Oracle path now has a
real reply pipeline (v9.10.846), so the tutor box can finally talk to KAI directly.
B. Delete outright. The 9 [internal endpoint]* routes, [internal endpoint],
[internal endpoint], [internal endpoint], [internal endpoint]*, [internal endpoint],
[internal endpoint]. These describe Discord itself; nothing in Oracle OS needs them.
C. Check before touching. [internal endpoint], [internal endpoint], [internal endpoint], [internal endpoint],
[internal endpoint], [internal endpoint], [internal endpoint]*, [internal endpoint]*, [internal endpoint],
[internal endpoint]*, [internal endpoint]*. These are Oracle OS features that happen to *also* consult
Discord — usually to resolve a user or post a notification. Each needs its Discord branch removed
without removing the feature.
Already handled in v9.10.846: the reply pipeline that reaches KAI's own voice existed only in
handle_discord_turn, so the Oracle path could not speak at all in RSHL-native mode. It now calls
rshl_lattice_reply(), which runs the same stages in the same order.
Still Discord-only in [internal module], from KAI-GOAL-generative-mind.md §7:
the turn router, the tutoring direct-recall branch, native_stack_reply, training mode, attachment
and vision handling, and store_or_reinforce of the human's own message — which is how KAI learns
from a conversation at all. Verify that last one first. If the Oracle path does not store the
turn, KAI has not been learning from anything the owner has said to him in Oracle OS.
1. Build and verify v9.10.845 / v9.10.846. Two Rust changes are outstanding and unbuilt; nothing
else should be stacked on them until a real conversation confirms they work.
2. Verify store_or_reinforce on the Oracle path. This is the highest-stakes unknown on the list.
3. Group A, one endpoint at a time, each verified in the Learning area before the next.
4. Group C, removing Discord branches without removing features.
5. Group B deleted, plus [internal endpoint], handle_discord_turn, and tools/oracle-discord/bots/,
in one commit that names everything removed.
Do not delete first and port after. The Discord path is still the only working reference for
what a complete KAI turn looks like.