docs+skills: add main UI/UX visual-truth PRD and skill links
This commit is contained in:
parent
1c36223e7f
commit
14a50ad4ae
289 changed files with 54463 additions and 0 deletions
107
.agents/skills/rlm-mem/brain/scripts/test_layered_writer.py
Normal file
107
.agents/skills/rlm-mem/brain/scripts/test_layered_writer.py
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
"""
|
||||
Tests for append-only layered JSONL writer with locking.
|
||||
|
||||
Run: python -m unittest brain.scripts.test_layered_writer -v
|
||||
"""
|
||||
|
||||
import json
|
||||
import tempfile
|
||||
import threading
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
from brain.scripts.layered_memory_store import LayeredMemoryStore
|
||||
from brain.scripts.memory_policy import MemoryPolicy
|
||||
|
||||
|
||||
class TestLayeredWriter(unittest.TestCase):
|
||||
def test_append_only_writer_preserves_existing_lines(self):
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
project_root = Path(tmpdir)
|
||||
policy = MemoryPolicy(project_root=project_root)
|
||||
store = LayeredMemoryStore(policy=policy, agent_id="agent-a")
|
||||
|
||||
first_id = store.append_entry(
|
||||
layer="project_agent",
|
||||
record={
|
||||
"id": "rec-1",
|
||||
"created_at": "2026-02-11T00:00:00Z",
|
||||
"scope": "project_agent",
|
||||
"agent_id": "agent-a",
|
||||
"entry_type": "fact",
|
||||
"content": "first",
|
||||
"project_id": "rlm-mem",
|
||||
},
|
||||
)
|
||||
second_id = store.append_entry(
|
||||
layer="project_agent",
|
||||
record={
|
||||
"id": "rec-2",
|
||||
"created_at": "2026-02-11T00:00:01Z",
|
||||
"scope": "project_agent",
|
||||
"agent_id": "agent-a",
|
||||
"entry_type": "note",
|
||||
"content": "second",
|
||||
"project_id": "rlm-mem",
|
||||
},
|
||||
)
|
||||
|
||||
self.assertEqual(first_id, "rec-1")
|
||||
self.assertEqual(second_id, "rec-2")
|
||||
|
||||
target = project_root / ".agents" / "memory" / "agents" / "agent-a" / "memory.jsonl"
|
||||
lines = target.read_text(encoding="utf-8").splitlines()
|
||||
self.assertEqual(len(lines), 2)
|
||||
self.assertEqual(json.loads(lines[0])["id"], "rec-1")
|
||||
self.assertEqual(json.loads(lines[1])["id"], "rec-2")
|
||||
|
||||
def test_concurrent_writes_keep_valid_jsonl_and_expected_count(self):
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
project_root = Path(tmpdir)
|
||||
policy = MemoryPolicy(
|
||||
project_root=project_root,
|
||||
write_layers=["project_agent", "project_global"],
|
||||
)
|
||||
store = LayeredMemoryStore(policy=policy, agent_id="agent-b")
|
||||
|
||||
writes_per_thread = 40
|
||||
thread_count = 8
|
||||
errors: list[Exception] = []
|
||||
|
||||
def worker(thread_idx: int) -> None:
|
||||
for item_idx in range(writes_per_thread):
|
||||
try:
|
||||
store.append_entry(
|
||||
layer="project_global",
|
||||
record={
|
||||
"id": f"t{thread_idx}-r{item_idx}",
|
||||
"created_at": "2026-02-11T00:00:00Z",
|
||||
"scope": "project_global",
|
||||
"entry_type": "fact",
|
||||
"content": f"thread-{thread_idx}-row-{item_idx}",
|
||||
"project_id": "rlm-mem",
|
||||
},
|
||||
)
|
||||
except Exception as exc: # pragma: no cover - asserted below
|
||||
errors.append(exc)
|
||||
|
||||
threads = [threading.Thread(target=worker, args=(i,)) for i in range(thread_count)]
|
||||
for t in threads:
|
||||
t.start()
|
||||
for t in threads:
|
||||
t.join()
|
||||
|
||||
self.assertEqual(errors, [])
|
||||
|
||||
target = project_root / ".agents" / "memory" / "global" / "memory.jsonl"
|
||||
lines = target.read_text(encoding="utf-8").splitlines()
|
||||
self.assertEqual(len(lines), writes_per_thread * thread_count)
|
||||
|
||||
for line in lines:
|
||||
parsed = json.loads(line)
|
||||
self.assertIn("id", parsed)
|
||||
self.assertIn("content", parsed)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main(verbosity=2)
|
||||
Loading…
Add table
Add a link
Reference in a new issue