memory: apps leave Rata to a new repo — arbo-fork/SillyTavern resolved

Operator ruled: no arbo fork, no SillyTavern-on-Rata; both app products move to
a new repo (template-dev standing up). Rata does NOT fork and reverts to its core
(Worldtree debug surface + Bifrost reference impl + Conversation-API SDK #371
seed/future-consumer). Retires the 2026-07-17 fork-Rata-for-arbo NEXT-MAJOR plan;
resolves the arbo-vs-SDK open question the prior snapshot flagged.
This commit is contained in:
2026-07-18 00:36:27 -07:00
parent 8f3e9dd896
commit 26482ba2e9
2 changed files with 57 additions and 66 deletions
+49 -60
View File
@@ -44,83 +44,70 @@ upstream API key stays server-side (INV-003).
## Current state / in-flight
_As of 2026-07-18:_
_As of 2026-07-18 (evening):_
**▶️ NEW MAJOR — Worldtree Conversation API SDK (#371) + a SillyTavern-style chat app.**
Operator wants a SillyTavern-like chat app on Worldtree; the "fork Rata?" question resolved to
**don't fork**. Instead: **Worldtree owns an official Conversation API client SDK** (dedicated repo,
elevated onto WT's pre-v1 track, tracking issue **WT #371**), **seeded from Rata's client spine**
(`sse_client`/`sessions`/`tier3`); the chat app is a **fresh TS SIBLING** consuming that SDK, NOT a
fork of Rata. TS package ships first — **Rata's own repin rides the later Python milestone**;
internal-registry-only distribution. **template-dev is standing up the app repo** (consult expected).
Rata's contributions shipped this session: the parity-matrix usage inventory (→ WT
**✅ RESOLVED — the "app product" workstreams leave Rata entirely (operator 2026-07-18).**
**No arbo fork, no SillyTavern-on-Rata** — a NEW repo (template-dev standing up) takes over BOTH
app-product ideas. Rata does NOT fork into anything and is NOT the base for any chat / image-gen app.
Rata reverts to its core identity: **the Worldtree Conversation-API debug-observability surface +
the Bifrost Tier-3 reference impl + the Conversation-API SDK seed / future-consumer.** Supersedes the
2026-07-17 "fork Rata for arbo" NEXT-MAJOR plan (that plan is retired; arbo API intel lives in the
Recent-decisions detail trail if the new repo wants it).
**▶️ Rata's live stake in the Worldtree SDK (#371).** The SillyTavern *app* moved out, but Rata
stays the **SDK's seed donor + a future consumer**: Worldtree owns the official Conversation API SDK
(dedicated repo, elevated pre-v1 track, **WT #371**), seeded from Rata's client spine
(`sse_client`/`sessions`/`tier3`); TS ships first, **Rata's repin rides the later Python milestone**;
internal-registry-only. This session Rata shipped the parity-matrix inventory (→ WT
`docs/sdk/parity-matrix.md` `698cfc3`, behavioral-spec `c999b5f`, fixture corpus `3019ee6` = 66
fixtures), the issue-#1 contract drift fix (`4bd9abd`), and the personal-WT endpoint for fixture
capture. WT-side pipeline: behavioral-spec ✓ / parity-matrix ✓ / fixture-corpus ✓ → next is the
**codegen spike (d)**. **Three SDK divergences pinned for our eventual repin:** D-1 (unknown SSE
event → skip+diagnostics-hook, vs our current hard-raise in `_envelope_for_type`), D-2 (open-world
enums), D-3 (typed eager `410 session_retired`). Full arc →
fixtures), the issue-#1 contract drift fix (`4bd9abd`), and the personal-WT endpoint. WT pipeline:
behavioral-spec ✓ / parity-matrix ✓ / fixture-corpus ✓ → next is the **codegen spike (d)**. Three
divergences pinned for our eventual repin: D-1 (unknown SSE event → skip+diagnostics-hook vs our
current hard-raise), D-2 (open-world enums), D-3 (typed eager `410 session_retired`). Full arc →
`persistent-memory.d/2026-07-18-worldtree-sdk-371-and-sillytavern-app.md`.
- **⚠️ OPEN Q for operator (priority):** how does this relate to the arbo-fork below? Different
products (arbo = image-gen off ComfyUI; SillyTavern = chat off Worldtree), so no literal conflict
— but is SillyTavern/SDK now the priority app, additive-to arbo, or does this session's
don't-fork/sibling pattern change the arbo-fork plan? NOT resolved this session; preserved both.
- **Awaiting operator:** explicit go on the fixture-capture run + which instance (demo vs personal)
— worldtree-dev is holding on your call. Also awaiting template-dev's app-repo-standup consult.
- **Awaiting operator:** explicit go on the SDK **fixture-capture run + which instance (demo vs
personal)** — worldtree-dev is holding on your call.
** NEXT MAJOR (operator call 2026-07-17, PRESERVED): FORK ratatoskr for arbo image-gen.** The
arbo debug-observability idea did NOT become a feature bolted onto ratatoskr; ratatoskr stays the
Worldtree debug surface, the **arbo image-gen product becomes a FORK of ratatoskr** (clean chat-first
surface, debug panes hidden by default). "Get ready to assist with fork" is the standing directive.
**arbo API intel** (comfy-dev 2026-07-17): validated-workflow-library REST API — `GET /workflows`
`POST /workflows/{id}/run` → 202 JobHandle → **poll** `GET /jobs/{id}` (NO SSE) → `outputs[].url`;
Bearer via infra-ops `ENGINE_TOKEN`; deploy `irv-ml1:8201` WireGuard-only; canonical doc
`vh/arbo:docs/rest-api.md` v1.4.27 + `/openapi.json`. (See the OPEN Q above re: arbo vs SDK/sibling.)
**✅ Pre-fork UI prep SHIPPED (v0.20.17, `c678853`, NOT pushed).** Web console left+right debug panes
independently collapsible/hideable (chevron → 22px re-open strip, `#center` reflows, per-pane
localStorage); both collapsed = the clean chat surface a fork starts from. Playwright-verified.
**⚠️ TUI DEPRECATED (operator 2026-07-17) — rip pending, surgical not a clean delete.** `tui.py` +
`tests/test_tui.py` delete cleanly, BUT `cli.py` is SHARED (`web/entrypoint.py` + `tier3.py` import
`USER_AGENT`; `cli.py` holds `ParsedArgs`/`_format_duration_ms`/`_format_usage`). OPEN SCOPE Q: remove
textual-only (`tui.py`) vs the whole terminal interface (relocate shared consts out of `cli.py`
first). Breaking public-surface removal → minor bump (operator approval).
** TUI DEPRECATED (operator 2026-07-17) — web supersedes it; rip pending, surgical.** Independent
of any fork (the web console is now THE interactive surface). `tui.py` + `tests/test_tui.py` delete
cleanly, BUT `cli.py` is SHARED (`web/entrypoint.py` + `tier3.py` import `USER_AGENT`; `cli.py` holds
`ParsedArgs`/`_format_duration_ms`/`_format_usage`). OPEN SCOPE Q: remove textual-only (`tui.py`) vs
the whole terminal interface (relocate shared consts out of `cli.py` first). Breaking public-surface
removal → minor bump (operator approval). (The v0.20.17 collapsible debug panes, `c678853`, are now
just a web-console feature — the "pre-fork" framing is moot.)
**#368 (user,character) memory silo test — DONE, PASSED live (WT b127).** The reason for the
pre-session clear; closed. Write+read isolation proven end-to-end (conjunctive `{end_user,
agent_self}`; cold-recall gave zero cross-character bleed); throwaway `ratatoskr:betty` deleted;
Sindra intact; stores scrubbed. **Still QUEUED:** the backfill live-verify (synthetic legacy corpus
— exercises machinery a born-fresh store skips). Full record →
`persistent-memory.d/2026-07-18-368-silo-test-passed.md`. Sibling issues WT-owned: **#369**
(recited-content re-promotion loop), **#367** (copula-absence bridge phrasing).
Sindra intact; stores scrubbed. **Still QUEUED:** the backfill live-verify (synthetic legacy corpus).
Full record → `persistent-memory.d/2026-07-18-368-silo-test-passed.md`. Sibling issues WT-owned:
**#369** (recited-content re-promotion loop), **#367** (copula-absence bridge phrasing).
**Deferred/queued (all NON-URGENT):** (1) P06-driver **referential-frame A/B/C probe**
(operator-ratified, waits on WT b122 → `persistent-memory.d/2026-07-17-referential-frame-probe.md`);
(2) R39 Phase-2 **matched-quartets rebuild** (confirmatory, "whenever"); (3) bifrost **snapshot-cursor
adoption** (ruled normative, not blocking → `persistent-memory.d/2026-07-16-bifrost-cursor-conformance.md`).
**Substrate / environment:** branch `main` at **v0.21.1**; local commits ahead of origin's v0.20.16
— incl. tier3 b127-role adaptation (`860e0d5`), #368 memory snapshots + silo work, and this session's
contract-drift fix (`4bd9abd`) — **UNPUSHED**; origin `git@gitea.phasefinal.com:vh/ratatoskr.git`.
bifrost **`==1.1.4`** / wire v0.7; WT openapi vendored 2.3.0; **suite 644 green**. Personal WT on
**b127** (`http://10.250.50.152:8081`; #368 silo + #364 promotion-hygiene live both instances). The
combined **:8392** provider (memory+affect) + **:8765** web are THE surfaces, dev-box BACKGROUND
SHELLS — restart via `scratchpad/relaunch_by_pid.py <pid>` (env-preserving; pid via
`ss -ltnp | grep <port>`). `env.sh` sets the REQUIRED `RATATOSKR_MEMORY_EMBEDDING_DIM=1024`. Keys
env-only mode-600 in `~/.config/ratatoskr/provider.env` + `RATATOSKR_ADMIN_API_KEY` (7 read scopes,
personal-:8081-only; Heimdall keys per-instance). **FOOT-GUN: check owner-scoped agents via
`GET /agents/<owner>:<name>` with the OWNER key (`WORLDTREE_API_KEY`), NOT the admin key** — admin
gives a false 404. `graphify-out/` runs dirty (auto-regen on the commit hook, never stage). v1 = full
Worldtree I/O coverage, cuts when WT tags 1.0 (`docs/coverage-map.md`).
**Substrate / environment:** branch `main` at **v0.21.1**, **PUSHED to origin 2026-07-18** (incl.
tier3 b127-role adaptation `860e0d5`, #368 memory snapshots + silo work, the contract-drift fix
`4bd9abd`, and this snapshot); origin `git@gitea.phasefinal.com:vh/ratatoskr.git`. bifrost
**`==1.1.4`** / wire v0.7; WT openapi vendored 2.3.0; **suite 644 green**. Personal WT on **b127**
(`http://10.250.50.152:8081`; #368 silo + #364 promotion-hygiene live both instances). The combined
**:8392** provider (memory+affect) + **:8765** web are THE surfaces, dev-box BACKGROUND SHELLS —
restart via `scratchpad/relaunch_by_pid.py <pid>` (pid via `ss -ltnp | grep <port>`). `env.sh` sets
the REQUIRED `RATATOSKR_MEMORY_EMBEDDING_DIM=1024`. Keys env-only mode-600 in
`~/.config/ratatoskr/provider.env` + `RATATOSKR_ADMIN_API_KEY` (7 read scopes, personal-:8081-only;
Heimdall keys per-instance). **FOOT-GUN: check owner-scoped agents via `GET /agents/<owner>:<name>`
with the OWNER key (`WORLDTREE_API_KEY`), NOT the admin key** — admin gives a false 404. `graphify-out/`
runs dirty (auto-regen on the commit hook, never stage). v1 = full Worldtree I/O coverage, cuts when
WT tags 1.0 (`docs/coverage-map.md`).
**Other live threads:** soong-lab = Tier-3 agent-authoring studio (v0.3.24+; motivational
string→object export fixed upstream, our workaround droppable). Cross-session name-recall arc
COMPLETE + shipped (v0.20.11→.16; WT #364 closed both sides; Sindra durably recalls Vuong via
`mark_superseded` retirement, not recency-eviction). Sindra pristine baseline **WIPED 2026-07-18**
(full #368 scrub, born-empty store — old `sindra-baseline/*.db` predate it). Open/deferred: #10
subject-migration watch; relational-dynamics verify (bind `--bifrost-url :8392`); WT #356
resume-durability = WT-owned.
`mark_superseded` retirement). Sindra pristine baseline **WIPED 2026-07-18** (full #368 scrub,
born-empty store — old `sindra-baseline/*.db` predate it). Open/deferred: #10 subject-migration watch;
relational-dynamics verify (bind `--bifrost-url :8392`); WT #356 resume-durability = WT-owned.
## Recent decisions
@@ -247,9 +234,11 @@ decision. Captures rationale that won't be obvious from code alone.
- `[2026-07-18]` **#368 (user, character) memory silo test — DONE, PASSED live (WT b127).** Write + read isolation both proven end-to-end; betty (throwaway) deleted; the immediate post-clear action, closed. → `persistent-memory.d/2026-07-18-368-silo-test-passed.md`
- `[2026-07-18]` **Worldtree owns the official Conversation API SDK (#371) — Rata's client spine (`sse_client`/`sessions`/`tier3`) is the SEED; the SillyTavern-style app is a fresh TS SIBLING, NOT a fork of Rata.** TS package ships first (Rata's repin rides the later Python milestone); internal-registry-only; template-dev stands up the app repo. → `persistent-memory.d/2026-07-18-worldtree-sdk-371-and-sillytavern-app.md`
- `[2026-07-18]` **Worldtree owns the official Conversation API SDK (#371) — Rata's client spine (`sse_client`/`sessions`/`tier3`) is the SEED; the SillyTavern app moved OUT to a NEW repo (template-dev), Rata does NOT fork.** Rata = SDK seed + future consumer; TS ships first (Rata's repin rides the later Python milestone); internal-registry-only. → `persistent-memory.d/2026-07-18-worldtree-sdk-371-and-sillytavern-app.md`
- `[2026-07-18]` **issue #1 contract drift fixed (`4bd9abd`) — SSE event vocab re-canonicalized: added `awaiting_llm_first_token` (#201) + `affect_update` (#204) to the Event union + TESTS (both were parsed by `_envelope_for_type` and tested in `test_sse_client.py`, but never in #1's contract; surfaced by the #371 parity pass). Contract-only, no bump.**
- `[2026-07-18]` **Both app products (arbo image-gen + SillyTavern chat) leave Rata to a NEW repo (template-dev standing up); Rata does NOT fork and is NOT the app base.** Reverts Rata to its core — Worldtree debug-observability surface + Bifrost reference impl + Conversation-API SDK seed/future-consumer. Supersedes the 2026-07-17 'fork Rata for arbo' NEXT-MAJOR plan.
_65 older entries (2026-05-* debug-TUI/web era + the 2026-06-14 → 06-18 Bifrost-provider build / #17+#18 / #295-296 era) archived to archival-memory.md._
_For per-issue TDD implementation notes, Volva findings, and contract amendments, see the git log — every per-issue commit carries a structured message capturing the trail._