Nishi Family › Compare › AI Companion

Nishi Compare · capabilities, evidence and delivery

AI Companion

Compare capabilities and delivery evidence. Source discovery, qualification, deployment and accepted outcomes are separate; an open contract names work still to verify.

The sovereign companion (one daemon for chat and render on a 16 GB card, typed present-tense state, salience-scored long-term memory, relationship state, card-compiled persona, isolated NSFW realm) measured against SillyTavern, JanitorAI, Character.AI, Replika and Kindroid. Found by measurement 2026-08-30: the memory, relationship and state organs are promoted and registered and the live chat turn never consults them -- wiring them in (CC0) is the cheapest intelligence gain on any board. Voice, video and mixed-LLM routing are watched contracts.

Overview

The purpose, declared position and evidence coverage of this domain. Source presence and completed acceptance are different measures.

Where we are. Measured on 2026-08-30: one sovereign daemon carries chat and render on a 16 GB card (dispatch honesty and async submit deployed that day, gen G17/G18); typed present-tense state (nx_elara_state), salience-scored long-term memory (nx_elara_memory), relationship axes (nx_charmem), card-compiled persona (nx_card_compile) and durable chat history (nx_chat_store) all exist, promoted and registered. THE KEYSTONE GAP was found by import-list measurement and CLOSED the same day: CC0 is LIVE (every chat turn composes memory, relationship and present-tense state; nx_gen_mind_gate 14/14 on the NAS), CC6 mixed-LLM routing is LIVE (nx_llm_route_gate 15/15; no active route rows until a backend is declared), the /gen page is EMITTED (nx_gen_ui_gate 13/13 incl. served-equals-emitted), and chat rides the async job lane with a data-driven budget after a 17.6 s completion was measured against the 15 s edge window. LATER THE SAME DAY: the swipe loop (CC4: regenerate as a sibling, select, edit, history -- 17/17), the lorebook plane (CC3: keyed world facts injected on trigger under a loud budget -- 16/16) and Tavern V2 card import (CC2: every field mapped or refused by name, age fail-closed, export byte-stable -- 19/19, RED 5/19 against the old compiler) are LIVE and gate-proven on the NAS; the async submit's lingering-socket defect the G18 tooth found is fixed (daemon a36b5d27, dispatch gate 25/25). Still open: streaming (CC1, BLOCKED AT THE WORKER -- stream:true returns one buffered body), group scenes, voice, video, and the LLM-diffusion VRAM residency governor is proven only on a simulator.

Where we need to go. The operator charter verbatim: parity with the best of the tavern/companion field for NSFW and SFW, full synthetic interaction beyond the Replika class -- the companion intelligent (memory, relationship and state in EVERY turn), mixed LLM with image gen, then video gen and audio gen, all sovereign and all proven by rulers rather than by eye.

The unit. 1 u = one measured session-leg. Calibration: gen G17+G18 (dispatch honesty + async submit) went from source to DEPLOYED-GREEN listen=VERIFIED in one leg on 2026-08-30.
Cost to an intelligent companion (memory, relationship and state in every turn): 2 u. CC0 alone. The organs exist, promoted and registered; the chat turn simply never consults them. Wiring, not research -- the cheapest intelligence gain on any board in the estate.
Cost to tavern-class chat parity: 8.5 u. CC0 plus streaming (CC1), community card import (CC2), lorebooks (CC3) and the swipe loop (CC4) -- the field's table stakes, each a watch row with a pre-declared done-rule.
Cost to full multimodal presence (voice both ways, short video, one-card VRAM orchestration): 23.5 u. The honest large number. Sovereign TTS and ASR are research-class rungs (4 u and 3 u), video generation is BLOCKED-EXTERNAL on a 16 GB img2vid model acquisition behind the G16 contamination screen, and the residency TTL (CC10) is the gen G12 contract shared verbatim.

Research bar. SillyTavern documentation is measured on the local power-user bar: V2 character cards, World Info lorebooks, swipes, group chats, extension TTS and image gen. Theirs: vendor docs as read 2026-08-30 -- MIRROR OWED, no bench number exists on either side. Ours: our c1 column reads from these docs; the refs rung will pin the mirror.

Research bar. Replika (the mass-market companion bar) is measured on long-term memory as the flagship, voice calls, avatar presence. Theirs: vendor claim as read 2026-08-30 -- MIRROR OWED. Ours: nx_companion_sota probes OUR memory and state organs against this bar's axes and refuses HAVE on a failed probe.

Research bar. Generative Agents memory stream is measured on the research architecture for a companion that remembers: a memory stream retrieved by recency x importance x relevance, periodic reflection, planning [@genagents]. Theirs: qualitative architecture; the paper's own believability study is read from the mirror when the rung runs. Ours: CC0 wires salience recall (the importance leg) into the turn; recency and relevance weighting and reflection are the frontier rungs after it -- nothing here is claimed until a judged set measures it.

Research bar. MemGPT tiered context is measured on OS-style virtual context management: a bounded window pages long-term memory in and out so the relationship is unbounded [@memgpt]. Theirs: qualitative; the paper's document-analysis and multi-session chat results are read from the mirror when the rung runs. Ours: our elaramem- plane is the archival tier; the paging policy into a 400-token reply budget is the frontier rung.

Research bar. CharacterEval role-play referee is measured on a published multi-dimensional benchmark for role-playing conversational agents [@charactereval]. Theirs: Chinese-language benchmark; its metric axes transfer, its dialogues do not. Ours: the grade-1 referee for this board is OWED: an English judged set on the same axes, run by nx_companion_sota, published with n and an interval -- until then every companion claim here is grade 2 at best.

Research bar. F5-TTS flow-matching speech is measured on the open non-autoregressive flow-matching TTS bar [@f5tts]. Theirs: numbers read from the mirror when CC7 runs. Ours: CC7 sv_speak is priced as a research-class rung; acceptance is the CC8 round trip, never a listening impression.

Research bar. Whisper weakly-supervised recognition is measured on large-scale weakly-supervised speech recognition, the recognizer bar for CC8 [@whisper]. Theirs: numbers read from the mirror when CC8 runs. Ours: CC8 sv_listen on our own GPU; the fixed sentence set is recorded once and the word-match floor is pre-declared.

Research bar. LTX-Video real-time latent diffusion is measured on real-time video latent diffusion, the 16 GB-class img2vid candidate for CC9 [@ltxvideo]. Theirs: numbers read from the mirror when CC9 is unblocked. Ours: BLOCKED-EXTERNAL: the model must be acquired and pass the G16 contamination screen (one fixed-seed clip) before any clip is rendered.

Latest recorded release

No valid dated release entry is recorded for this domain.

Release entries describe recorded changes; they do not establish that every capability passed evaluation.

13 of 20 capability source symbols found|0 of them authored stronger-claims|7 open|coverage 650/1000|adoption 6 full / 7 partial

Evidence profile — what the gaps on this board actually are

Measured by nx_swcompare_evidence, read back by nx_evprofile_lib. Every figure is a count with its denominator — there is deliberately no score, no grade and no percentage anywhere in this band, because a stored scalar is a field a seat can edit and a counted partition is not.

evidence|grounded 13/14|unsupported 1|gates green 5/5|proven able to fail 5/5|never bitten 0|green at 0/0 0|open gaps 6|of them unnamed 0|of them proof withheld 0|flips ready 0

proven able to fail counts the gates that have a RECORDED RED — nx_gate_bite mutated the gate subject, rebuilt it, watched the gate go red, and that record is inside the shared TTL. never bitten is its complement over the same denominator: those gates ran and were green, and nothing has ever shown them able to detect anything, so their green is a statement about this run and not about the gate. green at 0/0 is a separate and much weaker observation — the gate printed GREEN on a zero denominator, so its own tooth counter says it examined nothing. A gate can be green, non-zero, and still never bitten; that is the common case and it is now visible instead of implied.

partition: grounded + unsupported = 14 vs present 14 · named + unnamed + withheld = 6 vs open 6 · both reconcile

liar-kill conj=gPQN · first failing conjunct: grounded

graded document: BUILDROOT tree, 16971 bytes · gates map: PRIMARY · stamped 0d 13h ago · source ../knowledge/status/evstamp_companionchat.verdict

Gap classWhat it is, and the work it names
UNSUPPORTED-CLAIMA row published as measured names a symbol that is NOT in the organ file it cites. This is the one class worse than an open gap, because it is a published claim carrying a source line beside it as apparent proof.
This band reports the referee counts. The per-axis worklist rows — which axis is unsupported, which watch is ready to flip, which gap is unnamed — are printed by nx_swcompare_evidence companionchat itself and are not carried on the stamp, so this page names the classes and the producer names the rows. That split is stated rather than hidden: a count without a worklist is not actionable, and this band is honest about which half of that it is.

Production map

Follow the dependencies, declared acceptance criteria and recorded priorities. Inspect source binding before treating a rank as executable work.

Ranking source binding: PLAN_MATRIX_BOUND_ONLY. Recorded priorities require current acceptance evidence and resource checks before execution.

Ranking matches the captured plan and matrix only. Latest execution outcome, research freshness, accepted delivery and investment return are unverified.

Recorded priority estimates

Order from nx_compare_rank (nx_dr_ocm: (deficit + cost-of-delay + option + enables) x sponsor x self-sufficiency x momentum / cost). FINISH rows are rungs whose symbol is present but whose organ is short of full adoption: listed before new work by this heuristic. Priority is not measured delivery cost or execution readiness. Stamp: # asof=1790082109 domain=companionchat target_version=1.0 rungs=11 done=5 open=6 finish=1 ranker=nx_dr_ocm

#StageRungPriorityDerivation
FFINISHCommunity card import (CC2) ccm_card_import dossierREGISTERED-DARKcallable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
#11.0Streaming reply (CC1) go_chat_stream dossier600v=9 m=1 c=15
#2laterGroup scenes (CC5) go_group_chat dossier400v=4 m=2 c=20
#3laterShe hears (CC8) sv_listen dossier200v=6 m=1 c=30
#4laterThe companion speaks (CC7) sv_speak dossier150v=6 m=1 c=40
#5laterResidency TTL on one card (CC10) mx_swap_ttl dossier100v=1 m=1 c=10
#6laterShort video clips (CC9) vg_clip dossier33v=1 m=1 c=30

Declared roadmap — contract, acceptance, executor, effort

RungCloses withDefinition of done (pre-declared)ExecutorEst.
Wire the mind into the turn (CC0)go_mind_contextSTATUS 2026-08-30: DONE-RULE MET -- nx_gen_mind_gate GREEN 14/14 on the NAS via /api/gate_run; the daemon calling go_mind_context in every chat turn and go_mind_remember after every reply is LIVE (sha 1af1cf92, audited pre-deploy override over four unrelated RED domains). DONE-RULE: The composed chat prompt provably contains em_recall hits, cm_ctx relationship lines and es_context typed state whenever those stores hold data for the session, proven by a GPU-free probe against the real data files; a neg-control with empty stores must compose NO fabricated memory lines. The three organs stop being REGISTERED-DARK by construction because the serving path forks them.Organ2 u
Streaming reply (CC1)go_chat_streamSTATUS 2026-08-30: BLOCKED-AT-WORKER, measured -- the GPU worker answers stream:true with one buffered JSON body (generation_time_ms=10709 for three words on a shared card), so the daemon has nothing to relay; the unblock is a streaming backend (CC6 route table) or our own worker lane, never a re-chunked completed reply. DONE-RULE: First visible token in the browser under 2 s on a warm LLM; the completed streamed reply is byte-identical to the non-streamed control for the same seed and prompt; the gateway relays chunked transfer without buffering the whole body.Organ1.5 u
Community card import (CC2)ccm_card_importSTATUS 2026-08-30: DONE-RULE MET -- nx_card_import_gate GREEN 19/19 on the NAS against the promoted compiler (RED 5/19 against the pre-CC2 binary), every V2 field mapped or refused by name in the ledger, age fail-closed with a card-declared age beating a permissive argument, export byte-stable by hash; the PNG chunk walk shipped as nx_png_chunks for G15 to compose. DONE-RULE: A Tavern V2 card PNG (base64 JSON in a tEXt chunk) imports to the card SSOT with every field mapped or explicitly refused by name; the age gate stays fail-closed (an under-18 card refuses exactly as the native compiler does); export round-trips byte-stable. Composes the PNG chunk walk gen G15 also needs -- extract, never a second parser.Organ2 u
Lorebook plane (CC3)
after CC0
em_lorebookSTATUS 2026-08-30: DONE-RULE MET -- nx_lorebook_gate GREEN 16/16 on the NAS via /api/gate_run (trigger-only injection, once per turn, zero bytes when untouched, malformed rows counted, over-budget refuses loudly with no partial injection); em_lorebook composes the [WORLD] block inside nx_companion_mind and the daemon carrying it is LIVE (sha 5ef619e9); knowledge/lorebook.conf ships with no active rows, the operator authors the world. DONE-RULE: Keyed world entries as data on the memory plane with trigger terms and an insertion budget; a turn touching a trigger injects the entry, a turn that does not touches nothing (neg-control); budget overflow refuses loudly rather than silently truncating the persona.Organ1.5 u
The swipe loop (CC4)
after CC0
go_handle_regenSTATUS 2026-08-30: DONE-RULE MET -- nx_chat_swipe_gate GREEN 17/17 on the NAS via /api/gate_run; the regenerate, select, edit and history routes are LIVE (daemon sha 5ef619e9) and the emitted page carries the swipe toolbar; symbol corrected from go_chat_swipe to the shipped entry go_handle_regen. DONE-RULE: Regenerate produces a SIBLING reply row (never overwrites), branch selection persists in history, and the history partition (mainline plus branches) sums and is printed; edit is additive with the original retained.Organ1.5 u
Group scenes (CC5)
after CC0
go_group_chatTwo or more companions with separate cards speak in one room with a deterministic speaker-selection rule as data; each turn's prompt carries only that speaker's identity and state (leak between companions is the neg-control).Organ2 u
Mixed-LLM routing (CC6)go_llm_routeSTATUS 2026-08-30: nx_llm_route lib written; nx_llm_route_gate GREEN 15/15 on the sovereign toolchain (trigger row, first-row-wins, case-insensitive, star default, neg-controls for no-trigger / absent conf / malformed target / empty turn, prepend order, four provenance labels); knowledge/llm_routes.conf shipped with NO active rows so production is unchanged until a backend is declared; the orchestrator prepends the routed candidate and stamps model_route on every reply (daemon compile-proven; NAS build queued behind admission). DONE-RULE: A route table as data maps turn classes to backends (local encoder-LLM, any configured stronger endpoint); an absent backend refuses by name and falls back to local, never silently; per-turn provenance records which model answered. Ties to /compare/extllm.Organ2 u
The companion speaks (CC7)sv_speakSovereign TTS: on a fixed 20-sentence set the synthesized audio round-trips through CC8's recognizer at or above a pre-declared word-match floor, and a silence/duration sanity tooth refuses empty audio; until CC8 lands the interim bar is non-silence plus duration proportional to text, declared as interim.Organ4 u
She hears (CC8)sv_listenSpeech to text on our own GPU: the fixed sentence set recorded once, recognized at or above the same pre-declared floor; the CC7 accept test becomes the round trip.Local model3 u
Short video clips (CC9)
after gen:G16
vg_clipBLOCKED-EXTERNAL until a 16 GB-class img2vid model is acquired AND passes the G16 contamination screen; then an N-frame clip from one identity render at a declared fps, identity judged per frame by nx_charjudge at or above a floor calibrated on stills, partition (frames judged = frames emitted) printed.Local model3 u
Residency TTL on one card (CC10)mx_swap_ttlShared verbatim with /compare/gen G12: LLM and diffusion time-share the 16 GB card under a residency TTL, VRAM per model measured and published; the simulator-proven policy (mx_run) drives the real worker.Organ1 u

Milestones

MilestoneRungsCumulative
M0 · Intelligence wiredCC02 u
M1 · Chat parity coreCC1,CC2,CC3,CC48.5 u
M2 · VoicesCC7,CC815.5 u
M3 · Ensemble and routingCC5,CC6,CC1020.5 u
M4 · MotionCC923.5 u
Ladder verdict. NOT DECLARED. This board names no dated best-in-class or frontier target and no rung roles (sotatarget and rungrole rows on its plan); the ranker labels it NO-LADDER until it does, and until then its rungs climb toward a target nobody has written down. Bars read NO-BAR against the current month 2026-10.
Bar freshness, counted
ClassCountNote
bars0sotabar rows on the plan
fresh0the bar month is the current month
attested0an older bar with a this-month barscan reporting no newer entry
stale0a this-month scan saw a newer month the bar ignores
unattested0nobody looked this month
malformed0a sotabar row missing a field
duplicate0bar ids an earlier row already carries
bars, summed0RECONCILED: the parts sum to the total 0
current month2026-10the month every bar is judged against
Treatment verdict. NOT DECLARED. No rung on this board declares its three-step treatment (a treat row naming the MCP row, the API route, the primitive it composes, the workflow that composes it and the agent beat that runs it); the ranker labels every rung TREATMENT-UNDECLARED until it does.

Inspect a rung and its prerequisites

Declared nodes 11. Rank input binding: PLAN_MATRIX_BOUND_ONLY. Dependency order is authored. Implementation, acceptance evidence, authority and resource readiness are unverified. No action is recommended or dispatched here.

Plan SHA-256 9b9d0febe32554a323648bf9c8f768cb5185cda9adf3362457efcd4fe00663a1. Target rows 0; role rows 0. Existing risks and release worklog retain their own scope; no node completion is inferred.

Runtime observation coverage: 0 of 11 rungs have current, identity-bound execution observations. Observation may report RED. Accepted completion remains unknown; source presence, qualification and deployment do not establish it.

Use Enter or Space on a rung to inspect its contract. Prerequisite links locate another rung in this list; open its summary to inspect it. Estimates are authored effort, not forecasts.

  1. CC0 — Wire the mind into the turn

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: go_mind_context

    Acceptance: STATUS 2026-08-30: DONE-RULE MET -- nx_gen_mind_gate GREEN 14/14 on the NAS via /api/gate_run; the daemon calling go_mind_context in every chat turn and go_mind_remember after every reply is LIVE (sha 1af1cf92, audited pre-deploy override over four unrelated RED domains). DONE-RULE: The composed chat prompt provably contains em_recall hits, cm_ctx relationship lines and es_context typed state whenever those stores hold data for the session, proven by a GPU-free probe against the real data files; a neg-control with empty stores must compose NO fabricated memory lines. The three organs stop being REGISTERED-DARK by construction because the serving path forks them.

    Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

    Runtime observation: UNKNOWN; outcome UNKNOWN; observed epoch -1. Declared owner: . Receipt , SHA-256 . Identity-bound observation is not accepted completion. Qualification and deployment remain unverified by this projection.

  2. CC1 — Streaming reply

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: go_chat_stream

    Acceptance: STATUS 2026-08-30: BLOCKED-AT-WORKER, measured -- the GPU worker answers stream:true with one buffered JSON body (generation_time_ms=10709 for three words on a shared card), so the daemon has nothing to relay; the unblock is a streaming backend (CC6 route table) or our own worker lane, never a re-chunked completed reply. DONE-RULE: First visible token in the browser under 2 s on a warm LLM; the completed streamed reply is byte-identical to the non-streamed control for the same seed and prompt; the gateway relays chunked transfer without buffering the whole body.

    Authored effort: 1.5. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

    Runtime observation: UNKNOWN; outcome UNKNOWN; observed epoch -1. Declared owner: . Receipt , SHA-256 . Identity-bound observation is not accepted completion. Qualification and deployment remain unverified by this projection.

  3. CC2 — Community card import

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: ccm_card_import

    Acceptance: STATUS 2026-08-30: DONE-RULE MET -- nx_card_import_gate GREEN 19/19 on the NAS against the promoted compiler (RED 5/19 against the pre-CC2 binary), every V2 field mapped or refused by name in the ledger, age fail-closed with a card-declared age beating a permissive argument, export byte-stable by hash; the PNG chunk walk shipped as nx_png_chunks for G15 to compose. DONE-RULE: A Tavern V2 card PNG (base64 JSON in a tEXt chunk) imports to the card SSOT with every field mapped or explicitly refused by name; the age gate stays fail-closed (an under-18 card refuses exactly as the native compiler does); export round-trips byte-stable. Composes the PNG chunk walk gen G15 also needs -- extract, never a second parser.

    Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

    Runtime observation: UNKNOWN; outcome UNKNOWN; observed epoch -1. Declared owner: . Receipt , SHA-256 . Identity-bound observation is not accepted completion. Qualification and deployment remain unverified by this projection.

  4. CC3 — Lorebook plane

    Prerequisites: CC0 (acceptance unverified)

    Contract: em_lorebook

    Acceptance: STATUS 2026-08-30: DONE-RULE MET -- nx_lorebook_gate GREEN 16/16 on the NAS via /api/gate_run (trigger-only injection, once per turn, zero bytes when untouched, malformed rows counted, over-budget refuses loudly with no partial injection); em_lorebook composes the [WORLD] block inside nx_companion_mind and the daemon carrying it is LIVE (sha 5ef619e9); knowledge/lorebook.conf ships with no active rows, the operator authors the world. DONE-RULE: Keyed world entries as data on the memory plane with trigger terms and an insertion budget; a turn touching a trigger injects the entry, a turn that does not touches nothing (neg-control); budget overflow refuses loudly rather than silently truncating the persona.

    Authored effort: 1.5. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

    Runtime observation: UNKNOWN; outcome UNKNOWN; observed epoch -1. Declared owner: . Receipt , SHA-256 . Identity-bound observation is not accepted completion. Qualification and deployment remain unverified by this projection.

  5. CC4 — The swipe loop

    Prerequisites: CC0 (acceptance unverified)

    Contract: go_handle_regen

    Acceptance: STATUS 2026-08-30: DONE-RULE MET -- nx_chat_swipe_gate GREEN 17/17 on the NAS via /api/gate_run; the regenerate, select, edit and history routes are LIVE (daemon sha 5ef619e9) and the emitted page carries the swipe toolbar; symbol corrected from go_chat_swipe to the shipped entry go_handle_regen. DONE-RULE: Regenerate produces a SIBLING reply row (never overwrites), branch selection persists in history, and the history partition (mainline plus branches) sums and is printed; edit is additive with the original retained.

    Authored effort: 1.5. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

    Runtime observation: UNKNOWN; outcome UNKNOWN; observed epoch -1. Declared owner: . Receipt , SHA-256 . Identity-bound observation is not accepted completion. Qualification and deployment remain unverified by this projection.

  6. CC5 — Group scenes

    Prerequisites: CC0 (acceptance unverified)

    Contract: go_group_chat

    Acceptance: Two or more companions with separate cards speak in one room with a deterministic speaker-selection rule as data; each turn's prompt carries only that speaker's identity and state (leak between companions is the neg-control).

    Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

    Runtime observation: UNKNOWN; outcome UNKNOWN; observed epoch -1. Declared owner: . Receipt , SHA-256 . Identity-bound observation is not accepted completion. Qualification and deployment remain unverified by this projection.

  7. CC6 — Mixed-LLM routing

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: go_llm_route

    Acceptance: STATUS 2026-08-30: nx_llm_route lib written; nx_llm_route_gate GREEN 15/15 on the sovereign toolchain (trigger row, first-row-wins, case-insensitive, star default, neg-controls for no-trigger / absent conf / malformed target / empty turn, prepend order, four provenance labels); knowledge/llm_routes.conf shipped with NO active rows so production is unchanged until a backend is declared; the orchestrator prepends the routed candidate and stamps model_route on every reply (daemon compile-proven; NAS build queued behind admission). DONE-RULE: A route table as data maps turn classes to backends (local encoder-LLM, any configured stronger endpoint); an absent backend refuses by name and falls back to local, never silently; per-turn provenance records which model answered. Ties to /compare/extllm.

    Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

    Runtime observation: UNKNOWN; outcome UNKNOWN; observed epoch -1. Declared owner: . Receipt , SHA-256 . Identity-bound observation is not accepted completion. Qualification and deployment remain unverified by this projection.

  8. CC7 — The companion speaks

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: sv_speak

    Acceptance: Sovereign TTS: on a fixed 20-sentence set the synthesized audio round-trips through CC8's recognizer at or above a pre-declared word-match floor, and a silence/duration sanity tooth refuses empty audio; until CC8 lands the interim bar is non-silence plus duration proportional to text, declared as interim.

    Authored effort: 4. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

    Runtime observation: UNKNOWN; outcome UNKNOWN; observed epoch -1. Declared owner: . Receipt , SHA-256 . Identity-bound observation is not accepted completion. Qualification and deployment remain unverified by this projection.

  9. CC8 — She hears

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: sv_listen

    Acceptance: Speech to text on our own GPU: the fixed sentence set recorded once, recognized at or above the same pre-declared floor; the CC7 accept test becomes the round trip.

    Authored effort: 3. Executor kind: Local model. Responsible, accountable and verifier not established. Inspect retained worklog.

    Runtime observation: UNKNOWN; outcome UNKNOWN; observed epoch -1. Declared owner: . Receipt , SHA-256 . Identity-bound observation is not accepted completion. Qualification and deployment remain unverified by this projection.

  10. CC9 — Short video clips

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: vg_clip

    Acceptance: BLOCKED-EXTERNAL until a 16 GB-class img2vid model is acquired AND passes the G16 contamination screen; then an N-frame clip from one identity render at a declared fps, identity judged per frame by nx_charjudge at or above a floor calibrated on stills, partition (frames judged = frames emitted) printed.

    Authored effort: 3. Executor kind: Local model. Responsible, accountable and verifier not established. Inspect retained worklog.

    Runtime observation: UNKNOWN; outcome UNKNOWN; observed epoch -1. Declared owner: . Receipt , SHA-256 . Identity-bound observation is not accepted completion. Qualification and deployment remain unverified by this projection.

  11. CC10 — Residency TTL on one card

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: mx_swap_ttl

    Acceptance: Shared verbatim with /compare/gen G12: LLM and diffusion time-share the 16 GB card under a residency TTL, VRAM per model measured and published; the simulator-proven policy (mx_run) drives the real worker.

    Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

    Runtime observation: UNKNOWN; outcome UNKNOWN; observed epoch -1. Declared owner: . Receipt , SHA-256 . Identity-bound observation is not accepted completion. Qualification and deployment remain unverified by this projection.

Learning and practice paths

No structured learning path is declared for this plan. Existing research, roadmap and worklog remain available above.

Rung dossiers — every record that bears on a rung, in one place

Joined by symbol, never typed. Each dossier is assembled on every publish from the rows this board already carries: the plan's rung row, the matrix row that carries its contract symbol (its status re-measured by the one symbol ruler), the gate the organ declares and the verdict the evidence referee recorded on its last run, the reference marks in the rung text, the design rows that name the rung and the work log filed against it. The capability matrix links each cell to its dossier and each dossier links back to its cell and forward to the rungs it stands on; a dependency naming no rung on this plan is written as UNRESOLVED rather than linked. Absences are named: NO-MATRIX-ROW, NO-GATE-DECLARED, UNRECORDED.
Gate verdicts: UNSTAMPED — no per-gate verdict artifact is published for this domain yet (nx_swcompare_evidence companionchat writes it beside its stamp); every gate below reads UNRECORDED until it runs.
Gate declarations: knowledge/organ_gate.conf read from this working directory (1 rows) and from the estate root (196 rows); rows in both counted once: 0; declarations read: 197. Every declaration in either copy counts, so a stub beside the publisher can never hide the root.
CC0 Wire the mind into the turn · cell PRESENT · gate NO-GATE-DECLARED
Contractgo_mind_context · executor Organ · 2 u · stands on nothing
Definition of doneSTATUS 2026-08-30: DONE-RULE MET -- nx_gen_mind_gate GREEN 14/14 on the NAS via /api/gate_run; the daemon calling go_mind_context in every chat turn and go_mind_remember after every reply is LIVE (sha 1af1cf92, audited pre-deploy override over four unrelated RED domains). DONE-RULE: The composed chat prompt provably contains em_recall hits, cm_ctx relationship lines and es_context typed state whenever those stores hold data for the session, proven by a GPU-free probe against the real data files; a neg-control with empty stores must compose NO fabricated memory lines. The three organs stop being REGISTERED-DARK by construction because the serving path forks them.
Matrix cellMEMORY: THE UNWIRED INTELLIGENCE -- memory, relationship and state consulted by the live chat turn · runtime/nx_companion_mind.nx · PRESENT decl
GateNO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_companion_mind; declare nx_companion_mind TAB <gate> and the ship loop proves it and the verdict lands here.
Work log2026-09-12 requirement 2026-09-12 recovery and new-domain pilot: reconcile Elder AI and Companion historical user workflows against current native runtime, API/MCP bindings and served outcomes. Shared scope is retained in media.plan migration-recovery pilot; analyst/business case in finance.plan and projectmgmt.plan. Verified source roots C:/Users/elder/elder-ai-platform and C:/Users/elder/companion are reference evidence, not automatic code adoption. Old availability claims and stale answer prose must be reconciled with current observations before any gap/coverage score. Preserve working behavior and identify unwired or regressed functions with reproductions. Same native research/inventory/rank/dispatch/verify/emit workflow must later qualify a new-domain target. Beach/swarm retain execution priority.
CC1 Streaming reply · cell WATCHING · gate NO-GATE-DECLARED
Contractgo_chat_stream · executor Organ · 1.5 u · stands on nothing
Definition of doneSTATUS 2026-08-30: BLOCKED-AT-WORKER, measured -- the GPU worker answers stream:true with one buffered JSON body (generation_time_ms=10709 for three words on a shared card), so the daemon has nothing to relay; the unblock is a streaming backend (CC6 route table) or our own worker lane, never a re-chunked completed reply. DONE-RULE: First visible token in the browser under 2 s on a warm LLM; the completed streamed reply is byte-identical to the non-streamed control for the same seed and prompt; the gateway relays chunked transfer without buffering the whole body.
Matrix cellCHAT: streaming reply -- tokens render as she thinks, not after she finishes · runtime/_hdl_build/nx_gen_orchestrator.nx · WATCHING decl
GateNO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_gen_orchestrator; declare nx_gen_orchestrator TAB <gate> and the ship loop proves it and the verdict lands here.
Work logno log row names this rung yet
CC2 Community card import · cell PRESENT · gate NO-GATE-DECLARED
Contractccm_card_import · executor Organ · 2 u · stands on nothing
Definition of doneSTATUS 2026-08-30: DONE-RULE MET -- nx_card_import_gate GREEN 19/19 on the NAS against the promoted compiler (RED 5/19 against the pre-CC2 binary), every V2 field mapped or refused by name in the ledger, age fail-closed with a card-declared age beating a permissive argument, export byte-stable by hash; the PNG chunk walk shipped as nx_png_chunks for G15 to compose. DONE-RULE: A Tavern V2 card PNG (base64 JSON in a tEXt chunk) imports to the card SSOT with every field mapped or explicitly refused by name; the age gate stays fail-closed (an under-18 card refuses exactly as the native compiler does); export round-trips byte-stable. Composes the PNG chunk walk gen G15 also needs -- extract, never a second parser.
Matrix cellMEMORY: community character-card import -- Tavern V2 PNG cards · runtime/_hdl_build/nx_card_compile.nx · PRESENT decl
GateNO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_card_compile; declare nx_card_compile TAB <gate> and the ship loop proves it and the verdict lands here.
Work logno log row names this rung yet
CC3 Lorebook plane · cell PRESENT · gate NO-GATE-DECLARED
Contractem_lorebook · executor Organ · 1.5 u · stands on CC0
Definition of doneSTATUS 2026-08-30: DONE-RULE MET -- nx_lorebook_gate GREEN 16/16 on the NAS via /api/gate_run (trigger-only injection, once per turn, zero bytes when untouched, malformed rows counted, over-budget refuses loudly with no partial injection); em_lorebook composes the [WORLD] block inside nx_companion_mind and the daemon carrying it is LIVE (sha 5ef619e9); knowledge/lorebook.conf ships with no active rows, the operator authors the world. DONE-RULE: Keyed world entries as data on the memory plane with trigger terms and an insertion budget; a turn touching a trigger injects the entry, a turn that does not touches nothing (neg-control); budget overflow refuses loudly rather than silently truncating the persona.
Matrix cellMEMORY: lorebook -- world facts injected when the conversation touches them · runtime/nx_lorebook.nx · PRESENT decl
GateNO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_lorebook; declare nx_lorebook TAB <gate> and the ship loop proves it and the verdict lands here.
Work logno log row names this rung yet
CC4 The swipe loop · cell PRESENT · gate NO-GATE-DECLARED
Contractgo_handle_regen · executor Organ · 1.5 u · stands on CC0
Definition of doneSTATUS 2026-08-30: DONE-RULE MET -- nx_chat_swipe_gate GREEN 17/17 on the NAS via /api/gate_run; the regenerate, select, edit and history routes are LIVE (daemon sha 5ef619e9) and the emitted page carries the swipe toolbar; symbol corrected from go_chat_swipe to the shipped entry go_handle_regen. DONE-RULE: Regenerate produces a SIBLING reply row (never overwrites), branch selection persists in history, and the history partition (mainline plus branches) sums and is printed; edit is additive with the original retained.
Matrix cellCHAT: edit, regenerate and branch -- the swipe loop · runtime/_hdl_build/nx_gen_orchestrator.nx · PRESENT decl
GateNO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_gen_orchestrator; declare nx_gen_orchestrator TAB <gate> and the ship loop proves it and the verdict lands here.
Work logno log row names this rung yet
CC5 Group scenes · cell WATCHING · gate NO-GATE-DECLARED
Contractgo_group_chat · executor Organ · 2 u · stands on CC0
Definition of doneTwo or more companions with separate cards speak in one room with a deterministic speaker-selection rule as data; each turn's prompt carries only that speaker's identity and state (leak between companions is the neg-control).
Matrix cellCHAT: group scene -- more than one companion in a conversation · runtime/_hdl_build/nx_gen_orchestrator.nx · WATCHING decl
GateNO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_gen_orchestrator; declare nx_gen_orchestrator TAB <gate> and the ship loop proves it and the verdict lands here.
Work logno log row names this rung yet
CC6 Mixed-LLM routing · cell PRESENT · gate NO-GATE-DECLARED
Contractgo_llm_route · executor Organ · 2 u · stands on nothing
Definition of doneSTATUS 2026-08-30: nx_llm_route lib written; nx_llm_route_gate GREEN 15/15 on the sovereign toolchain (trigger row, first-row-wins, case-insensitive, star default, neg-controls for no-trigger / absent conf / malformed target / empty turn, prepend order, four provenance labels); knowledge/llm_routes.conf shipped with NO active rows so production is unchanged until a backend is declared; the orchestrator prepends the routed candidate and stamps model_route on every reply (daemon compile-proven; NAS build queued behind admission). DONE-RULE: A route table as data maps turn classes to backends (local encoder-LLM, any configured stronger endpoint); an absent backend refuses by name and falls back to local, never silently; per-turn provenance records which model answered. Ties to /compare/extllm.
Matrix cellCHAT: mixed-LLM routing -- the local encoder-LLM answers now, a stronger backend is consulted when configured · runtime/nx_llm_route.nx · PRESENT decl
GateNO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_llm_route; declare nx_llm_route TAB <gate> and the ship loop proves it and the verdict lands here.
Work logno log row names this rung yet
CC7 The companion speaks · cell WATCHING · gate NO-GATE-DECLARED
Contractsv_speak · executor Organ · 4 u · stands on nothing
Definition of doneSovereign TTS: on a fixed 20-sentence set the synthesized audio round-trips through CC8's recognizer at or above a pre-declared word-match floor, and a silence/duration sanity tooth refuses empty audio; until CC8 lands the interim bar is non-silence plus duration proportional to text, declared as interim.
Matrix cellMEDIA: the companion speaks -- text to speech on our own stack · runtime/nx_speech_synth.nx · WATCHING decl
GateNO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_speech_synth; declare nx_speech_synth TAB <gate> and the ship loop proves it and the verdict lands here.
Work logno log row names this rung yet
CC8 She hears · cell WATCHING · gate NO-GATE-DECLARED
Contractsv_listen · executor Local model · 3 u · stands on nothing
Definition of doneSpeech to text on our own GPU: the fixed sentence set recorded once, recognized at or above the same pre-declared floor; the CC7 accept test becomes the round trip.
Matrix cellMEDIA: she hears -- speech to text input · runtime/nx_speech_synth.nx · WATCHING decl
GateNO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_speech_synth; declare nx_speech_synth TAB <gate> and the ship loop proves it and the verdict lands here.
Work logno log row names this rung yet
CC9 Short video clips · cell WATCHING · gate NO-GATE-DECLARED
Contractvg_clip · executor Local model · 3 u · stands on gen:G16 (UNRESOLVED: no such rung on this plan)
Definition of doneBLOCKED-EXTERNAL until a 16 GB-class img2vid model is acquired AND passes the G16 contamination screen; then an N-frame clip from one identity render at a declared fps, identity judged per frame by nx_charjudge at or above a floor calibrated on stills, partition (frames judged = frames emitted) printed.
Matrix cellMEDIA: short video clips of the companion · runtime/nx_video_gen.nx · WATCHING decl
GateNO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_video_gen; declare nx_video_gen TAB <gate> and the ship loop proves it and the verdict lands here.
Work logno log row names this rung yet
CC10 Residency TTL on one card · cell WATCHING · gate NO-GATE-DECLARED
Contractmx_swap_ttl · executor Organ · 1 u · stands on nothing
Definition of doneShared verbatim with /compare/gen G12: LLM and diffusion time-share the 16 GB card under a residency TTL, VRAM per model measured and published; the simulator-proven policy (mx_run) drives the real worker.
Matrix cellGOV: LLM and diffusion time-share one 16 GB card under a residency TTL · runtime/nx_mesh_mux.nx · WATCHING decl
GateNO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_mesh_mux; declare nx_mesh_mux TAB <gate> and the ship loop proves it and the verdict lands here.
Work logno log row names this rung yet

dossiers=11 cells_joined=11 no_matrix_row=0 (sum 11) gates_recorded=0 gates_unrecorded=0 no_gate_declared=11 (sum 11 of cells_joined) evgates=UNSTAMPED

Capability comparisons

Compare the field, search individual capabilities and open their source and adoption evidence. Documented presence does not establish comparative quality.

Position map — centrality and distinctiveness

The four-quadrant map the field uses for brand strategy (Dawar and Bagga, HBR June 2015), re-derived from this matrix on every publish. Centrality is the share of the category's feature mass a player covers, each feature weighted by how many hold it; distinctiveness is the average lead over each rival on the rows the player holds; breadth is the depth-weighted share of the whole matrix (the bubble); depth is how deeply the rows held are held; momentum is the day-over-day move off the spine (green rising, red falling, grey until day two); the dashed path runs first day → previous day → today. Dividers are the category means. Axes are fitted to the field of play, so read the tick numerals, not the frame. Rival marks are documented presence, so a rival's position reads the record, never its quality. The picture grades its own readability below; the table beside it is the same data for a screen reader or a second method.

Rows. 20 feature rows mapped of 20 matrix rows; 0 substrate rows (kernels, bounds and instruments the plan's rungrole marks substrate) are the estate's scaffolding, not category features, and stay off the map
Views. 2D cut: centrality, distinctiveness · 3D cube: centrality, distinctiveness, breadth · axes registered: centrality, distinctiveness, breadth, depth, momentum · a board picks its own in knowledge/compare/companionchat.cdmap (cut|x|y, cube|x|y|z); absent = the HBR defaults
Position map, two-dimensional cutOne bubble per player. Bubble area is breadth, the ring colour is momentum, the dashed lines are the category means, and both axes are fitted to the field of play with their tick numerals shown. Every value is repeated in the table that follows. 400 500 600 700 800 900 1000 240 260 280 300 320 340 360 centrality (permil, fitted 400–1000) distinctiveness (permil, fitted 240–360) mean 715 mean 306 Unconventional Aspirational Peripheral Mainstream Nishi, centrality 702, distinctiveness 307, breadth 433, depth 666, momentum -46 SillyTavern, centrality 918, distinctiveness 316, breadth 550, depth 687, momentum 6 JanitorAI, centrality 527, distinctiveness 288, breadth 333, depth 740, momentum 7 CharacterAI, centrality 675, distinctiveness 272, breadth 400, depth 727, momentum 7 Replika, centrality 716, distinctiveness 333, breadth 450, depth 750, momentum 7 Kindroid, centrality 756, distinctiveness 323, breadth 483, depth 743, momentum 7 Nishi SillyTavern JanitorAI CharacterAI Replika Kindroid

bubble area = breadth · ring = momentum (green rising, red falling, grey until day two) · dashed = category means · axes fitted to the field of play: centrality 400–1000, distinctiveness 240–360 of 0–1000 permil (the full range put every player in one corner)
readability of the 2D cut, self-graded by the layout ruler: label overlaps 0 · labels over marks 0 · off-canvas 0 · unresolved labels 0 · mark overlaps 0 (a fact of the data: two players that close are that close) · data spread 580 permil of the plot · quadrant words unseated 0
text contrast, measured with wcag2-ratio (floors from contrast.conf), light theme: labels 16.24 (floor 4.50) · notes 16.24 (floor 4.50) · quadrant words 5.89 (floor 4.50) · tick numerals 5.89 (floor 4.50) · axis titles 5.59 (floor 4.50) · dark theme: labels 13.78 (floor 4.50) · quadrant words 5.55 (floor 4.50) · axis titles 5.97 (floor 4.50) · dark classes under their floor 0 (one figure serves both themes: a dark shortfall is a token to fix, never a class to hide) · classes refused under their floor 0 (a refused class is not drawn; the scale classes are measured, never hidden) · export: SVG PNG (receipt, rendered by the estate's own rasteriser from this page)
Position map, three-dimensional cubeThe same players in an isometric cube. Each axis is fitted to its own field of play and carries numerals on the floor grid and the vertical axis; each bubble drops a dotted line to its floor shadow so height reads as height. Values are in the table that follows. 400 500 600 700 800 900 1000 240 260 280 300 320 340 360 300 350 400 450 500 550 600 centrality distinctiveness breadth JanitorAI: centrality 527, distinctiveness 288, breadth 333 CharacterAI: centrality 675, distinctiveness 272, breadth 400 Nishi: centrality 702, distinctiveness 307, breadth 433 Kindroid: centrality 756, distinctiveness 323, breadth 483 Replika: centrality 716, distinctiveness 333, breadth 450 SillyTavern: centrality 918, distinctiveness 316, breadth 550 Nishi SillyTavern JanitorAI CharacterAI Replika Kindroid
axes fitted: centrality 400–1000 · distinctiveness 240–360 · breadth 300–600 permil · farther bubbles are painted first, nearer ones over them · the floor shadow is each bubble's (x, y) at height 0
readability of the 3D cube, self-graded by the layout ruler: label overlaps 0 · labels over marks 0 · off-canvas 0 · unresolved labels 0 · mark overlaps 2 (a fact of the data: two players that close are that close) · data spread 188 permil of the plot
Position map, small multiplesEvery pair of registered axes as one small cut. Each panel fits both axes to the field of play, the dashed lines are the category means, bubble area is breadth and the ring colour is momentum; the legend below names the colours. 400 1000 240 360 distinctiveness vs centrality Nishi: centrality 702, distinctiveness 307 SillyTavern: centrality 918, distinctiveness 316 JanitorAI: centrality 527, distinctiveness 288 CharacterAI: centrality 675, distinctiveness 272 Replika: centrality 716, distinctiveness 333 Kindroid: centrality 756, distinctiveness 323 400 1000 300 600 breadth vs centrality Nishi: centrality 702, breadth 433 SillyTavern: centrality 918, breadth 550 JanitorAI: centrality 527, breadth 333 CharacterAI: centrality 675, breadth 400 Replika: centrality 716, breadth 450 Kindroid: centrality 756, breadth 483 400 1000 640 780 depth vs centrality Nishi: centrality 702, depth 666 SillyTavern: centrality 918, depth 687 JanitorAI: centrality 527, depth 740 CharacterAI: centrality 675, depth 727 Replika: centrality 716, depth 750 Kindroid: centrality 756, depth 743 400 1000 450 530 momentum vs centrality Nishi: centrality 702, momentum 477 SillyTavern: centrality 918, momentum 503 JanitorAI: centrality 527, momentum 503 CharacterAI: centrality 675, momentum 503 Replika: centrality 716, momentum 503 Kindroid: centrality 756, momentum 503 240 360 300 600 breadth vs distinctiveness Nishi: distinctiveness 307, breadth 433 SillyTavern: distinctiveness 316, breadth 550 JanitorAI: distinctiveness 288, breadth 333 CharacterAI: distinctiveness 272, breadth 400 Replika: distinctiveness 333, breadth 450 Kindroid: distinctiveness 323, breadth 483 240 360 640 780 depth vs distinctiveness Nishi: distinctiveness 307, depth 666 SillyTavern: distinctiveness 316, depth 687 JanitorAI: distinctiveness 288, depth 740 CharacterAI: distinctiveness 272, depth 727 Replika: distinctiveness 333, depth 750 Kindroid: distinctiveness 323, depth 743 240 360 450 530 momentum vs distinctiveness Nishi: distinctiveness 307, momentum 477 SillyTavern: distinctiveness 316, momentum 503 JanitorAI: distinctiveness 288, momentum 503 CharacterAI: distinctiveness 272, momentum 503 Replika: distinctiveness 333, momentum 503 Kindroid: distinctiveness 323, momentum 503 300 600 640 780 depth vs breadth Nishi: breadth 433, depth 666 SillyTavern: breadth 550, depth 687 JanitorAI: breadth 333, depth 740 CharacterAI: breadth 400, depth 727 Replika: breadth 450, depth 750 Kindroid: breadth 483, depth 743 300 600 450 530 momentum vs breadth Nishi: breadth 433, momentum 477 SillyTavern: breadth 550, momentum 503 JanitorAI: breadth 333, momentum 503 CharacterAI: breadth 400, momentum 503 Replika: breadth 450, momentum 503 Kindroid: breadth 483, momentum 503 640 780 450 530 momentum vs depth Nishi: depth 666, momentum 477 SillyTavern: depth 687, momentum 503 JanitorAI: depth 740, momentum 503 CharacterAI: depth 727, momentum 503 Replika: depth 750, momentum 503 Kindroid: depth 743, momentum 503
Nishi SillyTavern JanitorAI CharacterAI Replika Kindroid
10 panels over 5 registered axes, every pair once (the lower axis on x, the higher on y) · each panel fitted to its own field of play, first and last tick numerals shown · no labels in a small cut, the legend names the colours; the grade below reports the mark terms only (MM summed over the panels, spread averaged)
readability of the small multiples, self-graded by the layout ruler: label overlaps 0 · labels over marks 0 · off-canvas 0 · unresolved labels 0 · mark overlaps 1 (a fact of the data: two players that close are that close) · data spread 562 permil of the plot
PlayerQuadrantcentralitydistinctivenessbreadthdepthmomentumRows heldDays on spineFirst seen
NishiUnconventional702307433666-46 since 2026-09-2313102026-09-15
SillyTavernAspirational918316550687+6 since 2026-09-2316102026-09-15
JanitorAIPeripheral527288333740+7 since 2026-09-239102026-09-15
CharacterAIPeripheral675272400727+7 since 2026-09-2311102026-09-15
ReplikaAspirational716333450750+7 since 2026-09-2312102026-09-15
KindroidAspirational756323483743+7 since 2026-09-2313102026-09-15
DayMatrix rows reviewedPlayers recorded
2026-09-15206
2026-09-16206
2026-09-17206
2026-09-18206
2026-09-19206
2026-09-20206
2026-09-21206
2026-09-22206
2026-09-23206
2026-10-08206

players 6|matrix rows 20|feature mass 74|centrality mean 715|distinctiveness mean 306|axes 5|spine days 10 (shown 10)|rows written today 0|readability defects 2D 0 cube 0|spine knowledge/status/cdmap/companionchat.spine

How to read this evidence. A Nishi source mark records whether the named symbol is declared in the selected source file. It does not establish working behavior or accepted delivery. A watching tag names an expected source entry; discovering it updates source coverage only. A dark tag means the file exists but the named symbol was not found: inspect the source and contract before assuming the capability is missing or renaming code. Peer codes are authored assessments; unassessed means no comparison is established, not absence. Qualification, deployment identity, runtime observations and acceptance must carry their own evidence. Adoption records the catalog's observed path through source, build, promotion, registration and invocation; libraries use importer evidence and gates use declared execution surfaces. A full catalog path does not establish quality, freshness or a successful user outcome. Partial and unknown states retain their stated next action. Census stamps: importers asof 1790637268, gate census asof 1790104131 (unix seconds; -1 = census absent).

Capability matrix — measured against source

◉ authored stronger claim; source present● present◐ partial○ absent? unassessed; excluded from relative comparison · click any capability for its evidence

Peer cell coverage: authored assessed 100, unassessed 0. Authored assessments are not verified outcomes.

CapabilityNishiSillyTavernJanitorAICharacterAIReplikaKindroid
CHAT
companion chat with photo-on-request through one sovereign daemon (the DiT text encoder doubles as the LLM)Measured: go_handle_chat exists in runtime/_hdl_build/nx_gen_orchestrator.nx, verified at emit. Every rival chats; ours talks and renders in ONE process on one 16 GB card, with server-authoritative persona. Same symbol as /compare/gen's COMPANION row -- one ruler, two boards. Dispatch honesty and async submit deployed 2026-08-30 (gen G17/G18), so a slow render no longer reads as an absent companion. CHAT ITSELF IS ASYNC since the same day: a measured 17.6 s completion lost to the 15 s edge window on every turn -- that was the whole of 'chat does not work' -- so the turn is now a job the emitted UI polls (POST /api/chat_async), and the dispatch budget is a conf row (gen_chat_budget.conf, 60 s) rather than a 25 s literal. SERVED 2026-08-30: the async page IS the served page (emitted on the NAS, sha d9d43bb4, 18,785 B, byte-identical to the laptop emit; nx_gen_ui_gate re-run after the install: 13/13 incl. served-page-is-the-emitted-page). FIVE-PICS FIX 2026-08-31: send me five pics rendered ONE collaged image -- THREE stacked defects measured (a digit-only count parser so five read as 1, a chat clamp forcing every request to one photo, and the raw count words left in the diffusion scene so the model painted a five-panel collage into one frame). go_parse_count_any (digits AND number words, counted only beside a photo noun, clamped to the batch cap) plus go_scene_decount (the count token spliced out of the scene the model reads) shipped in daemon c41a6886; nx_photo_count_gate GREEN 15/15 with neg-controls proving a count of subjects is not a count of photos. Chat photos also append to elara_album.tsv and GET /api/album groups them by day under gen_day_offset.conf -- the /gen Gallery tab (renamed Photos) is now the conversation album by day, and /gallery stays the ONE full gallery. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=6 nonval=1 — fully adopted (top of its ladder).
Pros Implementing source symbol found; runtime acceptance separate; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth)
●●●●●●
durable chat history on the sovereign store -- since-cursor fetch, per-member ack, retention as policyOpen — no implementing organ is measured for this axis yet. Shared contract: this IS /compare/comms C1 (store-and-forward on the seg-store plane, history survives room close). The chat lane's history rides an organ that already carries a done-rule and a gate. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
Pros none measured yetCons behind SillyTavern, CharacterAI, Replika, Kindroid; no implementing organ measured
○●○●●●
streaming reply -- tokens render as she thinks, not after she finishesDARK — runtime/_hdl_build/nx_gen_orchestrator.nx EXISTS but does not declare go_chat_stream: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. MEASURED 2026-08-30: the GPU worker's /v1/chat/completions IGNORES stream:true and returns ONE buffered application/json body (generation_time_ms=10709 for a three-word reply with the card shared with a game), so streaming is BLOCKED AT THE WORKER, not at the daemon or the gateway. The sovereign routes to CC1 are a streaming-capable routed backend through CC6's route table relayed as SSE, or our own worker lane; a completed reply re-chunked to look streamed will not be shipped. Watch CC1. Every serious rival streams [sillytavern]; our chat blocks until the whole completion returns, which reads as slowness the LLM does not have. Done-rule in companionchat.plan.
dossierwatching go_chat_stream
Pros none measured yetCons behind SillyTavern (leads), JanitorAI, CharacterAI (leads), Replika, Kindroid; open contract; expected source declaration not established
○◉●◉●●
edit, regenerate and branch -- the swipe loopMeasured: go_handle_regen exists in runtime/_hdl_build/nx_gen_orchestrator.nx, verified at emit. CC4 LANDED 2026-08-30 (SYMBOL CORRECTED from the declared go_chat_swipe to the entry that shipped: go_handle_regen re-answers the latest user turn as a SIBLING through go_handle_chat_mode, beside go_handle_chat_select, go_handle_chat_edit and go_serve_chat_history). The chat log (nx_companion_persona) stays append-only and became branch-aware: a swipe row is a sibling never an overwrite, select persists the displayed sibling, edit is additive with the original retained, the regenerate load excludes the re-answered turn, and the mainline-plus-branches partition sums and is printed; a plain log loads to the byte-identical legacy shape. Routes POST /api/chat_regen[_async], /api/chat_select, /api/chat_edit and GET /api/chat_history are LIVE (daemon sha 5ef619e9, DEPLOYED-GREEN listen=VERIFIED; /api/chat_history probed 200 on the box), every reply carries swipe index and count, and the emitted /gen page draws the toolbar (previous, k of n, next, again, edit -- five conf keys). nx_chat_swipe_gate GREEN 17/17 on the NAS via /api/gate_run. Was: SillyTavern's swipes are its signature interaction and ours had no regenerate at all -- a bad reply was permanent. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=6 nonval=1 — fully adopted (top of its ladder).
dossier
Pros Implementing source symbol found; runtime acceptance separate; ahead of Replika, Kindroid; fully adopted on the estate ladderCons behind SillyTavern (leads)
●◉●●○○
group scene -- more than one companion in a conversationDARK — runtime/_hdl_build/nx_gen_orchestrator.nx EXISTS but does not declare go_group_chat: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. Watch CC5. SillyTavern group chats rotate speakers with per-character cards; Character.AI ships rooms. Ours is single-companion by construction today. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
dossierwatching go_group_chat
Pros none measured yetCons behind SillyTavern (leads), CharacterAI, Kindroid; open contract; expected source declaration not established
○◉○●○●
mixed-LLM routing -- the local encoder-LLM answers now, a stronger backend is consulted when configuredMeasured: go_llm_route exists in runtime/nx_llm_route.nx, verified at emit. CC6 LIVE 2026-08-30: nx_llm_route (a route table as data -- tag, trigger, host, port; first match wins; case-insensitive; a star row is a default; a malformed row routes nothing) is called by the orchestrator's chat turn, the routed backend is tried first with the local encoder-LLM as fallback, and every reply carries model_route (tag, tag-fallback-local, tag-unanswered or local). PROVEN ON THE BOX: nx_llm_route_gate GREEN 15/15 via /api/gate_run, and the daemon calling go_llm_route on every chat turn has been live since sha 1af1cf92 (a36b5d27 today). knowledge/llm_routes.conf ships with NO active rows, so no backend has answered a routed turn yet -- that is a declaration the operator makes (one row: tag, trigger, host, port), not a gap in the mechanism. Row repointed 2026-08-30 from the orchestrator (the caller) to the lib that DEFINES the symbol, because the generator verifies the implementing symbol in the named file. Watch CC6. SillyTavern and JanitorAI are frontends over ANY backend, which is exactly the operator's mixed-LLM ask; the closed companions are welded to their own model. Route table as data; a refusal names the absent backend. Ties to /compare/extllm. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=2 nonval=1 — fully adopted (top of its ladder).
dossier
Pros Implementing source symbol found; runtime acceptance separate; ahead of CharacterAI, Replika, Kindroid; fully adopted on the estate ladderCons behind SillyTavern (leads), JanitorAI (leads)
●◉◉○○○
MEMORY
long-term salience-scored memory -- remember and recall survive sessionsMeasured: em_recall exists in runtime/nx_elara_memory.nx, verified at emit. Salience weights prefs over facts over events (EM_SAL_*), BM25-class scoring over the elaramem- plane; MemGPT's tiered context paging is the frontier bar for what survives a long relationship inside a bounded window [memgpt]. Replika's flagship capability [replika]; SillyTavern reaches it via vector-storage extensions (Part). REGISTERED-DARK today: see the CC0 keystone row. Adoption: REGISTERED-DARK — PARTIAL: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked).
not adopted: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Pros Implementing source symbol found; runtime acceptance separate; ahead of SillyTavern, JanitorAI, CharacterAICons behind Replika (leads); not adopted yet: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
●◐○◐◉●
relationship state -- affection, trust, intimacy, excitement folded per event into contextMeasured: cm_ctx exists in runtime/nx_charmem.nx, verified at emit. Built to the Nomi/Replika-class spec its own header names: per-character axes with defaults, learned user preferences, folded per event. REGISTERED-DARK today: see CC0. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: REGISTERED-DARK — PARTIAL: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked).
not adopted: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Pros Implementing source symbol found; runtime acceptance separate; ahead of SillyTavern, JanitorAI, CharacterAICons behind Replika (leads); not adopted yet: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
●○○○◉●
present-tense coherence -- she dresses herself and stays dressed; outfit, location, mood and day carry a typed timelineMeasured: es_context exists in runtime/nx_elara_state.nx, verified at emit. The F975 keystone engine: typed fields with a timeline on the elarastate- plane, wardrobe grammar as data, day-cycle tick. Rivals hold persona PROSE the model may drift from; ours is typed state an organ can refuse against. Exceed deliberately not claimed until rival mirrors are pinned. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: REGISTERED-DARK — PARTIAL: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked).
not adopted: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Pros Implementing source symbol found; runtime acceptance separate; ahead of SillyTavern, JanitorAI, CharacterAI, Replika, KindroidCons not adopted yet: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
●◐○○◐◐
THE UNWIRED INTELLIGENCE -- memory, relationship and state consulted by the live chat turnMeasured: go_mind_context exists in runtime/nx_companion_mind.nx, verified at emit. CC0 SOURCE LANDED 2026-08-30 (same day it was found): nx_companion_mind.nx composes em_recall + cm_ctx + es_context by forking the promoted organs; the orchestrator imports it, calls go_mind_context in the chat turn and go_mind_remember after the reply; lib, gate (nx_gen_mind_gate, 14 teeth incl. neg-control-empty-session) and the daemon all compile clean on the sovereign toolchain. PROVEN ON THE BOX 2026-08-30: nx_gen_mind_gate GREEN 14/14 via /api/gate_run against the real promoted organs (planes under /tmp, neg-control-empty-session teeth), and the daemon carrying the call is LIVE at /volume1/ai/gen (sha 1af1cf92, 322,853 B; deployed under an AUDITED pre-deploy override because the fleet block was four unrelated domains' RED gates). Every chat turn now composes present, relationship and remembered before the model answers. THE KEYSTONE, found by import-list measurement 2026-08-30: nx_gen_orchestrator imports companion identity, persona, wardrobe and state-vector -- but NOT nx_elara_memory, NOT nx_charmem, NOT nx_elara_state. The intelligence organs are promoted, registered and DARK because the chat turn never calls them; every rival injects its memory into every turn. The research bar is the Generative Agents memory stream -- retrieval scored by recency, importance and relevance with reflection on top [genagents]; our em_salience is the importance leg alone, so recency and relevance weighting plus reflection are the frontier rungs after CC0. Wiring, not research -- the cheapest intelligence gain on any board. Adoption: LIB-WIRED importers=2 nonval=1 — fully adopted (top of its ladder).
dossier
Pros Implementing source symbol found; runtime acceptance separate; fully adopted on the estate ladderCons behind CharacterAI (leads), Replika (leads), Kindroid (leads)
●●●◉◉◉
character-card compiled persona SSOT, age fail-closedMeasured: ccm_json_str exists in runtime/_hdl_build/nx_card_compile.nx, verified at emit. The card is the byte-one persona source and the compiler refuses an under-18 card. Same symbol as /compare/gen's COMPANION card row. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: REGISTERED-DARK — PARTIAL: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked).
not adopted: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Pros Implementing source symbol found; runtime acceptance separate; ahead of Replika, KindroidCons not adopted yet: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
●●●●○○
community character-card import -- Tavern V2 PNG cardsMeasured: ccm_card_import exists in runtime/_hdl_build/nx_card_compile.nx, verified at emit. CC2 LANDED 2026-08-30: nx_card_compile import <card.png> [age=N] [dir] walks the PNG with nx_png_chunks (ONE chunk walker for the estate, the same walk gen G15 names), decodes the chara tEXt chunk with base64.nx, and MAPS every V2 field into the SSOT or REFUSES IT BY NAME in a printed ledger (character_book, alternate_greetings, post_history_instructions and extensions are refused with the reason; the lorebook entries belong in CC3's plane and are the next rung); the age gate stays fail-closed (a card-declared age wins, else age=N, else refuse; under 18 refuses exactly as the native compiler); the decoded V2 bytes are kept verbatim so export round-trips byte-stable by construction; an imported persona composes from its own description, personality, scenario and tags and inherits none of the native defaults. nx_card_import_gate GREEN 19/19 on the NAS (RED 5/19 against the pre-CC2 compiler: the bite is the live history), compiler promoted (sha 4a0caeea), gate registered. The V2 card (base64 JSON in a PNG tEXt chunk) is the field's interchange format; SillyTavern [sillytavern] and JanitorAI [janitorai] both consume it, which is where the community's thousands of characters live. Adoption: REGISTERED-DARK — PARTIAL: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked).
dossiernot adopted: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Pros Implementing source symbol found; runtime acceptance separate; ahead of CharacterAI, Replika, KindroidCons behind SillyTavern (leads), JanitorAI (leads); not adopted yet: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
●◉◉○○○
lorebook -- world facts injected when the conversation touches themMeasured: em_lorebook exists in runtime/nx_lorebook.nx, verified at emit. CC3 LANDED 2026-08-30: nx_lorebook reads knowledge/lorebook.conf (rows of key, comma-separated trigger terms and entry text, plus an @budget row) and em_lorebook composes the [WORLD] block inside nx_companion_mind on every chat turn -- ASCII case-insensitive trigger match, an entry fires once per turn, a turn touching nothing injects zero bytes, a malformed row is counted never guessed, and an over-budget turn REFUSES LOUDLY (logged to stderr) with no partial injection. nx_lorebook_gate GREEN 16/16 on the NAS via /api/gate_run; the daemon carrying the composer is LIVE (sha 5ef619e9, DEPLOYED-GREEN listen=VERIFIED). lorebook.conf ships with NO active rows: the operator authors her world as data, the mechanism is proven. Was: SillyTavern World Info is the field bar (keyed entries injected on trigger words with insertion budgets) and ours had salience recall but no keyed world plane. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=2 nonval=1 — fully adopted (top of its ladder).
dossier
Pros Implementing source symbol found; runtime acceptance separate; ahead of CharacterAI, Replika, Kindroid; fully adopted on the estate ladderCons behind SillyTavern (leads)
●◉●○○○
MEDIA
selfie and scene renders with persistent identity in-chatMeasured: go_compose_photo_prompt exists in runtime/_hdl_build/nx_companion_wardrobe.nx, verified at emit. One testable composer shared by daemon and GPU-free probe (gen board's exceed row); Replika and Kindroid ship selfies, SillyTavern reaches image gen through extensions (Part). Identity persistence is the editable appearance anchor, not an image-reference trick. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=3 nonval=1 — fully adopted (top of its ladder).
Pros Implementing source symbol found; runtime acceptance separate; ahead of SillyTavern, JanitorAI, CharacterAI; fully adopted on the estate ladderCons behind Replika (leads), Kindroid (leads)
●◐○◐◉◉
the companion speaks -- text to speech on our own stackOpen — watching runtime/nx_speech_synth.nx : sv_speak, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. Watch CC7, the seed contract of the justified speechsynth domain. Character.AI, Replika and Kindroid all ship voice; SillyTavern via extensions. Sovereign TTS is a research-class rung and priced as one in the plan; the open flow-matching bar is F5-TTS [f5tts].
dossierwatching sv_speak
Pros none measured yetCons behind SillyTavern, CharacterAI (leads), Replika (leads), Kindroid (leads); open contract; expected source declaration not established
○◐○◉◉◉
she hears -- speech to text inputOpen — watching runtime/nx_speech_synth.nx : sv_listen, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. Watch CC8. The other half of a voice call; the accept test for CC7 (a TTS-to-ASR round trip must recover the sentence) needs this rung, which is why they are priced together; the open recognizer bar is Whisper-class large-scale weak supervision [whisper].
dossierwatching sv_listen
Pros none measured yetCons behind SillyTavern, CharacterAI (leads), Replika (leads), Kindroid (leads); open contract; expected source declaration not established
○◐○◉◉◉
short video clips of the companionOpen — watching runtime/nx_video_gen.nx : vg_clip, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. Watch CC9. Kindroid ships video messages [kindroid]; Replika video-calls an avatar (Part). BLOCKED-EXTERNAL like gen G9: a 16 GB-class img2vid model must be acquired and pass the G16 contamination screen before this rung can start; identity per frame is judged by nx_charjudge; LTX-Video's real-time latent diffusion is the 16 GB-class candidate to screen first [ltxvideo].
dossierwatching vg_clip
Pros none measured yetCons behind Replika, Kindroid; open contract; expected source declaration not established
○○○○◐●
GOV
LLM and diffusion time-share one 16 GB card under a residency TTLDARK — runtime/nx_mesh_mux.nx EXISTS but does not declare mx_swap_ttl: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. Watch CC10 == /compare/gen G12: ONE contract, two boards -- ship mx_swap_ttl and both flip. The residency policy is already proven on a gated simulator (mx_run); the VRAM complaint on the chat lane is this row. Rival codes are deliberately UNREAD here; they are carried on the gen board.
dossierwatching mx_swap_ttl
Pros none measured yetCons open contract; expected source declaration not established
○○○○○○
isolated NSFW realm -- own OPAQUE keys and store, no cookies, session injected by the service worker; SFW and NSFW both first-classMeasured: gw_serve_conn exists in runtime/_hdl_build/nx_gen_gateway.nx, verified at emit. Character.AI filters NSFW out (0) [characterai]; Replika gates it behind subscription tiers (Part); local frontends inherit whatever the backend allows. Ours is a realm decision at the gateway, not a model mood. Adoption: PROMOTED-UNREGISTERED — PARTIAL: a real binary nobody can call over MCP: /api/tools/register it; no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked).
not adopted: a real binary nobody can call over MCP: /api/tools/register it; no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Pros Implementing source symbol found; runtime acceptance separate; ahead of CharacterAI, ReplikaCons not adopted yet: a real binary nobody can call over MCP: /api/tools/register it; no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
●●●○◐●
the companion SOTA ruler -- a liar-killed measured matrix against the Replika, Character.AI and SillyTavern axesMeasured: cs_run_matrix exists in runtime/nx_companion_sota.nx, verified at emit. The ruler PROBES our own organs (elara_state, elara_memory) rather than self-grading, and refuses HAVE for any axis whose probe fails. No rival measures itself against its field at all; the published role-play referee is CharacterEval, a Chinese-language benchmark whose metric axes transfer while its dialogues do not, so an English judged set on the same axes is the grade-1 referee this board still owes [charactereval]; exceed still not claimed because the rival axes in the ruler are themselves vendor-claim reads. Zeros here mean not-applicable, not a measured No. Adoption: REGISTERED-DARK — PARTIAL: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked).
not adopted: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Pros Implementing source symbol found; runtime acceptance separate; ahead of SillyTavern, JanitorAI, CharacterAI, Replika, KindroidCons not adopted yet: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
●○○○○○
Rival-claim provenance. Every Yes, Best or Part mark in a rival column is a claim about someone else's product. A cited row carries a reference mark that resolves to a pinned mirror (the refs gate measures that); an uncited row is an observation read and is badged in its evidence until a reference lands. The badge is the receipt, never the proof: a mark proves a mirror exists, not that the mirror supports the code. The rows are counted below.
Rival claims, counted
ClassCountNote
rows with rival marks18rows carrying a Yes, Best or Part in a rival column
cited8a reference mark resolves to a pinned mirror
uncited10an observation read, badged until a reference lands
rows, summed18RECONCILED: the parts sum to the total 18

Delivery and evidence

Inspect risks, technical debt, rendered observations, experiments and references. Read scope and limitations alongside every result.

Debt register

IdSevWhat it isUnblock
companionchat-dark-adoptionnot in this scope4nx_elara_state, nx_elara_memory and nx_charmem read REGISTERED-DARK in the catalogue (no MCP invocation on record) and nx_companion_sota's probe results have never been published to this board; INVOKED-via-fork is not visible to the actlog, so darkness is suspected, not proven.CC0 retires the darkness by construction (the serving path forks them); until then run nx_companion_sota and publish its measured matrix beside this plan's answers.

Release history and work log

The worked plan, on the board. Every leg appends what it measured, landed, retracted, learned and left queued, per rung, so a crash leaves the next seat a ledger here rather than a transcript to mine. Kinds: measure, land, retract, lesson, queue. Newest last.
WhenRungKindEntry
2026-09-12CC0requirement2026-09-12 recovery and new-domain pilot: reconcile Elder AI and Companion historical user workflows against current native runtime, API/MCP bindings and served outcomes. Shared scope is retained in media.plan migration-recovery pilot; analyst/business case in finance.plan and projectmgmt.plan. Verified source roots C:/Users/elder/elder-ai-platform and C:/Users/elder/companion are reference evidence, not automatic code adoption. Old availability claims and stale answer prose must be reconciled with current observations before any gap/coverage score. Preserve working behavior and identify unwired or regressed functions with reproductions. Same native research/inventory/rank/dispatch/verify/emit workflow must later qualify a new-domain target. Beach/swarm retain execution priority.
On these two registers. Rows are declared in the domain's plan file and carry the debt id, which is the join key back to the sovereign debt plane — that plane, not this page, is the authority on state. Reconciling them automatically (the regen reading the plane and refreshing these rows) is a named, owed rung; until it lands, treat an id here as a pointer to look up, not a status to trust.
Honest verdict. The coverage above records source-symbol presence. Stronger comparisons are authored claims, not measured runtime superiority or accepted outcomes. A watch contract names an expected source symbol; finding it changes source discovery only. Qualification, deployment and runtime acceptance require their own evidence.

Person · product · place — not yet measured for this domain

Every compare carries this layer. Declare knowledge/compare/companionchat.ppp (rows surface|nishi or c1..c4|label|url|connect naming OUR live surface and each rival's front door), run nx_ppp_probe domain companionchat, and this section fills itself on the next beat: the same ruler on both sides — privacy and CX (third-party hosts, tracker classes, cookies, security headers), design and longevity (design hygiene, computed WCAG contrast, render-blocking resources, unsized media, script weight, theme and motion queries), findability (landmarks, skip link, on-site search, breadcrumb, headings, internal links).

Mined from the field — review and competitive intelligence proposed to this board

Rows written by nx_intelmine_propose from nx_reviewmine_lib signals (Steam reviews under the exceeds / meets / mixed / does-not-meet rubric, the installed-title census) and routed here by capability_map.conf. DEFECT names a rival failing that a rung here answers; DEMANDED a capability buyers ask for and do not get; WE-DO-BETTER an exceed the reviews corroborate; THEY-DO-WELL a bar this board must meet; SHIPS a rival capability to match. A proposal is a lead, never a rung — it closes only when a rung with a gate lands, and nothing in this band changes a measured cell.

SignalKindTermTitleProposed rungEvidence
THEY-DO-WELLfeaturevoicePortal 2 620Voice: 620 -- voice acting and voice interaction at the field's barpraised=2 complained=0 mixed=0 demanded=1
THEY-DO-WELLfeaturedialoguePortal 2 620Dialogue: 620 -- dialogue quality graded by the panelpraised=2 complained=0 mixed=0 demanded=0

proposals 2|malformed rows 0 (counted, never rendered: a row that is not prop| with 10 fields)|read-capped 0

The field — discovered, not chosen

Rows written by nx_field_discover from companionchat.seeds: the industry's own lists (Wikipedia wikitext, GitHub topics, awesome lists) read mechanically, every candidate counted across seeds. The matrix columns above are a SEAT'S pick; this band is the population they were picked from, and the stats line measures one against the other. A rival here is a lead, never a verdict — it earns a column when its capabilities are read and pinned.

Discovery receipt. One row per counter the run wrote, in the receipt's own order; the rival rows follow in their own table.
Field discovery, counted
ClassCountNote
seeds4
scanned4
fetched4
reused0
failed0
named4
candidates4
mentions4
capped0
RankRivalSeedsMentionsFirst seedKindLink
1SillyTavern11col0-sillytavernnamedhttps://docs.sillytavern.app/
2JanitorAI11col1-janitorainamedhttps://janitorai.com/
3Replika11col3-replikanamedhttps://replika.com/
4Kindroid11col4-kindroidnamedhttps://kindroid.ai/

field candidates 4|shown 4 of 4|matrix columns in the field 4 of 5|discovered rivals with no column 0|malformed rows 0 (counted, never rendered)|read-capped 0

Exclusive and shared capabilities

One capability is graded on one board; every other board references it. The fleet duplicate census (nx_rivalcensus dupes, on the fleetdupes clock row) reads every board's matrix and names each capability graded as a row on two or more boards, with a home derived from evidence: rung when exactly one board's plan contracts the symbol (that board is starred), gates when no plan contracts it and exactly one board's executed gate map runs the organ's gate (that board is plussed), ambiguous when several boards carry the deciding evidence (a decision for their seats), and none when no evidence decides it, with the reason beside it: unmapped (no board of the duplicate declares a gates map; declare the maps) or unproven (a map exists and runs none of the organ's gates; gate the organ on its proving board, or declare it a shared library by policy). A home elsewhere means this board should carry an @xrow reference to the home board's row rather than a graded row of its own; a home here means the other boards should. The table is this board's slice of one estate-wide census: the shape is shared, the rows are the board's.

This board grades 20 capabilities: 12 exclusive to it and 8 shared with other boards. Shared rows on this page: 8 = home here 1 + home elsewhere 0 + ambiguous 1 + undecided 6 + refused 0 (partition 8); undecided = unmapped 0 + unproven 6 + unevidenced 0; homonyms 1; since the previous census: new 0, resolved 0. Census FRESH age_s=7039.

CapabilityOrganBoards grading itHomeRuleEvidenceStanding on this board
cs_store_forwardnx_chat_store.nxsynthroom, companionchat—noneunprovenundecided
cs_store_forward-comms:runtime/nx_chat_store_lib.nx, synthroom:runtime/nx_chat_store.nx, companionchat:runtime/nx_chat_store.nx—homonym-homonym
cm_ctxnx_charmem.nxmangagen, charsim, npcai, companionchat—noneunprovenundecided
em_recallnx_elara_memory.nxcharsim, npcai, companionchat—noneunprovenundecided
go_compose_photo_promptnx_companion_wardrobe.nxgen, companionchat—noneunprovenundecided
go_handle_chatnx_gen_orchestrator.nxgen, companionchat—noneunprovenundecided
ccm_json_strnx_card_compile.nxgen, companionchat—noneunprovenundecided
mx_swap_ttlnx_mesh_mux.nxgen*, companionchat*—ambiguousplanambiguous
go_llm_routenx_llm_route.nxcompanionchat*+, engineshiftcompanionchatrungplanhome here

Gaps from the record — what the estate does that no board carries

The record census (nx_goalmap record) reads the invoked-tool population and every plan queue row and files each organ or directive that NO matrix, plan or gates row names. A row here is a callout the boards missed: adjudicate it onto a board or declare it infrastructure. Census state STALE (age 1396144 s), sources read 4 of 7 declared — a BLIND census is a FLOOR: unread sources can only add rows.

kindnameboardsourceevidence

rows shown 0|this board's directives 0|estate-wide un-boarded organs 452 (listed in full on /compare/ecosystem)|census rows 639|malformed 0 (counted, never rendered)

References

Beyond a link list. Every reference below resolves twice — the publisher's copy and, where banked, the estate's own non-rottable library mirror with a content pin — and carries its evidence class plus the exact claim on this page it grounds. Keyed marks like [key] in the matrix notes jump here. A dash means honestly absent, never assumed.
  1. [sillytavern] SillyTavern documentation (docs.sillytavern.app), read 2026-08-30 publisher · read in our library knowledge/fetched/cmp_companionchat_sillytavern.html · pin hc8352ac3c0eb5ac3fac00fafe324bc795297f0df311aa113b8cda853188752bb · accessed 2026-08-30 · vendor-docGrounds: CHAT: streaming reply -- tokens render as she thinks, not after she finishes
  2. [janitorai] JanitorAI front page (janitorai.com), read 2026-08-30 publisher · read in our library knowledge/fetched/cmp_companionchat_janitorai.html · pin habeeb999b9d156c798226ff39e3d62d19a2c28d9eff8ada8ed2699814c6e2fc7 · accessed 2026-08-30 · vendor-docGrounds: MEMORY: community character-card import -- Tavern V2 PNG cards
  3. [characterai] Character.AI front page (character.ai), read 2026-08-30 publisher · read in our library knowledge/fetched/cmp_companionchat_characterai.html · pin h761d7d2e9e2e040ab543a332619bb5244dea7c88902fd100116a0b59293bbd1a · accessed 2026-08-30 · vendor-docGrounds: GOV: isolated NSFW realm -- own OPAQUE keys and store, no cookies, session injected by the service worker; SFW and NSFW both first-class
  4. [replika] Replika front page (replika.com), read 2026-08-30 publisher · read in our library knowledge/fetched/cmp_companionchat_replika.html · pin hb60146759b2299dd5288b65b9085123d66589f7d633d9783bea65064a84b0e2b · accessed 2026-08-30 · vendor-docGrounds: MEMORY: long-term salience-scored memory -- remember and recall survive sessions
  5. [kindroid] Kindroid front page (kindroid.ai), read 2026-08-30 publisher · read in our library knowledge/fetched/cmp_companionchat_kindroid.html · pin h1a186c918f6cf01326873f31d9ab425d419f0ba923219d38a5f89ff6ef1ce844 · accessed 2026-08-30 · vendor-docGrounds: MEDIA: short video clips of the companion
  6. [genagents] Park et al. 2023, Generative Agents: Interactive Simulacra of Human Behavior (arXiv 2304.03442) -- the memory-stream architecture: retrieval scored by recency, importance and relevance, with reflection and planning publisher · read in our library knowledge/fetched/cmp_companionchat_genagents.html · pin hc8d75b6bc96f872232c11b99ef01c5301afafe62066b204e5bc9b1db6db31a2f · accessed 2026-08-30 · published-paperGrounds: MEMORY: THE UNWIRED INTELLIGENCE -- memory, relationship and state consulted by the live chat turn
  7. [memgpt] Packer et al. 2023, MemGPT: Towards LLMs as Operating Systems (arXiv 2310.08560) -- tiered virtual context management so a bounded window carries an unbounded relationship publisher · read in our library knowledge/fetched/cmp_companionchat_memgpt.html · pin hfa7328c6c6b801fa1b9b6a5dd76fb1d2a8afddfc6e33bb2dd58978462bc6906f · accessed 2026-08-30 · published-paperGrounds: MEMORY: long-term salience-scored memory -- remember and recall survive sessions
  8. [charactereval] Tu et al. 2024, CharacterEval: A Chinese Benchmark for Role-Playing Conversational Agent Evaluation (arXiv 2401.01275) -- a published multi-dimensional referee for role-play agents; Chinese-language, so an English companion needs its own judged set on the same axes publisher · read in our library knowledge/fetched/cmp_companionchat_charactereval.html · pin hb41fb286c5c775f7ffa7786748cc66b2804cbef4f40b2dbbf20f983714dcf400 · accessed 2026-08-30 · published-paperGrounds: GOV: the companion SOTA ruler -- a liar-killed measured matrix against the Replika, Character.AI and SillyTavern axes
  9. [f5tts] Chen et al. 2024, F5-TTS: A Fairytaler that Fakes Fluent and Faithful Speech with Flow Matching (arXiv 2410.06885) -- the open non-autoregressive flow-matching TTS bar for CC7 publisher · read in our library knowledge/fetched/cmp_companionchat_f5tts.html · pin h1f0d98fe879334fae2f521bc32c92daf0cfad65b6bbf4017cc09e7645a2d0dee · accessed 2026-08-30 · published-paperGrounds: MEDIA: the companion speaks -- text to speech on our own stack
  10. [whisper] Radford et al. 2022, Robust Speech Recognition via Large-Scale Weak Supervision (arXiv 2212.04356) -- the weakly-supervised recognition bar for CC8 publisher · read in our library knowledge/fetched/cmp_companionchat_whisper.html · pin h6b4bcb027f9da09c8acd02347ad9f93fbd563a3bfb2addf8bc854fadda31e66c · accessed 2026-08-30 · published-paperGrounds: MEDIA: she hears -- speech to text input
  11. [ltxvideo] HaCohen et al. 2025, LTX-Video: Realtime Video Latent Diffusion (arXiv 2501.00103) -- the real-time latent video diffusion bar and the 16 GB-class candidate CC9 must screen before adoption publisher · read in our library knowledge/fetched/cmp_companionchat_ltxvideo.html · pin h3faaef3078e26a9c3c13d5721c85e7bc876df94cb6b99ed448c0fc197f9883dd · accessed 2026-08-30 · published-paperGrounds: MEDIA: short video clips of the companion

generated by nx_swcompare_matrix (sovereign NishiLang organ) from knowledge/compare/companionchat.matrix · source checks show implementation presence; runtime and user-outcome evidence are reported separately · JavaScript supports page controls