Commit Graph

138 Commits

Author SHA1 Message Date
vh 57fdc48e20 memory: /snapshot — worldtree-sdk cutover decided (#20), slice-1 next
Captures the SDK cutover as the active migration: contract done + heid-reviewed,
DEC-5 registry gate cleared, slice-1 foundation the next step. Plus ephemeral-Echo
(v0.21.2 #19) + reference-consumer parity arc in Recent decisions; tier3 model→role
deferred to slice-4 / worldtree-dev deploy flag. Handoff written for slice-1.
2026-07-18 23:19:21 -07:00
vh 7bfd4ddc95 memory: SDK fixture-capture go given — no Rata-side #371 pending 2026-07-18 00:51:29 -07:00
vh 26482ba2e9 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.
2026-07-18 00:36:27 -07:00
vh 8f3e9dd896 memory: /snapshot — Worldtree SDK (#371) decision + issue-#1 drift fix
Capture this session's durable state: the "fork Rata for a SillyTavern-style
app?" question resolved to don't-fork — Worldtree owns an official Conversation
API SDK (WT #371), seeded from Rata's client spine; the app is a fresh TS
sibling. New Current-state thread + Recent-decisions entries + a full-arc detail
file; arbo-fork decision preserved with the arbo-vs-SDK priority flagged as an
open operator question. Auto-archived 35 settled 2026-06-14..06-18 entries
(19 Recent, 16 Tried) to archival-memory.md. Handoff refreshed.
2026-07-18 00:28:00 -07:00
vh 13efdf43a5 memory: compress #368 forensic history into the detail file
Move the consolidated #368 in-flight narrative (diagnosis -> two-channel
investigation -> both scrubs -> marker repro -> enforcement read) out of
persistent-memory.md Current state into the silo-test detail file, leaving
a compact pointer. Index 439 -> 339 lines.
2026-07-17 21:44:10 -07:00
vh ff1f9ca1e8 memory: /snapshot — #368 silo test passed; two-tier migration; stores scrubbed
- #368 (user,character) memory silo test DONE + PASSED live (WT b127):
  write-side conjunctive {end_user,agent_self} scoping + read-side cross-
  character isolation both proven end-to-end; betty (throwaway) deleted,
  Sindra intact. Full record in persistent-memory.d/2026-07-18-368-silo-
  test-passed.md. Retired the stale "silo test in progress" in-flight blocks.
- Two-tier migration: split 152 over-threshold dated entries into
  persistent-memory.d/ detail files, leaving one-line pointers in the index
  (startup load ~196KB -> ~53KB; bodies now load on demand).
- Tier-3 stores scrubbed clean (memory 0 / affect 0, provider restarted
  empty); persistent-memory + detail file updated to reflect the scrub.
2026-07-17 21:39:18 -07:00
vh 29481fbcf0 memory: /snapshot — silo test is the immediate post-clear action
Current state now leads with the (user,character) memory silo test:
store born-fresh, throwaway betty ready, Sindra off-limits, waiting on
WT #368 fix deploy. tier3 CLI fixed (v0.21.1). Handoff written for the
post-clear session.
2026-07-17 20:13:35 -07:00
vh 36aad58ce9 memory: silo test setup — throwaway betty created, store re-scrubbed
Re-scrubbed store born-fresh; created throwaway ratatoskr:betty for the
Alice/Betty silo demo (MUST delete after; Sindra off-limits). Found
tier3 CLI drift vs live b125 (/agents/define now needs role not model).
Test runs post WT-fix-deploy: Sindra coffee / Betty tea -> verify silo.
2026-07-17 19:32:18 -07:00
vh 21625d3c89 memory: #368 arc closed — all 3 enforcement findings folded (rev 1.3)
WT folded F1/F2/F3 into contract rev 1.3 (3e3f629) with new tests each;
our read-path conformance cited. Backfill live-verify (synthetic legacy
corpus, pre-flip) queued for when the backfill lands. #368 done from
ratatoskr's side end to end.
2026-07-17 18:50:42 -07:00
vh 87857eb44f memory: #368 enforcement read complete (3 findings) + channel 2 closed
Read-path conformant (conjunctive-per-element re-verified). 3 consumer-
side findings sent to WT: F1 INV-368-10 fail-open (empty-scope=match-all),
F2 backfill scan not snapshot-stable (offset/updated_at skip risk ->
amnesia), F3 sentinel needs valid embedding. All WT-side backfill/guard
adjustments, not consumer reworks. Channel 2 closed clean; contract rev 1.2.
2026-07-17 18:47:56 -07:00
vh daf6dbfc46 memory: marker repro ran — channel-1 baseline exhibit captured (#368)
Fresh Sindra session promoted the rhodochrosite marker to our store
scoped {end_user}-only (chunk 647aeac6) = pre-fix channel-1 baseline.
WT correction: consumer agents write only to our store (no server-side
chroma); Sindra IS Bifrost-attached unlike foundational Lofn. Decisive
server-side grep still pending. ETA: contract to us today, ship ~7/19.
2026-07-17 18:35:44 -07:00
vh c06fea412f memory: Tier-3 store scrubbed clean (#368) + marker repro queued
Operator ruled full memory scrub both sides. Our memory.db wiped to 0
chunks, :8392 restarted born-empty (no backup, direct go); Sindra
pristine-baseline note marked obsolete. Marker repro (rhodochrosite,
fresh Sindra session) queued for after both scrubs confirmed; personal
is b125; current Lofn chunks are the feedback loop, mis-write unproven.
2026-07-17 18:10:44 -07:00
vh 4ce2e0e8b8 memory: #368 channel 2 = REAL server-side bug (discriminator settled)
GET /search proves the name was introduced ONLY to Sindra, ZERO to
Lofn (0 user msgs across all Lofn sessions), yet Lofn recites it —
incl. a pre-existing session predating my captures. Cross-agent leak
via WT person-prime (#349), agent-axis-less query. Missing agent-axis
is channel-2's load-bearing fix. Rev 1.2 contract inbound for our read.
2026-07-17 16:23:53 -07:00
vh bc2ce176d4 memory: #368 wrinkle resolved — turn-context bleed is WT-internal (two channels)
Both fresh Lofn turns (direct + combined) recited the name with a
bifrost handshake but ZERO memory-calls to us. Turn-context bleed never
traverses our Tier-3 retrieval; it's WT-internal assembly. Two channels:
Tier-3 semantic recall (our provider, closed by conjunctive scope_any)
+ WT-internal (active turn-context path, WT-side fix). Exhibits pinned to #368.
2026-07-17 16:07:08 -07:00
vh 911f78bcb3 memory: WT #368 ruling (silo per user-character + backfill) + read-path wrinkle
Operator ruled Option 1; no amnesia cliff (backfill from agent_id
metadata). Confirmed our _scope_subset enforces conjunctive scope_any
(fix rides scope_any alone). Labeled Lofn capture recites the name;
direct-bind turn got it WITHOUT querying our store -> WT-internal read
path also in play. ratatoskr is the enforcement half; contract inbound.
2026-07-17 16:01:45 -07:00
vh 669316c254 memory: cross-agent Tier-3 memory bleed = Worldtree defect (reported)
Lofn recalls Sindra's memories because WT writes Tier-3 memory scoped
end_user-only (no agent_self); ratatoskr stores/filters faithfully and
needs no change. Reported to worldtree-dev (thread 01KXRY8V1C...);
fork-relevant (memory isolation inherits this WT axis).
2026-07-17 14:04:31 -07:00
vh 60cafee68a memory: fork pivot + TUI deprecation + arbo API intel
Ratatoskr forks for arbo image-gen (ratatoskr stays Worldtree debug);
pre-fork collapsible-panes UI shipped (v0.20.17); TUI deprecated with
mapped blast radius (cli.py is shared, not a clean delete); comfy-dev
arbo REST API intel banked for fork planning.
2026-07-17 13:28:39 -07:00
vh 021fb5265f memory: /snapshot — arbo image-gen smoke teed up for a fresh /vor-plan; name-recall arc + web UI shipped; archived 5 oldest entries 2026-07-17 09:33:17 -07:00
vh bf421f1203 memory: capture brokkr's pinned scoring rubric for the referential-frame probe (vocab-adherence manipulation check load-bearing) 2026-07-17 01:36:01 -07:00
vh 0e7a04331a memory: queued P06-driver referential-frame A/B/C probe (operator-ratified, waits on WT b122); Sindra pristine baseline for test drive 2026-07-17 01:33:39 -07:00
vh ab8c1ee781 memory: #364 CLOSED end-to-end both sides — cbbc7bdd forgotten, zero live name-negatives; durable name-recall COMPLETE (WT #367 tracks bridge gap) 2026-07-16 22:55:23 -07:00
vh eef4d01c15 memory: mark_superseded SHIPPED+VERIFIED (v0.20.15) — durable name-recall DONE; Arm-2 delivered+credited, quartet rebuild deferred 2026-07-16 22:53:39 -07:00
vh c0d00ccd18 memory: bifrost 1.1.4 (hasattr backstop) supersedes 1.1.3 as the next bump target; folds into provider-maintenance batch 2026-07-16 16:53:47 -07:00
vh 722d6c76de memory: #364 CLOSED worldtree-side (b105); mark_superseded ship = the durable half, awaiting operator go 2026-07-16 13:41:37 -07:00
vh 56f4895881 memory: #364 GC done — store back to 10-chunk specimen; durable name-recall now depends on mark_superseded (next task) 2026-07-16 13:39:54 -07:00
vh ca249e4986 memory: #364 storm root-caused WT-side (self-stopping); mark_superseded wire shape confirmed; GC-after-stop plan 2026-07-16 13:33:00 -07:00
vh faf605fdf1 memory: #364 re-verify DONE — readout passes (Sindra recalls name) but supersession 500s (mark_superseded unimpl'd); new task + retry-storm flagged 2026-07-16 13:29:16 -07:00
vh 7c8644dc45 memory: soong-lab motivational export bug RESOLVED (v0.3.24 emits valid objects); drop the string->object workaround 2026-07-16 09:35:21 -07:00
vh 195292156f memory: R39 Phase-2 probe-runner role ACCEPTED in principle (Vuong); formalize when Arm-2 spins 2026-07-15 23:39:48 -07:00
vh abe1b52002 memory: R39 Phase-2 prereg frozen; ratatoskr flagged probe-runner (Arm-2) — formal role PENDING Vuong's scope call 2026-07-15 23:36:17 -07:00
vh e365b24339 memory: /snapshot — condense in-flight to milestone-close; person-prime shipped+verified, R39 arc closed; first persistent-memory.d/ detail files 2026-07-15 22:54:20 -07:00
vh 5e3e88d26d memory: snapshot — R39 hold lifted, Arm-0 arc closed; live store kept as #364 re-verify target 2026-07-15 22:41:06 -07:00
vh ce6907bd73 memory: snapshot — R39 re-drive COMPLETE + decisive (no fusion fixes #364; signal-family fix); froze Phase-2 Arm-2 specimen seed 2026-07-15 22:40:07 -07:00
vh e2b2f51364 memory: snapshot — worldtree-dev triage: both flags folded into #364 (2 defect classes); #349 ranking already-ruled (no band-aid, R39 identity-pinning) 2026-07-15 22:33:14 -07:00
vh 0f2b28919a memory: snapshot — R39 verbatim export sent to brokkr; subject-provenance bug caught (Sindra self-fact in user partition) 2026-07-15 22:31:39 -07:00
vh b154bb3885 memory: snapshot — verify spawned cross-project R39 (bifrost cursor ruling, WT #364, brokkr export); personal-data export gated on operator consent 2026-07-15 22:21:48 -07:00
vh 46d6efa962 memory: snapshot — person-prime LIVE-VERIFIED (v0.20.14 handshake fix); name-recall gap is WT ranking/hygiene 2026-07-15 09:14:09 -07:00
vh 772fad18b4 memory: snapshot — person-prime DEPLOYED (v0.20.13, :8392+:8765 restarted); worldtree-dev pinged for turn-1 verify 2026-07-15 09:02:34 -07:00
vh 8199774405 docs(contract): mark scan cursor v1-provisional (offset, not snapshot); route conformance gap to bifrost-dev
Operator accepted offset-cursor for v1 (person-prime single-page is
conformant). INV-010 now documents the KNOWN DEVIATION: multi-page
continuation diverges from bifrost's protocol snapshot-cursor contract
(dispatch drops sort on continuation, ScanCursorExpired normative) — our
offset cursor doesn't snapshot (dup/drop under concurrent write) and never
expires. Durable fix routed to bifrost-dev as a conformance-coverage gap
(scan/cursor is untested); ratatoskr will adopt reference snapshot-cursors
if bifrost rules them normative.
2026-07-15 08:52:29 -07:00
vh 66ba06875e memory: snapshot — heid-bug-hunt triaged (non-dict sort FIXED v0.20.13; cursor-stability surfaced) 2026-07-15 08:40:49 -07:00
vh 22e7a1b0e7 memory: snapshot — person-prime scan CODE LANDED (v0.20.11/12); deploy blocked on operator :8392 restart
scan verb + sortable_chunk_fields cap committed (8fc757a) + Sindra holodesk
first-message preset (a9c521a); TDD 7/7 + full suite 638 green; heid-bug-hunt
panel dispatched (thread 01KXK5XTYHV8TGEDRAZV8GRXWC). DEPLOY (restart :8392 so
the handshake advertises the cap) is operator-gated — classifier denied
bouncing the running provider. worldtree-dev turn-1 verify gated on the deploy.
2026-07-15 08:23:28 -07:00
vh 19e5182228 memory: snapshot — WT #355 validation CONFIRMED (STICK+trigger fixed, b61); stores reset + memprobe deleted for Sindra run 2026-07-13 14:30:37 -07:00
vh 5f321b968a chore(canonicals): vendor brokkr R34 psych-profile canon; re-sync R32-1B doc drift
Vendor the R34/R35 psych-profile reference (Vuong-directed via brokkr) as two
pinned canonicals under docs/vendor/brokkr-r34-psych-profile/:
- brokkr-psych-profile-authoring-spec-v1 (governs on conflict)
- brokkr-psych-profile-parameters-v1 (builder-facing distillation)
Both canonical_source=brokkr-smithy, tolerate_drift; drift-clean.

Re-sync the two tolerate_drift worldtree prose pins (affect-egress-consumer-
reference, conversation-api-spec): the drift was a benign 2-line R32-1B note
(unbounded-z PAD range) documenting a change already adopted in v0.20.9, not
the anticipated we-framing conditional. All canonicals now drift-clean.

Snapshot persistent-memory.md for the execution arc: P06 memory-half driven
(308/308 clean) + scored by brokkr (R35.45) — the authored psychological_profile
is the validated mechanism for memory-salience divergence (authored 0.618 vs
stripped 0.235 null, delta +0.382); memory extraction now reasoning-off; WT #355
root-caused via ratatoskr telemetry.

No version bump: docs/vendoring + memory-snapshot only, no runtime code change.
2026-07-13 07:02:22 -07:00
vh 5e28919b39 memory: snapshot — R34/R35 P06 eval greenlit + designed; bifrost 1.1.1 adopted 2026-07-12 08:38:21 -07:00
vh 8468c471e8 memory: snapshot — bifrost frozen-v0.6 handshake regression + b47/v0.7 resolution
Capture this cycle's arc: the bound-handshake blocker (bifrost 1.1.0 emits
sortable_chunk_fields on a v0.6 wire → v0.6 additionalProperties:false
rejects it), fixed by Worldtree adopting wire-v0.7 in b47 with zero change
our side (keeping 1.1.0 was load-bearing). R34-v1 affect.emit verify green
(dominant_emotion non-null, affect.full grant verified). Sindra on Deckard
live-confirmed. Corrected the stale OpenAPI pin (2.2.0 -> 2.3.0, drift-clean)
+ noted the two tolerate_drift canons WARN pending a coordinated re-vendor.
Clean checkpoint, nothing in flight.
2026-07-10 12:19:32 -07:00
vh 709d2e4498 memory: snapshot — sindra → character-rp (Deckard reasoning seat, interim)
Operator moved sindra from character (→Magidonia non-reasoning) to
character-rp (→Deckard-PKD reasoning) via non-destructive PATCH — her
stateful RP mechanics benefit from reasoning; interim "until a GM-type
agent is on-board." Persona + memory preserved. worldtree-dev's b44
seat re-point noted (transparent, no re-vendor).
2026-07-09 14:35:35 -07:00
vh 0441e319f6 feat(web): auto-scale PAD gauges for R32-1B unbounded-z (v0.20.9)
Sindra "full and unbounded": relax the debug affect console's PAD display
from a hard [-1,1] clamp to auto-scaling on the session's own max |PAD|
(padScale floor 1.0 → padFillFrac faders + _padNorm orbit). An unbounded-z
PAD (Worldtree R32-1B, ~±10) now renders at full range and never pegs or
escapes the frame; today's [-1,1] values are unchanged (scale==1); the
exact value is always shown numerically (unclamped).

Purely a debug-surface change — verified (grep, whole codebase) the only
PAD clamps lived in the web display layer: the affect store is conduit-
opaque, the read route + proxy pass verbatim, and --set-persona-pad writes
unclamped. Ratatoskr is a downstream observer, so this has zero consequence
to any agent's real affect or behavior (Worldtree-computed server-side).
Playwright-verified: z=±6.2 → faders ≤ half-bar, orbit in-box, +6.20
readout, zero regression at scale 1. Proactive R32-1B prep.
2026-07-08 16:16:29 -07:00
vh 48d51023f2 memory: snapshot — sindra memory fixed + bifrost 1.1.0 adopted
Capture two durable shifts from this session: (1) ratatoskr:sindra
DELETE+redefined WITH memory:{} (operator-approved) — she now recalls
(0.988) AND promotes end-to-end, 0/0 mystery closed; (2) bifrost pin
1.0.0 -> 1.1.0 / wire v0.7 (additive, reference-impl currency).
2026-07-07 10:26:15 -07:00
vh e5ec63967e feat(web): memory viewer + design iteration-3 + markdown pass-2 (v0.20.7)
Web-UI iteration-3 — three queued items landed together.

(A) Design iteration-3 into static/index.html:
- sparkline grid background (<pattern id=sparkGrid> + bg rect behind each
  relation-row spark polyline);
- PAD strips → per-turn Δ bars: replace the vertical polyline strip
  (stripPoints/proj3 removed) with padDeltas→deltaStrip, a 12-cell HTML
  column of diverging bars (newest at bottom, magnitude→width, age→opacity);
- mood orbit → dimetric open box (viewBox 124×140, az35/el25,
  D-right/A-left-back/P-up): ghost A×P wall + D×A floor +
  orbitProj/orbitShadowY/orbitWallPt/orbitAxisPt, JS-driven animated replay
  (orbitFrame per rAF via a singleton startOrbitAnim reading live ORBIT_HIST;
  reduced-motion → static final-state).

(B) Memory viewer — a non-bifrost debug read on OUR own store, mirroring the
    #18-D2 affect read:
- provider: RatatoskrMemoryStore.list_chunks + count_chunks + shared
  add_memory_read_route (GET /memory/chunks?agent_id=&end_user_id=), wired
  into build_memory_provider_app + the combined :8392 provider. end_user
  strict, agent_id lenient (an {end_user}-only chunk stays visible);
  {chunks,count,total}, empty match = 200 (not 404);
- web: _memory_chunks_endpoint (GET /api/memory/chunks) supplies end_user_id
  server-side, forwards the browser agent_id, proxies to memory_read_url;
  create_app gains memory_read_url, entrypoint reads RATATOSKR_MEMORY_READ_URL;
- pane: loadMemory/renderMemory/setMemHead — a live-polling MEMORY console
  pane (content·scope·origin·revision per chunk; count/total distinguish
  empty-store from scope-mismatch), polled on open + post-turn.

(C) Markdown pass-2 in markdownSafe: GFM pipe tables (mdTable, alignment
    colons), indentation-nested lists (child list inside the open <li>),
    ordered-list start=N numbering, streaming robustness (partial fence →
    code block; header-without-delimiter → paragraph until it streams in).
    esc-first → INV-004 held.

Contract web_debug_surface.contract.md amended in-commit (create_app
memory_read_url; dimetric-orbit + Δ-bar renderConsole POST-002; memory-viewer
+ markdown-pass-2 function contracts). 631 tests green; Playwright-verified
all render paths (dark+light).
2026-07-07 02:11:29 -07:00
vh 24644ab90e memory: snapshot — queue web-UI iteration-3 (design re-import) + memory viewer + markdown pass-2 for fresh context 2026-07-07 01:28:04 -07:00