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:
@@ -66,13 +66,15 @@ Python, mead-hall TS, Rata) — not forks.
|
|||||||
- **D-2** — open-world enums.
|
- **D-2** — open-world enums.
|
||||||
- **D-3** — typed eager `410 session_retired`.
|
- **D-3** — typed eager `410 session_retired`.
|
||||||
|
|
||||||
## Open question (operator)
|
## Resolution (operator, 2026-07-18 evening)
|
||||||
|
|
||||||
How does this relate to the **arbo image-gen fork** (NEXT-MAJOR, 2026-07-17)? Different products
|
**No arbo fork, no SillyTavern-on-Rata — both app products leave Rata to a NEW repo**
|
||||||
(arbo = image-gen off ComfyUI's REST API; SillyTavern = chat off Worldtree), so no literal
|
(template-dev standing up). Rata does NOT fork and is NOT the app base; it reverts to its core
|
||||||
conflict — but this session established a don't-fork/fresh-sibling pattern for Worldtree consumers.
|
(Worldtree debug-observability surface + Bifrost reference impl + Conversation-API SDK
|
||||||
Is SillyTavern/SDK now the priority app, additive to arbo, or does the pattern change the arbo
|
seed/future-consumer). This retires the 2026-07-17 "fork Rata for arbo" NEXT-MAJOR plan. Rata's
|
||||||
plan? NOT resolved; both preserved in Current state.
|
only forward stake in the app work is the **SDK #371** — as the seed donor and a future consumer
|
||||||
|
that repins on the Python milestone. The "SillyTavern app is a fresh TS sibling" framing above was
|
||||||
|
the decision *at the time*; the app itself is now the new repo's concern, not Rata's.
|
||||||
|
|
||||||
## Tracking
|
## Tracking
|
||||||
|
|
||||||
|
|||||||
+49
-60
@@ -44,83 +44,70 @@ upstream API key stays server-side (INV-003).
|
|||||||
|
|
||||||
## Current state / in-flight
|
## 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.**
|
**✅ RESOLVED — the "app product" workstreams leave Rata entirely (operator 2026-07-18).**
|
||||||
Operator wants a SillyTavern-like chat app on Worldtree; the "fork Rata?" question resolved to
|
**No arbo fork, no SillyTavern-on-Rata** — a NEW repo (template-dev standing up) takes over BOTH
|
||||||
**don't fork**. Instead: **Worldtree owns an official Conversation API client SDK** (dedicated repo,
|
app-product ideas. Rata does NOT fork into anything and is NOT the base for any chat / image-gen app.
|
||||||
elevated onto WT's pre-v1 track, tracking issue **WT #371**), **seeded from Rata's client spine**
|
Rata reverts to its core identity: **the Worldtree Conversation-API debug-observability surface +
|
||||||
(`sse_client`/`sessions`/`tier3`); the chat app is a **fresh TS SIBLING** consuming that SDK, NOT a
|
the Bifrost Tier-3 reference impl + the Conversation-API SDK seed / future-consumer.** Supersedes the
|
||||||
fork of Rata. TS package ships first — **Rata's own repin rides the later Python milestone**;
|
2026-07-17 "fork Rata for arbo" NEXT-MAJOR plan (that plan is retired; arbo API intel lives in the
|
||||||
internal-registry-only distribution. **template-dev is standing up the app repo** (consult expected).
|
Recent-decisions detail trail if the new repo wants it).
|
||||||
Rata's contributions shipped this session: the parity-matrix usage inventory (→ WT
|
|
||||||
|
**▶️ 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
|
`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
|
fixtures), the issue-#1 contract drift fix (`4bd9abd`), and the personal-WT endpoint. WT pipeline:
|
||||||
capture. WT-side pipeline: behavioral-spec ✓ / parity-matrix ✓ / fixture-corpus ✓ → next is the
|
behavioral-spec ✓ / parity-matrix ✓ / fixture-corpus ✓ → next is the **codegen spike (d)**. Three
|
||||||
**codegen spike (d)**. **Three SDK divergences pinned for our eventual repin:** D-1 (unknown SSE
|
divergences pinned for our eventual repin: D-1 (unknown SSE event → skip+diagnostics-hook vs our
|
||||||
event → skip+diagnostics-hook, vs our current hard-raise in `_envelope_for_type`), D-2 (open-world
|
current hard-raise), D-2 (open-world enums), D-3 (typed eager `410 session_retired`). Full arc →
|
||||||
enums), D-3 (typed eager `410 session_retired`). Full arc →
|
|
||||||
`persistent-memory.d/2026-07-18-worldtree-sdk-371-and-sillytavern-app.md`.
|
`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
|
- **Awaiting operator:** explicit go on the SDK **fixture-capture run + which instance (demo vs
|
||||||
products (arbo = image-gen off ComfyUI; SillyTavern = chat off Worldtree), so no literal conflict
|
personal)** — worldtree-dev is holding on your call.
|
||||||
— 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.
|
|
||||||
|
|
||||||
**▶️ NEXT MAJOR (operator call 2026-07-17, PRESERVED): FORK ratatoskr for arbo image-gen.** The
|
**⚠️ TUI DEPRECATED (operator 2026-07-17) — web supersedes it; rip pending, surgical.** Independent
|
||||||
arbo debug-observability idea did NOT become a feature bolted onto ratatoskr; ratatoskr stays the
|
of any fork (the web console is now THE interactive surface). `tui.py` + `tests/test_tui.py` delete
|
||||||
Worldtree debug surface, the **arbo image-gen product becomes a FORK of ratatoskr** (clean chat-first
|
cleanly, BUT `cli.py` is SHARED (`web/entrypoint.py` + `tier3.py` import `USER_AGENT`; `cli.py` holds
|
||||||
surface, debug panes hidden by default). "Get ready to assist with fork" is the standing directive.
|
`ParsedArgs`/`_format_duration_ms`/`_format_usage`). OPEN SCOPE Q: remove textual-only (`tui.py`) vs
|
||||||
**arbo API intel** (comfy-dev 2026-07-17): validated-workflow-library REST API — `GET /workflows` →
|
the whole terminal interface (relocate shared consts out of `cli.py` first). Breaking public-surface
|
||||||
`POST /workflows/{id}/run` → 202 JobHandle → **poll** `GET /jobs/{id}` (NO SSE) → `outputs[].url`;
|
removal → minor bump (operator approval). (The v0.20.17 collapsible debug panes, `c678853`, are now
|
||||||
Bearer via infra-ops `ENGINE_TOKEN`; deploy `irv-ml1:8201` WireGuard-only; canonical doc
|
just a web-console feature — the "pre-fork" framing is moot.)
|
||||||
`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).
|
|
||||||
|
|
||||||
**✅ #368 (user,character) memory silo test — DONE, PASSED live (WT b127).** The reason for the
|
**✅ #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,
|
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;
|
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
|
Sindra intact; stores scrubbed. **Still QUEUED:** the backfill live-verify (synthetic legacy corpus).
|
||||||
— exercises machinery a born-fresh store skips). Full record →
|
Full record → `persistent-memory.d/2026-07-18-368-silo-test-passed.md`. Sibling issues WT-owned:
|
||||||
`persistent-memory.d/2026-07-18-368-silo-test-passed.md`. Sibling issues WT-owned: **#369**
|
**#369** (recited-content re-promotion loop), **#367** (copula-absence bridge phrasing).
|
||||||
(recited-content re-promotion loop), **#367** (copula-absence bridge phrasing).
|
|
||||||
|
|
||||||
**Deferred/queued (all NON-URGENT):** (1) P06-driver **referential-frame A/B/C probe**
|
**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`);
|
(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
|
(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`).
|
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
|
**Substrate / environment:** branch `main` at **v0.21.1**, **PUSHED to origin 2026-07-18** (incl.
|
||||||
— incl. tier3 b127-role adaptation (`860e0d5`), #368 memory snapshots + silo work, and this session's
|
tier3 b127-role adaptation `860e0d5`, #368 memory snapshots + silo work, the contract-drift fix
|
||||||
contract-drift fix (`4bd9abd`) — **UNPUSHED**; origin `git@gitea.phasefinal.com:vh/ratatoskr.git`.
|
`4bd9abd`, and this snapshot); origin `git@gitea.phasefinal.com:vh/ratatoskr.git`. bifrost
|
||||||
bifrost **`==1.1.4`** / wire v0.7; WT openapi vendored 2.3.0; **suite 644 green**. Personal WT on
|
**`==1.1.4`** / wire v0.7; WT openapi vendored 2.3.0; **suite 644 green**. Personal WT on **b127**
|
||||||
**b127** (`http://10.250.50.152:8081`; #368 silo + #364 promotion-hygiene live both instances). The
|
(`http://10.250.50.152:8081`; #368 silo + #364 promotion-hygiene live both instances). The combined
|
||||||
combined **:8392** provider (memory+affect) + **:8765** web are THE surfaces, dev-box BACKGROUND
|
**:8392** provider (memory+affect) + **:8765** web are THE surfaces, dev-box BACKGROUND SHELLS —
|
||||||
SHELLS — restart via `scratchpad/relaunch_by_pid.py <pid>` (env-preserving; pid via
|
restart via `scratchpad/relaunch_by_pid.py <pid>` (pid via `ss -ltnp | grep <port>`). `env.sh` sets
|
||||||
`ss -ltnp | grep <port>`). `env.sh` sets the REQUIRED `RATATOSKR_MEMORY_EMBEDDING_DIM=1024`. Keys
|
the REQUIRED `RATATOSKR_MEMORY_EMBEDDING_DIM=1024`. Keys env-only mode-600 in
|
||||||
env-only mode-600 in `~/.config/ratatoskr/provider.env` + `RATATOSKR_ADMIN_API_KEY` (7 read scopes,
|
`~/.config/ratatoskr/provider.env` + `RATATOSKR_ADMIN_API_KEY` (7 read scopes, personal-:8081-only;
|
||||||
personal-:8081-only; Heimdall keys per-instance). **FOOT-GUN: check owner-scoped agents via
|
Heimdall keys per-instance). **FOOT-GUN: check owner-scoped agents via `GET /agents/<owner>:<name>`
|
||||||
`GET /agents/<owner>:<name>` with the OWNER key (`WORLDTREE_API_KEY`), NOT the admin key** — admin
|
with the OWNER key (`WORLDTREE_API_KEY`), NOT the admin key** — admin gives a false 404. `graphify-out/`
|
||||||
gives a false 404. `graphify-out/` runs dirty (auto-regen on the commit hook, never stage). v1 = full
|
runs dirty (auto-regen on the commit hook, never stage). v1 = full Worldtree I/O coverage, cuts when
|
||||||
Worldtree I/O coverage, cuts when WT tags 1.0 (`docs/coverage-map.md`).
|
WT tags 1.0 (`docs/coverage-map.md`).
|
||||||
|
|
||||||
**Other live threads:** soong-lab = Tier-3 agent-authoring studio (v0.3.24+; motivational
|
**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
|
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
|
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**
|
`mark_superseded` retirement). Sindra pristine baseline **WIPED 2026-07-18** (full #368 scrub,
|
||||||
(full #368 scrub, born-empty store — old `sindra-baseline/*.db` predate it). Open/deferred: #10
|
born-empty store — old `sindra-baseline/*.db` predate it). Open/deferred: #10 subject-migration watch;
|
||||||
subject-migration watch; relational-dynamics verify (bind `--bifrost-url :8392`); WT #356
|
relational-dynamics verify (bind `--bifrost-url :8392`); WT #356 resume-durability = WT-owned.
|
||||||
resume-durability = WT-owned.
|
|
||||||
|
|
||||||
## Recent decisions
|
## 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]` **#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]` **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._
|
_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._
|
_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._
|
||||||
|
|||||||
Reference in New Issue
Block a user