Purpose
TALK is the transcript engine. Every word governed. Every session ledgered. Every stream merkle-hashed.
TALK powers all conversation in CANONIC — from AI chat to human messaging to transcript ingestion. The service worker at api.canonic.org routes every stream through /transcript/ingest, hashes it, and writes it to the ledger. That’s the engine.
ATULISMS was built on TALK. 48 YouTube transcripts ingested, merkle-hashed, compiled into 13 chapters. The first governed memorial book — powered by the same transcript pipeline that governs every conversation on the platform.
Structure
Root TALK domains:
BLANDFORD/, BRYANSTON/, FINCHAT/, LAWCHAT/, MAMMOCHAT/, MEDCHAT/, ONCOCHAT/, REALTY/, SLOANE/.
User dashboards (discovered from USER principal scopes):
Every USER principal in hadleylab-canonic MUST have a TALK dashboard surface.
Dashboard route: /CHAT/{USER}/ compiled from CANON.json + index.html.
System prompt MUST include: identity, active deals, missions, network, and rules.
System prompt MUST declare CAPABILITIES section with honest boundaries.
Discovery: scan hadleylab-canonic for USER principal scopes → compile dashboards.
Session ledger (server-side):
Every TALK conversation turn MUST be logged to POST /talk/ledger.
Ledger entries: { ts, trace_id, user, assistant, provider, elapsed_ms }.
Ledger is readable via GET /talk/ledger?scope={SCOPE}.
Storage: Cloudflare KV (TALK_KV), capped at 1000 entries per scope.
Cross-user messaging:
Users communicate via POST /talk/send with { from, to, message }.
Each user has an inbox: GET /talk/inbox?scope={SCOPE}.
Messages are acknowledged via POST /talk/ack.
CANON.json MUST declare users[] array for routing discovery.
AI responses containing @USERNAME patterns are auto-delivered as messages.
talk.js polls inbox every 30 seconds and renders incoming messages inline.
Required closure artifacts per scope:
CANON.md, README.md, {SCOPE}.md, VOCAB.md, ROADMAP.md, COVERAGE.md, LEARNING.md.
Learning lane per governed scope:
LEARNING.md at the scope root is terminal and SHALL NOT nest further LEARNING/.
Routes
web_docs: https://hadleylab-canonic.github.io/
web_surface: https://hadleylab-canonic.github.io/CHAT/
magic: magic://hadleylab-canonic.github.io/CHAT/
API
POST /talk/ledger — log conversation turn
GET /talk/ledger?scope=X — read session ledger
POST /talk/send — cross-user message delivery
GET /talk/inbox?scope=X — read inbox
POST /talk/ack — acknowledge messages
GET /omics/ncbi/* — NCBI E-utilities proxy (GEO, ClinVar, PubMed)
GET /omics/pharmgkb/* — PharmGKB proxy (drug-gene interactions)
Ecosystem Connectivity
- Upstream:
SERVICESgovernance contracts andDEXTERscope inheritance. - Runtime: TALK session ledgers and governed service learning artifacts.
- Frontend: governed TALK catalog sync; all governed TALK scopes must be surfaced.
- Ledger plane: TALK consumes governed conversation/session artifacts only.
- Messaging plane: cross-user communication via governed inbox/outbox (KV-backed).
Pages
| Page | Sections |
|---|---|
| Overview | Purpose, Structure |
| Persona | Persona Contract |
| Composability | Composability Contract |
| Ecosystem | Routes, API, Ecosystem Connectivity |
Default: Overview.
Persona Contract
Persona is the governed voice of TALK. Industry determines the domain. Persona determines the tone.
Fields
| Field | Type | Description |
|---|---|---|
| tone | string | warm, professional, narrative, technical, domain-specific |
| audience | string | who is being addressed |
| voice | string | second-person, third-person, first-person-plural |
| warmth | string | personal, collegial, formal |
| context | string | what this scope is for |
Governance
Persona is declared via ## Persona table in CANON.md. The compiler resolves persona by walking the inherits chain — leaf wins, falls through to parent.
Resolution order (highest priority wins):
- SHOP.md
systempromptfield (explicit override — e.g. ATULISMS) ## Personain child CANON.md (scope-specific override)## Personain parent CANON.md (type-default)- Compiler generic fallback (no persona injected)
Type Defaults
| Scope Type | Tone | Audience | Voice | Warmth |
|---|---|---|---|---|
| DEAL | warm | the person named in the deal | second-person | personal |
| DECK | professional | investors, partners, institutions | first-person-plural | collegial |
| BOOK | narrative | readers | second-person | personal |
| CHAT | domain-specific | industry practitioners | second-person | collegial |
| VITAE | professional | colleagues and recruiters | third-person | collegial |
| SERVICE | technical | developers, operators, auditors | third-person | formal |
Type defaults live in the parent CANON.md for each scope type (e.g. DEALS/CANON.md, DECKS/CANON.md). Any child scope can override by declaring its own ## Persona.
Composability Contract
TALK is a composable service. Any page includes it via frontmatter. Same pattern as SHOP.
Frontmatter
| Key | Values | Behavior |
|---|---|---|
| talk | true | Full conversation panel — chat UI + session ledger + messaging |
| talk | inline | Inline conversation card only (e.g. BOOKS pages) |
| talk | side | Side panel conversation interface |
| talk | false/omitted | No conversation UI |
Include
`
` renders from page.talk + CANON.json.
ONE include. ONE script. ONE stylesheet.
Data
CANON.json per scope — compiled from governance artifacts.
Required fields: systemPrompt, breadcrumbs, brand, welcome, disclaimer.
Conversation Card (inline)
One card. One CTA.
| Element | Rule |
|---|---|
| Brand | Channel identity from CANON.json brand |
| Welcome | First-load greeting from CANON.json welcome |
| CTA | “Talk” — opens conversation. Single button. |
| Disclaimer | AI-generated content notice |
Side Panel (side)
Persistent conversation panel alongside page content.
| Element | Rule |
|---|---|
| Position | Right side of viewport |
| Context | Page scope feeds system prompt |
| Ledger | Every turn logged to POST /talk/ledger |
| Collapse | User can collapse/expand |
Full Panel (true)
Full conversation interface. Dedicated page.
| Element | Rule |
|---|---|
| Layout | Full viewport conversation UI |
| Messaging | Cross-user messaging enabled |
| Ledger | Full session history visible |
| Inbox | User inbox rendered inline |
Instance Pattern
TALK instances are CHAT channels. They live at USER scope:
{USER}/CHAT/
{CHANNEL}/ ← channel directories (MAMMOCHAT/, MEDCHAT/, etc.)
CHAT.md ← instance spec
CANON.md ← scope governance
COVERAGE.md ← compliance
LEARNING.md ← learning trail
README.md ← scope readme
ROADMAP.md ← scope roadmap
VOCAB.md ← scope vocabulary
| *TALK | SPEC | SERVICES* |